@xviewer.js/core 1.0.0-alpha.6 → 1.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/tween/tween.js","../src/tween/TweenChain.ts","../src/tween/TweenManager.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/asset/aLoader.ts","../src/asset/ResourceManager.ts","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/loaders/GLTFLoader.js","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/loaders/DRACOLoader.js","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/libs/meshopt_decoder.module.js","../src/loader/aGLTFLoader.ts","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/libs/fflate.module.js","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/curves/NURBSUtils.js","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/curves/NURBSCurve.js","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/loaders/FBXLoader.js","../src/loader/aFBXLoader.ts","../../../node_modules/.pnpm/three@0.164.1/node_modules/three/examples/jsm/loaders/RGBELoader.js","../src/loader/aHDRLoader.ts","../src/loader/aTextureLoader.ts","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/math/Damp.ts","../src/math/Constant.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitives/Box.ts","../src/primitives/Sphere.ts","../src/primitives/Plane.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/Utils.ts","../src/PluginManager.ts","../src/Viewer.ts","../src/Plugin.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener {\n name: string, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter {\n\n protected _events: { [k: string]: EventHandler[] } = {};\n protected _removeEvent(list: EventHandler[], index: number, name: string) {\n if (index > -1) {\n list.splice(index, 1);\n if (list.length === 0) {\n delete this._events[name];\n }\n }\n return this;\n }\n\n clear() {\n this._events = {};\n return this;\n }\n\n has(name: string) {\n return !!this._events[name];\n }\n\n on(name: string, callback: (...args: any[]) => any, target?: Object, once: boolean = false) {\n let list = this._events[name];\n if (list == null) {\n list = this._events[name] = [];\n }\n\n let index = list.findIndex(v => v.callback === callback && (!target || v.target === target));\n if (index > -1) {\n console.warn(`event: ${name} duplicate registered`);\n return;\n }\n\n list.push({ name, callback, target, once });\n return this;\n }\n\n off(name: string, callback: (...args: any[]) => any, target?: Object) {\n let list = this._events[name];\n if (list) {\n let index = list.findIndex(a => (a.callback === callback) && (!target || a.target === target));\n this._removeEvent(list, index, name);\n }\n return this;\n }\n\n onof(name: string, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener[] }) {\n if (container._listeners === undefined) {\n container._listeners = [];\n }\n container._listeners.push({ name, callback });\n this.on(name, callback);\n return this;\n }\n\n offof(container: Object & { _listeners?: Listener[] }) {\n for (let v of container._listeners) {\n this.off(v.name, v.callback);\n }\n return this;\n }\n\n targetOff(target: Object) {\n for (let name in this._events) {\n let list = this._events[name];\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v.target === target) {\n this._removeEvent(list, i, name);\n }\n }\n }\n return this;\n }\n\n emit(name: string, ...args: any[]) {\n let list = this._events[name];\n if (list) {\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v) { //callback可能会删除list元素\n if (v.once) this._removeEvent(list, i, name);\n if (v.target) v.callback.apply(v.target, args);\n else v.callback(...args);\n }\n }\n }\n return this;\n }\n}\n","/**\n * @class\n * @private\n */\n/* tslint:disable */\nconst noop = (message?: any, ...optionalParams: any[]) => {};\nconst debug = console.log.bind(console);\nconst info = console.info.bind(console);\nconst warn = console.warn.bind(console);\nconst error = console.error.bind(console);\n\nexport const Logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n isEnabled: false,\n\n /** Turn on log */\n enable() {\n this.debug = debug;\n this.info = info;\n this.warn = warn;\n this.error = error;\n this.isEnabled = true;\n },\n\n /** Turn off log */\n disable() {\n this.debug = noop;\n this.info = noop;\n this.warn = noop;\n this.error = noop;\n this.isEnabled = false;\n }\n};\n","export function mixin(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}","/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\nvar Easing = {\n Linear: {\n None: function (amount) {\n return amount;\n },\n },\n Quadratic: {\n In: function (amount) {\n return amount * amount;\n },\n Out: function (amount) {\n return amount * (2 - amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount;\n }\n return -0.5 * (--amount * (amount - 2) - 1);\n },\n },\n Cubic: {\n In: function (amount) {\n return amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount + 2);\n },\n },\n Quartic: {\n In: function (amount) {\n return amount * amount * amount * amount;\n },\n Out: function (amount) {\n return 1 - --amount * amount * amount * amount;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount;\n }\n return -0.5 * ((amount -= 2) * amount * amount * amount - 2);\n },\n },\n Quintic: {\n In: function (amount) {\n return amount * amount * amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);\n },\n },\n Sinusoidal: {\n In: function (amount) {\n return 1 - Math.cos((amount * Math.PI) / 2);\n },\n Out: function (amount) {\n return Math.sin((amount * Math.PI) / 2);\n },\n InOut: function (amount) {\n return 0.5 * (1 - Math.cos(Math.PI * amount));\n },\n },\n Exponential: {\n In: function (amount) {\n return amount === 0 ? 0 : Math.pow(1024, amount - 1);\n },\n Out: function (amount) {\n return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n if ((amount *= 2) < 1) {\n return 0.5 * Math.pow(1024, amount - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);\n },\n },\n Circular: {\n In: function (amount) {\n return 1 - Math.sqrt(1 - amount * amount);\n },\n Out: function (amount) {\n return Math.sqrt(1 - --amount * amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - amount * amount) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);\n },\n },\n Elastic: {\n In: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n },\n Out: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n amount *= 2;\n if (amount < 1) {\n return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n }\n return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;\n },\n },\n Back: {\n In: function (amount) {\n var s = 1.70158;\n return amount * amount * ((s + 1) * amount - s);\n },\n Out: function (amount) {\n var s = 1.70158;\n return --amount * amount * ((s + 1) * amount + s) + 1;\n },\n InOut: function (amount) {\n var s = 1.70158 * 1.525;\n if ((amount *= 2) < 1) {\n return 0.5 * (amount * amount * ((s + 1) * amount - s));\n }\n return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);\n },\n },\n Bounce: {\n In: function (amount) {\n return 1 - Easing.Bounce.Out(1 - amount);\n },\n Out: function (amount) {\n if (amount < 1 / 2.75) {\n return 7.5625 * amount * amount;\n }\n else if (amount < 2 / 2.75) {\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\n }\n else if (amount < 2.5 / 2.75) {\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\n }\n else {\n return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;\n }\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Easing.Bounce.In(amount * 2) * 0.5;\n }\n return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;\n },\n },\n};\n\nvar now;\n// Include a performance.now polyfill.\n// In node.js, use process.hrtime.\n// eslint-disable-next-line\n// @ts-ignore\nif (typeof self === 'undefined' && typeof process !== 'undefined' && process.hrtime) {\n now = function () {\n // eslint-disable-next-line\n // @ts-ignore\n var time = process.hrtime();\n // Convert [seconds, nanoseconds] to milliseconds.\n return time[0] * 1000 + time[1] / 1000000;\n };\n}\n// In a browser, use self.performance.now if it is available.\nelse if (typeof self !== 'undefined' && self.performance !== undefined && self.performance.now !== undefined) {\n // This must be bound, because directly assigning this function\n // leads to an invocation exception in Chrome.\n now = self.performance.now.bind(self.performance);\n}\n// Use Date.now if it is available.\nelse if (Date.now !== undefined) {\n now = Date.now;\n}\n// Otherwise, use 'new Date().getTime()'.\nelse {\n now = function () {\n return new Date().getTime();\n };\n}\n\nfunction now$1() {\n return now() * 0.001;\n};\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nvar Group = /** @class */ (function () {\n function Group() {\n this._tweens = {};\n this._tweensAddedDuringUpdate = {};\n }\n Group.prototype.getAll = function () {\n var _this = this;\n return Object.keys(this._tweens).map(function (tweenId) {\n return _this._tweens[tweenId];\n });\n };\n Group.prototype.removeAll = function () {\n this._tweens = {};\n };\n Group.prototype.add = function (tween) {\n this._tweens[tween.getId()] = tween;\n this._tweensAddedDuringUpdate[tween.getId()] = tween;\n };\n Group.prototype.remove = function (tween) {\n delete this._tweens[tween.getId()];\n delete this._tweensAddedDuringUpdate[tween.getId()];\n };\n Group.prototype.update = function (time, preserve) {\n if (time === void 0) { time = now$1(); }\n if (preserve === void 0) { preserve = false; }\n var tweenIds = Object.keys(this._tweens);\n if (tweenIds.length === 0) {\n return false;\n }\n // Tweens are updated in \"batches\". If you add a new tween during an\n // update, then the new tween will be updated in the next batch.\n // If you remove a tween during an update, it may or may not be updated.\n // However, if the removed tween was added during the current batch,\n // then it will not be updated.\n while (tweenIds.length > 0) {\n this._tweensAddedDuringUpdate = {};\n for (var i = 0; i < tweenIds.length; i++) {\n var tween = this._tweens[tweenIds[i]];\n var autoStart = !preserve;\n if (tween && tween.update(time, autoStart) === false && !preserve) {\n delete this._tweens[tweenIds[i]];\n }\n }\n tweenIds = Object.keys(this._tweensAddedDuringUpdate);\n }\n return true;\n };\n return Group;\n}());\n\n/**\n *\n */\nvar Interpolation = {\n Linear: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.Linear;\n if (k < 0) {\n return fn(v[0], v[1], f);\n }\n if (k > 1) {\n return fn(v[m], v[m - 1], m - f);\n }\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n },\n Bezier: function (v, k) {\n var b = 0;\n var n = v.length - 1;\n var pw = Math.pow;\n var bn = Interpolation.Utils.Bernstein;\n for (var i = 0; i <= n; i++) {\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n }\n return b;\n },\n CatmullRom: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.CatmullRom;\n if (v[0] === v[m]) {\n if (k < 0) {\n i = Math.floor((f = m * (1 + k)));\n }\n return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\n }\n else {\n if (k < 0) {\n return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n }\n if (k > 1) {\n return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n }\n return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\n }\n },\n Utils: {\n Linear: function (p0, p1, t) {\n return (p1 - p0) * t + p0;\n },\n Bernstein: function (n, i) {\n var fc = Interpolation.Utils.Factorial;\n return fc(n) / fc(i) / fc(n - i);\n },\n Factorial: (function () {\n var a = [1];\n return function (n) {\n var s = 1;\n if (a[n]) {\n return a[n];\n }\n for (var i = n; i > 1; i--) {\n s *= i;\n }\n a[n] = s;\n return s;\n };\n })(),\n CatmullRom: function (p0, p1, p2, p3, t) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n var t2 = t * t;\n var t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n },\n },\n};\n\n/**\n * Utils\n */\nvar Sequence = /** @class */ (function () {\n function Sequence() {\n }\n Sequence.nextId = function () {\n return Sequence._nextId++;\n };\n Sequence._nextId = 0;\n return Sequence;\n}());\n\nvar mainGroup = new Group();\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar Tween = /** @class */ (function () {\n function Tween(_object, _group) {\n if (_group === void 0) { _group = mainGroup; }\n this._object = _object;\n this._group = _group;\n this._isPaused = false;\n this._pauseStart = 0;\n this._valuesStart = {};\n this._valuesEnd = {};\n this._valuesStartRepeat = {};\n this._duration = 0;\n this._initialRepeat = 0;\n this._repeat = 0;\n this._yoyo = false;\n this._isPlaying = false;\n this._reversed = false;\n this._delayTime = 0;\n this._startTime = 0;\n this._easingFunction = Easing.Linear.None;\n this._interpolationFunction = Interpolation.Linear;\n this._chainedTweens = [];\n this._onStartCallbackFired = false;\n this._id = Sequence.nextId();\n this._isChainStopped = false;\n this._goToEnd = false;\n this._headTween = null;\n this._tailTween = null;\n this._headStart = false;\n }\n Tween.prototype.getId = function () {\n return this._id;\n };\n Tween.prototype.isPlaying = function () {\n return this._isPlaying;\n };\n Tween.prototype.isPaused = function () {\n return this._isPaused;\n };\n Tween.prototype.duration = function (d) {\n this._duration = d;\n return this;\n };\n Tween.prototype.start = function (time) {\n if (this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.add(this);\n this._repeat = this._initialRepeat;\n if (this._reversed) {\n // If we were reversed (f.e. using the yoyo feature) then we need to\n // flip the tween direction back to forward.\n this._reversed = false;\n for (var property in this._valuesStartRepeat) {\n this._swapEndStartRepeatValues(property);\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n }\n this._isPlaying = true;\n this._isPaused = false;\n this._onStartCallbackFired = false;\n this._isChainStopped = false;\n this._startTime = time !== undefined ? (typeof time === 'string' ? now$1() + parseFloat(time) : time) : now$1();\n this._startTime += this._delayTime;\n this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat);\n return this;\n };\n Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat) {\n for (var property in _valuesEnd) {\n var startValue = _object[property];\n var startValueIsArray = Array.isArray(startValue);\n var propType = startValueIsArray ? 'array' : typeof startValue;\n var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);\n // If `to()` specifies a property that doesn't exist in the source object,\n // we should not set that property in the object\n if (propType === 'undefined' || propType === 'function') {\n continue;\n }\n // Check if an Array was provided as property value\n if (isInterpolationList) {\n var endValues = _valuesEnd[property];\n if (endValues.length === 0) {\n continue;\n }\n // handle an array of relative values\n endValues = endValues.map(this._handleRelativeValue.bind(this, startValue));\n // Create a local copy of the Array with the start value at the front\n _valuesEnd[property] = [startValue].concat(endValues);\n }\n // handle the deepness of the values\n if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n _valuesStart[property] = startValueIsArray ? [] : {};\n // eslint-disable-next-line\n for (var prop in startValue) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property][prop] = startValue[prop];\n }\n _valuesStartRepeat[property] = startValueIsArray ? [] : {}; // TODO? repeat nested values? And yoyo? And array values?\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._setupProperties(startValue, _valuesStart[property], _valuesEnd[property], _valuesStartRepeat[property]);\n }\n else {\n // Save the starting value, but only once.\n if (typeof _valuesStart[property] === 'undefined') {\n _valuesStart[property] = startValue;\n }\n if (!startValueIsArray) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\n }\n if (isInterpolationList) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\n }\n else {\n _valuesStartRepeat[property] = _valuesStart[property] || 0;\n }\n }\n }\n };\n Tween.prototype.stop = function () {\n if (!this._isChainStopped) {\n this._isChainStopped = true;\n this.stopChainedTweens();\n }\n if (!this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n this._isPlaying = false;\n this._isPaused = false;\n if (this._onStopCallback) {\n this._onStopCallback(this._object);\n }\n return this;\n };\n Tween.prototype.end = function () {\n this._goToEnd = true;\n this.update(Infinity);\n return this;\n };\n Tween.prototype.pause = function (time) {\n if (time === void 0) { time = now$1(); }\n if (this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = true;\n this._pauseStart = time;\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n return this;\n };\n Tween.prototype.resume = function (time) {\n if (time === void 0) { time = now$1(); }\n if (!this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = false;\n this._startTime += time - this._pauseStart;\n this._pauseStart = 0;\n // eslint-disable-next-line\n this._group && this._group.add(this);\n return this;\n };\n Tween.prototype.stopChainedTweens = function () {\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n this._chainedTweens[i].stop();\n }\n this._chainedTweens = [];\n return this;\n };\n Tween.prototype.group = function (group) {\n this._group = group;\n return this;\n };\n Tween.prototype.call = function (callback) {\n this._onFinishCallback = callback;\n return this;\n };\n Tween.prototype.from = function (properties) {\n this._valuesStart = Object.create(properties);\n return this;\n };\n Tween.prototype.to = function (properties, duration) {\n // TODO? restore this, then update the 07_dynamic_to example to set fox\n // tween's to on each update. That way the behavior is opt-in (there's\n // currently no opt-out).\n // for (const prop in properties) this._valuesEnd[prop] = properties[prop]\n this._valuesEnd = Object.create(properties);\n if (duration !== undefined) {\n this._duration = duration;\n }\n this._chainedTween = this;\n return this;\n };\n Tween.prototype.delay = function (amount) {\n this._delayTime = amount;\n return this;\n };\n Tween.prototype.union = function (headTween, tailTween) {\n this._headTween = headTween;\n this._tailTween = tailTween.chain(this);\n this._headStart = true;\n return this;\n };\n Tween.prototype.repeat = function (times) {\n this._initialRepeat = times;\n this._repeat = times;\n return this;\n };\n Tween.prototype.repeatDelay = function (amount) {\n this._repeatDelayTime = amount;\n return this;\n };\n Tween.prototype.yoyo = function (yoyo) {\n this._yoyo = yoyo;\n return this;\n };\n Tween.prototype.easing = function (easingFunction) {\n this._easingFunction = easingFunction;\n return this;\n };\n Tween.prototype.interpolation = function (interpolationFunction) {\n this._interpolationFunction = interpolationFunction;\n return this;\n };\n Tween.prototype.chain = function () {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n this._chainedTweens = tweens;\n return this;\n };\n Tween.prototype.unchain = function () {\n for (var _i = 0; _i < arguments.length; _i++) {\n let index = this._chainedTweens.findIndex(v => v == arguments[_i]);\n if (index > -1) {\n this._chainedTweens.splice(index, 1);\n }\n }\n return this;\n };\n Tween.prototype.onStart = function (callback) {\n this._onStartCallback = callback;\n return this;\n };\n Tween.prototype.onUpdate = function (callback) {\n this._onUpdateCallback = callback;\n return this;\n };\n Tween.prototype.onRepeat = function (callback) {\n this._onRepeatCallback = callback;\n return this;\n };\n Tween.prototype.onComplete = function (callback) {\n this._onCompleteCallback = callback;\n return this;\n };\n Tween.prototype.onStop = function (callback) {\n this._onStopCallback = callback;\n return this;\n };\n /**\n * @returns true if the tween is still playing after the update, false\n * otherwise (calling update on a paused tween still returns true because\n * it is still playing, just paused).\n */\n Tween.prototype.update = function (time, autoStart) {\n if (time === void 0) { time = now$1(); }\n if (autoStart === void 0) { autoStart = true; }\n if (this._isPaused)\n return true;\n var property;\n var elapsed;\n var endTime = this._startTime + this._duration;\n if (!this._goToEnd && !this._isPlaying) {\n if (time > endTime)\n return false;\n if (autoStart)\n this.start(time);\n }\n this._goToEnd = false;\n if (time < this._startTime) {\n return true;\n }\n if (this._onStartCallbackFired === false) {\n if (this._onStartCallback) {\n this._onStartCallback(this._object);\n }\n this._onStartCallbackFired = true;\n }\n elapsed = (time - this._startTime) / this._duration;\n elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed;\n var value = this._easingFunction(elapsed);\n // properties transformations\n this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);\n if (this._onUpdateCallback) {\n this._onUpdateCallback(this._object, elapsed);\n }\n if (elapsed === 1) {\n if (this._onFinishCallback) {\n this._onFinishCallback(this._object);\n }\n if (this._headTween && this._headStart) {\n this._headTween.start(this._startTime + this._duration);\n this._headStart = false;\n this._isPlaying = false;\n return false;\n }\n if (this._repeat > 0) {\n if (isFinite(this._repeat)) {\n this._repeat--;\n }\n // Reassign starting values, restart by making startTime = now\n for (property in this._valuesStartRepeat) {\n if (!this._yoyo && typeof this._valuesEnd[property] === 'string') {\n this._valuesStartRepeat[property] =\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\n }\n if (this._yoyo) {\n this._swapEndStartRepeatValues(property);\n }\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n if (this._yoyo) {\n this._reversed = !this._reversed;\n }\n if (this._repeatDelayTime !== undefined) {\n this._startTime = time + this._repeatDelayTime;\n }\n else {\n this._startTime = time + this._delayTime;\n }\n if (this._onRepeatCallback) {\n this._onRepeatCallback(this._object);\n }\n if (this._headTween) {\n this._headStart = true;\n this._initialRepeat = this._repeat;\n }\n return true;\n }\n else {\n if (this._tailTween) {\n this._tailTween.unchain(this);\n }\n if (this._onCompleteCallback) {\n this._onCompleteCallback(this._object);\n }\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n // Make the chained tweens start exactly at the time they should,\n // even if the `update()` method was called way past the duration of the tween\n this._chainedTweens[i].start(this._startTime + this._duration);\n }\n this._isPlaying = false;\n return false;\n }\n }\n return true;\n };\n Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) {\n for (var property in _valuesEnd) {\n // Don't update properties that do not exist in the source object\n if (_valuesStart[property] === undefined) {\n continue;\n }\n var start = _valuesStart[property] || 0;\n var end = _valuesEnd[property];\n var startIsArray = Array.isArray(_object[property]);\n var endIsArray = Array.isArray(end);\n var isInterpolationList = !startIsArray && endIsArray;\n if (isInterpolationList) {\n _object[property] = this._interpolationFunction(end, value);\n }\n else if (typeof end === 'object' && end) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._updateProperties(_object[property], start, end, value);\n let des = Object.getOwnPropertyDescriptor(_object, property);\n if (des && des.set) {\n _object[property] = _object[property];\n }\n }\n else {\n // Parses relative end values with start as base (e.g.: +10, -3)\n end = this._handleRelativeValue(start, end);\n // Protect against non numeric properties.\n if (typeof end === 'number') {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _object[property] = start + (end - start) * value;\n }\n }\n }\n };\n Tween.prototype._handleRelativeValue = function (start, end) {\n if (typeof end !== 'string') {\n return end;\n }\n if (end.charAt(0) === '+' || end.charAt(0) === '-') {\n return start + parseFloat(end);\n }\n else {\n return parseFloat(end);\n }\n };\n Tween.prototype._swapEndStartRepeatValues = function (property) {\n var tmp = this._valuesStartRepeat[property];\n var endValue = this._valuesEnd[property];\n if (typeof endValue === 'string') {\n this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue);\n }\n else {\n this._valuesStartRepeat[property] = this._valuesEnd[property];\n }\n this._valuesEnd[property] = tmp;\n };\n return Tween;\n}());\n\nvar VERSION = '18.6.4';\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar nextId = Sequence.nextId;\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tweens.\n */\nvar TWEEN = mainGroup;\n// This is the best way to export things in a way that's compatible with both ES\n// Modules and CommonJS, without build hacks, and so as not to break the\n// existing API.\n// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881\n\n// var getAll = TWEEN.getAll.bind(TWEEN);\n// var removeAll = TWEEN.removeAll.bind(TWEEN);\n// var add = TWEEN.add.bind(TWEEN);\n// var remove = TWEEN.remove.bind(TWEEN);\n// var update = TWEEN.update.bind(TWEEN);\n\nexport {\n Easing,\n Group,\n Interpolation,\n Tween,\n VERSION,\n nextId,\n};","import { Group, Tween } from \"./tween\";\n\nexport class TweenChain {\n private _object: Object;\n private _tween: Tween<Object>;\n private _chainedTween: Tween<Object>;\n\n constructor(object: Object, group?: Group) {\n this._object = object;\n this._tween = new Tween(object, group);\n }\n\n start() {\n this._tween.start();\n return this;\n }\n\n stop() {\n this._tween.stop();\n return this;\n }\n\n repeat(times) {\n this._chainedTween.repeat(times);\n return this;\n }\n\n union() {\n this._chainedTween = this._tween = new Tween(this._object).union(this._tween, this._chainedTween);\n return this;\n }\n\n call(callback) {\n this._chainTween().call(callback);\n return this;\n }\n\n delay(amount) {\n this._chainTween().delay(amount);\n return this;\n }\n\n to(properties, duration, props) {\n let tween = this._chainTween().to(properties, duration);\n if (props) {\n if (props.from) tween.from(props.from);\n if (props.easing) tween.easing(props.easing);\n if (props.onStart) tween.onStart(props.onStart);\n if (props.onStop) tween.onStop(props.onStop);\n if (props.onComplete) tween.onComplete(props.onComplete);\n if (props.onUpdate) tween.onUpdate(props.onUpdate);\n if (props.onRepeat) tween.onRepeat(props.onRepeat);\n }\n return this;\n }\n\n _chainTween() {\n let tween = this._tween;\n if (this._chainedTween) {\n tween = new Tween(this._object);\n this._chainedTween.chain(tween);\n }\n this._chainedTween = tween;\n return tween;\n }\n}","import { TweenChain } from \"./TweenChain\";\nimport { Group, Tween } from \"./tween\";\n\nexport class TweenManager {\n private _group: Group = new Group();\n\n destroy() {\n this._group.removeAll();\n }\n\n update(time: number) {\n this._group.update(time);\n }\n\n tween(target: Object) {\n return new Tween(target, this._group);\n }\n\n timeline(target: Object) {\n return new TweenChain(target, this._group);\n }\n\n killTweensOf(target: Object) {\n this._group.getAll().forEach((tween: any) => tween._object === target && this._group.remove(tween));\n }\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { LoadingManager, Mesh, Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n texSettings?: TextureSettings,\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nconst materialMapKeys = [\n \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\"\n]\n\nexport abstract class aLoader {\n\n static _setMeshData(node: Object3D) {\n const meshData = { meshes: [], materials: {}, textures: {} };\n const callback = (node: Mesh) => {\n const materials = Array.isArray(node.material) ? node.material : [node.material];\n for (let mat of materials) {\n meshData.meshes.push(node);\n meshData.materials[mat.name] = mat;\n let tex = null;\n for (let v of materialMapKeys) {\n tex = mat[v];\n tex && (meshData.textures[tex.uuid] = tex);\n }\n }\n }\n node.traverse(v => (v instanceof Mesh) && callback(v));\n node.userData.meshData = meshData;\n return node;\n }\n\n manager: ResourceManager;\n\n abstract load(props: LoadProperties): void;\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { aLoader } from \"./aLoader\";\n\nexport interface AssetProperties {\n ext?: string,\n url?: string | File | { mainFile: File, additionalFiles: File[] };\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport class ResourceManager {\n\n static extension(path: string) {\n let str = path.split(\".\");\n if (str.length > 1) {\n return str.pop();\n }\n return \"\";\n }\n\n static dirname(path: string) {\n let index = path.lastIndexOf(\"/\");\n return index !== -1 ? path.substring(0, index) : \"\";\n }\n\n static basename(path: string, ext?: string) {\n let str = path.split(\"/\").pop();\n return ext ? str.replace(\".\" + ext, \"\") : str;\n }\n\n static _loaders: Map<string, aLoader> = new Map();\n\n static _addLoader(extNames: string[], Loader: new () => aLoader) {\n let loader = new Loader();\n for (let ext of extNames) {\n ResourceManager._loaders.set(ext, loader);\n }\n }\n\n static _parseURL(uri: any) {\n let url = \"\";\n let file = null;\n let ext = \"\";\n if (typeof (File) !== \"undefined\" && uri instanceof File) {\n url = uri.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else if (typeof (uri) === \"object\") {\n url = uri.mainFile.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else {\n url += uri;\n ext = ResourceManager.extension(url);\n }\n return { url, file, ext };\n }\n\n static _getTextureKey(url: string, settings: TextureSettings) {\n let keys = [url];\n for (let k in settings) {\n if (settings[k] !== undefined) keys.push(k + \"=\" + settings[k]);\n }\n return keys.join(\",\");\n }\n\n static _texSettingKeys = [\n \"flipY\", \"mapping\", \"wrapS\", \"wrapT\", \"dataType\",\n \"magFilter\", \"minFilter\", \"format\", \"anisotropy\", \"encoding\", \"repeat\"\n ]\n static _splitTextureSettings(props: TextureSettings & { [k: string]: any }) {\n let settings = {};\n for (let v of ResourceManager._texSettingKeys) {\n if (props[v] !== undefined) {\n if (v === \"dataType\") {\n settings[\"type\"] = props[v];\n }\n else {\n settings[v] = props[v];\n }\n }\n }\n return settings;\n }\n\n path: string = \"\";\n resourcePath: string = \"\";\n dracoPath: string = \"\";\n loadingManager: LoadingManager;\n\n private _caches: Map<string, any> = new Map();\n\n constructor(props: {\n path: string;\n resourcePath: string;\n dracoPath: string;\n loadingManager: LoadingManager;\n }) {\n this.path = props.path;\n this.resourcePath = props.resourcePath;\n this.dracoPath = props.dracoPath;\n this.loadingManager = props.loadingManager;\n\n for (let loader of ResourceManager._loaders.values()) {\n loader.manager = this;\n }\n }\n\n destroy() {\n this._caches.clear();\n }\n\n loadAsset<T = any>({ url, ext, onProgress, ...props }: AssetProperties & TextureSettings) {\n return new Promise<T>((resolve, reject) => {\n const info = ResourceManager._parseURL(url);\n const texSettings = ResourceManager._splitTextureSettings(props);\n const key = ResourceManager._getTextureKey(info.url, texSettings);\n let result = this._caches.get(key);\n if (result) {\n resolve(result);\n }\n else {\n const onLoad = (file) => {\n this._caches.set(key, file);\n resolve(file);\n }\n let sel = ext || info.ext;\n if (ResourceManager._loaders.has(sel)) {\n ResourceManager._loaders.get(sel).load({\n url: info.url,\n texSettings,\n onProgress,\n onLoad,\n onError: reject\n });\n }\n else {\n reject(\"missing loader for \" + ext)\n }\n }\n })\n }\n}\n\nexport function resourceLoader(extNames: string[]) {\n return <T extends aLoader>(Loader: new () => T) => {\n ResourceManager._addLoader(extNames, Loader);\n };\n}","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFloat32BufferAttribute,\n\tInstancedBufferAttribute,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tTrianglesDrawMode,\n\tVector3,\n} from 'three';\n\nfunction computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) {\n\n\tif ( ! MikkTSpace || ! MikkTSpace.isReady ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Initialized MikkTSpace library required.' );\n\n\t}\n\n\tif ( ! geometry.hasAttribute( 'position' ) || ! geometry.hasAttribute( 'normal' ) || ! geometry.hasAttribute( 'uv' ) ) {\n\n\t\tthrow new Error( 'BufferGeometryUtils: Tangents require \"position\", \"normal\", and \"uv\" attributes.' );\n\n\t}\n\n\tfunction getAttributeArray( attribute ) {\n\n\t\tif ( attribute.normalized || attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst dstArray = new Float32Array( attribute.count * attribute.itemSize );\n\n\t\t\tfor ( let i = 0, j = 0; i < attribute.count; i ++ ) {\n\n\t\t\t\tdstArray[ j ++ ] = attribute.getX( i );\n\t\t\t\tdstArray[ j ++ ] = attribute.getY( i );\n\n\t\t\t\tif ( attribute.itemSize > 2 ) {\n\n\t\t\t\t\tdstArray[ j ++ ] = attribute.getZ( i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn dstArray;\n\n\t\t}\n\n\t\tif ( attribute.array instanceof Float32Array ) {\n\n\t\t\treturn attribute.array;\n\n\t\t}\n\n\t\treturn new Float32Array( attribute.array );\n\n\t}\n\n\t// MikkTSpace algorithm requires non-indexed input.\n\n\tconst _geometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\n\t// Compute vertex tangents.\n\n\tconst tangents = MikkTSpace.generateTangents(\n\n\t\tgetAttributeArray( _geometry.attributes.position ),\n\t\tgetAttributeArray( _geometry.attributes.normal ),\n\t\tgetAttributeArray( _geometry.attributes.uv )\n\n\t);\n\n\t// Texture coordinate convention of glTF differs from the apparent\n\t// default of the MikkTSpace library; .w component must be flipped.\n\n\tif ( negateSign ) {\n\n\t\tfor ( let i = 3; i < tangents.length; i += 4 ) {\n\n\t\t\ttangents[ i ] *= - 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\t_geometry.setAttribute( 'tangent', new BufferAttribute( tangents, 4 ) );\n\n\tif ( geometry !== _geometry ) {\n\n\t\tgeometry.copy( _geometry );\n\n\t}\n\n\treturn geometry;\n\n}\n\n/**\n * @param {Array<BufferGeometry>} geometries\n * @param {Boolean} useGroups\n * @return {BufferGeometry}\n */\nfunction mergeGeometries( geometries, useGroups = false ) {\n\n\tconst isIndexed = geometries[ 0 ].index !== null;\n\n\tconst attributesUsed = new Set( Object.keys( geometries[ 0 ].attributes ) );\n\tconst morphAttributesUsed = new Set( Object.keys( geometries[ 0 ].morphAttributes ) );\n\n\tconst attributes = {};\n\tconst morphAttributes = {};\n\n\tconst morphTargetsRelative = geometries[ 0 ].morphTargetsRelative;\n\n\tconst mergedGeometry = new BufferGeometry();\n\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\tconst geometry = geometries[ i ];\n\t\tlet attributesCount = 0;\n\n\t\t// ensure that all geometries are indexed, or none\n\n\t\tif ( isIndexed !== ( geometry.index !== null ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather attributes, exit early if they're different\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tif ( ! attributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure \"' + name + '\" attribute exists among all geometries, or in none of them.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( attributes[ name ] === undefined ) attributes[ name ] = [];\n\n\t\t\tattributes[ name ].push( geometry.attributes[ name ] );\n\n\t\t\tattributesCount ++;\n\n\t\t}\n\n\t\t// ensure geometries have the same number of attributes\n\n\t\tif ( attributesCount !== attributesUsed.size ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// gather morph attributes, exit early if they're different\n\n\t\tif ( morphTargetsRelative !== geometry.morphTargetsRelative ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tif ( ! morphAttributesUsed.has( name ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphAttributes must be consistent throughout all geometries.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tif ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];\n\n\t\t\tmorphAttributes[ name ].push( geometry.morphAttributes[ name ] );\n\n\t\t}\n\n\t\tif ( useGroups ) {\n\n\t\t\tlet count;\n\n\t\t\tif ( isIndexed ) {\n\n\t\t\t\tcount = geometry.index.count;\n\n\t\t\t} else if ( geometry.attributes.position !== undefined ) {\n\n\t\t\t\tcount = geometry.attributes.position.count;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.addGroup( offset, count, i );\n\n\t\t\toffset += count;\n\n\t\t}\n\n\t}\n\n\t// merge indices\n\n\tif ( isIndexed ) {\n\n\t\tlet indexOffset = 0;\n\t\tconst mergedIndex = [];\n\n\t\tfor ( let i = 0; i < geometries.length; ++ i ) {\n\n\t\t\tconst index = geometries[ i ].index;\n\n\t\t\tfor ( let j = 0; j < index.count; ++ j ) {\n\n\t\t\t\tmergedIndex.push( index.getX( j ) + indexOffset );\n\n\t\t\t}\n\n\t\t\tindexOffset += geometries[ i ].attributes.position.count;\n\n\t\t}\n\n\t\tmergedGeometry.setIndex( mergedIndex );\n\n\t}\n\n\t// merge attributes\n\n\tfor ( const name in attributes ) {\n\n\t\tconst mergedAttribute = mergeAttributes( attributes[ name ] );\n\n\t\tif ( ! mergedAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' attribute.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tmergedGeometry.setAttribute( name, mergedAttribute );\n\n\t}\n\n\t// merge morph attributes\n\n\tfor ( const name in morphAttributes ) {\n\n\t\tconst numMorphTargets = morphAttributes[ name ][ 0 ].length;\n\n\t\tif ( numMorphTargets === 0 ) break;\n\n\t\tmergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {};\n\t\tmergedGeometry.morphAttributes[ name ] = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; ++ i ) {\n\n\t\t\tconst morphAttributesToMerge = [];\n\n\t\t\tfor ( let j = 0; j < morphAttributes[ name ].length; ++ j ) {\n\n\t\t\t\tmorphAttributesToMerge.push( morphAttributes[ name ][ j ][ i ] );\n\n\t\t\t}\n\n\t\t\tconst mergedMorphAttribute = mergeAttributes( morphAttributesToMerge );\n\n\t\t\tif ( ! mergedMorphAttribute ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' morphAttribute.' );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tmergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );\n\n\t\t}\n\n\t}\n\n\treturn mergedGeometry;\n\n}\n\n/**\n * @param {Array<BufferAttribute>} attributes\n * @return {BufferAttribute}\n */\nfunction mergeAttributes( attributes ) {\n\n\tlet TypedArray;\n\tlet itemSize;\n\tlet normalized;\n\tlet gpuType = - 1;\n\tlet arrayLength = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( itemSize === undefined ) itemSize = attribute.itemSize;\n\t\tif ( itemSize !== attribute.itemSize ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( normalized === undefined ) normalized = attribute.normalized;\n\t\tif ( normalized !== attribute.normalized ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tif ( gpuType === - 1 ) gpuType = attribute.gpuType;\n\t\tif ( gpuType !== attribute.gpuType ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.count * itemSize;\n\n\t}\n\n\tconst array = new TypedArray( arrayLength );\n\tconst result = new BufferAttribute( array, itemSize, normalized );\n\tlet offset = 0;\n\n\tfor ( let i = 0; i < attributes.length; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\tconst tupleOffset = offset / itemSize;\n\t\t\tfor ( let j = 0, l = attribute.count; j < l; j ++ ) {\n\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tconst value = attribute.getComponent( j, c );\n\t\t\t\t\tresult.setComponent( j + tupleOffset, c, value );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tarray.set( attribute.array, offset );\n\n\t\t}\n\n\t\toffset += attribute.count * itemSize;\n\n\t}\n\n\tif ( gpuType !== undefined ) {\n\n\t\tresult.gpuType = gpuType;\n\n\t}\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferAttribute}\n * @return {BufferAttribute}\n */\nexport function deepCloneAttribute( attribute ) {\n\n\tif ( attribute.isInstancedInterleavedBufferAttribute || attribute.isInterleavedBufferAttribute ) {\n\n\t\treturn deinterleaveAttribute( attribute );\n\n\t}\n\n\tif ( attribute.isInstancedBufferAttribute ) {\n\n\t\treturn new InstancedBufferAttribute().copy( attribute );\n\n\t}\n\n\treturn new BufferAttribute().copy( attribute );\n\n}\n\n/**\n * @param {Array<BufferAttribute>} attributes\n * @return {Array<InterleavedBufferAttribute>}\n */\nfunction interleaveAttributes( attributes ) {\n\n\t// Interleaves the provided attributes into an InterleavedBuffer and returns\n\t// a set of InterleavedBufferAttributes for each attribute\n\tlet TypedArray;\n\tlet arrayLength = 0;\n\tlet stride = 0;\n\n\t// calculate the length and type of the interleavedBuffer\n\tfor ( let i = 0, l = attributes.length; i < l; ++ i ) {\n\n\t\tconst attribute = attributes[ i ];\n\n\t\tif ( TypedArray === undefined ) TypedArray = attribute.array.constructor;\n\t\tif ( TypedArray !== attribute.array.constructor ) {\n\n\t\t\tconsole.error( 'AttributeBuffers of different types cannot be interleaved' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tarrayLength += attribute.array.length;\n\t\tstride += attribute.itemSize;\n\n\t}\n\n\t// Create the set of buffer attributes\n\tconst interleavedBuffer = new InterleavedBuffer( new TypedArray( arrayLength ), stride );\n\tlet offset = 0;\n\tconst res = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\tfor ( let j = 0, l = attributes.length; j < l; j ++ ) {\n\n\t\tconst attribute = attributes[ j ];\n\t\tconst itemSize = attribute.itemSize;\n\t\tconst count = attribute.count;\n\t\tconst iba = new InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, attribute.normalized );\n\t\tres.push( iba );\n\n\t\toffset += itemSize;\n\n\t\t// Move the data for each attribute into the new interleavedBuffer\n\t\t// at the appropriate offset\n\t\tfor ( let c = 0; c < count; c ++ ) {\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\tiba[ setters[ k ] ]( c, attribute[ getters[ k ] ]( c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn res;\n\n}\n\n// returns a new, non-interleaved version of the provided attribute\nexport function deinterleaveAttribute( attribute ) {\n\n\tconst cons = attribute.data.array.constructor;\n\tconst count = attribute.count;\n\tconst itemSize = attribute.itemSize;\n\tconst normalized = attribute.normalized;\n\n\tconst array = new cons( count * itemSize );\n\tlet newAttribute;\n\tif ( attribute.isInstancedInterleavedBufferAttribute ) {\n\n\t\tnewAttribute = new InstancedBufferAttribute( array, itemSize, normalized, attribute.meshPerAttribute );\n\n\t} else {\n\n\t\tnewAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t}\n\n\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\tnewAttribute.setX( i, attribute.getX( i ) );\n\n\t\tif ( itemSize >= 2 ) {\n\n\t\t\tnewAttribute.setY( i, attribute.getY( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 3 ) {\n\n\t\t\tnewAttribute.setZ( i, attribute.getZ( i ) );\n\n\t\t}\n\n\t\tif ( itemSize >= 4 ) {\n\n\t\t\tnewAttribute.setW( i, attribute.getW( i ) );\n\n\t\t}\n\n\t}\n\n\treturn newAttribute;\n\n}\n\n// deinterleaves all attributes on the geometry\nexport function deinterleaveGeometry( geometry ) {\n\n\tconst attributes = geometry.attributes;\n\tconst morphTargets = geometry.morphTargets;\n\tconst attrMap = new Map();\n\n\tfor ( const key in attributes ) {\n\n\t\tconst attr = attributes[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tattributes[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n\tfor ( const key in morphTargets ) {\n\n\t\tconst attr = morphTargets[ key ];\n\t\tif ( attr.isInterleavedBufferAttribute ) {\n\n\t\t\tif ( ! attrMap.has( attr ) ) {\n\n\t\t\t\tattrMap.set( attr, deinterleaveAttribute( attr ) );\n\n\t\t\t}\n\n\t\t\tmorphTargets[ key ] = attrMap.get( attr );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @return {number}\n */\nfunction estimateBytesUsed( geometry ) {\n\n\t// Return the estimated memory used by this geometry in bytes\n\t// Calculate using itemSize, count, and BYTES_PER_ELEMENT to account\n\t// for InterleavedBufferAttributes.\n\tlet mem = 0;\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst attr = geometry.getAttribute( name );\n\t\tmem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT;\n\n\t}\n\n\tconst indices = geometry.getIndex();\n\tmem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0;\n\treturn mem;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} tolerance\n * @return {BufferGeometry}\n */\nfunction mergeVertices( geometry, tolerance = 1e-4 ) {\n\n\ttolerance = Math.max( tolerance, Number.EPSILON );\n\n\t// Generate an index buffer if the geometry doesn't have one, or optimize it\n\t// if it's already available.\n\tconst hashToIndex = {};\n\tconst indices = geometry.getIndex();\n\tconst positions = geometry.getAttribute( 'position' );\n\tconst vertexCount = indices ? indices.count : positions.count;\n\n\t// next value for triangle indices\n\tlet nextIndex = 0;\n\n\t// attributes and new attribute arrays\n\tconst attributeNames = Object.keys( geometry.attributes );\n\tconst tmpAttributes = {};\n\tconst tmpMorphAttributes = {};\n\tconst newIndices = [];\n\tconst getters = [ 'getX', 'getY', 'getZ', 'getW' ];\n\tconst setters = [ 'setX', 'setY', 'setZ', 'setW' ];\n\n\t// Initialize the arrays, allocating space conservatively. Extra\n\t// space will be trimmed in the last step.\n\tfor ( let i = 0, l = attributeNames.length; i < l; i ++ ) {\n\n\t\tconst name = attributeNames[ i ];\n\t\tconst attr = geometry.attributes[ name ];\n\n\t\ttmpAttributes[ name ] = new BufferAttribute(\n\t\t\tnew attr.array.constructor( attr.count * attr.itemSize ),\n\t\t\tattr.itemSize,\n\t\t\tattr.normalized\n\t\t);\n\n\t\tconst morphAttr = geometry.morphAttributes[ name ];\n\t\tif ( morphAttr ) {\n\n\t\t\ttmpMorphAttributes[ name ] = new BufferAttribute(\n\t\t\t\tnew morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize ),\n\t\t\t\tmorphAttr.itemSize,\n\t\t\t\tmorphAttr.normalized\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\t// convert the error tolerance to an amount of decimal places to truncate to\n\tconst halfTolerance = tolerance * 0.5;\n\tconst exponent = Math.log10( 1 / tolerance );\n\tconst hashMultiplier = Math.pow( 10, exponent );\n\tconst hashAdditive = halfTolerance * hashMultiplier;\n\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\tconst index = indices ? indices.getX( i ) : i;\n\n\t\t// Generate a hash for the vertex attributes at the current index 'i'\n\t\tlet hash = '';\n\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\tconst name = attributeNames[ j ];\n\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t// double tilde truncates the decimal value\n\t\t\t\thash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * hashMultiplier + hashAdditive ) },`;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add another reference to the vertex if it's already\n\t\t// used by another index\n\t\tif ( hash in hashToIndex ) {\n\n\t\t\tnewIndices.push( hashToIndex[ hash ] );\n\n\t\t} else {\n\n\t\t\t// copy data to the new index in the temporary attributes\n\t\t\tfor ( let j = 0, l = attributeNames.length; j < l; j ++ ) {\n\n\t\t\t\tconst name = attributeNames[ j ];\n\t\t\t\tconst attribute = geometry.getAttribute( name );\n\t\t\t\tconst morphAttr = geometry.morphAttributes[ name ];\n\t\t\t\tconst itemSize = attribute.itemSize;\n\t\t\t\tconst newarray = tmpAttributes[ name ];\n\t\t\t\tconst newMorphArrays = tmpMorphAttributes[ name ];\n\n\t\t\t\tfor ( let k = 0; k < itemSize; k ++ ) {\n\n\t\t\t\t\tconst getterFunc = getters[ k ];\n\t\t\t\t\tconst setterFunc = setters[ k ];\n\t\t\t\t\tnewarray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) );\n\n\t\t\t\t\tif ( morphAttr ) {\n\n\t\t\t\t\t\tfor ( let m = 0, ml = morphAttr.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\t\tnewMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttr[ m ][ getterFunc ]( index ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\thashToIndex[ hash ] = nextIndex;\n\t\t\tnewIndices.push( nextIndex );\n\t\t\tnextIndex ++;\n\n\t\t}\n\n\t}\n\n\t// generate result BufferGeometry\n\tconst result = geometry.clone();\n\tfor ( const name in geometry.attributes ) {\n\n\t\tconst tmpAttribute = tmpAttributes[ name ];\n\n\t\tresult.setAttribute( name, new BufferAttribute(\n\t\t\ttmpAttribute.array.slice( 0, nextIndex * tmpAttribute.itemSize ),\n\t\t\ttmpAttribute.itemSize,\n\t\t\ttmpAttribute.normalized,\n\t\t) );\n\n\t\tif ( ! ( name in tmpMorphAttributes ) ) continue;\n\n\t\tfor ( let j = 0; j < tmpMorphAttributes[ name ].length; j ++ ) {\n\n\t\t\tconst tmpMorphAttribute = tmpMorphAttributes[ name ][ j ];\n\n\t\t\tresult.morphAttributes[ name ][ j ] = new BufferAttribute(\n\t\t\t\ttmpMorphAttribute.array.slice( 0, nextIndex * tmpMorphAttribute.itemSize ),\n\t\t\t\ttmpMorphAttribute.itemSize,\n\t\t\t\ttmpMorphAttribute.normalized,\n\t\t\t);\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tresult.setIndex( newIndices );\n\n\treturn result;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tif ( drawMode === TrianglesDrawMode ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.' );\n\t\treturn geometry;\n\n\t}\n\n\tif ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) {\n\n\t\tlet index = geometry.getIndex();\n\n\t\t// generate index if not present\n\n\t\tif ( index === null ) {\n\n\t\t\tconst indices = [];\n\n\t\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\t\tindices.push( i );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.setIndex( indices );\n\t\t\t\tindex = geometry.getIndex();\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst numberOfTriangles = index.count - 2;\n\t\tconst newIndices = [];\n\n\t\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t\t// gl.TRIANGLE_FAN\n\n\t\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// gl.TRIANGLE_STRIP\n\n\t\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t\t}\n\n\t\t// build final geometry\n\n\t\tconst newGeometry = geometry.clone();\n\t\tnewGeometry.setIndex( newIndices );\n\t\tnewGeometry.clearGroups();\n\n\t\treturn newGeometry;\n\n\t} else {\n\n\t\tconsole.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode );\n\t\treturn geometry;\n\n\t}\n\n}\n\n/**\n * Calculates the morphed attributes of a morphed/skinned BufferGeometry.\n * Helpful for Raytracing or Decals.\n * @param {Mesh | Line | Points} object An instance of Mesh, Line or Points.\n * @return {Object} An Object with original position/normal attributes and morphed ones.\n */\nfunction computeMorphedAttributes( object ) {\n\n\tconst _vA = new Vector3();\n\tconst _vB = new Vector3();\n\tconst _vC = new Vector3();\n\n\tconst _tempA = new Vector3();\n\tconst _tempB = new Vector3();\n\tconst _tempC = new Vector3();\n\n\tconst _morphA = new Vector3();\n\tconst _morphB = new Vector3();\n\tconst _morphC = new Vector3();\n\n\tfunction _calculateMorphedAttributeData(\n\t\tobject,\n\t\tattribute,\n\t\tmorphAttribute,\n\t\tmorphTargetsRelative,\n\t\ta,\n\t\tb,\n\t\tc,\n\t\tmodifiedAttributeArray\n\t) {\n\n\t\t_vA.fromBufferAttribute( attribute, a );\n\t\t_vB.fromBufferAttribute( attribute, b );\n\t\t_vC.fromBufferAttribute( attribute, c );\n\n\t\tconst morphInfluences = object.morphTargetInfluences;\n\n\t\tif ( morphAttribute && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\t\t\t_morphB.set( 0, 0, 0 );\n\t\t\t_morphC.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morph = morphAttribute[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morph, a );\n\t\t\t\t_tempB.fromBufferAttribute( morph, b );\n\t\t\t\t_tempC.fromBufferAttribute( morph, c );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\n\t\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\n\t\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_vA.add( _morphA );\n\t\t\t_vB.add( _morphB );\n\t\t\t_vC.add( _morphC );\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tobject.applyBoneTransform( a, _vA );\n\t\t\tobject.applyBoneTransform( b, _vB );\n\t\t\tobject.applyBoneTransform( c, _vC );\n\n\t\t}\n\n\t\tmodifiedAttributeArray[ a * 3 + 0 ] = _vA.x;\n\t\tmodifiedAttributeArray[ a * 3 + 1 ] = _vA.y;\n\t\tmodifiedAttributeArray[ a * 3 + 2 ] = _vA.z;\n\t\tmodifiedAttributeArray[ b * 3 + 0 ] = _vB.x;\n\t\tmodifiedAttributeArray[ b * 3 + 1 ] = _vB.y;\n\t\tmodifiedAttributeArray[ b * 3 + 2 ] = _vB.z;\n\t\tmodifiedAttributeArray[ c * 3 + 0 ] = _vC.x;\n\t\tmodifiedAttributeArray[ c * 3 + 1 ] = _vC.y;\n\t\tmodifiedAttributeArray[ c * 3 + 2 ] = _vC.z;\n\n\t}\n\n\tconst geometry = object.geometry;\n\tconst material = object.material;\n\n\tlet a, b, c;\n\tconst index = geometry.index;\n\tconst positionAttribute = geometry.attributes.position;\n\tconst morphPosition = geometry.morphAttributes.position;\n\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\tconst normalAttribute = geometry.attributes.normal;\n\tconst morphNormal = geometry.morphAttributes.position;\n\n\tconst groups = geometry.groups;\n\tconst drawRange = geometry.drawRange;\n\tlet i, j, il, jl;\n\tlet group;\n\tlet start, end;\n\n\tconst modifiedPosition = new Float32Array( positionAttribute.count * positionAttribute.itemSize );\n\tconst modifiedNormal = new Float32Array( normalAttribute.count * normalAttribute.itemSize );\n\n\tif ( index !== null ) {\n\n\t\t// indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = index.getX( i );\n\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// non-indexed buffer geometry\n\n\t\tif ( Array.isArray( material ) ) {\n\n\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\tgroup = groups[ i ];\n\n\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\ta = j;\n\t\t\t\t\tb = j + 1;\n\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tpositionAttribute,\n\t\t\t\t\t\tmorphPosition,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedPosition\n\t\t\t\t\t);\n\n\t\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\t\tobject,\n\t\t\t\t\t\tnormalAttribute,\n\t\t\t\t\t\tmorphNormal,\n\t\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\t\ta, b, c,\n\t\t\t\t\t\tmodifiedNormal\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\tend = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\ta = i;\n\t\t\t\tb = i + 1;\n\t\t\t\tc = i + 2;\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tpositionAttribute,\n\t\t\t\t\tmorphPosition,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedPosition\n\t\t\t\t);\n\n\t\t\t\t_calculateMorphedAttributeData(\n\t\t\t\t\tobject,\n\t\t\t\t\tnormalAttribute,\n\t\t\t\t\tmorphNormal,\n\t\t\t\t\tmorphTargetsRelative,\n\t\t\t\t\ta, b, c,\n\t\t\t\t\tmodifiedNormal\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst morphedPositionAttribute = new Float32BufferAttribute( modifiedPosition, 3 );\n\tconst morphedNormalAttribute = new Float32BufferAttribute( modifiedNormal, 3 );\n\n\treturn {\n\n\t\tpositionAttribute: positionAttribute,\n\t\tnormalAttribute: normalAttribute,\n\t\tmorphedPositionAttribute: morphedPositionAttribute,\n\t\tmorphedNormalAttribute: morphedNormalAttribute\n\n\t};\n\n}\n\nfunction mergeGroups( geometry ) {\n\n\tif ( geometry.groups.length === 0 ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.' );\n\t\treturn geometry;\n\n\t}\n\n\tlet groups = geometry.groups;\n\n\t// sort groups by material index\n\n\tgroups = groups.sort( ( a, b ) => {\n\n\t\tif ( a.materialIndex !== b.materialIndex ) return a.materialIndex - b.materialIndex;\n\n\t\treturn a.start - b.start;\n\n\t} );\n\n\t// create index for non-indexed geometries\n\n\tif ( geometry.getIndex() === null ) {\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\t\tconst indices = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i += 3 ) {\n\n\t\t\tindices.push( i, i + 1, i + 2 );\n\n\t\t}\n\n\t\tgeometry.setIndex( indices );\n\n\t}\n\n\t// sort index\n\n\tconst index = geometry.getIndex();\n\n\tconst newIndices = [];\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tconst groupStart = group.start;\n\t\tconst groupLength = groupStart + group.count;\n\n\t\tfor ( let j = groupStart; j < groupLength; j ++ ) {\n\n\t\t\tnewIndices.push( index.getX( j ) );\n\n\t\t}\n\n\t}\n\n\tgeometry.dispose(); // Required to force buffer recreation\n\tgeometry.setIndex( newIndices );\n\n\t// update groups indices\n\n\tlet start = 0;\n\n\tfor ( let i = 0; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tgroup.start = start;\n\t\tstart += group.count;\n\n\t}\n\n\t// merge groups\n\n\tlet currentGroup = groups[ 0 ];\n\n\tgeometry.groups = [ currentGroup ];\n\n\tfor ( let i = 1; i < groups.length; i ++ ) {\n\n\t\tconst group = groups[ i ];\n\n\t\tif ( currentGroup.materialIndex === group.materialIndex ) {\n\n\t\t\tcurrentGroup.count += group.count;\n\n\t\t} else {\n\n\t\t\tcurrentGroup = group;\n\t\t\tgeometry.groups.push( currentGroup );\n\n\t\t}\n\n\t}\n\n\treturn geometry;\n\n}\n\n\n/**\n * Modifies the supplied geometry if it is non-indexed, otherwise creates a new,\n * non-indexed geometry. Returns the geometry with smooth normals everywhere except\n * faces that meet at an angle greater than the crease angle.\n *\n * @param {BufferGeometry} geometry\n * @param {number} [creaseAngle]\n * @return {BufferGeometry}\n */\nfunction toCreasedNormals( geometry, creaseAngle = Math.PI / 3 /* 60 degrees */ ) {\n\n\tconst creaseDot = Math.cos( creaseAngle );\n\tconst hashMultiplier = ( 1 + 1e-10 ) * 1e2;\n\n\t// reusable vectors\n\tconst verts = [ new Vector3(), new Vector3(), new Vector3() ];\n\tconst tempVec1 = new Vector3();\n\tconst tempVec2 = new Vector3();\n\tconst tempNorm = new Vector3();\n\tconst tempNorm2 = new Vector3();\n\n\t// hashes a vector\n\tfunction hashVertex( v ) {\n\n\t\tconst x = ~ ~ ( v.x * hashMultiplier );\n\t\tconst y = ~ ~ ( v.y * hashMultiplier );\n\t\tconst z = ~ ~ ( v.z * hashMultiplier );\n\t\treturn `${x},${y},${z}`;\n\n\t}\n\n\t// BufferGeometry.toNonIndexed() warns if the geometry is non-indexed\n\t// and returns the original geometry\n\tconst resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry;\n\tconst posAttr = resultGeometry.attributes.position;\n\tconst vertexMap = {};\n\n\t// find all the normals shared by commonly located vertices\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\t// add the normal to the map for all vertices\n\t\tconst normal = new Vector3().crossVectors( tempVec1, tempVec2 ).normalize();\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tif ( ! ( hash in vertexMap ) ) {\n\n\t\t\t\tvertexMap[ hash ] = [];\n\n\t\t\t}\n\n\t\t\tvertexMap[ hash ].push( normal );\n\n\t\t}\n\n\t}\n\n\t// average normals from all vertices that share a common location if they are within the\n\t// provided crease threshold\n\tconst normalArray = new Float32Array( posAttr.count * 3 );\n\tconst normAttr = new BufferAttribute( normalArray, 3, false );\n\tfor ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) {\n\n\t\t// get the face normal for this vertex\n\t\tconst i3 = 3 * i;\n\t\tconst a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 );\n\t\tconst b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 );\n\t\tconst c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 );\n\n\t\ttempVec1.subVectors( c, b );\n\t\ttempVec2.subVectors( a, b );\n\n\t\ttempNorm.crossVectors( tempVec1, tempVec2 ).normalize();\n\n\t\t// average all normals that meet the threshold and set the normal value\n\t\tfor ( let n = 0; n < 3; n ++ ) {\n\n\t\t\tconst vert = verts[ n ];\n\t\t\tconst hash = hashVertex( vert );\n\t\t\tconst otherNormals = vertexMap[ hash ];\n\t\t\ttempNorm2.set( 0, 0, 0 );\n\n\t\t\tfor ( let k = 0, lk = otherNormals.length; k < lk; k ++ ) {\n\n\t\t\t\tconst otherNorm = otherNormals[ k ];\n\t\t\t\tif ( tempNorm.dot( otherNorm ) > creaseDot ) {\n\n\t\t\t\t\ttempNorm2.add( otherNorm );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttempNorm2.normalize();\n\t\t\tnormAttr.setXYZ( i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z );\n\n\t\t}\n\n\t}\n\n\tresultGeometry.setAttribute( 'normal', normAttr );\n\treturn resultGeometry;\n\n}\n\nexport {\n\tcomputeMikkTSpaceTangents,\n\tmergeGeometries,\n\tmergeAttributes,\n\tinterleaveAttributes,\n\testimateBytesUsed,\n\tmergeVertices,\n\ttoTrianglesDrawMode,\n\tcomputeMorphedAttributes,\n\tmergeGroups,\n\ttoCreasedNormals\n};\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tColorManagement,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInstancedMesh,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLinearSRGBColorSpace,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTexture,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tSRGBColorSpace,\n\tInstancedBufferAttribute\n} from 'three';\nimport { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';\n\nclass GLTFLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ktx2Loader = null;\n\t\tthis.meshoptDecoder = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsDispersionExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureWebPExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureAVIFExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSheenExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsVolumeExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIorExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsEmissiveStrengthExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSpecularExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIridescenceExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsAnisotropyExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsBumpExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFLightsExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshoptCompression( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshGpuInstancing( parser );\n\n\t\t} );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet resourcePath;\n\n\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\tresourcePath = this.resourcePath;\n\n\t\t} else if ( this.path !== '' ) {\n\n\t\t\t// If a base path is set, resources will be relative paths from that plus the relative path of the gltf file\n\t\t\t// Example path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf'\n\t\t\t// resourcePath = 'https://my-cnd-server.com/assets/models/'\n\t\t\t// referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin'\n\t\t\t// referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png'\n\t\t\tconst relativeUrl = LoaderUtils.extractUrlBase( url );\n\t\t\tresourcePath = LoaderUtils.resolveURL( relativeUrl, this.path );\n\n\t\t} else {\n\n\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t}\n\n\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\tthis.manager.itemStart( url );\n\n\t\tconst _onError = function ( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, function ( data ) {\n\n\t\t\ttry {\n\n\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, _onError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\t_onError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, _onError );\n\n\t}\n\n\tsetDRACOLoader( dracoLoader ) {\n\n\t\tthis.dracoLoader = dracoLoader;\n\t\treturn this;\n\n\t}\n\n\tsetDDSLoader() {\n\n\t\tthrow new Error(\n\n\t\t\t'THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".'\n\n\t\t);\n\n\t}\n\n\tsetKTX2Loader( ktx2Loader ) {\n\n\t\tthis.ktx2Loader = ktx2Loader;\n\t\treturn this;\n\n\t}\n\n\tsetMeshoptDecoder( meshoptDecoder ) {\n\n\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\treturn this;\n\n\t}\n\n\tregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tparse( data, path, onLoad, onError ) {\n\n\t\tlet json;\n\t\tconst extensions = {};\n\t\tconst plugins = {};\n\t\tconst textDecoder = new TextDecoder();\n\n\t\tif ( typeof data === 'string' ) {\n\n\t\t\tjson = JSON.parse( data );\n\n\t\t} else if ( data instanceof ArrayBuffer ) {\n\n\t\t\tconst magic = textDecoder.decode( new Uint8Array( data, 0, 4 ) );\n\n\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tjson = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content );\n\n\t\t\t} else {\n\n\t\t\t\tjson = JSON.parse( textDecoder.decode( data ) );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tjson = data;\n\n\t\t}\n\n\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst parser = new GLTFParser( json, {\n\n\t\t\tpath: path || this.resourcePath || '',\n\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\trequestHeader: this.requestHeader,\n\t\t\tmanager: this.manager,\n\t\t\tktx2Loader: this.ktx2Loader,\n\t\t\tmeshoptDecoder: this.meshoptDecoder\n\n\t\t} );\n\n\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\tfor ( let i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\tconst plugin = this.pluginCallbacks[ i ]( parser );\n\n\t\t\tif ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' );\n\n\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t// Remove this workaround if we move all the existing\n\t\t\t// extension handlers to plugin system\n\t\t\textensions[ plugin.name ] = true;\n\n\t\t}\n\n\t\tif ( json.extensionsUsed ) {\n\n\t\t\tfor ( let i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\tconst extensionName = json.extensionsUsed[ i ];\n\t\t\t\tconst extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tparser.setExtensions( extensions );\n\t\tparser.setPlugins( plugins );\n\t\tparser.parse( onLoad, onError );\n\n\t}\n\n\tparseAsync( data, path ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.parse( data, path, resolve, reject );\n\n\t\t} );\n\n\t}\n\n}\n\n/* GLTFREGISTRY */\n\nfunction GLTFRegistry() {\n\n\tlet objects = {};\n\n\treturn\t{\n\n\t\tget: function ( key ) {\n\n\t\t\treturn objects[ key ];\n\n\t\t},\n\n\t\tadd: function ( key, object ) {\n\n\t\t\tobjects[ key ] = object;\n\n\t\t},\n\n\t\tremove: function ( key ) {\n\n\t\t\tdelete objects[ key ];\n\n\t\t},\n\n\t\tremoveAll: function () {\n\n\t\t\tobjects = {};\n\n\t\t}\n\n\t};\n\n}\n\n/*********************************/\n/********** EXTENSIONS ***********/\n/*********************************/\n\nconst EXTENSIONS = {\n\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\tKHR_MATERIALS_DISPERSION: 'KHR_materials_dispersion',\n\tKHR_MATERIALS_IOR: 'KHR_materials_ior',\n\tKHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n\tKHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\tKHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',\n\tKHR_MATERIALS_ANISOTROPY: 'KHR_materials_anisotropy',\n\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\tKHR_MATERIALS_VOLUME: 'KHR_materials_volume',\n\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\tKHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',\n\tEXT_MATERIALS_BUMP: 'EXT_materials_bump',\n\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\tEXT_TEXTURE_AVIF: 'EXT_texture_avif',\n\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\n\tEXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing'\n};\n\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightsExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\t// Object3D instance caches\n\t\tthis.cache = { refs: {}, uses: {} };\n\n\t}\n\n\t_markDefs() {\n\n\t\tconst parser = this.parser;\n\t\tconst nodeDefs = this.parser.json.nodes || [];\n\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t\t&& nodeDef.extensions[ this.name ]\n\t\t\t\t\t&& nodeDef.extensions[ this.name ].light !== undefined ) {\n\n\t\t\t\tparser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_loadLight( lightIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst cacheKey = 'light:' + lightIndex;\n\t\tlet dependency = parser.cache.get( cacheKey );\n\n\t\tif ( dependency ) return dependency;\n\n\t\tconst json = parser.json;\n\t\tconst extensions = ( json.extensions && json.extensions[ this.name ] ) || {};\n\t\tconst lightDefs = extensions.lights || [];\n\t\tconst lightDef = lightDefs[ lightIndex ];\n\t\tlet lightNode;\n\n\t\tconst color = new Color( 0xffffff );\n\n\t\tif ( lightDef.color !== undefined ) color.setRGB( lightDef.color[ 0 ], lightDef.color[ 1 ], lightDef.color[ 2 ], LinearSRGBColorSpace );\n\n\t\tconst range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tassignExtrasToUserData( lightNode, lightDef );\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) );\n\n\t\tdependency = Promise.resolve( lightNode );\n\n\t\tparser.cache.add( cacheKey, dependency );\n\n\t\treturn dependency;\n\n\t}\n\n\tgetDependency( type, index ) {\n\n\t\tif ( type !== 'light' ) return;\n\n\t\treturn this._loadLight( index );\n\n\t}\n\n\tcreateNodeAttachment( nodeIndex ) {\n\n\t\tconst self = this;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\t\tconst lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {};\n\t\tconst lightIndex = lightDef.light;\n\n\t\tif ( lightIndex === undefined ) return null;\n\n\t\treturn this._loadLight( lightIndex ).then( function ( light ) {\n\n\t\t\treturn parser._getNodeRef( self.cache, lightIndex, light );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn MeshBasicMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Emissive Strength Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md\n */\nclass GLTFMaterialsEmissiveStrengthExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength;\n\n\t\tif ( emissiveStrength !== undefined ) {\n\n\t\t\tmaterialParams.emissiveIntensity = emissiveStrength;\n\n\t\t}\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials dispersion Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion\n */\nclass GLTFMaterialsDispersionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_DISPERSION;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.dispersion = extension.dispersion !== undefined ? extension.dispersion : 0;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\nclass GLTFMaterialsIridescenceExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.iridescenceFactor !== undefined ) {\n\n\t\t\tmaterialParams.iridescence = extension.iridescenceFactor;\n\n\t\t}\n\n\t\tif ( extension.iridescenceTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) );\n\n\t\t}\n\n\t\tif ( extension.iridescenceIor !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceIOR = extension.iridescenceIor;\n\n\t\t}\n\n\t\tif ( materialParams.iridescenceThicknessRange === undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMinimum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMaximum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\nclass GLTFMaterialsSheenExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.sheenColor = new Color( 0, 0, 0 );\n\t\tmaterialParams.sheenRoughness = 0;\n\t\tmaterialParams.sheen = 1;\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.sheenColorFactor !== undefined ) {\n\n\t\t\tconst colorFactor = extension.sheenColorFactor;\n\t\t\tmaterialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenRoughness = extension.sheenRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.sheenColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\nclass GLTFMaterialsTransmissionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n\n\t\tif ( extension.thicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) );\n\n\t\t}\n\n\t\tmaterialParams.attenuationDistance = extension.attenuationDistance || Infinity;\n\n\t\tconst colorArray = extension.attenuationColor || [ 1, 1, 1 ];\n\t\tmaterialParams.attenuationColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\nclass GLTFMaterialsIorExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IOR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\nclass GLTFMaterialsSpecularExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n\n\t\tif ( extension.specularTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) );\n\n\t\t}\n\n\t\tconst colorArray = extension.specularColorFactor || [ 1, 1, 1 ];\n\t\tmaterialParams.specularColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace );\n\n\t\tif ( extension.specularColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n\n/**\n * Materials bump Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump\n */\nclass GLTFMaterialsBumpExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_MATERIALS_BUMP;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.bumpScale = extension.bumpFactor !== undefined ? extension.bumpFactor : 1.0;\n\n\t\tif ( extension.bumpTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'bumpMap', extension.bumpTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials anisotropy Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy\n */\nclass GLTFMaterialsAnisotropyExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.anisotropyStrength !== undefined ) {\n\n\t\t\tmaterialParams.anisotropy = extension.anisotropyStrength;\n\n\t\t}\n\n\t\tif ( extension.anisotropyRotation !== undefined ) {\n\n\t\t\tmaterialParams.anisotropyRotation = extension.anisotropyRotation;\n\n\t\t}\n\n\t\tif ( extension.anisotropyTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'anisotropyMap', extension.anisotropyTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\nclass GLTFTextureBasisUExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ this.name ];\n\t\tconst loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t\t} else {\n\n\t\t\t\t// Assumes that the extension is optional and that a fallback texture is present\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t}\n\n}\n\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\nclass GLTFTextureWebPExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst name = this.name;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ name ];\n\t\tconst source = json.images[ extension.source ];\n\n\t\tlet loader = parser.textureLoader;\n\t\tif ( source.uri ) {\n\n\t\t\tconst handler = parser.options.manager.getHandler( source.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t}\n\n\tdetectSupport() {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tconst image = new Image();\n\n\t\t\t\t// Lossy test image. Support for lossy images doesn't guarantee support for all\n\t\t\t\t// WebP images, unfortunately.\n\t\t\t\timage.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t}\n\n}\n\n/**\n * AVIF Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif\n */\nclass GLTFTextureAVIFExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_AVIF;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst name = this.name;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ name ];\n\t\tconst source = json.images[ extension.source ];\n\n\t\tlet loader = parser.textureLoader;\n\t\tif ( source.uri ) {\n\n\t\t\tconst handler = parser.options.manager.getHandler( source.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t}\n\n\tdetectSupport() {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tconst image = new Image();\n\n\t\t\t\t// Lossy test image.\n\t\t\t\timage.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t}\n\n}\n\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\nclass GLTFMeshoptCompression {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n\t\tthis.parser = parser;\n\n\t}\n\n\tloadBufferView( index ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst bufferView = json.bufferViews[ index ];\n\n\t\tif ( bufferView.extensions && bufferView.extensions[ this.name ] ) {\n\n\t\t\tconst extensionDef = bufferView.extensions[ this.name ];\n\n\t\t\tconst buffer = this.parser.getDependency( 'buffer', extensionDef.buffer );\n\t\t\tconst decoder = this.parser.options.meshoptDecoder;\n\n\t\t\tif ( ! decoder || ! decoder.supported ) {\n\n\t\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Assumes that the extension is optional and that fallback buffer data is present\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn buffer.then( function ( res ) {\n\n\t\t\t\tconst byteOffset = extensionDef.byteOffset || 0;\n\t\t\t\tconst byteLength = extensionDef.byteLength || 0;\n\n\t\t\t\tconst count = extensionDef.count;\n\t\t\t\tconst stride = extensionDef.byteStride;\n\n\t\t\t\tconst source = new Uint8Array( res, byteOffset, byteLength );\n\n\t\t\t\tif ( decoder.decodeGltfBufferAsync ) {\n\n\t\t\t\t\treturn decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) {\n\n\t\t\t\t\t\treturn res.buffer;\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync\n\t\t\t\t\treturn decoder.ready.then( function () {\n\n\t\t\t\t\t\tconst result = new ArrayBuffer( count * stride );\n\t\t\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\t\t\treturn result;\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * GPU Instancing Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing\n *\n */\nclass GLTFMeshGpuInstancing {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n\t\tthis.parser = parser;\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] ||\n\t\t\tnodeDef.mesh === undefined ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst meshDef = json.meshes[ nodeDef.mesh ];\n\n\t\t// No Points or Lines + Instancing support yet\n\n\t\tfor ( const primitive of meshDef.primitives ) {\n\n\t\t\tif ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP &&\n\t\t\t\t primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN &&\n\t\t\t\t primitive.mode !== undefined ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst extensionDef = nodeDef.extensions[ this.name ];\n\t\tconst attributesDef = extensionDef.attributes;\n\n\t\t// @TODO: Can we support InstancedMesh + SkinnedMesh?\n\n\t\tconst pending = [];\n\t\tconst attributes = {};\n\n\t\tfor ( const key in attributesDef ) {\n\n\t\t\tpending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => {\n\n\t\t\t\tattributes[ key ] = accessor;\n\t\t\t\treturn attributes[ key ];\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tif ( pending.length < 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tpending.push( this.parser.createNodeMesh( nodeIndex ) );\n\n\t\treturn Promise.all( pending ).then( results => {\n\n\t\t\tconst nodeObject = results.pop();\n\t\t\tconst meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ];\n\t\t\tconst count = results[ 0 ].count; // All attribute counts should be same\n\t\t\tconst instancedMeshes = [];\n\n\t\t\tfor ( const mesh of meshes ) {\n\n\t\t\t\t// Temporal variables\n\t\t\t\tconst m = new Matrix4();\n\t\t\t\tconst p = new Vector3();\n\t\t\t\tconst q = new Quaternion();\n\t\t\t\tconst s = new Vector3( 1, 1, 1 );\n\n\t\t\t\tconst instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count );\n\n\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\tif ( attributes.TRANSLATION ) {\n\n\t\t\t\t\t\tp.fromBufferAttribute( attributes.TRANSLATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.ROTATION ) {\n\n\t\t\t\t\t\tq.fromBufferAttribute( attributes.ROTATION, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attributes.SCALE ) {\n\n\t\t\t\t\t\ts.fromBufferAttribute( attributes.SCALE, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tinstancedMesh.setMatrixAt( i, m.compose( p, q, s ) );\n\n\t\t\t\t}\n\n\t\t\t\t// Add instance attributes to the geometry, excluding TRS.\n\t\t\t\tfor ( const attributeName in attributes ) {\n\n\t\t\t\t\tif ( attributeName === '_COLOR_0' ) {\n\n\t\t\t\t\t\tconst attr = attributes[ attributeName ];\n\t\t\t\t\t\tinstancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized );\n\n\t\t\t\t\t} else if ( attributeName !== 'TRANSLATION' &&\n\t\t\t\t\t\t attributeName !== 'ROTATION' &&\n\t\t\t\t\t\t attributeName !== 'SCALE' ) {\n\n\t\t\t\t\t\tmesh.geometry.setAttribute( attributeName, attributes[ attributeName ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// Just in case\n\t\t\t\tObject3D.prototype.copy.call( instancedMesh, mesh );\n\n\t\t\t\tthis.parser.assignFinalMaterial( instancedMesh );\n\n\t\t\t\tinstancedMeshes.push( instancedMesh );\n\n\t\t\t}\n\n\t\t\tif ( nodeObject.isGroup ) {\n\n\t\t\t\tnodeObject.clear();\n\n\t\t\t\tnodeObject.add( ... instancedMeshes );\n\n\t\t\t\treturn nodeObject;\n\n\t\t\t}\n\n\t\t\treturn instancedMeshes[ 0 ];\n\n\t\t} );\n\n\t}\n\n}\n\n/* BINARY EXTENSION */\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\nclass GLTFBinaryExtension {\n\n\tconstructor( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tconst headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tconst textDecoder = new TextDecoder();\n\n\t\tthis.header = {\n\t\t\tmagic: textDecoder.decode( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tconst chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n\t\tconst chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tlet chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkContentsLength ) {\n\n\t\t\tconst chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tconst chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tconst contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = textDecoder.decode( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tconst byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\nclass GLTFDracoMeshCompressionExtension {\n\n\tconstructor( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tdecodePrimitive( primitive, parser ) {\n\n\t\tconst json = this.json;\n\t\tconst dracoLoader = this.dracoLoader;\n\t\tconst bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tconst gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tconst threeAttributeMap = {};\n\t\tconst attributeNormalizedMap = {};\n\t\tconst attributeTypeMap = {};\n\n\t\tfor ( const attributeName in gltfAttributeMap ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( const attributeName in primitive.attributes ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tconst accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tconst componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType.name;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( const attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tconst attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tconst normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\nclass GLTFTextureTransformExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\textendTexture( texture, transform ) {\n\n\t\tif ( ( transform.texCoord === undefined || transform.texCoord === texture.channel )\n\t\t\t&& transform.offset === undefined\n\t\t\t&& transform.rotation === undefined\n\t\t\t&& transform.scale === undefined ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21819.\n\t\t\treturn texture;\n\n\t\t}\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\ttexture.channel = transform.texCoord;\n\n\t\t}\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\nclass GLTFMeshQuantizationExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n}\n\n/*********************************/\n/********** INTERPOLATION ********/\n/*********************************/\n\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\nclass GLTFCubicSplineInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( let i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer;\n\t\tconst values = this.sampleValues;\n\t\tconst stride = this.valueSize;\n\n\t\tconst stride2 = stride * 2;\n\t\tconst stride3 = stride * 3;\n\n\t\tconst td = t1 - t0;\n\n\t\tconst p = ( t - t0 ) / td;\n\t\tconst pp = p * p;\n\t\tconst ppp = pp * p;\n\n\t\tconst offset1 = i1 * stride3;\n\t\tconst offset0 = offset1 - stride3;\n\n\t\tconst s2 = - 2 * ppp + 3 * pp;\n\t\tconst s3 = ppp - pp;\n\t\tconst s0 = 1 - s2;\n\t\tconst s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( let i = 0; i !== stride; i ++ ) {\n\n\t\t\tconst p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tconst m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tconst p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tconst m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nconst _q = new Quaternion();\n\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = super.interpolate_( i1, t0, t, t1 );\n\n\t\t_q.fromArray( result ).normalize().toArray( result );\n\n\t\treturn result;\n\n\t}\n\n}\n\n\n/*********************************/\n/********** INTERNALS ************/\n/*********************************/\n\n/* CONSTANTS */\n\nconst WEBGL_CONSTANTS = {\n\tFLOAT: 5126,\n\t//FLOAT_MAT2: 35674,\n\tFLOAT_MAT3: 35675,\n\tFLOAT_MAT4: 35676,\n\tFLOAT_VEC2: 35664,\n\tFLOAT_VEC3: 35665,\n\tFLOAT_VEC4: 35666,\n\tLINEAR: 9729,\n\tREPEAT: 10497,\n\tSAMPLER_2D: 35678,\n\tPOINTS: 0,\n\tLINES: 1,\n\tLINE_LOOP: 2,\n\tLINE_STRIP: 3,\n\tTRIANGLES: 4,\n\tTRIANGLE_STRIP: 5,\n\tTRIANGLE_FAN: 6,\n\tUNSIGNED_BYTE: 5121,\n\tUNSIGNED_SHORT: 5123\n};\n\nconst WEBGL_COMPONENT_TYPES = {\n\t5120: Int8Array,\n\t5121: Uint8Array,\n\t5122: Int16Array,\n\t5123: Uint16Array,\n\t5125: Uint32Array,\n\t5126: Float32Array\n};\n\nconst WEBGL_FILTERS = {\n\t9728: NearestFilter,\n\t9729: LinearFilter,\n\t9984: NearestMipmapNearestFilter,\n\t9985: LinearMipmapNearestFilter,\n\t9986: NearestMipmapLinearFilter,\n\t9987: LinearMipmapLinearFilter\n};\n\nconst WEBGL_WRAPPINGS = {\n\t33071: ClampToEdgeWrapping,\n\t33648: MirroredRepeatWrapping,\n\t10497: RepeatWrapping\n};\n\nconst WEBGL_TYPE_SIZES = {\n\t'SCALAR': 1,\n\t'VEC2': 2,\n\t'VEC3': 3,\n\t'VEC4': 4,\n\t'MAT2': 4,\n\t'MAT3': 9,\n\t'MAT4': 16\n};\n\nconst ATTRIBUTES = {\n\tPOSITION: 'position',\n\tNORMAL: 'normal',\n\tTANGENT: 'tangent',\n\tTEXCOORD_0: 'uv',\n\tTEXCOORD_1: 'uv1',\n\tTEXCOORD_2: 'uv2',\n\tTEXCOORD_3: 'uv3',\n\tCOLOR_0: 'color',\n\tWEIGHTS_0: 'skinWeight',\n\tJOINTS_0: 'skinIndex',\n};\n\nconst PATH_PROPERTIES = {\n\tscale: 'scale',\n\ttranslation: 'position',\n\trotation: 'quaternion',\n\tweights: 'morphTargetInfluences'\n};\n\nconst INTERPOLATION = {\n\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\n\tLINEAR: InterpolateLinear,\n\tSTEP: InterpolateDiscrete\n};\n\nconst ALPHA_MODES = {\n\tOPAQUE: 'OPAQUE',\n\tMASK: 'MASK',\n\tBLEND: 'BLEND'\n};\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\nfunction createDefaultMaterial( cache ) {\n\n\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\tcolor: 0xFFFFFF,\n\t\t\temissive: 0x000000,\n\t\t\tmetalness: 1,\n\t\t\troughness: 1,\n\t\t\ttransparent: false,\n\t\t\tdepthTest: true,\n\t\t\tside: FrontSide\n\t\t} );\n\n\t}\n\n\treturn cache[ 'DefaultMaterial' ];\n\n}\n\nfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t// Add unknown glTF extensions to an object's userData.\n\n\tfor ( const name in objectDef.extensions ) {\n\n\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\nfunction assignExtrasToUserData( object, gltfDef ) {\n\n\tif ( gltfDef.extras !== undefined ) {\n\n\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array<GLTF.Target>} targets\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\n */\nfunction addMorphTargets( geometry, targets, parser ) {\n\n\tlet hasMorphPosition = false;\n\tlet hasMorphNormal = false;\n\tlet hasMorphColor = false;\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\t\tif ( target.COLOR_0 !== undefined ) hasMorphColor = true;\n\n\t\tif ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break;\n\n\t}\n\n\tif ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry );\n\n\tconst pendingPositionAccessors = [];\n\tconst pendingNormalAccessors = [];\n\tconst pendingColorAccessors = [];\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( hasMorphPosition ) {\n\n\t\t\tconst pendingAccessor = target.POSITION !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t: geometry.attributes.position;\n\n\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphNormal ) {\n\n\t\t\tconst pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t: geometry.attributes.normal;\n\n\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphColor ) {\n\n\t\t\tconst pendingAccessor = target.COLOR_0 !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.COLOR_0 )\n\t\t\t\t: geometry.attributes.color;\n\n\t\t\tpendingColorAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t}\n\n\treturn Promise.all( [\n\t\tPromise.all( pendingPositionAccessors ),\n\t\tPromise.all( pendingNormalAccessors ),\n\t\tPromise.all( pendingColorAccessors )\n\t] ).then( function ( accessors ) {\n\n\t\tconst morphPositions = accessors[ 0 ];\n\t\tconst morphNormals = accessors[ 1 ];\n\t\tconst morphColors = accessors[ 2 ];\n\n\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\tif ( hasMorphColor ) geometry.morphAttributes.color = morphColors;\n\t\tgeometry.morphTargetsRelative = true;\n\n\t\treturn geometry;\n\n\t} );\n\n}\n\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\nfunction updateMorphTargets( mesh, meshDef ) {\n\n\tmesh.updateMorphTargets();\n\n\tif ( meshDef.weights !== undefined ) {\n\n\t\tfor ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t}\n\n\t}\n\n\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\tconst targetNames = meshDef.extras.targetNames;\n\n\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\tfor ( let i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t}\n\n\t}\n\n}\n\nfunction createPrimitiveKey( primitiveDef ) {\n\n\tlet geometryKey;\n\n\tconst dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\n\tif ( dracoExtension ) {\n\n\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t} else {\n\n\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t}\n\n\tif ( primitiveDef.targets !== undefined ) {\n\n\t\tfor ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) {\n\n\t\t\tgeometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] );\n\n\t\t}\n\n\t}\n\n\treturn geometryKey;\n\n}\n\nfunction createAttributesKey( attributes ) {\n\n\tlet attributesKey = '';\n\n\tconst keys = Object.keys( attributes ).sort();\n\n\tfor ( let i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t}\n\n\treturn attributesKey;\n\n}\n\nfunction getNormalizedComponentScale( constructor ) {\n\n\t// Reference:\n\t// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n\n\tswitch ( constructor ) {\n\n\t\tcase Int8Array:\n\t\t\treturn 1 / 127;\n\n\t\tcase Uint8Array:\n\t\t\treturn 1 / 255;\n\n\t\tcase Int16Array:\n\t\t\treturn 1 / 32767;\n\n\t\tcase Uint16Array:\n\t\t\treturn 1 / 65535;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' );\n\n\t}\n\n}\n\nfunction getImageURIMimeType( uri ) {\n\n\tif ( uri.search( /\\.jpe?g($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/jpeg/ ) === 0 ) return 'image/jpeg';\n\tif ( uri.search( /\\.webp($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/webp/ ) === 0 ) return 'image/webp';\n\n\treturn 'image/png';\n\n}\n\nconst _identityMatrix = new Matrix4();\n\n/* GLTF PARSER */\n\nclass GLTFParser {\n\n\tconstructor( json = {}, options = {} ) {\n\n\t\tthis.json = json;\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options;\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Node cache\n\t\tthis.nodeCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\tthis.sourceCache = {};\n\t\tthis.textureCache = {};\n\n\t\t// Track node names, to ensure no duplicates\n\t\tthis.nodeNamesUsed = {};\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\n\t\tlet isSafari = false;\n\t\tlet isFirefox = false;\n\t\tlet firefoxVersion = - 1;\n\n\t\tif ( typeof navigator !== 'undefined' ) {\n\n\t\t\tisSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true;\n\t\t\tisFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1;\n\t\t\tfirefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\\/([0-9]+)\\./ )[ 1 ] : - 1;\n\n\t\t}\n\n\t\tif ( typeof createImageBitmap === 'undefined' || isSafari || ( isFirefox && firefoxVersion < 98 ) ) {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\t\tthis.textureLoader.setRequestHeader( this.options.requestHeader );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tsetExtensions( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t}\n\n\tsetPlugins( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t}\n\n\tparse( onLoad, onError ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\t\tthis.nodeCache = {};\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\treturn ext._markDefs && ext._markDefs();\n\n\t\t} );\n\n\t\tPromise.all( this._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.beforeRoot && ext.beforeRoot();\n\n\t\t} ) ).then( function () {\n\n\t\t\treturn Promise.all( [\n\n\t\t\t\tparser.getDependencies( 'scene' ),\n\t\t\t\tparser.getDependencies( 'animation' ),\n\t\t\t\tparser.getDependencies( 'camera' ),\n\n\t\t\t] );\n\n\t\t} ).then( function ( dependencies ) {\n\n\t\t\tconst result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\treturn Promise.all( parser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.afterRoot && ext.afterRoot( result );\n\n\t\t\t} ) ).then( function () {\n\n\t\t\t\tfor ( const scene of result.scenes ) {\n\n\t\t\t\t\tscene.updateMatrixWorld();\n\n\t\t\t\t}\n\n\t\t\t\tonLoad( result );\n\n\t\t\t} );\n\n\t\t} ).catch( onError );\n\n\t}\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\t_markDefs() {\n\n\t\tconst nodeDefs = this.json.nodes || [];\n\t\tconst skinDefs = this.json.skins || [];\n\t\tconst meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tconst joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( let i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\t_addNodeRef( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t}\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\t_getNodeRef( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tconst ref = object.clone();\n\n\t\t// Propagates mappings to the cloned object, prevents mappings on the\n\t\t// original object from being lost.\n\t\tconst updateMappings = ( original, clone ) => {\n\n\t\t\tconst mappings = this.associations.get( original );\n\t\t\tif ( mappings != null ) {\n\n\t\t\t\tthis.associations.set( clone, mappings );\n\n\t\t\t}\n\n\t\t\tfor ( const [ i, child ] of original.children.entries() ) {\n\n\t\t\t\tupdateMappings( child, clone.children[ i ] );\n\n\t\t\t}\n\n\t\t};\n\n\t\tupdateMappings( object, ref );\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t}\n\n\t_invokeOne( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t_invokeAll( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) pending.push( result );\n\n\t\t}\n\n\t\treturn pending;\n\n\t}\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}\n\t */\n\tgetDependency( type, index ) {\n\n\t\tconst cacheKey = type + ':' + index;\n\t\tlet dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadNode && ext.loadNode( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadAnimation && ext.loadAnimation( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext != this && ext.getDependency && ext.getDependency( type, index );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( ! dependency ) {\n\n\t\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t}\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise<Array<Object>>}\n\t */\n\tgetDependencies( type ) {\n\n\t\tlet dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tconst parser = this;\n\t\t\tconst defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tloadBuffer( bufferIndex ) {\n\n\t\tconst bufferDef = this.json.buffers[ bufferIndex ];\n\t\tconst loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tconst options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tloadBufferView( bufferViewIndex ) {\n\n\t\tconst bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tconst byteLength = bufferViewDef.byteLength || 0;\n\t\t\tconst byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\n\t */\n\tloadAccessor( accessorIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\t\t\tconst normalized = accessorDef.normalized === true;\n\n\t\t\tconst array = new TypedArray( accessorDef.count * itemSize );\n\t\t\treturn Promise.resolve( new BufferAttribute( array, itemSize, normalized ) );\n\n\t\t}\n\n\t\tconst pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tconst bufferView = bufferViews[ 0 ];\n\n\t\t\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tconst elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tconst itemBytes = elementBytes * itemSize;\n\t\t\tconst byteOffset = accessorDef.byteOffset || 0;\n\t\t\tconst byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tconst normalized = accessorDef.normalized === true;\n\t\t\tlet array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tconst ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tconst ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tlet ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tconst itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tconst TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tconst byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tconst byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tconst sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tconst sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise<THREE.Texture|null>}\n\t */\n\tloadTexture( textureIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceIndex = textureDef.source;\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tlet loader = this.textureLoader;\n\n\t\tif ( sourceDef.uri ) {\n\n\t\t\tconst handler = options.manager.getHandler( sourceDef.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, sourceIndex, loader );\n\n\t}\n\n\tloadTextureImage( textureIndex, sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler;\n\n\t\tif ( this.textureCache[ cacheKey ] ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21559.\n\t\t\treturn this.textureCache[ cacheKey ];\n\n\t\t}\n\n\t\tconst promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) {\n\n\t\t\ttexture.flipY = false;\n\n\t\t\ttexture.name = textureDef.name || sourceDef.name || '';\n\n\t\t\tif ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) {\n\n\t\t\t\ttexture.name = sourceDef.uri;\n\n\t\t\t}\n\n\t\t\tconst samplers = json.samplers || {};\n\t\t\tconst sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, { textures: textureIndex } );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function () {\n\n\t\t\treturn null;\n\n\t\t} );\n\n\t\tthis.textureCache[ cacheKey ] = promise;\n\n\t\treturn promise;\n\n\t}\n\n\tloadImageSource( sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\n\t\tif ( this.sourceCache[ sourceIndex ] !== undefined ) {\n\n\t\t\treturn this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() );\n\n\t\t}\n\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst URL = self.URL || self.webkitURL;\n\n\t\tlet sourceURI = sourceDef.uri || '';\n\t\tlet isObjectURL = false;\n\n\t\tif ( sourceDef.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tconst blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t} else if ( sourceDef.uri === undefined ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' );\n\n\t\t}\n\n\t\tconst promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tlet onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tconst texture = new Texture( imageBitmap );\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tresolve( texture );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function ( error ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader: Couldn\\'t load texture', sourceURI );\n\t\t\tthrow error;\n\n\t\t} );\n\n\t\tthis.sourceCache[ sourceIndex ] = promise;\n\t\treturn promise;\n\n\t}\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise<Texture>}\n\t */\n\tassignTexture( materialParams, mapName, mapDef, colorSpace ) {\n\n\t\tconst parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\tif ( ! texture ) return null;\n\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) {\n\n\t\t\t\ttexture = texture.clone();\n\t\t\t\ttexture.channel = mapDef.texCoord;\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tconst transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tconst gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = colorSpace;\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accommodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tassignFinalMaterial( mesh ) {\n\n\t\tconst geometry = mesh.geometry;\n\t\tlet material = mesh.material;\n\n\t\tconst useDerivativeTangents = geometry.attributes.tangent === undefined;\n\t\tconst useVertexColors = geometry.attributes.color !== undefined;\n\t\tconst useFlatShading = geometry.attributes.normal === undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tconst cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tlet pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tconst cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tlet lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\t\t\t\tlineMaterial.map = material.map;\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useDerivativeTangents || useVertexColors || useFlatShading ) {\n\n\t\t\tlet cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( useDerivativeTangents ) cacheKey += 'derivative-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\n\t\t\tlet cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\n\t\t\t\tif ( useDerivativeTangents ) {\n\n\t\t\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\t\tif ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1;\n\t\t\t\t\tif ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1;\n\n\t\t\t\t}\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t}\n\n\tgetMaterialType( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise<Material>}\n\t */\n\tloadMaterial( materialIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst materialDef = json.materials[ materialIndex ];\n\n\t\tlet materialType;\n\t\tconst materialParams = {};\n\t\tconst materialExtensions = materialDef.extensions || {};\n\n\t\tconst pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tconst kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( Promise.all( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tconst alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = materialDef.normalTexture.scale;\n\n\t\t\t\tmaterialParams.normalScale.set( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tconst emissiveFactor = materialDef.emissiveFactor;\n\t\t\tmaterialParams.emissive = new Color().setRGB( emissiveFactor[ 0 ], emissiveFactor[ 1 ], emissiveFactor[ 2 ], LinearSRGBColorSpace );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, SRGBColorSpace ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tconst material = new materialType( materialParams );\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { materials: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t}\n\n\t/** When Object3D instances are targeted by animation, they need unique names. */\n\tcreateUniqueName( originalName ) {\n\n\t\tconst sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );\n\n\t\tif ( sanitizedName in this.nodeNamesUsed ) {\n\n\t\t\treturn sanitizedName + '_' + ( ++ this.nodeNamesUsed[ sanitizedName ] );\n\n\t\t} else {\n\n\t\t\tthis.nodeNamesUsed[ sanitizedName ] = 0;\n\n\t\t\treturn sanitizedName;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array<GLTF.Primitive>} primitives\n\t * @return {Promise<Array<BufferGeometry>>}\n\t */\n\tloadGeometries( primitives ) {\n\n\t\tconst parser = this;\n\t\tconst extensions = this.extensions;\n\t\tconst cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst primitive = primitives[ i ];\n\t\t\tconst cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tconst cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tlet geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise<Group|Mesh|SkinnedMesh>}\n\t */\n\tloadMesh( meshIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\tconst meshDef = json.meshes[ meshIndex ];\n\t\tconst primitives = meshDef.primitives;\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst materials = results.slice( 0, results.length - 1 );\n\t\t\tconst geometries = results[ results.length - 1 ];\n\n\t\t\tconst meshes = [];\n\n\t\t\tfor ( let i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tconst geometry = geometries[ i ];\n\t\t\t\tconst primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tlet mesh;\n\n\t\t\t\tconst material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true ) {\n\n\t\t\t\t\t\t// normalize skin weights to fix malformed assets (see #15319)\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) );\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tif ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tparser.associations.set( meshes[ i ], {\n\t\t\t\t\tmeshes: meshIndex,\n\t\t\t\t\tprimitives: i\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, meshes[ 0 ], meshDef );\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tconst group = new Group();\n\n\t\t\tif ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, group, meshDef );\n\n\t\t\tparser.associations.set( group, { meshes: meshIndex } );\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise<THREE.Camera>}\n\t */\n\tloadCamera( cameraIndex ) {\n\n\t\tlet camera;\n\t\tconst cameraDef = this.json.cameras[ cameraIndex ];\n\t\tconst params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name );\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise<Skeleton>}\n\t */\n\tloadSkin( skinIndex ) {\n\n\t\tconst skinDef = this.json.skins[ skinIndex ];\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) {\n\n\t\t\tpending.push( this._loadNodeShallow( skinDef.joints[ i ] ) );\n\n\t\t}\n\n\t\tif ( skinDef.inverseBindMatrices !== undefined ) {\n\n\t\t\tpending.push( this.getDependency( 'accessor', skinDef.inverseBindMatrices ) );\n\n\t\t} else {\n\n\t\t\tpending.push( null );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst inverseBindMatrices = results.pop();\n\t\t\tconst jointNodes = results;\n\n\t\t\t// Note that bones (joint nodes) may or may not be in the\n\t\t\t// scene graph at this time.\n\n\t\t\tconst bones = [];\n\t\t\tconst boneInverses = [];\n\n\t\t\tfor ( let i = 0, il = jointNodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst jointNode = jointNodes[ i ];\n\n\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\tconst mat = new Matrix4();\n\n\t\t\t\t\tif ( inverseBindMatrices !== null ) {\n\n\t\t\t\t\t\tmat.fromArray( inverseBindMatrices.array, i * 16 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinDef.joints[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new Skeleton( bones, boneInverses );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise<AnimationClip>}\n\t */\n\tloadAnimation( animationIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\n\t\tconst animationDef = json.animations[ animationIndex ];\n\t\tconst animationName = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\tconst pendingNodes = [];\n\t\tconst pendingInputAccessors = [];\n\t\tconst pendingOutputAccessors = [];\n\t\tconst pendingSamplers = [];\n\t\tconst pendingTargets = [];\n\n\t\tfor ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tconst channel = animationDef.channels[ i ];\n\t\t\tconst sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tconst target = channel.target;\n\t\t\tconst name = target.node;\n\t\t\tconst input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tconst output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tif ( target.node === undefined ) continue;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tconst nodes = dependencies[ 0 ];\n\t\t\tconst inputAccessors = dependencies[ 1 ];\n\t\t\tconst outputAccessors = dependencies[ 2 ];\n\t\t\tconst samplers = dependencies[ 3 ];\n\t\t\tconst targets = dependencies[ 4 ];\n\n\t\t\tconst tracks = [];\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst node = nodes[ i ];\n\t\t\t\tconst inputAccessor = inputAccessors[ i ];\n\t\t\t\tconst outputAccessor = outputAccessors[ i ];\n\t\t\t\tconst sampler = samplers[ i ];\n\t\t\t\tconst target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tif ( node.updateMatrix ) {\n\n\t\t\t\t\tnode.updateMatrix();\n\n\t\t\t\t}\n\n\t\t\t\tconst createdTracks = parser._createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target );\n\n\t\t\t\tif ( createdTracks ) {\n\n\t\t\t\t\tfor ( let k = 0; k < createdTracks.length; k ++ ) {\n\n\t\t\t\t\t\ttracks.push( createdTracks[ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new AnimationClip( animationName, undefined, tracks );\n\n\t\t} );\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( nodeDef.mesh === undefined ) return null;\n\n\t\treturn parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\tconst node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\tfor ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise<Object3D>}\n\t */\n\tloadNode( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tconst nodePending = parser._loadNodeShallow( nodeIndex );\n\n\t\tconst childPending = [];\n\t\tconst childrenDef = nodeDef.children || [];\n\n\t\tfor ( let i = 0, il = childrenDef.length; i < il; i ++ ) {\n\n\t\t\tchildPending.push( parser.getDependency( 'node', childrenDef[ i ] ) );\n\n\t\t}\n\n\t\tconst skeletonPending = nodeDef.skin === undefined\n\t\t\t? Promise.resolve( null )\n\t\t\t: parser.getDependency( 'skin', nodeDef.skin );\n\n\t\treturn Promise.all( [\n\t\t\tnodePending,\n\t\t\tPromise.all( childPending ),\n\t\t\tskeletonPending\n\t\t] ).then( function ( results ) {\n\n\t\t\tconst node = results[ 0 ];\n\t\t\tconst children = results[ 1 ];\n\t\t\tconst skeleton = results[ 2 ];\n\n\t\t\tif ( skeleton !== null ) {\n\n\t\t\t\t// This full traverse should be fine because\n\t\t\t\t// child glTF nodes have not been added to this node yet.\n\t\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\t\tif ( ! mesh.isSkinnedMesh ) return;\n\n\t\t\t\t\tmesh.bind( skeleton, _identityMatrix );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\tnode.add( children[ i ] );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t// ._loadNodeShallow() parses a single node.\n\t// skin and child nodes are created and added in .loadNode() (no '_' prefix).\n\t_loadNodeShallow( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst parser = this;\n\n\t\t// This method is called from .loadNode() and .loadSkin().\n\t\t// Cache a node to avoid duplication.\n\n\t\tif ( this.nodeCache[ nodeIndex ] !== undefined ) {\n\n\t\t\treturn this.nodeCache[ nodeIndex ];\n\n\t\t}\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\t// reserve node's name before its dependencies, so the root has the intended name.\n\t\tconst nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';\n\n\t\tconst pending = [];\n\n\t\tconst meshPromise = parser._invokeOne( function ( ext ) {\n\n\t\t\treturn ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n\t\t} );\n\n\t\tif ( meshPromise ) {\n\n\t\t\tpending.push( meshPromise );\n\n\t\t}\n\n\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t} ) );\n\n\t\t}\n\n\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t} ).forEach( function ( promise ) {\n\n\t\t\tpending.push( promise );\n\n\t\t} );\n\n\t\tthis.nodeCache[ nodeIndex ] = Promise.all( pending ).then( function ( objects ) {\n\n\t\t\tlet node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( let i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = nodeName;\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tconst matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ! parser.associations.has( node ) ) {\n\n\t\t\t\tparser.associations.set( node, {} );\n\n\t\t\t}\n\n\t\t\tparser.associations.get( node ).nodes = nodeIndex;\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t\treturn this.nodeCache[ nodeIndex ];\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise<Group>}\n\t */\n\tloadScene( sceneIndex ) {\n\n\t\tconst extensions = this.extensions;\n\t\tconst sceneDef = this.json.scenes[ sceneIndex ];\n\t\tconst parser = this;\n\n\t\t// Loader returns Group, not Scene.\n\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\tconst scene = new Group();\n\t\tif ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name );\n\n\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\tconst nodeIds = sceneDef.nodes || [];\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\tpending.push( parser.getDependency( 'node', nodeIds[ i ] ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function ( nodes ) {\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tscene.add( nodes[ i ] );\n\n\t\t\t}\n\n\t\t\t// Removes dangling associations, associations that reference a node that\n\t\t\t// didn't make it into the scene.\n\t\t\tconst reduceAssociations = ( node ) => {\n\n\t\t\t\tconst reducedAssociations = new Map();\n\n\t\t\t\tfor ( const [ key, value ] of parser.associations ) {\n\n\t\t\t\t\tif ( key instanceof Material || key instanceof Texture ) {\n\n\t\t\t\t\t\treducedAssociations.set( key, value );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tnode.traverse( ( node ) => {\n\n\t\t\t\t\tconst mappings = parser.associations.get( node );\n\n\t\t\t\t\tif ( mappings != null ) {\n\n\t\t\t\t\t\treducedAssociations.set( node, mappings );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn reducedAssociations;\n\n\t\t\t};\n\n\t\t\tparser.associations = reduceAssociations( scene );\n\n\t\t\treturn scene;\n\n\t\t} );\n\n\t}\n\n\t_createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ) {\n\n\t\tconst tracks = [];\n\n\t\tconst targetName = node.name ? node.name : node.uuid;\n\t\tconst targetNames = [];\n\n\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\ttargetNames.push( targetName );\n\n\t\t}\n\n\t\tlet TypedKeyframeTrack;\n\n\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tcase PATH_PROPERTIES.position:\n\t\t\tcase PATH_PROPERTIES.scale:\n\n\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tswitch ( outputAccessor.itemSize ) {\n\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\tcase 3:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tconst interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\n\t\tconst outputArray = this._getArrayFromAccessor( outputAccessor );\n\n\t\tfor ( let j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\tconst track = new TypedKeyframeTrack(\n\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\tinputAccessor.array,\n\t\t\t\toutputArray,\n\t\t\t\tinterpolation\n\t\t\t);\n\n\t\t\t// Override interpolation with custom factory method.\n\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\tthis._createCubicSplineTrackInterpolant( track );\n\n\t\t\t}\n\n\t\t\ttracks.push( track );\n\n\t\t}\n\n\t\treturn tracks;\n\n\t}\n\n\t_getArrayFromAccessor( accessor ) {\n\n\t\tlet outputArray = accessor.array;\n\n\t\tif ( accessor.normalized ) {\n\n\t\t\tconst scale = getNormalizedComponentScale( outputArray.constructor );\n\t\t\tconst scaled = new Float32Array( outputArray.length );\n\n\t\t\tfor ( let j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t}\n\n\t\t\toutputArray = scaled;\n\n\t\t}\n\n\t\treturn outputArray;\n\n\t}\n\n\t_createCubicSplineTrackInterpolant( track ) {\n\n\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\tconst interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n\n\t\t\treturn new interpolantType( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t};\n\n\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t}\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\nfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst box = new Box3();\n\n\tif ( attributes.POSITION !== undefined ) {\n\n\t\tconst accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\tconst min = accessor.min;\n\t\tconst max = accessor.max;\n\n\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\tbox.set(\n\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] )\n\t\t\t);\n\n\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\tbox.min.multiplyScalar( boxScale );\n\t\t\t\tbox.max.multiplyScalar( boxScale );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\treturn;\n\n\t\t}\n\n\t} else {\n\n\t\treturn;\n\n\t}\n\n\tconst targets = primitiveDef.targets;\n\n\tif ( targets !== undefined ) {\n\n\t\tconst maxDisplacement = new Vector3();\n\t\tconst vector = new Vector3();\n\n\t\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tconst target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\tconst accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\tconst min = accessor.min;\n\t\t\t\tconst max = accessor.max;\n\n\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\n\t\t\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\t\t\tvector.multiplyScalar( boxScale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\n\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\t\tbox.expandByVector( maxDisplacement );\n\n\t}\n\n\tgeometry.boundingBox = box;\n\n\tconst sphere = new Sphere();\n\n\tbox.getCenter( sphere.center );\n\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\tgeometry.boundingSphere = sphere;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\n */\nfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst pending = [];\n\n\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t.then( function ( accessor ) {\n\n\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t} );\n\n\t}\n\n\tfor ( const gltfAttributeName in attributes ) {\n\n\t\tconst threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t}\n\n\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\tconst accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\tgeometry.setIndex( accessor );\n\n\t\t} );\n\n\t\tpending.push( accessor );\n\n\t}\n\n\tif ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) {\n\n\t\tconsole.warn( `THREE.GLTFLoader: Converting vertex colors from \"srgb-linear\" to \"${ColorManagement.workingColorSpace}\" not supported.` );\n\n\t}\n\n\tassignExtrasToUserData( geometry, primitiveDef );\n\n\tcomputeBounds( geometry, primitiveDef, parser );\n\n\treturn Promise.all( pending ).then( function () {\n\n\t\treturn primitiveDef.targets !== undefined\n\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t: geometry;\n\n\t} );\n\n}\n\nexport { GLTFLoader };\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tColor,\n\tFileLoader,\n\tLoader,\n\tLinearSRGBColorSpace,\n\tSRGBColorSpace\n} from 'three';\n\nconst _taskCache = new WeakMap();\n\nclass DRACOLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.decoderPath = '';\n\t\tthis.decoderConfig = {};\n\t\tthis.decoderBinary = null;\n\t\tthis.decoderPending = null;\n\n\t\tthis.workerLimit = 4;\n\t\tthis.workerPool = [];\n\t\tthis.workerNextTaskID = 1;\n\t\tthis.workerSourceURL = '';\n\n\t\tthis.defaultAttributeIDs = {\n\t\t\tposition: 'POSITION',\n\t\t\tnormal: 'NORMAL',\n\t\t\tcolor: 'COLOR',\n\t\t\tuv: 'TEX_COORD'\n\t\t};\n\t\tthis.defaultAttributeTypes = {\n\t\t\tposition: 'Float32Array',\n\t\t\tnormal: 'Float32Array',\n\t\t\tcolor: 'Float32Array',\n\t\t\tuv: 'Float32Array'\n\t\t};\n\n\t}\n\n\tsetDecoderPath( path ) {\n\n\t\tthis.decoderPath = path;\n\n\t\treturn this;\n\n\t}\n\n\tsetDecoderConfig( config ) {\n\n\t\tthis.decoderConfig = config;\n\n\t\treturn this;\n\n\t}\n\n\tsetWorkerLimit( workerLimit ) {\n\n\t\tthis.workerLimit = workerLimit;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, ( buffer ) => {\n\n\t\t\tthis.parse( buffer, onLoad, onError );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\n\tparse( buffer, onLoad, onError = ()=>{} ) {\n\n\t\tthis.decodeDracoFile( buffer, onLoad, null, null, SRGBColorSpace ).catch( onError );\n\n\t}\n\n\tdecodeDracoFile( buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => {} ) {\n\n\t\tconst taskConfig = {\n\t\t\tattributeIDs: attributeIDs || this.defaultAttributeIDs,\n\t\t\tattributeTypes: attributeTypes || this.defaultAttributeTypes,\n\t\t\tuseUniqueIDs: !! attributeIDs,\n\t\t\tvertexColorSpace: vertexColorSpace,\n\t\t};\n\n\t\treturn this.decodeGeometry( buffer, taskConfig ).then( callback ).catch( onError );\n\n\t}\n\n\tdecodeGeometry( buffer, taskConfig ) {\n\n\t\tconst taskKey = JSON.stringify( taskConfig );\n\n\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t// again from this thread.\n\t\tif ( _taskCache.has( buffer ) ) {\n\n\t\t\tconst cachedTask = _taskCache.get( buffer );\n\n\t\t\tif ( cachedTask.key === taskKey ) {\n\n\t\t\t\treturn cachedTask.promise;\n\n\t\t\t} else if ( buffer.byteLength === 0 ) {\n\n\t\t\t\t// Technically, it would be possible to wait for the previous task to complete,\n\t\t\t\t// transfer the buffer back, and decode again with the second configuration. That\n\t\t\t\t// is complex, and I don't know of any reason to decode a Draco buffer twice in\n\t\t\t\t// different ways, so this is left unimplemented.\n\t\t\t\tthrow new Error(\n\n\t\t\t\t\t'THREE.DRACOLoader: Unable to re-decode a buffer with different ' +\n\t\t\t\t\t'settings. Buffer has already been transferred.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet worker;\n\t\tconst taskID = this.workerNextTaskID ++;\n\t\tconst taskCost = buffer.byteLength;\n\n\t\t// Obtain a worker and assign a task, and construct a geometry instance\n\t\t// when the task completes.\n\t\tconst geometryPending = this._getWorker( taskID, taskCost )\n\t\t\t.then( ( _worker ) => {\n\n\t\t\t\tworker = _worker;\n\n\t\t\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\t\t\tworker._callbacks[ taskID ] = { resolve, reject };\n\n\t\t\t\t\tworker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.then( ( message ) => this._createGeometry( message.geometry ) );\n\n\t\t// Remove task from the task list.\n\t\t// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\t\tgeometryPending\n\t\t\t.catch( () => true )\n\t\t\t.then( () => {\n\n\t\t\t\tif ( worker && taskID ) {\n\n\t\t\t\t\tthis._releaseTask( worker, taskID );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t// Cache the task result.\n\t\t_taskCache.set( buffer, {\n\n\t\t\tkey: taskKey,\n\t\t\tpromise: geometryPending\n\n\t\t} );\n\n\t\treturn geometryPending;\n\n\t}\n\n\t_createGeometry( geometryData ) {\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tif ( geometryData.index ) {\n\n\t\t\tgeometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryData.attributes.length; i ++ ) {\n\n\t\t\tconst result = geometryData.attributes[ i ];\n\t\t\tconst name = result.name;\n\t\t\tconst array = result.array;\n\t\t\tconst itemSize = result.itemSize;\n\n\t\t\tconst attribute = new BufferAttribute( array, itemSize );\n\n\t\t\tif ( name === 'color' ) {\n\n\t\t\t\tthis._assignVertexColorSpace( attribute, result.vertexColorSpace );\n\n\t\t\t\tattribute.normalized = ( array instanceof Float32Array ) === false;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( name, attribute );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\t_assignVertexColorSpace( attribute, inputColorSpace ) {\n\n\t\t// While .drc files do not specify colorspace, the only 'official' tooling\n\t\t// is PLY and OBJ converters, which use sRGB. We'll assume sRGB when a .drc\n\t\t// file is passed into .load() or .parse(). GLTFLoader uses internal APIs\n\t\t// to decode geometry, and vertex colors are already Linear-sRGB in there.\n\n\t\tif ( inputColorSpace !== SRGBColorSpace ) return;\n\n\t\tconst _color = new Color();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\t_color.fromBufferAttribute( attribute, i ).convertSRGBToLinear();\n\t\t\tattribute.setXYZ( i, _color.r, _color.g, _color.b );\n\n\t\t}\n\n\t}\n\n\t_loadLibrary( url, responseType ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.decoderPath );\n\t\tloader.setResponseType( responseType );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\tloader.load( url, resolve, undefined, reject );\n\n\t\t} );\n\n\t}\n\n\tpreload() {\n\n\t\tthis._initDecoder();\n\n\t\treturn this;\n\n\t}\n\n\t_initDecoder() {\n\n\t\tif ( this.decoderPending ) return this.decoderPending;\n\n\t\tconst useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n\t\tconst librariesPending = [];\n\n\t\tif ( useJS ) {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );\n\n\t\t} else {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) );\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) );\n\n\t\t}\n\n\t\tthis.decoderPending = Promise.all( librariesPending )\n\t\t\t.then( ( libraries ) => {\n\n\t\t\t\tconst jsContent = libraries[ 0 ];\n\n\t\t\t\tif ( ! useJS ) {\n\n\t\t\t\t\tthis.decoderConfig.wasmBinary = libraries[ 1 ];\n\n\t\t\t\t}\n\n\t\t\t\tconst fn = DRACOWorker.toString();\n\n\t\t\t\tconst body = [\n\t\t\t\t\t'/* draco decoder */',\n\t\t\t\t\tjsContent,\n\t\t\t\t\t'',\n\t\t\t\t\t'/* worker */',\n\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\n\t\t\t} );\n\n\t\treturn this.decoderPending;\n\n\t}\n\n\t_getWorker( taskID, taskCost ) {\n\n\t\treturn this._initDecoder().then( () => {\n\n\t\t\tif ( this.workerPool.length < this.workerLimit ) {\n\n\t\t\t\tconst worker = new Worker( this.workerSourceURL );\n\n\t\t\t\tworker._callbacks = {};\n\t\t\t\tworker._taskCosts = {};\n\t\t\t\tworker._taskLoad = 0;\n\n\t\t\t\tworker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } );\n\n\t\t\t\tworker.onmessage = function ( e ) {\n\n\t\t\t\t\tconst message = e.data;\n\n\t\t\t\t\tswitch ( message.type ) {\n\n\t\t\t\t\t\tcase 'decode':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].resolve( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'error':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].reject( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"' );\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\tthis.workerPool.push( worker );\n\n\t\t\t} else {\n\n\t\t\t\tthis.workerPool.sort( function ( a, b ) {\n\n\t\t\t\t\treturn a._taskLoad > b._taskLoad ? - 1 : 1;\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst worker = this.workerPool[ this.workerPool.length - 1 ];\n\t\t\tworker._taskCosts[ taskID ] = taskCost;\n\t\t\tworker._taskLoad += taskCost;\n\t\t\treturn worker;\n\n\t\t} );\n\n\t}\n\n\t_releaseTask( worker, taskID ) {\n\n\t\tworker._taskLoad -= worker._taskCosts[ taskID ];\n\t\tdelete worker._callbacks[ taskID ];\n\t\tdelete worker._taskCosts[ taskID ];\n\n\t}\n\n\tdebug() {\n\n\t\tconsole.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.workerPool.length; ++ i ) {\n\n\t\t\tthis.workerPool[ i ].terminate();\n\n\t\t}\n\n\t\tthis.workerPool.length = 0;\n\n\t\tif ( this.workerSourceURL !== '' ) {\n\n\t\t\tURL.revokeObjectURL( this.workerSourceURL );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* WEB WORKER */\n\nfunction DRACOWorker() {\n\n\tlet decoderConfig;\n\tlet decoderPending;\n\n\tonmessage = function ( e ) {\n\n\t\tconst message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tdecoderConfig = message.decoderConfig;\n\t\t\t\tdecoderPending = new Promise( function ( resolve/*, reject*/ ) {\n\n\t\t\t\t\tdecoderConfig.onModuleLoaded = function ( draco ) {\n\n\t\t\t\t\t\t// Module is Promise-like. Wrap before resolving to avoid loop.\n\t\t\t\t\t\tresolve( { draco: draco } );\n\n\t\t\t\t\t};\n\n\t\t\t\t\tDracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'decode':\n\t\t\t\tconst buffer = message.buffer;\n\t\t\t\tconst taskConfig = message.taskConfig;\n\t\t\t\tdecoderPending.then( ( module ) => {\n\n\t\t\t\t\tconst draco = module.draco;\n\t\t\t\t\tconst decoder = new draco.Decoder();\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tconst geometry = decodeGeometry( draco, decoder, new Int8Array( buffer ), taskConfig );\n\n\t\t\t\t\t\tconst buffers = geometry.attributes.map( ( attr ) => attr.array.buffer );\n\n\t\t\t\t\t\tif ( geometry.index ) buffers.push( geometry.index.array.buffer );\n\n\t\t\t\t\t\tself.postMessage( { type: 'decode', id: message.id, geometry }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t} finally {\n\n\t\t\t\t\t\tdraco.destroy( decoder );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t};\n\n\tfunction decodeGeometry( draco, decoder, array, taskConfig ) {\n\n\t\tconst attributeIDs = taskConfig.attributeIDs;\n\t\tconst attributeTypes = taskConfig.attributeTypes;\n\n\t\tlet dracoGeometry;\n\t\tlet decodingStatus;\n\n\t\tconst geometryType = decoder.GetEncodedGeometryType( array );\n\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tdracoGeometry = new draco.Mesh();\n\t\t\tdecodingStatus = decoder.DecodeArrayToMesh( array, array.byteLength, dracoGeometry );\n\n\t\t} else if ( geometryType === draco.POINT_CLOUD ) {\n\n\t\t\tdracoGeometry = new draco.PointCloud();\n\t\t\tdecodingStatus = decoder.DecodeArrayToPointCloud( array, array.byteLength, dracoGeometry );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected geometry type.' );\n\n\t\t}\n\n\t\tif ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() );\n\n\t\t}\n\n\t\tconst geometry = { index: null, attributes: [] };\n\n\t\t// Gather all vertex attributes.\n\t\tfor ( const attributeName in attributeIDs ) {\n\n\t\t\tconst attributeType = self[ attributeTypes[ attributeName ] ];\n\n\t\t\tlet attribute;\n\t\t\tlet attributeID;\n\n\t\t\t// A Draco file may be created with default vertex attributes, whose attribute IDs\n\t\t\t// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n\t\t\t// a Draco file may contain a custom set of attributes, identified by known unique\n\t\t\t// IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\t\t\tif ( taskConfig.useUniqueIDs ) {\n\n\t\t\t\tattributeID = attributeIDs[ attributeName ];\n\t\t\t\tattribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID );\n\n\t\t\t} else {\n\n\t\t\t\tattributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] );\n\n\t\t\t\tif ( attributeID === - 1 ) continue;\n\n\t\t\t\tattribute = decoder.GetAttribute( dracoGeometry, attributeID );\n\n\t\t\t}\n\n\t\t\tconst attributeResult = decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute );\n\n\t\t\tif ( attributeName === 'color' ) {\n\n\t\t\t\tattributeResult.vertexColorSpace = taskConfig.vertexColorSpace;\n\n\t\t\t}\n\n\t\t\tgeometry.attributes.push( attributeResult );\n\n\t\t}\n\n\t\t// Add index.\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tgeometry.index = decodeIndex( draco, decoder, dracoGeometry );\n\n\t\t}\n\n\t\tdraco.destroy( dracoGeometry );\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction decodeIndex( draco, decoder, dracoGeometry ) {\n\n\t\tconst numFaces = dracoGeometry.num_faces();\n\t\tconst numIndices = numFaces * 3;\n\t\tconst byteLength = numIndices * 4;\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );\n\t\tconst index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn { array: index, itemSize: 1 };\n\n\t}\n\n\tfunction decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) {\n\n\t\tconst numComponents = attribute.num_components();\n\t\tconst numPoints = dracoGeometry.num_points();\n\t\tconst numValues = numPoints * numComponents;\n\t\tconst byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n\t\tconst dataType = getDracoDataType( draco, attributeType );\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr );\n\t\tconst array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn {\n\t\t\tname: attributeName,\n\t\t\tarray: array,\n\t\t\titemSize: numComponents\n\t\t};\n\n\t}\n\n\tfunction getDracoDataType( draco, attributeType ) {\n\n\t\tswitch ( attributeType ) {\n\n\t\t\tcase Float32Array: return draco.DT_FLOAT32;\n\t\t\tcase Int8Array: return draco.DT_INT8;\n\t\t\tcase Int16Array: return draco.DT_INT16;\n\t\t\tcase Int32Array: return draco.DT_INT32;\n\t\t\tcase Uint8Array: return draco.DT_UINT8;\n\t\t\tcase Uint16Array: return draco.DT_UINT16;\n\t\t\tcase Uint32Array: return draco.DT_UINT32;\n\n\t\t}\n\n\t}\n\n}\n\nexport { DRACOLoader };\n","// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2022, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\nvar MeshoptDecoder = (function() {\n\t\"use strict\";\n\n\t// Built with clang version 14.0.4\n\t// Built from meshoptimizer 0.18\n\tvar wasm_base = \"b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb\";\n\tvar wasm_simd = \"b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb\";\n\n\tvar detector = new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]);\n\tvar wasmpack = new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);\n\n\tif (typeof WebAssembly !== 'object') {\n\t\treturn {\n\t\t\tsupported: false,\n\t\t};\n\t}\n\n\tvar wasm = WebAssembly.validate(detector) ? wasm_simd : wasm_base;\n\n\tvar instance;\n\n\tvar ready =\n\t\tWebAssembly.instantiate(unpack(wasm), {})\n\t\t.then(function(result) {\n\t\t\tinstance = result.instance;\n\t\t\tinstance.exports.__wasm_call_ctors();\n\t\t});\n\n\tfunction unpack(data) {\n\t\tvar result = new Uint8Array(data.length);\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tvar ch = data.charCodeAt(i);\n\t\t\tresult[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;\n\t\t}\n\t\tvar write = 0;\n\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\tresult[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n\t\t}\n\t\treturn result.buffer.slice(0, write);\n\t}\n\n\tfunction decode(fun, target, count, size, source, filter) {\n\t\tvar sbrk = instance.exports.sbrk;\n\t\tvar count4 = (count + 3) & ~3;\n\t\tvar tp = sbrk(count4 * size);\n\t\tvar sp = sbrk(source.length);\n\t\tvar heap = new Uint8Array(instance.exports.memory.buffer);\n\t\theap.set(source, sp);\n\t\tvar res = fun(tp, count, size, sp, source.length);\n\t\tif (res == 0 && filter) {\n\t\t\tfilter(tp, count4, size);\n\t\t}\n\t\ttarget.set(heap.subarray(tp, tp + count * size));\n\t\tsbrk(tp - sbrk(0));\n\t\tif (res != 0) {\n\t\t\tthrow new Error(\"Malformed buffer data: \" + res);\n\t\t}\n\t}\n\n\tvar filters = {\n\t\tNONE: \"\",\n\t\tOCTAHEDRAL: \"meshopt_decodeFilterOct\",\n\t\tQUATERNION: \"meshopt_decodeFilterQuat\",\n\t\tEXPONENTIAL: \"meshopt_decodeFilterExp\",\n\t};\n\n\tvar decoders = {\n\t\tATTRIBUTES: \"meshopt_decodeVertexBuffer\",\n\t\tTRIANGLES: \"meshopt_decodeIndexBuffer\",\n\t\tINDICES: \"meshopt_decodeIndexSequence\",\n\t};\n\n\tvar workers = [];\n\tvar requestId = 0;\n\n\tfunction createWorker(url) {\n\t\tvar worker = {\n\t\t\tobject: new Worker(url),\n\t\t\tpending: 0,\n\t\t\trequests: {}\n\t\t};\n\n\t\tworker.object.onmessage = function(event) {\n\t\t\tvar data = event.data;\n\n\t\t\tworker.pending -= data.count;\n\t\t\tworker.requests[data.id][data.action](data.value);\n\n\t\t\tdelete worker.requests[data.id];\n\t\t};\n\n\t\treturn worker;\n\t}\n\n\tfunction initWorkers(count) {\n\t\tvar source =\n\t\t\t\"var instance; var ready = WebAssembly.instantiate(new Uint8Array([\" + new Uint8Array(unpack(wasm)) + \"]), {})\" +\n\t\t\t\".then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });\" +\n\t\t\t\"self.onmessage = workerProcess;\" +\n\t\t\tdecode.toString() + workerProcess.toString();\n\n\t\tvar blob = new Blob([source], {type: 'text/javascript'});\n\t\tvar url = URL.createObjectURL(blob);\n\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tworkers[i] = createWorker(url);\n\t\t}\n\n\t\tURL.revokeObjectURL(url);\n\t}\n\n\tfunction decodeWorker(count, size, source, mode, filter) {\n\t\tvar worker = workers[0];\n\n\t\tfor (var i = 1; i < workers.length; ++i) {\n\t\t\tif (workers[i].pending < worker.pending) {\n\t\t\t\tworker = workers[i];\n\t\t\t}\n\t\t}\n\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tvar data = new Uint8Array(source);\n\t\t\tvar id = requestId++;\n\n\t\t\tworker.pending += count;\n\t\t\tworker.requests[id] = { resolve: resolve, reject: reject };\n\t\t\tworker.object.postMessage({ id: id, count: count, size: size, source: data, mode: mode, filter: filter }, [ data.buffer ]);\n\t\t});\n\t}\n\n\tfunction workerProcess(event) {\n\t\tready.then(function() {\n\t\t\tvar data = event.data;\n\t\t\ttry {\n\t\t\t\tvar target = new Uint8Array(data.count * data.size);\n\t\t\t\tdecode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n\t\t\t\tself.postMessage({ id: data.id, count: data.count, action: \"resolve\", value: target }, [ target.buffer ]);\n\t\t\t} catch (error) {\n\t\t\t\tself.postMessage({ id: data.id, count: data.count, action: \"reject\", value: error });\n\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\tready: ready,\n\t\tsupported: true,\n\t\tuseWorkers: function(count) {\n\t\t\tinitWorkers(count);\n\t\t},\n\t\tdecodeVertexBuffer: function(target, count, size, source, filter) {\n\t\t\tdecode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);\n\t\t},\n\t\tdecodeIndexBuffer: function(target, count, size, source) {\n\t\t\tdecode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n\t\t},\n\t\tdecodeIndexSequence: function(target, count, size, source) {\n\t\t\tdecode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n\t\t},\n\t\tdecodeGltfBuffer: function(target, count, size, source, mode, filter) {\n\t\t\tdecode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);\n\t\t},\n\t\tdecodeGltfBufferAsync: function(count, size, source, mode, filter) {\n\t\t\tif (workers.length > 0) {\n\t\t\t\treturn decodeWorker(count, size, source, decoders[mode], filters[filter]);\n\t\t\t}\n\n\t\t\treturn ready.then(function() {\n\t\t\t\tvar target = new Uint8Array(count * size);\n\t\t\t\tdecode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);\n\t\t\t\treturn target;\n\t\t\t});\n\t\t}\n\t};\n})();\n\nexport { MeshoptDecoder };\n","import { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { resourceLoader } from \"../asset/ResourceManager\";\nimport { GLTF, GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\n\n@resourceLoader([\"gltf\", \"glb\", \"bin\"])\nexport class aGLTFLoader extends aLoader {\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n if (gltf.animations) node.animations = gltf.animations;\n onLoad(aLoader._setMeshData(node));\n }\n let gltfLoader = new GLTFLoader(this.manager.loadingManager);\n gltfLoader.setPath(this.manager.path);\n gltfLoader.setResourcePath(this.manager.resourcePath);\n\n let dracoLoader = new DRACOLoader(this.manager.loadingManager);\n dracoLoader.setDecoderPath(this.manager.dracoPath);\n gltfLoader.setDRACOLoader(dracoLoader);\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder);\n gltfLoader.load(url, loadCallback, onProgress, onError);\n }\n}","/*!\nfflate - fast JavaScript compression/decompression\n<https://101arrowz.github.io/fflate>\nLicensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE\nversion 0.8.2\n*/\n\n// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) {\n if (ev.data.length) {\n strm.push(ev.data[0], ev.data[1]);\n postMessage([ev.data[0].length]);\n }\n else\n strm.flush();\n };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, flush, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else if (dat.length == 1) {\n strm.queuedSize -= dat[0];\n if (strm.ondrain)\n strm.ondrain(dat[0]);\n }\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.queuedSize = 0;\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n strm.queuedSize += d.length;\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n if (flush) {\n strm.flush = function () { w.postMessage([]); };\n }\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * deflated output for small inputs.\n */\n Deflate.prototype.flush = function () {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n this.p(this.b, false);\n this.s.w = this.s.i, this.s.i -= 2;\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6, 1);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7, 0);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * GZIPped output for small inputs.\n */\n Gzip.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8, 1);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l && !final) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n /**\n * Flushes buffered uncompressed data. Useful to immediately retrieve the\n * zlibbed output for small inputs.\n */\n Zlib.prototype.flush = function () {\n Deflate.prototype.flush.call(this);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10, 1);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11, 0);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.o = StrmOpt.call(this, opts, cb) || {};\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n }\n // init substream\n // overriden by AsyncDecompress\n Decompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (dat, final) {\n _this.ondata(dat, final);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o)\n : new this.Z(this.o);\n this.i();\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n Decompress.call(this, opts, cb);\n this.queuedSize = 0;\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n }\n AsyncDecompress.prototype.i = function () {\n var _this = this;\n this.s.ondata = function (err, dat, final) {\n _this.ondata(err, dat, final);\n };\n this.s.ondrain = function (size) {\n _this.queuedSize -= size;\n if (_this.ondrain)\n _this.ondrain(size);\n };\n };\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n this.queuedSize += chunk.length;\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this.ondata(err, dat, final);\n _this.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this.d & 1))\n return;\n _this.u.splice(-1, 1);\n _this.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this = this;\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this.k[0] == chks_3 && _this.c)\n _this.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n // Synchronously decompress under 512KB, or barely-compressed data\n if (su < 524288 || sc > 0.8 * su) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","import {\n\tVector3,\n\tVector4\n} from 'three';\n\n/**\n * NURBS utils\n *\n * See NURBSCurve and NURBSSurface.\n **/\n\n\n/**************************************************************\n *\tNURBS Utils\n **************************************************************/\n\n/*\nFinds knot vector span.\n\np : degree\nu : parametric value\nU : knot vector\n\nreturns the span\n*/\nfunction findSpan( p, u, U ) {\n\n\tconst n = U.length - p - 1;\n\n\tif ( u >= U[ n ] ) {\n\n\t\treturn n - 1;\n\n\t}\n\n\tif ( u <= U[ p ] ) {\n\n\t\treturn p;\n\n\t}\n\n\tlet low = p;\n\tlet high = n;\n\tlet mid = Math.floor( ( low + high ) / 2 );\n\n\twhile ( u < U[ mid ] || u >= U[ mid + 1 ] ) {\n\n\t\tif ( u < U[ mid ] ) {\n\n\t\t\thigh = mid;\n\n\t\t} else {\n\n\t\t\tlow = mid;\n\n\t\t}\n\n\t\tmid = Math.floor( ( low + high ) / 2 );\n\n\t}\n\n\treturn mid;\n\n}\n\n\n/*\nCalculate basis functions. See The NURBS Book, page 70, algorithm A2.2\n\nspan : span in which u lies\nu : parametric point\np : degree\nU : knot vector\n\nreturns array[p+1] with basis functions values.\n*/\nfunction calcBasisFunctions( span, u, p, U ) {\n\n\tconst N = [];\n\tconst left = [];\n\tconst right = [];\n\tN[ 0 ] = 1.0;\n\n\tfor ( let j = 1; j <= p; ++ j ) {\n\n\t\tleft[ j ] = u - U[ span + 1 - j ];\n\t\tright[ j ] = U[ span + j ] - u;\n\n\t\tlet saved = 0.0;\n\n\t\tfor ( let r = 0; r < j; ++ r ) {\n\n\t\t\tconst rv = right[ r + 1 ];\n\t\t\tconst lv = left[ j - r ];\n\t\t\tconst temp = N[ r ] / ( rv + lv );\n\t\t\tN[ r ] = saved + rv * temp;\n\t\t\tsaved = lv * temp;\n\n\t\t}\n\n\t\tN[ j ] = saved;\n\n\t}\n\n\treturn N;\n\n}\n\n\n/*\nCalculate B-Spline curve points. See The NURBS Book, page 82, algorithm A3.1.\n\np : degree of B-Spline\nU : knot vector\nP : control points (x, y, z, w)\nu : parametric point\n\nreturns point for given u\n*/\nfunction calcBSplinePoint( p, U, P, u ) {\n\n\tconst span = findSpan( p, u, U );\n\tconst N = calcBasisFunctions( span, u, p, U );\n\tconst C = new Vector4( 0, 0, 0, 0 );\n\n\tfor ( let j = 0; j <= p; ++ j ) {\n\n\t\tconst point = P[ span - p + j ];\n\t\tconst Nj = N[ j ];\n\t\tconst wNj = point.w * Nj;\n\t\tC.x += point.x * wNj;\n\t\tC.y += point.y * wNj;\n\t\tC.z += point.z * wNj;\n\t\tC.w += point.w * Nj;\n\n\t}\n\n\treturn C;\n\n}\n\n\n/*\nCalculate basis functions derivatives. See The NURBS Book, page 72, algorithm A2.3.\n\nspan : span in which u lies\nu : parametric point\np : degree\nn : number of derivatives to calculate\nU : knot vector\n\nreturns array[n+1][p+1] with basis functions derivatives\n*/\nfunction calcBasisFunctionDerivatives( span, u, p, n, U ) {\n\n\tconst zeroArr = [];\n\tfor ( let i = 0; i <= p; ++ i )\n\t\tzeroArr[ i ] = 0.0;\n\n\tconst ders = [];\n\n\tfor ( let i = 0; i <= n; ++ i )\n\t\tders[ i ] = zeroArr.slice( 0 );\n\n\tconst ndu = [];\n\n\tfor ( let i = 0; i <= p; ++ i )\n\t\tndu[ i ] = zeroArr.slice( 0 );\n\n\tndu[ 0 ][ 0 ] = 1.0;\n\n\tconst left = zeroArr.slice( 0 );\n\tconst right = zeroArr.slice( 0 );\n\n\tfor ( let j = 1; j <= p; ++ j ) {\n\n\t\tleft[ j ] = u - U[ span + 1 - j ];\n\t\tright[ j ] = U[ span + j ] - u;\n\n\t\tlet saved = 0.0;\n\n\t\tfor ( let r = 0; r < j; ++ r ) {\n\n\t\t\tconst rv = right[ r + 1 ];\n\t\t\tconst lv = left[ j - r ];\n\t\t\tndu[ j ][ r ] = rv + lv;\n\n\t\t\tconst temp = ndu[ r ][ j - 1 ] / ndu[ j ][ r ];\n\t\t\tndu[ r ][ j ] = saved + rv * temp;\n\t\t\tsaved = lv * temp;\n\n\t\t}\n\n\t\tndu[ j ][ j ] = saved;\n\n\t}\n\n\tfor ( let j = 0; j <= p; ++ j ) {\n\n\t\tders[ 0 ][ j ] = ndu[ j ][ p ];\n\n\t}\n\n\tfor ( let r = 0; r <= p; ++ r ) {\n\n\t\tlet s1 = 0;\n\t\tlet s2 = 1;\n\n\t\tconst a = [];\n\t\tfor ( let i = 0; i <= p; ++ i ) {\n\n\t\t\ta[ i ] = zeroArr.slice( 0 );\n\n\t\t}\n\n\t\ta[ 0 ][ 0 ] = 1.0;\n\n\t\tfor ( let k = 1; k <= n; ++ k ) {\n\n\t\t\tlet d = 0.0;\n\t\t\tconst rk = r - k;\n\t\t\tconst pk = p - k;\n\n\t\t\tif ( r >= k ) {\n\n\t\t\t\ta[ s2 ][ 0 ] = a[ s1 ][ 0 ] / ndu[ pk + 1 ][ rk ];\n\t\t\t\td = a[ s2 ][ 0 ] * ndu[ rk ][ pk ];\n\n\t\t\t}\n\n\t\t\tconst j1 = ( rk >= - 1 ) ? 1 : - rk;\n\t\t\tconst j2 = ( r - 1 <= pk ) ? k - 1 : p - r;\n\n\t\t\tfor ( let j = j1; j <= j2; ++ j ) {\n\n\t\t\t\ta[ s2 ][ j ] = ( a[ s1 ][ j ] - a[ s1 ][ j - 1 ] ) / ndu[ pk + 1 ][ rk + j ];\n\t\t\t\td += a[ s2 ][ j ] * ndu[ rk + j ][ pk ];\n\n\t\t\t}\n\n\t\t\tif ( r <= pk ) {\n\n\t\t\t\ta[ s2 ][ k ] = - a[ s1 ][ k - 1 ] / ndu[ pk + 1 ][ r ];\n\t\t\t\td += a[ s2 ][ k ] * ndu[ r ][ pk ];\n\n\t\t\t}\n\n\t\t\tders[ k ][ r ] = d;\n\n\t\t\tconst j = s1;\n\t\t\ts1 = s2;\n\t\t\ts2 = j;\n\n\t\t}\n\n\t}\n\n\tlet r = p;\n\n\tfor ( let k = 1; k <= n; ++ k ) {\n\n\t\tfor ( let j = 0; j <= p; ++ j ) {\n\n\t\t\tders[ k ][ j ] *= r;\n\n\t\t}\n\n\t\tr *= p - k;\n\n\t}\n\n\treturn ders;\n\n}\n\n\n/*\n\tCalculate derivatives of a B-Spline. See The NURBS Book, page 93, algorithm A3.2.\n\n\tp : degree\n\tU : knot vector\n\tP : control points\n\tu : Parametric points\n\tnd : number of derivatives\n\n\treturns array[d+1] with derivatives\n\t*/\nfunction calcBSplineDerivatives( p, U, P, u, nd ) {\n\n\tconst du = nd < p ? nd : p;\n\tconst CK = [];\n\tconst span = findSpan( p, u, U );\n\tconst nders = calcBasisFunctionDerivatives( span, u, p, du, U );\n\tconst Pw = [];\n\n\tfor ( let i = 0; i < P.length; ++ i ) {\n\n\t\tconst point = P[ i ].clone();\n\t\tconst w = point.w;\n\n\t\tpoint.x *= w;\n\t\tpoint.y *= w;\n\t\tpoint.z *= w;\n\n\t\tPw[ i ] = point;\n\n\t}\n\n\tfor ( let k = 0; k <= du; ++ k ) {\n\n\t\tconst point = Pw[ span - p ].clone().multiplyScalar( nders[ k ][ 0 ] );\n\n\t\tfor ( let j = 1; j <= p; ++ j ) {\n\n\t\t\tpoint.add( Pw[ span - p + j ].clone().multiplyScalar( nders[ k ][ j ] ) );\n\n\t\t}\n\n\t\tCK[ k ] = point;\n\n\t}\n\n\tfor ( let k = du + 1; k <= nd + 1; ++ k ) {\n\n\t\tCK[ k ] = new Vector4( 0, 0, 0 );\n\n\t}\n\n\treturn CK;\n\n}\n\n\n/*\nCalculate \"K over I\"\n\nreturns k!/(i!(k-i)!)\n*/\nfunction calcKoverI( k, i ) {\n\n\tlet nom = 1;\n\n\tfor ( let j = 2; j <= k; ++ j ) {\n\n\t\tnom *= j;\n\n\t}\n\n\tlet denom = 1;\n\n\tfor ( let j = 2; j <= i; ++ j ) {\n\n\t\tdenom *= j;\n\n\t}\n\n\tfor ( let j = 2; j <= k - i; ++ j ) {\n\n\t\tdenom *= j;\n\n\t}\n\n\treturn nom / denom;\n\n}\n\n\n/*\nCalculate derivatives (0-nd) of rational curve. See The NURBS Book, page 127, algorithm A4.2.\n\nPders : result of function calcBSplineDerivatives\n\nreturns array with derivatives for rational curve.\n*/\nfunction calcRationalCurveDerivatives( Pders ) {\n\n\tconst nd = Pders.length;\n\tconst Aders = [];\n\tconst wders = [];\n\n\tfor ( let i = 0; i < nd; ++ i ) {\n\n\t\tconst point = Pders[ i ];\n\t\tAders[ i ] = new Vector3( point.x, point.y, point.z );\n\t\twders[ i ] = point.w;\n\n\t}\n\n\tconst CK = [];\n\n\tfor ( let k = 0; k < nd; ++ k ) {\n\n\t\tconst v = Aders[ k ].clone();\n\n\t\tfor ( let i = 1; i <= k; ++ i ) {\n\n\t\t\tv.sub( CK[ k - i ].clone().multiplyScalar( calcKoverI( k, i ) * wders[ i ] ) );\n\n\t\t}\n\n\t\tCK[ k ] = v.divideScalar( wders[ 0 ] );\n\n\t}\n\n\treturn CK;\n\n}\n\n\n/*\nCalculate NURBS curve derivatives. See The NURBS Book, page 127, algorithm A4.2.\n\np : degree\nU : knot vector\nP : control points in homogeneous space\nu : parametric points\nnd : number of derivatives\n\nreturns array with derivatives.\n*/\nfunction calcNURBSDerivatives( p, U, P, u, nd ) {\n\n\tconst Pders = calcBSplineDerivatives( p, U, P, u, nd );\n\treturn calcRationalCurveDerivatives( Pders );\n\n}\n\n\n/*\nCalculate rational B-Spline surface point. See The NURBS Book, page 134, algorithm A4.3.\n\np, q : degrees of B-Spline surface\nU, V : knot vectors\nP : control points (x, y, z, w)\nu, v : parametric values\n\nreturns point for given (u, v)\n*/\nfunction calcSurfacePoint( p, q, U, V, P, u, v, target ) {\n\n\tconst uspan = findSpan( p, u, U );\n\tconst vspan = findSpan( q, v, V );\n\tconst Nu = calcBasisFunctions( uspan, u, p, U );\n\tconst Nv = calcBasisFunctions( vspan, v, q, V );\n\tconst temp = [];\n\n\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\ttemp[ l ] = new Vector4( 0, 0, 0, 0 );\n\t\tfor ( let k = 0; k <= p; ++ k ) {\n\n\t\t\tconst point = P[ uspan - p + k ][ vspan - q + l ].clone();\n\t\t\tconst w = point.w;\n\t\t\tpoint.x *= w;\n\t\t\tpoint.y *= w;\n\t\t\tpoint.z *= w;\n\t\t\ttemp[ l ].add( point.multiplyScalar( Nu[ k ] ) );\n\n\t\t}\n\n\t}\n\n\tconst Sw = new Vector4( 0, 0, 0, 0 );\n\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\tSw.add( temp[ l ].multiplyScalar( Nv[ l ] ) );\n\n\t}\n\n\tSw.divideScalar( Sw.w );\n\ttarget.set( Sw.x, Sw.y, Sw.z );\n\n}\n\n/*\nCalculate rational B-Spline volume point. See The NURBS Book, page 134, algorithm A4.3.\n\np, q, r : degrees of B-Splinevolume\nU, V, W : knot vectors\nP : control points (x, y, z, w)\nu, v, w : parametric values\n\nreturns point for given (u, v, w)\n*/\nfunction calcVolumePoint( p, q, r, U, V, W, P, u, v, w, target ) {\n\n\tconst uspan = findSpan( p, u, U );\n\tconst vspan = findSpan( q, v, V );\n\tconst wspan = findSpan( r, w, W );\n\tconst Nu = calcBasisFunctions( uspan, u, p, U );\n\tconst Nv = calcBasisFunctions( vspan, v, q, V );\n\tconst Nw = calcBasisFunctions( wspan, w, r, W );\n\tconst temp = [];\n\n\tfor ( let m = 0; m <= r; ++ m ) {\n\n\t\ttemp[ m ] = [];\n\n\t\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\t\ttemp[ m ][ l ] = new Vector4( 0, 0, 0, 0 );\n\t\t\tfor ( let k = 0; k <= p; ++ k ) {\n\n\t\t\t\tconst point = P[ uspan - p + k ][ vspan - q + l ][ wspan - r + m ].clone();\n\t\t\t\tconst w = point.w;\n\t\t\t\tpoint.x *= w;\n\t\t\t\tpoint.y *= w;\n\t\t\t\tpoint.z *= w;\n\t\t\t\ttemp[ m ][ l ].add( point.multiplyScalar( Nu[ k ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\tconst Sw = new Vector4( 0, 0, 0, 0 );\n\tfor ( let m = 0; m <= r; ++ m ) {\n\t\tfor ( let l = 0; l <= q; ++ l ) {\n\n\t\t\tSw.add( temp[ m ][ l ].multiplyScalar( Nw[ m ] ).multiplyScalar( Nv[ l ] ) );\n\n\t\t}\n\t}\n\n\tSw.divideScalar( Sw.w );\n\ttarget.set( Sw.x, Sw.y, Sw.z );\n\n}\n\n\nexport {\n\tfindSpan,\n\tcalcBasisFunctions,\n\tcalcBSplinePoint,\n\tcalcBasisFunctionDerivatives,\n\tcalcBSplineDerivatives,\n\tcalcKoverI,\n\tcalcRationalCurveDerivatives,\n\tcalcNURBSDerivatives,\n\tcalcSurfacePoint,\n\tcalcVolumePoint,\n};\n","import {\n\tCurve,\n\tVector3,\n\tVector4\n} from 'three';\nimport * as NURBSUtils from '../curves/NURBSUtils.js';\n\n/**\n * NURBS curve object\n *\n * Derives from Curve, overriding getPoint and getTangent.\n *\n * Implementation is based on (x, y [, z=0 [, w=1]]) control points with w=weight.\n *\n **/\n\nclass NURBSCurve extends Curve {\n\n\tconstructor(\n\t\tdegree,\n\t\tknots /* array of reals */,\n\t\tcontrolPoints /* array of Vector(2|3|4) */,\n\t\tstartKnot /* index in knots */,\n\t\tendKnot /* index in knots */\n\t) {\n\n\t\tsuper();\n\n\t\tthis.degree = degree;\n\t\tthis.knots = knots;\n\t\tthis.controlPoints = [];\n\t\t// Used by periodic NURBS to remove hidden spans\n\t\tthis.startKnot = startKnot || 0;\n\t\tthis.endKnot = endKnot || ( this.knots.length - 1 );\n\n\t\tfor ( let i = 0; i < controlPoints.length; ++ i ) {\n\n\t\t\t// ensure Vector4 for control points\n\t\t\tconst point = controlPoints[ i ];\n\t\t\tthis.controlPoints[ i ] = new Vector4( point.x, point.y, point.z, point.w );\n\n\t\t}\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst u = this.knots[ this.startKnot ] + t * ( this.knots[ this.endKnot ] - this.knots[ this.startKnot ] ); // linear mapping t->u\n\n\t\t// following results in (wx, wy, wz, w) homogeneous point\n\t\tconst hpoint = NURBSUtils.calcBSplinePoint( this.degree, this.knots, this.controlPoints, u );\n\n\t\tif ( hpoint.w !== 1.0 ) {\n\n\t\t\t// project to 3D space: (wx, wy, wz, w) -> (x, y, z, 1)\n\t\t\thpoint.divideScalar( hpoint.w );\n\n\t\t}\n\n\t\treturn point.set( hpoint.x, hpoint.y, hpoint.z );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\tconst tangent = optionalTarget;\n\n\t\tconst u = this.knots[ 0 ] + t * ( this.knots[ this.knots.length - 1 ] - this.knots[ 0 ] );\n\t\tconst ders = NURBSUtils.calcNURBSDerivatives( this.degree, this.knots, this.controlPoints, u, 1 );\n\t\ttangent.copy( ders[ 1 ] ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n}\n\nexport { NURBSCurve };\n","import {\n\tAmbientLight,\n\tAnimationClip,\n\tBone,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tEquirectangularReflectionMapping,\n\tEuler,\n\tFileLoader,\n\tFloat32BufferAttribute,\n\tGroup,\n\tLine,\n\tLineBasicMaterial,\n\tLoader,\n\tLoaderUtils,\n\tMathUtils,\n\tMatrix3,\n\tMatrix4,\n\tMesh,\n\tMeshLambertMaterial,\n\tMeshPhongMaterial,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPropertyBinding,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSpotLight,\n\tTexture,\n\tTextureLoader,\n\tUint16BufferAttribute,\n\tVector2,\n\tVector3,\n\tVector4,\n\tVectorKeyframeTrack,\n\tSRGBColorSpace,\n\tShapeUtils\n} from 'three';\nimport * as fflate from '../libs/fflate.module.js';\nimport { NURBSCurve } from '../curves/NURBSCurve.js';\n\n/**\n * Loader loads FBX file and generates Group representing FBX scene.\n * Requires FBX file to be >= 7.0 and in ASCII or >= 6400 in Binary format\n * Versions lower than this may load but will probably have errors\n *\n * Needs Support:\n * Morph normals / blend shape normals\n *\n * FBX format references:\n * \thttps://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html (C++ SDK reference)\n *\n * Binary format specification:\n *\thttps://code.blender.org/2013/08/fbx-binary-file-format-specification/\n */\n\n\nlet fbxTree;\nlet connections;\nlet sceneGraph;\n\nclass FBXLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( buffer, path ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( FBXBuffer, path ) {\n\n\t\tif ( isFbxFormatBinary( FBXBuffer ) ) {\n\n\t\t\tfbxTree = new BinaryParser().parse( FBXBuffer );\n\n\t\t} else {\n\n\t\t\tconst FBXText = convertArrayBufferToString( FBXBuffer );\n\n\t\t\tif ( ! isFbxFormatASCII( FBXText ) ) {\n\n\t\t\t\tthrow new Error( 'THREE.FBXLoader: Unknown format.' );\n\n\t\t\t}\n\n\t\t\tif ( getFbxVersion( FBXText ) < 7000 ) {\n\n\t\t\t\tthrow new Error( 'THREE.FBXLoader: FBX version not supported, FileVersion: ' + getFbxVersion( FBXText ) );\n\n\t\t\t}\n\n\t\t\tfbxTree = new TextParser().parse( FBXText );\n\n\t\t}\n\n\t\t// console.log( fbxTree );\n\n\t\tconst textureLoader = new TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin );\n\n\t\treturn new FBXTreeParser( textureLoader, this.manager ).parse( fbxTree );\n\n\t}\n\n}\n\n// Parse the FBXTree object returned by the BinaryParser or TextParser and return a Group\nclass FBXTreeParser {\n\n\tconstructor( textureLoader, manager ) {\n\n\t\tthis.textureLoader = textureLoader;\n\t\tthis.manager = manager;\n\n\t}\n\n\tparse() {\n\n\t\tconnections = this.parseConnections();\n\n\t\tconst images = this.parseImages();\n\t\tconst textures = this.parseTextures( images );\n\t\tconst materials = this.parseMaterials( textures );\n\t\tconst deformers = this.parseDeformers();\n\t\tconst geometryMap = new GeometryParser().parse( deformers );\n\n\t\tthis.parseScene( deformers, geometryMap, materials );\n\n\t\treturn sceneGraph;\n\n\t}\n\n\t// Parses FBXTree.Connections which holds parent-child connections between objects (e.g. material -> texture, model->geometry )\n\t// and details the connection type\n\tparseConnections() {\n\n\t\tconst connectionMap = new Map();\n\n\t\tif ( 'Connections' in fbxTree ) {\n\n\t\t\tconst rawConnections = fbxTree.Connections.connections;\n\n\t\t\trawConnections.forEach( function ( rawConnection ) {\n\n\t\t\t\tconst fromID = rawConnection[ 0 ];\n\t\t\t\tconst toID = rawConnection[ 1 ];\n\t\t\t\tconst relationship = rawConnection[ 2 ];\n\n\t\t\t\tif ( ! connectionMap.has( fromID ) ) {\n\n\t\t\t\t\tconnectionMap.set( fromID, {\n\t\t\t\t\t\tparents: [],\n\t\t\t\t\t\tchildren: []\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\tconst parentRelationship = { ID: toID, relationship: relationship };\n\t\t\t\tconnectionMap.get( fromID ).parents.push( parentRelationship );\n\n\t\t\t\tif ( ! connectionMap.has( toID ) ) {\n\n\t\t\t\t\tconnectionMap.set( toID, {\n\t\t\t\t\t\tparents: [],\n\t\t\t\t\t\tchildren: []\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\tconst childRelationship = { ID: fromID, relationship: relationship };\n\t\t\t\tconnectionMap.get( toID ).children.push( childRelationship );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn connectionMap;\n\n\t}\n\n\t// Parse FBXTree.Objects.Video for embedded image data\n\t// These images are connected to textures in FBXTree.Objects.Textures\n\t// via FBXTree.Connections.\n\tparseImages() {\n\n\t\tconst images = {};\n\t\tconst blobs = {};\n\n\t\tif ( 'Video' in fbxTree.Objects ) {\n\n\t\t\tconst videoNodes = fbxTree.Objects.Video;\n\n\t\t\tfor ( const nodeID in videoNodes ) {\n\n\t\t\t\tconst videoNode = videoNodes[ nodeID ];\n\n\t\t\t\tconst id = parseInt( nodeID );\n\n\t\t\t\timages[ id ] = videoNode.RelativeFilename || videoNode.Filename;\n\n\t\t\t\t// raw image data is in videoNode.Content\n\t\t\t\tif ( 'Content' in videoNode ) {\n\n\t\t\t\t\tconst arrayBufferContent = ( videoNode.Content instanceof ArrayBuffer ) && ( videoNode.Content.byteLength > 0 );\n\t\t\t\t\tconst base64Content = ( typeof videoNode.Content === 'string' ) && ( videoNode.Content !== '' );\n\n\t\t\t\t\tif ( arrayBufferContent || base64Content ) {\n\n\t\t\t\t\t\tconst image = this.parseImage( videoNodes[ nodeID ] );\n\n\t\t\t\t\t\tblobs[ videoNode.RelativeFilename || videoNode.Filename ] = image;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( const id in images ) {\n\n\t\t\tconst filename = images[ id ];\n\n\t\t\tif ( blobs[ filename ] !== undefined ) images[ id ] = blobs[ filename ];\n\t\t\telse images[ id ] = images[ id ].split( '\\\\' ).pop();\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\t// Parse embedded image data in FBXTree.Video.Content\n\tparseImage( videoNode ) {\n\n\t\tconst content = videoNode.Content;\n\t\tconst fileName = videoNode.RelativeFilename || videoNode.Filename;\n\t\tconst extension = fileName.slice( fileName.lastIndexOf( '.' ) + 1 ).toLowerCase();\n\n\t\tlet type;\n\n\t\tswitch ( extension ) {\n\n\t\t\tcase 'bmp':\n\n\t\t\t\ttype = 'image/bmp';\n\t\t\t\tbreak;\n\n\t\t\tcase 'jpg':\n\t\t\tcase 'jpeg':\n\n\t\t\t\ttype = 'image/jpeg';\n\t\t\t\tbreak;\n\n\t\t\tcase 'png':\n\n\t\t\t\ttype = 'image/png';\n\t\t\t\tbreak;\n\n\t\t\tcase 'tif':\n\n\t\t\t\ttype = 'image/tiff';\n\t\t\t\tbreak;\n\n\t\t\tcase 'tga':\n\n\t\t\t\tif ( this.manager.getHandler( '.tga' ) === null ) {\n\n\t\t\t\t\tconsole.warn( 'FBXLoader: TGA loader not found, skipping ', fileName );\n\n\t\t\t\t}\n\n\t\t\t\ttype = 'image/tga';\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'FBXLoader: Image type \"' + extension + '\" is not supported.' );\n\t\t\t\treturn;\n\n\t\t}\n\n\t\tif ( typeof content === 'string' ) { // ASCII format\n\n\t\t\treturn 'data:' + type + ';base64,' + content;\n\n\t\t} else { // Binary Format\n\n\t\t\tconst array = new Uint8Array( content );\n\t\t\treturn window.URL.createObjectURL( new Blob( [ array ], { type: type } ) );\n\n\t\t}\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Texture\n\t// These contain details such as UV scaling, cropping, rotation etc and are connected\n\t// to images in FBXTree.Objects.Video\n\tparseTextures( images ) {\n\n\t\tconst textureMap = new Map();\n\n\t\tif ( 'Texture' in fbxTree.Objects ) {\n\n\t\t\tconst textureNodes = fbxTree.Objects.Texture;\n\t\t\tfor ( const nodeID in textureNodes ) {\n\n\t\t\t\tconst texture = this.parseTexture( textureNodes[ nodeID ], images );\n\t\t\t\ttextureMap.set( parseInt( nodeID ), texture );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textureMap;\n\n\t}\n\n\t// Parse individual node in FBXTree.Objects.Texture\n\tparseTexture( textureNode, images ) {\n\n\t\tconst texture = this.loadTexture( textureNode, images );\n\n\t\ttexture.ID = textureNode.id;\n\n\t\ttexture.name = textureNode.attrName;\n\n\t\tconst wrapModeU = textureNode.WrapModeU;\n\t\tconst wrapModeV = textureNode.WrapModeV;\n\n\t\tconst valueU = wrapModeU !== undefined ? wrapModeU.value : 0;\n\t\tconst valueV = wrapModeV !== undefined ? wrapModeV.value : 0;\n\n\t\t// http://download.autodesk.com/us/fbx/SDKdocs/FBX_SDK_Help/files/fbxsdkref/class_k_fbx_texture.html#889640e63e2e681259ea81061b85143a\n\t\t// 0: repeat(default), 1: clamp\n\n\t\ttexture.wrapS = valueU === 0 ? RepeatWrapping : ClampToEdgeWrapping;\n\t\ttexture.wrapT = valueV === 0 ? RepeatWrapping : ClampToEdgeWrapping;\n\n\t\tif ( 'Scaling' in textureNode ) {\n\n\t\t\tconst values = textureNode.Scaling.value;\n\n\t\t\ttexture.repeat.x = values[ 0 ];\n\t\t\ttexture.repeat.y = values[ 1 ];\n\n\t\t}\n\n\t\tif ( 'Translation' in textureNode ) {\n\n\t\t\tconst values = textureNode.Translation.value;\n\n\t\t\ttexture.offset.x = values[ 0 ];\n\t\t\ttexture.offset.y = values[ 1 ];\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\t// load a texture specified as a blob or data URI, or via an external URL using TextureLoader\n\tloadTexture( textureNode, images ) {\n\n\t\tlet fileName;\n\n\t\tconst currentPath = this.textureLoader.path;\n\n\t\tconst children = connections.get( textureNode.id ).children;\n\n\t\tif ( children !== undefined && children.length > 0 && images[ children[ 0 ].ID ] !== undefined ) {\n\n\t\t\tfileName = images[ children[ 0 ].ID ];\n\n\t\t\tif ( fileName.indexOf( 'blob:' ) === 0 || fileName.indexOf( 'data:' ) === 0 ) {\n\n\t\t\t\tthis.textureLoader.setPath( undefined );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet texture;\n\n\t\tconst extension = textureNode.FileName.slice( - 3 ).toLowerCase();\n\n\t\tif ( extension === 'tga' ) {\n\n\t\t\tconst loader = this.manager.getHandler( '.tga' );\n\n\t\t\tif ( loader === null ) {\n\n\t\t\t\tconsole.warn( 'FBXLoader: TGA loader not found, creating placeholder texture for', textureNode.RelativeFilename );\n\t\t\t\ttexture = new Texture();\n\n\t\t\t} else {\n\n\t\t\t\tloader.setPath( this.textureLoader.path );\n\t\t\t\ttexture = loader.load( fileName );\n\n\t\t\t}\n\n\t\t} else if ( extension === 'dds' ) {\n\n\t\t\tconst loader = this.manager.getHandler( '.dds' );\n\n\t\t\tif ( loader === null ) {\n\n\t\t\t\tconsole.warn( 'FBXLoader: DDS loader not found, creating placeholder texture for', textureNode.RelativeFilename );\n\t\t\t\ttexture = new Texture();\n\n\t\t\t} else {\n\n\t\t\t\tloader.setPath( this.textureLoader.path );\n\t\t\t\ttexture = loader.load( fileName );\n\n\t\t\t}\n\n\t\t} else if ( extension === 'psd' ) {\n\n\t\t\tconsole.warn( 'FBXLoader: PSD textures are not supported, creating placeholder texture for', textureNode.RelativeFilename );\n\t\t\ttexture = new Texture();\n\n\t\t} else {\n\n\t\t\ttexture = this.textureLoader.load( fileName );\n\n\t\t}\n\n\t\tthis.textureLoader.setPath( currentPath );\n\n\t\treturn texture;\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Material\n\tparseMaterials( textureMap ) {\n\n\t\tconst materialMap = new Map();\n\n\t\tif ( 'Material' in fbxTree.Objects ) {\n\n\t\t\tconst materialNodes = fbxTree.Objects.Material;\n\n\t\t\tfor ( const nodeID in materialNodes ) {\n\n\t\t\t\tconst material = this.parseMaterial( materialNodes[ nodeID ], textureMap );\n\n\t\t\t\tif ( material !== null ) materialMap.set( parseInt( nodeID ), material );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materialMap;\n\n\t}\n\n\t// Parse single node in FBXTree.Objects.Material\n\t// Materials are connected to texture maps in FBXTree.Objects.Textures\n\t// FBX format currently only supports Lambert and Phong shading models\n\tparseMaterial( materialNode, textureMap ) {\n\n\t\tconst ID = materialNode.id;\n\t\tconst name = materialNode.attrName;\n\t\tlet type = materialNode.ShadingModel;\n\n\t\t// Case where FBX wraps shading model in property object.\n\t\tif ( typeof type === 'object' ) {\n\n\t\t\ttype = type.value;\n\n\t\t}\n\n\t\t// Ignore unused materials which don't have any connections.\n\t\tif ( ! connections.has( ID ) ) return null;\n\n\t\tconst parameters = this.parseParameters( materialNode, textureMap, ID );\n\n\t\tlet material;\n\n\t\tswitch ( type.toLowerCase() ) {\n\n\t\t\tcase 'phong':\n\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\tbreak;\n\t\t\tcase 'lambert':\n\t\t\t\tmaterial = new MeshLambertMaterial();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.FBXLoader: unknown material type \"%s\". Defaulting to MeshPhongMaterial.', type );\n\t\t\t\tmaterial = new MeshPhongMaterial();\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tmaterial.setValues( parameters );\n\t\tmaterial.name = name;\n\n\t\treturn material;\n\n\t}\n\n\t// Parse FBX material and return parameters suitable for a three.js material\n\t// Also parse the texture map and return any textures associated with the material\n\tparseParameters( materialNode, textureMap, ID ) {\n\n\t\tconst parameters = {};\n\n\t\tif ( materialNode.BumpFactor ) {\n\n\t\t\tparameters.bumpScale = materialNode.BumpFactor.value;\n\n\t\t}\n\n\t\tif ( materialNode.Diffuse ) {\n\n\t\t\tparameters.color = new Color().fromArray( materialNode.Diffuse.value ).convertSRGBToLinear();\n\n\t\t} else if ( materialNode.DiffuseColor && ( materialNode.DiffuseColor.type === 'Color' || materialNode.DiffuseColor.type === 'ColorRGB' ) ) {\n\n\t\t\t// The blender exporter exports diffuse here instead of in materialNode.Diffuse\n\t\t\tparameters.color = new Color().fromArray( materialNode.DiffuseColor.value ).convertSRGBToLinear();\n\n\t\t}\n\n\t\tif ( materialNode.DisplacementFactor ) {\n\n\t\t\tparameters.displacementScale = materialNode.DisplacementFactor.value;\n\n\t\t}\n\n\t\tif ( materialNode.Emissive ) {\n\n\t\t\tparameters.emissive = new Color().fromArray( materialNode.Emissive.value ).convertSRGBToLinear();\n\n\t\t} else if ( materialNode.EmissiveColor && ( materialNode.EmissiveColor.type === 'Color' || materialNode.EmissiveColor.type === 'ColorRGB' ) ) {\n\n\t\t\t// The blender exporter exports emissive color here instead of in materialNode.Emissive\n\t\t\tparameters.emissive = new Color().fromArray( materialNode.EmissiveColor.value ).convertSRGBToLinear();\n\n\t\t}\n\n\t\tif ( materialNode.EmissiveFactor ) {\n\n\t\t\tparameters.emissiveIntensity = parseFloat( materialNode.EmissiveFactor.value );\n\n\t\t}\n\n\t\tif ( materialNode.Opacity ) {\n\n\t\t\tparameters.opacity = parseFloat( materialNode.Opacity.value );\n\n\t\t}\n\n\t\tif ( parameters.opacity < 1.0 ) {\n\n\t\t\tparameters.transparent = true;\n\n\t\t}\n\n\t\tif ( materialNode.ReflectionFactor ) {\n\n\t\t\tparameters.reflectivity = materialNode.ReflectionFactor.value;\n\n\t\t}\n\n\t\tif ( materialNode.Shininess ) {\n\n\t\t\tparameters.shininess = materialNode.Shininess.value;\n\n\t\t}\n\n\t\tif ( materialNode.Specular ) {\n\n\t\t\tparameters.specular = new Color().fromArray( materialNode.Specular.value ).convertSRGBToLinear();\n\n\t\t} else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) {\n\n\t\t\t// The blender exporter exports specular color here instead of in materialNode.Specular\n\t\t\tparameters.specular = new Color().fromArray( materialNode.SpecularColor.value ).convertSRGBToLinear();\n\n\t\t}\n\n\t\tconst scope = this;\n\t\tconnections.get( ID ).children.forEach( function ( child ) {\n\n\t\t\tconst type = child.relationship;\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'Bump':\n\t\t\t\t\tparameters.bumpMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Maya|TEX_ao_map':\n\t\t\t\t\tparameters.aoMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DiffuseColor':\n\t\t\t\tcase 'Maya|TEX_color_map':\n\t\t\t\t\tparameters.map = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.map !== undefined ) {\n\n\t\t\t\t\t\tparameters.map.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'DisplacementColor':\n\t\t\t\t\tparameters.displacementMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EmissiveColor':\n\t\t\t\t\tparameters.emissiveMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.emissiveMap !== undefined ) {\n\n\t\t\t\t\t\tparameters.emissiveMap.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'NormalMap':\n\t\t\t\tcase 'Maya|TEX_normal_map':\n\t\t\t\t\tparameters.normalMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ReflectionColor':\n\t\t\t\t\tparameters.envMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.envMap !== undefined ) {\n\n\t\t\t\t\t\tparameters.envMap.mapping = EquirectangularReflectionMapping;\n\t\t\t\t\t\tparameters.envMap.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpecularColor':\n\t\t\t\t\tparameters.specularMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tif ( parameters.specularMap !== undefined ) {\n\n\t\t\t\t\t\tparameters.specularMap.colorSpace = SRGBColorSpace;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'TransparentColor':\n\t\t\t\tcase 'TransparencyFactor':\n\t\t\t\t\tparameters.alphaMap = scope.getTexture( textureMap, child.ID );\n\t\t\t\t\tparameters.transparent = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'AmbientColor':\n\t\t\t\tcase 'ShininessExponent': // AKA glossiness map\n\t\t\t\tcase 'SpecularFactor': // AKA specularLevel\n\t\t\t\tcase 'VectorDisplacementColor': // NOTE: Seems to be a copy of DisplacementColor\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: %s map is not supported in three.js, skipping texture.', type );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn parameters;\n\n\t}\n\n\t// get a texture from the textureMap for use by a material.\n\tgetTexture( textureMap, id ) {\n\n\t\t// if the texture is a layered texture, just use the first layer and issue a warning\n\t\tif ( 'LayeredTexture' in fbxTree.Objects && id in fbxTree.Objects.LayeredTexture ) {\n\n\t\t\tconsole.warn( 'THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.' );\n\t\t\tid = connections.get( id ).children[ 0 ].ID;\n\n\t\t}\n\n\t\treturn textureMap.get( id );\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Deformer\n\t// Deformer node can contain skinning or Vertex Cache animation data, however only skinning is supported here\n\t// Generates map of Skeleton-like objects for use later when generating and binding skeletons.\n\tparseDeformers() {\n\n\t\tconst skeletons = {};\n\t\tconst morphTargets = {};\n\n\t\tif ( 'Deformer' in fbxTree.Objects ) {\n\n\t\t\tconst DeformerNodes = fbxTree.Objects.Deformer;\n\n\t\t\tfor ( const nodeID in DeformerNodes ) {\n\n\t\t\t\tconst deformerNode = DeformerNodes[ nodeID ];\n\n\t\t\t\tconst relationships = connections.get( parseInt( nodeID ) );\n\n\t\t\t\tif ( deformerNode.attrType === 'Skin' ) {\n\n\t\t\t\t\tconst skeleton = this.parseSkeleton( relationships, DeformerNodes );\n\t\t\t\t\tskeleton.ID = nodeID;\n\n\t\t\t\t\tif ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: skeleton attached to more than one geometry is not supported.' );\n\t\t\t\t\tskeleton.geometryID = relationships.parents[ 0 ].ID;\n\n\t\t\t\t\tskeletons[ nodeID ] = skeleton;\n\n\t\t\t\t} else if ( deformerNode.attrType === 'BlendShape' ) {\n\n\t\t\t\t\tconst morphTarget = {\n\t\t\t\t\t\tid: nodeID,\n\t\t\t\t\t};\n\n\t\t\t\t\tmorphTarget.rawTargets = this.parseMorphTargets( relationships, DeformerNodes );\n\t\t\t\t\tmorphTarget.id = nodeID;\n\n\t\t\t\t\tif ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: morph target attached to more than one geometry is not supported.' );\n\n\t\t\t\t\tmorphTargets[ nodeID ] = morphTarget;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tskeletons: skeletons,\n\t\t\tmorphTargets: morphTargets,\n\n\t\t};\n\n\t}\n\n\t// Parse single nodes in FBXTree.Objects.Deformer\n\t// The top level skeleton node has type 'Skin' and sub nodes have type 'Cluster'\n\t// Each skin node represents a skeleton and each cluster node represents a bone\n\tparseSkeleton( relationships, deformerNodes ) {\n\n\t\tconst rawBones = [];\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tconst boneNode = deformerNodes[ child.ID ];\n\n\t\t\tif ( boneNode.attrType !== 'Cluster' ) return;\n\n\t\t\tconst rawBone = {\n\n\t\t\t\tID: child.ID,\n\t\t\t\tindices: [],\n\t\t\t\tweights: [],\n\t\t\t\ttransformLink: new Matrix4().fromArray( boneNode.TransformLink.a ),\n\t\t\t\t// transform: new Matrix4().fromArray( boneNode.Transform.a ),\n\t\t\t\t// linkMode: boneNode.Mode,\n\n\t\t\t};\n\n\t\t\tif ( 'Indexes' in boneNode ) {\n\n\t\t\t\trawBone.indices = boneNode.Indexes.a;\n\t\t\t\trawBone.weights = boneNode.Weights.a;\n\n\t\t\t}\n\n\t\t\trawBones.push( rawBone );\n\n\t\t} );\n\n\t\treturn {\n\n\t\t\trawBones: rawBones,\n\t\t\tbones: []\n\n\t\t};\n\n\t}\n\n\t// The top level morph deformer node has type \"BlendShape\" and sub nodes have type \"BlendShapeChannel\"\n\tparseMorphTargets( relationships, deformerNodes ) {\n\n\t\tconst rawMorphTargets = [];\n\n\t\tfor ( let i = 0; i < relationships.children.length; i ++ ) {\n\n\t\t\tconst child = relationships.children[ i ];\n\n\t\t\tconst morphTargetNode = deformerNodes[ child.ID ];\n\n\t\t\tconst rawMorphTarget = {\n\n\t\t\t\tname: morphTargetNode.attrName,\n\t\t\t\tinitialWeight: morphTargetNode.DeformPercent,\n\t\t\t\tid: morphTargetNode.id,\n\t\t\t\tfullWeights: morphTargetNode.FullWeights.a\n\n\t\t\t};\n\n\t\t\tif ( morphTargetNode.attrType !== 'BlendShapeChannel' ) return;\n\n\t\t\trawMorphTarget.geoID = connections.get( parseInt( child.ID ) ).children.filter( function ( child ) {\n\n\t\t\t\treturn child.relationship === undefined;\n\n\t\t\t} )[ 0 ].ID;\n\n\t\t\trawMorphTargets.push( rawMorphTarget );\n\n\t\t}\n\n\t\treturn rawMorphTargets;\n\n\t}\n\n\t// create the main Group() to be returned by the loader\n\tparseScene( deformers, geometryMap, materialMap ) {\n\n\t\tsceneGraph = new Group();\n\n\t\tconst modelMap = this.parseModels( deformers.skeletons, geometryMap, materialMap );\n\n\t\tconst modelNodes = fbxTree.Objects.Model;\n\n\t\tconst scope = this;\n\t\tmodelMap.forEach( function ( model ) {\n\n\t\t\tconst modelNode = modelNodes[ model.ID ];\n\t\t\tscope.setLookAtProperties( model, modelNode );\n\n\t\t\tconst parentConnections = connections.get( model.ID ).parents;\n\n\t\t\tparentConnections.forEach( function ( connection ) {\n\n\t\t\t\tconst parent = modelMap.get( connection.ID );\n\t\t\t\tif ( parent !== undefined ) parent.add( model );\n\n\t\t\t} );\n\n\t\t\tif ( model.parent === null ) {\n\n\t\t\t\tsceneGraph.add( model );\n\n\t\t\t}\n\n\n\t\t} );\n\n\t\tthis.bindSkeleton( deformers.skeletons, geometryMap, modelMap );\n\n\t\tthis.addGlobalSceneSettings();\n\n\t\tsceneGraph.traverse( function ( node ) {\n\n\t\t\tif ( node.userData.transformData ) {\n\n\t\t\t\tif ( node.parent ) {\n\n\t\t\t\t\tnode.userData.transformData.parentMatrix = node.parent.matrix;\n\t\t\t\t\tnode.userData.transformData.parentMatrixWorld = node.parent.matrixWorld;\n\n\t\t\t\t}\n\n\t\t\t\tconst transform = generateTransform( node.userData.transformData );\n\n\t\t\t\tnode.applyMatrix4( transform );\n\t\t\t\tnode.updateWorldMatrix();\n\n\t\t\t}\n\n\t\t} );\n\n\t\tconst animations = new AnimationParser().parse();\n\n\t\t// if all the models where already combined in a single group, just return that\n\t\tif ( sceneGraph.children.length === 1 && sceneGraph.children[ 0 ].isGroup ) {\n\n\t\t\tsceneGraph.children[ 0 ].animations = animations;\n\t\t\tsceneGraph = sceneGraph.children[ 0 ];\n\n\t\t}\n\n\t\tsceneGraph.animations = animations;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.Model\n\tparseModels( skeletons, geometryMap, materialMap ) {\n\n\t\tconst modelMap = new Map();\n\t\tconst modelNodes = fbxTree.Objects.Model;\n\n\t\tfor ( const nodeID in modelNodes ) {\n\n\t\t\tconst id = parseInt( nodeID );\n\t\t\tconst node = modelNodes[ nodeID ];\n\t\t\tconst relationships = connections.get( id );\n\n\t\t\tlet model = this.buildSkeleton( relationships, skeletons, id, node.attrName );\n\n\t\t\tif ( ! model ) {\n\n\t\t\t\tswitch ( node.attrType ) {\n\n\t\t\t\t\tcase 'Camera':\n\t\t\t\t\t\tmodel = this.createCamera( relationships );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Light':\n\t\t\t\t\t\tmodel = this.createLight( relationships );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Mesh':\n\t\t\t\t\t\tmodel = this.createMesh( relationships, geometryMap, materialMap );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'NurbsCurve':\n\t\t\t\t\t\tmodel = this.createCurve( relationships, geometryMap );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'LimbNode':\n\t\t\t\t\tcase 'Root':\n\t\t\t\t\t\tmodel = new Bone();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Null':\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmodel = new Group();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tmodel.name = node.attrName ? PropertyBinding.sanitizeNodeName( node.attrName ) : '';\n\t\t\t\tmodel.userData.originalName = node.attrName;\n\n\t\t\t\tmodel.ID = id;\n\n\t\t\t}\n\n\t\t\tthis.getTransformData( model, node );\n\t\t\tmodelMap.set( id, model );\n\n\t\t}\n\n\t\treturn modelMap;\n\n\t}\n\n\tbuildSkeleton( relationships, skeletons, id, name ) {\n\n\t\tlet bone = null;\n\n\t\trelationships.parents.forEach( function ( parent ) {\n\n\t\t\tfor ( const ID in skeletons ) {\n\n\t\t\t\tconst skeleton = skeletons[ ID ];\n\n\t\t\t\tskeleton.rawBones.forEach( function ( rawBone, i ) {\n\n\t\t\t\t\tif ( rawBone.ID === parent.ID ) {\n\n\t\t\t\t\t\tconst subBone = bone;\n\t\t\t\t\t\tbone = new Bone();\n\n\t\t\t\t\t\tbone.matrixWorld.copy( rawBone.transformLink );\n\n\t\t\t\t\t\t// set name and id here - otherwise in cases where \"subBone\" is created it will not have a name / id\n\n\t\t\t\t\t\tbone.name = name ? PropertyBinding.sanitizeNodeName( name ) : '';\n\t\t\t\t\t\tbone.userData.originalName = name;\n\t\t\t\t\t\tbone.ID = id;\n\n\t\t\t\t\t\tskeleton.bones[ i ] = bone;\n\n\t\t\t\t\t\t// In cases where a bone is shared between multiple meshes\n\t\t\t\t\t\t// duplicate the bone here and and it as a child of the first bone\n\t\t\t\t\t\tif ( subBone !== null ) {\n\n\t\t\t\t\t\t\tbone.add( subBone );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn bone;\n\n\t}\n\n\t// create a PerspectiveCamera or OrthographicCamera\n\tcreateCamera( relationships ) {\n\n\t\tlet model;\n\t\tlet cameraAttribute;\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tconst attr = fbxTree.Objects.NodeAttribute[ child.ID ];\n\n\t\t\tif ( attr !== undefined ) {\n\n\t\t\t\tcameraAttribute = attr;\n\n\t\t\t}\n\n\t\t} );\n\n\t\tif ( cameraAttribute === undefined ) {\n\n\t\t\tmodel = new Object3D();\n\n\t\t} else {\n\n\t\t\tlet type = 0;\n\t\t\tif ( cameraAttribute.CameraProjectionType !== undefined && cameraAttribute.CameraProjectionType.value === 1 ) {\n\n\t\t\t\ttype = 1;\n\n\t\t\t}\n\n\t\t\tlet nearClippingPlane = 1;\n\t\t\tif ( cameraAttribute.NearPlane !== undefined ) {\n\n\t\t\t\tnearClippingPlane = cameraAttribute.NearPlane.value / 1000;\n\n\t\t\t}\n\n\t\t\tlet farClippingPlane = 1000;\n\t\t\tif ( cameraAttribute.FarPlane !== undefined ) {\n\n\t\t\t\tfarClippingPlane = cameraAttribute.FarPlane.value / 1000;\n\n\t\t\t}\n\n\n\t\t\tlet width = window.innerWidth;\n\t\t\tlet height = window.innerHeight;\n\n\t\t\tif ( cameraAttribute.AspectWidth !== undefined && cameraAttribute.AspectHeight !== undefined ) {\n\n\t\t\t\twidth = cameraAttribute.AspectWidth.value;\n\t\t\t\theight = cameraAttribute.AspectHeight.value;\n\n\t\t\t}\n\n\t\t\tconst aspect = width / height;\n\n\t\t\tlet fov = 45;\n\t\t\tif ( cameraAttribute.FieldOfView !== undefined ) {\n\n\t\t\t\tfov = cameraAttribute.FieldOfView.value;\n\n\t\t\t}\n\n\t\t\tconst focalLength = cameraAttribute.FocalLength ? cameraAttribute.FocalLength.value : null;\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 0: // Perspective\n\t\t\t\t\tmodel = new PerspectiveCamera( fov, aspect, nearClippingPlane, farClippingPlane );\n\t\t\t\t\tif ( focalLength !== null ) model.setFocalLength( focalLength );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1: // Orthographic\n\t\t\t\t\tmodel = new OrthographicCamera( - width / 2, width / 2, height / 2, - height / 2, nearClippingPlane, farClippingPlane );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Unknown camera type ' + type + '.' );\n\t\t\t\t\tmodel = new Object3D();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn model;\n\n\t}\n\n\t// Create a DirectionalLight, PointLight or SpotLight\n\tcreateLight( relationships ) {\n\n\t\tlet model;\n\t\tlet lightAttribute;\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tconst attr = fbxTree.Objects.NodeAttribute[ child.ID ];\n\n\t\t\tif ( attr !== undefined ) {\n\n\t\t\t\tlightAttribute = attr;\n\n\t\t\t}\n\n\t\t} );\n\n\t\tif ( lightAttribute === undefined ) {\n\n\t\t\tmodel = new Object3D();\n\n\t\t} else {\n\n\t\t\tlet type;\n\n\t\t\t// LightType can be undefined for Point lights\n\t\t\tif ( lightAttribute.LightType === undefined ) {\n\n\t\t\t\ttype = 0;\n\n\t\t\t} else {\n\n\t\t\t\ttype = lightAttribute.LightType.value;\n\n\t\t\t}\n\n\t\t\tlet color = 0xffffff;\n\n\t\t\tif ( lightAttribute.Color !== undefined ) {\n\n\t\t\t\tcolor = new Color().fromArray( lightAttribute.Color.value ).convertSRGBToLinear();\n\n\t\t\t}\n\n\t\t\tlet intensity = ( lightAttribute.Intensity === undefined ) ? 1 : lightAttribute.Intensity.value / 100;\n\n\t\t\t// light disabled\n\t\t\tif ( lightAttribute.CastLightOnObject !== undefined && lightAttribute.CastLightOnObject.value === 0 ) {\n\n\t\t\t\tintensity = 0;\n\n\t\t\t}\n\n\t\t\tlet distance = 0;\n\t\t\tif ( lightAttribute.FarAttenuationEnd !== undefined ) {\n\n\t\t\t\tif ( lightAttribute.EnableFarAttenuation !== undefined && lightAttribute.EnableFarAttenuation.value === 0 ) {\n\n\t\t\t\t\tdistance = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdistance = lightAttribute.FarAttenuationEnd.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// TODO: could this be calculated linearly from FarAttenuationStart to FarAttenuationEnd?\n\t\t\tconst decay = 1;\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 0: // Point\n\t\t\t\t\tmodel = new PointLight( color, intensity, distance, decay );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1: // Directional\n\t\t\t\t\tmodel = new DirectionalLight( color, intensity );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // Spot\n\t\t\t\t\tlet angle = Math.PI / 3;\n\n\t\t\t\t\tif ( lightAttribute.InnerAngle !== undefined ) {\n\n\t\t\t\t\t\tangle = MathUtils.degToRad( lightAttribute.InnerAngle.value );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet penumbra = 0;\n\t\t\t\t\tif ( lightAttribute.OuterAngle !== undefined ) {\n\n\t\t\t\t\t\t// TODO: this is not correct - FBX calculates outer and inner angle in degrees\n\t\t\t\t\t\t// with OuterAngle > InnerAngle && OuterAngle <= Math.PI\n\t\t\t\t\t\t// while three.js uses a penumbra between (0, 1) to attenuate the inner angle\n\t\t\t\t\t\tpenumbra = MathUtils.degToRad( lightAttribute.OuterAngle.value );\n\t\t\t\t\t\tpenumbra = Math.max( penumbra, 1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmodel = new SpotLight( color, intensity, distance, angle, penumbra, decay );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Unknown light type ' + lightAttribute.LightType.value + ', defaulting to a PointLight.' );\n\t\t\t\t\tmodel = new PointLight( color, intensity );\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( lightAttribute.CastShadows !== undefined && lightAttribute.CastShadows.value === 1 ) {\n\n\t\t\t\tmodel.castShadow = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn model;\n\n\t}\n\n\tcreateMesh( relationships, geometryMap, materialMap ) {\n\n\t\tlet model;\n\t\tlet geometry = null;\n\t\tlet material = null;\n\t\tconst materials = [];\n\n\t\t// get geometry and materials(s) from connections\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tif ( geometryMap.has( child.ID ) ) {\n\n\t\t\t\tgeometry = geometryMap.get( child.ID );\n\n\t\t\t}\n\n\t\t\tif ( materialMap.has( child.ID ) ) {\n\n\t\t\t\tmaterials.push( materialMap.get( child.ID ) );\n\n\t\t\t}\n\n\t\t} );\n\n\t\tif ( materials.length > 1 ) {\n\n\t\t\tmaterial = materials;\n\n\t\t} else if ( materials.length > 0 ) {\n\n\t\t\tmaterial = materials[ 0 ];\n\n\t\t} else {\n\n\t\t\tmaterial = new MeshPhongMaterial( {\n\t\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\t\tcolor: 0xcccccc\n\t\t\t} );\n\t\t\tmaterials.push( material );\n\n\t\t}\n\n\t\tif ( 'color' in geometry.attributes ) {\n\n\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\tmaterial.vertexColors = true;\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( geometry.FBX_Deformer ) {\n\n\t\t\tmodel = new SkinnedMesh( geometry, material );\n\t\t\tmodel.normalizeSkinWeights();\n\n\t\t} else {\n\n\t\t\tmodel = new Mesh( geometry, material );\n\n\t\t}\n\n\t\treturn model;\n\n\t}\n\n\tcreateCurve( relationships, geometryMap ) {\n\n\t\tconst geometry = relationships.children.reduce( function ( geo, child ) {\n\n\t\t\tif ( geometryMap.has( child.ID ) ) geo = geometryMap.get( child.ID );\n\n\t\t\treturn geo;\n\n\t\t}, null );\n\n\t\t// FBX does not list materials for Nurbs lines, so we'll just put our own in here.\n\t\tconst material = new LineBasicMaterial( {\n\t\t\tname: Loader.DEFAULT_MATERIAL_NAME,\n\t\t\tcolor: 0x3300ff,\n\t\t\tlinewidth: 1\n\t\t} );\n\t\treturn new Line( geometry, material );\n\n\t}\n\n\t// parse the model node for transform data\n\tgetTransformData( model, modelNode ) {\n\n\t\tconst transformData = {};\n\n\t\tif ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value );\n\n\t\tif ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value );\n\t\telse transformData.eulerOrder = 'ZYX';\n\n\t\tif ( 'Lcl_Translation' in modelNode ) transformData.translation = modelNode.Lcl_Translation.value;\n\n\t\tif ( 'PreRotation' in modelNode ) transformData.preRotation = modelNode.PreRotation.value;\n\t\tif ( 'Lcl_Rotation' in modelNode ) transformData.rotation = modelNode.Lcl_Rotation.value;\n\t\tif ( 'PostRotation' in modelNode ) transformData.postRotation = modelNode.PostRotation.value;\n\n\t\tif ( 'Lcl_Scaling' in modelNode ) transformData.scale = modelNode.Lcl_Scaling.value;\n\n\t\tif ( 'ScalingOffset' in modelNode ) transformData.scalingOffset = modelNode.ScalingOffset.value;\n\t\tif ( 'ScalingPivot' in modelNode ) transformData.scalingPivot = modelNode.ScalingPivot.value;\n\n\t\tif ( 'RotationOffset' in modelNode ) transformData.rotationOffset = modelNode.RotationOffset.value;\n\t\tif ( 'RotationPivot' in modelNode ) transformData.rotationPivot = modelNode.RotationPivot.value;\n\n\t\tmodel.userData.transformData = transformData;\n\n\t}\n\n\tsetLookAtProperties( model, modelNode ) {\n\n\t\tif ( 'LookAtProperty' in modelNode ) {\n\n\t\t\tconst children = connections.get( model.ID ).children;\n\n\t\t\tchildren.forEach( function ( child ) {\n\n\t\t\t\tif ( child.relationship === 'LookAtProperty' ) {\n\n\t\t\t\t\tconst lookAtTarget = fbxTree.Objects.Model[ child.ID ];\n\n\t\t\t\t\tif ( 'Lcl_Translation' in lookAtTarget ) {\n\n\t\t\t\t\t\tconst pos = lookAtTarget.Lcl_Translation.value;\n\n\t\t\t\t\t\t// DirectionalLight, SpotLight\n\t\t\t\t\t\tif ( model.target !== undefined ) {\n\n\t\t\t\t\t\t\tmodel.target.position.fromArray( pos );\n\t\t\t\t\t\t\tsceneGraph.add( model.target );\n\n\t\t\t\t\t\t} else { // Cameras and other Object3Ds\n\n\t\t\t\t\t\t\tmodel.lookAt( new Vector3().fromArray( pos ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\tbindSkeleton( skeletons, geometryMap, modelMap ) {\n\n\t\tconst bindMatrices = this.parsePoseNodes();\n\n\t\tfor ( const ID in skeletons ) {\n\n\t\t\tconst skeleton = skeletons[ ID ];\n\n\t\t\tconst parents = connections.get( parseInt( skeleton.ID ) ).parents;\n\n\t\t\tparents.forEach( function ( parent ) {\n\n\t\t\t\tif ( geometryMap.has( parent.ID ) ) {\n\n\t\t\t\t\tconst geoID = parent.ID;\n\t\t\t\t\tconst geoRelationships = connections.get( geoID );\n\n\t\t\t\t\tgeoRelationships.parents.forEach( function ( geoConnParent ) {\n\n\t\t\t\t\t\tif ( modelMap.has( geoConnParent.ID ) ) {\n\n\t\t\t\t\t\t\tconst model = modelMap.get( geoConnParent.ID );\n\n\t\t\t\t\t\t\tmodel.bind( new Skeleton( skeleton.bones ), bindMatrices[ geoConnParent.ID ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t}\n\n\tparsePoseNodes() {\n\n\t\tconst bindMatrices = {};\n\n\t\tif ( 'Pose' in fbxTree.Objects ) {\n\n\t\t\tconst BindPoseNode = fbxTree.Objects.Pose;\n\n\t\t\tfor ( const nodeID in BindPoseNode ) {\n\n\t\t\t\tif ( BindPoseNode[ nodeID ].attrType === 'BindPose' && BindPoseNode[ nodeID ].NbPoseNodes > 0 ) {\n\n\t\t\t\t\tconst poseNodes = BindPoseNode[ nodeID ].PoseNode;\n\n\t\t\t\t\tif ( Array.isArray( poseNodes ) ) {\n\n\t\t\t\t\t\tposeNodes.forEach( function ( poseNode ) {\n\n\t\t\t\t\t\t\tbindMatrices[ poseNode.Node ] = new Matrix4().fromArray( poseNode.Matrix.a );\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbindMatrices[ poseNodes.Node ] = new Matrix4().fromArray( poseNodes.Matrix.a );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn bindMatrices;\n\n\t}\n\n\taddGlobalSceneSettings() {\n\n\t\tif ( 'GlobalSettings' in fbxTree ) {\n\n\t\t\tif ( 'AmbientColor' in fbxTree.GlobalSettings ) {\n\n\t\t\t\t// Parse ambient color - if it's not set to black (default), create an ambient light\n\n\t\t\t\tconst ambientColor = fbxTree.GlobalSettings.AmbientColor.value;\n\t\t\t\tconst r = ambientColor[ 0 ];\n\t\t\t\tconst g = ambientColor[ 1 ];\n\t\t\t\tconst b = ambientColor[ 2 ];\n\n\t\t\t\tif ( r !== 0 || g !== 0 || b !== 0 ) {\n\n\t\t\t\t\tconst color = new Color( r, g, b ).convertSRGBToLinear();\n\t\t\t\t\tsceneGraph.add( new AmbientLight( color, 1 ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( 'UnitScaleFactor' in fbxTree.GlobalSettings ) {\n\n\t\t\t\tsceneGraph.userData.unitScaleFactor = fbxTree.GlobalSettings.UnitScaleFactor.value;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\n// parse Geometry data from FBXTree and return map of BufferGeometries\nclass GeometryParser {\n\n\tconstructor() {\n\n\t\tthis.negativeMaterialIndices = false;\n\n\t}\n\n\t// Parse nodes in FBXTree.Objects.Geometry\n\tparse( deformers ) {\n\n\t\tconst geometryMap = new Map();\n\n\t\tif ( 'Geometry' in fbxTree.Objects ) {\n\n\t\t\tconst geoNodes = fbxTree.Objects.Geometry;\n\n\t\t\tfor ( const nodeID in geoNodes ) {\n\n\t\t\t\tconst relationships = connections.get( parseInt( nodeID ) );\n\t\t\t\tconst geo = this.parseGeometry( relationships, geoNodes[ nodeID ], deformers );\n\n\t\t\t\tgeometryMap.set( parseInt( nodeID ), geo );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// report warnings\n\n\t\tif ( this.negativeMaterialIndices === true ) {\n\n\t\t\tconsole.warn( 'THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.' );\n\n\t\t}\n\n\t\treturn geometryMap;\n\n\t}\n\n\t// Parse single node in FBXTree.Objects.Geometry\n\tparseGeometry( relationships, geoNode, deformers ) {\n\n\t\tswitch ( geoNode.attrType ) {\n\n\t\t\tcase 'Mesh':\n\t\t\t\treturn this.parseMeshGeometry( relationships, geoNode, deformers );\n\t\t\t\tbreak;\n\n\t\t\tcase 'NurbsCurve':\n\t\t\t\treturn this.parseNurbsGeometry( geoNode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\t// Parse single node mesh geometry in FBXTree.Objects.Geometry\n\tparseMeshGeometry( relationships, geoNode, deformers ) {\n\n\t\tconst skeletons = deformers.skeletons;\n\t\tconst morphTargets = [];\n\n\t\tconst modelNodes = relationships.parents.map( function ( parent ) {\n\n\t\t\treturn fbxTree.Objects.Model[ parent.ID ];\n\n\t\t} );\n\n\t\t// don't create geometry if it is not associated with any models\n\t\tif ( modelNodes.length === 0 ) return;\n\n\t\tconst skeleton = relationships.children.reduce( function ( skeleton, child ) {\n\n\t\t\tif ( skeletons[ child.ID ] !== undefined ) skeleton = skeletons[ child.ID ];\n\n\t\t\treturn skeleton;\n\n\t\t}, null );\n\n\t\trelationships.children.forEach( function ( child ) {\n\n\t\t\tif ( deformers.morphTargets[ child.ID ] !== undefined ) {\n\n\t\t\t\tmorphTargets.push( deformers.morphTargets[ child.ID ] );\n\n\t\t\t}\n\n\t\t} );\n\n\t\t// Assume one model and get the preRotation from that\n\t\t// if there is more than one model associated with the geometry this may cause problems\n\t\tconst modelNode = modelNodes[ 0 ];\n\n\t\tconst transformData = {};\n\n\t\tif ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value );\n\t\tif ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value );\n\n\t\tif ( 'GeometricTranslation' in modelNode ) transformData.translation = modelNode.GeometricTranslation.value;\n\t\tif ( 'GeometricRotation' in modelNode ) transformData.rotation = modelNode.GeometricRotation.value;\n\t\tif ( 'GeometricScaling' in modelNode ) transformData.scale = modelNode.GeometricScaling.value;\n\n\t\tconst transform = generateTransform( transformData );\n\n\t\treturn this.genGeometry( geoNode, skeleton, morphTargets, transform );\n\n\t}\n\n\t// Generate a BufferGeometry from a node in FBXTree.Objects.Geometry\n\tgenGeometry( geoNode, skeleton, morphTargets, preTransform ) {\n\n\t\tconst geo = new BufferGeometry();\n\t\tif ( geoNode.attrName ) geo.name = geoNode.attrName;\n\n\t\tconst geoInfo = this.parseGeoNode( geoNode, skeleton );\n\t\tconst buffers = this.genBuffers( geoInfo );\n\n\t\tconst positionAttribute = new Float32BufferAttribute( buffers.vertex, 3 );\n\n\t\tpositionAttribute.applyMatrix4( preTransform );\n\n\t\tgeo.setAttribute( 'position', positionAttribute );\n\n\t\tif ( buffers.colors.length > 0 ) {\n\n\t\t\tgeo.setAttribute( 'color', new Float32BufferAttribute( buffers.colors, 3 ) );\n\n\t\t}\n\n\t\tif ( skeleton ) {\n\n\t\t\tgeo.setAttribute( 'skinIndex', new Uint16BufferAttribute( buffers.weightsIndices, 4 ) );\n\n\t\t\tgeo.setAttribute( 'skinWeight', new Float32BufferAttribute( buffers.vertexWeights, 4 ) );\n\n\t\t\t// used later to bind the skeleton to the model\n\t\t\tgeo.FBX_Deformer = skeleton;\n\n\t\t}\n\n\t\tif ( buffers.normal.length > 0 ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( preTransform );\n\n\t\t\tconst normalAttribute = new Float32BufferAttribute( buffers.normal, 3 );\n\t\t\tnormalAttribute.applyNormalMatrix( normalMatrix );\n\n\t\t\tgeo.setAttribute( 'normal', normalAttribute );\n\n\t\t}\n\n\t\tbuffers.uvs.forEach( function ( uvBuffer, i ) {\n\n\t\t\tconst name = i === 0 ? 'uv' : `uv${ i }`;\n\n\t\t\tgeo.setAttribute( name, new Float32BufferAttribute( buffers.uvs[ i ], 2 ) );\n\n\t\t} );\n\n\t\tif ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) {\n\n\t\t\t// Convert the material indices of each vertex into rendering groups on the geometry.\n\t\t\tlet prevMaterialIndex = buffers.materialIndex[ 0 ];\n\t\t\tlet startIndex = 0;\n\n\t\t\tbuffers.materialIndex.forEach( function ( currentIndex, i ) {\n\n\t\t\t\tif ( currentIndex !== prevMaterialIndex ) {\n\n\t\t\t\t\tgeo.addGroup( startIndex, i - startIndex, prevMaterialIndex );\n\n\t\t\t\t\tprevMaterialIndex = currentIndex;\n\t\t\t\t\tstartIndex = i;\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\t// the loop above doesn't add the last group, do that here.\n\t\t\tif ( geo.groups.length > 0 ) {\n\n\t\t\t\tconst lastGroup = geo.groups[ geo.groups.length - 1 ];\n\t\t\t\tconst lastIndex = lastGroup.start + lastGroup.count;\n\n\t\t\t\tif ( lastIndex !== buffers.materialIndex.length ) {\n\n\t\t\t\t\tgeo.addGroup( lastIndex, buffers.materialIndex.length - lastIndex, prevMaterialIndex );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// case where there are multiple materials but the whole geometry is only\n\t\t\t// using one of them\n\t\t\tif ( geo.groups.length === 0 ) {\n\n\t\t\t\tgeo.addGroup( 0, buffers.materialIndex.length, buffers.materialIndex[ 0 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.addMorphTargets( geo, geoNode, morphTargets, preTransform );\n\n\t\treturn geo;\n\n\t}\n\n\tparseGeoNode( geoNode, skeleton ) {\n\n\t\tconst geoInfo = {};\n\n\t\tgeoInfo.vertexPositions = ( geoNode.Vertices !== undefined ) ? geoNode.Vertices.a : [];\n\t\tgeoInfo.vertexIndices = ( geoNode.PolygonVertexIndex !== undefined ) ? geoNode.PolygonVertexIndex.a : [];\n\n\t\tif ( geoNode.LayerElementColor ) {\n\n\t\t\tgeoInfo.color = this.parseVertexColors( geoNode.LayerElementColor[ 0 ] );\n\n\t\t}\n\n\t\tif ( geoNode.LayerElementMaterial ) {\n\n\t\t\tgeoInfo.material = this.parseMaterialIndices( geoNode.LayerElementMaterial[ 0 ] );\n\n\t\t}\n\n\t\tif ( geoNode.LayerElementNormal ) {\n\n\t\t\tgeoInfo.normal = this.parseNormals( geoNode.LayerElementNormal[ 0 ] );\n\n\t\t}\n\n\t\tif ( geoNode.LayerElementUV ) {\n\n\t\t\tgeoInfo.uv = [];\n\n\t\t\tlet i = 0;\n\t\t\twhile ( geoNode.LayerElementUV[ i ] ) {\n\n\t\t\t\tif ( geoNode.LayerElementUV[ i ].UV ) {\n\n\t\t\t\t\tgeoInfo.uv.push( this.parseUVs( geoNode.LayerElementUV[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeoInfo.weightTable = {};\n\n\t\tif ( skeleton !== null ) {\n\n\t\t\tgeoInfo.skeleton = skeleton;\n\n\t\t\tskeleton.rawBones.forEach( function ( rawBone, i ) {\n\n\t\t\t\t// loop over the bone's vertex indices and weights\n\t\t\t\trawBone.indices.forEach( function ( index, j ) {\n\n\t\t\t\t\tif ( geoInfo.weightTable[ index ] === undefined ) geoInfo.weightTable[ index ] = [];\n\n\t\t\t\t\tgeoInfo.weightTable[ index ].push( {\n\n\t\t\t\t\t\tid: i,\n\t\t\t\t\t\tweight: rawBone.weights[ j ],\n\n\t\t\t\t\t} );\n\n\t\t\t\t} );\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn geoInfo;\n\n\t}\n\n\tgenBuffers( geoInfo ) {\n\n\t\tconst buffers = {\n\t\t\tvertex: [],\n\t\t\tnormal: [],\n\t\t\tcolors: [],\n\t\t\tuvs: [],\n\t\t\tmaterialIndex: [],\n\t\t\tvertexWeights: [],\n\t\t\tweightsIndices: [],\n\t\t};\n\n\t\tlet polygonIndex = 0;\n\t\tlet faceLength = 0;\n\t\tlet displayedWeightsWarning = false;\n\n\t\t// these will hold data for a single face\n\t\tlet facePositionIndexes = [];\n\t\tlet faceNormals = [];\n\t\tlet faceColors = [];\n\t\tlet faceUVs = [];\n\t\tlet faceWeights = [];\n\t\tlet faceWeightIndices = [];\n\n\t\tconst scope = this;\n\t\tgeoInfo.vertexIndices.forEach( function ( vertexIndex, polygonVertexIndex ) {\n\n\t\t\tlet materialIndex;\n\t\t\tlet endOfFace = false;\n\n\t\t\t// Face index and vertex index arrays are combined in a single array\n\t\t\t// A cube with quad faces looks like this:\n\t\t\t// PolygonVertexIndex: *24 {\n\t\t\t// a: 0, 1, 3, -3, 2, 3, 5, -5, 4, 5, 7, -7, 6, 7, 1, -1, 1, 7, 5, -4, 6, 0, 2, -5\n\t\t\t// }\n\t\t\t// Negative numbers mark the end of a face - first face here is 0, 1, 3, -3\n\t\t\t// to find index of last vertex bit shift the index: ^ - 1\n\t\t\tif ( vertexIndex < 0 ) {\n\n\t\t\t\tvertexIndex = vertexIndex ^ - 1; // equivalent to ( x * -1 ) - 1\n\t\t\t\tendOfFace = true;\n\n\t\t\t}\n\n\t\t\tlet weightIndices = [];\n\t\t\tlet weights = [];\n\n\t\t\tfacePositionIndexes.push( vertexIndex * 3, vertexIndex * 3 + 1, vertexIndex * 3 + 2 );\n\n\t\t\tif ( geoInfo.color ) {\n\n\t\t\t\tconst data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.color );\n\n\t\t\t\tfaceColors.push( data[ 0 ], data[ 1 ], data[ 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.skeleton ) {\n\n\t\t\t\tif ( geoInfo.weightTable[ vertexIndex ] !== undefined ) {\n\n\t\t\t\t\tgeoInfo.weightTable[ vertexIndex ].forEach( function ( wt ) {\n\n\t\t\t\t\t\tweights.push( wt.weight );\n\t\t\t\t\t\tweightIndices.push( wt.id );\n\n\t\t\t\t\t} );\n\n\n\t\t\t\t}\n\n\t\t\t\tif ( weights.length > 4 ) {\n\n\t\t\t\t\tif ( ! displayedWeightsWarning ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.' );\n\t\t\t\t\t\tdisplayedWeightsWarning = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst wIndex = [ 0, 0, 0, 0 ];\n\t\t\t\t\tconst Weight = [ 0, 0, 0, 0 ];\n\n\t\t\t\t\tweights.forEach( function ( weight, weightIndex ) {\n\n\t\t\t\t\t\tlet currentWeight = weight;\n\t\t\t\t\t\tlet currentIndex = weightIndices[ weightIndex ];\n\n\t\t\t\t\t\tWeight.forEach( function ( comparedWeight, comparedWeightIndex, comparedWeightArray ) {\n\n\t\t\t\t\t\t\tif ( currentWeight > comparedWeight ) {\n\n\t\t\t\t\t\t\t\tcomparedWeightArray[ comparedWeightIndex ] = currentWeight;\n\t\t\t\t\t\t\t\tcurrentWeight = comparedWeight;\n\n\t\t\t\t\t\t\t\tconst tmp = wIndex[ comparedWeightIndex ];\n\t\t\t\t\t\t\t\twIndex[ comparedWeightIndex ] = currentIndex;\n\t\t\t\t\t\t\t\tcurrentIndex = tmp;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t} );\n\n\t\t\t\t\tweightIndices = wIndex;\n\t\t\t\t\tweights = Weight;\n\n\t\t\t\t}\n\n\t\t\t\t// if the weight array is shorter than 4 pad with 0s\n\t\t\t\twhile ( weights.length < 4 ) {\n\n\t\t\t\t\tweights.push( 0 );\n\t\t\t\t\tweightIndices.push( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 4; ++ i ) {\n\n\t\t\t\t\tfaceWeights.push( weights[ i ] );\n\t\t\t\t\tfaceWeightIndices.push( weightIndices[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.normal ) {\n\n\t\t\t\tconst data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.normal );\n\n\t\t\t\tfaceNormals.push( data[ 0 ], data[ 1 ], data[ 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) {\n\n\t\t\t\tmaterialIndex = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.material )[ 0 ];\n\n\t\t\t\tif ( materialIndex < 0 ) {\n\n\t\t\t\t\tscope.negativeMaterialIndices = true;\n\t\t\t\t\tmaterialIndex = 0; // fallback\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.uv ) {\n\n\t\t\t\tgeoInfo.uv.forEach( function ( uv, i ) {\n\n\t\t\t\t\tconst data = getData( polygonVertexIndex, polygonIndex, vertexIndex, uv );\n\n\t\t\t\t\tif ( faceUVs[ i ] === undefined ) {\n\n\t\t\t\t\t\tfaceUVs[ i ] = [];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceUVs[ i ].push( data[ 0 ] );\n\t\t\t\t\tfaceUVs[ i ].push( data[ 1 ] );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tfaceLength ++;\n\n\t\t\tif ( endOfFace ) {\n\n\t\t\t\tscope.genFace( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength );\n\n\t\t\t\tpolygonIndex ++;\n\t\t\t\tfaceLength = 0;\n\n\t\t\t\t// reset arrays for the next face\n\t\t\t\tfacePositionIndexes = [];\n\t\t\t\tfaceNormals = [];\n\t\t\t\tfaceColors = [];\n\t\t\t\tfaceUVs = [];\n\t\t\t\tfaceWeights = [];\n\t\t\t\tfaceWeightIndices = [];\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn buffers;\n\n\t}\n\n\t// See https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal\n\tgetNormalNewell( vertices ) {\n\n\t\tconst normal = new Vector3( 0.0, 0.0, 0.0 );\n\n\t\tfor ( let i = 0; i < vertices.length; i ++ ) {\n\n\t\t\tconst current = vertices[ i ];\n\t\t\tconst next = vertices[ ( i + 1 ) % vertices.length ];\n\n\t\t\tnormal.x += ( current.y - next.y ) * ( current.z + next.z );\n\t\t\tnormal.y += ( current.z - next.z ) * ( current.x + next.x );\n\t\t\tnormal.z += ( current.x - next.x ) * ( current.y + next.y );\n\n\t\t}\n\n\t\tnormal.normalize();\n\n\t\treturn normal;\n\n\t}\n\n\tgetNormalTangentAndBitangent( vertices ) {\n\n\t\tconst normalVector = this.getNormalNewell( vertices );\n\t\t// Avoid up being equal or almost equal to normalVector\n\t\tconst up = Math.abs( normalVector.z ) > 0.5 ? new Vector3( 0.0, 1.0, 0.0 ) : new Vector3( 0.0, 0.0, 1.0 );\n\t\tconst tangent = up.cross( normalVector ).normalize();\n\t\tconst bitangent = normalVector.clone().cross( tangent ).normalize();\n\n\t\treturn {\n\t\t\tnormal: normalVector,\n\t\t\ttangent: tangent,\n\t\t\tbitangent: bitangent\n\t\t};\n\n\t}\n\n\tflattenVertex( vertex, normalTangent, normalBitangent ) {\n\n\t\treturn new Vector2(\n\t\t\tvertex.dot( normalTangent ),\n\t\t\tvertex.dot( normalBitangent )\n\t\t);\n\n\t}\n\n\t// Generate data for a single face in a geometry. If the face is a quad then split it into 2 tris\n\tgenFace( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength ) {\n\n\t\tlet triangles;\n\n\t\tif ( faceLength > 3 ) {\n\n\t\t\t// Triangulate n-gon using earcut\n\n\t\t\tconst vertices = [];\n\n\t\t\tfor ( let i = 0; i < facePositionIndexes.length; i += 3 ) {\n\n\t\t\t\tvertices.push( new Vector3(\n\t\t\t\t\tgeoInfo.vertexPositions[ facePositionIndexes[ i ] ],\n\t\t\t\t\tgeoInfo.vertexPositions[ facePositionIndexes[ i + 1 ] ],\n\t\t\t\t\tgeoInfo.vertexPositions[ facePositionIndexes[ i + 2 ] ]\n\t\t\t\t) );\n\n\t\t\t}\n\n\t\t\tconst { tangent, bitangent } = this.getNormalTangentAndBitangent( vertices );\n\t\t\tconst triangulationInput = [];\n\n\t\t\tfor ( const vertex of vertices ) {\n\n\t\t\t\ttriangulationInput.push( this.flattenVertex( vertex, tangent, bitangent ) );\n\n\t\t\t}\n\n\t\t\ttriangles = ShapeUtils.triangulateShape( triangulationInput, [] );\n\n\t\t} else {\n\n\t\t\t// Regular triangle, skip earcut triangulation step\n\t\t\ttriangles = [[ 0, 1, 2 ]];\n\n\t\t}\n\n\t\tfor ( const [ i0, i1, i2 ] of triangles ) {\n\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 + 1 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 + 2 ] ] );\n\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 + 1 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 + 2 ] ] );\n\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 + 1 ] ] );\n\t\t\tbuffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 + 2 ] ] );\n\n\t\t\tif ( geoInfo.skeleton ) {\n\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 + 1 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 + 2 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i0 * 4 + 3 ] );\n\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 + 1 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 + 2 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i1 * 4 + 3 ] );\n\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 + 1 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 + 2 ] );\n\t\t\t\tbuffers.vertexWeights.push( faceWeights[ i2 * 4 + 3 ] );\n\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 1 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 2 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 3 ] );\n\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 1 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 2 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 3 ] );\n\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 1 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 2 ] );\n\t\t\t\tbuffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 3 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.color ) {\n\n\t\t\t\tbuffers.colors.push( faceColors[ i0 * 3 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i0 * 3 + 1 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i0 * 3 + 2 ] );\n\n\t\t\t\tbuffers.colors.push( faceColors[ i1 * 3 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i1 * 3 + 1 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i1 * 3 + 2 ] );\n\n\t\t\t\tbuffers.colors.push( faceColors[ i2 * 3 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i2 * 3 + 1 ] );\n\t\t\t\tbuffers.colors.push( faceColors[ i2 * 3 + 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) {\n\n\t\t\t\tbuffers.materialIndex.push( materialIndex );\n\t\t\t\tbuffers.materialIndex.push( materialIndex );\n\t\t\t\tbuffers.materialIndex.push( materialIndex );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.normal ) {\n\n\t\t\t\tbuffers.normal.push( faceNormals[ i0 * 3 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i0 * 3 + 1 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i0 * 3 + 2 ] );\n\n\t\t\t\tbuffers.normal.push( faceNormals[ i1 * 3 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i1 * 3 + 1 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i1 * 3 + 2 ] );\n\n\t\t\t\tbuffers.normal.push( faceNormals[ i2 * 3 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i2 * 3 + 1 ] );\n\t\t\t\tbuffers.normal.push( faceNormals[ i2 * 3 + 2 ] );\n\n\t\t\t}\n\n\t\t\tif ( geoInfo.uv ) {\n\n\t\t\t\tgeoInfo.uv.forEach( function ( uv, j ) {\n\n\t\t\t\t\tif ( buffers.uvs[ j ] === undefined ) buffers.uvs[ j ] = [];\n\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i0 * 2 ] );\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i0 * 2 + 1 ] );\n\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i1 * 2 ] );\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i1 * 2 + 1 ] );\n\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i2 * 2 ] );\n\t\t\t\t\tbuffers.uvs[ j ].push( faceUVs[ j ][ i2 * 2 + 1 ] );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\taddMorphTargets( parentGeo, parentGeoNode, morphTargets, preTransform ) {\n\n\t\tif ( morphTargets.length === 0 ) return;\n\n\t\tparentGeo.morphTargetsRelative = true;\n\n\t\tparentGeo.morphAttributes.position = [];\n\t\t// parentGeo.morphAttributes.normal = []; // not implemented\n\n\t\tconst scope = this;\n\t\tmorphTargets.forEach( function ( morphTarget ) {\n\n\t\t\tmorphTarget.rawTargets.forEach( function ( rawTarget ) {\n\n\t\t\t\tconst morphGeoNode = fbxTree.Objects.Geometry[ rawTarget.geoID ];\n\n\t\t\t\tif ( morphGeoNode !== undefined ) {\n\n\t\t\t\t\tscope.genMorphGeometry( parentGeo, parentGeoNode, morphGeoNode, preTransform, rawTarget.name );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t// a morph geometry node is similar to a standard node, and the node is also contained\n\t// in FBXTree.Objects.Geometry, however it can only have attributes for position, normal\n\t// and a special attribute Index defining which vertices of the original geometry are affected\n\t// Normal and position attributes only have data for the vertices that are affected by the morph\n\tgenMorphGeometry( parentGeo, parentGeoNode, morphGeoNode, preTransform, name ) {\n\n\t\tconst vertexIndices = ( parentGeoNode.PolygonVertexIndex !== undefined ) ? parentGeoNode.PolygonVertexIndex.a : [];\n\n\t\tconst morphPositionsSparse = ( morphGeoNode.Vertices !== undefined ) ? morphGeoNode.Vertices.a : [];\n\t\tconst indices = ( morphGeoNode.Indexes !== undefined ) ? morphGeoNode.Indexes.a : [];\n\n\t\tconst length = parentGeo.attributes.position.count * 3;\n\t\tconst morphPositions = new Float32Array( length );\n\n\t\tfor ( let i = 0; i < indices.length; i ++ ) {\n\n\t\t\tconst morphIndex = indices[ i ] * 3;\n\n\t\t\tmorphPositions[ morphIndex ] = morphPositionsSparse[ i * 3 ];\n\t\t\tmorphPositions[ morphIndex + 1 ] = morphPositionsSparse[ i * 3 + 1 ];\n\t\t\tmorphPositions[ morphIndex + 2 ] = morphPositionsSparse[ i * 3 + 2 ];\n\n\t\t}\n\n\t\t// TODO: add morph normal support\n\t\tconst morphGeoInfo = {\n\t\t\tvertexIndices: vertexIndices,\n\t\t\tvertexPositions: morphPositions,\n\n\t\t};\n\n\t\tconst morphBuffers = this.genBuffers( morphGeoInfo );\n\n\t\tconst positionAttribute = new Float32BufferAttribute( morphBuffers.vertex, 3 );\n\t\tpositionAttribute.name = name || morphGeoNode.attrName;\n\n\t\tpositionAttribute.applyMatrix4( preTransform );\n\n\t\tparentGeo.morphAttributes.position.push( positionAttribute );\n\n\t}\n\n\t// Parse normal from FBXTree.Objects.Geometry.LayerElementNormal if it exists\n\tparseNormals( NormalNode ) {\n\n\t\tconst mappingType = NormalNode.MappingInformationType;\n\t\tconst referenceType = NormalNode.ReferenceInformationType;\n\t\tconst buffer = NormalNode.Normals.a;\n\t\tlet indexBuffer = [];\n\t\tif ( referenceType === 'IndexToDirect' ) {\n\n\t\t\tif ( 'NormalIndex' in NormalNode ) {\n\n\t\t\t\tindexBuffer = NormalNode.NormalIndex.a;\n\n\t\t\t} else if ( 'NormalsIndex' in NormalNode ) {\n\n\t\t\t\tindexBuffer = NormalNode.NormalsIndex.a;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 3,\n\t\t\tbuffer: buffer,\n\t\t\tindices: indexBuffer,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Parse UVs from FBXTree.Objects.Geometry.LayerElementUV if it exists\n\tparseUVs( UVNode ) {\n\n\t\tconst mappingType = UVNode.MappingInformationType;\n\t\tconst referenceType = UVNode.ReferenceInformationType;\n\t\tconst buffer = UVNode.UV.a;\n\t\tlet indexBuffer = [];\n\t\tif ( referenceType === 'IndexToDirect' ) {\n\n\t\t\tindexBuffer = UVNode.UVIndex.a;\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 2,\n\t\t\tbuffer: buffer,\n\t\t\tindices: indexBuffer,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Parse Vertex Colors from FBXTree.Objects.Geometry.LayerElementColor if it exists\n\tparseVertexColors( ColorNode ) {\n\n\t\tconst mappingType = ColorNode.MappingInformationType;\n\t\tconst referenceType = ColorNode.ReferenceInformationType;\n\t\tconst buffer = ColorNode.Colors.a;\n\t\tlet indexBuffer = [];\n\t\tif ( referenceType === 'IndexToDirect' ) {\n\n\t\t\tindexBuffer = ColorNode.ColorIndex.a;\n\n\t\t}\n\n\t\tfor ( let i = 0, c = new Color(); i < buffer.length; i += 4 ) {\n\n\t\t\tc.fromArray( buffer, i ).convertSRGBToLinear().toArray( buffer, i );\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 4,\n\t\t\tbuffer: buffer,\n\t\t\tindices: indexBuffer,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Parse mapping and material data in FBXTree.Objects.Geometry.LayerElementMaterial if it exists\n\tparseMaterialIndices( MaterialNode ) {\n\n\t\tconst mappingType = MaterialNode.MappingInformationType;\n\t\tconst referenceType = MaterialNode.ReferenceInformationType;\n\n\t\tif ( mappingType === 'NoMappingInformation' ) {\n\n\t\t\treturn {\n\t\t\t\tdataSize: 1,\n\t\t\t\tbuffer: [ 0 ],\n\t\t\t\tindices: [ 0 ],\n\t\t\t\tmappingType: 'AllSame',\n\t\t\t\treferenceType: referenceType\n\t\t\t};\n\n\t\t}\n\n\t\tconst materialIndexBuffer = MaterialNode.Materials.a;\n\n\t\t// Since materials are stored as indices, there's a bit of a mismatch between FBX and what\n\t\t// we expect.So we create an intermediate buffer that points to the index in the buffer,\n\t\t// for conforming with the other functions we've written for other data.\n\t\tconst materialIndices = [];\n\n\t\tfor ( let i = 0; i < materialIndexBuffer.length; ++ i ) {\n\n\t\t\tmaterialIndices.push( i );\n\n\t\t}\n\n\t\treturn {\n\t\t\tdataSize: 1,\n\t\t\tbuffer: materialIndexBuffer,\n\t\t\tindices: materialIndices,\n\t\t\tmappingType: mappingType,\n\t\t\treferenceType: referenceType\n\t\t};\n\n\t}\n\n\t// Generate a NurbGeometry from a node in FBXTree.Objects.Geometry\n\tparseNurbsGeometry( geoNode ) {\n\n\t\tconst order = parseInt( geoNode.Order );\n\n\t\tif ( isNaN( order ) ) {\n\n\t\t\tconsole.error( 'THREE.FBXLoader: Invalid Order %s given for geometry ID: %s', geoNode.Order, geoNode.id );\n\t\t\treturn new BufferGeometry();\n\n\t\t}\n\n\t\tconst degree = order - 1;\n\n\t\tconst knots = geoNode.KnotVector.a;\n\t\tconst controlPoints = [];\n\t\tconst pointsValues = geoNode.Points.a;\n\n\t\tfor ( let i = 0, l = pointsValues.length; i < l; i += 4 ) {\n\n\t\t\tcontrolPoints.push( new Vector4().fromArray( pointsValues, i ) );\n\n\t\t}\n\n\t\tlet startKnot, endKnot;\n\n\t\tif ( geoNode.Form === 'Closed' ) {\n\n\t\t\tcontrolPoints.push( controlPoints[ 0 ] );\n\n\t\t} else if ( geoNode.Form === 'Periodic' ) {\n\n\t\t\tstartKnot = degree;\n\t\t\tendKnot = knots.length - 1 - startKnot;\n\n\t\t\tfor ( let i = 0; i < degree; ++ i ) {\n\n\t\t\t\tcontrolPoints.push( controlPoints[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst curve = new NURBSCurve( degree, knots, controlPoints, startKnot, endKnot );\n\t\tconst points = curve.getPoints( controlPoints.length * 12 );\n\n\t\treturn new BufferGeometry().setFromPoints( points );\n\n\t}\n\n}\n\n// parse animation data from FBXTree\nclass AnimationParser {\n\n\t// take raw animation clips and turn them into three.js animation clips\n\tparse() {\n\n\t\tconst animationClips = [];\n\n\t\tconst rawClips = this.parseClips();\n\n\t\tif ( rawClips !== undefined ) {\n\n\t\t\tfor ( const key in rawClips ) {\n\n\t\t\t\tconst rawClip = rawClips[ key ];\n\n\t\t\t\tconst clip = this.addClip( rawClip );\n\n\t\t\t\tanimationClips.push( clip );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animationClips;\n\n\t}\n\n\tparseClips() {\n\n\t\t// since the actual transformation data is stored in FBXTree.Objects.AnimationCurve,\n\t\t// if this is undefined we can safely assume there are no animations\n\t\tif ( fbxTree.Objects.AnimationCurve === undefined ) return undefined;\n\n\t\tconst curveNodesMap = this.parseAnimationCurveNodes();\n\n\t\tthis.parseAnimationCurves( curveNodesMap );\n\n\t\tconst layersMap = this.parseAnimationLayers( curveNodesMap );\n\t\tconst rawClips = this.parseAnimStacks( layersMap );\n\n\t\treturn rawClips;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationCurveNode\n\t// each AnimationCurveNode holds data for an animation transform for a model (e.g. left arm rotation )\n\t// and is referenced by an AnimationLayer\n\tparseAnimationCurveNodes() {\n\n\t\tconst rawCurveNodes = fbxTree.Objects.AnimationCurveNode;\n\n\t\tconst curveNodesMap = new Map();\n\n\t\tfor ( const nodeID in rawCurveNodes ) {\n\n\t\t\tconst rawCurveNode = rawCurveNodes[ nodeID ];\n\n\t\t\tif ( rawCurveNode.attrName.match( /S|R|T|DeformPercent/ ) !== null ) {\n\n\t\t\t\tconst curveNode = {\n\n\t\t\t\t\tid: rawCurveNode.id,\n\t\t\t\t\tattr: rawCurveNode.attrName,\n\t\t\t\t\tcurves: {},\n\n\t\t\t\t};\n\n\t\t\t\tcurveNodesMap.set( curveNode.id, curveNode );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn curveNodesMap;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationCurve and connect them up to\n\t// previously parsed AnimationCurveNodes. Each AnimationCurve holds data for a single animated\n\t// axis ( e.g. times and values of x rotation)\n\tparseAnimationCurves( curveNodesMap ) {\n\n\t\tconst rawCurves = fbxTree.Objects.AnimationCurve;\n\n\t\t// TODO: Many values are identical up to roundoff error, but won't be optimised\n\t\t// e.g. position times: [0, 0.4, 0. 8]\n\t\t// position values: [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.235384487103147e-7, 93.67520904541016, -0.9982695579528809]\n\t\t// clearly, this should be optimised to\n\t\t// times: [0], positions [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809]\n\t\t// this shows up in nearly every FBX file, and generally time array is length > 100\n\n\t\tfor ( const nodeID in rawCurves ) {\n\n\t\t\tconst animationCurve = {\n\n\t\t\t\tid: rawCurves[ nodeID ].id,\n\t\t\t\ttimes: rawCurves[ nodeID ].KeyTime.a.map( convertFBXTimeToSeconds ),\n\t\t\t\tvalues: rawCurves[ nodeID ].KeyValueFloat.a,\n\n\t\t\t};\n\n\t\t\tconst relationships = connections.get( animationCurve.id );\n\n\t\t\tif ( relationships !== undefined ) {\n\n\t\t\t\tconst animationCurveID = relationships.parents[ 0 ].ID;\n\t\t\t\tconst animationCurveRelationship = relationships.parents[ 0 ].relationship;\n\n\t\t\t\tif ( animationCurveRelationship.match( /X/ ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'x' ] = animationCurve;\n\n\t\t\t\t} else if ( animationCurveRelationship.match( /Y/ ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'y' ] = animationCurve;\n\n\t\t\t\t} else if ( animationCurveRelationship.match( /Z/ ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'z' ] = animationCurve;\n\n\t\t\t\t} else if ( animationCurveRelationship.match( /DeformPercent/ ) && curveNodesMap.has( animationCurveID ) ) {\n\n\t\t\t\t\tcurveNodesMap.get( animationCurveID ).curves[ 'morph' ] = animationCurve;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationLayer. Each layers holds references\n\t// to various AnimationCurveNodes and is referenced by an AnimationStack node\n\t// note: theoretically a stack can have multiple layers, however in practice there always seems to be one per stack\n\tparseAnimationLayers( curveNodesMap ) {\n\n\t\tconst rawLayers = fbxTree.Objects.AnimationLayer;\n\n\t\tconst layersMap = new Map();\n\n\t\tfor ( const nodeID in rawLayers ) {\n\n\t\t\tconst layerCurveNodes = [];\n\n\t\t\tconst connection = connections.get( parseInt( nodeID ) );\n\n\t\t\tif ( connection !== undefined ) {\n\n\t\t\t\t// all the animationCurveNodes used in the layer\n\t\t\t\tconst children = connection.children;\n\n\t\t\t\tchildren.forEach( function ( child, i ) {\n\n\t\t\t\t\tif ( curveNodesMap.has( child.ID ) ) {\n\n\t\t\t\t\t\tconst curveNode = curveNodesMap.get( child.ID );\n\n\t\t\t\t\t\t// check that the curves are defined for at least one axis, otherwise ignore the curveNode\n\t\t\t\t\t\tif ( curveNode.curves.x !== undefined || curveNode.curves.y !== undefined || curveNode.curves.z !== undefined ) {\n\n\t\t\t\t\t\t\tif ( layerCurveNodes[ i ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconst modelID = connections.get( child.ID ).parents.filter( function ( parent ) {\n\n\t\t\t\t\t\t\t\t\treturn parent.relationship !== undefined;\n\n\t\t\t\t\t\t\t\t} )[ 0 ].ID;\n\n\t\t\t\t\t\t\t\tif ( modelID !== undefined ) {\n\n\t\t\t\t\t\t\t\t\tconst rawModel = fbxTree.Objects.Model[ modelID.toString() ];\n\n\t\t\t\t\t\t\t\t\tif ( rawModel === undefined ) {\n\n\t\t\t\t\t\t\t\t\t\tconsole.warn( 'THREE.FBXLoader: Encountered a unused curve.', child );\n\t\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst node = {\n\n\t\t\t\t\t\t\t\t\t\tmodelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName( rawModel.attrName ) : '',\n\t\t\t\t\t\t\t\t\t\tID: rawModel.id,\n\t\t\t\t\t\t\t\t\t\tinitialPosition: [ 0, 0, 0 ],\n\t\t\t\t\t\t\t\t\t\tinitialRotation: [ 0, 0, 0 ],\n\t\t\t\t\t\t\t\t\t\tinitialScale: [ 1, 1, 1 ],\n\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tsceneGraph.traverse( function ( child ) {\n\n\t\t\t\t\t\t\t\t\t\tif ( child.ID === rawModel.id ) {\n\n\t\t\t\t\t\t\t\t\t\t\tnode.transform = child.matrix;\n\n\t\t\t\t\t\t\t\t\t\t\tif ( child.userData.transformData ) node.eulerOrder = child.userData.transformData.eulerOrder;\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\tif ( ! node.transform ) node.transform = new Matrix4();\n\n\t\t\t\t\t\t\t\t\t// if the animated model is pre rotated, we'll have to apply the pre rotations to every\n\t\t\t\t\t\t\t\t\t// animation value as well\n\t\t\t\t\t\t\t\t\tif ( 'PreRotation' in rawModel ) node.preRotation = rawModel.PreRotation.value;\n\t\t\t\t\t\t\t\t\tif ( 'PostRotation' in rawModel ) node.postRotation = rawModel.PostRotation.value;\n\n\t\t\t\t\t\t\t\t\tlayerCurveNodes[ i ] = node;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( layerCurveNodes[ i ] ) layerCurveNodes[ i ][ curveNode.attr ] = curveNode;\n\n\t\t\t\t\t\t} else if ( curveNode.curves.morph !== undefined ) {\n\n\t\t\t\t\t\t\tif ( layerCurveNodes[ i ] === undefined ) {\n\n\t\t\t\t\t\t\t\tconst deformerID = connections.get( child.ID ).parents.filter( function ( parent ) {\n\n\t\t\t\t\t\t\t\t\treturn parent.relationship !== undefined;\n\n\t\t\t\t\t\t\t\t} )[ 0 ].ID;\n\n\t\t\t\t\t\t\t\tconst morpherID = connections.get( deformerID ).parents[ 0 ].ID;\n\t\t\t\t\t\t\t\tconst geoID = connections.get( morpherID ).parents[ 0 ].ID;\n\n\t\t\t\t\t\t\t\t// assuming geometry is not used in more than one model\n\t\t\t\t\t\t\t\tconst modelID = connections.get( geoID ).parents[ 0 ].ID;\n\n\t\t\t\t\t\t\t\tconst rawModel = fbxTree.Objects.Model[ modelID ];\n\n\t\t\t\t\t\t\t\tconst node = {\n\n\t\t\t\t\t\t\t\t\tmodelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName( rawModel.attrName ) : '',\n\t\t\t\t\t\t\t\t\tmorphName: fbxTree.Objects.Deformer[ deformerID ].attrName,\n\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tlayerCurveNodes[ i ] = node;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlayerCurveNodes[ i ][ curveNode.attr ] = curveNode;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tlayersMap.set( parseInt( nodeID ), layerCurveNodes );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn layersMap;\n\n\t}\n\n\t// parse nodes in FBXTree.Objects.AnimationStack. These are the top level node in the animation\n\t// hierarchy. Each Stack node will be used to create a AnimationClip\n\tparseAnimStacks( layersMap ) {\n\n\t\tconst rawStacks = fbxTree.Objects.AnimationStack;\n\n\t\t// connect the stacks (clips) up to the layers\n\t\tconst rawClips = {};\n\n\t\tfor ( const nodeID in rawStacks ) {\n\n\t\t\tconst children = connections.get( parseInt( nodeID ) ).children;\n\n\t\t\tif ( children.length > 1 ) {\n\n\t\t\t\t// it seems like stacks will always be associated with a single layer. But just in case there are files\n\t\t\t\t// where there are multiple layers per stack, we'll display a warning\n\t\t\t\tconsole.warn( 'THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.' );\n\n\t\t\t}\n\n\t\t\tconst layer = layersMap.get( children[ 0 ].ID );\n\n\t\t\trawClips[ nodeID ] = {\n\n\t\t\t\tname: rawStacks[ nodeID ].attrName,\n\t\t\t\tlayer: layer,\n\n\t\t\t};\n\n\t\t}\n\n\t\treturn rawClips;\n\n\t}\n\n\taddClip( rawClip ) {\n\n\t\tlet tracks = [];\n\n\t\tconst scope = this;\n\t\trawClip.layer.forEach( function ( rawTracks ) {\n\n\t\t\ttracks = tracks.concat( scope.generateTracks( rawTracks ) );\n\n\t\t} );\n\n\t\treturn new AnimationClip( rawClip.name, - 1, tracks );\n\n\t}\n\n\tgenerateTracks( rawTracks ) {\n\n\t\tconst tracks = [];\n\n\t\tlet initialPosition = new Vector3();\n\t\tlet initialScale = new Vector3();\n\n\t\tif ( rawTracks.transform ) rawTracks.transform.decompose( initialPosition, new Quaternion(), initialScale );\n\n\t\tinitialPosition = initialPosition.toArray();\n\t\tinitialScale = initialScale.toArray();\n\n\t\tif ( rawTracks.T !== undefined && Object.keys( rawTracks.T.curves ).length > 0 ) {\n\n\t\t\tconst positionTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.T.curves, initialPosition, 'position' );\n\t\t\tif ( positionTrack !== undefined ) tracks.push( positionTrack );\n\n\t\t}\n\n\t\tif ( rawTracks.R !== undefined && Object.keys( rawTracks.R.curves ).length > 0 ) {\n\n\t\t\tconst rotationTrack = this.generateRotationTrack( rawTracks.modelName, rawTracks.R.curves, rawTracks.preRotation, rawTracks.postRotation, rawTracks.eulerOrder );\n\t\t\tif ( rotationTrack !== undefined ) tracks.push( rotationTrack );\n\n\t\t}\n\n\t\tif ( rawTracks.S !== undefined && Object.keys( rawTracks.S.curves ).length > 0 ) {\n\n\t\t\tconst scaleTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.S.curves, initialScale, 'scale' );\n\t\t\tif ( scaleTrack !== undefined ) tracks.push( scaleTrack );\n\n\t\t}\n\n\t\tif ( rawTracks.DeformPercent !== undefined ) {\n\n\t\t\tconst morphTrack = this.generateMorphTrack( rawTracks );\n\t\t\tif ( morphTrack !== undefined ) tracks.push( morphTrack );\n\n\t\t}\n\n\t\treturn tracks;\n\n\t}\n\n\tgenerateVectorTrack( modelName, curves, initialValue, type ) {\n\n\t\tconst times = this.getTimesForAllAxes( curves );\n\t\tconst values = this.getKeyframeTrackValues( times, curves, initialValue );\n\n\t\treturn new VectorKeyframeTrack( modelName + '.' + type, times, values );\n\n\t}\n\n\tgenerateRotationTrack( modelName, curves, preRotation, postRotation, eulerOrder ) {\n\n\t\tlet times;\n\t\tlet values;\n\n\t\tif ( curves.x !== undefined && curves.y !== undefined && curves.z !== undefined ) {\n\n\t\t\tconst result = this.interpolateRotations( curves.x, curves.y, curves.z, eulerOrder );\n\n\t\t\ttimes = result[ 0 ];\n\t\t\tvalues = result[ 1 ];\n\n\t\t}\n\n\t\tif ( preRotation !== undefined ) {\n\n\t\t\tpreRotation = preRotation.map( MathUtils.degToRad );\n\t\t\tpreRotation.push( eulerOrder );\n\n\t\t\tpreRotation = new Euler().fromArray( preRotation );\n\t\t\tpreRotation = new Quaternion().setFromEuler( preRotation );\n\n\t\t}\n\n\t\tif ( postRotation !== undefined ) {\n\n\t\t\tpostRotation = postRotation.map( MathUtils.degToRad );\n\t\t\tpostRotation.push( eulerOrder );\n\n\t\t\tpostRotation = new Euler().fromArray( postRotation );\n\t\t\tpostRotation = new Quaternion().setFromEuler( postRotation ).invert();\n\n\t\t}\n\n\t\tconst quaternion = new Quaternion();\n\t\tconst euler = new Euler();\n\n\t\tconst quaternionValues = [];\n\n\t\tif ( ! values || ! times ) return new QuaternionKeyframeTrack( modelName + '.quaternion', [ 0 ], [ 0 ] );\n\n\t\tfor ( let i = 0; i < values.length; i += 3 ) {\n\n\t\t\teuler.set( values[ i ], values[ i + 1 ], values[ i + 2 ], eulerOrder );\n\t\t\tquaternion.setFromEuler( euler );\n\n\t\t\tif ( preRotation !== undefined ) quaternion.premultiply( preRotation );\n\t\t\tif ( postRotation !== undefined ) quaternion.multiply( postRotation );\n\n\t\t\t// Check unroll\n\t\t\tif ( i > 2 ) {\n\n\t\t\t\tconst prevQuat = new Quaternion().fromArray(\n\t\t\t\t\tquaternionValues,\n\t\t\t\t\t( ( i - 3 ) / 3 ) * 4\n\t\t\t\t);\n\n\t\t\t\tif ( prevQuat.dot( quaternion ) < 0 ) {\n\n\t\t\t\t\tquaternion.set( - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tquaternion.toArray( quaternionValues, ( i / 3 ) * 4 );\n\n\t\t}\n\n\t\treturn new QuaternionKeyframeTrack( modelName + '.quaternion', times, quaternionValues );\n\n\t}\n\n\tgenerateMorphTrack( rawTracks ) {\n\n\t\tconst curves = rawTracks.DeformPercent.curves.morph;\n\t\tconst values = curves.values.map( function ( val ) {\n\n\t\t\treturn val / 100;\n\n\t\t} );\n\n\t\tconst morphNum = sceneGraph.getObjectByName( rawTracks.modelName ).morphTargetDictionary[ rawTracks.morphName ];\n\n\t\treturn new NumberKeyframeTrack( rawTracks.modelName + '.morphTargetInfluences[' + morphNum + ']', curves.times, values );\n\n\t}\n\n\t// For all animated objects, times are defined separately for each axis\n\t// Here we'll combine the times into one sorted array without duplicates\n\tgetTimesForAllAxes( curves ) {\n\n\t\tlet times = [];\n\n\t\t// first join together the times for each axis, if defined\n\t\tif ( curves.x !== undefined ) times = times.concat( curves.x.times );\n\t\tif ( curves.y !== undefined ) times = times.concat( curves.y.times );\n\t\tif ( curves.z !== undefined ) times = times.concat( curves.z.times );\n\n\t\t// then sort them\n\t\ttimes = times.sort( function ( a, b ) {\n\n\t\t\treturn a - b;\n\n\t\t} );\n\n\t\t// and remove duplicates\n\t\tif ( times.length > 1 ) {\n\n\t\t\tlet targetIndex = 1;\n\t\t\tlet lastValue = times[ 0 ];\n\t\t\tfor ( let i = 1; i < times.length; i ++ ) {\n\n\t\t\t\tconst currentValue = times[ i ];\n\t\t\t\tif ( currentValue !== lastValue ) {\n\n\t\t\t\t\ttimes[ targetIndex ] = currentValue;\n\t\t\t\t\tlastValue = currentValue;\n\t\t\t\t\ttargetIndex ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttimes = times.slice( 0, targetIndex );\n\n\t\t}\n\n\t\treturn times;\n\n\t}\n\n\tgetKeyframeTrackValues( times, curves, initialValue ) {\n\n\t\tconst prevValue = initialValue;\n\n\t\tconst values = [];\n\n\t\tlet xIndex = - 1;\n\t\tlet yIndex = - 1;\n\t\tlet zIndex = - 1;\n\n\t\ttimes.forEach( function ( time ) {\n\n\t\t\tif ( curves.x ) xIndex = curves.x.times.indexOf( time );\n\t\t\tif ( curves.y ) yIndex = curves.y.times.indexOf( time );\n\t\t\tif ( curves.z ) zIndex = curves.z.times.indexOf( time );\n\n\t\t\t// if there is an x value defined for this frame, use that\n\t\t\tif ( xIndex !== - 1 ) {\n\n\t\t\t\tconst xValue = curves.x.values[ xIndex ];\n\t\t\t\tvalues.push( xValue );\n\t\t\t\tprevValue[ 0 ] = xValue;\n\n\t\t\t} else {\n\n\t\t\t\t// otherwise use the x value from the previous frame\n\t\t\t\tvalues.push( prevValue[ 0 ] );\n\n\t\t\t}\n\n\t\t\tif ( yIndex !== - 1 ) {\n\n\t\t\t\tconst yValue = curves.y.values[ yIndex ];\n\t\t\t\tvalues.push( yValue );\n\t\t\t\tprevValue[ 1 ] = yValue;\n\n\t\t\t} else {\n\n\t\t\t\tvalues.push( prevValue[ 1 ] );\n\n\t\t\t}\n\n\t\t\tif ( zIndex !== - 1 ) {\n\n\t\t\t\tconst zValue = curves.z.values[ zIndex ];\n\t\t\t\tvalues.push( zValue );\n\t\t\t\tprevValue[ 2 ] = zValue;\n\n\t\t\t} else {\n\n\t\t\t\tvalues.push( prevValue[ 2 ] );\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn values;\n\n\t}\n\n\t// Rotations are defined as Euler angles which can have values of any size\n\t// These will be converted to quaternions which don't support values greater than\n\t// PI, so we'll interpolate large rotations\n\tinterpolateRotations( curvex, curvey, curvez, eulerOrder ) {\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\t// Add first frame\n\t\ttimes.push( curvex.times[ 0 ] );\n\t\tvalues.push( MathUtils.degToRad( curvex.values[ 0 ] ) );\n\t\tvalues.push( MathUtils.degToRad( curvey.values[ 0 ] ) );\n\t\tvalues.push( MathUtils.degToRad( curvez.values[ 0 ] ) );\n\n\t\tfor ( let i = 1; i < curvex.values.length; i ++ ) {\n\n\t\t\tconst initialValue = [\n\t\t\t\tcurvex.values[ i - 1 ],\n\t\t\t\tcurvey.values[ i - 1 ],\n\t\t\t\tcurvez.values[ i - 1 ],\n\t\t\t];\n\n\t\t\tif ( isNaN( initialValue[ 0 ] ) || isNaN( initialValue[ 1 ] ) || isNaN( initialValue[ 2 ] ) ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst initialValueRad = initialValue.map( MathUtils.degToRad );\n\n\t\t\tconst currentValue = [\n\t\t\t\tcurvex.values[ i ],\n\t\t\t\tcurvey.values[ i ],\n\t\t\t\tcurvez.values[ i ],\n\t\t\t];\n\n\t\t\tif ( isNaN( currentValue[ 0 ] ) || isNaN( currentValue[ 1 ] ) || isNaN( currentValue[ 2 ] ) ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValueRad = currentValue.map( MathUtils.degToRad );\n\n\t\t\tconst valuesSpan = [\n\t\t\t\tcurrentValue[ 0 ] - initialValue[ 0 ],\n\t\t\t\tcurrentValue[ 1 ] - initialValue[ 1 ],\n\t\t\t\tcurrentValue[ 2 ] - initialValue[ 2 ],\n\t\t\t];\n\n\t\t\tconst absoluteSpan = [\n\t\t\t\tMath.abs( valuesSpan[ 0 ] ),\n\t\t\t\tMath.abs( valuesSpan[ 1 ] ),\n\t\t\t\tMath.abs( valuesSpan[ 2 ] ),\n\t\t\t];\n\n\t\t\tif ( absoluteSpan[ 0 ] >= 180 || absoluteSpan[ 1 ] >= 180 || absoluteSpan[ 2 ] >= 180 ) {\n\n\t\t\t\tconst maxAbsSpan = Math.max( ...absoluteSpan );\n\n\t\t\t\tconst numSubIntervals = maxAbsSpan / 180;\n\n\t\t\t\tconst E1 = new Euler( ...initialValueRad, eulerOrder );\n\t\t\t\tconst E2 = new Euler( ...currentValueRad, eulerOrder );\n\n\t\t\t\tconst Q1 = new Quaternion().setFromEuler( E1 );\n\t\t\t\tconst Q2 = new Quaternion().setFromEuler( E2 );\n\n\t\t\t\t// Check unroll\n\t\t\t\tif ( Q1.dot( Q2 ) ) {\n\n\t\t\t\t\tQ2.set( - Q2.x, - Q2.y, - Q2.z, - Q2.w );\n\n\t\t\t\t}\n\n\t\t\t\t// Interpolate\n\t\t\t\tconst initialTime = curvex.times[ i - 1 ];\n\t\t\t\tconst timeSpan = curvex.times[ i ] - initialTime;\n\n\t\t\t\tconst Q = new Quaternion();\n\t\t\t\tconst E = new Euler();\n\t\t\t\tfor ( let t = 0; t < 1; t += 1 / numSubIntervals ) {\n\n\t\t\t\t\tQ.copy( Q1.clone().slerp( Q2.clone(), t ) );\n\n\t\t\t\t\ttimes.push( initialTime + t * timeSpan );\n\t\t\t\t\tE.setFromQuaternion( Q, eulerOrder );\n\n\t\t\t\t\tvalues.push( E.x );\n\t\t\t\t\tvalues.push( E.y );\n\t\t\t\t\tvalues.push( E.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttimes.push( curvex.times[ i ] );\n\t\t\t\tvalues.push( MathUtils.degToRad( curvex.values[ i ] ) );\n\t\t\t\tvalues.push( MathUtils.degToRad( curvey.values[ i ] ) );\n\t\t\t\tvalues.push( MathUtils.degToRad( curvez.values[ i ] ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn [ times, values ];\n\n\t}\n\n}\n\n// parse an FBX file in ASCII format\nclass TextParser {\n\n\tgetPrevNode() {\n\n\t\treturn this.nodeStack[ this.currentIndent - 2 ];\n\n\t}\n\n\tgetCurrentNode() {\n\n\t\treturn this.nodeStack[ this.currentIndent - 1 ];\n\n\t}\n\n\tgetCurrentProp() {\n\n\t\treturn this.currentProp;\n\n\t}\n\n\tpushStack( node ) {\n\n\t\tthis.nodeStack.push( node );\n\t\tthis.currentIndent += 1;\n\n\t}\n\n\tpopStack() {\n\n\t\tthis.nodeStack.pop();\n\t\tthis.currentIndent -= 1;\n\n\t}\n\n\tsetCurrentProp( val, name ) {\n\n\t\tthis.currentProp = val;\n\t\tthis.currentPropName = name;\n\n\t}\n\n\tparse( text ) {\n\n\t\tthis.currentIndent = 0;\n\n\t\tthis.allNodes = new FBXTree();\n\t\tthis.nodeStack = [];\n\t\tthis.currentProp = [];\n\t\tthis.currentPropName = '';\n\n\t\tconst scope = this;\n\n\t\tconst split = text.split( /[\\r\\n]+/ );\n\n\t\tsplit.forEach( function ( line, i ) {\n\n\t\t\tconst matchComment = line.match( /^[\\s\\t]*;/ );\n\t\t\tconst matchEmpty = line.match( /^[\\s\\t]*$/ );\n\n\t\t\tif ( matchComment || matchEmpty ) return;\n\n\t\t\tconst matchBeginning = line.match( '^\\\\t{' + scope.currentIndent + '}(\\\\w+):(.*){', '' );\n\t\t\tconst matchProperty = line.match( '^\\\\t{' + ( scope.currentIndent ) + '}(\\\\w+):[\\\\s\\\\t\\\\r\\\\n](.*)' );\n\t\t\tconst matchEnd = line.match( '^\\\\t{' + ( scope.currentIndent - 1 ) + '}}' );\n\n\t\t\tif ( matchBeginning ) {\n\n\t\t\t\tscope.parseNodeBegin( line, matchBeginning );\n\n\t\t\t} else if ( matchProperty ) {\n\n\t\t\t\tscope.parseNodeProperty( line, matchProperty, split[ ++ i ] );\n\n\t\t\t} else if ( matchEnd ) {\n\n\t\t\t\tscope.popStack();\n\n\t\t\t} else if ( line.match( /^[^\\s\\t}]/ ) ) {\n\n\t\t\t\t// large arrays are split over multiple lines terminated with a ',' character\n\t\t\t\t// if this is encountered the line needs to be joined to the previous line\n\t\t\t\tscope.parseNodePropertyContinued( line );\n\n\t\t\t}\n\n\t\t} );\n\n\t\treturn this.allNodes;\n\n\t}\n\n\tparseNodeBegin( line, property ) {\n\n\t\tconst nodeName = property[ 1 ].trim().replace( /^\"/, '' ).replace( /\"$/, '' );\n\n\t\tconst nodeAttrs = property[ 2 ].split( ',' ).map( function ( attr ) {\n\n\t\t\treturn attr.trim().replace( /^\"/, '' ).replace( /\"$/, '' );\n\n\t\t} );\n\n\t\tconst node = { name: nodeName };\n\t\tconst attrs = this.parseNodeAttr( nodeAttrs );\n\n\t\tconst currentNode = this.getCurrentNode();\n\n\t\t// a top node\n\t\tif ( this.currentIndent === 0 ) {\n\n\t\t\tthis.allNodes.add( nodeName, node );\n\n\t\t} else { // a subnode\n\n\t\t\t// if the subnode already exists, append it\n\t\t\tif ( nodeName in currentNode ) {\n\n\t\t\t\t// special case Pose needs PoseNodes as an array\n\t\t\t\tif ( nodeName === 'PoseNode' ) {\n\n\t\t\t\t\tcurrentNode.PoseNode.push( node );\n\n\t\t\t\t} else if ( currentNode[ nodeName ].id !== undefined ) {\n\n\t\t\t\t\tcurrentNode[ nodeName ] = {};\n\t\t\t\t\tcurrentNode[ nodeName ][ currentNode[ nodeName ].id ] = currentNode[ nodeName ];\n\n\t\t\t\t}\n\n\t\t\t\tif ( attrs.id !== '' ) currentNode[ nodeName ][ attrs.id ] = node;\n\n\t\t\t} else if ( typeof attrs.id === 'number' ) {\n\n\t\t\t\tcurrentNode[ nodeName ] = {};\n\t\t\t\tcurrentNode[ nodeName ][ attrs.id ] = node;\n\n\t\t\t} else if ( nodeName !== 'Properties70' ) {\n\n\t\t\t\tif ( nodeName === 'PoseNode' )\tcurrentNode[ nodeName ] = [ node ];\n\t\t\t\telse currentNode[ nodeName ] = node;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( typeof attrs.id === 'number' ) node.id = attrs.id;\n\t\tif ( attrs.name !== '' ) node.attrName = attrs.name;\n\t\tif ( attrs.type !== '' ) node.attrType = attrs.type;\n\n\t\tthis.pushStack( node );\n\n\t}\n\n\tparseNodeAttr( attrs ) {\n\n\t\tlet id = attrs[ 0 ];\n\n\t\tif ( attrs[ 0 ] !== '' ) {\n\n\t\t\tid = parseInt( attrs[ 0 ] );\n\n\t\t\tif ( isNaN( id ) ) {\n\n\t\t\t\tid = attrs[ 0 ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet name = '', type = '';\n\n\t\tif ( attrs.length > 1 ) {\n\n\t\t\tname = attrs[ 1 ].replace( /^(\\w+)::/, '' );\n\t\t\ttype = attrs[ 2 ];\n\n\t\t}\n\n\t\treturn { id: id, name: name, type: type };\n\n\t}\n\n\tparseNodeProperty( line, property, contentLine ) {\n\n\t\tlet propName = property[ 1 ].replace( /^\"/, '' ).replace( /\"$/, '' ).trim();\n\t\tlet propValue = property[ 2 ].replace( /^\"/, '' ).replace( /\"$/, '' ).trim();\n\n\t\t// for special case: base64 image data follows \"Content: ,\" line\n\t\t//\tContent: ,\n\t\t//\t \"/9j/4RDaRXhpZgAATU0A...\"\n\t\tif ( propName === 'Content' && propValue === ',' ) {\n\n\t\t\tpropValue = contentLine.replace( /\"/g, '' ).replace( /,$/, '' ).trim();\n\n\t\t}\n\n\t\tconst currentNode = this.getCurrentNode();\n\t\tconst parentName = currentNode.name;\n\n\t\tif ( parentName === 'Properties70' ) {\n\n\t\t\tthis.parseNodeSpecialProperty( line, propName, propValue );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Connections\n\t\tif ( propName === 'C' ) {\n\n\t\t\tconst connProps = propValue.split( ',' ).slice( 1 );\n\t\t\tconst from = parseInt( connProps[ 0 ] );\n\t\t\tconst to = parseInt( connProps[ 1 ] );\n\n\t\t\tlet rest = propValue.split( ',' ).slice( 3 );\n\n\t\t\trest = rest.map( function ( elem ) {\n\n\t\t\t\treturn elem.trim().replace( /^\"/, '' );\n\n\t\t\t} );\n\n\t\t\tpropName = 'connections';\n\t\t\tpropValue = [ from, to ];\n\t\t\tappend( propValue, rest );\n\n\t\t\tif ( currentNode[ propName ] === undefined ) {\n\n\t\t\t\tcurrentNode[ propName ] = [];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Node\n\t\tif ( propName === 'Node' ) currentNode.id = propValue;\n\n\t\t// connections\n\t\tif ( propName in currentNode && Array.isArray( currentNode[ propName ] ) ) {\n\n\t\t\tcurrentNode[ propName ].push( propValue );\n\n\t\t} else {\n\n\t\t\tif ( propName !== 'a' ) currentNode[ propName ] = propValue;\n\t\t\telse currentNode.a = propValue;\n\n\t\t}\n\n\t\tthis.setCurrentProp( currentNode, propName );\n\n\t\t// convert string to array, unless it ends in ',' in which case more will be added to it\n\t\tif ( propName === 'a' && propValue.slice( - 1 ) !== ',' ) {\n\n\t\t\tcurrentNode.a = parseNumberArray( propValue );\n\n\t\t}\n\n\t}\n\n\tparseNodePropertyContinued( line ) {\n\n\t\tconst currentNode = this.getCurrentNode();\n\n\t\tcurrentNode.a += line;\n\n\t\t// if the line doesn't end in ',' we have reached the end of the property value\n\t\t// so convert the string to an array\n\t\tif ( line.slice( - 1 ) !== ',' ) {\n\n\t\t\tcurrentNode.a = parseNumberArray( currentNode.a );\n\n\t\t}\n\n\t}\n\n\t// parse \"Property70\"\n\tparseNodeSpecialProperty( line, propName, propValue ) {\n\n\t\t// split this\n\t\t// P: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",1,1,1\n\t\t// into array like below\n\t\t// [\"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\", \"1,1,1\" ]\n\t\tconst props = propValue.split( '\",' ).map( function ( prop ) {\n\n\t\t\treturn prop.trim().replace( /^\\\"/, '' ).replace( /\\s/, '_' );\n\n\t\t} );\n\n\t\tconst innerPropName = props[ 0 ];\n\t\tconst innerPropType1 = props[ 1 ];\n\t\tconst innerPropType2 = props[ 2 ];\n\t\tconst innerPropFlag = props[ 3 ];\n\t\tlet innerPropValue = props[ 4 ];\n\n\t\t// cast values where needed, otherwise leave as strings\n\t\tswitch ( innerPropType1 ) {\n\n\t\t\tcase 'int':\n\t\t\tcase 'enum':\n\t\t\tcase 'bool':\n\t\t\tcase 'ULongLong':\n\t\t\tcase 'double':\n\t\t\tcase 'Number':\n\t\t\tcase 'FieldOfView':\n\t\t\t\tinnerPropValue = parseFloat( innerPropValue );\n\t\t\t\tbreak;\n\n\t\t\tcase 'Color':\n\t\t\tcase 'ColorRGB':\n\t\t\tcase 'Vector3D':\n\t\t\tcase 'Lcl_Translation':\n\t\t\tcase 'Lcl_Rotation':\n\t\t\tcase 'Lcl_Scaling':\n\t\t\t\tinnerPropValue = parseNumberArray( innerPropValue );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\t// CAUTION: these props must append to parent's parent\n\t\tthis.getPrevNode()[ innerPropName ] = {\n\n\t\t\t'type': innerPropType1,\n\t\t\t'type2': innerPropType2,\n\t\t\t'flag': innerPropFlag,\n\t\t\t'value': innerPropValue\n\n\t\t};\n\n\t\tthis.setCurrentProp( this.getPrevNode(), innerPropName );\n\n\t}\n\n}\n\n// Parse an FBX file in Binary format\nclass BinaryParser {\n\n\tparse( buffer ) {\n\n\t\tconst reader = new BinaryReader( buffer );\n\t\treader.skip( 23 ); // skip magic 23 bytes\n\n\t\tconst version = reader.getUint32();\n\n\t\tif ( version < 6400 ) {\n\n\t\t\tthrow new Error( 'THREE.FBXLoader: FBX version not supported, FileVersion: ' + version );\n\n\t\t}\n\n\t\tconst allNodes = new FBXTree();\n\n\t\twhile ( ! this.endOfContent( reader ) ) {\n\n\t\t\tconst node = this.parseNode( reader, version );\n\t\t\tif ( node !== null ) allNodes.add( node.name, node );\n\n\t\t}\n\n\t\treturn allNodes;\n\n\t}\n\n\t// Check if reader has reached the end of content.\n\tendOfContent( reader ) {\n\n\t\t// footer size: 160bytes + 16-byte alignment padding\n\t\t// - 16bytes: magic\n\t\t// - padding til 16-byte alignment (at least 1byte?)\n\t\t//\t(seems like some exporters embed fixed 15 or 16bytes?)\n\t\t// - 4bytes: magic\n\t\t// - 4bytes: version\n\t\t// - 120bytes: zero\n\t\t// - 16bytes: magic\n\t\tif ( reader.size() % 16 === 0 ) {\n\n\t\t\treturn ( ( reader.getOffset() + 160 + 16 ) & ~ 0xf ) >= reader.size();\n\n\t\t} else {\n\n\t\t\treturn reader.getOffset() + 160 + 16 >= reader.size();\n\n\t\t}\n\n\t}\n\n\t// recursively parse nodes until the end of the file is reached\n\tparseNode( reader, version ) {\n\n\t\tconst node = {};\n\n\t\t// The first three data sizes depends on version.\n\t\tconst endOffset = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32();\n\t\tconst numProperties = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32();\n\n\t\t( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); // the returned propertyListLen is not used\n\n\t\tconst nameLen = reader.getUint8();\n\t\tconst name = reader.getString( nameLen );\n\n\t\t// Regards this node as NULL-record if endOffset is zero\n\t\tif ( endOffset === 0 ) return null;\n\n\t\tconst propertyList = [];\n\n\t\tfor ( let i = 0; i < numProperties; i ++ ) {\n\n\t\t\tpropertyList.push( this.parseProperty( reader ) );\n\n\t\t}\n\n\t\t// Regards the first three elements in propertyList as id, attrName, and attrType\n\t\tconst id = propertyList.length > 0 ? propertyList[ 0 ] : '';\n\t\tconst attrName = propertyList.length > 1 ? propertyList[ 1 ] : '';\n\t\tconst attrType = propertyList.length > 2 ? propertyList[ 2 ] : '';\n\n\t\t// check if this node represents just a single property\n\t\t// like (name, 0) set or (name2, [0, 1, 2]) set of {name: 0, name2: [0, 1, 2]}\n\t\tnode.singleProperty = ( numProperties === 1 && reader.getOffset() === endOffset ) ? true : false;\n\n\t\twhile ( endOffset > reader.getOffset() ) {\n\n\t\t\tconst subNode = this.parseNode( reader, version );\n\n\t\t\tif ( subNode !== null ) this.parseSubNode( name, node, subNode );\n\n\t\t}\n\n\t\tnode.propertyList = propertyList; // raw property list used by parent\n\n\t\tif ( typeof id === 'number' ) node.id = id;\n\t\tif ( attrName !== '' ) node.attrName = attrName;\n\t\tif ( attrType !== '' ) node.attrType = attrType;\n\t\tif ( name !== '' ) node.name = name;\n\n\t\treturn node;\n\n\t}\n\n\tparseSubNode( name, node, subNode ) {\n\n\t\t// special case: child node is single property\n\t\tif ( subNode.singleProperty === true ) {\n\n\t\t\tconst value = subNode.propertyList[ 0 ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\n\t\t\t\tnode[ subNode.name ] = subNode;\n\n\t\t\t\tsubNode.a = value;\n\n\t\t\t} else {\n\n\t\t\t\tnode[ subNode.name ] = value;\n\n\t\t\t}\n\n\t\t} else if ( name === 'Connections' && subNode.name === 'C' ) {\n\n\t\t\tconst array = [];\n\n\t\t\tsubNode.propertyList.forEach( function ( property, i ) {\n\n\t\t\t\t// first Connection is FBX type (OO, OP, etc.). We'll discard these\n\t\t\t\tif ( i !== 0 ) array.push( property );\n\n\t\t\t} );\n\n\t\t\tif ( node.connections === undefined ) {\n\n\t\t\t\tnode.connections = [];\n\n\t\t\t}\n\n\t\t\tnode.connections.push( array );\n\n\t\t} else if ( subNode.name === 'Properties70' ) {\n\n\t\t\tconst keys = Object.keys( subNode );\n\n\t\t\tkeys.forEach( function ( key ) {\n\n\t\t\t\tnode[ key ] = subNode[ key ];\n\n\t\t\t} );\n\n\t\t} else if ( name === 'Properties70' && subNode.name === 'P' ) {\n\n\t\t\tlet innerPropName = subNode.propertyList[ 0 ];\n\t\t\tlet innerPropType1 = subNode.propertyList[ 1 ];\n\t\t\tconst innerPropType2 = subNode.propertyList[ 2 ];\n\t\t\tconst innerPropFlag = subNode.propertyList[ 3 ];\n\t\t\tlet innerPropValue;\n\n\t\t\tif ( innerPropName.indexOf( 'Lcl ' ) === 0 ) innerPropName = innerPropName.replace( 'Lcl ', 'Lcl_' );\n\t\t\tif ( innerPropType1.indexOf( 'Lcl ' ) === 0 ) innerPropType1 = innerPropType1.replace( 'Lcl ', 'Lcl_' );\n\n\t\t\tif ( innerPropType1 === 'Color' || innerPropType1 === 'ColorRGB' || innerPropType1 === 'Vector' || innerPropType1 === 'Vector3D' || innerPropType1.indexOf( 'Lcl_' ) === 0 ) {\n\n\t\t\t\tinnerPropValue = [\n\t\t\t\t\tsubNode.propertyList[ 4 ],\n\t\t\t\t\tsubNode.propertyList[ 5 ],\n\t\t\t\t\tsubNode.propertyList[ 6 ]\n\t\t\t\t];\n\n\t\t\t} else {\n\n\t\t\t\tinnerPropValue = subNode.propertyList[ 4 ];\n\n\t\t\t}\n\n\t\t\t// this will be copied to parent, see above\n\t\t\tnode[ innerPropName ] = {\n\n\t\t\t\t'type': innerPropType1,\n\t\t\t\t'type2': innerPropType2,\n\t\t\t\t'flag': innerPropFlag,\n\t\t\t\t'value': innerPropValue\n\n\t\t\t};\n\n\t\t} else if ( node[ subNode.name ] === undefined ) {\n\n\t\t\tif ( typeof subNode.id === 'number' ) {\n\n\t\t\t\tnode[ subNode.name ] = {};\n\t\t\t\tnode[ subNode.name ][ subNode.id ] = subNode;\n\n\t\t\t} else {\n\n\t\t\t\tnode[ subNode.name ] = subNode;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( subNode.name === 'PoseNode' ) {\n\n\t\t\t\tif ( ! Array.isArray( node[ subNode.name ] ) ) {\n\n\t\t\t\t\tnode[ subNode.name ] = [ node[ subNode.name ] ];\n\n\t\t\t\t}\n\n\t\t\t\tnode[ subNode.name ].push( subNode );\n\n\t\t\t} else if ( node[ subNode.name ][ subNode.id ] === undefined ) {\n\n\t\t\t\tnode[ subNode.name ][ subNode.id ] = subNode;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tparseProperty( reader ) {\n\n\t\tconst type = reader.getString( 1 );\n\t\tlet length;\n\n\t\tswitch ( type ) {\n\n\t\t\tcase 'C':\n\t\t\t\treturn reader.getBoolean();\n\n\t\t\tcase 'D':\n\t\t\t\treturn reader.getFloat64();\n\n\t\t\tcase 'F':\n\t\t\t\treturn reader.getFloat32();\n\n\t\t\tcase 'I':\n\t\t\t\treturn reader.getInt32();\n\n\t\t\tcase 'L':\n\t\t\t\treturn reader.getInt64();\n\n\t\t\tcase 'R':\n\t\t\t\tlength = reader.getUint32();\n\t\t\t\treturn reader.getArrayBuffer( length );\n\n\t\t\tcase 'S':\n\t\t\t\tlength = reader.getUint32();\n\t\t\t\treturn reader.getString( length );\n\n\t\t\tcase 'Y':\n\t\t\t\treturn reader.getInt16();\n\n\t\t\tcase 'b':\n\t\t\tcase 'c':\n\t\t\tcase 'd':\n\t\t\tcase 'f':\n\t\t\tcase 'i':\n\t\t\tcase 'l':\n\n\t\t\t\tconst arrayLength = reader.getUint32();\n\t\t\t\tconst encoding = reader.getUint32(); // 0: non-compressed, 1: compressed\n\t\t\t\tconst compressedLength = reader.getUint32();\n\n\t\t\t\tif ( encoding === 0 ) {\n\n\t\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\tcase 'c':\n\t\t\t\t\t\t\treturn reader.getBooleanArray( arrayLength );\n\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\treturn reader.getFloat64Array( arrayLength );\n\n\t\t\t\t\t\tcase 'f':\n\t\t\t\t\t\t\treturn reader.getFloat32Array( arrayLength );\n\n\t\t\t\t\t\tcase 'i':\n\t\t\t\t\t\t\treturn reader.getInt32Array( arrayLength );\n\n\t\t\t\t\t\tcase 'l':\n\t\t\t\t\t\t\treturn reader.getInt64Array( arrayLength );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst data = fflate.unzlibSync( new Uint8Array( reader.getArrayBuffer( compressedLength ) ) );\n\t\t\t\tconst reader2 = new BinaryReader( data.buffer );\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 'b':\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\treturn reader2.getBooleanArray( arrayLength );\n\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\treturn reader2.getFloat64Array( arrayLength );\n\n\t\t\t\t\tcase 'f':\n\t\t\t\t\t\treturn reader2.getFloat32Array( arrayLength );\n\n\t\t\t\t\tcase 'i':\n\t\t\t\t\t\treturn reader2.getInt32Array( arrayLength );\n\n\t\t\t\t\tcase 'l':\n\t\t\t\t\t\treturn reader2.getInt64Array( arrayLength );\n\n\t\t\t\t}\n\n\t\t\t\tbreak; // cannot happen but is required by the DeepScan\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.FBXLoader: Unknown property type ' + type );\n\n\t\t}\n\n\t}\n\n}\n\nclass BinaryReader {\n\n\tconstructor( buffer, littleEndian ) {\n\n\t\tthis.dv = new DataView( buffer );\n\t\tthis.offset = 0;\n\t\tthis.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true;\n\t\tthis._textDecoder = new TextDecoder();\n\n\t}\n\n\tgetOffset() {\n\n\t\treturn this.offset;\n\n\t}\n\n\tsize() {\n\n\t\treturn this.dv.buffer.byteLength;\n\n\t}\n\n\tskip( length ) {\n\n\t\tthis.offset += length;\n\n\t}\n\n\t// seems like true/false representation depends on exporter.\n\t// true: 1 or 'Y'(=0x59), false: 0 or 'T'(=0x54)\n\t// then sees LSB.\n\tgetBoolean() {\n\n\t\treturn ( this.getUint8() & 1 ) === 1;\n\n\t}\n\n\tgetBooleanArray( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getBoolean() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetUint8() {\n\n\t\tconst value = this.dv.getUint8( this.offset );\n\t\tthis.offset += 1;\n\t\treturn value;\n\n\t}\n\n\tgetInt16() {\n\n\t\tconst value = this.dv.getInt16( this.offset, this.littleEndian );\n\t\tthis.offset += 2;\n\t\treturn value;\n\n\t}\n\n\tgetInt32() {\n\n\t\tconst value = this.dv.getInt32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t}\n\n\tgetInt32Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getInt32() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetUint32() {\n\n\t\tconst value = this.dv.getUint32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t}\n\n\t// JavaScript doesn't support 64-bit integer so calculate this here\n\t// 1 << 32 will return 1 so using multiply operation instead here.\n\t// There's a possibility that this method returns wrong value if the value\n\t// is out of the range between Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER.\n\t// TODO: safely handle 64-bit integer\n\tgetInt64() {\n\n\t\tlet low, high;\n\n\t\tif ( this.littleEndian ) {\n\n\t\t\tlow = this.getUint32();\n\t\t\thigh = this.getUint32();\n\n\t\t} else {\n\n\t\t\thigh = this.getUint32();\n\t\t\tlow = this.getUint32();\n\n\t\t}\n\n\t\t// calculate negative value\n\t\tif ( high & 0x80000000 ) {\n\n\t\t\thigh = ~ high & 0xFFFFFFFF;\n\t\t\tlow = ~ low & 0xFFFFFFFF;\n\n\t\t\tif ( low === 0xFFFFFFFF ) high = ( high + 1 ) & 0xFFFFFFFF;\n\n\t\t\tlow = ( low + 1 ) & 0xFFFFFFFF;\n\n\t\t\treturn - ( high * 0x100000000 + low );\n\n\t\t}\n\n\t\treturn high * 0x100000000 + low;\n\n\t}\n\n\tgetInt64Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getInt64() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\t// Note: see getInt64() comment\n\tgetUint64() {\n\n\t\tlet low, high;\n\n\t\tif ( this.littleEndian ) {\n\n\t\t\tlow = this.getUint32();\n\t\t\thigh = this.getUint32();\n\n\t\t} else {\n\n\t\t\thigh = this.getUint32();\n\t\t\tlow = this.getUint32();\n\n\t\t}\n\n\t\treturn high * 0x100000000 + low;\n\n\t}\n\n\tgetFloat32() {\n\n\t\tconst value = this.dv.getFloat32( this.offset, this.littleEndian );\n\t\tthis.offset += 4;\n\t\treturn value;\n\n\t}\n\n\tgetFloat32Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getFloat32() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetFloat64() {\n\n\t\tconst value = this.dv.getFloat64( this.offset, this.littleEndian );\n\t\tthis.offset += 8;\n\t\treturn value;\n\n\t}\n\n\tgetFloat64Array( size ) {\n\n\t\tconst a = [];\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\ta.push( this.getFloat64() );\n\n\t\t}\n\n\t\treturn a;\n\n\t}\n\n\tgetArrayBuffer( size ) {\n\n\t\tconst value = this.dv.buffer.slice( this.offset, this.offset + size );\n\t\tthis.offset += size;\n\t\treturn value;\n\n\t}\n\n\tgetString( size ) {\n\n\t\tconst start = this.offset;\n\t\tlet a = new Uint8Array( this.dv.buffer, start, size );\n\n\t\tthis.skip( size );\n\n\t\tconst nullByte = a.indexOf( 0 );\n\t\tif ( nullByte >= 0 ) a = new Uint8Array( this.dv.buffer, start, nullByte );\n\n\t\treturn this._textDecoder.decode( a );\n\n\t}\n\n}\n\n// FBXTree holds a representation of the FBX data, returned by the TextParser ( FBX ASCII format)\n// and BinaryParser( FBX Binary format)\nclass FBXTree {\n\n\tadd( key, val ) {\n\n\t\tthis[ key ] = val;\n\n\t}\n\n}\n\n// ************** UTILITY FUNCTIONS **************\n\nfunction isFbxFormatBinary( buffer ) {\n\n\tconst CORRECT = 'Kaydara\\u0020FBX\\u0020Binary\\u0020\\u0020\\0';\n\n\treturn buffer.byteLength >= CORRECT.length && CORRECT === convertArrayBufferToString( buffer, 0, CORRECT.length );\n\n}\n\nfunction isFbxFormatASCII( text ) {\n\n\tconst CORRECT = [ 'K', 'a', 'y', 'd', 'a', 'r', 'a', '\\\\', 'F', 'B', 'X', '\\\\', 'B', 'i', 'n', 'a', 'r', 'y', '\\\\', '\\\\' ];\n\n\tlet cursor = 0;\n\n\tfunction read( offset ) {\n\n\t\tconst result = text[ offset - 1 ];\n\t\ttext = text.slice( cursor + offset );\n\t\tcursor ++;\n\t\treturn result;\n\n\t}\n\n\tfor ( let i = 0; i < CORRECT.length; ++ i ) {\n\n\t\tconst num = read( 1 );\n\t\tif ( num === CORRECT[ i ] ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nfunction getFbxVersion( text ) {\n\n\tconst versionRegExp = /FBXVersion: (\\d+)/;\n\tconst match = text.match( versionRegExp );\n\n\tif ( match ) {\n\n\t\tconst version = parseInt( match[ 1 ] );\n\t\treturn version;\n\n\t}\n\n\tthrow new Error( 'THREE.FBXLoader: Cannot find the version number for the file given.' );\n\n}\n\n// Converts FBX ticks into real time seconds.\nfunction convertFBXTimeToSeconds( time ) {\n\n\treturn time / 46186158000;\n\n}\n\nconst dataArray = [];\n\n// extracts the data from the correct position in the FBX array based on indexing type\nfunction getData( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) {\n\n\tlet index;\n\n\tswitch ( infoObject.mappingType ) {\n\n\t\tcase 'ByPolygonVertex' :\n\t\t\tindex = polygonVertexIndex;\n\t\t\tbreak;\n\t\tcase 'ByPolygon' :\n\t\t\tindex = polygonIndex;\n\t\t\tbreak;\n\t\tcase 'ByVertice' :\n\t\t\tindex = vertexIndex;\n\t\t\tbreak;\n\t\tcase 'AllSame' :\n\t\t\tindex = infoObject.indices[ 0 ];\n\t\t\tbreak;\n\t\tdefault :\n\t\t\tconsole.warn( 'THREE.FBXLoader: unknown attribute mapping type ' + infoObject.mappingType );\n\n\t}\n\n\tif ( infoObject.referenceType === 'IndexToDirect' ) index = infoObject.indices[ index ];\n\n\tconst from = index * infoObject.dataSize;\n\tconst to = from + infoObject.dataSize;\n\n\treturn slice( dataArray, infoObject.buffer, from, to );\n\n}\n\nconst tempEuler = new Euler();\nconst tempVec = new Vector3();\n\n// generate transformation from FBX transform data\n// ref: https://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_10CDD63C_79C1_4F2D_BB28_AD2BE65A02ED_htm\n// ref: http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/_transformations_2main_8cxx-example.html,topicNumber=cpp_ref__transformations_2main_8cxx_example_htmlfc10a1e1-b18d-4e72-9dc0-70d0f1959f5e\nfunction generateTransform( transformData ) {\n\n\tconst lTranslationM = new Matrix4();\n\tconst lPreRotationM = new Matrix4();\n\tconst lRotationM = new Matrix4();\n\tconst lPostRotationM = new Matrix4();\n\n\tconst lScalingM = new Matrix4();\n\tconst lScalingPivotM = new Matrix4();\n\tconst lScalingOffsetM = new Matrix4();\n\tconst lRotationOffsetM = new Matrix4();\n\tconst lRotationPivotM = new Matrix4();\n\n\tconst lParentGX = new Matrix4();\n\tconst lParentLX = new Matrix4();\n\tconst lGlobalT = new Matrix4();\n\n\tconst inheritType = ( transformData.inheritType ) ? transformData.inheritType : 0;\n\n\tif ( transformData.translation ) lTranslationM.setPosition( tempVec.fromArray( transformData.translation ) );\n\n\tif ( transformData.preRotation ) {\n\n\t\tconst array = transformData.preRotation.map( MathUtils.degToRad );\n\t\tarray.push( transformData.eulerOrder || Euler.DEFAULT_ORDER );\n\t\tlPreRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );\n\n\t}\n\n\tif ( transformData.rotation ) {\n\n\t\tconst array = transformData.rotation.map( MathUtils.degToRad );\n\t\tarray.push( transformData.eulerOrder || Euler.DEFAULT_ORDER );\n\t\tlRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );\n\n\t}\n\n\tif ( transformData.postRotation ) {\n\n\t\tconst array = transformData.postRotation.map( MathUtils.degToRad );\n\t\tarray.push( transformData.eulerOrder || Euler.DEFAULT_ORDER );\n\t\tlPostRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) );\n\t\tlPostRotationM.invert();\n\n\t}\n\n\tif ( transformData.scale ) lScalingM.scale( tempVec.fromArray( transformData.scale ) );\n\n\t// Pivots and offsets\n\tif ( transformData.scalingOffset ) lScalingOffsetM.setPosition( tempVec.fromArray( transformData.scalingOffset ) );\n\tif ( transformData.scalingPivot ) lScalingPivotM.setPosition( tempVec.fromArray( transformData.scalingPivot ) );\n\tif ( transformData.rotationOffset ) lRotationOffsetM.setPosition( tempVec.fromArray( transformData.rotationOffset ) );\n\tif ( transformData.rotationPivot ) lRotationPivotM.setPosition( tempVec.fromArray( transformData.rotationPivot ) );\n\n\t// parent transform\n\tif ( transformData.parentMatrixWorld ) {\n\n\t\tlParentLX.copy( transformData.parentMatrix );\n\t\tlParentGX.copy( transformData.parentMatrixWorld );\n\n\t}\n\n\tconst lLRM = lPreRotationM.clone().multiply( lRotationM ).multiply( lPostRotationM );\n\t// Global Rotation\n\tconst lParentGRM = new Matrix4();\n\tlParentGRM.extractRotation( lParentGX );\n\n\t// Global Shear*Scaling\n\tconst lParentTM = new Matrix4();\n\tlParentTM.copyPosition( lParentGX );\n\n\tconst lParentGRSM = lParentTM.clone().invert().multiply( lParentGX );\n\tconst lParentGSM = lParentGRM.clone().invert().multiply( lParentGRSM );\n\tconst lLSM = lScalingM;\n\n\tconst lGlobalRS = new Matrix4();\n\n\tif ( inheritType === 0 ) {\n\n\t\tlGlobalRS.copy( lParentGRM ).multiply( lLRM ).multiply( lParentGSM ).multiply( lLSM );\n\n\t} else if ( inheritType === 1 ) {\n\n\t\tlGlobalRS.copy( lParentGRM ).multiply( lParentGSM ).multiply( lLRM ).multiply( lLSM );\n\n\t} else {\n\n\t\tconst lParentLSM = new Matrix4().scale( new Vector3().setFromMatrixScale( lParentLX ) );\n\t\tconst lParentLSM_inv = lParentLSM.clone().invert();\n\t\tconst lParentGSM_noLocal = lParentGSM.clone().multiply( lParentLSM_inv );\n\n\t\tlGlobalRS.copy( lParentGRM ).multiply( lLRM ).multiply( lParentGSM_noLocal ).multiply( lLSM );\n\n\t}\n\n\tconst lRotationPivotM_inv = lRotationPivotM.clone().invert();\n\tconst lScalingPivotM_inv = lScalingPivotM.clone().invert();\n\t// Calculate the local transform matrix\n\tlet lTransform = lTranslationM.clone().multiply( lRotationOffsetM ).multiply( lRotationPivotM ).multiply( lPreRotationM ).multiply( lRotationM ).multiply( lPostRotationM ).multiply( lRotationPivotM_inv ).multiply( lScalingOffsetM ).multiply( lScalingPivotM ).multiply( lScalingM ).multiply( lScalingPivotM_inv );\n\n\tconst lLocalTWithAllPivotAndOffsetInfo = new Matrix4().copyPosition( lTransform );\n\n\tconst lGlobalTranslation = lParentGX.clone().multiply( lLocalTWithAllPivotAndOffsetInfo );\n\tlGlobalT.copyPosition( lGlobalTranslation );\n\n\tlTransform = lGlobalT.clone().multiply( lGlobalRS );\n\n\t// from global to local\n\tlTransform.premultiply( lParentGX.invert() );\n\n\treturn lTransform;\n\n}\n\n// Returns the three.js intrinsic Euler order corresponding to FBX extrinsic Euler order\n// ref: http://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_euler_html\nfunction getEulerOrder( order ) {\n\n\torder = order || 0;\n\n\tconst enums = [\n\t\t'ZYX', // -> XYZ extrinsic\n\t\t'YZX', // -> XZY extrinsic\n\t\t'XZY', // -> YZX extrinsic\n\t\t'ZXY', // -> YXZ extrinsic\n\t\t'YXZ', // -> ZXY extrinsic\n\t\t'XYZ', // -> ZYX extrinsic\n\t\t//'SphericXYZ', // not possible to support\n\t];\n\n\tif ( order === 6 ) {\n\n\t\tconsole.warn( 'THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.' );\n\t\treturn enums[ 0 ];\n\n\t}\n\n\treturn enums[ order ];\n\n}\n\n// Parses comma separated list of numbers and returns them an array.\n// Used internally by the TextParser\nfunction parseNumberArray( value ) {\n\n\tconst array = value.split( ',' ).map( function ( val ) {\n\n\t\treturn parseFloat( val );\n\n\t} );\n\n\treturn array;\n\n}\n\nfunction convertArrayBufferToString( buffer, from, to ) {\n\n\tif ( from === undefined ) from = 0;\n\tif ( to === undefined ) to = buffer.byteLength;\n\n\treturn new TextDecoder().decode( new Uint8Array( buffer, from, to ) );\n\n}\n\nfunction append( a, b ) {\n\n\tfor ( let i = 0, j = a.length, l = b.length; i < l; i ++, j ++ ) {\n\n\t\ta[ j ] = b[ i ];\n\n\t}\n\n}\n\nfunction slice( a, b, from, to ) {\n\n\tfor ( let i = from, j = 0; i < to; i ++, j ++ ) {\n\n\t\ta[ j ] = b[ i ];\n\n\t}\n\n\treturn a;\n\n}\n\n\nexport { FBXLoader };\n","import { Object3D } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { resourceLoader } from \"../asset/ResourceManager\";\nimport { FBXLoader } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\n@resourceLoader([\"fbx\"])\nexport class aFBXLoader extends aLoader {\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (node: Object3D) => {\n onLoad(aLoader._setMeshData(node));\n }\n const loader = new FBXLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n}","import {\n\tDataTextureLoader,\n\tDataUtils,\n\tFloatType,\n\tHalfFloatType,\n\tLinearFilter,\n\tLinearSRGBColorSpace\n} from 'three';\n\n// https://github.com/mrdoob/three.js/issues/5552\n// http://en.wikipedia.org/wiki/RGBE_image_format\n\nclass RGBELoader extends DataTextureLoader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.type = HalfFloatType;\n\n\t}\n\n\t// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\n\n\tparse( buffer ) {\n\n\t\tconst\n\t\t\t/* default error routine. change this to change error handling */\n\t\t\trgbe_read_error = 1,\n\t\t\trgbe_write_error = 2,\n\t\t\trgbe_format_error = 3,\n\t\t\trgbe_memory_error = 4,\n\t\t\trgbe_error = function ( rgbe_error_code, msg ) {\n\n\t\t\t\tswitch ( rgbe_error_code ) {\n\n\t\t\t\t\tcase rgbe_read_error: throw new Error( 'THREE.RGBELoader: Read Error: ' + ( msg || '' ) );\n\t\t\t\t\tcase rgbe_write_error: throw new Error( 'THREE.RGBELoader: Write Error: ' + ( msg || '' ) );\n\t\t\t\t\tcase rgbe_format_error: throw new Error( 'THREE.RGBELoader: Bad File Format: ' + ( msg || '' ) );\n\t\t\t\t\tdefault:\n\t\t\t\t\tcase rgbe_memory_error: throw new Error( 'THREE.RGBELoader: Memory Error: ' + ( msg || '' ) );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\t/* offsets to red, green, and blue components in a data (float) pixel */\n\t\t\t//RGBE_DATA_RED = 0,\n\t\t\t//RGBE_DATA_GREEN = 1,\n\t\t\t//RGBE_DATA_BLUE = 2,\n\n\t\t\t/* number of floats per pixel, use 4 since stored in rgba image format */\n\t\t\t//RGBE_DATA_SIZE = 4,\n\n\t\t\t/* flags indicating which fields in an rgbe_header_info are valid */\n\t\t\tRGBE_VALID_PROGRAMTYPE = 1,\n\t\t\tRGBE_VALID_FORMAT = 2,\n\t\t\tRGBE_VALID_DIMENSIONS = 4,\n\n\t\t\tNEWLINE = '\\n',\n\n\t\t\tfgets = function ( buffer, lineLimit, consume ) {\n\n\t\t\t\tconst chunkSize = 128;\n\n\t\t\t\tlineLimit = ! lineLimit ? 1024 : lineLimit;\n\t\t\t\tlet p = buffer.pos,\n\t\t\t\t\ti = - 1, len = 0, s = '',\n\t\t\t\t\tchunk = String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\twhile ( ( 0 > ( i = chunk.indexOf( NEWLINE ) ) ) && ( len < lineLimit ) && ( p < buffer.byteLength ) ) {\n\n\t\t\t\t\ts += chunk; len += chunk.length;\n\t\t\t\t\tp += chunkSize;\n\t\t\t\t\tchunk += String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( - 1 < i ) {\n\n\t\t\t\t\t/*for (i=l-1; i>=0; i--) {\n\t\t\t\t\t\tbyteCode = m.charCodeAt(i);\n\t\t\t\t\t\tif (byteCode > 0x7f && byteCode <= 0x7ff) byteLen++;\n\t\t\t\t\t\telse if (byteCode > 0x7ff && byteCode <= 0xffff) byteLen += 2;\n\t\t\t\t\t\tif (byteCode >= 0xDC00 && byteCode <= 0xDFFF) i--; //trail surrogate\n\t\t\t\t\t}*/\n\t\t\t\t\tif ( false !== consume ) buffer.pos += len + i + 1;\n\t\t\t\t\treturn s + chunk.slice( 0, i );\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t},\n\n\t\t\t/* minimal header reading. modify if you want to parse more information */\n\t\t\tRGBE_ReadHeader = function ( buffer ) {\n\n\n\t\t\t\t// regexes to parse header info fields\n\t\t\t\tconst magic_token_re = /^#\\?(\\S+)/,\n\t\t\t\t\tgamma_re = /^\\s*GAMMA\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\texposure_re = /^\\s*EXPOSURE\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\tformat_re = /^\\s*FORMAT=(\\S+)\\s*$/,\n\t\t\t\t\tdimensions_re = /^\\s*\\-Y\\s+(\\d+)\\s+\\+X\\s+(\\d+)\\s*$/,\n\n\t\t\t\t\t// RGBE format header struct\n\t\t\t\t\theader = {\n\n\t\t\t\t\t\tvalid: 0, /* indicate which fields are valid */\n\n\t\t\t\t\t\tstring: '', /* the actual header string */\n\n\t\t\t\t\t\tcomments: '', /* comments found in header */\n\n\t\t\t\t\t\tprogramtype: 'RGBE', /* listed at beginning of file to identify it after \"#?\". defaults to \"RGBE\" */\n\n\t\t\t\t\t\tformat: '', /* RGBE format, default 32-bit_rle_rgbe */\n\n\t\t\t\t\t\tgamma: 1.0, /* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */\n\n\t\t\t\t\t\texposure: 1.0, /* a value of 1.0 in an image corresponds to <exposure> watts/steradian/m^2. defaults to 1.0 */\n\n\t\t\t\t\t\twidth: 0, height: 0 /* image dimensions, width/height */\n\n\t\t\t\t\t};\n\n\t\t\t\tlet line, match;\n\n\t\t\t\tif ( buffer.pos >= buffer.byteLength || ! ( line = fgets( buffer ) ) ) {\n\n\t\t\t\t\trgbe_error( rgbe_read_error, 'no header found' );\n\n\t\t\t\t}\n\n\t\t\t\t/* if you want to require the magic token then uncomment the next line */\n\t\t\t\tif ( ! ( match = line.match( magic_token_re ) ) ) {\n\n\t\t\t\t\trgbe_error( rgbe_format_error, 'bad initial token' );\n\n\t\t\t\t}\n\n\t\t\t\theader.valid |= RGBE_VALID_PROGRAMTYPE;\n\t\t\t\theader.programtype = match[ 1 ];\n\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\twhile ( true ) {\n\n\t\t\t\t\tline = fgets( buffer );\n\t\t\t\t\tif ( false === line ) break;\n\t\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\t\tif ( '#' === line.charAt( 0 ) ) {\n\n\t\t\t\t\t\theader.comments += line + '\\n';\n\t\t\t\t\t\tcontinue; // comment line\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( gamma_re ) ) {\n\n\t\t\t\t\t\theader.gamma = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( exposure_re ) ) {\n\n\t\t\t\t\t\theader.exposure = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( format_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_FORMAT;\n\t\t\t\t\t\theader.format = match[ 1 ];//'32-bit_rle_rgbe';\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( dimensions_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_DIMENSIONS;\n\t\t\t\t\t\theader.height = parseInt( match[ 1 ], 10 );\n\t\t\t\t\t\theader.width = parseInt( match[ 2 ], 10 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( header.valid & RGBE_VALID_FORMAT ) && ( header.valid & RGBE_VALID_DIMENSIONS ) ) break;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_FORMAT ) ) {\n\n\t\t\t\t\trgbe_error( rgbe_format_error, 'missing format specifier' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_DIMENSIONS ) ) {\n\n\t\t\t\t\trgbe_error( rgbe_format_error, 'missing image size specifier' );\n\n\t\t\t\t}\n\n\t\t\t\treturn header;\n\n\t\t\t},\n\n\t\t\tRGBE_ReadPixels_RLE = function ( buffer, w, h ) {\n\n\t\t\t\tconst scanline_width = w;\n\n\t\t\t\tif (\n\t\t\t\t\t// run length encoding is not allowed so read flat\n\t\t\t\t\t( ( scanline_width < 8 ) || ( scanline_width > 0x7fff ) ) ||\n\t\t\t\t\t// this file is not run length encoded\n\t\t\t\t\t( ( 2 !== buffer[ 0 ] ) || ( 2 !== buffer[ 1 ] ) || ( buffer[ 2 ] & 0x80 ) )\n\t\t\t\t) {\n\n\t\t\t\t\t// return the flat buffer\n\t\t\t\t\treturn new Uint8Array( buffer );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scanline_width !== ( ( buffer[ 2 ] << 8 ) | buffer[ 3 ] ) ) {\n\n\t\t\t\t\trgbe_error( rgbe_format_error, 'wrong scanline width' );\n\n\t\t\t\t}\n\n\t\t\t\tconst data_rgba = new Uint8Array( 4 * w * h );\n\n\t\t\t\tif ( ! data_rgba.length ) {\n\n\t\t\t\t\trgbe_error( rgbe_memory_error, 'unable to allocate buffer space' );\n\n\t\t\t\t}\n\n\t\t\t\tlet offset = 0, pos = 0;\n\n\t\t\t\tconst ptr_end = 4 * scanline_width;\n\t\t\t\tconst rgbeStart = new Uint8Array( 4 );\n\t\t\t\tconst scanline_buffer = new Uint8Array( ptr_end );\n\t\t\t\tlet num_scanlines = h;\n\n\t\t\t\t// read in each successive scanline\n\t\t\t\twhile ( ( num_scanlines > 0 ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\tif ( pos + 4 > buffer.byteLength ) {\n\n\t\t\t\t\t\trgbe_error( rgbe_read_error );\n\n\t\t\t\t\t}\n\n\t\t\t\t\trgbeStart[ 0 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 1 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 2 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 3 ] = buffer[ pos ++ ];\n\n\t\t\t\t\tif ( ( 2 != rgbeStart[ 0 ] ) || ( 2 != rgbeStart[ 1 ] ) || ( ( ( rgbeStart[ 2 ] << 8 ) | rgbeStart[ 3 ] ) != scanline_width ) ) {\n\n\t\t\t\t\t\trgbe_error( rgbe_format_error, 'bad rgbe scanline format' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// read each of the four channels for the scanline into the buffer\n\t\t\t\t\t// first red, then green, then blue, then exponent\n\t\t\t\t\tlet ptr = 0, count;\n\n\t\t\t\t\twhile ( ( ptr < ptr_end ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\t\tcount = buffer[ pos ++ ];\n\t\t\t\t\t\tconst isEncodedRun = count > 128;\n\t\t\t\t\t\tif ( isEncodedRun ) count -= 128;\n\n\t\t\t\t\t\tif ( ( 0 === count ) || ( ptr + count > ptr_end ) ) {\n\n\t\t\t\t\t\t\trgbe_error( rgbe_format_error, 'bad scanline data' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isEncodedRun ) {\n\n\t\t\t\t\t\t\t// a (encoded) run of the same value\n\t\t\t\t\t\t\tconst byteValue = buffer[ pos ++ ];\n\t\t\t\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\tscanline_buffer[ ptr ++ ] = byteValue;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//ptr += count;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// a literal-run\n\t\t\t\t\t\t\tscanline_buffer.set( buffer.subarray( pos, pos + count ), ptr );\n\t\t\t\t\t\t\tptr += count; pos += count;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\t// now convert data from buffer into rgba\n\t\t\t\t\t// first red, then green, then blue, then exponent (alpha)\n\t\t\t\t\tconst l = scanline_width; //scanline_buffer.byteLength;\n\t\t\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\t\t\tlet off = 0;\n\t\t\t\t\t\tdata_rgba[ offset ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 1 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 2 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 3 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toffset += 4;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnum_scanlines --;\n\n\t\t\t\t}\n\n\t\t\t\treturn data_rgba;\n\n\t\t\t};\n\n\t\tconst RGBEByteToRGBFloat = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\tdestArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale;\n\t\t\tdestArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale;\n\t\t\tdestArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale;\n\t\t\tdestArray[ destOffset + 3 ] = 1;\n\n\t\t};\n\n\t\tconst RGBEByteToRGBHalf = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\t// clamping to 65504, the maximum representable value in float16\n\t\t\tdestArray[ destOffset + 0 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 1 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 2 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 3 ] = DataUtils.toHalfFloat( 1 );\n\n\t\t};\n\n\t\tconst byteArray = new Uint8Array( buffer );\n\t\tbyteArray.pos = 0;\n\t\tconst rgbe_header_info = RGBE_ReadHeader( byteArray );\n\n\t\tconst w = rgbe_header_info.width,\n\t\t\th = rgbe_header_info.height,\n\t\t\timage_rgba_data = RGBE_ReadPixels_RLE( byteArray.subarray( byteArray.pos ), w, h );\n\n\n\t\tlet data, type;\n\t\tlet numElements;\n\n\t\tswitch ( this.type ) {\n\n\t\t\tcase FloatType:\n\n\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\tconst floatArray = new Float32Array( numElements * 4 );\n\n\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\tRGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );\n\n\t\t\t\t}\n\n\t\t\t\tdata = floatArray;\n\t\t\t\ttype = FloatType;\n\t\t\t\tbreak;\n\n\t\t\tcase HalfFloatType:\n\n\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\tconst halfArray = new Uint16Array( numElements * 4 );\n\n\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\tRGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );\n\n\t\t\t\t}\n\n\t\t\t\tdata = halfArray;\n\t\t\t\ttype = HalfFloatType;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tthrow new Error( 'THREE.RGBELoader: Unsupported type: ' + this.type );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\treturn {\n\t\t\twidth: w, height: h,\n\t\t\tdata: data,\n\t\t\theader: rgbe_header_info.string,\n\t\t\tgamma: rgbe_header_info.gamma,\n\t\t\texposure: rgbe_header_info.exposure,\n\t\t\ttype: type\n\t\t};\n\n\t}\n\n\tsetDataType( value ) {\n\n\t\tthis.type = value;\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tfunction onLoadCallback( texture, texData ) {\n\n\t\t\tswitch ( texture.type ) {\n\n\t\t\t\tcase FloatType:\n\t\t\t\tcase HalfFloatType:\n\n\t\t\t\t\ttexture.colorSpace = LinearSRGBColorSpace;\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\ttexture.magFilter = LinearFilter;\n\t\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\t\ttexture.flipY = true;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}\n\n\t\treturn super.load( url, onLoadCallback, onProgress, onError );\n\n\t}\n\n}\n\nexport { RGBELoader };\n","import { EquirectangularReflectionMapping } from \"three\";\nimport { resourceLoader } from \"../asset/ResourceManager\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\n@resourceLoader([\"hdr\"])\nexport class aHDRLoader extends aLoader {\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n texSettings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n const loader = new RGBELoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n\n}","import { TextureLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { resourceLoader } from \"../asset/ResourceManager\";\n\n@resourceLoader([\"png\", \"jpg\", \"webp\", \"avif\"])\nexport class aTextureLoader extends aLoader {\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n const loadCallback = (tex) => {\n onLoad(Object.assign(tex, texSettings));\n }\n const loader = new TextureLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n}","export class PropertyManager {\n static _propertiesMap = new Map<Object, Object>();\n static _getProperties(target: object) {\n return this._propertiesMap.get(target.constructor);\n }\n static _hasProperties(target: object) {\n return this._propertiesMap.has(target.constructor);\n }\n static _getMergedProperties(target: Object) {\n let props = null;\n let constructor = target.constructor;\n while (constructor !== Object.constructor.prototype) {\n let values = PropertyManager._propertiesMap.get(constructor);\n if (values) {\n if (props === null) {\n props = Object.create(null);\n }\n Object.assign(props, values);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return props;\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n let targetMap = PropertyManager._propertiesMap.get(target.constructor);\n if (targetMap === undefined) {\n targetMap = Object.create(null);\n PropertyManager._propertiesMap.set(target.constructor, targetMap);\n }\n targetMap[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { property } from \"../PropertyManager\";\nimport { Easing } from \"../tween/tween\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n instanceId: number = ObjectInstance._instanceCount++;\n uuid: string = MathUtils.generateUUID();\n name: string = \"\";\n type: string = \"ObjectInstance\";\n}","import { Object3D } from \"three\";\nimport { Viewer } from \"./Viewer\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { ObjectInstance } from \"./ObjectInstance\";\n\nexport class Component<T extends Object3D = Object3D> extends ObjectInstance{\n\n get enabled() {\n return this._enabled;\n }\n set enabled(v: boolean) {\n if (this._enabled !== v) {\n this._enabled = v;\n this.manager.componentScheduler.enableComponent(this, v);\n }\n }\n private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\n } = {};\n\n protected _onPreDestroy() {\n this.unscheduleAll();\n this.manager.removeComponent(this.node, this);\n\n if (this._enabled) {\n this.manager.componentScheduler.enableComponent(this, false);\n }\n if (this.onDestroy && this.flags.OnLoadCalled) {\n this.onDestroy();\n }\n }\n\n schedule(callback: Function, interval: number, repeat: number = -1) {\n this.manager.scheduler.schedule(this, callback, interval, repeat);\n }\n\n unshedule(callback: Function) {\n this.manager.scheduler.unshedule(this, callback);\n }\n\n unscheduleAll() {\n this.manager.scheduler.unscheduleAll(this);\n }\n\n destroy() {\n if (this.flags.Destroyed) {\n return false;\n }\n this.destroyImmediate();\n return true;\n }\n\n destroyImmediate() {\n if (this._onPreDestroy) {\n this._onPreDestroy();\n }\n this.flags.Destroyed = true;\n }\n}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 0;\n private _isChanged: boolean = false;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n onChanged: (v: boolean) => void = null;\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => v.enabled = v === vcam);\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { fov, near, far, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != fov || from.near != near || from.far != far;\n const isTransformChanged = !from.position.equals(finalPosition) || !from.quaternion.equals(finalRotation);\n const isChanged = isLensChanged || isTransformChanged;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, fov, t);\n from.near = lerp(from.near, near, t);\n from.far = lerp(from.far, far, t);\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n\n if (this._isChanged !== isChanged) {\n this._isChanged = isChanged;\n this.onChanged && this.onChanged(isChanged);\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n priority: number = 10;\n lookAt: Object3D | null = null;\n follow: Object3D | null = null;\n\n @property({dir: \"lens\"})\n fov: number = 45;\n @property({dir: \"lens\"})\n near: number = 0.1;\n @property({dir: \"lens\"})\n far: number = 1000;\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n lookaheadPosition: Vector3 = new Vector3();\n trackedObjectOffset: Vector3 = new Vector3();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n this.node.isCamera = true;\n\n const camera = this.viewer.camera;\n this.fov = camera.fov;\n this.near = camera.near;\n this.far = camera.far;\n this.node.position.set(0, 0, 4);\n \n this.brain = this.viewer.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n\n update(dt: number) {\n if (this.lookAt) {\n this.node.lookAt(this.lookAt.position);\n }\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nenum PressState {\n NONE = 1 << 0,\n SELECTED = 1 << 1,\n IN = 1 << 2,\n}\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n static readonly RESIZE = \"resize\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const domElement = this.viewer.canvas; domElement.style.touchAction = 'none';\n this._addEventListener(domElement, 'contextmenu', e => e.preventDefault());\n this._addEventListener(domElement, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(domElement, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(domElement, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(domElement, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(domElement, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(domElement, \"touchmove\", e => this._onTouchMove(e), { passive: true });\n //监听了pointer事件之后,key事件失效,改成window解决\n this._addEventListener(window, \"keydown\", e => this._onKeyDown(e), { passive: false });\n this._addEventListener(window, \"keypress\", e => this._onKeyPress(e), { passive: false });\n this._addEventListener(window, \"keyup\", e => this._onKeyUp(e), { passive: false });\n }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\nconst audioElem = document.createElement(\"audio\");\n\nexport class SystemInfo {\n static isMobile = detectUA.isMobile || detectUA.isTablet;\n static isDesktop = detectUA.isDesktop;\n static device = SystemInfo.isMobile ? \"mobile\" : \"desktop\";\n static isAndroid = !!detectUA.isAndroid;\n static isIOS = !!detectUA.isiOS;\n static isMacOS = !!detectUA.isMacOS;\n static isWindows = typeof detectUA.isWindows === \"boolean\" ? detectUA.isWindows : detectUA.isWindows.version !== null;\n static isLinux = userAgent.indexOf(\"linux\") != -1;\n static ua = userAgent;\n static isEdge = browserName === \"Microsoft Edge\";\n static isIE = browserName === \"Internet Explorer\";\n static isFirefox = browserName === \"Firefox\";\n static isChrome = browserName === \"Chrome\";\n static isOpera = browserName === \"Opera\";\n static isSafari = browserName === \"Safari\";\n static isSupportMSAA = !userAgent.match(\"version/15.4 \");\n static isSupportOgg = !!audioElem.canPlayType(\"audio/ogg\");\n static isRetina = window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static devicePixelRatio = window.devicePixelRatio || 1;\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static baseUrl = document.location.origin;\n static isIFrame = window.self !== window.top;\n}","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { min, max, exp } = Math;\n\nconst kNegligibleResidual = 0.01;\nconst kLogNegligibleResidual = Math.log(kNegligibleResidual)// -4.605170186;\n\nexport function exponentialDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let k = -kLogNegligibleResidual / dampTime;\n return current + (target - current) * (1 - exp(-k * deltaTime));\n}\n\n// cuve like exponentialDecay but cost less\nexport function quarticDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let t = (1 - min(deltaTime, dampTime) / dampTime);\n let tt = t * t;\n return current + (target - current) * (1 - tt * tt);\n}\n\nexport function smoothDamp(\n state: Object & { _velocity?: number },\n current: number,\n target: number,\n smoothTime: number,\n maxSpeed: number,\n deltaTime: number\n) {\n if (state._velocity === undefined) {\n state._velocity = 0;\n }\n smoothTime = max(0.0001, smoothTime);\n let num = 2 / smoothTime;\n let num2 = num * deltaTime;\n let num3 = 1 / (1 + num2 + 0.48 * num2 * num2 + 0.235 * num2 * num2 * num2);\n let num4 = current - target;\n let num5 = target;\n let num6 = maxSpeed * smoothTime;\n num4 = clamp(num4, -num6, num6);\n target = current - num4;\n let num7 = (state._velocity + num * num4) * deltaTime;\n state._velocity = (state._velocity - num * num7) * num3;\n let num8 = target + (num4 + num7) * num3;\n if (num5 - current > 0 == num8 > num5) {\n num8 = num5;\n state._velocity = (num8 - num5) / deltaTime;\n }\n return num8;\n}\n\nexport function Quat_exponentialDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, exponentialDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_quarticDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, quarticDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_smoothDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}\n\nexport function Vec3_smoothDamp(current: Vector3, target: Vector3, dampTime: number, deltaTime: number, out: Vector3 = current) {\n return out.copy(current).lerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}","import { Vector3 } from \"three\";\n\nexport const Vector3_ZERO = new Vector3();","import { MathUtils, Object3D, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { Easing } from \"../tween/tween\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { quarticDamp } from \"../math/Damp\";\nimport { Vector3_ZERO } from \"../math/Constant\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan } = Math;\n\nexport const VCamFreeLookMode = {\n FREE: 0,\n TRANSLATE: 1,\n}\nexport type VCamFreeLookMode = typeof VCamFreeLookMode[keyof typeof VCamFreeLookMode];\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __moveDelta = new Vector2();\n static __worldPos = new Vector3();\n static __posDelta = new Vector3();\n static __posOffset = new Vector3();\n static __xAxis = new Vector3();\n static __yAxis = new Vector3();\n static __quat = new Quaternion();\n static __spherical = new Spherical();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _distanceDelta: number = 0;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n private _rotateDelta: Vector2 = new Vector2();\n private _panDelta: Vector2 = new Vector2();\n\n @property({ value: VCamFreeLookMode })\n mode: VCamFreeLookMode = VCamFreeLookMode.FREE;\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n rotateSpeed: number = 2;\n rotateSmoothing: number = 0.5;\n panSpeed: number = 2;\n panSmoothing: number = 0.5;\n panScale: Vector3 = new Vector3(1, 1, 1);\n phiMin: number = 0.001;\n phiMax: number = Math.PI - 0.001;\n thetaMin: number = -Infinity;\n thetaMax: number = Infinity;\n distanceMin: number = 0.001;\n distanceMax: number = Infinity;\n rotateTouchID: number = 0;\n lookAt = new Object3D();\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.off(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.off(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.off(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.off(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.off(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.off(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n this._rotateDelta.set(0, 0);\n this._panDelta.set(0, 0);\n this._distanceDelta = 0;\n }\n\n private _tweenPOI = {\n get position() { return this.node.position; },\n set position(v: Vector3) { this.node.position.copy(v); },\n get lookAt() { return this.lookAt.position; },\n set lookAt(v: Vector3) { this.lookAt.position.copy(v); },\n get trackedObjectOffset() { return this.trackedObjectOffset; },\n set trackedObjectOffset(v: Vector3) { this.trackedObjectOffset.copy(v); }\n }\n\n gotoPOI(\n position: Vector3,\n lookAt: Vector3,\n duration: number = 1,\n easing: (amount: number) => number = Easing.Quadratic.InOut\n ) {\n this.viewer.killTweensOf(this._tweenPOI);\n this.viewer.tween(this._tweenPOI).to({ position, lookAt, trackedObjectOffset: Vector3_ZERO }, duration).easing(easing).start();\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n FreelookVirtualCamera.__loc0.set(e.pageX, e.pageY);\n switch (this._button) {\n case 0: this._rotateDelta.add(this._calculateRotateDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n case 1:\n case 2:\n this._panDelta.add(this._calculatePanDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n }\n this._preLoc0.copy(FreelookVirtualCamera.__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (this.lookAt) {\n let dist = FreelookVirtualCamera.__worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = dist + this._distanceDelta;\n if (e.deltaY > 0) {\n distNew *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n distNew *= this._calculateDistanceScale(0.85);\n }\n this._distanceDelta = distNew - dist;\n }\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._preLoc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n }\n else if (touches.length > rotateTouchID) {\n this._touchID = touches[rotateTouchID].identifier;\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __worldPos, __moveDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n __loc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n if (this.lookAt) {\n let dist = __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = (dist + this._distanceDelta) * this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n this._distanceDelta = distNew - dist;\n }\n this._panDelta.add(this._calculatePanDelta(__moveDelta, __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5), __center.copy(__loc0).add(__loc1).multiplyScalar(0.5)));\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > rotateTouchID) {\n if (this._touchID === touches[rotateTouchID].identifier) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._rotateDelta.add(this._calculateRotateDelta(__moveDelta, this._preLoc0, __loc0));\n this._preLoc0.copy(__loc0);\n }\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotateDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / domElement.height);\n out.y = -out.y;\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / domElement.height);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n return out;\n }\n\n update(dt: number) {\n if (!this.lookAt) return;\n\n const { __posDelta, __posOffset, __worldPos, __quat, __spherical, __xAxis, __yAxis } = FreelookVirtualCamera;\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n\n switch (this.mode) {\n case VCamFreeLookMode.FREE:\n if ((abs(this._rotateDelta.x) + abs(this._rotateDelta.y) + abs(this._distanceDelta)) > 0.001) {\n const { __posDelta, __posOffset, __worldPos } = FreelookVirtualCamera;\n __quat.setFromUnitVectors(this.node.up, Object3D.DEFAULT_UP);\n __posDelta.copy(this.node.position).sub(__worldPos);\n __posDelta.applyQuaternion(__quat);\n __spherical.setFromVector3(__posDelta);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n this._rotateDelta.x = __spherical.theta - clamp(__spherical.theta - this._rotateDelta.x, this.thetaMin, this.thetaMax);\n __spherical.theta = __spherical.theta - this._rotateDelta.x * (1 - dampFactor);\n\n this._rotateDelta.y = clamp(__spherical.phi + this._rotateDelta.y, this.phiMin, this.phiMax) - __spherical.phi;\n __spherical.phi = clamp(__spherical.phi + this._rotateDelta.y * (1 - dampFactor), 0.001, Math.PI - 0.001);\n\n this._distanceDelta = clamp(__spherical.radius + this._distanceDelta, this.distanceMin, this.distanceMax) - __spherical.radius;\n __spherical.radius = __spherical.radius + this._distanceDelta * (1 - dampFactor);\n\n this._rotateDelta.multiplyScalar(dampFactor);\n this._distanceDelta *= dampFactor;\n\n __posDelta.setFromSpherical(__spherical);\n __posDelta.applyQuaternion(__quat.invert());\n\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n break;\n case VCamFreeLookMode.TRANSLATE:\n if (abs(this._distanceDelta) > 0.001) {\n __posDelta.copy(this.node.position).sub(this.lookAt.position);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n let dist0 = __posDelta.length();\n this._distanceDelta = clamp(dist0 + this._distanceDelta, this.distanceMin, this.distanceMax) - dist0;\n let dist = dist0 + this._distanceDelta * (1 - dampFactor);\n this._distanceDelta *= dampFactor;\n\n let pos = __posDelta.normalize().multiplyScalar(dist).add(this.lookAt.position);\n __posOffset.copy(pos).sub(this.node.position);\n this.trackedObjectOffset.add(__posOffset);\n this.node.position.copy(pos);\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n }\n break;\n }\n\n if (abs(this._panDelta.x) + abs(this._panDelta.y) > 0.001) {\n __posDelta.copy(this.node.position).sub(__worldPos);\n\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n let length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n let dampFactor = quarticDamp(1, 0, this.panSmoothing, dt);\n\n let trackedObjectOffset = this.trackedObjectOffset;\n trackedObjectOffset.sub(__xAxis.multiplyScalar(this._panDelta.x * length * (1 - dampFactor)));\n trackedObjectOffset.add(__yAxis.multiplyScalar(this._panDelta.y * length * (1 - dampFactor)));\n\n this._panDelta.multiplyScalar(dampFactor);\n\n __worldPos.copy(this.lookAt.position).add(trackedObjectOffset);\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n\n this.node.lookAt(__worldPos);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, dt: number) => any;\n\n constructor(callback: (target: T, dt: number) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(dt: number) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n\n start() {\n this.startInvoker.invoke(0);\n }\n\n update(dt: number) {\n this.updateInvoker.invoke(dt);\n }\n\n lastUpdate(dt: number) {\n this.lastUpdateInvoker.invoke(dt);\n }\n\n enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\n\n\ntype ComponentConstructor = new () => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._dependenciesMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _dependenciesMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor !== Component) {\n let dependentInfo = ComponentManager._dependenciesMap.get(constructor);\n if (dependentInfo) {\n const { components, mode } = dependentInfo;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { __C, __P } from \"./types\";\n\nexport function applyProps<T, K extends __C<T>>(\n target: T & { copy?: Function },\n props: __P<T, K>,\n) {\n for (let k in props) {\n let prop = props[k];\n if (prop === undefined) {\n continue;\n }\n if (target[k] !== undefined) {\n let des = Object.getOwnPropertyDescriptor(target, k);\n if (!des || (des.writable || des.set)) {\n target[k] = prop;\n }\n else {\n let value = target[k];\n if (value && value.copy) {\n value.copy(prop);\n }\n }\n }\n }\n return target;\n}","import { Plugin } from \"./Plugin\";\nimport { Viewer } from \"./Viewer\";\nimport { Logger } from \"./base\";\nimport { __C, __Comp } from \"./types\";\n\nexport class PluginManager {\n private _viewer: Viewer;\n private _plugins: Plugin[] = [];\n private _pluginsMap: Map<Object, Plugin> = new Map();\n\n get viewer() {\n return this._viewer\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._plugins.forEach(plugin => plugin.uninstall && plugin.uninstall());\n this._plugins.length = 0;\n this._pluginsMap.clear();\n }\n\n update(dt: number) {\n this._plugins.forEach(plugin => plugin.onUpdate && plugin.onUpdate(dt));\n }\n\n render(dt: number) {\n this._plugins.forEach(plugin => plugin.onRender && plugin.onRender(dt));\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n this._plugins.forEach(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd: boolean = false): T {\n let ins = this._pluginsMap.get(plugin);\n if (ins === undefined && autoAdd) {\n ins = this.addPlugin(plugin);\n }\n return ins as T;\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): T;\n addPlugin(plugin: any) {\n const ins = Viewer._getClassInstance(plugin);\n if (this._pluginsMap.has(ins.constructor)) {\n Logger.warn(\"Plugin already added\");\n }\n else {\n ins.viewer = this._viewer;\n ins.install && ins.install();\n this._plugins.push(ins);\n this._pluginsMap.set(ins.constructor, ins);\n }\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n const key = typeof plugin === \"function\" ? plugin : plugin.constructor;\n const ins = this._pluginsMap.get(key);\n if (ins) {\n ins.uninstall && ins.uninstall();\n this._plugins.splice(this._plugins.indexOf(ins), 1);\n this._pluginsMap.delete(key);\n }\n }\n\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RenderItem,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { TextureSettings } from \"./TextureSettings\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { PluginManager } from \"./PluginManager\";\nimport { Plugin } from \"./Plugin\";\nimport { TweenManager } from \"./tween\";\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _getClassInstance(constructor: any, args: any[] = []) {\n return typeof constructor === \"function\" ? new constructor(...args) : constructor;\n }\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static CompileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static CompileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static CompileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget,\n material: ShaderMaterial,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static GetFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.GetFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _targetFrameRate: number = -1;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _pluginManager: PluginManager;\n private _tweenManager: TweenManager;\n\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n\n constructor({\n root,\n canvas,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n targetFrameRate?: number;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n\n this._scene = new Scene();\n this._camera = new PerspectiveCamera();\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n const loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._resourceManager = new ResourceManager({ path, resourcePath, dracoPath, loadingManager });\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._pluginManager = new PluginManager(this);\n this._tweenManager = new TweenManager();\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n if (autoStart) this.start();\n }\n\n destroy() {\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._pluginManager.destroy();\n this._tweenManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = time - this._lastTime;\n\n if (delta >= interval) {\n this.loop(delta);\n this._lastTime = time - (delta % interval);\n }\n }\n else {\n this.loop(time - this._lastTime);\n this._lastTime = time;\n }\n }\n\n loop(dt: number) {\n if (this._autoResize) this.resize();\n\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._tweenManager.update(this._time);\n this._componentManager.update(dt);\n this._pluginManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._onRender(dt);\n this._pluginManager.render(dt);\n }\n\n _onRender(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _onResize(width: number, height: number) {\n this._renderer.setSize(width, height);\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n requestAnimationFrame(frameCallback);\n }\n }\n requestAnimationFrame(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n resize(\n width: number = window.innerWidth,\n height: number = window.innerHeight\n ) {\n this._rootRotated =\n this._orientation === Orientation.LANDSCAPE ? width < height :\n this._orientation === Orientation.PORTRAIT ? width > height : false;\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n if (this._width !== width ||\n this._height !== height\n ) {\n this._width = width;\n this._height = height;\n\n let root = this._root;\n if (this._rootRotated) {\n root.style['-webkit-transform'] = 'rotate(90deg)';\n root.style.transform = 'rotate(90deg)';\n root.style['-webkit-transform-origin'] = '0px 0px 0px';\n root.style.transformOrigin = '0px 0px 0px';\n root.style.margin = `0 0 0 ${height}px`;\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n else {\n root.style['-webkit-transform'] = 'rotate(0deg)';\n root.style.transform = 'rotate(0deg)';\n root.style.margin = '0px auto';\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n\n let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._onResize(width, height);\n this.emit(DeviceInput.RESIZE, width, height);\n }\n }\n\n loadAsset(props: AssetProperties & TextureSettings) {\n return this._resourceManager.loadAsset(props);\n }\n\n async load({\n url, ext, onProgress,\n castShadow = false,\n receiveShadow = false,\n ...props\n }: AssetProperties & __P<Object3D, typeof Object3D>) {\n const node = await this.loadAsset({ url, ext, onProgress });\n if (castShadow || receiveShadow) {\n node.userData.meshData.meshes.forEach(v => { v.castShadow = castShadow; v.receiveShadow = receiveShadow; });\n }\n this.addNode(node, props);\n return node;\n }\n\n tween(target: Object) {\n return this._tweenManager.tween(target);\n }\n\n timeline(target: Object) {\n return this._tweenManager.timeline(target);\n }\n\n killTweensOf(target: Object) {\n this._tweenManager.killTweensOf(target);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n const renderList = this._renderer.renderLists.get(this._scene, 0);\n const setMaterial = (item: RenderItem) => {\n if (item.material) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n }\n renderList.opaque.forEach(setMaterial);\n renderList.transparent.forEach(setMaterial);\n renderList.transmissive.forEach(setMaterial);\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n return this._pluginManager.traversePlugins(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd?: boolean): T {\n return this._pluginManager.getPlugin(plugin, autoAdd);\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>, props?: __P<T, K>): T;\n addPlugin(plugin: any, props: any) {\n const ins = this._pluginManager.addPlugin(plugin);\n applyProps(ins, props);\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n this._pluginManager.removePlugin(plugin);\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd?: boolean): T {\n return this._componentManager.getComponent(node, constructor, autoAdd);\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n return this._componentManager.addComponent(node, constructor);\n }\n\n removeComponent(node: Object3D, component: Component) {\n return this._componentManager.removeComponent(node, component);\n }\n\n addNode<T, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n addNode(object: any, {\n args,\n debug,\n scale,\n position,\n rotation,\n shadowArgs,\n makeDefault,\n component,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let node = null;\n let ins = Viewer._getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n parent.add(ins);\n }\n else if (ins instanceof Component) {\n node = ins.node || new Object3D();\n parent.add(node);\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"unsuport object\");\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (let ins of components) {\n this._componentManager.addComponent(node, ins);\n }\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n removeNode(node: Object3D) {\n this._componentManager.destroyComponents(node);\n node.removeFromParent();\n }\n\n activeNode(node: Object3D, active: boolean) {\n this._componentManager.activeComponents(node);\n node.visible = active;\n }\n\n createRenderTarget(\n width: number,\n height: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLRenderTarget(width, height, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: SRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createCubeRenderTarget(\n size: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLCubeRenderTarget(size, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: SRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createDataTexture(\n data: BufferSource,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(callback: () => T) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = new Scene();\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.CompileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.CompileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { ObjectInstance } from \"./ObjectInstance\";\nimport { Viewer } from \"./Viewer\";\n\nexport class Plugin extends ObjectInstance {\n viewer: Viewer;\n type: string = \"Plugin\";\n install?(): void;\n uninstall?(): void;\n onUpdate?(dt: number): void;\n onRender?(dt: number): void;\n}"],"names":["EventEmitter","_removeEvent","list","index","name","splice","length","_events","clear","has","on","callback","target","once","findIndex","v","console","warn","push","off","a","onof","container","_listeners","undefined","offof","targetOff","i","emit","args","apply","noop","message","optionalParams","debug","log","bind","info","error","Logger","isEnabled","enable","disable","mixin","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","Easing","Linear","None","amount","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Math","cos","PI","sin","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","now","self","process","hrtime","time","performance","Date","getTime","now$1","Group","_tweens","_tweensAddedDuringUpdate","getAll","_this","keys","map","tweenId","removeAll","add","tween","getId","remove","update","preserve","tweenIds","autoStart","Interpolation","k","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","t","fc","Factorial","p2","p3","v0","v1","t2","t3","Sequence","nextId","_nextId","mainGroup","Tween","_object","_group","_isPaused","_pauseStart","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_initialRepeat","_repeat","_yoyo","_isPlaying","_reversed","_delayTime","_startTime","_easingFunction","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_id","_isChainStopped","_goToEnd","_headTween","_tailTween","_headStart","isPlaying","isPaused","duration","d","start","property","_swapEndStartRepeatValues","parseFloat","_setupProperties","startValue","startValueIsArray","Array","isArray","propType","isInterpolationList","endValues","_handleRelativeValue","concat","prop","slice","reverse","stop","stopChainedTweens","_onStopCallback","end","Infinity","pause","resume","numChainedTweens","group","call","_onFinishCallback","from","properties","to","_chainedTween","delay","union","headTween","tailTween","chain","repeat","times","repeatDelay","_repeatDelayTime","yoyo","easing","easingFunction","interpolation","interpolationFunction","tweens","_i","arguments","unchain","onStart","_onStartCallback","onUpdate","_onUpdateCallback","onRepeat","_onRepeatCallback","onComplete","_onCompleteCallback","onStop","elapsed","endTime","value","_updateProperties","isFinite","startIsArray","endIsArray","des","set","charAt","tmp","endValue","TweenChain","_tween","_chainTween","props","constructor","object","TweenManager","destroy","timeline","killTweensOf","materialMapKeys","aLoader","_setMeshData","node","meshData","meshes","materials","textures","material","mat","tex","uuid","traverse","Mesh","userData","ResourceManager","extension","path","str","split","pop","dirname","lastIndexOf","substring","basename","ext","replace","_addLoader","extNames","Loader","loader","_loaders","_parseURL","uri","url","file","File","mainFile","_getTextureKey","settings","join","_splitTextureSettings","_texSettingKeys","_caches","loadAsset","onProgress","Promise","resolve","reject","texSettings","key","result","get","onLoad","sel","load","onError","resourcePath","dracoPath","Map","loadingManager","values","manager","resourceLoader","TrianglesDrawMode","TriangleFanDrawMode","TriangleStripDrawMode","LoaderUtils","FileLoader","Color","LinearSRGBColorSpace","DirectionalLight","PointLight","SpotLight","MeshBasicMaterial","SRGBColorSpace","MeshPhysicalMaterial","Vector2","Matrix4","Vector3","Quaternion","InstancedMesh","InstancedBufferAttribute","Object3D","Interpolant","NearestFilter","LinearFilter","NearestMipmapNearestFilter","LinearMipmapNearestFilter","NearestMipmapLinearFilter","LinearMipmapLinearFilter","ClampToEdgeWrapping","MirroredRepeatWrapping","RepeatWrapping","InterpolateLinear","InterpolateDiscrete","MeshStandardMaterial","FrontSide","TextureLoader","ImageBitmapLoader","BufferAttribute","InterleavedBuffer","InterleavedBufferAttribute","Texture","PointsMaterial","Material","LineBasicMaterial","DoubleSide","PropertyBinding","BufferGeometry","SkinnedMesh","LineSegments","Line","LineLoop","Points","PerspectiveCamera","MathUtils","OrthographicCamera","Skeleton","AnimationClip","Bone","NumberKeyframeTrack","QuaternionKeyframeTrack","VectorKeyframeTrack","Box3","Sphere","ColorManagement","aGLTFLoader","loadCallback","gltf","scene","animations","gltfLoader","GLTFLoader","setPath","setResourcePath","dracoLoader","DRACOLoader","setDecoderPath","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","max","Vector4","Curve","NURBSUtils.calcBSplinePoint","NURBSUtils.calcNURBSDerivatives","MeshPhongMaterial","MeshLambertMaterial","EquirectangularReflectionMapping","AmbientLight","Float32BufferAttribute","Uint16BufferAttribute","Matrix3","ShapeUtils","Euler","fflate.unzlibSync","aFBXLoader","FBXLoader","DataTextureLoader","HalfFloatType","DataUtils","FloatType","aHDRLoader","assign","mapping","RGBELoader","aTextureLoader","PropertyManager","_getProperties","_propertiesMap","_hasProperties","_getMergedProperties","getPrototypeOf","propertyKey","options","normalized","targetMap","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","ObjectInstance","instanceId","_instanceCount","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","scheduler","unshedule","Destroyed","destroyImmediate","clamp","lerp","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","filter","sort","priority","fov","near","far","finalPosition","finalRotation","isLensChanged","isTransformChanged","position","equals","quaternion","isChanged","slerp","updateProjectionMatrix","_isChanged","onChanged","VirtualCamera","_finalPosition","copy","correctPosition","_finalRotation","multiply","correctRotation","isCamera","camera","viewer","brain","getComponent","lookAt","follow","lookaheadPosition","trackedObjectOffset","dir","PressState","Pressability","connect","connector","_connectors","find","state","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","domElement","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","identifier","_computePointer","x","y","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","touch","TOUCH_MOVE","KEYDOWN","KEYPRESS","KEYUP","RESIZE","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","version","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","audioElem","document","createElement","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","isSupportOgg","canPlayType","isRetina","devicePixelRatio","cpuCoreCount","hardwareConcurrency","baseUrl","location","origin","isIFrame","top","min","exp","quarticDamp","current","dampTime","deltaTime","tt","Vector3_ZERO","degToRad","abs","tan","VCamFreeLookMode","FREE","TRANSLATE","FreelookVirtualCamera","onEnable","reset","onDisable","_button","_touchID","_rotateDelta","_panDelta","_distanceDelta","gotoPOI","_tweenPOI","_preLoc0","__loc0","_calculateRotateDelta","__moveDelta","_calculatePanDelta","dist","__worldPos","distanceTo","distNew","_calculateDistanceScale","rotateTouchID","_preLoc1","__loc1","__preCenter","__center","multiplyScalar","scale","forbidZ","out","loc0","loc1","sub","rotateSpeed","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","__posDelta","__posOffset","__quat","__spherical","__xAxis","__yAxis","mode","setFromUnitVectors","up","DEFAULT_UP","applyQuaternion","setFromVector3","dampFactor","rotateSmoothing","theta","thetaMin","thetaMax","phi","phiMin","phiMax","radius","distanceMin","distanceMax","setFromSpherical","invert","dist0","pos","normalize","setFromMatrixColumn","matrix","forbitPanOffsetY","panSmoothing","panScale","Spherical","Box","BoxGeometry","SphereGeometry","Plane","PlaneGeometry","Caller","_pause","_target","_callback","lived","_repeatForever","_elapsed","_interval","trigger","_lastTime","Callers","callers","_callers","Scheduler","_callersArray","callersArray","j","Invoker","_targets","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","ComponentManager","_viewer","_scheduler","_componentScheduler","_componentsMap","components","destroyComponents","delete","child","children","activeComponents","_activeComponent","visible","addComponent","root","func","component","_findComponent","_addDendencies","autoAdd","getComponentsInChidren","traverseComponents","dependentInfo","_dependenciesMap","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","alpha","depth","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","gl","getContext","RENDER_TARGET_FLOAT_TYPE","DATA_FLOAT_TYPE","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","applyProps","writable","PluginManager","_plugins","plugin","uninstall","_pluginsMap","render","onRender","traversePlugins","getPlugin","ins","addPlugin","Viewer","_getClassInstance","install","removePlugin","_setDirectLightShadow","shadow","shadowCamera","_shadowCameraKeys","bias","mapSize","CompileMaterial","renderer","fullscreenMesh","compile","CompileObject3D","CompileTexture","initTexture","Blit","renderTarget","lod","face","RT","getRenderTarget","setRenderTarget","fullscreenCamera","GetFullscreenTriangle","geometry","setAttribute","_root","_time","_scene","_camera","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","viewport","_viewport","_rootRotated","dispose","_taskManager","_resourceManager","_componentManager","_pluginManager","_tweenManager","_input","_frame","_targetFrameRate","delta","loop","_autoResize","resize","_onRender","_onResize","setSize","_running","frameCallback","requestAnimationFrame","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","transform","transformOrigin","margin","isOrthographicCamera","zoom","factor","isPerspectiveCamera","manual","aspect","distance","getWorldPosition","__target","h","w","castShadow","receiveShadow","addNode","traverseMaterials","renderList","renderLists","setMaterial","item","opaque","transparent","transmissive","rotation","shadowArgs","makeDefault","parent","isObject3D","Error","isDirectionalLight","removeNode","removeFromParent","activeNode","createRenderTarget","nearest","floatType","msaa","mipmap","WebGLRenderTarget","wrapS","wrapT","magFilter","minFilter","LinearMipMapLinearFilter","anisotropy","colorSpace","depthBuffer","stencilBuffer","samples","generateMipmaps","createCubeRenderTarget","size","WebGLCubeRenderTarget","createDataTexture","data","DataTexture","RGBAFormat","UVMapping","portal","Scene","every","isMaterial","isTexture","autoResize","shadows","targetFrameRate","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","tasker","AUTO","el","getElementById","webgl","WebGLRenderer","context","setPixelRatio","outputColorSpace","shadowMap","PCFSoftShadowMap","autoReset","LoadingManager","Plugin"],"mappings":";;;;AAWO,MAAMA,YAAAA,CAAAA;AAGCC,IAAAA,YAAAA,CAAaC,IAAoB,EAAEC,KAAa,EAAEC,IAAY,EAAE;QACtE,IAAID,KAAAA,GAAQ,CAAC,CAAG,EAAA;YACZD,IAAKG,CAAAA,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;YACnB,IAAID,IAAAA,CAAKI,MAAM,KAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,IAAI,CAACC,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAI,KAAQ,GAAA;QACJ,IAAI,CAACD,OAAO,GAAG,EAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAE,IAAAA,GAAAA,CAAIL,IAAY,EAAE;AACd,QAAA,OAAO,CAAC,CAAC,IAAI,CAACG,OAAO,CAACH,IAAK,CAAA,CAAA;AAC/B,KAAA;IAEAM,EAAGN,CAAAA,IAAY,EAAEO,QAAiC,EAAEC,MAAe,EAAEC,IAAAA,GAAgB,KAAK,EAAE;AACxF,QAAA,IAAIX,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,QAAA,IAAIF,QAAQ,IAAM,EAAA;AACdA,YAAAA,IAAAA,GAAO,IAAI,CAACK,OAAO,CAACH,IAAAA,CAAK,GAAG,EAAE,CAAA;AAClC,SAAA;AAEA,QAAA,IAAID,QAAQD,IAAKY,CAAAA,SAAS,CAACC,CAAAA,IAAKA,CAAEJ,CAAAA,QAAQ,KAAKA,QAAAA,KAAa,CAACC,MAAAA,IAAUG,CAAEH,CAAAA,MAAM,KAAKA,MAAK,CAAA,CAAA,CAAA;QACzF,IAAIT,KAAAA,GAAQ,CAAC,CAAG,EAAA;AACZa,YAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAC,OAAO,EAAEb,IAAAA,CAAK,qBAAqB,CAAC,CAAA,CAAA;AAClD,YAAA,OAAA;AACJ,SAAA;AAEAF,QAAAA,IAAAA,CAAKgB,IAAI,CAAC;AAAEd,YAAAA,IAAAA;AAAMO,YAAAA,QAAAA;AAAUC,YAAAA,MAAAA;AAAQC,YAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AACzC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAM,IAAAA,GAAAA,CAAIf,IAAY,EAAEO,QAAiC,EAAEC,MAAe,EAAE;AAClE,QAAA,IAAIV,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,QAAA,IAAIF,IAAM,EAAA;AACN,YAAA,IAAIC,QAAQD,IAAKY,CAAAA,SAAS,CAACM,CAAAA,IAAK,CAACA,CAAET,QAAQ,KAAKA,aAAc,CAACC,UAAUQ,CAAER,CAAAA,MAAM,KAAKA,MAAK,CAAA,CAAA,CAAA;AAC3F,YAAA,IAAI,CAACX,YAAY,CAACC,IAAAA,EAAMC,KAAOC,EAAAA,IAAAA,CAAAA,CAAAA;AACnC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAiB,IAAAA,IAAAA,CAAKjB,IAAY,EAAEO,QAAiC,EAAEW,SAA+C,EAAE;QACnG,IAAIA,SAAAA,CAAUC,UAAU,KAAKC,SAAW,EAAA;YACpCF,SAAUC,CAAAA,UAAU,GAAG,EAAE,CAAA;AAC7B,SAAA;QACAD,SAAUC,CAAAA,UAAU,CAACL,IAAI,CAAC;AAAEd,YAAAA,IAAAA;AAAMO,YAAAA,QAAAA;AAAS,SAAA,CAAA,CAAA;QAC3C,IAAI,CAACD,EAAE,CAACN,IAAMO,EAAAA,QAAAA,CAAAA,CAAAA;AACd,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAc,IAAAA,KAAAA,CAAMH,SAA+C,EAAE;AACnD,QAAA,KAAK,IAAIP,CAAAA,IAAKO,SAAUC,CAAAA,UAAU,CAAE;AAChC,YAAA,IAAI,CAACJ,GAAG,CAACJ,EAAEX,IAAI,EAAEW,EAAEJ,QAAQ,CAAA,CAAA;AAC/B,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAe,IAAAA,SAAAA,CAAUd,MAAc,EAAE;AACtB,QAAA,IAAK,IAAIR,IAAAA,IAAQ,IAAI,CAACG,OAAO,CAAE;AAC3B,YAAA,IAAIL,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,YAAA,IAAK,IAAIuB,CAAAA,GAAIzB,IAAKI,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAC5B,IAAIZ,CAAAA,GAAIb,IAAI,CAACyB,CAAE,CAAA,CAAA;gBACf,IAAIZ,CAAAA,CAAEH,MAAM,KAAKA,MAAQ,EAAA;AACrB,oBAAA,IAAI,CAACX,YAAY,CAACC,IAAAA,EAAMyB,CAAGvB,EAAAA,IAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACJ,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAwB,IAAAA,IAAAA,CAAKxB,IAAY,EAAE,GAAGyB,IAAW,EAAE;AAC/B,QAAA,IAAI3B,IAAO,GAAA,IAAI,CAACK,OAAO,CAACH,IAAK,CAAA,CAAA;AAC7B,QAAA,IAAIF,IAAM,EAAA;AACN,YAAA,IAAK,IAAIyB,CAAAA,GAAIzB,IAAKI,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAC5B,IAAIZ,CAAAA,GAAIb,IAAI,CAACyB,CAAE,CAAA,CAAA;AACf,gBAAA,IAAIZ,CAAG,EAAA;oBACH,IAAIA,CAAAA,CAAEF,IAAI,EAAE,IAAI,CAACZ,YAAY,CAACC,MAAMyB,CAAGvB,EAAAA,IAAAA,CAAAA,CAAAA;oBACvC,IAAIW,CAAAA,CAAEH,MAAM,EAAEG,CAAEJ,CAAAA,QAAQ,CAACmB,KAAK,CAACf,CAAEH,CAAAA,MAAM,EAAEiB,IAAAA,CAAAA,CAAAA;AACpCd,yBAAAA,CAAAA,CAAEJ,QAAQ,CAAIkB,GAAAA,IAAAA,CAAAA,CAAAA;AACvB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;;AAvFUtB,QAAAA,IAAAA,CAAAA,OAAAA,GAA2C,EAAC,CAAA;;AAwF1D;;ACrGA;;;AAGC,yBAED,MAAMwB,OAAO,CAACC,OAAAA,EAAe,GAAGC,cAA2B,GAAA,EAAA,CAAA;AAC3D,MAAMC,KAAQlB,GAAAA,OAAAA,CAAQmB,GAAG,CAACC,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;AAC/B,MAAMqB,IAAOrB,GAAAA,OAAAA,CAAQqB,IAAI,CAACD,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;AAC/B,MAAMC,IAAOD,GAAAA,OAAAA,CAAQC,IAAI,CAACmB,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;AAC/B,MAAMsB,KAAQtB,GAAAA,OAAAA,CAAQsB,KAAK,CAACF,IAAI,CAACpB,OAAAA,CAAAA,CAAAA;MAEpBuB,MAAS,GAAA;IACpBL,KAAOH,EAAAA,IAAAA;IACPM,IAAMN,EAAAA,IAAAA;IACNd,IAAMc,EAAAA,IAAAA;IACNO,KAAOP,EAAAA,IAAAA;IACPS,SAAW,EAAA,KAAA;AAEX,uBACAC,MAAAA,CAAAA,GAAAA;QACE,IAAI,CAACP,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACG,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACpB,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACqB,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACE,SAAS,GAAG,IAAA,CAAA;AACnB,KAAA;AAEA,wBACAE,OAAAA,CAAAA,GAAAA;QACE,IAAI,CAACR,KAAK,GAAGH,IAAAA,CAAAA;QACb,IAAI,CAACM,IAAI,GAAGN,IAAAA,CAAAA;QACZ,IAAI,CAACd,IAAI,GAAGc,IAAAA,CAAAA;QACZ,IAAI,CAACO,KAAK,GAAGP,IAAAA,CAAAA;QACb,IAAI,CAACS,SAAS,GAAG,KAAA,CAAA;AACnB,KAAA;AACF;;ACnCO,SAASG,KAAAA,CAAMC,WAAgB,EAAEC,SAAgB,EAAA;IACpDA,SAAUC,CAAAA,OAAO,CAAC,CAACC,QAAAA,GAAAA;AACfC,QAAAA,MAAAA,CAAOC,mBAAmB,CAACF,QAAAA,CAASG,SAAS,CAAEJ,CAAAA,OAAO,CAAC,CAAC1C,IAAAA,GAAAA;AACpD4C,YAAAA,MAAAA,CAAOG,cAAc,CACjBP,WAAYM,CAAAA,SAAS,EACrB9C,IACA4C,EAAAA,MAAAA,CAAOI,wBAAwB,CAACL,SAASG,SAAS,EAAE9C,IAAS4C,CAAAA,IAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA,CAAA;AAEnF,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA,CAAA;AACJ;;ACVA;;AAEC,IACD,IAAIC,MAAS,GAAA;IACTC,MAAQ,EAAA;AACJC,QAAAA,IAAAA,EAAM,SAAUC,MAAM,EAAA;YAClB,OAAOA,MAAAA,CAAAA;AACX,SAAA;AACJ,KAAA;IACAC,SAAW,EAAA;AACPC,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAOA,MAASA,GAAAA,MAAAA,CAAAA;AACpB,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,OAAOA,MAAAA,IAAU,CAAA,GAAIA,MAAK,CAAA,CAAA;AAC9B,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,MAAMA,MAASA,GAAAA,MAAAA,CAAAA;AAC1B,aAAA;YACA,OAAO,CAAC,OAAO,EAAEA,UAAUA,MAAAA,GAAS,CAAA,CAAA,GAAK,CAAA,CAAA,CAAA;AAC7C,SAAA;AACJ,KAAA;IACAK,KAAO,EAAA;AACHH,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAOA,SAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC7B,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,OAAO,EAAEA,MAASA,GAAAA,MAAAA,GAASA,MAAS,GAAA,CAAA,CAAA;AACxC,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;gBACnB,OAAO,GAAA,GAAMA,SAASA,MAASA,GAAAA,MAAAA,CAAAA;AACnC,aAAA;YACA,OAAO,GAAA,IAAO,CAACA,UAAU,CAAA,IAAKA,MAASA,GAAAA,MAAAA,GAAS,CAAA,CAAA,CAAA;AACpD,SAAA;AACJ,KAAA;IACAM,OAAS,EAAA;AACLJ,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;YAChB,OAAOA,MAAAA,GAASA,SAASA,MAASA,GAAAA,MAAAA,CAAAA;AACtC,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAO,CAAI,GAAA,EAAEA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC5C,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;gBACnB,OAAO,GAAA,GAAMA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC5C,aAAA;YACA,OAAO,CAAC,GAAO,IAAA,CAACA,MAAU,IAAA,CAAA,IAAKA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAAS,CAAA,CAAA,CAAA;AAC9D,SAAA;AACJ,KAAA;IACAO,OAAS,EAAA;AACLL,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;YAChB,OAAOA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AAC/C,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAO,EAAEA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAASA,SAASA,MAAS,GAAA,CAAA,CAAA;AAC1D,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,GAAMA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,CAAAA;AACrD,aAAA;YACA,OAAO,GAAA,IAAQA,CAAAA,MAAAA,IAAU,CAAA,IAAKA,MAASA,GAAAA,MAAAA,GAASA,MAASA,GAAAA,MAAAA,GAAS,CAAA,CAAA,CAAA;AACtE,SAAA;AACJ,KAAA;IACAQ,UAAY,EAAA;AACRN,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;YAChB,OAAO,CAAA,GAAIS,KAAKC,GAAG,CAAC,MAAUD,GAAAA,IAAAA,CAAKE,EAAE,GAAI,CAAA,CAAA,CAAA;AAC7C,SAAA;AACAR,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAOS,KAAKG,GAAG,CAAC,MAAUH,GAAAA,IAAAA,CAAKE,EAAE,GAAI,CAAA,CAAA,CAAA;AACzC,SAAA;AACAP,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;YACnB,OAAO,GAAA,IAAO,CAAIS,GAAAA,IAAAA,CAAKC,GAAG,CAACD,IAAAA,CAAKE,EAAE,GAAGX,MAAM,CAAA,CAAA,CAAA;AAC/C,SAAA;AACJ,KAAA;IACAa,WAAa,EAAA;AACTX,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAOA,WAAW,CAAI,GAAA,CAAA,GAAIS,KAAKK,GAAG,CAAC,MAAMd,MAAS,GAAA,CAAA,CAAA,CAAA;AACtD,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,OAAOA,MAAAA,KAAW,IAAI,CAAI,GAAA,CAAA,GAAIS,KAAKK,GAAG,CAAC,CAAG,EAAA,CAAC,EAAKd,GAAAA,MAAAA,CAAAA,CAAAA;AACpD,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,GAAMS,GAAAA,IAAAA,CAAKK,GAAG,CAAC,MAAMd,MAAS,GAAA,CAAA,CAAA,CAAA;AACzC,aAAA;AACA,YAAA,OAAO,GAAO,IAAA,CAACS,IAAAA,CAAKK,GAAG,CAAC,CAAG,EAAA,CAAC,EAAMd,IAAAA,MAAS,GAAA,CAAA,KAAM,CAAA,CAAA,CAAA;AACrD,SAAA;AACJ,KAAA;IACAe,QAAU,EAAA;AACNb,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAO,CAAIS,GAAAA,IAAAA,CAAKO,IAAI,CAAC,IAAIhB,MAASA,GAAAA,MAAAA,CAAAA,CAAAA;AACtC,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,OAAOS,IAAKO,CAAAA,IAAI,CAAC,CAAA,GAAI,EAAEhB,MAASA,GAAAA,MAAAA,CAAAA,CAAAA;AACpC,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAI,CAACA,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;gBACnB,OAAO,CAAC,OAAOS,IAAAA,CAAKO,IAAI,CAAC,CAAA,GAAIhB,MAASA,GAAAA,MAAAA,CAAAA,GAAU,CAAA,CAAA,CAAA;AACpD,aAAA;AACA,YAAA,OAAO,GAAOS,IAAAA,IAAKO,CAAAA,IAAI,CAAC,CAAA,GAAI,CAAChB,MAAU,IAAA,CAAA,IAAKA,MAAAA,CAAAA,GAAU,CAAA,CAAA,CAAA;AAC1D,SAAA;AACJ,KAAA;IACAiB,OAAS,EAAA;AACLf,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;YACA,OAAO,CAACS,KAAKK,GAAG,CAAC,GAAG,EAAMd,IAAAA,SAAS,CAAA,CAAA,CAAA,GAAMS,KAAKG,GAAG,CAAC,CAACZ,MAAAA,GAAS,GAAE,IAAK,CAAA,GAAIS,KAAKE,EAAE,CAAA,CAAA;AAClF,SAAA;AACAR,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,OAAOS,KAAKK,GAAG,CAAC,GAAG,CAAC,EAAA,GAAKd,UAAUS,IAAKG,CAAAA,GAAG,CAAEZ,CAAAA,MAAS,GAAA,GAAE,IAAK,CAAIS,GAAAA,IAAAA,CAAKE,EAAE,CAAI,GAAA,CAAA,CAAA;AAChF,SAAA;AACAP,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAIA,WAAW,CAAG,EAAA;gBACd,OAAO,CAAA,CAAA;AACX,aAAA;YACAA,MAAU,IAAA,CAAA,CAAA;AACV,YAAA,IAAIA,SAAS,CAAG,EAAA;gBACZ,OAAO,CAAC,MAAMS,IAAKK,CAAAA,GAAG,CAAC,CAAG,EAAA,EAAA,IAAMd,MAAS,GAAA,CAAA,KAAMS,IAAKG,CAAAA,GAAG,CAAC,CAACZ,SAAS,GAAE,IAAK,CAAIS,GAAAA,IAAAA,CAAKE,EAAE,CAAA,CAAA;AACxF,aAAA;YACA,OAAO,GAAA,GAAMF,KAAKK,GAAG,CAAC,GAAG,CAAC,EAAA,IAAMd,MAAAA,GAAS,CAAA,CAAA,CAAA,GAAMS,KAAKG,GAAG,CAAC,CAACZ,MAAAA,GAAS,GAAE,IAAK,CAAA,GAAIS,IAAKE,CAAAA,EAAE,CAAI,GAAA,CAAA,CAAA;AAC5F,SAAA;AACJ,KAAA;IACAO,IAAM,EAAA;AACFhB,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,IAAImB,CAAI,GAAA,OAAA,CAAA;YACR,OAAOnB,MAAAA,GAASA,UAAWmB,CAAAA,CAAI,GAAA,CAAA,IAAKnB,MAAAA,GAASmB,CAAAA,CAAAA,CAAAA;AACjD,SAAA;AACAhB,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;AACjB,YAAA,IAAImB,CAAI,GAAA,OAAA,CAAA;YACR,OAAO,EAAEnB,MAASA,GAAAA,MAAAA,IAAWmB,CAAAA,CAAAA,GAAI,CAAA,IAAKnB,MAASmB,GAAAA,CAAAA,CAAK,GAAA,CAAA,CAAA;AACxD,SAAA;AACAf,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAImB,IAAI,OAAU,GAAA,KAAA,CAAA;AAClB,YAAA,IAAI,CAACnB,MAAU,IAAA,CAAA,IAAK,CAAG,EAAA;AACnB,gBAAA,OAAO,GAAOA,IAAAA,MAASA,GAAAA,MAAAA,IAAWmB,CAAAA,CAAAA,GAAI,CAAA,IAAKnB,MAASmB,GAAAA,CAAAA,CAAC,CAAA,CAAA;AACzD,aAAA;AACA,YAAA,OAAO,OAAQnB,CAAAA,MAAAA,IAAU,CAAA,IAAKA,MAAAA,IAAWmB,CAAAA,CAAI,GAAA,CAAA,IAAKnB,MAASmB,GAAAA,CAAAA,IAAK,CAAA,CAAA,CAAA;AACpE,SAAA;AACJ,KAAA;IACAC,MAAQ,EAAA;AACJlB,QAAAA,EAAAA,EAAI,SAAUF,MAAM,EAAA;AAChB,YAAA,OAAO,IAAIH,MAAOuB,CAAAA,MAAM,CAACjB,GAAG,CAAC,CAAIH,GAAAA,MAAAA,CAAAA,CAAAA;AACrC,SAAA;AACAG,QAAAA,GAAAA,EAAK,SAAUH,MAAM,EAAA;YACjB,IAAIA,MAAAA,GAAS,IAAI,IAAM,EAAA;AACnB,gBAAA,OAAO,SAASA,MAASA,GAAAA,MAAAA,CAAAA;aAExB,MAAA,IAAIA,MAAS,GAAA,CAAA,GAAI,IAAM,EAAA;AACxB,gBAAA,OAAO,UAAUA,MAAAA,IAAU,GAAM,GAAA,IAAG,IAAKA,MAAS,GAAA,IAAA,CAAA;aAEjD,MAAA,IAAIA,MAAS,GAAA,GAAA,GAAM,IAAM,EAAA;AAC1B,gBAAA,OAAO,UAAUA,MAAAA,IAAU,IAAO,GAAA,IAAG,IAAKA,MAAS,GAAA,MAAA,CAAA;aAElD,MAAA;AACD,gBAAA,OAAO,UAAUA,MAAAA,IAAU,KAAQ,GAAA,IAAG,IAAKA,MAAS,GAAA,QAAA,CAAA;AACxD,aAAA;AACJ,SAAA;AACAI,QAAAA,KAAAA,EAAO,SAAUJ,MAAM,EAAA;AACnB,YAAA,IAAIA,SAAS,GAAK,EAAA;AACd,gBAAA,OAAOH,OAAOuB,MAAM,CAAClB,EAAE,CAACF,SAAS,CAAK,CAAA,GAAA,GAAA,CAAA;AAC1C,aAAA;YACA,OAAOH,MAAAA,CAAOuB,MAAM,CAACjB,GAAG,CAACH,MAAS,GAAA,CAAA,GAAI,KAAK,GAAM,GAAA,GAAA,CAAA;AACrD,SAAA;AACJ,KAAA;AACJ,CAAA,CAAA;AAEA,IAAIqB,GAAAA,CAAAA;AACJ;AACA;AACA;AACA;AACA,IAAI,OAAOC,SAAS,WAAe,IAAA,OAAOC,YAAY,WAAeA,IAAAA,OAAAA,CAAQC,MAAM,EAAE;IACjFH,GAAM,GAAA,WAAA;;;QAGF,IAAII,IAAAA,GAAOF,QAAQC,MAAM,EAAA,CAAA;;QAEzB,OAAOC,IAAI,CAAC,CAAE,CAAA,GAAG,OAAOA,IAAI,CAAC,EAAE,GAAG,OAAA,CAAA;AACtC,KAAA,CAAA;AACJ,CAAA,MAEK,IAAI,OAAOH,IAAS,KAAA,WAAA,IAAeA,IAAKI,CAAAA,WAAW,KAAK3D,SAAAA,IAAauD,IAAKI,CAAAA,WAAW,CAACL,GAAG,KAAKtD,SAAW,EAAA;;;IAG1GsD,GAAMC,GAAAA,IAAAA,CAAKI,WAAW,CAACL,GAAG,CAAC1C,IAAI,CAAC2C,KAAKI,WAAW,CAAA,CAAA;AACpD,CAAA,MAEK,IAAIC,IAAAA,CAAKN,GAAG,KAAKtD,SAAW,EAAA;AAC7BsD,IAAAA,GAAAA,GAAMM,KAAKN,GAAG,CAAA;AAClB,CAEK,MAAA;IACDA,GAAM,GAAA,WAAA;QACF,OAAO,IAAIM,OAAOC,OAAO,EAAA,CAAA;AAC7B,KAAA,CAAA;AACJ,CAAA;AAEA,SAASC,KAAAA,GAAAA;AACL,IAAA,OAAOR,GAAQ,EAAA,GAAA,KAAA,CAAA;AACnB,CAAA;AAEA;;;;;IAMA,IAAIS,KAAQ,iBAAe,WAAA;IACvB,SAASA,KAAAA,GAAAA;QACL,IAAI,CAACC,OAAO,GAAG,EAAC,CAAA;QAChB,IAAI,CAACC,wBAAwB,GAAG,EAAC,CAAA;AACrC,KAAA;IACAF,KAAMrC,CAAAA,SAAS,CAACwC,MAAM,GAAG,WAAA;AACrB,QAAA,IAAIC,QAAQ,IAAI,CAAA;QAChB,OAAO3C,MAAAA,CAAO4C,IAAI,CAAC,IAAI,CAACJ,OAAO,CAAEK,CAAAA,GAAG,CAAC,SAAUC,OAAO,EAAA;YAClD,OAAOH,KAAAA,CAAMH,OAAO,CAACM,OAAQ,CAAA,CAAA;AACjC,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;IACAP,KAAMrC,CAAAA,SAAS,CAAC6C,SAAS,GAAG,WAAA;QACxB,IAAI,CAACP,OAAO,GAAG,EAAC,CAAA;AACpB,KAAA,CAAA;AACAD,IAAAA,KAAAA,CAAMrC,SAAS,CAAC8C,GAAG,GAAG,SAAUC,KAAK,EAAA;AACjC,QAAA,IAAI,CAACT,OAAO,CAACS,KAAMC,CAAAA,KAAK,GAAG,GAAGD,KAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACR,wBAAwB,CAACQ,KAAMC,CAAAA,KAAK,GAAG,GAAGD,KAAAA,CAAAA;AACnD,KAAA,CAAA;AACAV,IAAAA,KAAAA,CAAMrC,SAAS,CAACiD,MAAM,GAAG,SAAUF,KAAK,EAAA;AACpC,QAAA,OAAO,IAAI,CAACT,OAAO,CAACS,KAAAA,CAAMC,KAAK,EAAG,CAAA,CAAA;AAClC,QAAA,OAAO,IAAI,CAACT,wBAAwB,CAACQ,KAAAA,CAAMC,KAAK,EAAG,CAAA,CAAA;AACvD,KAAA,CAAA;AACAX,IAAAA,KAAAA,CAAMrC,SAAS,CAACkD,MAAM,GAAG,SAAUlB,IAAI,EAAEmB,QAAQ,EAAA;QAC7C,IAAInB,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAIe,QAAAA,KAAa,KAAK,CAAG,EAAA;YAAEA,QAAW,GAAA,KAAA,CAAA;AAAO,SAAA;AAC7C,QAAA,IAAIC,WAAWtD,MAAO4C,CAAAA,IAAI,CAAC,IAAI,CAACJ,OAAO,CAAA,CAAA;QACvC,IAAIc,QAAAA,CAAShG,MAAM,KAAK,CAAG,EAAA;YACvB,OAAO,KAAA,CAAA;AACX,SAAA;;;;;;QAMA,MAAOgG,QAAAA,CAAShG,MAAM,GAAG,CAAG,CAAA;YACxB,IAAI,CAACmF,wBAAwB,GAAG,EAAC,CAAA;AACjC,YAAA,IAAK,IAAI9D,CAAI,GAAA,CAAA,EAAGA,IAAI2E,QAAShG,CAAAA,MAAM,EAAEqB,CAAK,EAAA,CAAA;gBACtC,IAAIsE,KAAAA,GAAQ,IAAI,CAACT,OAAO,CAACc,QAAQ,CAAC3E,EAAE,CAAC,CAAA;AACrC,gBAAA,IAAI4E,YAAY,CAACF,QAAAA,CAAAA;gBACjB,IAAIJ,KAAAA,IAASA,MAAMG,MAAM,CAAClB,MAAMqB,SAAe,CAAA,KAAA,KAAA,IAAS,CAACF,QAAU,EAAA;AAC/D,oBAAA,OAAO,IAAI,CAACb,OAAO,CAACc,QAAQ,CAAC3E,EAAE,CAAC,CAAA;AACpC,iBAAA;AACJ,aAAA;AACA2E,YAAAA,QAAAA,GAAWtD,MAAO4C,CAAAA,IAAI,CAAC,IAAI,CAACH,wBAAwB,CAAA,CAAA;AACxD,SAAA;QACA,OAAO,IAAA,CAAA;AACX,KAAA,CAAA;IACA,OAAOF,KAAAA,CAAAA;AACX,CAAA,EAAA,CAAA;AAEA;;AAEC,IACD,IAAIiB,aAAgB,GAAA;IAChBjD,MAAQ,EAAA,SAAUxC,CAAC,EAAE0F,CAAC,EAAA;QAClB,IAAIC,CAAAA,GAAI3F,CAAET,CAAAA,MAAM,GAAG,CAAA,CAAA;AACnB,QAAA,IAAIqG,IAAID,CAAID,GAAAA,CAAAA,CAAAA;QACZ,IAAI9E,CAAAA,GAAIuC,IAAK0C,CAAAA,KAAK,CAACD,CAAAA,CAAAA,CAAAA;AACnB,QAAA,IAAIE,EAAKL,GAAAA,aAAAA,CAAcM,KAAK,CAACvD,MAAM,CAAA;AACnC,QAAA,IAAIkD,IAAI,CAAG,EAAA;YACP,OAAOI,EAAAA,CAAG9F,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,EAAE,EAAE4F,CAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACA,QAAA,IAAIF,IAAI,CAAG,EAAA;YACP,OAAOI,EAAAA,CAAG9F,CAAC,CAAC2F,CAAE,CAAA,EAAE3F,CAAC,CAAC2F,CAAAA,GAAI,CAAE,CAAA,EAAEA,CAAIC,GAAAA,CAAAA,CAAAA,CAAAA;AAClC,SAAA;AACA,QAAA,OAAOE,EAAG9F,CAAAA,CAAC,CAACY,CAAAA,CAAE,EAAEZ,CAAC,CAACY,CAAI,GAAA,CAAA,GAAI+E,CAAIA,GAAAA,CAAAA,GAAI/E,CAAI,GAAA,CAAA,CAAE,EAAEgF,CAAIhF,GAAAA,CAAAA,CAAAA,CAAAA;AAClD,KAAA;IACAoF,MAAQ,EAAA,SAAUhG,CAAC,EAAE0F,CAAC,EAAA;AAClB,QAAA,IAAIO,CAAI,GAAA,CAAA,CAAA;QACR,IAAIC,CAAAA,GAAIlG,CAAET,CAAAA,MAAM,GAAG,CAAA,CAAA;QACnB,IAAI4G,EAAAA,GAAKhD,KAAKK,GAAG,CAAA;AACjB,QAAA,IAAI4C,EAAKX,GAAAA,aAAAA,CAAcM,KAAK,CAACM,SAAS,CAAA;AACtC,QAAA,IAAK,IAAIzF,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAKsF,GAAGtF,CAAK,EAAA,CAAA;AACzBqF,YAAAA,CAAAA,IAAKE,EAAG,CAAA,CAAA,GAAIT,CAAGQ,EAAAA,CAAAA,GAAItF,CAAKuF,CAAAA,GAAAA,EAAAA,CAAGT,CAAG9E,EAAAA,CAAAA,CAAAA,GAAKZ,CAAC,CAACY,CAAE,CAAA,GAAGwF,GAAGF,CAAGtF,EAAAA,CAAAA,CAAAA,CAAAA;AACpD,SAAA;QACA,OAAOqF,CAAAA,CAAAA;AACX,KAAA;IACAK,UAAY,EAAA,SAAUtG,CAAC,EAAE0F,CAAC,EAAA;QACtB,IAAIC,CAAAA,GAAI3F,CAAET,CAAAA,MAAM,GAAG,CAAA,CAAA;AACnB,QAAA,IAAIqG,IAAID,CAAID,GAAAA,CAAAA,CAAAA;QACZ,IAAI9E,CAAAA,GAAIuC,IAAK0C,CAAAA,KAAK,CAACD,CAAAA,CAAAA,CAAAA;AACnB,QAAA,IAAIE,EAAKL,GAAAA,aAAAA,CAAcM,KAAK,CAACO,UAAU,CAAA;AACvC,QAAA,IAAItG,CAAC,CAAC,CAAA,CAAE,KAAKA,CAAC,CAAC2F,EAAE,EAAE;AACf,YAAA,IAAID,IAAI,CAAG,EAAA;AACP9E,gBAAAA,CAAAA,GAAIuC,KAAK0C,KAAK,CAAED,IAAID,CAAK,IAAA,IAAID,CAAAA,CAAAA,CAAAA,CAAAA;AACjC,aAAA;AACA,YAAA,OAAOI,EAAG9F,CAAAA,CAAC,CAAEY,CAAAA,CAAI,GAAA,CAAA,GAAI+E,CAAAA,IAAKA,CAAE,CAAA,EAAE3F,CAAC,CAACY,EAAE,EAAEZ,CAAC,CAAEY,CAAAA,CAAAA,GAAI,CAAA,IAAK+E,EAAE,EAAE3F,CAAC,CAAEY,CAAAA,CAAI,GAAA,CAAA,IAAK+E,CAAAA,CAAE,EAAEC,CAAIhF,GAAAA,CAAAA,CAAAA,CAAAA;SAEvE,MAAA;AACD,YAAA,IAAI8E,IAAI,CAAG,EAAA;gBACP,OAAO1F,CAAC,CAAC,CAAA,CAAE,IAAI8F,EAAG9F,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAE,CAAC4F,CAAK5F,CAAAA,GAAAA,CAAC,CAAC,CAAA,CAAE,CAAD,CAAA;AACvD,aAAA;AACA,YAAA,IAAI0F,IAAI,CAAG,EAAA;AACP,gBAAA,OAAO1F,CAAC,CAAC2F,CAAE,CAAA,IAAIG,EAAAA,CAAG9F,CAAC,CAAC2F,CAAE,CAAA,EAAE3F,CAAC,CAAC2F,CAAE,CAAA,EAAE3F,CAAC,CAAC2F,CAAI,GAAA,CAAA,CAAE,EAAE3F,CAAC,CAAC2F,CAAAA,GAAI,CAAE,CAAA,EAAEC,CAAID,GAAAA,CAAAA,CAAAA,GAAK3F,CAAC,CAAC2F,EAAE,CAAD,CAAA;AAClE,aAAA;AACA,YAAA,OAAOG,EAAG9F,CAAAA,CAAC,CAACY,CAAAA,GAAIA,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,EAAEZ,CAAC,CAACY,CAAE,CAAA,EAAEZ,CAAC,CAAC2F,CAAAA,GAAI/E,CAAI,GAAA,CAAA,GAAI+E,CAAI/E,GAAAA,CAAAA,GAAI,CAAE,CAAA,EAAEZ,CAAC,CAAC2F,CAAI/E,GAAAA,CAAAA,GAAI,CAAI+E,GAAAA,CAAAA,GAAI/E,CAAI,GAAA,CAAA,CAAE,EAAEgF,CAAIhF,GAAAA,CAAAA,CAAAA,CAAAA;AAC9F,SAAA;AACJ,KAAA;IACAmF,KAAO,EAAA;AACHvD,QAAAA,MAAAA,EAAQ,SAAU+D,EAAE,EAAEC,EAAE,EAAEC,CAAC,EAAA;AACvB,YAAA,OAAO,CAACD,EAAKD,GAAAA,EAAC,IAAKE,CAAIF,GAAAA,EAAAA,CAAAA;AAC3B,SAAA;QACAF,SAAW,EAAA,SAAUH,CAAC,EAAEtF,CAAC,EAAA;AACrB,YAAA,IAAI8F,EAAKjB,GAAAA,aAAAA,CAAcM,KAAK,CAACY,SAAS,CAAA;AACtC,YAAA,OAAOD,EAAGR,CAAAA,CAAAA,CAAAA,GAAKQ,EAAG9F,CAAAA,CAAAA,CAAAA,GAAK8F,GAAGR,CAAItF,GAAAA,CAAAA,CAAAA,CAAAA;AAClC,SAAA;AACA+F,QAAAA,SAAAA,EAAW,WAAC;AACR,YAAA,IAAItG,CAAI,GAAA;AAAC,gBAAA,CAAA;AAAE,aAAA,CAAA;AACX,YAAA,OAAO,SAAU6F,CAAC,EAAA;AACd,gBAAA,IAAIrC,CAAI,GAAA,CAAA,CAAA;gBACR,IAAIxD,CAAC,CAAC6F,CAAAA,CAAE,EAAE;oBACN,OAAO7F,CAAC,CAAC6F,CAAE,CAAA,CAAA;AACf,iBAAA;AACA,gBAAA,IAAK,IAAItF,CAAAA,GAAIsF,CAAGtF,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;oBACxBiD,CAAKjD,IAAAA,CAAAA,CAAAA;AACT,iBAAA;gBACAP,CAAC,CAAC6F,EAAE,GAAGrC,CAAAA,CAAAA;gBACP,OAAOA,CAAAA,CAAAA;AACX,aAAA,CAAA;AACJ,SAAA,EAAA;QACAyC,UAAY,EAAA,SAAUC,EAAE,EAAEC,EAAE,EAAEI,EAAE,EAAEC,EAAE,EAAEJ,CAAC,EAAA;AACnC,YAAA,IAAIK,EAAK,GAACF,CAAAA,EAAAA,GAAKL,EAAC,IAAK,GAAA,CAAA;AACrB,YAAA,IAAIQ,EAAK,GAACF,CAAAA,EAAAA,GAAKL,EAAC,IAAK,GAAA,CAAA;AACrB,YAAA,IAAIQ,KAAKP,CAAIA,GAAAA,CAAAA,CAAAA;AACb,YAAA,IAAIQ,KAAKR,CAAIO,GAAAA,EAAAA,CAAAA;YACb,OAAQ,CAAA,CAAIR,GAAAA,EAAAA,GAAK,IAAII,EAAKE,GAAAA,EAAAA,GAAKC,EAAC,IAAKE,EAAK,GAAC,CAAA,CAAC,CAAA,GAAIT,EAAK,GAAA,CAAA,GAAII,EAAK,GAAA,CAAA,GAAIE,KAAKC,EAAC,IAAKC,EAAKF,GAAAA,EAAAA,GAAKL,CAAID,GAAAA,EAAAA,CAAAA;AAC/F,SAAA;AACJ,KAAA;AACJ,CAAA,CAAA;AAEA;;IAGA,IAAIU,QAAW,iBAAe,WAAA;AAC1B,IAAA,SAASA,QACT,GAAA,EAAA;AACAA,IAAAA,QAAAA,CAASC,MAAM,GAAG,WAAA;AACd,QAAA,OAAOD,SAASE,OAAO,EAAA,CAAA;AAC3B,KAAA,CAAA;AACAF,IAAAA,QAAAA,CAASE,OAAO,GAAG,CAAA,CAAA;IACnB,OAAOF,QAAAA,CAAAA;AACX,CAAA,EAAA,CAAA;AAEA,IAAIG,YAAY,IAAI7C,KAAAA,EAAAA,CAAAA;AAEpB;;;;;;;IAQA,IAAI8C,KAAQ,iBAAe,WAAA;IACvB,SAASA,KAAAA,CAAMC,OAAO,EAAEC,MAAM,EAAA;QAC1B,IAAIA,MAAAA,KAAW,KAAK,CAAG,EAAA;YAAEA,MAASH,GAAAA,SAAAA,CAAAA;AAAW,SAAA;QAC7C,IAAI,CAACE,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAACC,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACC,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,CAACC,WAAW,GAAG,CAAA,CAAA;QACnB,IAAI,CAACC,YAAY,GAAG,EAAC,CAAA;QACrB,IAAI,CAACC,UAAU,GAAG,EAAC,CAAA;QACnB,IAAI,CAACC,kBAAkB,GAAG,EAAC,CAAA;QAC3B,IAAI,CAACC,SAAS,GAAG,CAAA,CAAA;QACjB,IAAI,CAACC,cAAc,GAAG,CAAA,CAAA;QACtB,IAAI,CAACC,OAAO,GAAG,CAAA,CAAA;QACf,IAAI,CAACC,KAAK,GAAG,KAAA,CAAA;QACb,IAAI,CAACC,UAAU,GAAG,KAAA,CAAA;QAClB,IAAI,CAACC,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,CAACC,UAAU,GAAG,CAAA,CAAA;QAClB,IAAI,CAACC,UAAU,GAAG,CAAA,CAAA;AAClB,QAAA,IAAI,CAACC,eAAe,GAAG/F,MAAOC,CAAAA,MAAM,CAACC,IAAI,CAAA;AACzC,QAAA,IAAI,CAAC8F,sBAAsB,GAAG9C,aAAAA,CAAcjD,MAAM,CAAA;QAClD,IAAI,CAACgG,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAACC,qBAAqB,GAAG,KAAA,CAAA;AAC7B,QAAA,IAAI,CAACC,GAAG,GAAGxB,QAAAA,CAASC,MAAM,EAAA,CAAA;QAC1B,IAAI,CAACwB,eAAe,GAAG,KAAA,CAAA;QACvB,IAAI,CAACC,QAAQ,GAAG,KAAA,CAAA;QAChB,IAAI,CAACC,UAAU,GAAG,IAAA,CAAA;QAClB,IAAI,CAACC,UAAU,GAAG,IAAA,CAAA;QAClB,IAAI,CAACC,UAAU,GAAG,KAAA,CAAA;AACtB,KAAA;IACAzB,KAAMnF,CAAAA,SAAS,CAACgD,KAAK,GAAG,WAAA;QACpB,OAAO,IAAI,CAACuD,GAAG,CAAA;AACnB,KAAA,CAAA;IACApB,KAAMnF,CAAAA,SAAS,CAAC6G,SAAS,GAAG,WAAA;QACxB,OAAO,IAAI,CAACd,UAAU,CAAA;AAC1B,KAAA,CAAA;IACAZ,KAAMnF,CAAAA,SAAS,CAAC8G,QAAQ,GAAG,WAAA;QACvB,OAAO,IAAI,CAACxB,SAAS,CAAA;AACzB,KAAA,CAAA;AACAH,IAAAA,KAAAA,CAAMnF,SAAS,CAAC+G,QAAQ,GAAG,SAAUC,CAAC,EAAA;QAClC,IAAI,CAACrB,SAAS,GAAGqB,CAAAA,CAAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA7B,IAAAA,KAAAA,CAAMnF,SAAS,CAACiH,KAAK,GAAG,SAAUjF,IAAI,EAAA;QAClC,IAAI,IAAI,CAAC+D,UAAU,EAAE;AACjB,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;;QAEA,IAAI,CAACV,MAAM,IAAI,IAAI,CAACA,MAAM,CAACvC,GAAG,CAAC,IAAI,CAAA,CAAA;AACnC,QAAA,IAAI,CAAC+C,OAAO,GAAG,IAAI,CAACD,cAAc,CAAA;QAClC,IAAI,IAAI,CAACI,SAAS,EAAE;;;YAGhB,IAAI,CAACA,SAAS,GAAG,KAAA,CAAA;AACjB,YAAA,IAAK,IAAIkB,QAAAA,IAAY,IAAI,CAACxB,kBAAkB,CAAE;gBAC1C,IAAI,CAACyB,yBAAyB,CAACD,QAAAA,CAAAA,CAAAA;gBAC/B,IAAI,CAAC1B,YAAY,CAAC0B,QAAAA,CAAS,GAAG,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,CAAA;AACnE,aAAA;AACJ,SAAA;QACA,IAAI,CAACnB,UAAU,GAAG,IAAA,CAAA;QAClB,IAAI,CAACT,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,CAACgB,qBAAqB,GAAG,KAAA,CAAA;QAC7B,IAAI,CAACE,eAAe,GAAG,KAAA,CAAA;QACvB,IAAI,CAACN,UAAU,GAAGlE,IAAS1D,KAAAA,SAAAA,GAAa,OAAO0D,IAAAA,KAAS,QAAWI,GAAAA,KAAAA,EAAAA,GAAUgF,UAAWpF,CAAAA,IAAAA,CAAAA,GAAQA,IAAQI,GAAAA,KAAAA,EAAAA,CAAAA;AACxG,QAAA,IAAI,CAAC8D,UAAU,IAAI,IAAI,CAACD,UAAU,CAAA;AAClC,QAAA,IAAI,CAACoB,gBAAgB,CAAC,IAAI,CAACjC,OAAO,EAAE,IAAI,CAACI,YAAY,EAAE,IAAI,CAACC,UAAU,EAAE,IAAI,CAACC,kBAAkB,CAAA,CAAA;AAC/F,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAP,KAAMnF,CAAAA,SAAS,CAACqH,gBAAgB,GAAG,SAAUjC,OAAO,EAAEI,YAAY,EAAEC,UAAU,EAAEC,kBAAkB,EAAA;QAC9F,IAAK,IAAIwB,YAAYzB,UAAY,CAAA;YAC7B,IAAI6B,UAAAA,GAAalC,OAAO,CAAC8B,QAAS,CAAA,CAAA;YAClC,IAAIK,iBAAAA,GAAoBC,KAAMC,CAAAA,OAAO,CAACH,UAAAA,CAAAA,CAAAA;YACtC,IAAII,QAAAA,GAAWH,iBAAoB,GAAA,OAAA,GAAU,OAAOD,UAAAA,CAAAA;YACpD,IAAIK,mBAAAA,GAAsB,CAACJ,iBAAqBC,IAAAA,KAAAA,CAAMC,OAAO,CAAChC,UAAU,CAACyB,QAAS,CAAA,CAAA,CAAA;;;YAGlF,IAAIQ,QAAAA,KAAa,WAAeA,IAAAA,QAAAA,KAAa,UAAY,EAAA;AACrD,gBAAA,SAAA;AACJ,aAAA;;AAEA,YAAA,IAAIC,mBAAqB,EAAA;gBACrB,IAAIC,SAAAA,GAAYnC,UAAU,CAACyB,QAAS,CAAA,CAAA;gBACpC,IAAIU,SAAAA,CAAUxK,MAAM,KAAK,CAAG,EAAA;AACxB,oBAAA,SAAA;AACJ,iBAAA;;gBAEAwK,SAAYA,GAAAA,SAAAA,CAAUjF,GAAG,CAAC,IAAI,CAACkF,oBAAoB,CAAC3I,IAAI,CAAC,IAAI,EAAEoI,UAAAA,CAAAA,CAAAA,CAAAA;;gBAE/D7B,UAAU,CAACyB,SAAS,GAAG;AAACI,oBAAAA,UAAAA;AAAW,iBAAA,CAACQ,MAAM,CAACF,SAAAA,CAAAA,CAAAA;AAC/C,aAAA;;YAEA,IAAKF,CAAAA,QAAa,KAAA,QAAA,IAAYH,iBAAgB,KAAMD,UAAAA,IAAc,CAACK,mBAAqB,EAAA;AACpFnC,gBAAAA,YAAY,CAAC0B,QAAS,CAAA,GAAGK,iBAAoB,GAAA,EAAE,GAAG,EAAC,CAAA;;gBAEnD,IAAK,IAAIQ,QAAQT,UAAY,CAAA;;;AAGzB9B,oBAAAA,YAAY,CAAC0B,QAAS,CAAA,CAACa,KAAK,GAAGT,UAAU,CAACS,IAAK,CAAA,CAAA;AACnD,iBAAA;gBACArC,kBAAkB,CAACwB,SAAS,GAAGK,iBAAAA,GAAoB,EAAE,GAAG;;;AAGxD,gBAAA,IAAI,CAACF,gBAAgB,CAACC,UAAAA,EAAY9B,YAAY,CAAC0B,QAAAA,CAAS,EAAEzB,UAAU,CAACyB,QAAAA,CAAS,EAAExB,kBAAkB,CAACwB,QAAS,CAAA,CAAA,CAAA;aAE3G,MAAA;;AAED,gBAAA,IAAI,OAAO1B,YAAY,CAAC0B,QAAAA,CAAS,KAAK,WAAa,EAAA;oBAC/C1B,YAAY,CAAC0B,SAAS,GAAGI,UAAAA,CAAAA;AAC7B,iBAAA;AACA,gBAAA,IAAI,CAACC,iBAAmB,EAAA;;;AAGpB/B,oBAAAA,YAAY,CAAC0B,QAAAA,CAAS,IAAI,GAAA,CAAA;AAC9B,iBAAA;AACA,gBAAA,IAAIS,mBAAqB,EAAA;;;oBAGrBjC,kBAAkB,CAACwB,SAAS,GAAGzB,UAAU,CAACyB,QAAS,CAAA,CAACc,KAAK,EAAA,CAAGC,OAAO,EAAA,CAAA;iBAElE,MAAA;AACDvC,oBAAAA,kBAAkB,CAACwB,QAAS,CAAA,GAAG1B,YAAY,CAAC0B,SAAS,IAAI,CAAA,CAAA;AAC7D,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA,CAAA;IACA/B,KAAMnF,CAAAA,SAAS,CAACkI,IAAI,GAAG,WAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC1B,eAAe,EAAE;YACvB,IAAI,CAACA,eAAe,GAAG,IAAA,CAAA;AACvB,YAAA,IAAI,CAAC2B,iBAAiB,EAAA,CAAA;AAC1B,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACpC,UAAU,EAAE;AAClB,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;;QAEA,IAAI,CAACV,MAAM,IAAI,IAAI,CAACA,MAAM,CAACpC,MAAM,CAAC,IAAI,CAAA,CAAA;QACtC,IAAI,CAAC8C,UAAU,GAAG,KAAA,CAAA;QAClB,IAAI,CAACT,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,IAAI,CAAC8C,eAAe,EAAE;AACtB,YAAA,IAAI,CAACA,eAAe,CAAC,IAAI,CAAChD,OAAO,CAAA,CAAA;AACrC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAD,KAAMnF,CAAAA,SAAS,CAACqI,GAAG,GAAG,WAAA;QAClB,IAAI,CAAC5B,QAAQ,GAAG,IAAA,CAAA;QAChB,IAAI,CAACvD,MAAM,CAACoF,QAAAA,CAAAA,CAAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAnD,IAAAA,KAAAA,CAAMnF,SAAS,CAACuI,KAAK,GAAG,SAAUvG,IAAI,EAAA;QAClC,IAAIA,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAI,IAAI,CAACkD,SAAS,IAAI,CAAC,IAAI,CAACS,UAAU,EAAE;AACpC,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QACA,IAAI,CAACT,SAAS,GAAG,IAAA,CAAA;QACjB,IAAI,CAACC,WAAW,GAAGvD,IAAAA,CAAAA;;QAEnB,IAAI,CAACqD,MAAM,IAAI,IAAI,CAACA,MAAM,CAACpC,MAAM,CAAC,IAAI,CAAA,CAAA;AACtC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAkC,IAAAA,KAAAA,CAAMnF,SAAS,CAACwI,MAAM,GAAG,SAAUxG,IAAI,EAAA;QACnC,IAAIA,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAI,CAAC,IAAI,CAACkD,SAAS,IAAI,CAAC,IAAI,CAACS,UAAU,EAAE;AACrC,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QACA,IAAI,CAACT,SAAS,GAAG,KAAA,CAAA;AACjB,QAAA,IAAI,CAACY,UAAU,IAAIlE,IAAO,GAAA,IAAI,CAACuD,WAAW,CAAA;QAC1C,IAAI,CAACA,WAAW,GAAG,CAAA,CAAA;;QAEnB,IAAI,CAACF,MAAM,IAAI,IAAI,CAACA,MAAM,CAACvC,GAAG,CAAC,IAAI,CAAA,CAAA;AACnC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAqC,KAAMnF,CAAAA,SAAS,CAACmI,iBAAiB,GAAG,WAAA;AAChC,QAAA,IAAK,IAAI1J,CAAAA,GAAI,CAAGgK,EAAAA,gBAAAA,GAAmB,IAAI,CAACpC,cAAc,CAACjJ,MAAM,EAAEqB,CAAIgK,GAAAA,gBAAAA,EAAkBhK,CAAK,EAAA,CAAA;AACtF,YAAA,IAAI,CAAC4H,cAAc,CAAC5H,CAAAA,CAAE,CAACyJ,IAAI,EAAA,CAAA;AAC/B,SAAA;QACA,IAAI,CAAC7B,cAAc,GAAG,EAAE,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAlB,IAAAA,KAAAA,CAAMnF,SAAS,CAAC0I,KAAK,GAAG,SAAUA,KAAK,EAAA;QACnC,IAAI,CAACrD,MAAM,GAAGqD,KAAAA,CAAAA;AACd,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAvD,IAAAA,KAAAA,CAAMnF,SAAS,CAAC2I,IAAI,GAAG,SAAUlL,QAAQ,EAAA;QACrC,IAAI,CAACmL,iBAAiB,GAAGnL,QAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA0H,IAAAA,KAAAA,CAAMnF,SAAS,CAAC6I,IAAI,GAAG,SAAUC,UAAU,EAAA;AACvC,QAAA,IAAI,CAACtD,YAAY,GAAG1F,MAAAA,CAAOK,MAAM,CAAC2I,UAAAA,CAAAA,CAAAA;AAClC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA3D,IAAAA,KAAAA,CAAMnF,SAAS,CAAC+I,EAAE,GAAG,SAAUD,UAAU,EAAE/B,QAAQ,EAAA;;;;;AAK/C,QAAA,IAAI,CAACtB,UAAU,GAAG3F,MAAAA,CAAOK,MAAM,CAAC2I,UAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAI/B,aAAazI,SAAW,EAAA;YACxB,IAAI,CAACqH,SAAS,GAAGoB,QAAAA,CAAAA;AACrB,SAAA;QACA,IAAI,CAACiC,aAAa,GAAG,IAAI,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA7D,IAAAA,KAAAA,CAAMnF,SAAS,CAACiJ,KAAK,GAAG,SAAU1I,MAAM,EAAA;QACpC,IAAI,CAAC0F,UAAU,GAAG1F,MAAAA,CAAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4E,IAAAA,KAAAA,CAAMnF,SAAS,CAACkJ,KAAK,GAAG,SAAUC,SAAS,EAAEC,SAAS,EAAA;QAClD,IAAI,CAAC1C,UAAU,GAAGyC,SAAAA,CAAAA;AAClB,QAAA,IAAI,CAACxC,UAAU,GAAGyC,SAAUC,CAAAA,KAAK,CAAC,IAAI,CAAA,CAAA;QACtC,IAAI,CAACzC,UAAU,GAAG,IAAA,CAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAzB,IAAAA,KAAAA,CAAMnF,SAAS,CAACsJ,MAAM,GAAG,SAAUC,KAAK,EAAA;QACpC,IAAI,CAAC3D,cAAc,GAAG2D,KAAAA,CAAAA;QACtB,IAAI,CAAC1D,OAAO,GAAG0D,KAAAA,CAAAA;AACf,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACApE,IAAAA,KAAAA,CAAMnF,SAAS,CAACwJ,WAAW,GAAG,SAAUjJ,MAAM,EAAA;QAC1C,IAAI,CAACkJ,gBAAgB,GAAGlJ,MAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA4E,IAAAA,KAAAA,CAAMnF,SAAS,CAAC0J,IAAI,GAAG,SAAUA,IAAI,EAAA;QACjC,IAAI,CAAC5D,KAAK,GAAG4D,IAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAvE,IAAAA,KAAAA,CAAMnF,SAAS,CAAC2J,MAAM,GAAG,SAAUC,cAAc,EAAA;QAC7C,IAAI,CAACzD,eAAe,GAAGyD,cAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAzE,IAAAA,KAAAA,CAAMnF,SAAS,CAAC6J,aAAa,GAAG,SAAUC,qBAAqB,EAAA;QAC3D,IAAI,CAAC1D,sBAAsB,GAAG0D,qBAAAA,CAAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACA3E,KAAMnF,CAAAA,SAAS,CAACqJ,KAAK,GAAG,WAAA;AACpB,QAAA,IAAIU,SAAS,EAAE,CAAA;AACf,QAAA,IAAK,IAAIC,EAAK,GAAA,CAAA,EAAGA,KAAKC,SAAU7M,CAAAA,MAAM,EAAE4M,EAAM,EAAA,CAAA;AAC1CD,YAAAA,MAAM,CAACC,EAAAA,CAAG,GAAGC,SAAS,CAACD,EAAG,CAAA,CAAA;AAC9B,SAAA;QACA,IAAI,CAAC3D,cAAc,GAAG0D,MAAAA,CAAAA;AACtB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACA5E,KAAMnF,CAAAA,SAAS,CAACkK,OAAO,GAAG,WAAA;AACtB,QAAA,IAAK,IAAIF,EAAK,GAAA,CAAA,EAAGA,KAAKC,SAAU7M,CAAAA,MAAM,EAAE4M,EAAM,EAAA,CAAA;AAC1C,YAAA,IAAI/M,KAAQ,GAAA,IAAI,CAACoJ,cAAc,CAACzI,SAAS,CAACC,CAAAA,CAAKA,GAAAA,CAAAA,IAAKoM,SAAS,CAACD,EAAG,CAAA,CAAA,CAAA;YACjE,IAAI/M,KAAAA,GAAQ,CAAC,CAAG,EAAA;AACZ,gBAAA,IAAI,CAACoJ,cAAc,CAAClJ,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACtC,aAAA;AACJ,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAkI,IAAAA,KAAAA,CAAMnF,SAAS,CAACmK,OAAO,GAAG,SAAU1M,QAAQ,EAAA;QACxC,IAAI,CAAC2M,gBAAgB,GAAG3M,QAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA0H,IAAAA,KAAAA,CAAMnF,SAAS,CAACqK,QAAQ,GAAG,SAAU5M,QAAQ,EAAA;QACzC,IAAI,CAAC6M,iBAAiB,GAAG7M,QAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA0H,IAAAA,KAAAA,CAAMnF,SAAS,CAACuK,QAAQ,GAAG,SAAU9M,QAAQ,EAAA;QACzC,IAAI,CAAC+M,iBAAiB,GAAG/M,QAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA0H,IAAAA,KAAAA,CAAMnF,SAAS,CAACyK,UAAU,GAAG,SAAUhN,QAAQ,EAAA;QAC3C,IAAI,CAACiN,mBAAmB,GAAGjN,QAAAA,CAAAA;AAC3B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA0H,IAAAA,KAAAA,CAAMnF,SAAS,CAAC2K,MAAM,GAAG,SAAUlN,QAAQ,EAAA;QACvC,IAAI,CAAC2K,eAAe,GAAG3K,QAAAA,CAAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;QAKA0H,KAAAA,CAAMnF,SAAS,CAACkD,MAAM,GAAG,SAAUlB,IAAI,EAAEqB,SAAS,EAAA;QAC9C,IAAIrB,IAAAA,KAAS,KAAK,CAAG,EAAA;YAAEA,IAAOI,GAAAA,KAAAA,EAAAA,CAAAA;AAAS,SAAA;QACvC,IAAIiB,SAAAA,KAAc,KAAK,CAAG,EAAA;YAAEA,SAAY,GAAA,IAAA,CAAA;AAAM,SAAA;AAC9C,QAAA,IAAI,IAAI,CAACiC,SAAS,EACd,OAAO,IAAA,CAAA;QACX,IAAI4B,QAAAA,CAAAA;QACJ,IAAI0D,OAAAA,CAAAA;AACJ,QAAA,IAAIC,UAAU,IAAI,CAAC3E,UAAU,GAAG,IAAI,CAACP,SAAS,CAAA;QAC9C,IAAI,CAAC,IAAI,CAACc,QAAQ,IAAI,CAAC,IAAI,CAACV,UAAU,EAAE;YACpC,IAAI/D,IAAAA,GAAO6I,SACP,OAAO,KAAA,CAAA;AACX,YAAA,IAAIxH,SACA,EAAA,IAAI,CAAC4D,KAAK,CAACjF,IAAAA,CAAAA,CAAAA;AACnB,SAAA;QACA,IAAI,CAACyE,QAAQ,GAAG,KAAA,CAAA;AAChB,QAAA,IAAIzE,IAAO,GAAA,IAAI,CAACkE,UAAU,EAAE;YACxB,OAAO,IAAA,CAAA;AACX,SAAA;AACA,QAAA,IAAI,IAAI,CAACI,qBAAqB,KAAK,KAAO,EAAA;YACtC,IAAI,IAAI,CAAC8D,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAACA,gBAAgB,CAAC,IAAI,CAAChF,OAAO,CAAA,CAAA;AACtC,aAAA;YACA,IAAI,CAACkB,qBAAqB,GAAG,IAAA,CAAA;AACjC,SAAA;QACAsE,OAAU,GAAC5I,CAAAA,IAAAA,GAAO,IAAI,CAACkE,UAAU,IAAI,IAAI,CAACP,SAAS,CAAA;AACnDiF,QAAAA,OAAAA,GAAU,IAAI,CAACjF,SAAS,KAAK,CAAKiF,IAAAA,OAAAA,GAAU,IAAI,CAAIA,GAAAA,OAAAA,CAAAA;AACpD,QAAA,IAAIE,KAAQ,GAAA,IAAI,CAAC3E,eAAe,CAACyE,OAAAA,CAAAA,CAAAA;;AAEjC,QAAA,IAAI,CAACG,iBAAiB,CAAC,IAAI,CAAC3F,OAAO,EAAE,IAAI,CAACI,YAAY,EAAE,IAAI,CAACC,UAAU,EAAEqF,KAAAA,CAAAA,CAAAA;QACzE,IAAI,IAAI,CAACR,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAACA,iBAAiB,CAAC,IAAI,CAAClF,OAAO,EAAEwF,OAAAA,CAAAA,CAAAA;AACzC,SAAA;AACA,QAAA,IAAIA,YAAY,CAAG,EAAA;YACf,IAAI,IAAI,CAAChC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAACA,iBAAiB,CAAC,IAAI,CAACxD,OAAO,CAAA,CAAA;AACvC,aAAA;AACA,YAAA,IAAI,IAAI,CAACsB,UAAU,IAAI,IAAI,CAACE,UAAU,EAAE;gBACpC,IAAI,CAACF,UAAU,CAACO,KAAK,CAAC,IAAI,CAACf,UAAU,GAAG,IAAI,CAACP,SAAS,CAAA,CAAA;gBACtD,IAAI,CAACiB,UAAU,GAAG,KAAA,CAAA;gBAClB,IAAI,CAACb,UAAU,GAAG,KAAA,CAAA;gBAClB,OAAO,KAAA,CAAA;AACX,aAAA;AACA,YAAA,IAAI,IAAI,CAACF,OAAO,GAAG,CAAG,EAAA;AAClB,gBAAA,IAAImF,QAAS,CAAA,IAAI,CAACnF,OAAO,CAAG,EAAA;AACxB,oBAAA,IAAI,CAACA,OAAO,EAAA,CAAA;AAChB,iBAAA;;AAEA,gBAAA,IAAKqB,QAAY,IAAA,IAAI,CAACxB,kBAAkB,CAAE;AACtC,oBAAA,IAAI,CAAC,IAAI,CAACI,KAAK,IAAI,OAAO,IAAI,CAACL,UAAU,CAACyB,QAAS,CAAA,KAAK,QAAU,EAAA;AAC9D,wBAAA,IAAI,CAACxB,kBAAkB,CAACwB,QAAAA,CAAS;;wBAG7B,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,GAAGE,WAAW,IAAI,CAAC3B,UAAU,CAACyB,QAAS,CAAA,CAAA,CAAA;AAChF,qBAAA;oBACA,IAAI,IAAI,CAACpB,KAAK,EAAE;wBACZ,IAAI,CAACqB,yBAAyB,CAACD,QAAAA,CAAAA,CAAAA;AACnC,qBAAA;oBACA,IAAI,CAAC1B,YAAY,CAAC0B,QAAAA,CAAS,GAAG,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,CAAA;AACnE,iBAAA;gBACA,IAAI,IAAI,CAACpB,KAAK,EAAE;AACZ,oBAAA,IAAI,CAACE,SAAS,GAAG,CAAC,IAAI,CAACA,SAAS,CAAA;AACpC,iBAAA;AACA,gBAAA,IAAI,IAAI,CAACyD,gBAAgB,KAAKnL,SAAW,EAAA;AACrC,oBAAA,IAAI,CAAC4H,UAAU,GAAGlE,IAAO,GAAA,IAAI,CAACyH,gBAAgB,CAAA;iBAE7C,MAAA;AACD,oBAAA,IAAI,CAACvD,UAAU,GAAGlE,IAAO,GAAA,IAAI,CAACiE,UAAU,CAAA;AAC5C,iBAAA;gBACA,IAAI,IAAI,CAACuE,iBAAiB,EAAE;AACxB,oBAAA,IAAI,CAACA,iBAAiB,CAAC,IAAI,CAACpF,OAAO,CAAA,CAAA;AACvC,iBAAA;gBACA,IAAI,IAAI,CAACsB,UAAU,EAAE;oBACjB,IAAI,CAACE,UAAU,GAAG,IAAA,CAAA;AAClB,oBAAA,IAAI,CAAChB,cAAc,GAAG,IAAI,CAACC,OAAO,CAAA;AACtC,iBAAA;gBACA,OAAO,IAAA,CAAA;aAEN,MAAA;gBACD,IAAI,IAAI,CAACc,UAAU,EAAE;AACjB,oBAAA,IAAI,CAACA,UAAU,CAACuD,OAAO,CAAC,IAAI,CAAA,CAAA;AAChC,iBAAA;gBACA,IAAI,IAAI,CAACQ,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,CAACA,mBAAmB,CAAC,IAAI,CAACtF,OAAO,CAAA,CAAA;AACzC,iBAAA;AACA,gBAAA,IAAK,IAAI3G,CAAAA,GAAI,CAAGgK,EAAAA,gBAAAA,GAAmB,IAAI,CAACpC,cAAc,CAACjJ,MAAM,EAAEqB,CAAIgK,GAAAA,gBAAAA,EAAkBhK,CAAK,EAAA,CAAA;;;AAGtF,oBAAA,IAAI,CAAC4H,cAAc,CAAC5H,CAAAA,CAAE,CAACwI,KAAK,CAAC,IAAI,CAACf,UAAU,GAAG,IAAI,CAACP,SAAS,CAAA,CAAA;AACjE,iBAAA;gBACA,IAAI,CAACI,UAAU,GAAG,KAAA,CAAA;gBAClB,OAAO,KAAA,CAAA;AACX,aAAA;AACJ,SAAA;QACA,OAAO,IAAA,CAAA;AACX,KAAA,CAAA;IACAZ,KAAMnF,CAAAA,SAAS,CAAC+K,iBAAiB,GAAG,SAAU3F,OAAO,EAAEI,YAAY,EAAEC,UAAU,EAAEqF,KAAK,EAAA;QAClF,IAAK,IAAI5D,YAAYzB,UAAY,CAAA;;AAE7B,YAAA,IAAID,YAAY,CAAC0B,QAAS,CAAA,KAAK5I,SAAW,EAAA;AACtC,gBAAA,SAAA;AACJ,aAAA;AACA,YAAA,IAAI2I,KAAQzB,GAAAA,YAAY,CAAC0B,QAAAA,CAAS,IAAI,CAAA,CAAA;YACtC,IAAImB,GAAAA,GAAM5C,UAAU,CAACyB,QAAS,CAAA,CAAA;AAC9B,YAAA,IAAI+D,eAAezD,KAAMC,CAAAA,OAAO,CAACrC,OAAO,CAAC8B,QAAS,CAAA,CAAA,CAAA;YAClD,IAAIgE,UAAAA,GAAa1D,KAAMC,CAAAA,OAAO,CAACY,GAAAA,CAAAA,CAAAA;YAC/B,IAAIV,mBAAAA,GAAsB,CAACsD,YAAgBC,IAAAA,UAAAA,CAAAA;AAC3C,YAAA,IAAIvD,mBAAqB,EAAA;AACrBvC,gBAAAA,OAAO,CAAC8B,QAAS,CAAA,GAAG,IAAI,CAACd,sBAAsB,CAACiC,GAAKyC,EAAAA,KAAAA,CAAAA,CAAAA;AACzD,aAAA,MACK,IAAI,OAAOzC,GAAQ,KAAA,QAAA,IAAYA,GAAK,EAAA;;;gBAGrC,IAAI,CAAC0C,iBAAiB,CAAC3F,OAAO,CAAC8B,QAAS,CAAA,EAAED,OAAOoB,GAAKyC,EAAAA,KAAAA,CAAAA,CAAAA;AACtD,gBAAA,IAAIK,GAAMrL,GAAAA,MAAAA,CAAOI,wBAAwB,CAACkF,OAAS8B,EAAAA,QAAAA,CAAAA,CAAAA;gBACnD,IAAIiE,GAAAA,IAAOA,GAAIC,CAAAA,GAAG,EAAE;AAChBhG,oBAAAA,OAAO,CAAC8B,QAAAA,CAAS,GAAG9B,OAAO,CAAC8B,QAAS,CAAA,CAAA;AACzC,iBAAA;aAEC,MAAA;;AAEDmB,gBAAAA,GAAAA,GAAM,IAAI,CAACR,oBAAoB,CAACZ,KAAOoB,EAAAA,GAAAA,CAAAA,CAAAA;;gBAEvC,IAAI,OAAOA,QAAQ,QAAU,EAAA;;;oBAGzBjD,OAAO,CAAC8B,SAAS,GAAGD,KAAAA,GAAQ,CAACoB,GAAAA,GAAMpB,KAAI,IAAK6D,KAAAA,CAAAA;AAChD,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA,CAAA;AACA3F,IAAAA,KAAAA,CAAMnF,SAAS,CAAC6H,oBAAoB,GAAG,SAAUZ,KAAK,EAAEoB,GAAG,EAAA;QACvD,IAAI,OAAOA,QAAQ,QAAU,EAAA;YACzB,OAAOA,GAAAA,CAAAA;AACX,SAAA;QACA,IAAIA,GAAAA,CAAIgD,MAAM,CAAC,CAAA,CAAA,KAAO,OAAOhD,GAAIgD,CAAAA,MAAM,CAAC,CAAA,CAAA,KAAO,GAAK,EAAA;AAChD,YAAA,OAAOpE,QAAQG,UAAWiB,CAAAA,GAAAA,CAAAA,CAAAA;SAEzB,MAAA;AACD,YAAA,OAAOjB,UAAWiB,CAAAA,GAAAA,CAAAA,CAAAA;AACtB,SAAA;AACJ,KAAA,CAAA;AACAlD,IAAAA,KAAAA,CAAMnF,SAAS,CAACmH,yBAAyB,GAAG,SAAUD,QAAQ,EAAA;AAC1D,QAAA,IAAIoE,GAAM,GAAA,IAAI,CAAC5F,kBAAkB,CAACwB,QAAS,CAAA,CAAA;AAC3C,QAAA,IAAIqE,QAAW,GAAA,IAAI,CAAC9F,UAAU,CAACyB,QAAS,CAAA,CAAA;QACxC,IAAI,OAAOqE,aAAa,QAAU,EAAA;YAC9B,IAAI,CAAC7F,kBAAkB,CAACwB,QAAS,CAAA,GAAG,IAAI,CAACxB,kBAAkB,CAACwB,QAAS,CAAA,GAAGE,UAAWmE,CAAAA,QAAAA,CAAAA,CAAAA;SAElF,MAAA;YACD,IAAI,CAAC7F,kBAAkB,CAACwB,QAAAA,CAAS,GAAG,IAAI,CAACzB,UAAU,CAACyB,QAAS,CAAA,CAAA;AACjE,SAAA;AACA,QAAA,IAAI,CAACzB,UAAU,CAACyB,QAAAA,CAAS,GAAGoE,GAAAA,CAAAA;AAChC,KAAA,CAAA;IACA,OAAOnG,KAAAA,CAAAA;AACX,CAAA;;ACryBO,MAAMqG,UAAAA,CAAAA;IAUTvE,KAAQ,GAAA;QACJ,IAAI,CAACwE,MAAM,CAACxE,KAAK,EAAA,CAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAiB,IAAO,GAAA;QACH,IAAI,CAACuD,MAAM,CAACvD,IAAI,EAAA,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAoB,IAAAA,MAAAA,CAAOC,KAAK,EAAE;AACV,QAAA,IAAI,CAACP,aAAa,CAACM,MAAM,CAACC,KAAAA,CAAAA,CAAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAL,KAAQ,GAAA;QACJ,IAAI,CAACF,aAAa,GAAG,IAAI,CAACyC,MAAM,GAAG,IAAItG,KAAM,CAAA,IAAI,CAACC,OAAO,CAAA,CAAE8D,KAAK,CAAC,IAAI,CAACuC,MAAM,EAAE,IAAI,CAACzC,aAAa,CAAA,CAAA;AAChG,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAL,IAAAA,IAAAA,CAAKlL,QAAQ,EAAE;AACX,QAAA,IAAI,CAACiO,WAAW,EAAG/C,CAAAA,IAAI,CAAClL,QAAAA,CAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAwL,IAAAA,KAAAA,CAAM1I,MAAM,EAAE;AACV,QAAA,IAAI,CAACmL,WAAW,EAAGzC,CAAAA,KAAK,CAAC1I,MAAAA,CAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAwI,IAAAA,EAAAA,CAAGD,UAAU,EAAE/B,QAAQ,EAAE4E,KAAK,EAAE;AAC5B,QAAA,IAAI5I,QAAQ,IAAI,CAAC2I,WAAW,EAAG3C,CAAAA,EAAE,CAACD,UAAY/B,EAAAA,QAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAI4E,KAAO,EAAA;AACP,YAAA,IAAIA,MAAM9C,IAAI,EAAE9F,MAAM8F,IAAI,CAAC8C,MAAM9C,IAAI,CAAA,CAAA;AACrC,YAAA,IAAI8C,MAAMhC,MAAM,EAAE5G,MAAM4G,MAAM,CAACgC,MAAMhC,MAAM,CAAA,CAAA;AAC3C,YAAA,IAAIgC,MAAMxB,OAAO,EAAEpH,MAAMoH,OAAO,CAACwB,MAAMxB,OAAO,CAAA,CAAA;AAC9C,YAAA,IAAIwB,MAAMhB,MAAM,EAAE5H,MAAM4H,MAAM,CAACgB,MAAMhB,MAAM,CAAA,CAAA;AAC3C,YAAA,IAAIgB,MAAMlB,UAAU,EAAE1H,MAAM0H,UAAU,CAACkB,MAAMlB,UAAU,CAAA,CAAA;AACvD,YAAA,IAAIkB,MAAMtB,QAAQ,EAAEtH,MAAMsH,QAAQ,CAACsB,MAAMtB,QAAQ,CAAA,CAAA;AACjD,YAAA,IAAIsB,MAAMpB,QAAQ,EAAExH,MAAMwH,QAAQ,CAACoB,MAAMpB,QAAQ,CAAA,CAAA;AACrD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEAmB,WAAc,GAAA;QACV,IAAI3I,KAAAA,GAAQ,IAAI,CAAC0I,MAAM,CAAA;QACvB,IAAI,IAAI,CAACzC,aAAa,EAAE;AACpBjG,YAAAA,KAAAA,GAAQ,IAAIoC,KAAAA,CAAM,IAAI,CAACC,OAAO,CAAA,CAAA;AAC9B,YAAA,IAAI,CAAC4D,aAAa,CAACK,KAAK,CAACtG,KAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAI,CAACiG,aAAa,GAAGjG,KAAAA,CAAAA;QACrB,OAAOA,KAAAA,CAAAA;AACX,KAAA;IAzDA6I,WAAYC,CAAAA,MAAc,EAAEnD,KAAa,CAAE;QACvC,IAAI,CAACtD,OAAO,GAAGyG,MAAAA,CAAAA;AACf,QAAA,IAAI,CAACJ,MAAM,GAAG,IAAItG,MAAM0G,MAAQnD,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,KAAA;AAuDJ;;AC9DO,MAAMoD,YAAAA,CAAAA;IAGTC,OAAU,GAAA;QACN,IAAI,CAAC1G,MAAM,CAACxC,SAAS,EAAA,CAAA;AACzB,KAAA;AAEAK,IAAAA,MAAAA,CAAOlB,IAAY,EAAE;AACjB,QAAA,IAAI,CAACqD,MAAM,CAACnC,MAAM,CAAClB,IAAAA,CAAAA,CAAAA;AACvB,KAAA;AAEAe,IAAAA,KAAAA,CAAMrF,MAAc,EAAE;AAClB,QAAA,OAAO,IAAIyH,KAAAA,CAAMzH,MAAQ,EAAA,IAAI,CAAC2H,MAAM,CAAA,CAAA;AACxC,KAAA;AAEA2G,IAAAA,QAAAA,CAAStO,MAAc,EAAE;AACrB,QAAA,OAAO,IAAI8N,UAAAA,CAAW9N,MAAQ,EAAA,IAAI,CAAC2H,MAAM,CAAA,CAAA;AAC7C,KAAA;AAEA4G,IAAAA,YAAAA,CAAavO,MAAc,EAAE;AACzB,QAAA,IAAI,CAAC2H,MAAM,CAAC7C,MAAM,EAAG5C,CAAAA,OAAO,CAAC,CAACmD,KAAAA,GAAeA,KAAMqC,CAAAA,OAAO,KAAK1H,MAAU,IAAA,IAAI,CAAC2H,MAAM,CAACpC,MAAM,CAACF,KAAAA,CAAAA,CAAAA,CAAAA;AAChG,KAAA;;AApBQsC,QAAAA,IAAAA,CAAAA,MAAAA,GAAgB,IAAIhD,KAAAA,EAAAA,CAAAA;;AAqBhC;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAsCA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/H,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjI,OAAO,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpJ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AA+PD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;AClTA,MAAM6J,eAAkB,GAAA;AACpB,IAAA,UAAA;AAAY,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA,iBAAA;AAAmB,IAAA,aAAA;AACnD,IAAA,QAAA;AAAU,IAAA,UAAA;AAAY,IAAA,cAAA;AAAgB,IAAA,WAAA;AAAa,IAAA,cAAA;AAAgB,IAAA,aAAA;AACtE,CAAA,CAAA;AAEM,MAAeC,OAAAA,CAAAA;IAElB,OAAOC,YAAAA,CAAaC,IAAc,EAAE;AAChC,QAAA,MAAMC,QAAW,GAAA;AAAEC,YAAAA,MAAAA,EAAQ,EAAE;AAAEC,YAAAA,SAAAA,EAAW,EAAC;AAAGC,YAAAA,QAAAA,EAAU,EAAC;AAAE,SAAA,CAAA;AAC3D,QAAA,MAAMhP,WAAW,CAAC4O,IAAAA,GAAAA;YACd,MAAMG,SAAAA,GAAYhF,MAAMC,OAAO,CAAC4E,KAAKK,QAAQ,CAAA,GAAIL,IAAKK,CAAAA,QAAQ,GAAG;AAACL,gBAAAA,IAAAA,CAAKK,QAAQ;AAAC,aAAA,CAAA;YAChF,KAAK,IAAIC,OAAOH,SAAW,CAAA;gBACvBF,QAASC,CAAAA,MAAM,CAACvO,IAAI,CAACqO,IAAAA,CAAAA,CAAAA;AACrBC,gBAAAA,QAAAA,CAASE,SAAS,CAACG,GAAIzP,CAAAA,IAAI,CAAC,GAAGyP,GAAAA,CAAAA;AAC/B,gBAAA,IAAIC,GAAM,GAAA,IAAA,CAAA;gBACV,KAAK,IAAI/O,KAAKqO,eAAiB,CAAA;oBAC3BU,GAAMD,GAAAA,GAAG,CAAC9O,CAAE,CAAA,CAAA;oBACZ+O,GAAQN,KAAAA,SAASG,QAAQ,CAACG,IAAIC,IAAI,CAAC,GAAGD,GAAE,CAAA,CAAA;AAC5C,iBAAA;AACJ,aAAA;AACJ,SAAA,CAAA;AACAP,QAAAA,IAAAA,CAAKS,QAAQ,CAACjP,CAAAA,IAAK,CAACA,YAAakP,cAAStP,QAASI,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACnDwO,IAAKW,CAAAA,QAAQ,CAACV,QAAQ,GAAGA,QAAAA,CAAAA;QACzB,OAAOD,IAAAA,CAAAA;AACX,KAAA;AAKJ;;AC/BO,MAAMY,eAAAA,CAAAA;IAET,OAAOC,SAAAA,CAAUC,IAAY,EAAE;QAC3B,IAAIC,GAAAA,GAAMD,IAAKE,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;QACrB,IAAID,GAAAA,CAAIhQ,MAAM,GAAG,CAAG,EAAA;AAChB,YAAA,OAAOgQ,IAAIE,GAAG,EAAA,CAAA;AAClB,SAAA;QACA,OAAO,EAAA,CAAA;AACX,KAAA;IAEA,OAAOC,OAAAA,CAAQJ,IAAY,EAAE;QACzB,IAAIlQ,KAAAA,GAAQkQ,IAAKK,CAAAA,WAAW,CAAC,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAOvQ,UAAU,CAAC,CAAA,GAAIkQ,KAAKM,SAAS,CAAC,GAAGxQ,KAAS,CAAA,GAAA,EAAA,CAAA;AACrD,KAAA;AAEA,IAAA,OAAOyQ,QAASP,CAAAA,IAAY,EAAEQ,GAAY,EAAE;AACxC,QAAA,IAAIP,GAAMD,GAAAA,IAAAA,CAAKE,KAAK,CAAC,KAAKC,GAAG,EAAA,CAAA;AAC7B,QAAA,OAAOK,MAAMP,GAAIQ,CAAAA,OAAO,CAAC,GAAA,GAAMD,KAAK,EAAMP,CAAAA,GAAAA,GAAAA,CAAAA;AAC9C,KAAA;AAIA,IAAA,OAAOS,UAAWC,CAAAA,QAAkB,EAAEC,MAAyB,EAAE;AAC7D,QAAA,IAAIC,SAAS,IAAID,MAAAA,EAAAA,CAAAA;QACjB,KAAK,IAAIJ,OAAOG,QAAU,CAAA;AACtBb,YAAAA,eAAAA,CAAgBgB,QAAQ,CAAC7C,GAAG,CAACuC,GAAKK,EAAAA,MAAAA,CAAAA,CAAAA;AACtC,SAAA;AACJ,KAAA;IAEA,OAAOE,SAAAA,CAAUC,GAAQ,EAAE;AACvB,QAAA,IAAIC,GAAM,GAAA,EAAA,CAAA;AACV,QAAA,IAAIC,IAAO,GAAA,IAAA,CAAA;AACX,QAAA,IAAIV,GAAM,GAAA,EAAA,CAAA;AACV,QAAA,IAAI,OAAQW,IAAAA,KAAU,WAAeH,IAAAA,GAAAA,YAAeG,IAAM,EAAA;AACtDF,YAAAA,GAAAA,GAAMD,IAAIjR,IAAI,CAAA;YACdyQ,GAAMV,GAAAA,eAAAA,CAAgBC,SAAS,CAACkB,GAAAA,CAAAA,CAAAA;YAChCC,IAAOF,GAAAA,GAAAA,CAAAA;SAEN,MAAA,IAAI,OAAQA,GAAAA,KAAS,QAAU,EAAA;YAChCC,GAAMD,GAAAA,GAAAA,CAAII,QAAQ,CAACrR,IAAI,CAAA;YACvByQ,GAAMV,GAAAA,eAAAA,CAAgBC,SAAS,CAACkB,GAAAA,CAAAA,CAAAA;YAChCC,IAAOF,GAAAA,GAAAA,CAAAA;SAEN,MAAA;YACDC,GAAOD,IAAAA,GAAAA,CAAAA;YACPR,GAAMV,GAAAA,eAAAA,CAAgBC,SAAS,CAACkB,GAAAA,CAAAA,CAAAA;AACpC,SAAA;QACA,OAAO;AAAEA,YAAAA,GAAAA;AAAKC,YAAAA,IAAAA;AAAMV,YAAAA,GAAAA;AAAI,SAAA,CAAA;AAC5B,KAAA;AAEA,IAAA,OAAOa,cAAeJ,CAAAA,GAAW,EAAEK,QAAyB,EAAE;AAC1D,QAAA,IAAI/L,IAAO,GAAA;AAAC0L,YAAAA,GAAAA;AAAI,SAAA,CAAA;QAChB,IAAK,IAAI7K,KAAKkL,QAAU,CAAA;AACpB,YAAA,IAAIA,QAAQ,CAAClL,CAAE,CAAA,KAAKjF,SAAWoE,EAAAA,IAAAA,CAAK1E,IAAI,CAACuF,CAAI,GAAA,GAAA,GAAMkL,QAAQ,CAAClL,CAAE,CAAA,CAAA,CAAA;AAClE,SAAA;QACA,OAAOb,IAAAA,CAAKgM,IAAI,CAAC,GAAA,CAAA,CAAA;AACrB,KAAA;IAMA,OAAOC,qBAAAA,CAAsBhD,KAA6C,EAAE;AACxE,QAAA,IAAI8C,WAAW,EAAC,CAAA;AAChB,QAAA,KAAK,IAAI5Q,CAAAA,IAAKoP,eAAgB2B,CAAAA,eAAe,CAAE;AAC3C,YAAA,IAAIjD,KAAK,CAAC9N,CAAE,CAAA,KAAKS,SAAW,EAAA;AACxB,gBAAA,IAAIT,MAAM,UAAY,EAAA;AAClB4Q,oBAAAA,QAAQ,CAAC,MAAA,CAAO,GAAG9C,KAAK,CAAC9N,CAAE,CAAA,CAAA;iBAE1B,MAAA;AACD4Q,oBAAAA,QAAQ,CAAC5Q,CAAAA,CAAE,GAAG8N,KAAK,CAAC9N,CAAE,CAAA,CAAA;AAC1B,iBAAA;AACJ,aAAA;AACJ,SAAA;QACA,OAAO4Q,QAAAA,CAAAA;AACX,KAAA;IAyBA1C,OAAU,GAAA;QACN,IAAI,CAAC8C,OAAO,CAACvR,KAAK,EAAA,CAAA;AACtB,KAAA;IAEAwR,SAAmB,CAAA,EAAEV,GAAG,EAAET,GAAG,EAAEoB,UAAU,EAAE,GAAGpD,KAAAA,EAA0C,EAAE;QACtF,OAAO,IAAIqD,OAAW,CAAA,CAACC,OAASC,EAAAA,MAAAA,GAAAA;YAC5B,MAAM/P,IAAAA,GAAO8N,eAAgBiB,CAAAA,SAAS,CAACE,GAAAA,CAAAA,CAAAA;YACvC,MAAMe,WAAAA,GAAclC,eAAgB0B,CAAAA,qBAAqB,CAAChD,KAAAA,CAAAA,CAAAA;AAC1D,YAAA,MAAMyD,MAAMnC,eAAgBuB,CAAAA,cAAc,CAACrP,IAAAA,CAAKiP,GAAG,EAAEe,WAAAA,CAAAA,CAAAA;AACrD,YAAA,IAAIE,SAAS,IAAI,CAACR,OAAO,CAACS,GAAG,CAACF,GAAAA,CAAAA,CAAAA;AAC9B,YAAA,IAAIC,MAAQ,EAAA;gBACRJ,OAAQI,CAAAA,MAAAA,CAAAA,CAAAA;aAEP,MAAA;AACD,gBAAA,MAAME,SAAS,CAAClB,IAAAA,GAAAA;AACZ,oBAAA,IAAI,CAACQ,OAAO,CAACzD,GAAG,CAACgE,GAAKf,EAAAA,IAAAA,CAAAA,CAAAA;oBACtBY,OAAQZ,CAAAA,IAAAA,CAAAA,CAAAA;AACZ,iBAAA,CAAA;gBACA,IAAImB,GAAAA,GAAM7B,GAAOxO,IAAAA,IAAAA,CAAKwO,GAAG,CAAA;AACzB,gBAAA,IAAIV,eAAgBgB,CAAAA,QAAQ,CAAC1Q,GAAG,CAACiS,GAAM,CAAA,EAAA;AACnCvC,oBAAAA,eAAAA,CAAgBgB,QAAQ,CAACqB,GAAG,CAACE,GAAAA,CAAAA,CAAKC,IAAI,CAAC;AACnCrB,wBAAAA,GAAAA,EAAKjP,KAAKiP,GAAG;AACbe,wBAAAA,WAAAA;AACAJ,wBAAAA,UAAAA;AACAQ,wBAAAA,MAAAA;wBACAG,OAASR,EAAAA,MAAAA;AACb,qBAAA,CAAA,CAAA;iBAEC,MAAA;AACDA,oBAAAA,MAAAA,CAAO,qBAAwBvB,GAAAA,GAAAA,CAAAA,CAAAA;AACnC,iBAAA;AACJ,aAAA;AACJ,SAAA,CAAA,CAAA;AACJ,KAAA;AAjDA/B,IAAAA,WAAAA,CAAYD,KAKX,CAAE;aAZHwB,IAAe,GAAA,EAAA,CAAA;aACfwC,YAAuB,GAAA,EAAA,CAAA;aACvBC,SAAoB,GAAA,EAAA,CAAA;AAGZf,QAAAA,IAAAA,CAAAA,OAAAA,GAA4B,IAAIgB,GAAAA,EAAAA,CAAAA;AAQpC,QAAA,IAAI,CAAC1C,IAAI,GAAGxB,KAAAA,CAAMwB,IAAI,CAAA;AACtB,QAAA,IAAI,CAACwC,YAAY,GAAGhE,KAAAA,CAAMgE,YAAY,CAAA;AACtC,QAAA,IAAI,CAACC,SAAS,GAAGjE,KAAAA,CAAMiE,SAAS,CAAA;AAChC,QAAA,IAAI,CAACE,cAAc,GAAGnE,KAAAA,CAAMmE,cAAc,CAAA;AAE1C,QAAA,KAAK,IAAI9B,MAAUf,IAAAA,eAAAA,CAAgBgB,QAAQ,CAAC8B,MAAM,EAAI,CAAA;YAClD/B,MAAOgC,CAAAA,OAAO,GAAG,IAAI,CAAA;AACzB,SAAA;AACJ,KAAA;AAoCJ,CAAA;AAtIa/C,eAAAA,CAoBFgB,WAAiC,IAAI4B,GAAAA,EAAAA,CAAAA;AApBnC5C,eAAAA,CA0DF2B,eAAkB,GAAA;AACrB,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA,UAAA;AACtC,IAAA,WAAA;AAAa,IAAA,WAAA;AAAa,IAAA,QAAA;AAAU,IAAA,YAAA;AAAc,IAAA,UAAA;AAAY,IAAA,QAAA;AACjE,CAAA,CAAA;AA2EE,SAASqB,eAAenC,QAAkB,EAAA;AAC7C,IAAA,OAAO,CAAoBC,MAAAA,GAAAA;QACvBd,eAAgBY,CAAAA,UAAU,CAACC,QAAUC,EAAAA,MAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;AACJ;;AC0lBA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,GAAG;AACnD;AACA,CAAC,KAAK,QAAQ,KAAKmC,uBAAiB,GAAG;AACvC;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,yFAAyF,EAAE,CAAC;AAC5G,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,KAAK,QAAQ,KAAKC,yBAAmB,IAAI,QAAQ,KAAKC,2BAAqB,GAAG;AAC/E;AACA,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAClC;AACA;AACA;AACA,EAAE,KAAK,KAAK,KAAK,IAAI,GAAG;AACxB;AACA,GAAG,MAAM,OAAO,GAAG,EAAE,CAAC;AACtB;AACA,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;AACxD;AACA,GAAG,KAAK,QAAQ,KAAK,SAAS,GAAG;AACjC;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG;AAChD;AACA,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AACvB;AACA,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AACjC,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAChC;AACA,IAAI,MAAM;AACV;AACA,IAAI,OAAO,CAAC,KAAK,EAAE,yGAAyG,EAAE,CAAC;AAC/H,IAAI,OAAO,QAAQ,CAAC;AACpB;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,MAAM,UAAU,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,KAAK,QAAQ,KAAKD,yBAAmB,GAAG;AAC1C;AACA;AACA;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC,GAAG,GAAG;AACnD;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACvC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACvC,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC3C;AACA,IAAI;AACJ;AACA,GAAG,MAAM;AACT;AACA;AACA;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,GAAG,GAAG;AAClD;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;AACvB;AACA,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACxC,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5C,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5C;AACA,KAAK,MAAM;AACX;AACA,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5C,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5C,KAAK,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACxC;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,OAAO,iBAAiB,GAAG;AACzD;AACA,GAAG,OAAO,CAAC,KAAK,EAAE,kGAAkG,EAAE,CAAC;AACvH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AACvC,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;AACrC,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC;AAC5B;AACA,EAAE,OAAO,WAAW,CAAC;AACrB;AACA,EAAE,MAAM;AACR;AACA,EAAE,OAAO,CAAC,KAAK,EAAE,qEAAqE,EAAE,QAAQ,EAAE,CAAC;AACnG,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA;;ACvxBA,MAAM,UAAU,SAASpC,YAAM,CAAC;AAChC;AACA,CAAC,WAAW,EAAE,OAAO,GAAG;AACxB;AACA,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,+BAA+B,EAAE,MAAM,EAAE,CAAC;AACxD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,gCAAgC,EAAE,MAAM,EAAE,CAAC;AACzD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,0BAA0B,EAAE,MAAM,EAAE,CAAC;AACnD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,wBAAwB,EAAE,MAAM,EAAE,CAAC;AACjD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,wBAAwB,EAAE,MAAM,EAAE,CAAC;AACjD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,2BAA2B,EAAE,MAAM,EAAE,CAAC;AACpD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,kCAAkC,EAAE,MAAM,EAAE,CAAC;AAC3D;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,4BAA4B,EAAE,MAAM,EAAE,CAAC;AACrD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,yBAAyB,EAAE,MAAM,EAAE,CAAC;AAClD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,sCAAsC,EAAE,MAAM,EAAE,CAAC;AAC/D;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,8BAA8B,EAAE,MAAM,EAAE,CAAC;AACvD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,iCAAiC,EAAE,MAAM,EAAE,CAAC;AAC1D;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,gCAAgC,EAAE,MAAM,EAAE,CAAC;AACzD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,0BAA0B,EAAE,MAAM,EAAE,CAAC;AACnD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,mBAAmB,EAAE,MAAM,EAAE,CAAC;AAC5C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,sBAAsB,EAAE,MAAM,EAAE,CAAC;AAC/C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACrC;AACA,GAAG,OAAO,IAAI,qBAAqB,EAAE,MAAM,EAAE,CAAC;AAC9C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG;AAC1C;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,IAAI,YAAY,CAAC;AACnB;AACA,EAAE,KAAK,IAAI,CAAC,YAAY,KAAK,EAAE,GAAG;AAClC;AACA,GAAG,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC;AACA,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE,GAAG;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,MAAM,WAAW,GAAGsC,iBAAW,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC;AACzD,GAAG,YAAY,GAAGA,iBAAW,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACnE;AACA,GAAG,MAAM;AACT;AACA,GAAG,YAAY,GAAGA,iBAAW,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC;AACpD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG;AAClC;AACA,GAAG,KAAK,OAAO,GAAG;AAClB;AACA,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC;AACjB;AACA,IAAI,MAAM;AACV;AACA,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACvB;AACA,IAAI;AACJ;AACA,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AAClC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;AAChC;AACA,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,MAAM,GAAG,IAAIC,gBAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD;AACA,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;AAC1C,EAAE,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAChD,EAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACpD;AACA,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,IAAI,GAAG;AACtC;AACA,GAAG,IAAI;AACP;AACA,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,IAAI,GAAG;AACvD;AACA,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC;AACpB;AACA,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;AAClC;AACA,KAAK,EAAE,QAAQ,EAAE,CAAC;AAClB;AACA,IAAI,CAAC,QAAQ,CAAC,GAAG;AACjB;AACA,IAAI,QAAQ,EAAE,CAAC,EAAE,CAAC;AAClB;AACA,IAAI;AACJ;AACA,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC5B;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,WAAW,GAAG;AAC/B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,YAAY,GAAG;AAChB;AACA,EAAE,MAAM,IAAI,KAAK;AACjB;AACA,GAAG,kGAAkG;AACrG;AACA,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,UAAU,GAAG;AAC7B;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE,cAAc,GAAG;AACrC;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACvC,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,QAAQ,EAAE,QAAQ,GAAG;AACtB;AACA,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG;AAC1D;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AACzC;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,QAAQ,GAAG;AACxB;AACA,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG;AAC1D;AACA,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;AAC9E;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG;AACtC;AACA,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,MAAM,UAAU,GAAG,EAAE,CAAC;AACxB,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB,EAAE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACxC;AACA,EAAE,KAAK,OAAO,IAAI,KAAK,QAAQ,GAAG;AAClC;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7B;AACA,GAAG,MAAM,KAAK,IAAI,YAAY,WAAW,GAAG;AAC5C;AACA,GAAG,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACpE;AACA,GAAG,KAAK,KAAK,KAAK,6BAA6B,GAAG;AAClD;AACA,IAAI,IAAI;AACR;AACA,KAAK,UAAU,EAAE,UAAU,CAAC,eAAe,EAAE,GAAG,IAAI,mBAAmB,EAAE,IAAI,EAAE,CAAC;AAChF;AACA,KAAK,CAAC,QAAQ,KAAK,GAAG;AACtB;AACA,KAAK,KAAK,OAAO,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;AACrC,KAAK,OAAO;AACZ;AACA,KAAK;AACL;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;AAC1E;AACA,IAAI,MAAM;AACV;AACA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AACpD;AACA,IAAI;AACJ;AACA,GAAG,MAAM;AACT;AACA,GAAG,IAAI,GAAG,IAAI,CAAC;AACf;AACA,GAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG;AACjE;AACA,GAAG,KAAK,OAAO,GAAG,OAAO,EAAE,IAAI,KAAK,EAAE,yEAAyE,EAAE,EAAE,CAAC;AACpH,GAAG,OAAO;AACV;AACA,GAAG;AACH;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,IAAI,EAAE;AACvC;AACA,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;AACxC,GAAG,WAAW,EAAE,IAAI,CAAC,WAAW;AAChC,GAAG,aAAa,EAAE,IAAI,CAAC,aAAa;AACpC,GAAG,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,GAAG,UAAU,EAAE,IAAI,CAAC,UAAU;AAC9B,GAAG,cAAc,EAAE,IAAI,CAAC,cAAc;AACtC;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAC3D;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC3D;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AACtD;AACA,GAAG,KAAK,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,sDAAsD,EAAE,CAAC;AAChG;AACA,GAAG,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA,GAAG,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACpC;AACA,GAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG;AAC7B;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;AAC3D;AACA,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC;AACnD,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC;AAC7D;AACA,IAAI,SAAS,aAAa;AAC1B;AACA,KAAK,KAAK,UAAU,CAAC,mBAAmB;AACxC,MAAM,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI,2BAA2B,EAAE,CAAC;AACtE,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,UAAU,CAAC,0BAA0B;AAC/C,MAAM,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI,iCAAiC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpG,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,UAAU,CAAC,qBAAqB;AAC1C,MAAM,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI,6BAA6B,EAAE,CAAC;AACxE,MAAM,MAAM;AACZ;AACA,KAAK,KAAK,UAAU,CAAC,qBAAqB;AAC1C,MAAM,UAAU,EAAE,aAAa,EAAE,GAAG,IAAI,6BAA6B,EAAE,CAAC;AACxE,MAAM,MAAM;AACZ;AACA,KAAK;AACL;AACA,MAAM,KAAK,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,GAAG;AACxG;AACA,OAAO,OAAO,CAAC,IAAI,EAAE,uCAAuC,GAAG,aAAa,GAAG,IAAI,EAAE,CAAC;AACtF;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;AACrC,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC/B,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClC;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG;AAC1B;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,OAAO,IAAI,OAAO,EAAE,WAAW,OAAO,EAAE,MAAM,GAAG;AACnD;AACA,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC9C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA,SAAS,YAAY,GAAG;AACxB;AACA,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC;AAClB;AACA,CAAC,OAAO;AACR;AACA,EAAE,GAAG,EAAE,WAAW,GAAG,GAAG;AACxB;AACA,GAAG,OAAO,OAAO,EAAE,GAAG,EAAE,CAAC;AACzB;AACA,GAAG;AACH;AACA,EAAE,GAAG,EAAE,WAAW,GAAG,EAAE,MAAM,GAAG;AAChC;AACA,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAC3B;AACA,GAAG;AACH;AACA,EAAE,MAAM,EAAE,WAAW,GAAG,GAAG;AAC3B;AACA,GAAG,OAAO,OAAO,EAAE,GAAG,EAAE,CAAC;AACzB;AACA,GAAG;AACH;AACA,EAAE,SAAS,EAAE,YAAY;AACzB;AACA,GAAG,OAAO,GAAG,EAAE,CAAC;AAChB;AACA,GAAG;AACH;AACA,EAAE,CAAC;AACH;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG;AACnB,CAAC,eAAe,EAAE,iBAAiB;AACnC,CAAC,0BAA0B,EAAE,4BAA4B;AACzD,CAAC,mBAAmB,EAAE,qBAAqB;AAC3C,CAAC,uBAAuB,EAAE,yBAAyB;AACnD,CAAC,wBAAwB,EAAE,0BAA0B;AACrD,CAAC,iBAAiB,EAAE,mBAAmB;AACvC,CAAC,mBAAmB,EAAE,qBAAqB;AAC3C,CAAC,sBAAsB,EAAE,wBAAwB;AACjD,CAAC,0BAA0B,EAAE,4BAA4B;AACzD,CAAC,yBAAyB,EAAE,2BAA2B;AACvD,CAAC,wBAAwB,EAAE,0BAA0B;AACrD,CAAC,mBAAmB,EAAE,qBAAqB;AAC3C,CAAC,oBAAoB,EAAE,sBAAsB;AAC7C,CAAC,kBAAkB,EAAE,oBAAoB;AACzC,CAAC,qBAAqB,EAAE,uBAAuB;AAC/C,CAAC,qBAAqB,EAAE,uBAAuB;AAC/C,CAAC,+BAA+B,EAAE,iCAAiC;AACnE,CAAC,kBAAkB,EAAE,oBAAoB;AACzC,CAAC,gBAAgB,EAAE,kBAAkB;AACrC,CAAC,gBAAgB,EAAE,kBAAkB;AACrC,CAAC,uBAAuB,EAAE,yBAAyB;AACnD,CAAC,uBAAuB,EAAE,yBAAyB;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,CAAC;AAC1B;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,mBAAmB,CAAC;AAC7C;AACA;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtC;AACA,EAAE;AACF;AACA,CAAC,SAAS,GAAG;AACb;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAChD;AACA,EAAE,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,GAAG;AAChG;AACA,GAAG,MAAM,OAAO,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC;AACzC;AACA,GAAG,KAAK,OAAO,CAAC,UAAU;AAC1B,QAAQ,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE;AACvC,QAAQ,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS,GAAG;AAC9D;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;AAC5E;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,UAAU,GAAG;AAC1B;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AACzC,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChD;AACA,EAAE,KAAK,UAAU,GAAG,OAAO,UAAU,CAAC;AACtC;AACA,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B,EAAE,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;AAC5C,EAAE,MAAM,QAAQ,GAAG,SAAS,EAAE,UAAU,EAAE,CAAC;AAC3C,EAAE,IAAI,SAAS,CAAC;AAChB;AACA,EAAE,MAAM,KAAK,GAAG,IAAIC,WAAK,EAAE,QAAQ,EAAE,CAAC;AACtC;AACA,EAAE,KAAK,QAAQ,CAAC,KAAK,KAAK,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAEC,0BAAoB,EAAE,CAAC;AAC1I;AACA,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AAClE;AACA,EAAE,SAAS,QAAQ,CAAC,IAAI;AACxB;AACA,GAAG,KAAK,aAAa;AACrB,IAAI,SAAS,GAAG,IAAIC,sBAAgB,EAAE,KAAK,EAAE,CAAC;AAC9C,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC/C,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;AACtC,IAAI,MAAM;AACV;AACA,GAAG,KAAK,OAAO;AACf,IAAI,SAAS,GAAG,IAAIC,gBAAU,EAAE,KAAK,EAAE,CAAC;AACxC,IAAI,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC/B,IAAI,MAAM;AACV;AACA,GAAG,KAAK,MAAM;AACd,IAAI,SAAS,GAAG,IAAIC,eAAS,EAAE,KAAK,EAAE,CAAC;AACvC,IAAI,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC/B;AACA,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACjH,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;AAC7H,IAAI,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AACnD,IAAI,SAAS,CAAC,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AAC3F,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC/C,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;AACtC,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,MAAM,IAAI,KAAK,EAAE,2CAA2C,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnF;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpC;AACA,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AACtB;AACA,EAAE,sBAAsB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAChD;AACA,EAAE,KAAK,QAAQ,CAAC,SAAS,KAAK,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;AACnF;AACA,EAAE,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,MAAM,QAAQ,GAAG,UAAU,EAAE,EAAE,CAAC;AACzF;AACA,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;AAC5C;AACA,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC3C;AACA,EAAE,OAAO,UAAU,CAAC;AACpB;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG;AAC9B;AACA,EAAE,KAAK,IAAI,KAAK,OAAO,GAAG,OAAO;AACjC;AACA,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AAClC;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,SAAS,GAAG;AACnC;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;AACpB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1C,EAAE,MAAM,QAAQ,GAAG,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AACnF,EAAE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC;AACpC;AACA,EAAE,KAAK,UAAU,KAAK,SAAS,GAAG,OAAO,IAAI,CAAC;AAC9C;AACA,EAAE,OAAO,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,GAAG;AAChE;AACA,GAAG,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC9D;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2BAA2B,CAAC;AAClC;AACA,CAAC,WAAW,GAAG;AACf;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,mBAAmB,CAAC;AAC7C;AACA,EAAE;AACF;AACA,CAAC,eAAe,GAAG;AACnB;AACA,EAAE,OAAOC,uBAAiB,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG;AACrD;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,cAAc,CAAC,KAAK,GAAG,IAAIL,WAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACpD,EAAE,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;AAC/B;AACA,EAAE,MAAM,iBAAiB,GAAG,WAAW,CAAC,oBAAoB,CAAC;AAC7D;AACA,EAAE,KAAK,iBAAiB,GAAG;AAC3B;AACA,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,GAAG;AAC7D;AACA,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,eAAe,CAAC;AACpD;AACA,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAEC,0BAAoB,EAAE,CAAC;AAC5F,IAAI,cAAc,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACxC;AACA,IAAI;AACJ;AACA,GAAG,KAAK,iBAAiB,CAAC,gBAAgB,KAAK,SAAS,GAAG;AAC3D;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,CAAC,gBAAgB,EAAEK,oBAAc,EAAE,EAAE,CAAC;AACtH;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sCAAsC,CAAC;AAC7C;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,+BAA+B,CAAC;AACzD;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC;AAChF;AACA,EAAE,KAAK,gBAAgB,KAAK,SAAS,GAAG;AACxC;AACA,GAAG,cAAc,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AACvD;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+BAA+B,CAAC;AACtC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,uBAAuB,CAAC;AACjD;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOC,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,KAAK,SAAS,CAAC,eAAe,KAAK,SAAS,GAAG;AACjD;AACA,GAAG,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;AACxD;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,gBAAgB,KAAK,SAAS,GAAG;AAClD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;AACtG;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,wBAAwB,KAAK,SAAS,GAAG;AAC1D;AACA,GAAG,cAAc,CAAC,kBAAkB,GAAG,SAAS,CAAC,wBAAwB,CAAC;AAC1E;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,yBAAyB,KAAK,SAAS,GAAG;AAC3D;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,SAAS,CAAC,yBAAyB,EAAE,EAAE,CAAC;AACxH;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,sBAAsB,KAAK,SAAS,GAAG;AACxD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,CAAC,sBAAsB,EAAE,EAAE,CAAC;AAClH;AACA,GAAG,KAAK,SAAS,CAAC,sBAAsB,CAAC,KAAK,KAAK,SAAS,GAAG;AAC/D;AACA,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACzD;AACA,IAAI,cAAc,CAAC,oBAAoB,GAAG,IAAIC,aAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACtE;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gCAAgC,CAAC;AACvC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,wBAAwB,CAAC;AAClD;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOD,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,cAAc,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,KAAK,SAAS,GAAG,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5F;AACA,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iCAAiC,CAAC;AACxC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,yBAAyB,CAAC;AACnD;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOA,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,KAAK,SAAS,CAAC,iBAAiB,KAAK,SAAS,GAAG;AACnD;AACA,GAAG,cAAc,CAAC,WAAW,GAAG,SAAS,CAAC,iBAAiB,CAAC;AAC5D;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,kBAAkB,KAAK,SAAS,GAAG;AACpD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAC1G;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,cAAc,KAAK,SAAS,GAAG;AAChD;AACA,GAAG,cAAc,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;AAC5D;AACA,GAAG;AACH;AACA,EAAE,KAAK,cAAc,CAAC,yBAAyB,KAAK,SAAS,GAAG;AAChE;AACA,GAAG,cAAc,CAAC,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3D;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,2BAA2B,KAAK,SAAS,GAAG;AAC7D;AACA,GAAG,cAAc,CAAC,yBAAyB,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,2BAA2B,CAAC;AACzF;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,2BAA2B,KAAK,SAAS,GAAG;AAC7D;AACA,GAAG,cAAc,CAAC,yBAAyB,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,2BAA2B,CAAC;AACzF;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,2BAA2B,KAAK,SAAS,GAAG;AAC7D;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,yBAAyB,EAAE,SAAS,CAAC,2BAA2B,EAAE,EAAE,CAAC;AAC5H;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2BAA2B,CAAC;AAClC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,mBAAmB,CAAC;AAC7C;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOA,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,cAAc,CAAC,UAAU,GAAG,IAAIP,WAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnD,EAAE,cAAc,CAAC,cAAc,GAAG,CAAC,CAAC;AACpC,EAAE,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,KAAK,SAAS,CAAC,gBAAgB,KAAK,SAAS,GAAG;AAClD;AACA,GAAG,MAAM,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC;AAClD,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAEC,0BAAoB,EAAE,CAAC;AAClH;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,oBAAoB,KAAK,SAAS,GAAG;AACtD;AACA,GAAG,cAAc,CAAC,cAAc,GAAG,SAAS,CAAC,oBAAoB,CAAC;AAClE;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,iBAAiB,KAAK,SAAS,GAAG;AACnD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,CAAC,iBAAiB,EAAEK,oBAAc,EAAE,EAAE,CAAC;AACxH;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,qBAAqB,KAAK,SAAS,GAAG;AACvD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;AAChH;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kCAAkC,CAAC;AACzC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,0BAA0B,CAAC;AACpD;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOC,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,KAAK,SAAS,CAAC,kBAAkB,KAAK,SAAS,GAAG;AACpD;AACA,GAAG,cAAc,CAAC,YAAY,GAAG,SAAS,CAAC,kBAAkB,CAAC;AAC9D;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,mBAAmB,KAAK,SAAS,GAAG;AACrD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAC5G;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,4BAA4B,CAAC;AACnC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,oBAAoB,CAAC;AAC9C;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOA,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,eAAe,KAAK,SAAS,GAAG,SAAS,CAAC,eAAe,GAAG,CAAC,CAAC;AACrG;AACA,EAAE,KAAK,SAAS,CAAC,gBAAgB,KAAK,SAAS,GAAG;AAClD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;AACtG;AACA,GAAG;AACH;AACA,EAAE,cAAc,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,IAAI,QAAQ,CAAC;AACjF;AACA,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,EAAE,cAAc,CAAC,gBAAgB,GAAG,IAAIP,WAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAEC,0BAAoB,EAAE,CAAC;AAClI;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yBAAyB,CAAC;AAChC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC;AAC3C;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOM,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,cAAc,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,KAAK,SAAS,GAAG,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC;AACzE;AACA,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,CAAC;AACrC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,sBAAsB,CAAC;AAChD;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOA,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,cAAc,CAAC,iBAAiB,GAAG,SAAS,CAAC,cAAc,KAAK,SAAS,GAAG,SAAS,CAAC,cAAc,GAAG,GAAG,CAAC;AAC7G;AACA,EAAE,KAAK,SAAS,CAAC,eAAe,KAAK,SAAS,GAAG;AACjD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,sBAAsB,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;AAC7G;AACA,GAAG;AACH;AACA,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClE,EAAE,cAAc,CAAC,aAAa,GAAG,IAAIP,WAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAEC,0BAAoB,EAAE,CAAC;AAC/H;AACA,EAAE,KAAK,SAAS,CAAC,oBAAoB,KAAK,SAAS,GAAG;AACtD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,CAAC,oBAAoB,EAAEK,oBAAc,EAAE,EAAE,CAAC;AAC9H;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAA0B,CAAC;AACjC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC;AAC5C;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOC,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,UAAU,KAAK,SAAS,GAAG,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC;AAC7F;AACA,EAAE,KAAK,SAAS,CAAC,WAAW,KAAK,SAAS,GAAG;AAC7C;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;AAC5F;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,gCAAgC,CAAC;AACvC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,wBAAwB,CAAC;AAClD;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,aAAa,GAAG;AAClC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC;AACvF;AACA,EAAE,OAAOA,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC7D;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AAC3E;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,KAAK,SAAS,CAAC,kBAAkB,KAAK,SAAS,GAAG;AACpD;AACA,GAAG,cAAc,CAAC,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC;AAC5D;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,kBAAkB,KAAK,SAAS,GAAG;AACpD;AACA,GAAG,cAAc,CAAC,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;AACpE;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,iBAAiB,KAAK,SAAS,GAAG;AACnD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;AACxG;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAA0B,CAAC;AACjC;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,kBAAkB,CAAC;AAC5C;AACA,EAAE;AACF;AACA,CAAC,WAAW,EAAE,YAAY,GAAG;AAC7B;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;AACnD;AACA,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AACzE;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACvD,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AAC3C;AACA,EAAE,KAAK,EAAE,MAAM,GAAG;AAClB;AACA,GAAG,KAAK,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;AACvF;AACA,IAAI,MAAM,IAAI,KAAK,EAAE,6EAA6E,EAAE,CAAC;AACrG;AACA,IAAI,MAAM;AACV;AACA;AACA,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3E;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,CAAC;AAC/B;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC;AAC1C,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC,WAAW,EAAE,YAAY,GAAG;AAC7B;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;AACnD;AACA,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG;AACpE;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;AAClD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;AACjD;AACA,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACpC,EAAE,KAAK,MAAM,CAAC,GAAG,GAAG;AACpB;AACA,GAAG,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACnE,GAAG,KAAK,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAC5C;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,WAAW,WAAW,GAAG;AAC7D;AACA,GAAG,KAAK,WAAW,GAAG,OAAO,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC/F;AACA,GAAG,KAAK,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;AAClF;AACA,IAAI,MAAM,IAAI,KAAK,EAAE,2DAA2D,EAAE,CAAC;AACnF;AACA,IAAI;AACJ;AACA;AACA,GAAG,OAAO,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;AAC7C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,aAAa,GAAG;AACjB;AACA,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG;AAC5B;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,WAAW,OAAO,GAAG;AACxD;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC9B;AACA;AACA;AACA,IAAI,KAAK,CAAC,GAAG,GAAG,iFAAiF,CAAC;AAClG;AACA,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY;AAC/C;AACA,KAAK,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;AACnC;AACA,KAAK,CAAC;AACN;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,CAAC;AAC/B;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC;AAC1C,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC,WAAW,EAAE,YAAY,GAAG;AAC7B;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;AACnD;AACA,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG;AACpE;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;AAClD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;AACjD;AACA,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACpC,EAAE,KAAK,MAAM,CAAC,GAAG,GAAG;AACpB;AACA,GAAG,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACnE,GAAG,KAAK,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAC5C;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,WAAW,WAAW,GAAG;AAC7D;AACA,GAAG,KAAK,WAAW,GAAG,OAAO,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC/F;AACA,GAAG,KAAK,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG;AAClF;AACA,IAAI,MAAM,IAAI,KAAK,EAAE,2DAA2D,EAAE,CAAC;AACnF;AACA,IAAI;AACJ;AACA;AACA,GAAG,OAAO,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC;AAC7C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,aAAa,GAAG;AACjB;AACA,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG;AAC5B;AACA,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE,WAAW,OAAO,GAAG;AACxD;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAC9B;AACA;AACA,IAAI,KAAK,CAAC,GAAG,GAAG,ibAAib,CAAC;AAClc,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY;AAC/C;AACA,KAAK,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;AACnC;AACA,KAAK,CAAC;AACN;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,sBAAsB,CAAC;AAC7B;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,uBAAuB,CAAC;AACjD,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,KAAK,GAAG;AACzB;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AAC/C;AACA,EAAE,KAAK,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;AACrE;AACA,GAAG,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3D;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;AAC7E,GAAG,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;AACtD;AACA,GAAG,KAAK,EAAE,OAAO,IAAI,EAAE,OAAO,CAAC,SAAS,GAAG;AAC3C;AACA,IAAI,KAAK,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;AACxF;AACA,KAAK,MAAM,IAAI,KAAK,EAAE,oFAAoF,EAAE,CAAC;AAC7G;AACA,KAAK,MAAM;AACX;AACA;AACA,KAAK,OAAO,IAAI,CAAC;AACjB;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG;AACxC;AACA,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC;AACpD,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC;AACpD;AACA,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;AACrC,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;AAC3C;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACjE;AACA,IAAI,KAAK,OAAO,CAAC,qBAAqB,GAAG;AACzC;AACA,KAAK,OAAO,OAAO,CAAC,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,GAAG;AAClI;AACA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC;AACxB;AACA,MAAM,EAAE,CAAC;AACT;AACA,KAAK,MAAM;AACX;AACA;AACA,KAAK,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY;AAC5C;AACA,MAAM,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;AACvD,MAAM,OAAO,CAAC,gBAAgB,EAAE,IAAI,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;AAC1H,MAAM,OAAO,MAAM,CAAC;AACpB;AACA,MAAM,EAAE,CAAC;AACT;AACA,KAAK;AACL;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,MAAM;AACT;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,CAAC;AAC5B;AACA,CAAC,WAAW,EAAE,MAAM,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,uBAAuB,CAAC;AACjD,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,SAAS,GAAG;AAC7B;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1C;AACA,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE;AAChE,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG;AAChC;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AAC9C;AACA;AACA;AACA,EAAE,MAAM,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG;AAChD;AACA,GAAG,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,SAAS;AACpD,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,cAAc;AACtD,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,YAAY;AACpD,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,GAAG;AACpC;AACA,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACvD,EAAE,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC;AAChD;AACA;AACA;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB,EAAE,MAAM,UAAU,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,aAAa,GAAG;AACrC;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI;AACjG;AACA,IAAI,UAAU,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;AACjC,IAAI,OAAO,UAAU,EAAE,GAAG,EAAE,CAAC;AAC7B;AACA,IAAI,EAAE,EAAE,CAAC;AACT;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG;AAC5B;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC;AAC1D;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,IAAI;AACjD;AACA,GAAG,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AACpC,GAAG,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,UAAU,EAAE,CAAC;AAC5E,GAAG,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;AACpC,GAAG,MAAM,eAAe,GAAG,EAAE,CAAC;AAC9B;AACA,GAAG,MAAM,MAAM,IAAI,IAAI,MAAM,GAAG;AAChC;AACA;AACA,IAAI,MAAM,CAAC,GAAG,IAAIE,aAAO,EAAE,CAAC;AAC5B,IAAI,MAAM,CAAC,GAAG,IAAIC,aAAO,EAAE,CAAC;AAC5B,IAAI,MAAM,CAAC,GAAG,IAAIC,gBAAU,EAAE,CAAC;AAC/B,IAAI,MAAM,CAAC,GAAG,IAAID,aAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrC;AACA,IAAI,MAAM,aAAa,GAAG,IAAIE,mBAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AACnF;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG;AACvC;AACA,KAAK,KAAK,UAAU,CAAC,WAAW,GAAG;AACnC;AACA,MAAM,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;AACzD;AACA,MAAM;AACN;AACA,KAAK,KAAK,UAAU,CAAC,QAAQ,GAAG;AAChC;AACA,MAAM,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AACtD;AACA,MAAM;AACN;AACA,KAAK,KAAK,UAAU,CAAC,KAAK,GAAG;AAC7B;AACA,MAAM,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACnD;AACA,MAAM;AACN;AACA,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1D;AACA,KAAK;AACL;AACA;AACA,IAAI,MAAM,MAAM,aAAa,IAAI,UAAU,GAAG;AAC9C;AACA,KAAK,KAAK,aAAa,KAAK,UAAU,GAAG;AACzC;AACA,MAAM,MAAM,IAAI,GAAG,UAAU,EAAE,aAAa,EAAE,CAAC;AAC/C,MAAM,aAAa,CAAC,aAAa,GAAG,IAAIC,8BAAwB,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/G;AACA,MAAM,MAAM,KAAK,aAAa,KAAK,aAAa;AAChD,OAAO,aAAa,KAAK,UAAU;AACnC,OAAO,aAAa,KAAK,OAAO,GAAG;AACnC;AACA,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,CAAC;AAC/E;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA;AACA,IAAIC,cAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACxD;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC;AACrD;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AAC1C;AACA,IAAI;AACJ;AACA,GAAG,KAAK,UAAU,CAAC,OAAO,GAAG;AAC7B;AACA,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;AACvB;AACA,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,eAAe,EAAE,CAAC;AAC1C;AACA,IAAI,OAAO,UAAU,CAAC;AACtB;AACA,IAAI;AACJ;AACA,GAAG,OAAO,eAAe,EAAE,CAAC,EAAE,CAAC;AAC/B;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAC7C,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAC1C,MAAM,4BAA4B,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAC3E;AACA,MAAM,mBAAmB,CAAC;AAC1B;AACA,CAAC,WAAW,EAAE,IAAI,GAAG;AACrB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC;AACzC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,8BAA8B,EAAE,CAAC;AAC7E,EAAE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,MAAM,GAAG;AAChB,GAAG,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AACpE,GAAG,OAAO,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE;AAC3C,GAAG,MAAM,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE;AAC1C,GAAG,CAAC;AACJ;AACA,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,6BAA6B,GAAG;AAC7D;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,mDAAmD,EAAE,CAAC;AAC1E;AACA,GAAG,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,GAAG;AAC1C;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,gDAAgD,EAAE,CAAC;AACvE;AACA,GAAG;AACH;AACA,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,8BAA8B,CAAC;AAClF,EAAE,MAAM,SAAS,GAAG,IAAI,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;AACzE,EAAE,IAAI,UAAU,GAAG,CAAC,CAAC;AACrB;AACA,EAAE,QAAQ,UAAU,GAAG,mBAAmB,GAAG;AAC7C;AACA,GAAG,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/D,GAAG,UAAU,IAAI,CAAC,CAAC;AACnB;AACA,GAAG,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC7D,GAAG,UAAU,IAAI,CAAC,CAAC;AACnB;AACA,GAAG,KAAK,SAAS,KAAK,4BAA4B,CAAC,IAAI,GAAG;AAC1D;AACA,IAAI,MAAM,YAAY,GAAG,IAAI,UAAU,EAAE,IAAI,EAAE,8BAA8B,GAAG,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1G,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;AACtD;AACA,IAAI,MAAM,KAAK,SAAS,KAAK,4BAA4B,CAAC,GAAG,GAAG;AAChE;AACA,IAAI,MAAM,UAAU,GAAG,8BAA8B,GAAG,UAAU,CAAC;AACnE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,WAAW,EAAE,CAAC;AACnE;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG,UAAU,IAAI,WAAW,CAAC;AAC7B;AACA,GAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG;AAC/B;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,2CAA2C,EAAE,CAAC;AAClE;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iCAAiC,CAAC;AACxC;AACA,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,GAAG;AAClC;AACA,EAAE,KAAK,EAAE,WAAW,GAAG;AACvB;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,qDAAqD,EAAE,CAAC;AAC5E;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,0BAA0B,CAAC;AACpD,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC7B;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG;AACtC;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;AACvE,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC;AACxE,EAAE,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC/B,EAAE,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACpC,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC9B;AACA,EAAE,MAAM,MAAM,aAAa,IAAI,gBAAgB,GAAG;AAClD;AACA,GAAG,MAAM,kBAAkB,GAAG,UAAU,EAAE,aAAa,EAAE,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;AACzF;AACA,GAAG,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,EAAE,aAAa,EAAE,CAAC;AAC/E;AACA,GAAG;AACH;AACA,EAAE,MAAM,MAAM,aAAa,IAAI,SAAS,CAAC,UAAU,GAAG;AACtD;AACA,GAAG,MAAM,kBAAkB,GAAG,UAAU,EAAE,aAAa,EAAE,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;AACzF;AACA,GAAG,KAAK,gBAAgB,EAAE,aAAa,EAAE,KAAK,SAAS,GAAG;AAC1D;AACA,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,CAAC;AAChF,IAAI,MAAM,aAAa,GAAG,qBAAqB,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;AAC7E;AACA,IAAI,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC;AAChE,IAAI,sBAAsB,EAAE,kBAAkB,EAAE,GAAG,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC;AACnF;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,WAAW,UAAU,GAAG;AAC7F;AACA,GAAG,OAAO,IAAI,OAAO,EAAE,WAAW,OAAO,EAAE,MAAM,GAAG;AACpD;AACA,IAAI,WAAW,CAAC,eAAe,EAAE,UAAU,EAAE,WAAW,QAAQ,GAAG;AACnE;AACA,KAAK,MAAM,MAAM,aAAa,IAAI,QAAQ,CAAC,UAAU,GAAG;AACxD;AACA,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,sBAAsB,EAAE,aAAa,EAAE,CAAC;AACjE;AACA,MAAM,KAAK,UAAU,KAAK,SAAS,GAAG,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;AACxE;AACA,MAAM;AACN;AACA,KAAK,OAAO,EAAE,QAAQ,EAAE,CAAC;AACzB;AACA,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAEb,0BAAoB,EAAE,MAAM,EAAE,CAAC;AAC3E;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,6BAA6B,CAAC;AACpC;AACA,CAAC,WAAW,GAAG;AACf;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,qBAAqB,CAAC;AAC/C;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,GAAG;AACrC;AACA,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO;AACnF,MAAM,SAAS,CAAC,MAAM,KAAK,SAAS;AACpC,MAAM,SAAS,CAAC,QAAQ,KAAK,SAAS;AACtC,MAAM,SAAS,CAAC,KAAK,KAAK,SAAS,GAAG;AACtC;AACA;AACA,GAAG,OAAO,OAAO,CAAC;AAClB;AACA,GAAG;AACH;AACA,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAC5B;AACA,EAAE,KAAK,SAAS,CAAC,QAAQ,KAAK,SAAS,GAAG;AAC1C;AACA,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;AACxC;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,MAAM,KAAK,SAAS,GAAG;AACxC;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;AAChD;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,QAAQ,KAAK,SAAS,GAAG;AAC1C;AACA,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AACzC;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,KAAK,KAAK,SAAS,GAAG;AACvC;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/C;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AAC7B;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,6BAA6B,CAAC;AACpC;AACA,CAAC,WAAW,GAAG;AACf;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,qBAAqB,CAAC;AAC/C;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,0BAA0B,SAASc,iBAAW,CAAC;AACrD;AACA,CAAC,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,GAAG;AAC3E;AACA,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtE;AACA,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE,KAAK,GAAG;AAC3B;AACA;AACA;AACA;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY;AAClC,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY;AAC7B,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS;AAC7B,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;AAC9C;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC,GAAG,GAAG;AAC3C;AACA,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;AACtC;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG;AAC/B;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;AACnC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC;AACA,EAAE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;AAC7B,EAAE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;AAC7B;AACA,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AAC5B,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;AAC/B,EAAE,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpC;AACA,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AAChC,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AACtB,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzB;AACA;AACA;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,GAAG,GAAG;AACxC;AACA,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;AAC7C,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC;AACnD,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;AAC7C,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AACzC;AACA,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACvD;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA,MAAM,EAAE,GAAG,IAAIJ,gBAAU,EAAE,CAAC;AAC5B;AACA,MAAM,oCAAoC,SAAS,0BAA0B,CAAC;AAC9E;AACA,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG;AAC/B;AACA,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACrD;AACA,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;AACvD;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG;AACxB,CAAC,KAAK,EAAE,IAAI;AACZ;AACA,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,MAAM,EAAE,IAAI;AACb,CAAC,MAAM,EAAE,KAAK;AACd,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,MAAM,EAAE,CAAC;AACV,CAAC,KAAK,EAAE,CAAC;AACT,CAAC,SAAS,EAAE,CAAC;AACb,CAAC,UAAU,EAAE,CAAC;AACd,CAAC,SAAS,EAAE,CAAC;AACb,CAAC,cAAc,EAAE,CAAC;AAClB,CAAC,YAAY,EAAE,CAAC;AAChB,CAAC,aAAa,EAAE,IAAI;AACpB,CAAC,cAAc,EAAE,IAAI;AACrB,CAAC,CAAC;AACF;AACA,MAAM,qBAAqB,GAAG;AAC9B,CAAC,IAAI,EAAE,SAAS;AAChB,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,IAAI,EAAE,UAAU;AACjB,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,IAAI,EAAE,WAAW;AAClB,CAAC,IAAI,EAAE,YAAY;AACnB,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG;AACtB,CAAC,IAAI,EAAEK,mBAAa;AACpB,CAAC,IAAI,EAAEC,kBAAY;AACnB,CAAC,IAAI,EAAEC,gCAA0B;AACjC,CAAC,IAAI,EAAEC,+BAAyB;AAChC,CAAC,IAAI,EAAEC,+BAAyB;AAChC,CAAC,IAAI,EAAEC,8BAAwB;AAC/B,CAAC,CAAC;AACF;AACA,MAAM,eAAe,GAAG;AACxB,CAAC,KAAK,EAAEC,yBAAmB;AAC3B,CAAC,KAAK,EAAEC,4BAAsB;AAC9B,CAAC,KAAK,EAAEC,oBAAc;AACtB,CAAC,CAAC;AACF;AACA,MAAM,gBAAgB,GAAG;AACzB,CAAC,QAAQ,EAAE,CAAC;AACZ,CAAC,MAAM,EAAE,CAAC;AACV,CAAC,MAAM,EAAE,CAAC;AACV,CAAC,MAAM,EAAE,CAAC;AACV,CAAC,MAAM,EAAE,CAAC;AACV,CAAC,MAAM,EAAE,CAAC;AACV,CAAC,MAAM,EAAE,EAAE;AACX,CAAC,CAAC;AACF;AACA,MAAM,UAAU,GAAG;AACnB,CAAC,QAAQ,EAAE,UAAU;AACrB,CAAC,MAAM,EAAE,QAAQ;AACjB,CAAC,OAAO,EAAE,SAAS;AACnB,CAAC,UAAU,EAAE,IAAI;AACjB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,OAAO,EAAE,OAAO;AACjB,CAAC,SAAS,EAAE,YAAY;AACxB,CAAC,QAAQ,EAAE,WAAW;AACtB,CAAC,CAAC;AACF;AACA,MAAM,eAAe,GAAG;AACxB,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,WAAW,EAAE,UAAU;AACxB,CAAC,QAAQ,EAAE,YAAY;AACvB,CAAC,OAAO,EAAE,uBAAuB;AACjC,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG;AACtB,CAAC,WAAW,EAAE,SAAS;AACvB;AACA,CAAC,MAAM,EAAEC,uBAAiB;AAC1B,CAAC,IAAI,EAAEC,yBAAmB;AAC1B,CAAC,CAAC;AACF;AACA,MAAM,WAAW,GAAG;AACpB,CAAC,MAAM,EAAE,QAAQ;AACjB,CAAC,IAAI,EAAE,MAAM;AACb,CAAC,KAAK,EAAE,OAAO;AACf,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,SAAS,qBAAqB,EAAE,KAAK,GAAG;AACxC;AACA,CAAC,KAAK,KAAK,EAAE,iBAAiB,EAAE,KAAK,SAAS,GAAG;AACjD;AACA,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,IAAIC,0BAAoB,EAAE;AACzD,GAAG,KAAK,EAAE,QAAQ;AAClB,GAAG,QAAQ,EAAE,QAAQ;AACrB,GAAG,SAAS,EAAE,CAAC;AACf,GAAG,SAAS,EAAE,CAAC;AACf,GAAG,WAAW,EAAE,KAAK;AACrB,GAAG,SAAS,EAAE,IAAI;AAClB,GAAG,IAAI,EAAEC,eAAS;AAClB,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,OAAO,KAAK,EAAE,iBAAiB,EAAE,CAAC;AACnC;AACA,CAAC;AACD;AACA,SAAS,8BAA8B,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,GAAG;AAC9E;AACA;AACA;AACA,CAAC,MAAM,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,GAAG;AAC5C;AACA,EAAE,KAAK,eAAe,EAAE,IAAI,EAAE,KAAK,SAAS,GAAG;AAC/C;AACA,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;AACzE,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;AACzE;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,EAAE,MAAM,EAAE,OAAO,GAAG;AACnD;AACA,CAAC,KAAK,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG;AACrC;AACA,EAAE,KAAK,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,GAAG;AAC5C;AACA,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACpD;AACA,GAAG,MAAM;AACT;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,qDAAqD,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1F;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG;AACtD;AACA,CAAC,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC9B,CAAC,IAAI,cAAc,GAAG,KAAK,CAAC;AAC5B,CAAC,IAAI,aAAa,GAAG,KAAK,CAAC;AAC3B;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACtD;AACA,EAAE,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AAC9B;AACA,EAAE,KAAK,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAC/D,EAAE,KAAK,MAAM,CAAC,MAAM,KAAK,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC;AAC3D,EAAE,KAAK,MAAM,CAAC,OAAO,KAAK,SAAS,GAAG,aAAa,GAAG,IAAI,CAAC;AAC3D;AACA,EAAE,KAAK,gBAAgB,IAAI,cAAc,IAAI,aAAa,GAAG,MAAM;AACnE;AACA,EAAE;AACF;AACA,CAAC,KAAK,EAAE,gBAAgB,IAAI,EAAE,cAAc,IAAI,EAAE,aAAa,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrG;AACA,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACrC,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACnC,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAClC;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACtD;AACA,EAAE,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AAC9B;AACA,EAAE,KAAK,gBAAgB,GAAG;AAC1B;AACA,GAAG,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS;AACxD,MAAM,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE;AACzD,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;AACnC;AACA,GAAG,wBAAwB,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;AACpD;AACA,GAAG;AACH;AACA,EAAE,KAAK,cAAc,GAAG;AACxB;AACA,GAAG,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS;AACtD,MAAM,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;AACvD,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AACjC;AACA,GAAG,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;AAClD;AACA,GAAG;AACH;AACA,EAAE,KAAK,aAAa,GAAG;AACvB;AACA,GAAG,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS;AACvD,MAAM,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE;AACxD,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;AAChC;AACA,GAAG,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;AACjD;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,CAAC,GAAG,EAAE,wBAAwB,EAAE;AACzC,EAAE,OAAO,CAAC,GAAG,EAAE,sBAAsB,EAAE;AACvC,EAAE,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE;AACtC,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,SAAS,GAAG;AAClC;AACA,EAAE,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACxC,EAAE,MAAM,YAAY,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACtC,EAAE,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACrC;AACA,EAAE,KAAK,gBAAgB,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC7E,EAAE,KAAK,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,YAAY,CAAC;AACvE,EAAE,KAAK,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG,WAAW,CAAC;AACpE,EAAE,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACvC;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE,EAAE,CAAC;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,EAAE,IAAI,EAAE,OAAO,GAAG;AAC7C;AACA,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B;AACA,CAAC,KAAK,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG;AACtC;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC/D;AACA,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC1D;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA,CAAC,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG;AACtE;AACA,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;AACjD;AACA,EAAE,KAAK,IAAI,CAAC,qBAAqB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,GAAG;AAClE;AACA,GAAG,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;AACnC;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC5D;AACA,IAAI,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACvD;AACA,IAAI;AACJ;AACA,GAAG,MAAM;AACT;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,sEAAsE,EAAE,CAAC;AAC1F;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA,SAAS,kBAAkB,EAAE,YAAY,GAAG;AAC5C;AACA,CAAC,IAAI,WAAW,CAAC;AACjB;AACA,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,IAAI,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,0BAA0B,EAAE,CAAC;AACpH;AACA,CAAC,KAAK,cAAc,GAAG;AACvB;AACA,EAAE,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC,UAAU;AACpD,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO;AAClC,MAAM,GAAG,GAAG,mBAAmB,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC;AAC7D;AACA,EAAE,MAAM;AACR;AACA,EAAE,WAAW,GAAG,YAAY,CAAC,OAAO,GAAG,GAAG,GAAG,mBAAmB,EAAE,YAAY,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC;AACtH;AACA,EAAE;AACF;AACA,CAAC,KAAK,YAAY,CAAC,OAAO,KAAK,SAAS,GAAG;AAC3C;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACpE;AACA,GAAG,WAAW,IAAI,GAAG,GAAG,mBAAmB,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;AACzE;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,OAAO,WAAW,CAAC;AACpB;AACA,CAAC;AACD;AACA,SAAS,mBAAmB,EAAE,UAAU,GAAG;AAC3C;AACA,CAAC,IAAI,aAAa,GAAG,EAAE,CAAC;AACxB;AACA,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/C;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACnD;AACA,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC;AACnE;AACA,EAAE;AACF;AACA,CAAC,OAAO,aAAa,CAAC;AACtB;AACA,CAAC;AACD;AACA,SAAS,2BAA2B,EAAE,WAAW,GAAG;AACpD;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW;AACrB;AACA,EAAE,KAAK,SAAS;AAChB,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;AAClB;AACA,EAAE,KAAK,UAAU;AACjB,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;AAClB;AACA,EAAE,KAAK,UAAU;AACjB,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC;AACpB;AACA,EAAE,KAAK,WAAW;AAClB,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC;AACpB;AACA,EAAE;AACF,GAAG,MAAM,IAAI,KAAK,EAAE,mEAAmE,EAAE,CAAC;AAC1F;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA,SAAS,mBAAmB,EAAE,GAAG,GAAG;AACpC;AACA,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,GAAG,OAAO,YAAY,CAAC;AAC3G,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,GAAG,OAAO,YAAY,CAAC;AAC1G;AACA,CAAC,OAAO,WAAW,CAAC;AACpB;AACA,CAAC;AACD;AACA,MAAM,eAAe,GAAG,IAAInB,aAAO,EAAE,CAAC;AACtC;AACA;AACA;AACA,MAAM,UAAU,CAAC;AACjB;AACA,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,GAAG;AACxC;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;AACA;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;AAClC;AACA;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC;AACA;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC3B;AACA;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC1C,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC5C,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3C;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACzB;AACA;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B;AACA;AACA;AACA;AACA,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,SAAS,GAAG,KAAK,CAAC;AACxB,EAAE,IAAI,cAAc,GAAG,EAAE,CAAC,CAAC;AAC3B;AACA,EAAE,KAAK,OAAO,SAAS,KAAK,WAAW,GAAG;AAC1C;AACA,GAAG,QAAQ,GAAG,gCAAgC,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;AACpF,GAAG,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9D,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9F;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,iBAAiB,KAAK,WAAW,IAAI,QAAQ,MAAM,SAAS,IAAI,cAAc,GAAG,EAAE,EAAE,GAAG;AACtG;AACA,GAAG,IAAI,CAAC,aAAa,GAAG,IAAIoB,mBAAa,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAClE;AACA,GAAG,MAAM;AACT;AACA,GAAG,IAAI,CAAC,aAAa,GAAG,IAAIC,uBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACtE;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAChE,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACpE;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI/B,gBAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3D,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;AACnD;AACA,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,iBAAiB,GAAG;AACxD;AACA,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;AAC9C;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,UAAU,GAAG;AAC7B;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,OAAO,GAAG;AACvB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;AACA,EAAE;AACF;AACA,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG;AAC1B;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA;AACA,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpC;AACA,GAAG,OAAO,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;AAC3C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACjD;AACA,GAAG,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;AAC7C;AACA,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY;AAC1B;AACA,GAAG,OAAO,OAAO,CAAC,GAAG,EAAE;AACvB;AACA,IAAI,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE;AACrC,IAAI,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE;AACzC,IAAI,MAAM,CAAC,eAAe,EAAE,QAAQ,EAAE;AACtC;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,YAAY,GAAG;AACtC;AACA,GAAG,MAAM,MAAM,GAAG;AAClB,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;AAC/C,IAAI,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE;AAC7B,IAAI,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE;AACjC,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE;AAC9B,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK;AACrB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,CAAC;AACL;AACA,GAAG,8BAA8B,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC9D;AACA,GAAG,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1C;AACA,GAAG,OAAO,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AAC3D;AACA,IAAI,OAAO,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;AACpD;AACA,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY;AAC3B;AACA,IAAI,MAAM,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG;AACzC;AACA,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC/B;AACA,KAAK;AACL;AACA,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;AACrB;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AACvB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,SAAS,GAAG;AACb;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AACzC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AACzC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AAC1C;AACA;AACA;AACA,EAAE,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,GAAG;AAChG;AACA,GAAG,MAAM,MAAM,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC;AAC/C;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACvD;AACA,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;AAC1C;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,GAAG;AAChG;AACA,GAAG,MAAM,OAAO,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC;AACzC;AACA,GAAG,KAAK,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG;AACrC;AACA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AACrD;AACA;AACA;AACA;AACA,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG;AACtC;AACA,KAAK,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC;AACnD;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG;AACvC;AACA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACzD;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG;AAC7B;AACA,EAAE,KAAK,KAAK,KAAK,SAAS,GAAG,OAAO;AACpC;AACA,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,SAAS,GAAG;AAC3C;AACA,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACjD;AACA,GAAG;AACH;AACA,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AACzB;AACA,EAAE;AACF;AACA;AACA,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG;AACrC;AACA,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,MAAM,CAAC;AAChD;AACA,EAAE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAC7B;AACA;AACA;AACA,EAAE,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,KAAK,MAAM;AAChD;AACA,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AACtD,GAAG,KAAK,QAAQ,IAAI,IAAI,GAAG;AAC3B;AACA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7C;AACA,IAAI;AACJ;AACA,GAAG,MAAM,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG;AAC7D;AACA,IAAI,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;AACjD;AACA,IAAI;AACJ;AACA,GAAG,CAAC;AACJ;AACA,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,GAAG,CAAC,IAAI,IAAI,YAAY,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxD;AACA,EAAE,OAAO,GAAG,CAAC;AACb;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,IAAI,GAAG;AACpB;AACA,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AACjD;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1C;AACA,GAAG,KAAK,MAAM,GAAG,OAAO,MAAM,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,IAAI,GAAG;AACpB;AACA,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7B;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AACjD;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1C;AACA,GAAG,KAAK,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AACxC;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,GAAG;AAC9B;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;AACtC,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC9C;AACA,EAAE,KAAK,EAAE,UAAU,GAAG;AACtB;AACA,GAAG,SAAS,IAAI;AAChB;AACA,IAAI,KAAK,OAAO;AAChB,KAAK,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;AAC1C,KAAK,MAAM;AACX;AACA,IAAI,KAAK,MAAM;AACf,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AACnD;AACA,MAAM,EAAE,CAAC;AACT,KAAK,MAAM;AACX;AACA,IAAI,KAAK,MAAM;AACf,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AACnD;AACA,MAAM,EAAE,CAAC;AACT,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;AAC7C,KAAK,MAAM;AACX;AACA,IAAI,KAAK,YAAY;AACrB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,MAAM,OAAO,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;AAC/D;AACA,MAAM,EAAE,CAAC;AACT,KAAK,MAAM;AACX;AACA,IAAI,KAAK,QAAQ;AACjB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AAC3C,KAAK,MAAM;AACX;AACA,IAAI,KAAK,UAAU;AACnB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,MAAM,OAAO,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;AAC3D;AACA,MAAM,EAAE,CAAC;AACT,KAAK,MAAM;AACX;AACA,IAAI,KAAK,SAAS;AAClB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,MAAM,OAAO,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;AACzD;AACA,MAAM,EAAE,CAAC;AACT,KAAK,MAAM;AACX;AACA,IAAI,KAAK,MAAM;AACf,KAAK,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AACzC,KAAK,MAAM;AACX;AACA,IAAI,KAAK,WAAW;AACpB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,MAAM,OAAO,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;AAC7D;AACA,MAAM,EAAE,CAAC;AACT,KAAK,MAAM;AACX;AACA,IAAI,KAAK,QAAQ;AACjB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;AAC3C,KAAK,MAAM;AACX;AACA,IAAI;AACJ,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClF;AACA,MAAM,EAAE,CAAC;AACT;AACA,KAAK,KAAK,EAAE,UAAU,GAAG;AACzB;AACA,MAAM,MAAM,IAAI,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAAE,CAAC;AACjD;AACA,MAAM;AACN;AACA,KAAK,MAAM;AACX;AACA,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC1C;AACA,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC;AACpB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,eAAe,EAAE,IAAI,GAAG;AACzB;AACA,EAAE,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AAC5C;AACA,EAAE,KAAK,EAAE,YAAY,GAAG;AACxB;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC;AACvB,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;AAC3E;AACA,GAAG,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,EAAE,KAAK,GAAG;AACjE;AACA,IAAI,OAAO,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC/C;AACA,IAAI,EAAE,EAAE,CAAC;AACT;AACA,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AACxC;AACA,GAAG;AACH;AACA,EAAE,OAAO,YAAY,CAAC;AACtB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,EAAE,WAAW,GAAG;AAC3B;AACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;AACrD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AACjC;AACA,EAAE,KAAK,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,GAAG;AAC5D;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,oBAAoB,GAAG,SAAS,CAAC,IAAI,GAAG,gCAAgC,EAAE,CAAC;AAC/F;AACA,GAAG;AACH;AACA;AACA,EAAE,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,KAAK,CAAC,GAAG;AAC1D;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC;AAChF;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/B;AACA,EAAE,OAAO,IAAI,OAAO,EAAE,WAAW,OAAO,EAAE,MAAM,GAAG;AACnD;AACA,GAAG,MAAM,CAAC,IAAI,EAAED,iBAAW,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY;AACvG;AACA,IAAI,MAAM,EAAE,IAAI,KAAK,EAAE,2CAA2C,GAAG,SAAS,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC;AAC9F;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,cAAc,EAAE,eAAe,GAAG;AACnC;AACA,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC;AACjE;AACA,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,MAAM,GAAG;AACxF;AACA,GAAG,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC;AACpD,GAAG,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC;AACpD,GAAG,OAAO,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;AAC9D;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,EAAE,aAAa,GAAG;AAC/B;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AAC3D;AACA,EAAE,KAAK,WAAW,CAAC,UAAU,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,GAAG;AAClF;AACA,GAAG,MAAM,QAAQ,GAAG,gBAAgB,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AACzD,GAAG,MAAM,UAAU,GAAG,qBAAqB,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;AACzE,GAAG,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC;AACtD;AACA,GAAG,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,WAAW,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;AAChE,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,IAAIiC,qBAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC;AAChF;AACA,GAAG;AACH;AACA,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,KAAK,WAAW,CAAC,UAAU,KAAK,SAAS,GAAG;AAC9C;AACA,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;AACzF;AACA,GAAG,MAAM;AACT;AACA,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACnC;AACA,GAAG;AACH;AACA,EAAE,KAAK,WAAW,CAAC,MAAM,KAAK,SAAS,GAAG;AAC1C;AACA,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACxG,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;AACvG;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,IAAI,EAAE,WAAW,WAAW,GAAG;AAC1E;AACA,GAAG,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC,EAAE,CAAC;AACvC;AACA,GAAG,MAAM,QAAQ,GAAG,gBAAgB,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AACzD,GAAG,MAAM,UAAU,GAAG,qBAAqB,EAAE,WAAW,CAAC,aAAa,EAAE,CAAC;AACzE;AACA;AACA,GAAG,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAiB,CAAC;AACrD,GAAG,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC7C,GAAG,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,CAAC,CAAC;AAClD,GAAG,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,KAAK,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC;AAC/H,GAAG,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC;AACtD,GAAG,IAAI,KAAK,EAAE,eAAe,CAAC;AAC9B;AACA;AACA,GAAG,KAAK,UAAU,IAAI,UAAU,KAAK,SAAS,GAAG;AACjD;AACA;AACA;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;AAC1D,IAAI,MAAM,UAAU,GAAG,oBAAoB,GAAG,WAAW,CAAC,UAAU,GAAG,GAAG,GAAG,WAAW,CAAC,aAAa,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC;AACjJ,IAAI,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;AAC5C;AACA,IAAI,KAAK,EAAE,EAAE,GAAG;AAChB;AACA,KAAK,KAAK,GAAG,IAAI,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,UAAU,EAAE,WAAW,CAAC,KAAK,GAAG,UAAU,GAAG,YAAY,EAAE,CAAC;AAC/G;AACA;AACA,KAAK,EAAE,GAAG,IAAIC,uBAAiB,EAAE,KAAK,EAAE,UAAU,GAAG,YAAY,EAAE,CAAC;AACpE;AACA,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AACxC;AACA,KAAK;AACL;AACA,IAAI,eAAe,GAAG,IAAIC,gCAA0B,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,UAAU,GAAG,UAAU,KAAK,YAAY,EAAE,UAAU,EAAE,CAAC;AAC7H;AACA,IAAI,MAAM;AACV;AACA,IAAI,KAAK,UAAU,KAAK,IAAI,GAAG;AAC/B;AACA,KAAK,KAAK,GAAG,IAAI,UAAU,EAAE,WAAW,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;AAC5D;AACA,KAAK,MAAM;AACX;AACA,KAAK,KAAK,GAAG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;AACpF;AACA,KAAK;AACL;AACA,IAAI,eAAe,GAAG,IAAIF,qBAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACzE;AACA,IAAI;AACJ;AACA;AACA,GAAG,KAAK,WAAW,CAAC,MAAM,KAAK,SAAS,GAAG;AAC3C;AACA,IAAI,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACpD,IAAI,MAAM,iBAAiB,GAAG,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAChG;AACA,IAAI,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;AACzE,IAAI,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;AACvE;AACA,IAAI,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,eAAe,EAAE,CAAC;AACnI,IAAI,MAAM,YAAY,GAAG,IAAI,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;AACnH;AACA,IAAI,KAAK,UAAU,KAAK,IAAI,GAAG;AAC/B;AACA;AACA,KAAK,eAAe,GAAG,IAAIA,qBAAe,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,UAAU,EAAE,CAAC;AAClI;AACA,KAAK;AACL;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC/D;AACA,KAAK,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC;AACtC;AACA,KAAK,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC;AACjE,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC;AAC1F,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC;AAC1F,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC;AAC1F,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE,mEAAmE,EAAE,CAAC;AACjH;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,OAAO,eAAe,CAAC;AAC1B;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,WAAW,EAAE,YAAY,GAAG;AAC7B;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/B,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;AACnD,EAAE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;AACxC,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/C;AACA,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;AAClC;AACA,EAAE,KAAK,SAAS,CAAC,GAAG,GAAG;AACvB;AACA,GAAG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;AAC/D,GAAG,KAAK,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAC5C;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACpE;AACA,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG;AACvD;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;AACnD,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/C;AACA,EAAE,MAAM,QAAQ,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,UAAU,KAAK,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC;AACxF;AACA,EAAE,KAAK,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG;AACvC;AACA;AACA,GAAG,OAAO,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC;AACxC;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,OAAO,GAAG;AACzF;AACA,GAAG,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB;AACA,GAAG,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;AAC1D;AACA,GAAG,KAAK,OAAO,CAAC,IAAI,KAAK,EAAE,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,KAAK,GAAG;AAC1H;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC;AACjC;AACA,IAAI;AACJ;AACA,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AACxC,GAAG,MAAM,OAAO,GAAG,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AACxD;AACA,GAAG,OAAO,CAAC,SAAS,GAAG,aAAa,EAAE,OAAO,CAAC,SAAS,EAAE,IAAId,kBAAY,CAAC;AAC1E,GAAG,OAAO,CAAC,SAAS,GAAG,aAAa,EAAE,OAAO,CAAC,SAAS,EAAE,IAAII,8BAAwB,CAAC;AACtF,GAAG,OAAO,CAAC,KAAK,GAAG,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,IAAIG,oBAAc,CAAC;AACtE,GAAG,OAAO,CAAC,KAAK,GAAG,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,IAAIA,oBAAc,CAAC;AACtE;AACA,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;AAClE;AACA,GAAG,OAAO,OAAO,CAAC;AAClB;AACA,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY;AACzB;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AAC1C;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG;AACxC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/B;AACA,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,SAAS,GAAG;AACvD;AACA,GAAG,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACjF;AACA,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/C;AACA,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AACzC;AACA,EAAE,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;AACtC,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC;AAC1B;AACA,EAAE,KAAK,SAAS,CAAC,UAAU,KAAK,SAAS,GAAG;AAC5C;AACA;AACA;AACA,GAAG,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,UAAU,GAAG;AACxG;AACA,IAAI,WAAW,GAAG,IAAI,CAAC;AACvB,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC1E,IAAI,SAAS,GAAG,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;AAC5C,IAAI,OAAO,SAAS,CAAC;AACrB;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,MAAM,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,GAAG;AAC5C;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,0BAA0B,GAAG,WAAW,GAAG,gCAAgC,EAAE,CAAC;AAClG;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,SAAS,GAAG;AAC5E;AACA,GAAG,OAAO,IAAI,OAAO,EAAE,WAAW,OAAO,EAAE,MAAM,GAAG;AACpD;AACA,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC;AACzB;AACA,IAAI,KAAK,MAAM,CAAC,mBAAmB,KAAK,IAAI,GAAG;AAC/C;AACA,KAAK,MAAM,GAAG,WAAW,WAAW,GAAG;AACvC;AACA,MAAM,MAAM,OAAO,GAAG,IAAIU,aAAO,EAAE,WAAW,EAAE,CAAC;AACjD,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;AACjC;AACA,MAAM,OAAO,EAAE,OAAO,EAAE,CAAC;AACzB;AACA,MAAM,CAAC;AACP;AACA,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,EAAEpC,iBAAW,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAChG;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,OAAO,GAAG;AACjC;AACA;AACA;AACA,GAAG,KAAK,WAAW,KAAK,IAAI,GAAG;AAC/B;AACA,IAAI,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC;AACrC;AACA,IAAI;AACJ;AACA,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC;AAC1F;AACA,GAAG,OAAO,OAAO,CAAC;AAClB;AACA,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,GAAG;AAChC;AACA,GAAG,OAAO,CAAC,KAAK,EAAE,0CAA0C,EAAE,SAAS,EAAE,CAAC;AAC1E,GAAG,MAAM,KAAK,CAAC;AACf;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;AAC5C,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG;AAC9D;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,OAAO,GAAG;AAClF;AACA,GAAG,KAAK,EAAE,OAAO,GAAG,OAAO,IAAI,CAAC;AAChC;AACA,GAAG,KAAK,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG;AAC/D;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;AAC9B,IAAI,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtC;AACA,IAAI;AACJ;AACA,GAAG,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,qBAAqB,EAAE,GAAG;AAChE;AACA,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,qBAAqB,EAAE,GAAG,SAAS,CAAC;AAC1H;AACA,IAAI,KAAK,SAAS,GAAG;AACrB;AACA,KAAK,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAC9D,KAAK,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,qBAAqB,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACzG,KAAK,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACvD;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,UAAU,KAAK,SAAS,GAAG;AACnC;AACA,IAAI,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC;AACA,IAAI;AACJ;AACA,GAAG,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AACvC;AACA,GAAG,OAAO,OAAO,CAAC;AAClB;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,mBAAmB,EAAE,IAAI,GAAG;AAC7B;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B;AACA,EAAE,MAAM,qBAAqB,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC;AAC1E,EAAE,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC;AAClE,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC;AAClE;AACA,EAAE,KAAK,IAAI,CAAC,QAAQ,GAAG;AACvB;AACA,GAAG,MAAM,QAAQ,GAAG,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC;AACtD;AACA,GAAG,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AACnD;AACA,GAAG,KAAK,EAAE,cAAc,GAAG;AAC3B;AACA,IAAI,cAAc,GAAG,IAAIqC,oBAAc,EAAE,CAAC;AAC1C,IAAIC,cAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AAC7D,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;AAChD,IAAI,cAAc,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACtC,IAAI,cAAc,CAAC,eAAe,GAAG,KAAK,CAAC;AAC3C;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC/C;AACA,IAAI;AACJ;AACA,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC7B;AACA,GAAG,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG;AAC5B;AACA,GAAG,MAAM,QAAQ,GAAG,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC;AACzD;AACA,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AACjD;AACA,GAAG,KAAK,EAAE,YAAY,GAAG;AACzB;AACA,IAAI,YAAY,GAAG,IAAIC,uBAAiB,EAAE,CAAC;AAC3C,IAAID,cAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAC3D,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC9C,IAAI,YAAY,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACpC;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAC7C;AACA,IAAI;AACJ;AACA,GAAG,QAAQ,GAAG,YAAY,CAAC;AAC3B;AACA,GAAG;AACH;AACA;AACA,EAAE,KAAK,qBAAqB,IAAI,eAAe,IAAI,cAAc,GAAG;AACpE;AACA,GAAG,IAAI,QAAQ,GAAG,iBAAiB,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AAC1D;AACA,GAAG,KAAK,qBAAqB,GAAG,QAAQ,IAAI,sBAAsB,CAAC;AACnE,GAAG,KAAK,eAAe,GAAG,QAAQ,IAAI,gBAAgB,CAAC;AACvD,GAAG,KAAK,cAAc,GAAG,QAAQ,IAAI,eAAe,CAAC;AACrD;AACA,GAAG,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AACnD;AACA,GAAG,KAAK,EAAE,cAAc,GAAG;AAC3B;AACA,IAAI,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtC;AACA,IAAI,KAAK,eAAe,GAAG,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9D,IAAI,KAAK,cAAc,GAAG,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5D;AACA,IAAI,KAAK,qBAAqB,GAAG;AACjC;AACA;AACA,KAAK,KAAK,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3E,KAAK,KAAK,cAAc,CAAC,oBAAoB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7F;AACA,KAAK;AACL;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC/C;AACA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC;AAC/E;AACA,IAAI;AACJ;AACA,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC7B;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC,eAAe,wBAAwB;AACxC;AACA,EAAE,OAAOT,0BAAoB,CAAC;AAC9B;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,EAAE,aAAa,GAAG;AAC/B;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;AACtD;AACA,EAAE,IAAI,YAAY,CAAC;AACnB,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC5B,EAAE,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC;AAC1D;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,KAAK,kBAAkB,EAAE,UAAU,CAAC,mBAAmB,EAAE,GAAG;AAC9D;AACA,GAAG,MAAM,YAAY,GAAG,UAAU,EAAE,UAAU,CAAC,mBAAmB,EAAE,CAAC;AACrE,GAAG,YAAY,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;AACjD,GAAG,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;AACpF;AACA,GAAG,MAAM;AACT;AACA;AACA;AACA;AACA,GAAG,MAAM,iBAAiB,GAAG,WAAW,CAAC,oBAAoB,IAAI,EAAE,CAAC;AACpE;AACA,GAAG,cAAc,CAAC,KAAK,GAAG,IAAI3B,WAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrD,GAAG,cAAc,CAAC,OAAO,GAAG,GAAG,CAAC;AAChC;AACA,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,GAAG;AAC7D;AACA,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,eAAe,CAAC;AACpD;AACA,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAEC,0BAAoB,EAAE,CAAC;AAC5F,IAAI,cAAc,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACxC;AACA,IAAI;AACJ;AACA,GAAG,KAAK,iBAAiB,CAAC,gBAAgB,KAAK,SAAS,GAAG;AAC3D;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,CAAC,gBAAgB,EAAEK,oBAAc,EAAE,EAAE,CAAC;AACtH;AACA,IAAI;AACJ;AACA,GAAG,cAAc,CAAC,SAAS,GAAG,iBAAiB,CAAC,cAAc,KAAK,SAAS,GAAG,iBAAiB,CAAC,cAAc,GAAG,GAAG,CAAC;AACtH,GAAG,cAAc,CAAC,SAAS,GAAG,iBAAiB,CAAC,eAAe,KAAK,SAAS,GAAG,iBAAiB,CAAC,eAAe,GAAG,GAAG,CAAC;AACxH;AACA,GAAG,KAAK,iBAAiB,CAAC,wBAAwB,KAAK,SAAS,GAAG;AACnE;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,wBAAwB,EAAE,EAAE,CAAC;AACvH,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,wBAAwB,EAAE,EAAE,CAAC;AACvH;AACA,IAAI;AACJ;AACA,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACpD;AACA,IAAI,OAAO,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;AACvE;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AAChE;AACA,IAAI,OAAO,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AACjG;AACA,IAAI,EAAE,EAAE,EAAE,CAAC;AACX;AACA,GAAG;AACH;AACA,EAAE,KAAK,WAAW,CAAC,WAAW,KAAK,IAAI,GAAG;AAC1C;AACA,GAAG,cAAc,CAAC,IAAI,GAAGgC,gBAAU,CAAC;AACpC;AACA,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC;AAChE;AACA,EAAE,KAAK,SAAS,KAAK,WAAW,CAAC,KAAK,GAAG;AACzC;AACA,GAAG,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;AACrC;AACA;AACA,GAAG,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC;AACrC;AACA,GAAG,MAAM;AACT;AACA,GAAG,cAAc,CAAC,WAAW,GAAG,KAAK,CAAC;AACtC;AACA,GAAG,KAAK,SAAS,KAAK,WAAW,CAAC,IAAI,GAAG;AACzC;AACA,IAAI,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,WAAW,KAAK,SAAS,GAAG,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC;AACrG;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,KAAK,WAAW,CAAC,aAAa,KAAK,SAAS,IAAI,YAAY,KAAKjC,uBAAiB,GAAG;AACvF;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC;AAClG;AACA,GAAG,cAAc,CAAC,WAAW,GAAG,IAAIG,aAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpD;AACA,GAAG,KAAK,WAAW,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS,GAAG;AACxD;AACA,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;AAClD;AACA,IAAI,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACnD;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,KAAK,WAAW,CAAC,gBAAgB,KAAK,SAAS,IAAI,YAAY,KAAKH,uBAAiB,GAAG;AAC1F;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,gBAAgB,EAAE,EAAE,CAAC;AACjG;AACA,GAAG,KAAK,WAAW,CAAC,gBAAgB,CAAC,QAAQ,KAAK,SAAS,GAAG;AAC9D;AACA,IAAI,cAAc,CAAC,cAAc,GAAG,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC1E;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,KAAK,WAAW,CAAC,cAAc,KAAK,SAAS,IAAI,YAAY,KAAKA,uBAAiB,GAAG;AACxF;AACA,GAAG,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AACrD,GAAG,cAAc,CAAC,QAAQ,GAAG,IAAIL,WAAK,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAEC,0BAAoB,EAAE,CAAC;AACvI;AACA,GAAG;AACH;AACA,EAAE,KAAK,WAAW,CAAC,eAAe,KAAK,SAAS,IAAI,YAAY,KAAKI,uBAAiB,GAAG;AACzF;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,eAAe,EAAEC,oBAAc,EAAE,EAAE,CAAC;AACtH;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY;AAClD;AACA,GAAG,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,cAAc,EAAE,CAAC;AACvD;AACA,GAAG,KAAK,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;AAC5D;AACA,GAAG,sBAAsB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnD;AACA,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,CAAC;AACrE;AACA,GAAG,KAAK,WAAW,CAAC,UAAU,GAAG,8BAA8B,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACrG;AACA,GAAG,OAAO,QAAQ,CAAC;AACnB;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE,YAAY,GAAG;AAClC;AACA,EAAE,MAAM,aAAa,GAAGiC,qBAAe,CAAC,gBAAgB,EAAE,YAAY,IAAI,EAAE,EAAE,CAAC;AAC/E;AACA,EAAE,KAAK,aAAa,IAAI,IAAI,CAAC,aAAa,GAAG;AAC7C;AACA,GAAG,OAAO,aAAa,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,CAAC;AAC3E;AACA,GAAG,MAAM;AACT;AACA,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;AAC3C;AACA,GAAG,OAAO,aAAa,CAAC;AACxB;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,cAAc,EAAE,UAAU,GAAG;AAC9B;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;AACpC;AACA,EAAE,SAAS,oBAAoB,EAAE,SAAS,GAAG;AAC7C;AACA,GAAG,OAAO,UAAU,EAAE,UAAU,CAAC,0BAA0B,EAAE;AAC7D,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE;AACzC,KAAK,IAAI,EAAE,WAAW,QAAQ,GAAG;AACjC;AACA,KAAK,OAAO,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAClE;AACA,KAAK,EAAE,CAAC;AACR;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC1D;AACA,GAAG,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC;AACrC,GAAG,MAAM,QAAQ,GAAG,kBAAkB,EAAE,SAAS,EAAE,CAAC;AACpD;AACA;AACA,GAAG,MAAM,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC;AACpC;AACA,GAAG,KAAK,MAAM,GAAG;AACjB;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AACnC;AACA,IAAI,MAAM;AACV;AACA,IAAI,IAAI,eAAe,CAAC;AACxB;AACA,IAAI,KAAK,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,0BAA0B,EAAE,GAAG;AACjG;AACA;AACA,KAAK,eAAe,GAAG,oBAAoB,EAAE,SAAS,EAAE,CAAC;AACzD;AACA,KAAK,MAAM;AACX;AACA;AACA,KAAK,eAAe,GAAG,sBAAsB,EAAE,IAAIC,oBAAc,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACzF;AACA,KAAK;AACL;AACA;AACA,IAAI,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3E;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;AACpC;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAChC;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,GAAG;AACvB;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;AAC3C,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC1D;AACA,GAAG,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS;AAC1D,MAAM,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE;AACzC,MAAM,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;AACjE;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,EAAE,CAAC;AACtD;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,OAAO,GAAG;AAC3D;AACA,GAAG,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAC5D,GAAG,MAAM,UAAU,GAAG,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACpD;AACA,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC;AACrB;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC3D;AACA,IAAI,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC;AACrC,IAAI,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC;AACtC;AACA;AACA;AACA,IAAI,IAAI,IAAI,CAAC;AACb;AACA,IAAI,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACpC;AACA,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,SAAS;AACrD,MAAM,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,cAAc;AACvD,MAAM,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,YAAY;AACrD,MAAM,SAAS,CAAC,IAAI,KAAK,SAAS,GAAG;AACrC;AACA;AACA,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI;AAC1C,QAAQ,IAAIC,iBAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC7C,QAAQ,IAAIjG,UAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACvC;AACA,KAAK,KAAK,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG;AACxC;AACA;AACA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAClC;AACA,MAAM;AACN;AACA,KAAK,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,cAAc,GAAG;AAC9D;AACA,MAAM,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAEqD,2BAAqB,EAAE,CAAC;AAClF;AACA,MAAM,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,YAAY,GAAG;AACnE;AACA,MAAM,IAAI,CAAC,QAAQ,GAAG,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAED,yBAAmB,EAAE,CAAC;AAChF;AACA,MAAM;AACN;AACA,KAAK,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,KAAK,GAAG;AAC3D;AACA,KAAK,IAAI,GAAG,IAAI8C,kBAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACnD;AACA,KAAK,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,UAAU,GAAG;AAChE;AACA,KAAK,IAAI,GAAG,IAAIC,UAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC3C;AACA,KAAK,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,SAAS,GAAG;AAC/D;AACA,KAAK,IAAI,GAAG,IAAIC,cAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC/C;AACA,KAAK,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,eAAe,CAAC,MAAM,GAAG;AAC5D;AACA,KAAK,IAAI,GAAG,IAAIC,YAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC7C;AACA,KAAK,MAAM;AACX;AACA,KAAK,MAAM,IAAI,KAAK,EAAE,gDAAgD,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1F;AACA,KAAK;AACL;AACA,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;AACnE;AACA,KAAK,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACzC;AACA,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,IAAI,MAAM,OAAO,GAAG,SAAS,EAAE,EAAE,CAAC;AACnF;AACA,IAAI,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5C;AACA,IAAI,KAAK,SAAS,CAAC,UAAU,GAAG,8BAA8B,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC9F;AACA,IAAI,MAAM,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;AACvC;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB;AACA,IAAI;AACJ;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACvD;AACA,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,KAAK,MAAM,EAAE,SAAS;AACtB,KAAK,UAAU,EAAE,CAAC;AAClB,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG,KAAK,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG;AAC9B;AACA,IAAI,KAAK,OAAO,CAAC,UAAU,GAAG,8BAA8B,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;AACjG;AACA,IAAI,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC;AACvB;AACA,IAAI;AACJ;AACA,GAAG,MAAM,KAAK,GAAG,IAAI/Q,WAAK,EAAE,CAAC;AAC7B;AACA,GAAG,KAAK,OAAO,CAAC,UAAU,GAAG,8BAA8B,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC1F;AACA,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;AAC3D;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACvD;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7B;AACA,IAAI;AACJ;AACA,GAAG,OAAO,KAAK,CAAC;AAChB;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,EAAE,WAAW,GAAG;AAC3B;AACA,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;AACrD,EAAE,MAAM,MAAM,GAAG,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AAC7C;AACA,EAAE,KAAK,EAAE,MAAM,GAAG;AAClB;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,8CAA8C,EAAE,CAAC;AAClE,GAAG,OAAO;AACV;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,IAAI,KAAK,aAAa,GAAG;AAC1C;AACA,GAAG,MAAM,GAAG,IAAIgR,uBAAiB,EAAEC,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;AACvI;AACA,GAAG,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,cAAc,GAAG;AAClD;AACA,GAAG,MAAM,GAAG,IAAIC,wBAAkB,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACxH;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AAC9E;AACA,EAAE,sBAAsB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC9C;AACA,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;AACnC;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,GAAG;AACvB;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC/C;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC9D;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChE;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,CAAC,mBAAmB,KAAK,SAAS,GAAG;AACnD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;AACjF;AACA,GAAG,MAAM;AACT;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,OAAO,GAAG;AAC3D;AACA,GAAG,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC7C,GAAG,MAAM,UAAU,GAAG,OAAO,CAAC;AAC9B;AACA;AACA;AACA;AACA,GAAG,MAAM,KAAK,GAAG,EAAE,CAAC;AACpB,GAAG,MAAM,YAAY,GAAG,EAAE,CAAC;AAC3B;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC3D;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC;AACtC;AACA,IAAI,KAAK,SAAS,GAAG;AACrB;AACA,KAAK,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B;AACA,KAAK,MAAM,GAAG,GAAG,IAAIvC,aAAO,EAAE,CAAC;AAC/B;AACA,KAAK,KAAK,mBAAmB,KAAK,IAAI,GAAG;AACzC;AACA,MAAM,GAAG,CAAC,SAAS,EAAE,mBAAmB,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACzD;AACA,MAAM;AACN;AACA,KAAK,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AAC9B;AACA,KAAK,MAAM;AACX;AACA,KAAK,OAAO,CAAC,IAAI,EAAE,kDAAkD,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7F;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,OAAO,IAAIwC,cAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AAC9C;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,EAAE,cAAc,GAAG;AACjC;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;AACzD,EAAE,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,GAAG,cAAc,CAAC;AAC9F;AACA,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B,EAAE,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACnC,EAAE,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACpC,EAAE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC7B,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACrE;AACA,GAAG,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC9C,GAAG,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;AAC5D,GAAG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AACjC,GAAG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5B,GAAG,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,KAAK,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;AAClH,GAAG,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,KAAK,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;AACrH;AACA,GAAG,KAAK,MAAM,CAAC,IAAI,KAAK,SAAS,GAAG,SAAS;AAC7C;AACA,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3D,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC;AACzE,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;AAC3E,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AACnC,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AACjC;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB;AACA,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE;AAC9B,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE;AACvC,GAAG,OAAO,CAAC,GAAG,EAAE,sBAAsB,EAAE;AACxC,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE;AACjC,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE;AAChC;AACA,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,YAAY,GAAG;AACtC;AACA,GAAG,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AACnC,GAAG,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AAC5C,GAAG,MAAM,eAAe,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AAC7C,GAAG,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AACtC,GAAG,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AACrC;AACA,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC;AACrB;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACtD;AACA,IAAI,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5B,IAAI,MAAM,aAAa,GAAG,cAAc,EAAE,CAAC,EAAE,CAAC;AAC9C,IAAI,MAAM,cAAc,GAAG,eAAe,EAAE,CAAC,EAAE,CAAC;AAChD,IAAI,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC;AAClC,IAAI,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AAChC;AACA,IAAI,KAAK,IAAI,KAAK,SAAS,GAAG,SAAS;AACvC;AACA,IAAI,KAAK,IAAI,CAAC,YAAY,GAAG;AAC7B;AACA,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;AACzB;AACA,KAAK;AACL;AACA,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,sBAAsB,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAChH;AACA,IAAI,KAAK,aAAa,GAAG;AACzB;AACA,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AACvD;AACA,MAAM,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;AACxC;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,OAAO,IAAIC,mBAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAChE;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,SAAS,GAAG;AAC7B;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1C;AACA,EAAE,KAAK,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,OAAO,IAAI,CAAC;AAChD;AACA,EAAE,OAAO,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,GAAG;AAC9E;AACA,GAAG,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AAC3E;AACA;AACA,GAAG,KAAK,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG;AACxC;AACA,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG;AAClC;AACA,KAAK,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,OAAO;AAC9B;AACA,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAClE;AACA,MAAM,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC1D;AACA,MAAM;AACN;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,GAAG;AACvB;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1C;AACA,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC;AAC3D;AACA,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC7C;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC3D;AACA,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACzE;AACA,GAAG;AACH;AACA,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS;AACpD,KAAK,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE;AAC5B,KAAK,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AAClD;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE;AACtB,GAAG,WAAW;AACd,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE;AAC9B,GAAG,eAAe;AAClB,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,OAAO,GAAG;AACjC;AACA,GAAG,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7B,GAAG,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AACjC,GAAG,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AACjC;AACA,GAAG,KAAK,QAAQ,KAAK,IAAI,GAAG;AAC5B;AACA;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,GAAG;AACrC;AACA,KAAK,KAAK,EAAE,IAAI,CAAC,aAAa,GAAG,OAAO;AACxC;AACA,KAAK,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AAC5C;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACzD;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9B;AACA,IAAI;AACJ;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC,gBAAgB,EAAE,SAAS,GAAG;AAC/B;AACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACzB,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA;AACA;AACA;AACA,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,SAAS,GAAG;AACnD;AACA,GAAG,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;AACtC;AACA,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC1C;AACA;AACA,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AAC/E;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AAC1D;AACA,GAAG,OAAO,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC;AAChE;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,KAAK,WAAW,GAAG;AACrB;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG;AACtC;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,MAAM,GAAG;AAC5F;AACA,IAAI,OAAO,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5E;AACA,IAAI,EAAE,EAAE,CAAC;AACT;AACA,GAAG;AACH;AACA,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;AACtC;AACA,GAAG,OAAO,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,oBAAoB,EAAE,SAAS,EAAE,CAAC;AAC5E;AACA,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,OAAO,GAAG;AACpC;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,OAAO,GAAG;AAClF;AACA,GAAG,IAAI,IAAI,CAAC;AACZ;AACA;AACA,GAAG,KAAK,OAAO,CAAC,MAAM,KAAK,IAAI,GAAG;AAClC;AACA,IAAI,IAAI,GAAG,IAAIC,UAAI,EAAE,CAAC;AACtB;AACA,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG;AACpC;AACA,IAAI,IAAI,GAAG,IAAIrR,WAAK,EAAE,CAAC;AACvB;AACA,IAAI,MAAM,KAAK,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG;AACtC;AACA,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AACxB;AACA,IAAI,MAAM;AACV;AACA,IAAI,IAAI,GAAG,IAAIgP,cAAQ,EAAE,CAAC;AAC1B;AACA,IAAI;AACJ;AACA,GAAG,KAAK,IAAI,KAAK,OAAO,EAAE,CAAC,EAAE,GAAG;AAChC;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACzD;AACA,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9B;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,IAAI,GAAG;AACvB;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AACzB;AACA,IAAI;AACJ;AACA,GAAG,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3C;AACA,GAAG,KAAK,OAAO,CAAC,UAAU,GAAG,8BAA8B,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACzF;AACA,GAAG,KAAK,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG;AACvC;AACA,IAAI,MAAM,MAAM,GAAG,IAAIL,aAAO,EAAE,CAAC;AACjC,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;AAChC;AACA,IAAI,MAAM;AACV;AACA,IAAI,KAAK,OAAO,CAAC,WAAW,KAAK,SAAS,GAAG;AAC7C;AACA,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;AACpD;AACA,KAAK;AACL;AACA,IAAI,KAAK,OAAO,CAAC,QAAQ,KAAK,SAAS,GAAG;AAC1C;AACA,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnD;AACA,KAAK;AACL;AACA,IAAI,KAAK,OAAO,CAAC,KAAK,KAAK,SAAS,GAAG;AACvC;AACA,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3C;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG;AAC5C;AACA,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACxC;AACA,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC;AACrD;AACA,GAAG,OAAO,IAAI,CAAC;AACf;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;AACrC;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,EAAE,UAAU,GAAG;AACzB;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;AAClD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;AACtB;AACA;AACA;AACA,EAAE,MAAM,KAAK,GAAG,IAAI3O,WAAK,EAAE,CAAC;AAC5B,EAAE,KAAK,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC7E;AACA,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5C;AACA,EAAE,KAAK,QAAQ,CAAC,UAAU,GAAG,8BAA8B,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC3F;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;AACvC;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACvD;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChE;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,GAAG;AACzD;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACtD;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAC5B;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG,MAAM,kBAAkB,GAAG,EAAE,IAAI,MAAM;AAC1C;AACA,IAAI,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1C;AACA,IAAI,MAAM,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,YAAY,GAAG;AACxD;AACA,KAAK,KAAK,GAAG,YAAYsQ,cAAQ,IAAI,GAAG,YAAYF,aAAO,GAAG;AAC9D;AACA,MAAM,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC5C;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,MAAM;AAC/B;AACA,KAAK,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AACtD;AACA,KAAK,KAAK,QAAQ,IAAI,IAAI,GAAG;AAC7B;AACA,MAAM,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAChD;AACA,MAAM;AACN;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI,OAAO,mBAAmB,CAAC;AAC/B;AACA,IAAI,CAAC;AACL;AACA,GAAG,MAAM,CAAC,YAAY,GAAG,kBAAkB,EAAE,KAAK,EAAE,CAAC;AACrD;AACA,GAAG,OAAO,KAAK,CAAC;AAChB;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG;AAChF;AACA,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvD,EAAE,MAAM,WAAW,GAAG,EAAE,CAAC;AACzB;AACA,EAAE,KAAK,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,OAAO,GAAG;AACpE;AACA,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,MAAM,GAAG;AACtC;AACA,IAAI,KAAK,MAAM,CAAC,qBAAqB,GAAG;AACxC;AACA,KAAK,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;AACjE;AACA,KAAK;AACL;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,MAAM;AACT;AACA,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;AAClC;AACA,GAAG;AACH;AACA,EAAE,IAAI,kBAAkB,CAAC;AACzB;AACA,EAAE,SAAS,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE;AACzC;AACA,GAAG,KAAK,eAAe,CAAC,OAAO;AAC/B;AACA,IAAI,kBAAkB,GAAGkB,yBAAmB,CAAC;AAC7C,IAAI,MAAM;AACV;AACA,GAAG,KAAK,eAAe,CAAC,QAAQ;AAChC;AACA,IAAI,kBAAkB,GAAGC,6BAAuB,CAAC;AACjD,IAAI,MAAM;AACV;AACA,GAAG,KAAK,eAAe,CAAC,QAAQ,CAAC;AACjC,GAAG,KAAK,eAAe,CAAC,KAAK;AAC7B;AACA,IAAI,kBAAkB,GAAGC,yBAAmB,CAAC;AAC7C,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA,IAAI,SAAS,cAAc,CAAC,QAAQ;AACpC;AACA,KAAK,KAAK,CAAC;AACX,MAAM,kBAAkB,GAAGF,yBAAmB,CAAC;AAC/C,MAAM,MAAM;AACZ,KAAK,KAAK,CAAC,CAAC;AACZ,KAAK,KAAK,CAAC,CAAC;AACZ,KAAK;AACL,MAAM,kBAAkB,GAAGE,yBAAmB,CAAC;AAC/C,MAAM,MAAM;AACZ;AACA,KAAK;AACL;AACA,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,GAAG,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,GAAG7B,uBAAiB,CAAC;AACzH;AACA;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,cAAc,EAAE,CAAC;AACnE;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC3D;AACA,GAAG,MAAM,KAAK,GAAG,IAAI,kBAAkB;AACvC,IAAI,WAAW,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE;AAC3D,IAAI,aAAa,CAAC,KAAK;AACvB,IAAI,WAAW;AACf,IAAI,aAAa;AACjB,IAAI,CAAC;AACL;AACA;AACA,GAAG,KAAK,OAAO,CAAC,aAAa,KAAK,aAAa,GAAG;AAClD;AACA,IAAI,IAAI,CAAC,kCAAkC,EAAE,KAAK,EAAE,CAAC;AACrD;AACA,IAAI;AACJ;AACA,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACxB;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA,CAAC,qBAAqB,EAAE,QAAQ,GAAG;AACnC;AACA,EAAE,IAAI,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnC;AACA,EAAE,KAAK,QAAQ,CAAC,UAAU,GAAG;AAC7B;AACA,GAAG,MAAM,KAAK,GAAG,2BAA2B,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC;AACxE,GAAG,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;AACzD;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AAC5D;AACA,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;AAC3C;AACA,IAAI;AACJ;AACA,GAAG,WAAW,GAAG,MAAM,CAAC;AACxB;AACA,GAAG;AACH;AACA,EAAE,OAAO,WAAW,CAAC;AACrB;AACA,EAAE;AACF;AACA,CAAC,kCAAkC,EAAE,KAAK,GAAG;AAC7C;AACA,EAAE,KAAK,CAAC,iBAAiB,GAAG,SAAS,uCAAuC,EAAE,MAAM,GAAG;AACvF;AACA;AACA;AACA;AACA;AACA,GAAG,MAAM,eAAe,GAAG,EAAE,IAAI,YAAY4B,6BAAuB,KAAK,oCAAoC,GAAG,0BAA0B,CAAC;AAC3I;AACA,GAAG,OAAO,IAAI,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;AAC1F;AACA,GAAG,CAAC;AACJ;AACA;AACA,EAAE,KAAK,CAAC,iBAAiB,CAAC,yCAAyC,GAAG,IAAI,CAAC;AAC3E;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG;AACzD;AACA,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;AAC5C;AACA,CAAC,MAAM,GAAG,GAAG,IAAIE,UAAI,EAAE,CAAC;AACxB;AACA,CAAC,KAAK,UAAU,CAAC,QAAQ,KAAK,SAAS,GAAG;AAC1C;AACA,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;AAChE;AACA,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC3B,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC3B;AACA;AACA;AACA,EAAE,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,GAAG;AAChD;AACA,GAAG,GAAG,CAAC,GAAG;AACV,IAAI,IAAI7C,aAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;AAC/C,IAAI,IAAIA,aAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;AAC/C,IAAI,CAAC;AACL;AACA,GAAG,KAAK,QAAQ,CAAC,UAAU,GAAG;AAC9B;AACA,IAAI,MAAM,QAAQ,GAAG,2BAA2B,EAAE,qBAAqB,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;AACpG,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;AACvC,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;AACvC;AACA,IAAI;AACJ;AACA,GAAG,MAAM;AACT;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,qEAAqE,EAAE,CAAC;AACzF;AACA,GAAG,OAAO;AACV;AACA,GAAG;AACH;AACA,EAAE,MAAM;AACR;AACA,EAAE,OAAO;AACT;AACA,EAAE;AACF;AACA,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AACtC;AACA,CAAC,KAAK,OAAO,KAAK,SAAS,GAAG;AAC9B;AACA,EAAE,MAAM,eAAe,GAAG,IAAIA,aAAO,EAAE,CAAC;AACxC,EAAE,MAAM,MAAM,GAAG,IAAIA,aAAO,EAAE,CAAC;AAC/B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACvD;AACA,GAAG,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC;AAC/B;AACA,GAAG,KAAK,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG;AACxC;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC9D,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC7B,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC7B;AACA;AACA;AACA,IAAI,KAAK,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,GAAG;AAClD;AACA;AACA,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3E,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3E,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC3E;AACA;AACA,KAAK,KAAK,QAAQ,CAAC,UAAU,GAAG;AAChC;AACA,MAAM,MAAM,QAAQ,GAAG,2BAA2B,EAAE,qBAAqB,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;AACtG,MAAM,MAAM,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;AACxC;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,KAAK,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;AACnC;AACA,KAAK,MAAM;AACX;AACA,KAAK,OAAO,CAAC,IAAI,EAAE,qEAAqE,EAAE,CAAC;AAC3F;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA,EAAE,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,CAAC;AACxC;AACA,EAAE;AACF;AACA,CAAC,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC;AAC5B;AACA,CAAC,MAAM,MAAM,GAAG,IAAI8C,YAAM,EAAE,CAAC;AAC7B;AACA,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAChC,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD;AACA,CAAC,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC;AAClC;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG;AAClE;AACA,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;AAC5C;AACA,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,CAAC,SAAS,uBAAuB,EAAE,aAAa,EAAE,aAAa,GAAG;AAClE;AACA,EAAE,OAAO,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE;AAC1D,IAAI,IAAI,EAAE,WAAW,QAAQ,GAAG;AAChC;AACA,IAAI,QAAQ,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACrD;AACA,IAAI,EAAE,CAAC;AACP;AACA,EAAE;AACF;AACA,CAAC,MAAM,MAAM,iBAAiB,IAAI,UAAU,GAAG;AAC/C;AACA,EAAE,MAAM,kBAAkB,GAAG,UAAU,EAAE,iBAAiB,EAAE,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;AAChG;AACA;AACA,EAAE,KAAK,kBAAkB,IAAI,QAAQ,CAAC,UAAU,GAAG,SAAS;AAC5D;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACjG;AACA,EAAE;AACF;AACA,CAAC,KAAK,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,QAAQ,CAAC,KAAK,GAAG;AAC/D;AACA,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,QAAQ,GAAG;AACxG;AACA,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACjC;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC,KAAKC,qBAAe,CAAC,iBAAiB,KAAKxD,0BAAoB,IAAI,SAAS,IAAI,UAAU,GAAG;AAC9F;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,kEAAkE,EAAEwD,qBAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAC3I;AACA,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAClD;AACA,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AACjD;AACA,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY;AACjD;AACA,EAAE,OAAO,YAAY,CAAC,OAAO,KAAK,SAAS;AAC3C,KAAK,eAAe,EAAE,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE;AAC9D,KAAK,QAAQ,CAAC;AACd;AACA,EAAE,EAAE,CAAC;AACL;AACA;;ACrmJA,MAAM,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC;AACA,MAAM,WAAW,SAASjG,YAAM,CAAC;AACjC;AACA,CAAC,WAAW,EAAE,OAAO,GAAG;AACxB;AACA,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,mBAAmB,GAAG;AAC7B,GAAG,QAAQ,EAAE,UAAU;AACvB,GAAG,MAAM,EAAE,QAAQ;AACnB,GAAG,KAAK,EAAE,OAAO;AACjB,GAAG,EAAE,EAAE,WAAW;AAClB,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,qBAAqB,GAAG;AAC/B,GAAG,QAAQ,EAAE,cAAc;AAC3B,GAAG,MAAM,EAAE,cAAc;AACzB,GAAG,KAAK,EAAE,cAAc;AACxB,GAAG,EAAE,EAAE,cAAc;AACrB,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,IAAI,GAAG;AACxB;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,gBAAgB,EAAE,MAAM,GAAG;AAC5B;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAC9B;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,WAAW,GAAG;AAC/B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG;AAC1C;AACA,EAAE,MAAM,MAAM,GAAG,IAAIuC,gBAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD;AACA,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;AAC1C,EAAE,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAChD,EAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACpD;AACA,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,MAAM;AAClC;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACzC;AACA,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,EAAE;AACF;AACA;AACA,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG;AAC3C;AACA,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAEO,oBAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AACtF;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,GAAGL,0BAAoB,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG;AAChI;AACA,EAAE,MAAM,UAAU,GAAG;AACrB,GAAG,YAAY,EAAE,YAAY,IAAI,IAAI,CAAC,mBAAmB;AACzD,GAAG,cAAc,EAAE,cAAc,IAAI,IAAI,CAAC,qBAAqB;AAC/D,GAAG,YAAY,EAAE,CAAC,EAAE,YAAY;AAChC,GAAG,gBAAgB,EAAE,gBAAgB;AACrC,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AACrF;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG;AACtC;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;AAC/C;AACA;AACA;AACA,EAAE,KAAK,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG;AAClC;AACA,GAAG,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;AAC/C;AACA,GAAG,KAAK,UAAU,CAAC,GAAG,KAAK,OAAO,GAAG;AACrC;AACA,IAAI,OAAO,UAAU,CAAC,OAAO,CAAC;AAC9B;AACA,IAAI,MAAM,KAAK,MAAM,CAAC,UAAU,KAAK,CAAC,GAAG;AACzC;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,IAAI,KAAK;AACnB;AACA,KAAK,iEAAiE;AACtE,KAAK,gDAAgD;AACrD;AACA,KAAK,CAAC;AACN;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC;AAC1C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC;AACA;AACA;AACA,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC7D,IAAI,IAAI,EAAE,EAAE,OAAO,MAAM;AACzB;AACA,IAAI,MAAM,GAAG,OAAO,CAAC;AACrB;AACA,IAAI,OAAO,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM;AAC/C;AACA,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACvD;AACA,KAAK,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;AAC1F;AACA;AACA;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI,EAAE;AACN,IAAI,IAAI,EAAE,EAAE,OAAO,MAAM,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACpE;AACA;AACA;AACA,EAAE,eAAe;AACjB,IAAI,KAAK,EAAE,MAAM,IAAI,EAAE;AACvB,IAAI,IAAI,EAAE,MAAM;AAChB;AACA,IAAI,KAAK,MAAM,IAAI,MAAM,GAAG;AAC5B;AACA,KAAK,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI,EAAE,CAAC;AACP;AACA;AACA,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE;AAC1B;AACA,GAAG,GAAG,EAAE,OAAO;AACf,GAAG,OAAO,EAAE,eAAe;AAC3B;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,eAAe,CAAC;AACzB;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,YAAY,GAAG;AACjC;AACA,EAAE,MAAM,QAAQ,GAAG,IAAIuC,oBAAc,EAAE,CAAC;AACxC;AACA,EAAE,KAAK,YAAY,CAAC,KAAK,GAAG;AAC5B;AACA,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAIT,qBAAe,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3E;AACA,GAAG;AACH;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC9D;AACA,GAAG,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AAC/C,GAAG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5B,GAAG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,GAAG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpC;AACA,GAAG,MAAM,SAAS,GAAG,IAAIA,qBAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5D;AACA,GAAG,KAAK,IAAI,KAAK,OAAO,GAAG;AAC3B;AACA,IAAI,IAAI,CAAC,uBAAuB,EAAE,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;AACvE;AACA,IAAI,SAAS,CAAC,UAAU,GAAG,EAAE,KAAK,YAAY,YAAY,OAAO,KAAK,CAAC;AACvE;AACA,IAAI;AACJ;AACA,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC5C;AACA,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,uBAAuB,EAAE,SAAS,EAAE,eAAe,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,eAAe,KAAKzB,oBAAc,GAAG,OAAO;AACnD;AACA,EAAE,MAAM,MAAM,GAAG,IAAIN,WAAK,EAAE,CAAC;AAC7B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;AACxD;AACA,GAAG,MAAM,CAAC,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACpE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;AACvD;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG;AACnC;AACA,EAAE,MAAM,MAAM,GAAG,IAAID,gBAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACrC,EAAE,MAAM,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC;AACzC,EAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACpD;AACA,EAAE,OAAO,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM;AAC7C;AACA,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAClD;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,OAAO,GAAG;AACX;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACtB;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,YAAY,GAAG;AAChB;AACA,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC;AACxD;AACA,EAAE,MAAM,KAAK,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC;AACpF,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC9B;AACA,EAAE,KAAK,KAAK,GAAG;AACf;AACA,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,CAAC;AAC5E;AACA,GAAG,MAAM;AACT;AACA,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAE,CAAC;AACjF,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,EAAE,CAAC;AACrF;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE;AACvD,IAAI,IAAI,EAAE,EAAE,SAAS,MAAM;AAC3B;AACA,IAAI,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACrC;AACA,IAAI,KAAK,EAAE,KAAK,GAAG;AACnB;AACA,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AACpD;AACA,KAAK;AACL;AACA,IAAI,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;AACtC;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,KAAK,qBAAqB;AAC1B,KAAK,SAAS;AACd,KAAK,EAAE;AACP,KAAK,cAAc;AACnB,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;AACjE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACnB;AACA,IAAI,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACvE;AACA,IAAI,EAAE,CAAC;AACP;AACA,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC;AAC7B;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAG;AAChC;AACA,EAAE,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM;AACzC;AACA,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG;AACpD;AACA,IAAI,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACtD;AACA,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;AACzB;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;AAC9E;AACA,IAAI,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG;AACtC;AACA,KAAK,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;AAC5B;AACA,KAAK,SAAS,OAAO,CAAC,IAAI;AAC1B;AACA,MAAM,KAAK,QAAQ;AACnB,OAAO,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1D,OAAO,MAAM;AACb;AACA,MAAM,KAAK,OAAO;AAClB,OAAO,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AACzD,OAAO,MAAM;AACb;AACA,MAAM;AACN,OAAO,OAAO,CAAC,KAAK,EAAE,0CAA0C,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;AACxF;AACA,MAAM;AACN;AACA,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AACnC;AACA,IAAI,MAAM;AACV;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AAC5C;AACA,KAAK,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAChD;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAChE,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AAC1C,GAAG,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC;AAChC,GAAG,OAAO,MAAM,CAAC;AACjB;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG;AAChC;AACA,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;AAClD,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;AACrC,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;AACrC;AACA,EAAE;AACF;AACA,CAAC,KAAK,GAAG;AACT;AACA,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;AACtF;AACA,EAAE;AACF;AACA,CAAC,OAAO,GAAG;AACX;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;AACtD;AACA,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;AACpC;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7B;AACA,EAAE,KAAK,IAAI,CAAC,eAAe,KAAK,EAAE,GAAG;AACrC;AACA,GAAG,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/C;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA,SAAS,WAAW,GAAG;AACvB;AACA,CAAC,IAAI,aAAa,CAAC;AACnB,CAAC,IAAI,cAAc,CAAC;AACpB;AACA,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG;AAC5B;AACA,EAAE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB;AACA,EAAE,SAAS,OAAO,CAAC,IAAI;AACvB;AACA,GAAG,KAAK,MAAM;AACd,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC1C,IAAI,cAAc,GAAG,IAAI,OAAO,EAAE,WAAW,OAAO,eAAe;AACnE;AACA,KAAK,aAAa,CAAC,cAAc,GAAG,WAAW,KAAK,GAAG;AACvD;AACA;AACA,MAAM,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;AAClC;AACA,MAAM,CAAC;AACP;AACA,KAAK,kBAAkB,EAAE,aAAa,EAAE,CAAC;AACzC;AACA,KAAK,EAAE,CAAC;AACR,IAAI,MAAM;AACV;AACA,GAAG,KAAK,QAAQ;AAChB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC1C,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,MAAM,MAAM;AACvC;AACA,KAAK,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAChC,KAAK,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACzC;AACA,KAAK,IAAI;AACT;AACA,MAAM,MAAM,QAAQ,GAAG,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC;AAC7F;AACA,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AAC/E;AACA,MAAM,KAAK,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACxE;AACA,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC;AAChF;AACA,MAAM,CAAC,QAAQ,KAAK,GAAG;AACvB;AACA,MAAM,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7B;AACA,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;AAClF;AACA,MAAM,SAAS;AACf;AACA,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AAC/B;AACA,MAAM;AACN;AACA,KAAK,EAAE,CAAC;AACR,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA,EAAE,CAAC;AACH;AACA,CAAC,SAAS,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,GAAG;AAC9D;AACA,EAAE,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;AAC/C,EAAE,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;AACnD;AACA,EAAE,IAAI,aAAa,CAAC;AACpB,EAAE,IAAI,cAAc,CAAC;AACrB;AACA,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC;AAC/D;AACA,EAAE,KAAK,YAAY,KAAK,KAAK,CAAC,eAAe,GAAG;AAChD;AACA,GAAG,aAAa,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACpC,GAAG,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;AACxF;AACA,GAAG,MAAM,KAAK,YAAY,KAAK,KAAK,CAAC,WAAW,GAAG;AACnD;AACA,GAAG,aAAa,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;AAC1C,GAAG,cAAc,GAAG,OAAO,CAAC,uBAAuB,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;AAC9F;AACA,GAAG,MAAM;AACT;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,8CAA8C,EAAE,CAAC;AACrE;AACA,GAAG;AACH;AACA,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC,GAAG,KAAK,CAAC,GAAG;AAC1D;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,sCAAsC,GAAG,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC;AAC1F;AACA,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AACnD;AACA;AACA,EAAE,MAAM,MAAM,aAAa,IAAI,YAAY,GAAG;AAC9C;AACA,GAAG,MAAM,aAAa,GAAG,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,CAAC;AACjE;AACA,GAAG,IAAI,SAAS,CAAC;AACjB,GAAG,IAAI,WAAW,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG,KAAK,UAAU,CAAC,YAAY,GAAG;AAClC;AACA,IAAI,WAAW,GAAG,YAAY,EAAE,aAAa,EAAE,CAAC;AAChD,IAAI,SAAS,GAAG,OAAO,CAAC,sBAAsB,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AAC7E;AACA,IAAI,MAAM;AACV;AACA,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AAClG;AACA,IAAI,KAAK,WAAW,KAAK,EAAE,CAAC,GAAG,SAAS;AACxC;AACA,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AACnE;AACA,IAAI;AACJ;AACA,GAAG,MAAM,eAAe,GAAG,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACrH;AACA,GAAG,KAAK,aAAa,KAAK,OAAO,GAAG;AACpC;AACA,IAAI,eAAe,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;AACnE;AACA,IAAI;AACJ;AACA,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC;AAC/C;AACA,GAAG;AACH;AACA;AACA,EAAE,KAAK,YAAY,KAAK,KAAK,CAAC,eAAe,GAAG;AAChD;AACA,GAAG,QAAQ,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACjE;AACA,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;AACjC;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,GAAG;AACvD;AACA,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;AAC7C,EAAE,MAAM,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;AAClC,EAAE,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;AACpC;AACA,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;AAC1C,EAAE,OAAO,CAAC,uBAAuB,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACpE,EAAE,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;AACjF,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACvC;AACA,EAAE;AACF;AACA,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,GAAG;AACpG;AACA,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;AACnD,EAAE,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;AAC/C,EAAE,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAC9C,EAAE,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC,iBAAiB,CAAC;AACjE,EAAE,MAAM,QAAQ,GAAG,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AAC5D;AACA,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;AAC1C,EAAE,OAAO,CAAC,iCAAiC,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACnG,EAAE,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC;AAClF,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,aAAa;AACtB,GAAG,KAAK,EAAE,KAAK;AACf,GAAG,QAAQ,EAAE,aAAa;AAC1B,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,aAAa,GAAG;AACnD;AACA,EAAE,SAAS,aAAa;AACxB;AACA,GAAG,KAAK,YAAY,EAAE,OAAO,KAAK,CAAC,UAAU,CAAC;AAC9C,GAAG,KAAK,SAAS,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC;AACxC,GAAG,KAAK,UAAU,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;AAC1C,GAAG,KAAK,UAAU,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;AAC1C,GAAG,KAAK,UAAU,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;AAC1C,GAAG,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC;AAC5C,GAAG,KAAK,WAAW,EAAE,OAAO,KAAK,CAAC,SAAS,CAAC;AAC5C;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;;AClmBA;AACA;AACA,IAAI,cAAc,GAAG,CAAC,WAAW;AAEjC;AACA;AACA;AACA,CAAC,IAAI,SAAS,GAAG,2kOAA2kO,CAAC;AAC7lO,CAAC,IAAI,SAAS,GAAG,uxXAAuxX,CAAC;AACzyX;AACA,CAAC,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/J,CAAC,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3N;AACA,CAAC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACtC,EAAE,OAAO;AACT,GAAG,SAAS,EAAE,KAAK;AACnB,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC;AACnE;AACA,CAAC,IAAI,QAAQ,CAAC;AACd;AACA,CAAC,IAAI,KAAK;AACV,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AAC3C,GAAG,IAAI,CAAC,SAAS,MAAM,EAAE;AACzB,GAAG,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC9B,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;AACxC,GAAG,CAAC,CAAC;AACL;AACA,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE;AACvB,EAAE,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9D,GAAG;AACH,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAClG,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvC,EAAE;AACF;AACA,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AAC3D,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,EAAE,IAAI,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAC/B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,EAAE,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5D,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvB,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACpD,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,EAAE;AAC1B,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE;AAChB,GAAG,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC;AACpD,GAAG;AACH,EAAE;AACF;AACA,CAAC,IAAI,OAAO,GAAG;AACf,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,UAAU,EAAE,yBAAyB;AACvC,EAAE,UAAU,EAAE,0BAA0B;AACxC,EAAE,WAAW,EAAE,yBAAyB;AACxC,EAAE,CAAC;AACH;AACA,CAAC,IAAI,QAAQ,GAAG;AAChB,EAAE,UAAU,EAAE,4BAA4B;AAC1C,EAAE,SAAS,EAAE,2BAA2B;AACxC,EAAE,OAAO,EAAE,6BAA6B;AACxC,EAAE,CAAC;AACH;AACA,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC;AAClB,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;AACnB;AACA,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE;AAC5B,EAAE,IAAI,MAAM,GAAG;AACf,GAAG,MAAM,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC;AAC1B,GAAG,OAAO,EAAE,CAAC;AACb,GAAG,QAAQ,EAAE,EAAE;AACf,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;AAC5C,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACzB;AACA,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;AAChC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD;AACA,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,EAAE,IAAI,MAAM;AACZ,GAAG,oEAAoE,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS;AAClH,GAAG,gGAAgG;AACnG,GAAG,iCAAiC;AACpC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;AAChD;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAC3D,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;AAClC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAClC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1D,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3C,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE;AAC5C,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI;AACJ,GAAG;AACH;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAChD,GAAG,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AACrC,GAAG,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;AACxB;AACA,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;AAC3B,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9D,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9H,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,SAAS,aAAa,CAAC,KAAK,EAAE;AAC/B,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;AACxB,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACzB,GAAG,IAAI;AACP,IAAI,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACnH,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9G,IAAI,CAAC,OAAO,KAAK,EAAE;AACnB,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE;AACF;AACA,CAAC,OAAO;AACR,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,UAAU,EAAE,SAAS,KAAK,EAAE;AAC9B,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,kBAAkB,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AACpE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvH,GAAG;AACH,EAAE,iBAAiB,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3D,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,yBAAyB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACnF,GAAG;AACH,EAAE,mBAAmB,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7D,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACrF,GAAG;AACH,EAAE,gBAAgB,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACxE,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5G,GAAG;AACH,EAAE,qBAAqB,EAAE,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AACrE,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,IAAI;AACJ;AACA,GAAG,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW;AAChC,IAAI,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7G,IAAI,OAAO,MAAM,CAAC;AAClB,IAAI,CAAC,CAAC;AACN,GAAG;AACH,EAAE,CAAC;AACH,CAAC,GAAG;;ACxKG,MAAM2D,WAAoB9H,SAAAA,OAAAA,CAAAA;IAE7BsD,IAAK,CAAA,EAAErB,GAAG,EAAEmB,MAAM,EAAER,UAAU,EAAEW,OAAO,EAAkB,EAAE;AACvD,QAAA,MAAMwE,eAAe,CAACC,IAAAA,GAAAA;YAClB,MAAM9H,IAAAA,GAAO8H,KAAKC,KAAK,CAAA;AACvB,YAAA,IAAID,KAAKE,UAAU,EAAEhI,KAAKgI,UAAU,GAAGF,KAAKE,UAAU,CAAA;YACtD9E,MAAOpD,CAAAA,OAAAA,CAAQC,YAAY,CAACC,IAAAA,CAAAA,CAAAA,CAAAA;AAChC,SAAA,CAAA;AACA,QAAA,IAAIiI,aAAa,IAAIC,UAAAA,CAAW,IAAI,CAACvE,OAAO,CAACF,cAAc,CAAA,CAAA;AAC3DwE,QAAAA,UAAAA,CAAWE,OAAO,CAAC,IAAI,CAACxE,OAAO,CAAC7C,IAAI,CAAA,CAAA;AACpCmH,QAAAA,UAAAA,CAAWG,eAAe,CAAC,IAAI,CAACzE,OAAO,CAACL,YAAY,CAAA,CAAA;AAEpD,QAAA,IAAI+E,cAAc,IAAIC,WAAAA,CAAY,IAAI,CAAC3E,OAAO,CAACF,cAAc,CAAA,CAAA;AAC7D4E,QAAAA,WAAAA,CAAYE,cAAc,CAAC,IAAI,CAAC5E,OAAO,CAACJ,SAAS,CAAA,CAAA;AACjD0E,QAAAA,UAAAA,CAAWO,cAAc,CAACH,WAAAA,CAAAA,CAAAA;AAE1BJ,QAAAA,UAAAA,CAAWQ,iBAAiB,CAACC,cAAAA,CAAAA,CAAAA;AAC7BT,QAAAA,UAAAA,CAAW7E,IAAI,CAACrB,GAAK8F,EAAAA,YAAAA,EAAcnF,UAAYW,EAAAA,OAAAA,CAAAA,CAAAA;AACnD,KAAA;AACJ,CAAA;AAnBauE,WAAAA,GAAAA,UAAAA,CAAAA;IADZhE,cAAe,CAAA;AAAC,QAAA,MAAA;AAAQ,QAAA,KAAA;AAAO,QAAA,KAAA;AAAM,KAAA,CAAA;AACzBgE,CAAAA,EAAAA,WAAAA,CAAAA;;ACPb;AACA;AACA;AACA;AACA;AACA;AACA;AA6BA;AACA;AACA,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,GAAG,WAAW,EAAE,GAAG,GAAG,UAAU,CAAC;AACzD;AACA,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAClJ;AACA,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzI;AACA,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtF;AACA,IAAI,IAAI,GAAG,UAAU,EAAE,EAAE,KAAK,EAAE;AAChC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACxB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACjC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACjC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAC9C,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzC,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1B,CAAC,CAAC;AACF,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD;AACA,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAe;AAChD;AACA,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;AAChC;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC;AACtD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC;AAClD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC;AAClD,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AACD;AACA;AACA;AACA,IAAI,IAAI,IAAI,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;AACtB;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACxB;AACA,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AACvB,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;AACjB,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AACzB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AAC7B,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,CAAC,EAAE;AACX;AACA,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B;AACA,QAAQ,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAChC;AACA,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AACvB;AACA,gBAAgB,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C;AACA,gBAAgB,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrC;AACA,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC;AAC/C;AACA,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AAChE;AACA,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAC3C,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,SAAS;AACT,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAChC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AACvB,gBAAgB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,CAAC,CAAC,CAAC;AACH;AACA,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;AACA,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;AAC3B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;AACG,IAAsC,IAAI,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9E;AACG,IAAsC,IAAI,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9E;AACA,IAAIe,KAAG,GAAG,UAAU,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACvC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACpB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AACF;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC;AACF;AACA,IAAI,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACpE,CAAC,CAAC;AACF;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACtD;AACA;AACA,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAG7B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;AACjC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACrB;AACA,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC;AAqBF;AACA,IAAI,EAAE,GAAG;AACT,IAAI,gBAAgB;AACpB,IAAI,oBAAoB;AACxB,IAAI,wBAAwB;AAC5B,IAAI,kBAAkB;AACtB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB;AACA,IAAI,aAAa;AACjB,IAAI,oBAAoB;AACxB,IAAI,sBAAsB;AAC1B,IAAI,6BAA6B;AACjC,IAAI,mBAAmB;AACvB,IAAI,kBAAkB;AACtB,IAAI,kBAAkB;AACtB;AACA,CAAC,CAAC;AAEF,IAAI,GAAG,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;AAClC,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AACjB,IAAI,IAAI,KAAK,CAAC,iBAAiB;AAC/B,QAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,EAAE;AACX,QAAQ,MAAM,CAAC,CAAC;AAChB,IAAI,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AACF;AACA,IAAI,KAAK,GAAG,UAAU,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1C;AACA,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,GAAwB,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAQ,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC;AACrB;AACA,IAAI,IAAI,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACpB;AACA,IAAI,IAAI,KAAK;AACb,QAAQ,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE;AAC5B,QAAQ,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;AAC5B;AACA,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;AACpB;AACA,YAAY,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAY,GAAG,GAAG,IAAI,CAAC;AACvB,SAAS;AACT,KAAK,CAAC;AACN;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACzG;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;AACtB,IAAI,GAAG;AACP,QAAQ,IAAI,CAAC,EAAE,EAAE;AACjB;AACA,YAAY,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC;AACA,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,YAAY,GAAG,IAAI,CAAC,CAAC;AACrB,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB;AACA,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrF,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;AAC5B,oBAAoB,IAAI,IAAI;AAC5B,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB;AACA,gBAAgB,IAAI,MAAM;AAC1B,oBAAoB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACjC;AACA,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD;AACA,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AACjE,gBAAgB,SAAS;AACzB,aAAa;AACb,iBAAiB,IAAI,IAAI,IAAI,CAAC;AAC9B,gBAAgB,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AACvD,iBAAiB,IAAI,IAAI,IAAI,CAAC,EAAE;AAChC;AACA,gBAAgB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACzF,gBAAgB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3D,gBAAgB,GAAG,IAAI,EAAE,CAAC;AAC1B;AACA,gBAAgB,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACrC;AACA,gBAAgB,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACrC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;AAChD;AACA,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,iBAAiB;AACjB,gBAAgB,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjC;AACA,gBAAgB,IAAI,GAAG,GAAGA,KAAG,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC5D;AACA,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG;AACzC,oBAAoB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AACxD;AACA,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAClC;AACA,oBAAoB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC;AACA,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE;AAChC,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACrC,qBAAqB;AACrB,yBAAyB;AACzB;AACA,wBAAwB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACzC,wBAAwB,IAAI,CAAC,IAAI,EAAE;AACnC,4BAA4B,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChF,6BAA6B,IAAI,CAAC,IAAI,EAAE;AACxC,4BAA4B,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AAChE,6BAA6B,IAAI,CAAC,IAAI,EAAE;AACxC,4BAA4B,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACnE,wBAAwB,OAAO,CAAC,EAAE;AAClC,4BAA4B,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACzC,qBAAqB;AACrB,iBAAiB;AACjB;AACA,gBAAgB,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxE;AACA,gBAAgB,GAAG,GAAGA,KAAG,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,gBAAgB,GAAG,GAAGA,KAAG,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAgB,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC,gBAAgB,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC,aAAa;AACb;AACA,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,YAAY,IAAI,GAAG,GAAG,IAAI,EAAE;AAC5B,gBAAgB,IAAI,IAAI;AACxB,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,gBAAgB,MAAM;AACtB,aAAa;AACb,SAAS;AACT;AACA;AACA,QAAQ,IAAI,MAAM;AAClB,YAAY,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AAC9B,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AACvD,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC;AACvB,QAAQ,QAAQ,IAAI,GAAG,GAAG,EAAE;AAC5B;AACA,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,YAAY,IAAI,GAAG,GAAG,IAAI,EAAE;AAC5B,gBAAgB,IAAI,IAAI;AACxB,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,IAAI,CAAC,CAAC;AAClB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,YAAY,IAAI,GAAG,GAAG,GAAG;AACzB,gBAAgB,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AAChC,iBAAiB,IAAI,GAAG,IAAI,GAAG,EAAE;AACjC,gBAAgB,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;AACtC,gBAAgB,MAAM;AACtB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACpC;AACA,gBAAgB,IAAI,GAAG,GAAG,GAAG,EAAE;AAC/B;AACA,oBAAoB,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,oBAAoB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,oBAAoB,GAAG,IAAI,CAAC,CAAC;AAC7B,iBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAClE,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAClC,gBAAgB,IAAI,IAAI,GAAG,CAAC,EAAE;AAC9B,oBAAoB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,oBAAoB,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AACpE,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,GAAG,IAAI,EAAE;AAChC,oBAAoB,IAAI,IAAI;AAC5B,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,gBAAgB,IAAI,MAAM;AAC1B,oBAAoB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACtC,gBAAgB,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AACnC,gBAAgB,IAAI,EAAE,GAAG,EAAE,EAAE;AAC7B,oBAAoB,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAClE,oBAAoB,IAAI,KAAK,GAAG,EAAE,GAAG,CAAC;AACtC,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;AAC1C,wBAAwB,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACnD,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE;AACrC,oBAAoB,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3C,aAAa;AACb,SAAS;AACT,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AACxD,QAAQ,IAAI,EAAE;AACd,YAAY,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AACzD,KAAK,QAAQ,CAAC,KAAK,EAAE;AACrB;AACA,IAAI,OAAO,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AAmOF;AACA,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAgYjC;AACA,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE;AAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACxE,QAAQ,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI;AACjC,QAAQ,GAAG,CAAC,CAAC,EAAE,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,YAAY,CAAC,GAAG,aAAa,CAAC,CAAC;AAC5F,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAmfF;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAY,EAAE,IAAI,CAAmB,CAAC,CAAC;AAC7H,CAAC;AAgID;AACA,IAAI,EAAE,GAAG,OAAO,WAAW,IAAI,WAAW,kBAAkB,IAAI,WAAW,EAAE,CAAC;AAC9E;AACA,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI;AACJ,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACpC,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,CAAC;AACD,OAAO,CAAC,EAAE;;AC1nDV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC7B;AACA,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG;AACpB;AACA,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG;AACpB;AACA,EAAE,OAAO,CAAC,CAAC;AACX;AACA,EAAE;AACF;AACA,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACb,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AACd,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;AAC5C;AACA,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG;AAC7C;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG;AACtB;AACA,GAAG,IAAI,GAAG,GAAG,CAAC;AACd;AACA,GAAG,MAAM;AACT;AACA,GAAG,GAAG,GAAG,GAAG,CAAC;AACb;AACA,GAAG;AACH;AACA,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;AACzC;AACA,EAAE;AACF;AACA,CAAC,OAAO,GAAG,CAAC;AACZ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC7C;AACA,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACd,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;AACjB,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AAClB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;AACd;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC;AAClB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5B,GAAG,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AACrC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9B,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;AACrB;AACA,GAAG;AACH;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;AACjB;AACA,EAAE;AACF;AACA,CAAC,OAAO,CAAC,CAAC;AACV;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AACxC;AACA,CAAC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClC,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC,MAAM,CAAC,GAAG,IAAIC,aAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrC;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;AACvB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;AACvB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;AACvB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AACtB;AACA,EAAE;AACF;AACA,CAAC,OAAO,CAAC,CAAC;AACV;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4BAA4B,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC1D;AACA,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AACpB,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;AAC9B,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;AACrB;AACA,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;AACjB;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;AAC9B,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACjC;AACA,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;AAChB;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;AAC9B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AAChC;AACA,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;AACrB;AACA,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACjC,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AAClC;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC;AAClB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7B,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5B,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3B;AACA,GAAG,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAClD,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,GAAG,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC;AACrB;AACA,GAAG;AACH;AACA,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;AACxB;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACjC;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AAClC;AACA,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;AACpB;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AAClC;AACA,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACf,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB;AACA,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG;AACjB;AACA,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACvC;AACA,IAAI;AACJ;AACA,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;AACvC,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG;AACrC;AACA,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;AACjF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5C;AACA,IAAI;AACJ;AACA,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG;AAClB;AACA,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC3D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AACvC;AACA,IAAI;AACJ;AACA,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACtB;AACA,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AAChB,GAAG,EAAE,GAAG,EAAE,CAAC;AACX,GAAG,EAAE,GAAG,CAAC,CAAC;AACV;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACX;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AAClC;AACA,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACvB;AACA,GAAG;AACH;AACA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;AACA,EAAE;AACF;AACA,CAAC,OAAO,IAAI,CAAC;AACb;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG;AAClD;AACA,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;AACf,CAAC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClC,CAAC,MAAM,KAAK,GAAG,4BAA4B,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACjE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;AACf;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;AACvC;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AAC/B,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACpB;AACA,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACf,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACf,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACf;AACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG;AAClC;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACzE;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AAClC;AACA,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC7E;AACA,GAAG;AACH;AACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG;AAC3C;AACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,IAAIA,aAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnC;AACA,EAAE;AACF;AACA,CAAC,OAAO,EAAE,CAAC;AACX;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG;AAC5B;AACA,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACb;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,GAAG,IAAI,CAAC,CAAC;AACX;AACA,EAAE;AACF;AACA,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AACf;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,KAAK,IAAI,CAAC,CAAC;AACb;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG;AACrC;AACA,EAAE,KAAK,IAAI,CAAC,CAAC;AACb;AACA,EAAE;AACF;AACA,CAAC,OAAO,GAAG,GAAG,KAAK,CAAC;AACpB;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4BAA4B,EAAE,KAAK,GAAG;AAC/C;AACA,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AAClB,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AAClB;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AAC3B,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAIhE,aAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AACxD,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB;AACA,EAAE;AACF;AACA,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;AACf;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG;AACjC;AACA,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AAC/B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG;AAClC;AACA,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAClF;AACA,GAAG;AACH;AACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACzC;AACA,EAAE;AACF;AACA,CAAC,OAAO,EAAE,CAAC;AACX;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG;AAChD;AACA,CAAC,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC,OAAO,4BAA4B,EAAE,KAAK,EAAE,CAAC;AAC9C;AACA;;AClaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,SAASiE,WAAK,CAAC;AAC/B;AACA,CAAC,WAAW;AACZ,EAAE,MAAM;AACR,EAAE,KAAK;AACP,EAAE,aAAa;AACf,EAAE,SAAS;AACX,EAAE,OAAO;AACT,GAAG;AACH;AACA,EAAE,KAAK,EAAE,CAAC;AACV;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACtD;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;AACpD;AACA;AACA,GAAG,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC;AACpC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,IAAID,aAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AAC/E;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,GAAG,IAAIhE,aAAO,EAAE,GAAG;AAC/C;AACA,EAAE,MAAM,KAAK,GAAG,cAAc,CAAC;AAC/B;AACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;AAC7G;AACA;AACA,EAAE,MAAM,MAAM,GAAGkE,gBAA2B,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;AAC/F;AACA,EAAE,KAAK,MAAM,CAAC,CAAC,KAAK,GAAG,GAAG;AAC1B;AACA;AACA,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;AACnC;AACA,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;AACnD;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,CAAC,EAAE,cAAc,GAAG,IAAIlE,aAAO,EAAE,GAAG;AACjD;AACA,EAAE,MAAM,OAAO,GAAG,cAAc,CAAC;AACjC;AACA,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAC5F,EAAE,MAAM,IAAI,GAAGmE,oBAA+B,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpG,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;AACxC;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC;AACZ,IAAI,WAAW,CAAC;AAChB,IAAI,UAAU,CAAC;AACf;AACA,MAAM,SAAS,SAASrH,YAAM,CAAC;AAC/B;AACA,CAAC,WAAW,EAAE,OAAO,GAAG;AACxB;AACA,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACnB;AACA,EAAE;AACF;AACA,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG;AAC1C;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,KAAKsC,iBAAW,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;AACtF;AACA,EAAE,MAAM,MAAM,GAAG,IAAIC,gBAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChD,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC/B,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;AAC1C,EAAE,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;AACjD,EAAE,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;AACrD;AACA,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,MAAM,GAAG;AACxC;AACA,GAAG,IAAI;AACP;AACA,IAAI,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AAC1C;AACA,IAAI,CAAC,QAAQ,CAAC,GAAG;AACjB;AACA,IAAI,KAAK,OAAO,GAAG;AACnB;AACA,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC;AAClB;AACA,KAAK,MAAM;AACX;AACA,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACxB;AACA,KAAK;AACL;AACA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AACnC;AACA,IAAI;AACJ;AACA,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,GAAG;AAC1B;AACA,EAAE,KAAK,iBAAiB,EAAE,SAAS,EAAE,GAAG;AACxC;AACA,GAAG,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AACnD;AACA,GAAG,MAAM;AACT;AACA,GAAG,MAAM,OAAO,GAAG,0BAA0B,EAAE,SAAS,EAAE,CAAC;AAC3D;AACA,GAAG,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG;AACxC;AACA,IAAI,MAAM,IAAI,KAAK,EAAE,kCAAkC,EAAE,CAAC;AAC1D;AACA,IAAI;AACJ;AACA,GAAG,KAAK,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG;AAC1C;AACA,IAAI,MAAM,IAAI,KAAK,EAAE,2DAA2D,GAAG,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;AAC9G;AACA,IAAI;AACJ;AACA,GAAG,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/C;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,MAAM,aAAa,GAAG,IAAI8B,mBAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAClI;AACA,EAAE,OAAO,IAAI,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3E;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA,MAAM,aAAa,CAAC;AACpB;AACA,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG;AACvC;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACrC,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB;AACA,EAAE;AACF;AACA,CAAC,KAAK,GAAG;AACT;AACA,EAAE,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxC;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACpC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;AAChD,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;AACpD,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1C,EAAE,MAAM,WAAW,GAAG,IAAI,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9D;AACA,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACvD;AACA,EAAE,OAAO,UAAU,CAAC;AACpB;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC,gBAAgB,GAAG;AACpB;AACA,EAAE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAClC;AACA,EAAE,KAAK,aAAa,IAAI,OAAO,GAAG;AAClC;AACA,GAAG,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;AAC1D;AACA,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,aAAa,GAAG;AACtD;AACA,IAAI,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC;AACpC,IAAI,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC;AAC5C;AACA,IAAI,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG;AACzC;AACA,KAAK,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE;AAChC,MAAM,OAAO,EAAE,EAAE;AACjB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,EAAE,CAAC;AACT;AACA,KAAK;AACL;AACA,IAAI,MAAM,kBAAkB,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACxE,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC;AACnE;AACA,IAAI,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG;AACvC;AACA,KAAK,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAC9B,MAAM,OAAO,EAAE,EAAE;AACjB,MAAM,QAAQ,EAAE,EAAE;AAClB,MAAM,EAAE,CAAC;AACT;AACA,KAAK;AACL;AACA,IAAI,MAAM,iBAAiB,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACzE,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;AACjE;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG;AACH;AACA,EAAE,OAAO,aAAa,CAAC;AACvB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,WAAW,GAAG;AACf;AACA,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG;AACpC;AACA,GAAG,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C;AACA,GAAG,MAAM,MAAM,MAAM,IAAI,UAAU,GAAG;AACtC;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC;AAC3C;AACA,IAAI,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC;AAClC;AACA,IAAI,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,QAAQ,CAAC;AACpE;AACA;AACA,IAAI,KAAK,SAAS,IAAI,SAAS,GAAG;AAClC;AACA,KAAK,MAAM,kBAAkB,GAAG,EAAE,SAAS,CAAC,OAAO,YAAY,WAAW,QAAQ,SAAS,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;AACrH,KAAK,MAAM,aAAa,GAAG,EAAE,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,QAAQ,SAAS,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;AACrG;AACA,KAAK,KAAK,kBAAkB,IAAI,aAAa,GAAG;AAChD;AACA,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;AAC5D;AACA,MAAM,KAAK,EAAE,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;AACxE;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,MAAM,MAAM,EAAE,IAAI,MAAM,GAAG;AAC7B;AACA,GAAG,MAAM,QAAQ,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC;AACjC;AACA,GAAG,KAAK,KAAK,EAAE,QAAQ,EAAE,KAAK,SAAS,GAAG,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC3E,QAAQ,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;AACxD;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE,SAAS,GAAG;AACzB;AACA,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AACpC,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,QAAQ,CAAC;AACpE,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;AACpF;AACA,EAAE,IAAI,IAAI,CAAC;AACX;AACA,EAAE,SAAS,SAAS;AACpB;AACA,GAAG,KAAK,KAAK;AACb;AACA,IAAI,IAAI,GAAG,WAAW,CAAC;AACvB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK,CAAC;AACd,GAAG,KAAK,MAAM;AACd;AACA,IAAI,IAAI,GAAG,YAAY,CAAC;AACxB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb;AACA,IAAI,IAAI,GAAG,WAAW,CAAC;AACvB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb;AACA,IAAI,IAAI,GAAG,YAAY,CAAC;AACxB,IAAI,MAAM;AACV;AACA,GAAG,KAAK,KAAK;AACb;AACA,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG;AACtD;AACA,KAAK,OAAO,CAAC,IAAI,EAAE,4CAA4C,EAAE,QAAQ,EAAE,CAAC;AAC5E;AACA,KAAK;AACL;AACA,IAAI,IAAI,GAAG,WAAW,CAAC;AACvB,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,yBAAyB,GAAG,SAAS,GAAG,qBAAqB,EAAE,CAAC;AAClF,IAAI,OAAO;AACX;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,OAAO,KAAK,QAAQ,GAAG;AACrC;AACA,GAAG,OAAO,OAAO,GAAG,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC;AAChD;AACA,GAAG,MAAM;AACT;AACA,GAAG,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3C,GAAG,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC9E;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,aAAa,EAAE,MAAM,GAAG;AACzB;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;AAC/B;AACA,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,GAAG;AACtC;AACA,GAAG,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAChD,GAAG,MAAM,MAAM,MAAM,IAAI,YAAY,GAAG;AACxC;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;AACxE,IAAI,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;AAClD;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC;AACpB;AACA,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG;AACrC;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC1D;AACA,EAAE,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;AAC9B;AACA,EAAE,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC;AACtC;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;AAC1C,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;AAC1C;AACA,EAAE,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/D,EAAE,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/D;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,KAAK,GAAG,MAAM,KAAK,CAAC,GAAGL,oBAAc,GAAGF,yBAAmB,CAAC;AACtE,EAAE,OAAO,CAAC,KAAK,GAAG,MAAM,KAAK,CAAC,GAAGE,oBAAc,GAAGF,yBAAmB,CAAC;AACtE;AACA,EAAE,KAAK,SAAS,IAAI,WAAW,GAAG;AAClC;AACA,GAAG,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5C;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AAClC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AAClC;AACA,GAAG;AACH;AACA,EAAE,KAAK,aAAa,IAAI,WAAW,GAAG;AACtC;AACA,GAAG,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;AAChD;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AAClC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AAClC;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA;AACA,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG;AACpC;AACA,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC9C;AACA,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC;AAC9D;AACA,EAAE,KAAK,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,SAAS,GAAG;AACnG;AACA,GAAG,QAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACzC;AACA,GAAG,KAAK,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG;AACjF;AACA,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;AAC5C;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC;AACd;AACA,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;AACpE;AACA,EAAE,KAAK,SAAS,KAAK,KAAK,GAAG;AAC7B;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;AACpD;AACA,GAAG,KAAK,MAAM,KAAK,IAAI,GAAG;AAC1B;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,mEAAmE,EAAE,WAAW,CAAC,gBAAgB,EAAE,CAAC;AACtH,IAAI,OAAO,GAAG,IAAIY,aAAO,EAAE,CAAC;AAC5B;AACA,IAAI,MAAM;AACV;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9C,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AACtC;AACA,IAAI;AACJ;AACA,GAAG,MAAM,KAAK,SAAS,KAAK,KAAK,GAAG;AACpC;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;AACpD;AACA,GAAG,KAAK,MAAM,KAAK,IAAI,GAAG;AAC1B;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,mEAAmE,EAAE,WAAW,CAAC,gBAAgB,EAAE,CAAC;AACtH,IAAI,OAAO,GAAG,IAAIA,aAAO,EAAE,CAAC;AAC5B;AACA,IAAI,MAAM;AACV;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9C,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AACtC;AACA,IAAI;AACJ;AACA,GAAG,MAAM,KAAK,SAAS,KAAK,KAAK,GAAG;AACpC;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,6EAA6E,EAAE,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAC/H,GAAG,OAAO,GAAG,IAAIA,aAAO,EAAE,CAAC;AAC3B;AACA,GAAG,MAAM;AACT;AACA,GAAG,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AACjD;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;AAC5C;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA;AACA,CAAC,cAAc,EAAE,UAAU,GAAG;AAC9B;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,GAAG;AACvC;AACA,GAAG,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClD;AACA,GAAG,MAAM,MAAM,MAAM,IAAI,aAAa,GAAG;AACzC;AACA,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC;AAC/E;AACA,IAAI,KAAK,QAAQ,KAAK,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC7E;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,WAAW,CAAC;AACrB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,GAAG;AAC3C;AACA,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;AAC7B,EAAE,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC;AACrC,EAAE,IAAI,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC;AACvC;AACA;AACA,EAAE,KAAK,OAAO,IAAI,KAAK,QAAQ,GAAG;AAClC;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB;AACA,GAAG;AACH;AACA;AACA,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC;AAC7C;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC1E;AACA,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE;AAC7B;AACA,GAAG,KAAK,OAAO;AACf,IAAI,QAAQ,GAAG,IAAI4C,uBAAiB,EAAE,CAAC;AACvC,IAAI,MAAM;AACV,GAAG,KAAK,SAAS;AACjB,IAAI,QAAQ,GAAG,IAAIC,yBAAmB,EAAE,CAAC;AACzC,IAAI,MAAM;AACV,GAAG;AACH,IAAI,OAAO,CAAC,IAAI,EAAE,+EAA+E,EAAE,IAAI,EAAE,CAAC;AAC1G,IAAI,QAAQ,GAAG,IAAID,uBAAiB,EAAE,CAAC;AACvC,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,GAAG;AACjD;AACA,EAAE,MAAM,UAAU,GAAG,EAAE,CAAC;AACxB;AACA,EAAE,KAAK,YAAY,CAAC,UAAU,GAAG;AACjC;AACA,GAAG,UAAU,CAAC,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AACxD;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,OAAO,GAAG;AAC9B;AACA,GAAG,UAAU,CAAC,KAAK,GAAG,IAAI9E,WAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;AAChG;AACA,GAAG,MAAM,KAAK,YAAY,CAAC,YAAY,MAAM,YAAY,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,GAAG;AAC7I;AACA;AACA,GAAG,UAAU,CAAC,KAAK,GAAG,IAAIA,WAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACrG;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,kBAAkB,GAAG;AACzC;AACA,GAAG,UAAU,CAAC,iBAAiB,GAAG,YAAY,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACxE;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,QAAQ,GAAG;AAC/B;AACA,GAAG,UAAU,CAAC,QAAQ,GAAG,IAAIA,WAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACpG;AACA,GAAG,MAAM,KAAK,YAAY,CAAC,aAAa,MAAM,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE,GAAG;AAChJ;AACA;AACA,GAAG,UAAU,CAAC,QAAQ,GAAG,IAAIA,WAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACzG;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,cAAc,GAAG;AACrC;AACA,GAAG,UAAU,CAAC,iBAAiB,GAAG,UAAU,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAClF;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,OAAO,GAAG;AAC9B;AACA,GAAG,UAAU,CAAC,OAAO,GAAG,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACjE;AACA,GAAG;AACH;AACA,EAAE,KAAK,UAAU,CAAC,OAAO,GAAG,GAAG,GAAG;AAClC;AACA,GAAG,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;AACjC;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,gBAAgB,GAAG;AACvC;AACA,GAAG,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACjE;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,SAAS,GAAG;AAChC;AACA,GAAG,UAAU,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;AACvD;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,CAAC,QAAQ,GAAG;AAC/B;AACA,GAAG,UAAU,CAAC,QAAQ,GAAG,IAAIA,WAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACpG;AACA,GAAG,MAAM,KAAK,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,OAAO,GAAG;AAC1F;AACA;AACA,GAAG,UAAU,CAAC,QAAQ,GAAG,IAAIA,WAAK,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACzG;AACA,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AAC7D;AACA,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;AACnC;AACA,GAAG,SAAS,IAAI;AAChB;AACA,IAAI,KAAK,MAAM;AACf,KAAK,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACnE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,iBAAiB;AAC1B,KAAK,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACjE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,cAAc,CAAC;AACxB,IAAI,KAAK,oBAAoB;AAC7B,KAAK,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC/D,KAAK,KAAK,UAAU,CAAC,GAAG,KAAK,SAAS,GAAG;AACzC;AACA,MAAM,UAAU,CAAC,GAAG,CAAC,UAAU,GAAGM,oBAAc,CAAC;AACjD;AACA,MAAM;AACN;AACA,KAAK,MAAM;AACX;AACA,IAAI,KAAK,mBAAmB;AAC5B,KAAK,UAAU,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC3E,KAAK,MAAM;AACX;AACA,IAAI,KAAK,eAAe;AACxB,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACvE,KAAK,KAAK,UAAU,CAAC,WAAW,KAAK,SAAS,GAAG;AACjD;AACA,MAAM,UAAU,CAAC,WAAW,CAAC,UAAU,GAAGA,oBAAc,CAAC;AACzD;AACA,MAAM;AACN;AACA,KAAK,MAAM;AACX;AACA,IAAI,KAAK,WAAW,CAAC;AACrB,IAAI,KAAK,qBAAqB;AAC9B,KAAK,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACrE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,iBAAiB;AAC1B,KAAK,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAClE,KAAK,KAAK,UAAU,CAAC,MAAM,KAAK,SAAS,GAAG;AAC5C;AACA,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,GAAG0E,sCAAgC,CAAC;AACnE,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG1E,oBAAc,CAAC;AACpD;AACA,MAAM;AACN;AACA,KAAK,MAAM;AACX;AACA,IAAI,KAAK,eAAe;AACxB,KAAK,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACvE,KAAK,KAAK,UAAU,CAAC,WAAW,KAAK,SAAS,GAAG;AACjD;AACA,MAAM,UAAU,CAAC,WAAW,CAAC,UAAU,GAAGA,oBAAc,CAAC;AACzD;AACA,MAAM;AACN;AACA,KAAK,MAAM;AACX;AACA,IAAI,KAAK,kBAAkB,CAAC;AAC5B,IAAI,KAAK,oBAAoB;AAC7B,KAAK,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACpE,KAAK,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;AACnC,KAAK,MAAM;AACX;AACA,IAAI,KAAK,cAAc,CAAC;AACxB,IAAI,KAAK,mBAAmB,CAAC;AAC7B,IAAI,KAAK,gBAAgB,CAAC;AAC1B,IAAI,KAAK,yBAAyB,CAAC;AACnC,IAAI;AACJ,KAAK,OAAO,CAAC,IAAI,EAAE,yEAAyE,EAAE,IAAI,EAAE,CAAC;AACrG,KAAK,MAAM;AACX;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,UAAU,CAAC;AACpB;AACA,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,GAAG;AAC9B;AACA;AACA,EAAE,KAAK,gBAAgB,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,cAAc,GAAG;AACrF;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,kGAAkG,EAAE,CAAC;AACtH,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/C;AACA,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;AAC9B;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,cAAc,GAAG;AAClB;AACA,EAAE,MAAM,SAAS,GAAG,EAAE,CAAC;AACvB,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,GAAG;AACvC;AACA,GAAG,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClD;AACA,GAAG,MAAM,MAAM,MAAM,IAAI,aAAa,GAAG;AACzC;AACA,IAAI,MAAM,YAAY,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC;AACjD;AACA,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;AAChE;AACA,IAAI,KAAK,YAAY,CAAC,QAAQ,KAAK,MAAM,GAAG;AAC5C;AACA,KAAK,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AACzE,KAAK,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC;AAC1B;AACA,KAAK,KAAK,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,gFAAgF,EAAE,CAAC;AAC9I,KAAK,QAAQ,CAAC,UAAU,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACzD;AACA,KAAK,SAAS,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;AACpC;AACA,KAAK,MAAM,KAAK,YAAY,CAAC,QAAQ,KAAK,YAAY,GAAG;AACzD;AACA,KAAK,MAAM,WAAW,GAAG;AACzB,MAAM,EAAE,EAAE,MAAM;AAChB,MAAM,CAAC;AACP;AACA,KAAK,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;AACrF,KAAK,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC;AAC7B;AACA,KAAK,KAAK,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,oFAAoF,EAAE,CAAC;AAClJ;AACA,KAAK,YAAY,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;AAC1C;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO;AACT;AACA,GAAG,SAAS,EAAE,SAAS;AACvB,GAAG,YAAY,EAAE,YAAY;AAC7B;AACA,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,GAAG;AAC/C;AACA,EAAE,MAAM,QAAQ,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AACrD;AACA,GAAG,MAAM,QAAQ,GAAG,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC9C;AACA,GAAG,KAAK,QAAQ,CAAC,QAAQ,KAAK,SAAS,GAAG,OAAO;AACjD;AACA,GAAG,MAAM,OAAO,GAAG;AACnB;AACA,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,aAAa,EAAE,IAAIG,aAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE;AACtE;AACA;AACA;AACA,IAAI,CAAC;AACL;AACA,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG;AAChC;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,IAAI,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC;AACA,IAAI;AACJ;AACA,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AAC5B;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO;AACT;AACA,GAAG,QAAQ,EAAE,QAAQ;AACrB,GAAG,KAAK,EAAE,EAAE;AACZ;AACA,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE,aAAa,EAAE,aAAa,GAAG;AACnD;AACA,EAAE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC7D;AACA,GAAG,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AAC7C;AACA,GAAG,MAAM,eAAe,GAAG,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACrD;AACA,GAAG,MAAM,cAAc,GAAG;AAC1B;AACA,IAAI,IAAI,EAAE,eAAe,CAAC,QAAQ;AAClC,IAAI,aAAa,EAAE,eAAe,CAAC,aAAa;AAChD,IAAI,EAAE,EAAE,eAAe,CAAC,EAAE;AAC1B,IAAI,WAAW,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;AAC9C;AACA,IAAI,CAAC;AACL;AACA,GAAG,KAAK,eAAe,CAAC,QAAQ,KAAK,mBAAmB,GAAG,OAAO;AAClE;AACA,GAAG,cAAc,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,KAAK,GAAG;AACtG;AACA,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;AAC5C;AACA,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACf;AACA,GAAG,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;AAC1C;AACA,GAAG;AACH;AACA,EAAE,OAAO,eAAe,CAAC;AACzB;AACA,EAAE;AACF;AACA;AACA,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG;AACnD;AACA,EAAE,UAAU,GAAG,IAAI3O,WAAK,EAAE,CAAC;AAC3B;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACrF;AACA,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB,EAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AACvC;AACA,GAAG,MAAM,SAAS,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC5C,GAAG,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACjD;AACA,GAAG,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;AACjE;AACA,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,UAAU,GAAG;AACtD;AACA,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;AACjD,IAAI,KAAK,MAAM,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AACpD;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,KAAK,KAAK,CAAC,MAAM,KAAK,IAAI,GAAG;AAChC;AACA,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AAC5B;AACA,IAAI;AACJ;AACA;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAClE;AACA,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC;AACA,EAAE,UAAU,CAAC,QAAQ,EAAE,WAAW,IAAI,GAAG;AACzC;AACA,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG;AACtC;AACA,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG;AACvB;AACA,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnE,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC7E;AACA,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;AACvE;AACA,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC,KAAK,EAAE,CAAC;AACnD;AACA;AACA,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG;AAC9E;AACA,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC;AACpD,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzC;AACA,GAAG;AACH;AACA,EAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC;AACA,EAAE;AACF;AACA;AACA,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG;AACpD;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7B,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3C;AACA,EAAE,MAAM,MAAM,MAAM,IAAI,UAAU,GAAG;AACrC;AACA,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,CAAC;AACjC,GAAG,MAAM,IAAI,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC;AACrC,GAAG,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;AAC/C;AACA,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjF;AACA,GAAG,KAAK,EAAE,KAAK,GAAG;AAClB;AACA,IAAI,SAAS,IAAI,CAAC,QAAQ;AAC1B;AACA,KAAK,KAAK,QAAQ;AAClB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC;AACjD,MAAM,MAAM;AACZ,KAAK,KAAK,OAAO;AACjB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;AAChD,MAAM,MAAM;AACZ,KAAK,KAAK,MAAM;AAChB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACzE,MAAM,MAAM;AACZ,KAAK,KAAK,YAAY;AACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AAC7D,MAAM,MAAM;AACZ,KAAK,KAAK,UAAU,CAAC;AACrB,KAAK,KAAK,MAAM;AAChB,MAAM,KAAK,GAAG,IAAIqR,UAAI,EAAE,CAAC;AACzB,MAAM,MAAM;AACZ,KAAK,KAAK,MAAM,CAAC;AACjB,KAAK;AACL,MAAM,KAAK,GAAG,IAAIrR,WAAK,EAAE,CAAC;AAC1B,MAAM,MAAM;AACZ;AACA,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAGyQ,qBAAe,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AACxF,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;AAChD;AACA,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;AAClB;AACA,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7B;AACA,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,GAAG;AACrD;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC;AAClB;AACA,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,MAAM,GAAG;AACrD;AACA,GAAG,MAAM,MAAM,EAAE,IAAI,SAAS,GAAG;AACjC;AACA,IAAI,MAAM,QAAQ,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC;AACrC;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,OAAO,EAAE,CAAC,GAAG;AACvD;AACA,KAAK,KAAK,OAAO,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,GAAG;AACrC;AACA,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AAC3B,MAAM,IAAI,GAAG,IAAIY,UAAI,EAAE,CAAC;AACxB;AACA,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;AACrD;AACA;AACA;AACA,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,GAAGZ,qBAAe,CAAC,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACvE,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;AACxC,MAAM,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACnB;AACA,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AACjC;AACA;AACA;AACA,MAAM,KAAK,OAAO,KAAK,IAAI,GAAG;AAC9B;AACA,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AAC3B;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE,aAAa,GAAG;AAC/B;AACA,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,eAAe,CAAC;AACtB;AACA,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AACrD;AACA,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC1D;AACA,GAAG,KAAK,IAAI,KAAK,SAAS,GAAG;AAC7B;AACA,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,KAAK,eAAe,KAAK,SAAS,GAAG;AACvC;AACA,GAAG,KAAK,GAAG,IAAIzB,cAAQ,EAAE,CAAC;AAC1B;AACA,GAAG,MAAM;AACT;AACA,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC;AAChB,GAAG,KAAK,eAAe,CAAC,oBAAoB,KAAK,SAAS,IAAI,eAAe,CAAC,oBAAoB,CAAC,KAAK,KAAK,CAAC,GAAG;AACjH;AACA,IAAI,IAAI,GAAG,CAAC,CAAC;AACb;AACA,IAAI;AACJ;AACA,GAAG,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC7B,GAAG,KAAK,eAAe,CAAC,SAAS,KAAK,SAAS,GAAG;AAClD;AACA,IAAI,iBAAiB,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/D;AACA,IAAI;AACJ;AACA,GAAG,IAAI,gBAAgB,GAAG,IAAI,CAAC;AAC/B,GAAG,KAAK,eAAe,CAAC,QAAQ,KAAK,SAAS,GAAG;AACjD;AACA,IAAI,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7D;AACA,IAAI;AACJ;AACA;AACA,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AACjC,GAAG,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;AACnC;AACA,GAAG,KAAK,eAAe,CAAC,WAAW,KAAK,SAAS,IAAI,eAAe,CAAC,YAAY,KAAK,SAAS,GAAG;AAClG;AACA,IAAI,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;AAC9C,IAAI,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC;AAChD;AACA,IAAI;AACJ;AACA,GAAG,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AACjC;AACA,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAChB,GAAG,KAAK,eAAe,CAAC,WAAW,KAAK,SAAS,GAAG;AACpD;AACA,IAAI,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5C;AACA,IAAI;AACJ;AACA,GAAG,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;AAC9F;AACA,GAAG,SAAS,IAAI;AAChB;AACA,IAAI,KAAK,CAAC;AACV,KAAK,KAAK,GAAG,IAAIgC,uBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AACvF,KAAK,KAAK,WAAW,KAAK,IAAI,GAAG,KAAK,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;AACrE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,CAAC;AACV,KAAK,KAAK,GAAG,IAAIE,wBAAkB,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AAC7H,KAAK,MAAM;AACX;AACA,IAAI;AACJ,KAAK,OAAO,CAAC,IAAI,EAAE,uCAAuC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAC1E,KAAK,KAAK,GAAG,IAAIlC,cAAQ,EAAE,CAAC;AAC5B,KAAK,MAAM;AACX;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA;AACA,CAAC,WAAW,EAAE,aAAa,GAAG;AAC9B;AACA,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,cAAc,CAAC;AACrB;AACA,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AACrD;AACA,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC1D;AACA,GAAG,KAAK,IAAI,KAAK,SAAS,GAAG;AAC7B;AACA,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,KAAK,cAAc,KAAK,SAAS,GAAG;AACtC;AACA,GAAG,KAAK,GAAG,IAAIA,cAAQ,EAAE,CAAC;AAC1B;AACA,GAAG,MAAM;AACT;AACA,GAAG,IAAI,IAAI,CAAC;AACZ;AACA;AACA,GAAG,KAAK,cAAc,CAAC,SAAS,KAAK,SAAS,GAAG;AACjD;AACA,IAAI,IAAI,GAAG,CAAC,CAAC;AACb;AACA,IAAI,MAAM;AACV;AACA,IAAI,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1C;AACA,IAAI;AACJ;AACA,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC;AACxB;AACA,GAAG,KAAK,cAAc,CAAC,KAAK,KAAK,SAAS,GAAG;AAC7C;AACA,IAAI,KAAK,GAAG,IAAId,WAAK,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;AACtF;AACA,IAAI;AACJ;AACA,GAAG,IAAI,SAAS,GAAG,EAAE,cAAc,CAAC,SAAS,KAAK,SAAS,KAAK,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC;AACzG;AACA;AACA,GAAG,KAAK,cAAc,CAAC,iBAAiB,KAAK,SAAS,IAAI,cAAc,CAAC,iBAAiB,CAAC,KAAK,KAAK,CAAC,GAAG;AACzG;AACA,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB;AACA,IAAI;AACJ;AACA,GAAG,IAAI,QAAQ,GAAG,CAAC,CAAC;AACpB,GAAG,KAAK,cAAc,CAAC,iBAAiB,KAAK,SAAS,GAAG;AACzD;AACA,IAAI,KAAK,cAAc,CAAC,oBAAoB,KAAK,SAAS,IAAI,cAAc,CAAC,oBAAoB,CAAC,KAAK,KAAK,CAAC,GAAG;AAChH;AACA,KAAK,QAAQ,GAAG,CAAC,CAAC;AAClB;AACA,KAAK,MAAM;AACX;AACA,KAAK,QAAQ,GAAG,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACvD;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC;AACnB;AACA,GAAG,SAAS,IAAI;AAChB;AACA,IAAI,KAAK,CAAC;AACV,KAAK,KAAK,GAAG,IAAIG,gBAAU,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACjE,KAAK,MAAM;AACX;AACA,IAAI,KAAK,CAAC;AACV,KAAK,KAAK,GAAG,IAAID,sBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACtD,KAAK,MAAM;AACX;AACA,IAAI,KAAK,CAAC;AACV,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B;AACA,KAAK,KAAK,cAAc,CAAC,UAAU,KAAK,SAAS,GAAG;AACpD;AACA,MAAM,KAAK,GAAG6C,eAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACpE;AACA,MAAM;AACN;AACA,KAAK,IAAI,QAAQ,GAAG,CAAC,CAAC;AACtB,KAAK,KAAK,cAAc,CAAC,UAAU,KAAK,SAAS,GAAG;AACpD;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAGA,eAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzC;AACA,MAAM;AACN;AACA,KAAK,KAAK,GAAG,IAAI3C,eAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACjF,KAAK,MAAM;AACX;AACA,IAAI;AACJ,KAAK,OAAO,CAAC,IAAI,EAAE,sCAAsC,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,GAAG,+BAA+B,EAAE,CAAC;AAC/H,KAAK,KAAK,GAAG,IAAID,gBAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAChD,KAAK,MAAM;AACX;AACA,IAAI;AACJ;AACA,GAAG,KAAK,cAAc,CAAC,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG;AAC7F;AACA,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC5B;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAG;AACvD;AACA,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC;AACtB,EAAE,MAAM,SAAS,GAAG,EAAE,CAAC;AACvB;AACA;AACA,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AACrD;AACA,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG;AACtC;AACA,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC3C;AACA,IAAI;AACJ;AACA,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG;AACtC;AACA,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAClD;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG;AAC9B;AACA,GAAG,QAAQ,GAAG,SAAS,CAAC;AACxB;AACA,GAAG,MAAM,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG;AACrC;AACA,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;AAC7B;AACA,GAAG,MAAM;AACT;AACA,GAAG,QAAQ,GAAG,IAAI2E,uBAAiB,EAAE;AACrC,IAAI,IAAI,EAAEtH,YAAM,CAAC,qBAAqB;AACtC,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,EAAE,CAAC;AACP,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9B;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,IAAI,QAAQ,CAAC,UAAU,GAAG;AACxC;AACA,GAAG,SAAS,CAAC,OAAO,EAAE,WAAW,QAAQ,GAAG;AAC5C;AACA,IAAI,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG;AACH;AACA,EAAE,KAAK,QAAQ,CAAC,YAAY,GAAG;AAC/B;AACA,GAAG,KAAK,GAAG,IAAIiF,iBAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACjD,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC;AAChC;AACA,GAAG,MAAM;AACT;AACA,GAAG,KAAK,GAAG,IAAIjG,UAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC1C;AACA,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,GAAG;AAC3C;AACA,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,EAAE,KAAK,GAAG;AAC1E;AACA,GAAG,KAAK,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACxE;AACA,GAAG,OAAO,GAAG,CAAC;AACd;AACA,GAAG,EAAE,IAAI,EAAE,CAAC;AACZ;AACA;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI6F,uBAAiB,EAAE;AAC1C,GAAG,IAAI,EAAE7E,YAAM,CAAC,qBAAqB;AACrC,GAAG,KAAK,EAAE,QAAQ;AAClB,GAAG,SAAS,EAAE,CAAC;AACf,GAAG,EAAE,CAAC;AACN,EAAE,OAAO,IAAImF,UAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACxC;AACA,EAAE;AACF;AACA;AACA,CAAC,gBAAgB,EAAE,KAAK,EAAE,SAAS,GAAG;AACtC;AACA,EAAE,MAAM,aAAa,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,KAAK,aAAa,IAAI,SAAS,GAAG,aAAa,CAAC,WAAW,GAAG,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACxG;AACA,EAAE,KAAK,eAAe,IAAI,SAAS,GAAG,aAAa,CAAC,UAAU,GAAG,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAChH,OAAO,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC;AACxC;AACA,EAAE,KAAK,iBAAiB,IAAI,SAAS,GAAG,aAAa,CAAC,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC;AACpG;AACA,EAAE,KAAK,aAAa,IAAI,SAAS,GAAG,aAAa,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5F,EAAE,KAAK,cAAc,IAAI,SAAS,GAAG,aAAa,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3F,EAAE,KAAK,cAAc,IAAI,SAAS,GAAG,aAAa,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;AAC/F;AACA,EAAE,KAAK,aAAa,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AACtF;AACA,EAAE,KAAK,eAAe,IAAI,SAAS,GAAG,aAAa,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AAClG,EAAE,KAAK,cAAc,IAAI,SAAS,GAAG,aAAa,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;AAC/F;AACA,EAAE,KAAK,gBAAgB,IAAI,SAAS,GAAG,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC;AACrG,EAAE,KAAK,eAAe,IAAI,SAAS,GAAG,aAAa,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AAClG;AACA,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,aAAa,CAAC;AAC/C;AACA,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE,KAAK,EAAE,SAAS,GAAG;AACzC;AACA,EAAE,KAAK,gBAAgB,IAAI,SAAS,GAAG;AACvC;AACA,GAAG,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC;AACzD;AACA,GAAG,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AACxC;AACA,IAAI,KAAK,KAAK,CAAC,YAAY,KAAK,gBAAgB,GAAG;AACnD;AACA,KAAK,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC5D;AACA,KAAK,KAAK,iBAAiB,IAAI,YAAY,GAAG;AAC9C;AACA,MAAM,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC;AACrD;AACA;AACA,MAAM,KAAK,KAAK,CAAC,MAAM,KAAK,SAAS,GAAG;AACxC;AACA,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AAC9C,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACtC;AACA,OAAO,MAAM;AACb;AACA,OAAO,KAAK,CAAC,MAAM,EAAE,IAAIjC,aAAO,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC;AACtD;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,GAAG;AAClD;AACA,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7C;AACA,EAAE,MAAM,MAAM,EAAE,IAAI,SAAS,GAAG;AAChC;AACA,GAAG,MAAM,QAAQ,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC;AACpC;AACA,GAAG,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC;AACtE;AACA,GAAG,OAAO,CAAC,OAAO,EAAE,WAAW,MAAM,GAAG;AACxC;AACA,IAAI,KAAK,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG;AACxC;AACA,KAAK,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;AAC7B,KAAK,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;AACvD;AACA,KAAK,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,aAAa,GAAG;AAClE;AACA,MAAM,KAAK,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG;AAC9C;AACA,OAAO,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC;AACtD;AACA,OAAO,KAAK,CAAC,IAAI,EAAE,IAAIuC,cAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC;AACtF;AACA,OAAO;AACP;AACA,MAAM,EAAE,CAAC;AACT;AACA,KAAK;AACL;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,cAAc,GAAG;AAClB;AACA,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,GAAG;AACnC;AACA,GAAG,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7C;AACA,GAAG,MAAM,MAAM,MAAM,IAAI,YAAY,GAAG;AACxC;AACA,IAAI,KAAK,YAAY,EAAE,MAAM,EAAE,CAAC,QAAQ,KAAK,UAAU,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC,WAAW,GAAG,CAAC,GAAG;AACpG;AACA,KAAK,MAAM,SAAS,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC;AACvD;AACA,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG;AACvC;AACA,MAAM,SAAS,CAAC,OAAO,EAAE,WAAW,QAAQ,GAAG;AAC/C;AACA,OAAO,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAIxC,aAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACpF;AACA,OAAO,EAAE,CAAC;AACV;AACA,MAAM,MAAM;AACZ;AACA,MAAM,YAAY,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,IAAIA,aAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACrF;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,YAAY,CAAC;AACtB;AACA,EAAE;AACF;AACA,CAAC,sBAAsB,GAAG;AAC1B;AACA,EAAE,KAAK,gBAAgB,IAAI,OAAO,GAAG;AACrC;AACA,GAAG,KAAK,cAAc,IAAI,OAAO,CAAC,cAAc,GAAG;AACnD;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC;AACnE,IAAI,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AAChC,IAAI,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AAChC,IAAI,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,CAAC;AAChC;AACA,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AACzC;AACA,KAAK,MAAM,KAAK,GAAG,IAAIT,WAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;AAC9D,KAAK,UAAU,CAAC,GAAG,EAAE,IAAIiF,kBAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACpD;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG;AACtD;AACA,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC;AACvF;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA,MAAM,cAAc,CAAC;AACrB;AACA,CAAC,WAAW,GAAG;AACf;AACA,EAAE,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACvC;AACA,EAAE;AACF;AACA;AACA,CAAC,KAAK,EAAE,SAAS,GAAG;AACpB;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO,GAAG;AACvC;AACA,GAAG,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7C;AACA,GAAG,MAAM,MAAM,MAAM,IAAI,QAAQ,GAAG;AACpC;AACA,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;AAChE,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC;AACnF;AACA,IAAI,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC;AAC/C;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,KAAK,IAAI,CAAC,uBAAuB,KAAK,IAAI,GAAG;AAC/C;AACA,GAAG,OAAO,CAAC,IAAI,EAAE,qHAAqH,EAAE,CAAC;AACzI;AACA,GAAG;AACH;AACA,EAAE,OAAO,WAAW,CAAC;AACrB;AACA,EAAE;AACF;AACA;AACA,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,GAAG;AACpD;AACA,EAAE,SAAS,OAAO,CAAC,QAAQ;AAC3B;AACA,GAAG,KAAK,MAAM;AACd,IAAI,OAAO,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAEvE;AACA,GAAG,KAAK,YAAY;AACpB,IAAI,OAAO,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC;AAE9C;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,GAAG;AACxD;AACA,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AACxC,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,MAAM,GAAG;AACpE;AACA,GAAG,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;AAC7C;AACA,GAAG,EAAE,CAAC;AACN;AACA;AACA,EAAE,KAAK,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO;AACxC;AACA,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,QAAQ,EAAE,KAAK,GAAG;AAC/E;AACA,GAAG,KAAK,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,SAAS,GAAG,QAAQ,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AAC/E;AACA,GAAG,OAAO,QAAQ,CAAC;AACnB;AACA,GAAG,EAAE,IAAI,EAAE,CAAC;AACZ;AACA,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,GAAG;AACrD;AACA,GAAG,KAAK,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,SAAS,GAAG;AAC3D;AACA,IAAI,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5D;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA;AACA;AACA,EAAE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC;AACpC;AACA,EAAE,MAAM,aAAa,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,KAAK,eAAe,IAAI,SAAS,GAAG,aAAa,CAAC,UAAU,GAAG,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAChH,EAAE,KAAK,aAAa,IAAI,SAAS,GAAG,aAAa,CAAC,WAAW,GAAG,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACxG;AACA,EAAE,KAAK,sBAAsB,IAAI,SAAS,GAAG,aAAa,CAAC,WAAW,GAAG,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC9G,EAAE,KAAK,mBAAmB,IAAI,SAAS,GAAG,aAAa,CAAC,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACrG,EAAE,KAAK,kBAAkB,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAChG;AACA,EAAE,MAAM,SAAS,GAAG,iBAAiB,EAAE,aAAa,EAAE,CAAC;AACvD;AACA,EAAE,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACxE;AACA,EAAE;AACF;AACA;AACA,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,GAAG;AAC9D;AACA,EAAE,MAAM,GAAG,GAAG,IAAIzC,oBAAc,EAAE,CAAC;AACnC,EAAE,KAAK,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;AACtD;AACA,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACzD,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC7C;AACA,EAAE,MAAM,iBAAiB,GAAG,IAAI0C,4BAAsB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AAC5E;AACA,EAAE,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;AACjD;AACA,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AACpD;AACA,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG;AACnC;AACA,GAAG,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,IAAIA,4BAAsB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AAChF;AACA,GAAG;AACH;AACA,EAAE,KAAK,QAAQ,GAAG;AAClB;AACA,GAAG,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,IAAIC,2BAAqB,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3F;AACA,GAAG,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,IAAID,4BAAsB,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;AAC5F;AACA;AACA,GAAG,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG;AACnC;AACA,GAAG,MAAM,YAAY,GAAG,IAAIE,aAAO,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC;AACtE;AACA,GAAG,MAAM,eAAe,GAAG,IAAIF,4BAAsB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AAC3E,GAAG,eAAe,CAAC,iBAAiB,EAAE,YAAY,EAAE,CAAC;AACrD;AACA,GAAG,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AACjD;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,QAAQ,EAAE,CAAC,GAAG;AAChD;AACA,GAAG,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5C;AACA,GAAG,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,IAAIA,4BAAsB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC/E;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,GAAG;AACxE;AACA;AACA,GAAG,IAAI,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;AACtD,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC;AACtB;AACA,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,YAAY,EAAE,CAAC,GAAG;AAC/D;AACA,IAAI,KAAK,YAAY,KAAK,iBAAiB,GAAG;AAC9C;AACA,KAAK,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,UAAU,EAAE,iBAAiB,EAAE,CAAC;AACnE;AACA,KAAK,iBAAiB,GAAG,YAAY,CAAC;AACtC,KAAK,UAAU,GAAG,CAAC,CAAC;AACpB;AACA,KAAK;AACL;AACA,IAAI,EAAE,CAAC;AACP;AACA;AACA,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG;AAChC;AACA,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAC1D,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AACxD;AACA,IAAI,KAAK,SAAS,KAAK,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG;AACtD;AACA,KAAK,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,EAAE,CAAC;AAC5F;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG;AAClC;AACA,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;AAChF;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACnE;AACA,EAAE,OAAO,GAAG,CAAC;AACb;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,GAAG;AACnC;AACA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC;AACrB;AACA,EAAE,OAAO,CAAC,eAAe,GAAG,EAAE,OAAO,CAAC,QAAQ,KAAK,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACzF,EAAE,OAAO,CAAC,aAAa,GAAG,EAAE,OAAO,CAAC,kBAAkB,KAAK,SAAS,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3G;AACA,EAAE,KAAK,OAAO,CAAC,iBAAiB,GAAG;AACnC;AACA,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;AAC5E;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,CAAC,oBAAoB,GAAG;AACtC;AACA,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAC;AACrF;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,CAAC,kBAAkB,GAAG;AACpC;AACA,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;AACzE;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,CAAC,cAAc,GAAG;AAChC;AACA,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;AACnB;AACA,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,GAAG,QAAQ,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG;AACzC;AACA,IAAI,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG;AAC1C;AACA,KAAK,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACrE;AACA,KAAK;AACL;AACA,IAAI,CAAC,GAAG,CAAC;AACT;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,KAAK,QAAQ,KAAK,IAAI,GAAG;AAC3B;AACA,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B;AACA,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,OAAO,EAAE,CAAC,GAAG;AACtD;AACA;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,CAAC,GAAG;AACnD;AACA,KAAK,KAAK,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACzF;AACA,KAAK,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE;AACxC;AACA,MAAM,EAAE,EAAE,CAAC;AACX,MAAM,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE;AAClC;AACA,MAAM,EAAE,CAAC;AACT;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG;AACH;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA,CAAC,UAAU,EAAE,OAAO,GAAG;AACvB;AACA,EAAE,MAAM,OAAO,GAAG;AAClB,GAAG,MAAM,EAAE,EAAE;AACb,GAAG,MAAM,EAAE,EAAE;AACb,GAAG,MAAM,EAAE,EAAE;AACb,GAAG,GAAG,EAAE,EAAE;AACV,GAAG,aAAa,EAAE,EAAE;AACpB,GAAG,aAAa,EAAE,EAAE;AACpB,GAAG,cAAc,EAAE,EAAE;AACrB,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,YAAY,GAAG,CAAC,CAAC;AACvB,EAAE,IAAI,UAAU,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,uBAAuB,GAAG,KAAK,CAAC;AACtC;AACA;AACA,EAAE,IAAI,mBAAmB,GAAG,EAAE,CAAC;AAC/B,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,UAAU,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,iBAAiB,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,WAAW,EAAE,kBAAkB,GAAG;AAC9E;AACA,GAAG,IAAI,aAAa,CAAC;AACrB,GAAG,IAAI,SAAS,GAAG,KAAK,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,KAAK,WAAW,GAAG,CAAC,GAAG;AAC1B;AACA,IAAI,WAAW,GAAG,WAAW,GAAG,EAAE,CAAC,CAAC;AACpC,IAAI,SAAS,GAAG,IAAI,CAAC;AACrB;AACA,IAAI;AACJ;AACA,GAAG,IAAI,aAAa,GAAG,EAAE,CAAC;AAC1B,GAAG,IAAI,OAAO,GAAG,EAAE,CAAC;AACpB;AACA,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACzF;AACA,GAAG,KAAK,OAAO,CAAC,KAAK,GAAG;AACxB;AACA,IAAI,MAAM,IAAI,GAAG,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AACzF;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACvD;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,QAAQ,GAAG;AAC3B;AACA,IAAI,KAAK,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,SAAS,GAAG;AAC5D;AACA,KAAK,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG;AACjE;AACA,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;AAChC,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAClC;AACA,MAAM,EAAE,CAAC;AACT;AACA;AACA,KAAK;AACL;AACA,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG;AAC9B;AACA,KAAK,KAAK,EAAE,uBAAuB,GAAG;AACtC;AACA,MAAM,OAAO,CAAC,IAAI,EAAE,2GAA2G,EAAE,CAAC;AAClI,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC;AACA,MAAM;AACN;AACA,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnC,KAAK,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnC;AACA,KAAK,OAAO,CAAC,OAAO,EAAE,WAAW,MAAM,EAAE,WAAW,GAAG;AACvD;AACA,MAAM,IAAI,aAAa,GAAG,MAAM,CAAC;AACjC,MAAM,IAAI,YAAY,GAAG,aAAa,EAAE,WAAW,EAAE,CAAC;AACtD;AACA,MAAM,MAAM,CAAC,OAAO,EAAE,WAAW,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,GAAG;AAC5F;AACA,OAAO,KAAK,aAAa,GAAG,cAAc,GAAG;AAC7C;AACA,QAAQ,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC;AACnE,QAAQ,aAAa,GAAG,cAAc,CAAC;AACvC;AACA,QAAQ,MAAM,GAAG,GAAG,MAAM,EAAE,mBAAmB,EAAE,CAAC;AAClD,QAAQ,MAAM,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;AACrD,QAAQ,YAAY,GAAG,GAAG,CAAC;AAC3B;AACA,QAAQ;AACR;AACA,OAAO,EAAE,CAAC;AACV;AACA,MAAM,EAAE,CAAC;AACT;AACA,KAAK,aAAa,GAAG,MAAM,CAAC;AAC5B,KAAK,OAAO,GAAG,MAAM,CAAC;AACtB;AACA,KAAK;AACL;AACA;AACA,IAAI,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG;AACjC;AACA,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AACvB,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AAC7B;AACA,KAAK;AACL;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG;AACnC;AACA,KAAK,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;AACtC,KAAK,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;AAClD;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,MAAM,GAAG;AACzB;AACA,IAAI,MAAM,IAAI,GAAG,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1F;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACxD;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,GAAG;AACzE;AACA,IAAI,aAAa,GAAG,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;AACpG;AACA,IAAI,KAAK,aAAa,GAAG,CAAC,GAAG;AAC7B;AACA,KAAK,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC;AAC1C,KAAK,aAAa,GAAG,CAAC,CAAC;AACvB;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,EAAE,GAAG;AACrB;AACA,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG;AAC3C;AACA,KAAK,MAAM,IAAI,GAAG,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAC/E;AACA,KAAK,KAAK,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,GAAG;AACvC;AACA,MAAM,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACxB;AACA,MAAM;AACN;AACA,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACpC,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AACpC;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG,UAAU,GAAG,CAAC;AACjB;AACA,GAAG,KAAK,SAAS,GAAG;AACpB;AACA,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AACxJ;AACA,IAAI,YAAY,GAAG,CAAC;AACpB,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB;AACA;AACA,IAAI,mBAAmB,GAAG,EAAE,CAAC;AAC7B,IAAI,WAAW,GAAG,EAAE,CAAC;AACrB,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,IAAI,WAAW,GAAG,EAAE,CAAC;AACrB,IAAI,iBAAiB,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA;AACA,CAAC,eAAe,EAAE,QAAQ,GAAG;AAC7B;AACA,EAAE,MAAM,MAAM,GAAG,IAAIxE,aAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9C;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC/C;AACA,GAAG,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC;AACjC,GAAG,MAAM,IAAI,GAAG,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;AACxD;AACA,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/D,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/D,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;AAC/D;AACA,GAAG;AACH;AACA,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACrB;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA,CAAC,4BAA4B,EAAE,QAAQ,GAAG;AAC1C;AACA,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,CAAC;AACxD;AACA,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,IAAIA,aAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAIA,aAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC5G,EAAE,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC;AACvD,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC;AACtE;AACA,EAAE,OAAO;AACT,GAAG,MAAM,EAAE,YAAY;AACvB,GAAG,OAAO,EAAE,OAAO;AACnB,GAAG,SAAS,EAAE,SAAS;AACvB,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,GAAG;AACzD;AACA,EAAE,OAAO,IAAIF,aAAO;AACpB,GAAG,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE;AAC9B,GAAG,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE;AAChC,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA;AACA,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,GAAG;AAC/I;AACA,EAAE,IAAI,SAAS,CAAC;AAChB;AACA,EAAE,KAAK,UAAU,GAAG,CAAC,GAAG;AACxB;AACA;AACA;AACA,GAAG,MAAM,QAAQ,GAAG,EAAE,CAAC;AACvB;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG;AAC7D;AACA,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAIE,aAAO;AAC9B,KAAK,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,CAAC,EAAE,EAAE;AACxD,KAAK,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;AAC5D,KAAK,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;AAC5D,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,4BAA4B,EAAE,QAAQ,EAAE,CAAC;AAChF,GAAG,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACjC;AACA,GAAG,MAAM,MAAM,MAAM,IAAI,QAAQ,GAAG;AACpC;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC;AAChF;AACA,IAAI;AACJ;AACA,GAAG,SAAS,GAAG2E,gBAAU,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;AACrE;AACA,GAAG,MAAM;AACT;AACA;AACA,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7B;AACA,GAAG;AACH;AACA,EAAE,MAAM,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,SAAS,GAAG;AAC5C;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnF,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACvF,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACvF;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnF,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACvF,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACvF;AACA,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnF,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACvF,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACvF;AACA,GAAG,KAAK,OAAO,CAAC,QAAQ,GAAG;AAC3B;AACA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACxD,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D;AACA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACxD,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D;AACA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACxD,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5D;AACA,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAC/D,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE;AACA,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAC/D,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE;AACA,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAC/D,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACnE;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,KAAK,GAAG;AACxB;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAChD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACpD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACpD;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAChD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACpD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACpD;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAChD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACpD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACpD;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,GAAG;AACzE;AACA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AAChD,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AAChD,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AAChD;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,MAAM,GAAG;AACzB;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACjD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACjD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACjD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD;AACA,IAAI;AACJ;AACA,GAAG,KAAK,OAAO,CAAC,EAAE,GAAG;AACrB;AACA,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,GAAG;AAC3C;AACA,KAAK,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACjE;AACA,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACzD;AACA,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACzD;AACA,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACrD,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACzD;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,GAAG;AACzE;AACA,EAAE,KAAK,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO;AAC1C;AACA,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACxC;AACA,EAAE,SAAS,CAAC,eAAe,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC1C;AACA;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB,EAAE,YAAY,CAAC,OAAO,EAAE,WAAW,WAAW,GAAG;AACjD;AACA,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,SAAS,GAAG;AAC1D;AACA,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AACrE;AACA,IAAI,KAAK,YAAY,KAAK,SAAS,GAAG;AACtC;AACA,KAAK,KAAK,CAAC,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AACpG;AACA,KAAK;AACL;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,GAAG;AAChF;AACA,EAAE,MAAM,aAAa,GAAG,EAAE,aAAa,CAAC,kBAAkB,KAAK,SAAS,KAAK,aAAa,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,CAAC;AACrH;AACA,EAAE,MAAM,oBAAoB,GAAG,EAAE,YAAY,CAAC,QAAQ,KAAK,SAAS,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACtG,EAAE,MAAM,OAAO,GAAG,EAAE,YAAY,CAAC,OAAO,KAAK,SAAS,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACvF;AACA,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;AACzD,EAAE,MAAM,cAAc,GAAG,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;AACpD;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC9C;AACA,GAAG,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,cAAc,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAChE,GAAG,cAAc,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,oBAAoB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACxE,GAAG,cAAc,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,oBAAoB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACxE;AACA,GAAG;AACH;AACA;AACA,EAAE,MAAM,YAAY,GAAG;AACvB,GAAG,aAAa,EAAE,aAAa;AAC/B,GAAG,eAAe,EAAE,cAAc;AAClC;AACA,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC;AACvD;AACA,EAAE,MAAM,iBAAiB,GAAG,IAAIH,4BAAsB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACjF,EAAE,iBAAiB,CAAC,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC;AACzD;AACA,EAAE,iBAAiB,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;AACjD;AACA,EAAE,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;AAC/D;AACA,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE,UAAU,GAAG;AAC5B;AACA,EAAE,MAAM,WAAW,GAAG,UAAU,CAAC,sBAAsB,CAAC;AACxD,EAAE,MAAM,aAAa,GAAG,UAAU,CAAC,wBAAwB,CAAC;AAC5D,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB,EAAE,KAAK,aAAa,KAAK,eAAe,GAAG;AAC3C;AACA,GAAG,KAAK,aAAa,IAAI,UAAU,GAAG;AACtC;AACA,IAAI,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3C;AACA,IAAI,MAAM,KAAK,cAAc,IAAI,UAAU,GAAG;AAC9C;AACA,IAAI,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5C;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG,MAAM,EAAE,MAAM;AACjB,GAAG,OAAO,EAAE,WAAW;AACvB,GAAG,WAAW,EAAE,WAAW;AAC3B,GAAG,aAAa,EAAE,aAAa;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA;AACA,CAAC,QAAQ,EAAE,MAAM,GAAG;AACpB;AACA,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACpD,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACxD,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB,EAAE,KAAK,aAAa,KAAK,eAAe,GAAG;AAC3C;AACA,GAAG,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAClC;AACA,GAAG;AACH;AACA,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG,MAAM,EAAE,MAAM;AACjB,GAAG,OAAO,EAAE,WAAW;AACvB,GAAG,WAAW,EAAE,WAAW;AAC3B,GAAG,aAAa,EAAE,aAAa;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA;AACA,CAAC,iBAAiB,EAAE,SAAS,GAAG;AAChC;AACA,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,sBAAsB,CAAC;AACvD,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC,wBAAwB,CAAC;AAC3D,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;AACvB,EAAE,KAAK,aAAa,KAAK,eAAe,GAAG;AAC3C;AACA,GAAG,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACxC;AACA,GAAG;AACH;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAIlF,WAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG;AAChE;AACA,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvE;AACA,GAAG;AACH;AACA,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG,MAAM,EAAE,MAAM;AACjB,GAAG,OAAO,EAAE,WAAW;AACvB,GAAG,WAAW,EAAE,WAAW;AAC3B,GAAG,aAAa,EAAE,aAAa;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA;AACA,CAAC,oBAAoB,EAAE,YAAY,GAAG;AACtC;AACA,EAAE,MAAM,WAAW,GAAG,YAAY,CAAC,sBAAsB,CAAC;AAC1D,EAAE,MAAM,aAAa,GAAG,YAAY,CAAC,wBAAwB,CAAC;AAC9D;AACA,EAAE,KAAK,WAAW,KAAK,sBAAsB,GAAG;AAChD;AACA,GAAG,OAAO;AACV,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,MAAM,EAAE,EAAE,CAAC,EAAE;AACjB,IAAI,OAAO,EAAE,EAAE,CAAC,EAAE;AAClB,IAAI,WAAW,EAAE,SAAS;AAC1B,IAAI,aAAa,EAAE,aAAa;AAChC,IAAI,CAAC;AACL;AACA,GAAG;AACH;AACA,EAAE,MAAM,mBAAmB,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD;AACA;AACA;AACA;AACA,EAAE,MAAM,eAAe,GAAG,EAAE,CAAC;AAC7B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;AAC1D;AACA,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;AAC7B;AACA,GAAG;AACH;AACA,EAAE,OAAO;AACT,GAAG,QAAQ,EAAE,CAAC;AACd,GAAG,MAAM,EAAE,mBAAmB;AAC9B,GAAG,OAAO,EAAE,eAAe;AAC3B,GAAG,WAAW,EAAE,WAAW;AAC3B,GAAG,aAAa,EAAE,aAAa;AAC/B,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA;AACA,CAAC,kBAAkB,EAAE,OAAO,GAAG;AAC/B;AACA,EAAE,MAAM,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAC1C;AACA,EAAE,KAAK,KAAK,EAAE,KAAK,EAAE,GAAG;AACxB;AACA,GAAG,OAAO,CAAC,KAAK,EAAE,6DAA6D,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AAC7G,GAAG,OAAO,IAAIwC,oBAAc,EAAE,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,EAAE,MAAM,aAAa,GAAG,EAAE,CAAC;AAC3B,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC5D;AACA,GAAG,aAAa,CAAC,IAAI,EAAE,IAAIkC,aAAO,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;AACpE;AACA,GAAG;AACH;AACA,EAAE,IAAI,SAAS,EAAE,OAAO,CAAC;AACzB;AACA,EAAE,KAAK,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG;AACnC;AACA,GAAG,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;AAC5C;AACA,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,KAAK,UAAU,GAAG;AAC5C;AACA,GAAG,SAAS,GAAG,MAAM,CAAC;AACtB,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;AAC1C;AACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC,GAAG;AACvC;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7C;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACnF,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;AAC9D;AACA,EAAE,OAAO,IAAIlC,oBAAc,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;AACtD;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA,MAAM,eAAe,CAAC;AACtB;AACA;AACA,CAAC,KAAK,GAAG;AACT;AACA,EAAE,MAAM,cAAc,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACrC;AACA,EAAE,KAAK,QAAQ,KAAK,SAAS,GAAG;AAChC;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,QAAQ,GAAG;AACjC;AACA,IAAI,MAAM,OAAO,GAAG,QAAQ,EAAE,GAAG,EAAE,CAAC;AACpC;AACA,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AACzC;AACA,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AAChC;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,cAAc,CAAC;AACxB;AACA,EAAE;AACF;AACA,CAAC,UAAU,GAAG;AACd;AACA;AACA;AACA,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,GAAG,OAAO,SAAS,CAAC;AACvE;AACA,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,oBAAoB,EAAE,aAAa,EAAE,CAAC;AAC7C;AACA,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,EAAE,CAAC;AAC/D,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC;AACrD;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,wBAAwB,GAAG;AAC5B;AACA,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC3D;AACA,EAAE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;AAClC;AACA,EAAE,MAAM,MAAM,MAAM,IAAI,aAAa,GAAG;AACxC;AACA,GAAG,MAAM,YAAY,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC;AAChD;AACA,GAAG,KAAK,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,IAAI,GAAG;AACxE;AACA,IAAI,MAAM,SAAS,GAAG;AACtB;AACA,KAAK,EAAE,EAAE,YAAY,CAAC,EAAE;AACxB,KAAK,IAAI,EAAE,YAAY,CAAC,QAAQ;AAChC,KAAK,MAAM,EAAE,EAAE;AACf;AACA,KAAK,CAAC;AACN;AACA,IAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC;AACjD;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,aAAa,CAAC;AACvB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,oBAAoB,EAAE,aAAa,GAAG;AACvC;AACA,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,MAAM,MAAM,IAAI,SAAS,GAAG;AACpC;AACA,GAAG,MAAM,cAAc,GAAG;AAC1B;AACA,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE;AAC9B,IAAI,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,uBAAuB,EAAE;AACvE,IAAI,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,CAAC;AAC/C;AACA,IAAI,CAAC;AACL;AACA,GAAG,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC;AAC9D;AACA,GAAG,KAAK,aAAa,KAAK,SAAS,GAAG;AACtC;AACA,IAAI,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3D,IAAI,MAAM,0BAA0B,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC;AAC/E;AACA,IAAI,KAAK,0BAA0B,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG;AACnD;AACA,KAAK,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;AAC1E;AACA,KAAK,MAAM,KAAK,0BAA0B,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG;AAC1D;AACA,KAAK,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;AAC1E;AACA,KAAK,MAAM,KAAK,0BAA0B,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG;AAC1D;AACA,KAAK,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;AAC1E;AACA,KAAK,MAAM,KAAK,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG;AAC/G;AACA,KAAK,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;AAC9E;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,oBAAoB,EAAE,aAAa,GAAG;AACvC;AACA,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AACnD;AACA,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B;AACA,EAAE,MAAM,MAAM,MAAM,IAAI,SAAS,GAAG;AACpC;AACA,GAAG,MAAM,eAAe,GAAG,EAAE,CAAC;AAC9B;AACA,GAAG,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;AAC5D;AACA,GAAG,KAAK,UAAU,KAAK,SAAS,GAAG;AACnC;AACA;AACA,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AACzC;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,CAAC,GAAG;AAC5C;AACA,KAAK,KAAK,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG;AAC1C;AACA,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACtD;AACA;AACA,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,GAAG;AACtH;AACA,OAAO,KAAK,eAAe,EAAE,CAAC,EAAE,KAAK,SAAS,GAAG;AACjD;AACA,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,GAAG;AACxF;AACA,SAAS,OAAO,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC;AAClD;AACA,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB;AACA,QAAQ,KAAK,OAAO,KAAK,SAAS,GAAG;AACrC;AACA,SAAS,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACtE;AACA,SAAS,KAAK,QAAQ,KAAK,SAAS,GAAG;AACvC;AACA,UAAU,OAAO,CAAC,IAAI,EAAE,8CAA8C,EAAE,KAAK,EAAE,CAAC;AAChF,UAAU,OAAO;AACjB;AACA,UAAU;AACV;AACA,SAAS,MAAM,IAAI,GAAG;AACtB;AACA,UAAU,SAAS,EAAE,QAAQ,CAAC,QAAQ,GAAGD,qBAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;AACnG,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAE;AACzB,UAAU,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC,UAAU,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC,UAAU,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACnC;AACA,UAAU,CAAC;AACX;AACA,SAAS,UAAU,CAAC,QAAQ,EAAE,WAAW,KAAK,GAAG;AACjD;AACA,UAAU,KAAK,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,GAAG;AAC1C;AACA,WAAW,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;AACzC;AACA,WAAW,KAAK,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACzG;AACA,WAAW;AACX;AACA,UAAU,EAAE,CAAC;AACb;AACA,SAAS,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI9B,aAAO,EAAE,CAAC;AAChE;AACA;AACA;AACA,SAAS,KAAK,aAAa,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;AACxF,SAAS,KAAK,cAAc,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3F;AACA,SAAS,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AACrC;AACA,SAAS;AACT;AACA,QAAQ;AACR;AACA,OAAO,KAAK,eAAe,EAAE,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;AACtF;AACA,OAAO,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,GAAG;AACzD;AACA,OAAO,KAAK,eAAe,EAAE,CAAC,EAAE,KAAK,SAAS,GAAG;AACjD;AACA,QAAQ,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,MAAM,GAAG;AAC3F;AACA,SAAS,OAAO,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC;AAClD;AACA,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB;AACA,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxE,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACnE;AACA;AACA,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACjE;AACA,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AAC1D;AACA,QAAQ,MAAM,IAAI,GAAG;AACrB;AACA,SAAS,SAAS,EAAE,QAAQ,CAAC,QAAQ,GAAG8B,qBAAe,CAAC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;AAClG,SAAS,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,QAAQ;AACnE;AACA,SAAS,CAAC;AACV;AACA,QAAQ,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AACpC;AACA,QAAQ;AACR;AACA,OAAO,eAAe,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;AAC1D;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA,KAAK,EAAE,CAAC;AACR;AACA,IAAI,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC;AACzD;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,SAAS,CAAC;AACnB;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC,eAAe,EAAE,SAAS,GAAG;AAC9B;AACA,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AACnD;AACA;AACA,EAAE,MAAM,QAAQ,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,MAAM,MAAM,MAAM,IAAI,SAAS,GAAG;AACpC;AACA,GAAG,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC;AACnE;AACA,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG;AAC9B;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE,oIAAoI,EAAE,CAAC;AACzJ;AACA,IAAI;AACJ;AACA,GAAG,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACnD;AACA,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG;AACxB;AACA,IAAI,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ;AACtC,IAAI,KAAK,EAAE,KAAK;AAChB;AACA,IAAI,CAAC;AACL;AACA,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,OAAO,EAAE,OAAO,GAAG;AACpB;AACA,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,SAAS,GAAG;AAChD;AACA,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC;AAC/D;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,IAAIW,mBAAa,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACxD;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,SAAS,GAAG;AAC7B;AACA,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,eAAe,GAAG,IAAIxC,aAAO,EAAE,CAAC;AACtC,EAAE,IAAI,YAAY,GAAG,IAAIA,aAAO,EAAE,CAAC;AACnC;AACA,EAAE,KAAK,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,IAAIC,gBAAU,EAAE,EAAE,YAAY,EAAE,CAAC;AAC9G;AACA,EAAE,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;AAC9C,EAAE,YAAY,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC;AACxC;AACA,EAAE,KAAK,SAAS,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;AACnF;AACA,GAAG,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AAC1H,GAAG,KAAK,aAAa,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AACnE;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;AACnF;AACA,GAAG,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC;AACpK,GAAG,KAAK,aAAa,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AACnE;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG;AACnF;AACA,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACjH,GAAG,KAAK,UAAU,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;AAC7D;AACA,GAAG;AACH;AACA,EAAE,KAAK,SAAS,CAAC,aAAa,KAAK,SAAS,GAAG;AAC/C;AACA,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE,CAAC;AAC3D,GAAG,KAAK,UAAU,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;AAC7D;AACA,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA,CAAC,mBAAmB,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,GAAG;AAC9D;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;AAClD,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAC5E;AACA,EAAE,OAAO,IAAI2C,yBAAmB,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1E;AACA,EAAE;AACF;AACA,CAAC,qBAAqB,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,GAAG;AACnF;AACA,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,KAAK,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,GAAG;AACpF;AACA,GAAG,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;AACxF;AACA,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AACvB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;AACxB;AACA,GAAG;AACH;AACA,EAAE,KAAK,WAAW,KAAK,SAAS,GAAG;AACnC;AACA,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,EAAEP,eAAS,CAAC,QAAQ,EAAE,CAAC;AACvD,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;AAClC;AACA,GAAG,WAAW,GAAG,IAAIuC,WAAK,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;AACtD,GAAG,WAAW,GAAG,IAAI3E,gBAAU,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;AAC9D;AACA,GAAG;AACH;AACA,EAAE,KAAK,YAAY,KAAK,SAAS,GAAG;AACpC;AACA,GAAG,YAAY,GAAG,YAAY,CAAC,GAAG,EAAEoC,eAAS,CAAC,QAAQ,EAAE,CAAC;AACzD,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;AACnC;AACA,GAAG,YAAY,GAAG,IAAIuC,WAAK,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC;AACxD,GAAG,YAAY,GAAG,IAAI3E,gBAAU,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC;AACzE;AACA,GAAG;AACH;AACA,EAAE,MAAM,UAAU,GAAG,IAAIA,gBAAU,EAAE,CAAC;AACtC,EAAE,MAAM,KAAK,GAAG,IAAI2E,WAAK,EAAE,CAAC;AAC5B;AACA,EAAE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC9B;AACA,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,KAAK,GAAG,OAAO,IAAIjC,6BAAuB,EAAE,SAAS,GAAG,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3G;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG;AAC/C;AACA,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC;AAC1E,GAAG,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;AACpC;AACA,GAAG,KAAK,WAAW,KAAK,SAAS,GAAG,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;AAC1E,GAAG,KAAK,YAAY,KAAK,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;AACzE;AACA;AACA,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG;AAChB;AACA,IAAI,MAAM,QAAQ,GAAG,IAAI1C,gBAAU,EAAE,CAAC,SAAS;AAC/C,KAAK,gBAAgB;AACrB,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AAC1B,KAAK,CAAC;AACN;AACA,IAAI,KAAK,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG;AAC1C;AACA,KAAK,UAAU,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;AACtF;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AACzD;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI0C,6BAAuB,EAAE,SAAS,GAAG,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AAC3F;AACA,EAAE;AACF;AACA,CAAC,kBAAkB,EAAE,SAAS,GAAG;AACjC;AACA,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AACtD,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG;AACrD;AACA,GAAG,OAAO,GAAG,GAAG,GAAG,CAAC;AACpB;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;AAClH;AACA,EAAE,OAAO,IAAID,yBAAmB,EAAE,SAAS,CAAC,SAAS,GAAG,yBAAyB,GAAG,QAAQ,GAAG,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3H;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC,kBAAkB,EAAE,MAAM,GAAG;AAC9B;AACA,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACjB;AACA;AACA,EAAE,KAAK,MAAM,CAAC,CAAC,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACvE,EAAE,KAAK,MAAM,CAAC,CAAC,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACvE,EAAE,KAAK,MAAM,CAAC,CAAC,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACvE;AACA;AACA,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG;AACxC;AACA,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAChB;AACA,GAAG,EAAE,CAAC;AACN;AACA;AACA,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG;AAC1B;AACA,GAAG,IAAI,WAAW,GAAG,CAAC,CAAC;AACvB,GAAG,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AAC9B,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC7C;AACA,IAAI,MAAM,YAAY,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACpC,IAAI,KAAK,YAAY,KAAK,SAAS,GAAG;AACtC;AACA,KAAK,KAAK,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC;AACzC,KAAK,SAAS,GAAG,YAAY,CAAC;AAC9B,KAAK,WAAW,GAAG,CAAC;AACpB;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;AACzC;AACA,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAG;AACvD;AACA,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC;AACjC;AACA,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AACnB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AACnB,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AACnB;AACA,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,IAAI,GAAG;AACnC;AACA,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3D,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3D,GAAG,KAAK,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3D;AACA;AACA,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC,GAAG;AACzB;AACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC7C,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,IAAI,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;AAC5B;AACA,IAAI,MAAM;AACV;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AAClC;AACA,IAAI;AACJ;AACA,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC,GAAG;AACzB;AACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC7C,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,IAAI,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;AAC5B;AACA,IAAI,MAAM;AACV;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AAClC;AACA,IAAI;AACJ;AACA,GAAG,KAAK,MAAM,KAAK,EAAE,CAAC,GAAG;AACzB;AACA,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC7C,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,IAAI,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;AAC5B;AACA,IAAI,MAAM;AACV;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AAClC;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG;AAC5D;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA;AACA,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAClC,EAAE,MAAM,CAAC,IAAI,EAAEL,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1D,EAAE,MAAM,CAAC,IAAI,EAAEA,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1D,EAAE,MAAM,CAAC,IAAI,EAAEA,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1D;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AACpD;AACA,GAAG,MAAM,YAAY,GAAG;AACxB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;AAC1B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;AAC1B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;AAC1B,IAAI,CAAC;AACL;AACA,GAAG,KAAK,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG;AACjG;AACA,IAAI,SAAS;AACb;AACA,IAAI;AACJ;AACA,GAAG,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,EAAEA,eAAS,CAAC,QAAQ,EAAE,CAAC;AAClE;AACA,GAAG,MAAM,YAAY,GAAG;AACxB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;AACtB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;AACtB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;AACtB,IAAI,CAAC;AACL;AACA,GAAG,KAAK,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG;AACjG;AACA,IAAI,SAAS;AACb;AACA,IAAI;AACJ;AACA,GAAG,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,EAAEA,eAAS,CAAC,QAAQ,EAAE,CAAC;AAClE;AACA,GAAG,MAAM,UAAU,GAAG;AACtB,IAAI,YAAY,EAAE,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE;AACzC,IAAI,YAAY,EAAE,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE;AACzC,IAAI,YAAY,EAAE,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,EAAE;AACzC,IAAI,CAAC;AACL;AACA,GAAG,MAAM,YAAY,GAAG;AACxB,IAAI,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,CAAC;AACL;AACA,GAAG,KAAK,YAAY,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC,EAAE,IAAI,GAAG,GAAG;AAC3F;AACA,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;AACnD;AACA,IAAI,MAAM,eAAe,GAAG,UAAU,GAAG,GAAG,CAAC;AAC7C;AACA,IAAI,MAAM,EAAE,GAAG,IAAIuC,WAAK,EAAE,GAAG,eAAe,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAI,MAAM,EAAE,GAAG,IAAIA,WAAK,EAAE,GAAG,eAAe,EAAE,UAAU,EAAE,CAAC;AAC3D;AACA,IAAI,MAAM,EAAE,GAAG,IAAI3E,gBAAU,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;AACnD,IAAI,MAAM,EAAE,GAAG,IAAIA,gBAAU,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;AACnD;AACA;AACA,IAAI,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG;AACxB;AACA,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9C;AACA,KAAK;AACL;AACA;AACA,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC;AACrD;AACA,IAAI,MAAM,CAAC,GAAG,IAAIA,gBAAU,EAAE,CAAC;AAC/B,IAAI,MAAM,CAAC,GAAG,IAAI2E,WAAK,EAAE,CAAC;AAC1B,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,eAAe,GAAG;AACvD;AACA,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACjD;AACA,KAAK,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;AAC9C,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AAC1C;AACA,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxB;AACA,KAAK;AACL;AACA,IAAI,MAAM;AACV;AACA,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACpC,IAAI,MAAM,CAAC,IAAI,EAAEvC,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5D,IAAI,MAAM,CAAC,IAAI,EAAEA,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5D,IAAI,MAAM,CAAC,IAAI,EAAEA,eAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5D;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA,MAAM,UAAU,CAAC;AACjB;AACA,CAAC,WAAW,GAAG;AACf;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;AAClD;AACA,EAAE;AACF;AACA,CAAC,cAAc,GAAG;AAClB;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;AAClD;AACA,EAAE;AACF;AACA,CAAC,cAAc,GAAG;AAClB;AACA,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC,SAAS,EAAE,IAAI,GAAG;AACnB;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AAC9B,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,GAAG;AAC7B;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACzB,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9B;AACA,EAAE;AACF;AACA,CAAC,KAAK,EAAE,IAAI,GAAG;AACf;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AAChC,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC5B;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;AACrB;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;AACxC;AACA,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,GAAG;AACtC;AACA,GAAG,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;AAClD,GAAG,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;AAChD;AACA,GAAG,KAAK,YAAY,IAAI,UAAU,GAAG,OAAO;AAC5C;AACA,GAAG,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC,aAAa,GAAG,eAAe,EAAE,EAAE,EAAE,CAAC;AAC5F,GAAG,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,aAAa,EAAE,GAAG,4BAA4B,EAAE,CAAC;AACxG,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AAC/E;AACA,GAAG,KAAK,cAAc,GAAG;AACzB;AACA,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AACjD;AACA,IAAI,MAAM,KAAK,aAAa,GAAG;AAC/B;AACA,IAAI,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAClE;AACA,IAAI,MAAM,KAAK,QAAQ,GAAG;AAC1B;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AACrB;AACA,IAAI,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG;AAC3C;AACA;AACA;AACA,IAAI,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC;AAC7C;AACA,IAAI;AACJ;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,IAAI,EAAE,QAAQ,GAAG;AAClC;AACA,EAAE,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAChF;AACA,EAAE,MAAM,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,WAAW,IAAI,GAAG;AACtE;AACA,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC9D;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC;AAChD;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C;AACA;AACA,EAAE,KAAK,IAAI,CAAC,aAAa,KAAK,CAAC,GAAG;AAClC;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACvC;AACA,GAAG,MAAM;AACT;AACA;AACA,GAAG,KAAK,QAAQ,IAAI,WAAW,GAAG;AAClC;AACA;AACA,IAAI,KAAK,QAAQ,KAAK,UAAU,GAAG;AACnC;AACA,KAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACvC;AACA,KAAK,MAAM,KAAK,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,SAAS,GAAG;AAC3D;AACA,KAAK,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAClC,KAAK,WAAW,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC;AACrF;AACA,KAAK;AACL;AACA,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;AACtE;AACA,IAAI,MAAM,KAAK,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG;AAC9C;AACA,IAAI,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACjC,IAAI,WAAW,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;AAC/C;AACA,IAAI,MAAM,KAAK,QAAQ,KAAK,cAAc,GAAG;AAC7C;AACA,IAAI,KAAK,QAAQ,KAAK,UAAU,GAAG,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACtE,SAAS,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AACxC;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,KAAK,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AACzD,EAAE,KAAK,KAAK,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACtD,EAAE,KAAK,KAAK,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACtD;AACA,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;AACzB;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,KAAK,GAAG;AACxB;AACA,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACtB;AACA,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG;AAC3B;AACA,GAAG,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAC/B;AACA,GAAG,KAAK,KAAK,EAAE,EAAE,EAAE,GAAG;AACtB;AACA,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACpB;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG;AAC1B;AACA,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC/C,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACrB;AACA,GAAG;AACH;AACA,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5C;AACA,EAAE;AACF;AACA,CAAC,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,GAAG;AAClD;AACA,EAAE,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC9E,EAAE,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA;AACA;AACA;AACA,EAAE,KAAK,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG,GAAG;AACrD;AACA,GAAG,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1E;AACA,GAAG;AACH;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,EAAE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;AACtC;AACA,EAAE,KAAK,UAAU,KAAK,cAAc,GAAG;AACvC;AACA,GAAG,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC9D,GAAG,OAAO;AACV;AACA,GAAG;AACH;AACA;AACA,EAAE,KAAK,QAAQ,KAAK,GAAG,GAAG;AAC1B;AACA,GAAG,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACvD,GAAG,MAAM,IAAI,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AAC3C,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AACzC;AACA,GAAG,IAAI,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AAChD;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,IAAI,GAAG;AACtC;AACA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3C;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,QAAQ,GAAG,aAAa,CAAC;AAC5B,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC5B,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B;AACA,GAAG,KAAK,WAAW,EAAE,QAAQ,EAAE,KAAK,SAAS,GAAG;AAChD;AACA,IAAI,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACjC;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA;AACA,EAAE,KAAK,QAAQ,KAAK,MAAM,GAAG,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC;AACxD;AACA;AACA,EAAE,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG;AAC7E;AACA,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7C;AACA,GAAG,MAAM;AACT;AACA,GAAG,KAAK,QAAQ,KAAK,GAAG,GAAG,WAAW,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAC/D,QAAQ,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC;AAClC;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC/C;AACA;AACA,EAAE,KAAK,QAAQ,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG;AAC5D;AACA,GAAG,WAAW,CAAC,CAAC,GAAG,gBAAgB,EAAE,SAAS,EAAE,CAAC;AACjD;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,0BAA0B,EAAE,IAAI,GAAG;AACpC;AACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC;AACxB;AACA;AACA;AACA,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG;AACnC;AACA,GAAG,WAAW,CAAC,CAAC,GAAG,gBAAgB,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;AACrD;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA,CAAC,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,IAAI,GAAG;AAC/D;AACA,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAChE;AACA,GAAG,EAAE,CAAC;AACN;AACA,EAAE,MAAM,aAAa,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACnC,EAAE,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACpC,EAAE,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACpC,EAAE,MAAM,aAAa,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACnC,EAAE,IAAI,cAAc,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AAClC;AACA;AACA,EAAE,SAAS,cAAc;AACzB;AACA,GAAG,KAAK,KAAK,CAAC;AACd,GAAG,KAAK,MAAM,CAAC;AACf,GAAG,KAAK,MAAM,CAAC;AACf,GAAG,KAAK,WAAW,CAAC;AACpB,GAAG,KAAK,QAAQ,CAAC;AACjB,GAAG,KAAK,QAAQ,CAAC;AACjB,GAAG,KAAK,aAAa;AACrB,IAAI,cAAc,GAAG,UAAU,EAAE,cAAc,EAAE,CAAC;AAClD,IAAI,MAAM;AACV;AACA,GAAG,KAAK,OAAO,CAAC;AAChB,GAAG,KAAK,UAAU,CAAC;AACnB,GAAG,KAAK,UAAU,CAAC;AACnB,GAAG,KAAK,iBAAiB,CAAC;AAC1B,GAAG,KAAK,cAAc,CAAC;AACvB,GAAG,KAAK,aAAa;AACrB,IAAI,cAAc,GAAG,gBAAgB,EAAE,cAAc,EAAE,CAAC;AACxD,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA;AACA,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,GAAG;AACxC;AACA,GAAG,MAAM,EAAE,cAAc;AACzB,GAAG,OAAO,EAAE,cAAc;AAC1B,GAAG,MAAM,EAAE,aAAa;AACxB,GAAG,OAAO,EAAE,cAAc;AAC1B;AACA,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,CAAC;AAC3D;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA,MAAM,YAAY,CAAC;AACnB;AACA,CAAC,KAAK,EAAE,MAAM,GAAG;AACjB;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;AAC5C,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;AACpB;AACA,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACrC;AACA,EAAE,KAAK,OAAO,GAAG,IAAI,GAAG;AACxB;AACA,GAAG,MAAM,IAAI,KAAK,EAAE,2DAA2D,GAAG,OAAO,EAAE,CAAC;AAC5F;AACA,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC;AACA,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG;AAC1C;AACA,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAClD,GAAG,KAAK,IAAI,KAAK,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACxD;AACA,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;AACA,EAAE;AACF;AACA;AACA,CAAC,YAAY,EAAE,MAAM,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG;AAClC;AACA,GAAG,OAAO,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AACzE;AACA,GAAG,MAAM;AACT;AACA,GAAG,OAAO,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AACzD;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG;AAC9B;AACA,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;AAClB;AACA;AACA,EAAE,MAAM,SAAS,GAAG,EAAE,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAClF,EAAE,MAAM,aAAa,GAAG,EAAE,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACtF;AACA,EAAE,EAAE,OAAO,IAAI,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAChE;AACA,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;AAC3C;AACA;AACA,EAAE,KAAK,SAAS,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC;AACrC;AACA,EAAE,MAAM,YAAY,GAAG,EAAE,CAAC;AAC1B;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,GAAG,GAAG;AAC7C;AACA,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;AACrD;AACA,GAAG;AACH;AACA;AACA,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AAC9D,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACpE,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACpE;AACA;AACA;AACA,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,aAAa,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,CAAC;AACnG;AACA,EAAE,QAAQ,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG;AAC3C;AACA,GAAG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrD;AACA,GAAG,KAAK,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpE;AACA,GAAG;AACH;AACA,EAAE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACnC;AACA,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AAC7C,EAAE,KAAK,QAAQ,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAClD,EAAE,KAAK,QAAQ,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAClD,EAAE,KAAK,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACtC;AACA,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG;AACrC;AACA;AACA,EAAE,KAAK,OAAO,CAAC,cAAc,KAAK,IAAI,GAAG;AACzC;AACA,GAAG,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;AAC3C;AACA,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG;AACjC;AACA,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;AACnC;AACA,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;AACtB;AACA,IAAI,MAAM;AACV;AACA,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC;AACjC;AACA,IAAI;AACJ;AACA,GAAG,MAAM,KAAK,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG;AAC/D;AACA,GAAG,MAAM,KAAK,GAAG,EAAE,CAAC;AACpB;AACA,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,QAAQ,EAAE,CAAC,GAAG;AAC1D;AACA;AACA,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC1C;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,KAAK,IAAI,CAAC,WAAW,KAAK,SAAS,GAAG;AACzC;AACA,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC1B;AACA,IAAI;AACJ;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAClC;AACA,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,KAAK,cAAc,GAAG;AAChD;AACA,GAAG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AACvC;AACA,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,GAAG;AAClC;AACA,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC;AACjC;AACA,IAAI,EAAE,CAAC;AACP;AACA,GAAG,MAAM,KAAK,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG;AAChE;AACA,GAAG,IAAI,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;AACjD,GAAG,IAAI,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;AAClD,GAAG,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;AACpD,GAAG,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;AACnD,GAAG,IAAI,cAAc,CAAC;AACtB;AACA,GAAG,KAAK,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxG,GAAG,KAAK,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3G;AACA,GAAG,KAAK,cAAc,KAAK,OAAO,IAAI,cAAc,KAAK,UAAU,IAAI,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,UAAU,IAAI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;AAChL;AACA,IAAI,cAAc,GAAG;AACrB,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE;AAC9B,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE;AAC9B,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE;AAC9B,KAAK,CAAC;AACN;AACA,IAAI,MAAM;AACV;AACA,IAAI,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;AAC/C;AACA,IAAI;AACJ;AACA;AACA,GAAG,IAAI,EAAE,aAAa,EAAE,GAAG;AAC3B;AACA,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,OAAO,EAAE,cAAc;AAC3B,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,OAAO,EAAE,cAAc;AAC3B;AACA,IAAI,CAAC;AACL;AACA,GAAG,MAAM,KAAK,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,SAAS,GAAG;AACnD;AACA,GAAG,KAAK,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,GAAG;AACzC;AACA,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AAC9B,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC;AACjD;AACA,IAAI,MAAM;AACV;AACA,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;AACnC;AACA,IAAI;AACJ;AACA,GAAG,MAAM;AACT;AACA,GAAG,KAAK,OAAO,CAAC,IAAI,KAAK,UAAU,GAAG;AACtC;AACA,IAAI,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG;AACnD;AACA,KAAK,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACrD;AACA,KAAK;AACL;AACA,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;AACzC;AACA,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,SAAS,GAAG;AAClE;AACA,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC;AACjD;AACA,IAAI;AACJ;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,MAAM,GAAG;AACzB;AACA,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;AACrC,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,SAAS,IAAI;AACf;AACA,GAAG,KAAK,GAAG;AACX,IAAI,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,GAAG,KAAK,GAAG;AACX,IAAI,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,GAAG,KAAK,GAAG;AACX,IAAI,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B;AACA,GAAG,KAAK,GAAG;AACX,IAAI,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7B;AACA,GAAG,KAAK,GAAG;AACX,IAAI,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7B;AACA,GAAG,KAAK,GAAG;AACX,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAChC,IAAI,OAAO,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;AAC3C;AACA,GAAG,KAAK,GAAG;AACX,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAChC,IAAI,OAAO,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;AACtC;AACA,GAAG,KAAK,GAAG;AACX,IAAI,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7B;AACA,GAAG,KAAK,GAAG,CAAC;AACZ,GAAG,KAAK,GAAG,CAAC;AACZ,GAAG,KAAK,GAAG,CAAC;AACZ,GAAG,KAAK,GAAG,CAAC;AACZ,GAAG,KAAK,GAAG,CAAC;AACZ,GAAG,KAAK,GAAG;AACX;AACA,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAC3C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AACxC,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;AAChD;AACA,IAAI,KAAK,QAAQ,KAAK,CAAC,GAAG;AAC1B;AACA,KAAK,SAAS,IAAI;AAClB;AACA,MAAM,KAAK,GAAG,CAAC;AACf,MAAM,KAAK,GAAG;AACd,OAAO,OAAO,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACpD;AACA,MAAM,KAAK,GAAG;AACd,OAAO,OAAO,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACpD;AACA,MAAM,KAAK,GAAG;AACd,OAAO,OAAO,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACpD;AACA,MAAM,KAAK,GAAG;AACd,OAAO,OAAO,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;AAClD;AACA,MAAM,KAAK,GAAG;AACd,OAAO,OAAO,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;AAClD;AACA,MAAM;AACN;AACA,KAAK;AACL;AACA,IAAI,MAAM,IAAI,GAAGwC,UAAiB,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;AAClG,IAAI,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACpD;AACA,IAAI,SAAS,IAAI;AACjB;AACA,KAAK,KAAK,GAAG,CAAC;AACd,KAAK,KAAK,GAAG;AACb,MAAM,OAAO,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACpD;AACA,KAAK,KAAK,GAAG;AACb,MAAM,OAAO,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACpD;AACA,KAAK,KAAK,GAAG;AACb,MAAM,OAAO,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC;AACpD;AACA,KAAK,KAAK,GAAG;AACb,MAAM,OAAO,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;AAClD;AACA,KAAK,KAAK,GAAG;AACb,MAAM,OAAO,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;AAClD;AACA,KAAK;AACL;AACA,IAAI,MAAM;AACV;AACA,GAAG;AACH,IAAI,MAAM,IAAI,KAAK,EAAE,yCAAyC,GAAG,IAAI,EAAE,CAAC;AACxE;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA,MAAM,YAAY,CAAC;AACnB;AACA,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,GAAG;AACrC;AACA,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;AACnC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE,YAAY,KAAK,SAAS,KAAK,YAAY,GAAG,IAAI,CAAC;AAC3E,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;AACxC;AACA,EAAE;AACF;AACA,CAAC,SAAS,GAAG;AACb;AACA,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB;AACA,EAAE;AACF;AACA,CAAC,IAAI,GAAG;AACR;AACA,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AACnC;AACA,EAAE;AACF;AACA,CAAC,IAAI,EAAE,MAAM,GAAG;AAChB;AACA,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;AACxB;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,UAAU,GAAG;AACd;AACA,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AACvC;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,IAAI,GAAG;AACzB;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACf;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG;AACpC;AACA,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX;AACA,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAChD,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACnB,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACnE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACnB,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACnE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACnB,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,IAAI,GAAG;AACvB;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACf;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG;AACpC;AACA,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC7B;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX;AACA,EAAE;AACF;AACA,CAAC,SAAS,GAAG;AACb;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACpE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACnB,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,GAAG;AACZ;AACA,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC;AAChB;AACA,EAAE,KAAK,IAAI,CAAC,YAAY,GAAG;AAC3B;AACA,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3B;AACA,GAAG,MAAM;AACT;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3B,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B;AACA,GAAG;AACH;AACA;AACA,EAAE,KAAK,IAAI,GAAG,UAAU,GAAG;AAC3B;AACA,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,UAAU,CAAC;AAC9B,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,UAAU,CAAC;AAC5B;AACA,GAAG,KAAK,GAAG,KAAK,UAAU,GAAG,IAAI,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,UAAU,CAAC;AAC9D;AACA,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,UAAU,CAAC;AAClC;AACA,GAAG,OAAO,IAAI,IAAI,GAAG,WAAW,GAAG,GAAG,EAAE,CAAC;AACzC;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;AAClC;AACA,EAAE;AACF;AACA,CAAC,aAAa,EAAE,IAAI,GAAG;AACvB;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACf;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG;AACpC;AACA,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC7B;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX;AACA,EAAE;AACF;AACA;AACA,CAAC,SAAS,GAAG;AACb;AACA,EAAE,IAAI,GAAG,EAAE,IAAI,CAAC;AAChB;AACA,EAAE,KAAK,IAAI,CAAC,YAAY,GAAG;AAC3B;AACA,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3B;AACA,GAAG,MAAM;AACT;AACA,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3B,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC1B;AACA,GAAG;AACH;AACA,EAAE,OAAO,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC;AAClC;AACA,EAAE;AACF;AACA,CAAC,UAAU,GAAG;AACd;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACrE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACnB,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,IAAI,GAAG;AACzB;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACf;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG;AACpC;AACA,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX;AACA,EAAE;AACF;AACA,CAAC,UAAU,GAAG;AACd;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACrE,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACnB,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,eAAe,EAAE,IAAI,GAAG;AACzB;AACA,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AACf;AACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG;AACpC;AACA,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;AAC/B;AACA,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX;AACA,EAAE;AACF;AACA,CAAC,cAAc,EAAE,IAAI,GAAG;AACxB;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;AACxE,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;AACtB,EAAE,OAAO,KAAK,CAAC;AACf;AACA,EAAE;AACF;AACA,CAAC,SAAS,EAAE,IAAI,GAAG;AACnB;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AACpB;AACA,EAAE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAClC,EAAE,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7E;AACA,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AACvC;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA,MAAM,OAAO,CAAC;AACd;AACA,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG;AACjB;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AACpB;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA;AACA;AACA,SAAS,iBAAiB,EAAE,MAAM,GAAG;AACrC;AACA,CAAC,MAAM,OAAO,GAAG,4CAA4C,CAAC;AAC9D;AACA,CAAC,OAAO,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,KAAK,0BAA0B,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACnH;AACA,CAAC;AACD;AACA,SAAS,gBAAgB,EAAE,IAAI,GAAG;AAClC;AACA,CAAC,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5H;AACA,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AAChB;AACA,CAAC,SAAS,IAAI,EAAE,MAAM,GAAG;AACzB;AACA,EAAE,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;AACpC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;AACvC,EAAE,MAAM,GAAG,CAAC;AACZ,EAAE,OAAO,MAAM,CAAC;AAChB;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;AAC7C;AACA,EAAE,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;AACxB,EAAE,KAAK,GAAG,KAAK,OAAO,EAAE,CAAC,EAAE,GAAG;AAC9B;AACA,GAAG,OAAO,KAAK,CAAC;AAChB;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,CAAC,OAAO,IAAI,CAAC;AACb;AACA,CAAC;AACD;AACA,SAAS,aAAa,EAAE,IAAI,GAAG;AAC/B;AACA,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAC3C,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC;AAC3C;AACA,CAAC,KAAK,KAAK,GAAG;AACd;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACzC,EAAE,OAAO,OAAO,CAAC;AACjB;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,KAAK,EAAE,qEAAqE,EAAE,CAAC;AAC1F;AACA,CAAC;AACD;AACA;AACA,SAAS,uBAAuB,EAAE,IAAI,GAAG;AACzC;AACA,CAAC,OAAO,IAAI,GAAG,WAAW,CAAC;AAC3B;AACA,CAAC;AACD;AACA,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB;AACA;AACA,SAAS,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,GAAG;AAC9E;AACA,CAAC,IAAI,KAAK,CAAC;AACX;AACA,CAAC,SAAS,UAAU,CAAC,WAAW;AAChC;AACA,EAAE,KAAK,iBAAiB;AACxB,GAAG,KAAK,GAAG,kBAAkB,CAAC;AAC9B,GAAG,MAAM;AACT,EAAE,KAAK,WAAW;AAClB,GAAG,KAAK,GAAG,YAAY,CAAC;AACxB,GAAG,MAAM;AACT,EAAE,KAAK,WAAW;AAClB,GAAG,KAAK,GAAG,WAAW,CAAC;AACvB,GAAG,MAAM;AACT,EAAE,KAAK,SAAS;AAChB,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AACnC,GAAG,MAAM;AACT,EAAE;AACF,GAAG,OAAO,CAAC,IAAI,EAAE,kDAAkD,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AAC/F;AACA,EAAE;AACF;AACA,CAAC,KAAK,UAAU,CAAC,aAAa,KAAK,eAAe,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AACzF;AACA,CAAC,MAAM,IAAI,GAAG,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC;AAC1C,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;AACvC;AACA,CAAC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACxD;AACA,CAAC;AACD;AACA,MAAM,SAAS,GAAG,IAAID,WAAK,EAAE,CAAC;AAC9B,MAAM,OAAO,GAAG,IAAI5E,aAAO,EAAE,CAAC;AAC9B;AACA;AACA;AACA;AACA,SAAS,iBAAiB,EAAE,aAAa,GAAG;AAC5C;AACA,CAAC,MAAM,aAAa,GAAG,IAAID,aAAO,EAAE,CAAC;AACrC,CAAC,MAAM,aAAa,GAAG,IAAIA,aAAO,EAAE,CAAC;AACrC,CAAC,MAAM,UAAU,GAAG,IAAIA,aAAO,EAAE,CAAC;AAClC,CAAC,MAAM,cAAc,GAAG,IAAIA,aAAO,EAAE,CAAC;AACtC;AACA,CAAC,MAAM,SAAS,GAAG,IAAIA,aAAO,EAAE,CAAC;AACjC,CAAC,MAAM,cAAc,GAAG,IAAIA,aAAO,EAAE,CAAC;AACtC,CAAC,MAAM,eAAe,GAAG,IAAIA,aAAO,EAAE,CAAC;AACvC,CAAC,MAAM,gBAAgB,GAAG,IAAIA,aAAO,EAAE,CAAC;AACxC,CAAC,MAAM,eAAe,GAAG,IAAIA,aAAO,EAAE,CAAC;AACvC;AACA,CAAC,MAAM,SAAS,GAAG,IAAIA,aAAO,EAAE,CAAC;AACjC,CAAC,MAAM,SAAS,GAAG,IAAIA,aAAO,EAAE,CAAC;AACjC,CAAC,MAAM,QAAQ,GAAG,IAAIA,aAAO,EAAE,CAAC;AAChC;AACA,CAAC,MAAM,WAAW,GAAG,EAAE,aAAa,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC;AACnF;AACA,CAAC,KAAK,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9G;AACA,CAAC,KAAK,aAAa,CAAC,WAAW,GAAG;AAClC;AACA,EAAE,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,EAAEsC,eAAS,CAAC,QAAQ,EAAE,CAAC;AACpE,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,IAAIuC,WAAK,CAAC,aAAa,EAAE,CAAC;AAChE,EAAE,aAAa,CAAC,qBAAqB,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;AACtE;AACA,EAAE;AACF;AACA,CAAC,KAAK,aAAa,CAAC,QAAQ,GAAG;AAC/B;AACA,EAAE,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAEvC,eAAS,CAAC,QAAQ,EAAE,CAAC;AACjE,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,IAAIuC,WAAK,CAAC,aAAa,EAAE,CAAC;AAChE,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;AACnE;AACA,EAAE;AACF;AACA,CAAC,KAAK,aAAa,CAAC,YAAY,GAAG;AACnC;AACA,EAAE,MAAM,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,GAAG,EAAEvC,eAAS,CAAC,QAAQ,EAAE,CAAC;AACrE,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,IAAIuC,WAAK,CAAC,aAAa,EAAE,CAAC;AAChE,EAAE,cAAc,CAAC,qBAAqB,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;AACvE,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC;AAC1B;AACA,EAAE;AACF;AACA,CAAC,KAAK,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;AACxF;AACA;AACA,CAAC,KAAK,aAAa,CAAC,aAAa,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC;AACpH,CAAC,KAAK,aAAa,CAAC,YAAY,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC;AACjH,CAAC,KAAK,aAAa,CAAC,cAAc,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC;AACvH,CAAC,KAAK,aAAa,CAAC,aAAa,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC;AACpH;AACA;AACA,CAAC,KAAK,aAAa,CAAC,iBAAiB,GAAG;AACxC;AACA,EAAE,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC;AAC/C,EAAE,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,iBAAiB,EAAE,CAAC;AACpD;AACA,EAAE;AACF;AACA,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;AACtF;AACA,CAAC,MAAM,UAAU,GAAG,IAAI7E,aAAO,EAAE,CAAC;AAClC,CAAC,UAAU,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC;AACzC;AACA;AACA,CAAC,MAAM,SAAS,GAAG,IAAIA,aAAO,EAAE,CAAC;AACjC,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;AACrC;AACA,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;AACtE,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;AACxE,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AACxB;AACA,CAAC,MAAM,SAAS,GAAG,IAAIA,aAAO,EAAE,CAAC;AACjC;AACA,CAAC,KAAK,WAAW,KAAK,CAAC,GAAG;AAC1B;AACA,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxF;AACA,EAAE,MAAM,KAAK,WAAW,KAAK,CAAC,GAAG;AACjC;AACA,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxF;AACA,EAAE,MAAM;AACR;AACA,EAAE,MAAM,UAAU,GAAG,IAAIA,aAAO,EAAE,CAAC,KAAK,EAAE,IAAIC,aAAO,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,EAAE,CAAC;AAC1F,EAAE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;AACrD,EAAE,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;AAC3E;AACA,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;AAChG;AACA,EAAE;AACF;AACA,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;AAC9D,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;AAC5D;AACA,CAAC,IAAI,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;AACzT;AACA,CAAC,MAAM,gCAAgC,GAAG,IAAID,aAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;AACnF;AACA,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gCAAgC,EAAE,CAAC;AAC3F,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAC7C;AACA,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;AACrD;AACA;AACA,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;AAC9C;AACA,CAAC,OAAO,UAAU,CAAC;AACnB;AACA,CAAC;AACD;AACA;AACA;AACA,SAAS,aAAa,EAAE,KAAK,GAAG;AAChC;AACA,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;AACpB;AACA,CAAC,MAAM,KAAK,GAAG;AACf,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP;AACA,EAAE,CAAC;AACH;AACA,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG;AACpB;AACA,EAAE,OAAO,CAAC,IAAI,EAAE,qGAAqG,EAAE,CAAC;AACxH,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE,CAAC;AACpB;AACA,EAAE;AACF;AACA,CAAC,OAAO,KAAK,EAAE,KAAK,EAAE,CAAC;AACvB;AACA,CAAC;AACD;AACA;AACA;AACA,SAAS,gBAAgB,EAAE,KAAK,GAAG;AACnC;AACA,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG;AACxD;AACA,EAAE,OAAO,UAAU,EAAE,GAAG,EAAE,CAAC;AAC3B;AACA,EAAE,EAAE,CAAC;AACL;AACA,CAAC,OAAO,KAAK,CAAC;AACd;AACA,CAAC;AACD;AACA,SAAS,0BAA0B,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG;AACxD;AACA,CAAC,KAAK,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;AACpC,CAAC,KAAK,EAAE,KAAK,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAChD;AACA,CAAC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;AACvE;AACA,CAAC;AACD;AACA,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG;AACxB;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG;AAClE;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC;AACD;AACA,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG;AACjC;AACA,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG;AACjD;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB;AACA,EAAE;AACF;AACA,CAAC,OAAO,CAAC,CAAC;AACV;AACA;;AChtIO,MAAM+E,UAAmB5J,SAAAA,OAAAA,CAAAA;IAE5BsD,IAAK,CAAA,EAAErB,GAAG,EAAEmB,MAAM,EAAER,UAAU,EAAEW,OAAO,EAAkB,EAAE;AACvD,QAAA,MAAMwE,eAAe,CAAC7H,IAAAA,GAAAA;YAClBkD,MAAOpD,CAAAA,OAAAA,CAAQC,YAAY,CAACC,IAAAA,CAAAA,CAAAA,CAAAA;AAChC,SAAA,CAAA;AACA,QAAA,MAAM2B,SAAS,IAAIgI,SAAAA,CAAU,IAAI,CAAChG,OAAO,CAACF,cAAc,CAAA,CAAA;AACxD9B,QAAAA,MAAAA,CAAOwG,OAAO,CAAC,IAAI,CAACxE,OAAO,CAAC7C,IAAI,CAAA,CAAA;AAChCa,QAAAA,MAAAA,CAAOyG,eAAe,CAAC,IAAI,CAACzE,OAAO,CAACL,YAAY,CAAA,CAAA;AAChD3B,QAAAA,MAAAA,CAAOyB,IAAI,CAACrB,GAAK8F,EAAAA,YAAAA,EAAcnF,UAAYW,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C,KAAA;AACJ,CAAA;AAXaqG,UAAAA,GAAAA,UAAAA,CAAAA;IADZ9F,cAAe,CAAA;AAAC,QAAA,KAAA;AAAM,KAAA,CAAA;AACV8F,CAAAA,EAAAA,UAAAA,CAAAA;;ACGb;AACA;AACA;AACA,MAAM,UAAU,SAASE,uBAAiB,CAAC;AAC3C;AACA,CAAC,WAAW,EAAE,OAAO,GAAG;AACxB;AACA,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,IAAI,GAAGC,mBAAa,CAAC;AAC5B;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC,KAAK,EAAE,MAAM,GAAG;AACjB;AACA,EAAE;AACF;AACA,GAAG,eAAe,GAAG,CAAC;AACtB,GAAG,gBAAgB,GAAG,CAAC;AACvB,GAAG,iBAAiB,GAAG,CAAC;AACxB,GAAG,iBAAiB,GAAG,CAAC;AACxB,GAAG,UAAU,GAAG,WAAW,eAAe,EAAE,GAAG,GAAG;AAClD;AACA,IAAI,SAAS,eAAe;AAC5B;AACA,KAAK,KAAK,eAAe,EAAE,MAAM,IAAI,KAAK,EAAE,gCAAgC,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;AAC/F,KAAK,KAAK,gBAAgB,EAAE,MAAM,IAAI,KAAK,EAAE,iCAAiC,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;AACjG,KAAK,KAAK,iBAAiB,EAAE,MAAM,IAAI,KAAK,EAAE,qCAAqC,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;AACtG,KAAK,QAAQ;AACb,KAAK,KAAK,iBAAiB,EAAE,MAAM,IAAI,KAAK,EAAE,kCAAkC,KAAK,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;AACnG;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,sBAAsB,GAAG,CAAC;AAC7B,GAAG,iBAAiB,GAAG,CAAC;AACxB,GAAG,qBAAqB,GAAG,CAAC;AAC5B;AACA,GAAG,OAAO,GAAG,IAAI;AACjB;AACA,GAAG,KAAK,GAAG,WAAW,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG;AACnD;AACA,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC;AAC1B;AACA,IAAI,SAAS,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG;AACtB,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE;AAC7B,KAAK,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC;AACvG;AACA,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,GAAG,GAAG,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG;AAC3G;AACA,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;AACrC,KAAK,CAAC,IAAI,SAAS,CAAC;AACpB,KAAK,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC;AACxG;AACA,KAAK;AACL;AACA,IAAI,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAA8B,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD,KAAK,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpC;AACA,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB;AACA,IAAI;AACJ;AACA;AACA,GAAG,eAAe,GAAG,WAAW,MAAM,GAAG;AACzC;AACA;AACA;AACA,IAAI,MAAM,cAAc,GAAG,WAAW;AACtC,KAAK,QAAQ,GAAG,mCAAmC;AACnD,KAAK,WAAW,GAAG,sCAAsC;AACzD,KAAK,SAAS,GAAG,sBAAsB;AACvC,KAAK,aAAa,GAAG,mCAAmC;AACxD;AACA;AACA,KAAK,MAAM,GAAG;AACd;AACA,MAAM,KAAK,EAAE,CAAC;AACd;AACA,MAAM,MAAM,EAAE,EAAE;AAChB;AACA,MAAM,QAAQ,EAAE,EAAE;AAClB;AACA,MAAM,WAAW,EAAE,MAAM;AACzB;AACA,MAAM,MAAM,EAAE,EAAE;AAChB;AACA,MAAM,KAAK,EAAE,GAAG;AAChB;AACA,MAAM,QAAQ,EAAE,GAAG;AACnB;AACA,MAAM,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACzB;AACA,MAAM,CAAC;AACP;AACA,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC;AACpB;AACA,IAAI,KAAK,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG;AAC3E;AACA,KAAK,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC;AACtD;AACA,KAAK;AACL;AACA;AACA,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG;AACtD;AACA,KAAK,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;AAC1D;AACA,KAAK;AACL;AACA,IAAI,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC;AAC3C,IAAI,MAAM,CAAC,WAAW,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACpC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;AACjC;AACA,IAAI,QAAQ,IAAI,GAAG;AACnB;AACA,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC;AAC5B,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,MAAM;AACjC,KAAK,MAAM,CAAC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;AAClC;AACA,KAAK,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;AACrC;AACA,MAAM,MAAM,CAAC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACrC,MAAM,SAAS;AACf;AACA,MAAM;AACN;AACA,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG;AAC3C;AACA,MAAM,MAAM,CAAC,KAAK,GAAG,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9C;AACA,MAAM;AACN;AACA,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG;AAC9C;AACA,MAAM,MAAM,CAAC,QAAQ,GAAG,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACjD;AACA,MAAM;AACN;AACA,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG;AAC5C;AACA,MAAM,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAAC;AACxC,MAAM,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AACjC;AACA,MAAM;AACN;AACA,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG;AAChD;AACA,MAAM,MAAM,CAAC,KAAK,IAAI,qBAAqB,CAAC;AAC5C,MAAM,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AACjD,MAAM,MAAM,CAAC,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAChD;AACA,MAAM;AACN;AACA,KAAK,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,iBAAiB,QAAQ,MAAM,CAAC,KAAK,GAAG,qBAAqB,EAAE,GAAG,MAAM;AACnG;AACA,KAAK;AACL;AACA,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,iBAAiB,EAAE,GAAG;AAClD;AACA,KAAK,UAAU,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;AACjE;AACA,KAAK;AACL;AACA,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,qBAAqB,EAAE,GAAG;AACtD;AACA,KAAK,UAAU,EAAE,iBAAiB,EAAE,8BAA8B,EAAE,CAAC;AACrE;AACA,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB;AACA,IAAI;AACJ;AACA,GAAG,mBAAmB,GAAG,WAAW,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG;AACnD;AACA,IAAI,MAAM,cAAc,GAAG,CAAC,CAAC;AAC7B;AACA,IAAI;AACJ;AACA,KAAK,EAAE,EAAE,cAAc,GAAG,CAAC,QAAQ,cAAc,GAAG,MAAM,EAAE;AAC5D;AACA,OAAO,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE;AACjF,MAAM;AACN;AACA;AACA,KAAK,OAAO,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;AACrC;AACA,KAAK;AACL;AACA,IAAI,KAAK,cAAc,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG;AACrE;AACA,KAAK,UAAU,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;AAC7D;AACA,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AAClD;AACA,IAAI,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG;AAC9B;AACA,KAAK,UAAU,EAAE,iBAAiB,EAAE,iCAAiC,EAAE,CAAC;AACxE;AACA,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC5B;AACA,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,cAAc,CAAC;AACvC,IAAI,MAAM,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC,EAAE,CAAC;AAC1C,IAAI,MAAM,eAAe,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,CAAC;AACtD,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;AAC1B;AACA;AACA,IAAI,QAAQ,EAAE,aAAa,GAAG,CAAC,QAAQ,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG;AACnE;AACA,KAAK,KAAK,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG;AACxC;AACA,MAAM,UAAU,EAAE,eAAe,EAAE,CAAC;AACpC;AACA,MAAM;AACN;AACA,KAAK,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AACvC,KAAK,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AACvC,KAAK,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AACvC,KAAK,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AACvC;AACA,KAAK,KAAK,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,EAAE,GAAG;AACrI;AACA,MAAM,UAAU,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;AAClE;AACA,MAAM;AACN;AACA;AACA;AACA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC;AACxB;AACA,KAAK,QAAQ,EAAE,GAAG,GAAG,OAAO,QAAQ,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,GAAG;AAChE;AACA,MAAM,KAAK,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AAC/B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,GAAG,CAAC;AACvC,MAAM,KAAK,YAAY,GAAG,KAAK,IAAI,GAAG,CAAC;AACvC;AACA,MAAM,KAAK,EAAE,CAAC,KAAK,KAAK,QAAQ,GAAG,GAAG,KAAK,GAAG,OAAO,EAAE,GAAG;AAC1D;AACA,OAAO,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;AAC5D;AACA,OAAO;AACP;AACA,MAAM,KAAK,YAAY,GAAG;AAC1B;AACA;AACA,OAAO,MAAM,SAAS,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;AAC1C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG;AAC1C;AACA,QAAQ,eAAe,EAAE,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC;AAC9C;AACA,QAAQ;AACR;AACA;AACA,OAAO,MAAM;AACb;AACA;AACA,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;AACvE,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;AAClC;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,KAAK,MAAM,CAAC,GAAG,cAAc,CAAC;AAC9B,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG;AACpC;AACA,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,MAAM,SAAS,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AACvD,MAAM,GAAG,IAAI,cAAc,CAAC;AAC5B,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAC3D,MAAM,GAAG,IAAI,cAAc,CAAC;AAC5B,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAC3D,MAAM,GAAG,IAAI,cAAc,CAAC;AAC5B,MAAM,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;AAC3D,MAAM,MAAM,IAAI,CAAC,CAAC;AAClB;AACA,MAAM;AACN;AACA,KAAK,aAAa,GAAG,CAAC;AACtB;AACA,KAAK;AACL;AACA,IAAI,OAAO,SAAS,CAAC;AACrB;AACA,IAAI,CAAC;AACL;AACA,EAAE,MAAM,kBAAkB,GAAG,WAAW,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,GAAG;AAC3F;AACA,GAAG,MAAM,CAAC,GAAG,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC;AAC7C,GAAG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;AACpD;AACA,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;AACzE,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;AACzE,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;AACzE,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACnC;AACA,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,iBAAiB,GAAG,WAAW,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,GAAG;AAC1F;AACA,GAAG,MAAM,CAAC,GAAG,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC;AAC7C,GAAG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;AACpD;AACA;AACA,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAGC,eAAS,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;AACrH,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAGA,eAAS,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;AACrH,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAGA,eAAS,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;AACrH,GAAG,SAAS,EAAE,UAAU,GAAG,CAAC,EAAE,GAAGA,eAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;AAC5D;AACA,GAAG,CAAC;AACJ;AACA,EAAE,MAAM,SAAS,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;AAC7C,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AACpB,EAAE,MAAM,gBAAgB,GAAG,eAAe,EAAE,SAAS,EAAE,CAAC;AACxD;AACA,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK;AAClC,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM;AAC9B,GAAG,eAAe,GAAG,mBAAmB,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtF;AACA;AACA,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC;AACjB,EAAE,IAAI,WAAW,CAAC;AAClB;AACA,EAAE,SAAS,IAAI,CAAC,IAAI;AACpB;AACA,GAAG,KAAKC,eAAS;AACjB;AACA,IAAI,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;AAC3D;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,GAAG;AAC7C;AACA,KAAK,kBAAkB,EAAE,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AACrE;AACA,KAAK;AACL;AACA,IAAI,IAAI,GAAG,UAAU,CAAC;AACtB,IAAI,IAAI,GAAGA,eAAS,CAAC;AACrB,IAAI,MAAM;AACV;AACA,GAAG,KAAKF,mBAAa;AACrB;AACA,IAAI,WAAW,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,SAAS,GAAG,IAAI,WAAW,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;AACzD;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,GAAG;AAC7C;AACA,KAAK,iBAAiB,EAAE,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AACnE;AACA,KAAK;AACL;AACA,IAAI,IAAI,GAAG,SAAS,CAAC;AACrB,IAAI,IAAI,GAAGA,mBAAa,CAAC;AACzB,IAAI,MAAM;AACV;AACA,GAAG;AACH;AACA,IAAI,MAAM,IAAI,KAAK,EAAE,sCAAsC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAE1E;AACA,GAAG;AACH;AACA,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACtB,GAAG,IAAI,EAAE,IAAI;AACb,GAAG,MAAM,EAAE,gBAAgB,CAAC,MAAM;AAClC,GAAG,KAAK,EAAE,gBAAgB,CAAC,KAAK;AAChC,GAAG,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;AACtC,GAAG,IAAI,EAAE,IAAI;AACb,GAAG,CAAC;AACJ;AACA,EAAE;AACF;AACA,CAAC,WAAW,EAAE,KAAK,GAAG;AACtB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACpB,EAAE,OAAO,IAAI,CAAC;AACd;AACA,EAAE;AACF;AACA,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG;AAC1C;AACA,EAAE,SAAS,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG;AAC9C;AACA,GAAG,SAAS,OAAO,CAAC,IAAI;AACxB;AACA,IAAI,KAAKE,eAAS,CAAC;AACnB,IAAI,KAAKF,mBAAa;AACtB;AACA,KAAK,OAAO,CAAC,UAAU,GAAG1F,0BAAoB,CAAC;AAC/C,KAAK,OAAO,CAAC,SAAS,GAAGgB,kBAAY,CAAC;AACtC,KAAK,OAAO,CAAC,SAAS,GAAGA,kBAAY,CAAC;AACtC,KAAK,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;AACrC,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B;AACA,KAAK,MAAM;AACX;AACA,IAAI;AACJ;AACA,GAAG,KAAK,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC5C;AACA,GAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAChE;AACA,EAAE;AACF;AACA;;ACzbO,MAAM6E,UAAmBlK,SAAAA,OAAAA,CAAAA;IAE5BsD,IAAK,CAAA,EAAErB,GAAG,EAAEmB,MAAM,EAAER,UAAU,EAAEW,OAAO,EAAEP,WAAW,EAAkB,EAAQ;QAC1EA,WAAcrP,GAAAA,MAAAA,CAAOwW,MAAM,CAAC;YAAEC,OAAShB,EAAAA,sCAAAA;SAAoCpG,EAAAA,WAAAA,CAAAA,CAAAA;AAC3E,QAAA,MAAMnB,SAAS,IAAIwI,UAAAA,CAAW,IAAI,CAACxG,OAAO,CAACF,cAAc,CAAA,CAAA;AACzD9B,QAAAA,MAAAA,CAAOwG,OAAO,CAAC,IAAI,CAACxE,OAAO,CAAC7C,IAAI,CAAA,CAAA;AAChCa,QAAAA,MAAAA,CAAOyG,eAAe,CAAC,IAAI,CAACzE,OAAO,CAACL,YAAY,CAAA,CAAA;QAChD3B,MAAOyB,CAAAA,IAAI,CAACrB,GAAAA,EAAKxB,CAAAA,GAAAA,GAAO2C,MAAOzP,CAAAA,MAAAA,CAAOwW,MAAM,CAAC1J,GAAKuC,EAAAA,WAAAA,CAAAA,CAAAA,EAAeJ,UAAYW,EAAAA,OAAAA,CAAAA,CAAAA;AACjF,KAAA;AAEJ,CAAA;AAVa2G,UAAAA,GAAAA,UAAAA,CAAAA;IADZpG,cAAe,CAAA;AAAC,QAAA,KAAA;AAAM,KAAA,CAAA;AACVoG,CAAAA,EAAAA,UAAAA,CAAAA;;ACDN,MAAMI,cAAuBtK,SAAAA,OAAAA,CAAAA;IAEhCsD,IAAK,CAAA,EAAErB,GAAG,EAAEmB,MAAM,EAAER,UAAU,EAAEW,OAAO,EAAEP,WAAW,EAAkB,EAAQ;AAC1E,QAAA,MAAM+E,eAAe,CAACtH,GAAAA,GAAAA;YAClB2C,MAAOzP,CAAAA,MAAAA,CAAOwW,MAAM,CAAC1J,GAAKuC,EAAAA,WAAAA,CAAAA,CAAAA,CAAAA;AAC9B,SAAA,CAAA;AACA,QAAA,MAAMnB,SAAS,IAAIoE,mBAAAA,CAAc,IAAI,CAACpC,OAAO,CAACF,cAAc,CAAA,CAAA;AAC5D9B,QAAAA,MAAAA,CAAOwG,OAAO,CAAC,IAAI,CAACxE,OAAO,CAAC7C,IAAI,CAAA,CAAA;AAChCa,QAAAA,MAAAA,CAAOyG,eAAe,CAAC,IAAI,CAACzE,OAAO,CAACL,YAAY,CAAA,CAAA;AAChD3B,QAAAA,MAAAA,CAAOyB,IAAI,CAACrB,GAAK8F,EAAAA,YAAAA,EAAcnF,UAAYW,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C,KAAA;AAEJ,CAAA;AAZa+G,cAAAA,GAAAA,UAAAA,CAAAA;IADZxG,cAAe,CAAA;AAAC,QAAA,KAAA;AAAO,QAAA,KAAA;AAAO,QAAA,MAAA;AAAQ,QAAA,MAAA;AAAO,KAAA,CAAA;AACjCwG,CAAAA,EAAAA,cAAAA,CAAAA;;ACLN,MAAMC,eAAAA,CAAAA;IAET,OAAOC,cAAAA,CAAejZ,MAAc,EAAE;AAClC,QAAA,OAAO,IAAI,CAACkZ,cAAc,CAACtH,GAAG,CAAC5R,OAAOkO,WAAW,CAAA,CAAA;AACrD,KAAA;IACA,OAAOiL,cAAAA,CAAenZ,MAAc,EAAE;AAClC,QAAA,OAAO,IAAI,CAACkZ,cAAc,CAACrZ,GAAG,CAACG,OAAOkO,WAAW,CAAA,CAAA;AACrD,KAAA;IACA,OAAOkL,oBAAAA,CAAqBpZ,MAAc,EAAE;AACxC,QAAA,IAAIiO,KAAQ,GAAA,IAAA,CAAA;QACZ,IAAIC,WAAAA,GAAclO,OAAOkO,WAAW,CAAA;AACpC,QAAA,MAAOA,WAAgB9L,KAAAA,MAAAA,CAAO8L,WAAW,CAAC5L,SAAS,CAAE;AACjD,YAAA,IAAI+P,MAAS2G,GAAAA,eAAAA,CAAgBE,cAAc,CAACtH,GAAG,CAAC1D,WAAAA,CAAAA,CAAAA;AAChD,YAAA,IAAImE,MAAQ,EAAA;AACR,gBAAA,IAAIpE,UAAU,IAAM,EAAA;oBAChBA,KAAQ7L,GAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA;AAC1B,iBAAA;gBACAL,MAAOwW,CAAAA,MAAM,CAAC3K,KAAOoE,EAAAA,MAAAA,CAAAA,CAAAA;AACzB,aAAA;YACAnE,WAAc9L,GAAAA,MAAAA,CAAOiX,cAAc,CAACnL,WAAAA,CAAAA,CAAAA;AACxC,SAAA;QACA,OAAOD,KAAAA,CAAAA;AACX,KAAA;AACJ,CAAA;AAvBa+K,eAAAA,CACFE,iBAAiB,IAAI/G,GAAAA,EAAAA,CAAAA;AAqCzB,SAAS3I,QAAAA,CAASxJ,MAAe,EAAEsZ,WAAoB,EAAA;AAC1D,IAAA,IAAIC,OAAgD,GAAA,IAAA,CAAA;IACpD,SAASC,UAAAA,CAAWxZ,MAAc,EAAEsZ,WAAmB,EAAA;AACnD,QAAA,IAAIG,YAAYT,eAAgBE,CAAAA,cAAc,CAACtH,GAAG,CAAC5R,OAAOkO,WAAW,CAAA,CAAA;AACrE,QAAA,IAAIuL,cAAc7Y,SAAW,EAAA;YACzB6Y,SAAYrX,GAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA;AAC1BuW,YAAAA,eAAAA,CAAgBE,cAAc,CAACxL,GAAG,CAAC1N,MAAAA,CAAOkO,WAAW,EAAEuL,SAAAA,CAAAA,CAAAA;AAC3D,SAAA;QACAA,SAAS,CAACH,YAAY,GAAGC,OAAAA,CAAAA;AAC7B,KAAA;AACA,IAAA,IAAIvZ,WAAWY,SAAW,EAAA;AACtB,QAAA,OAAO4I,SAAS,EAAC,CAAA,CAAA;KAEhB,MAAA,IAAI,OAAO8P,WAAAA,KAAgB,WAAa,EAAA;QACzCC,OAAUvZ,GAAAA,MAAAA,CAAAA;QACV,OAAOwZ,UAAAA,CAAAA;KAEN,MAAA;AACDD,QAAAA,OAAAA,GAAU,EAAC,CAAA;AACXC,QAAAA,UAAAA,CAAWxZ,MAAQsZ,EAAAA,WAAAA,CAAAA,CAAAA;AACvB,KAAA;AACJ;;ACxDO,MAAMI,qBAAwB,GAAA;IACjC/W,MAAQD,EAAAA,MAAAA,CAAOC,MAAM,CAACC,IAAI;IAC1B+W,WAAajX,EAAAA,MAAAA,CAAOI,SAAS,CAACC,EAAE;IAChC6W,YAAclX,EAAAA,MAAAA,CAAOI,SAAS,CAACE,GAAG;IAClC6W,cAAgBnX,EAAAA,MAAAA,CAAOI,SAAS,CAACG,KAAK;AAC1C,CAAC,CAAA;AAIM,MAAM6W,0BAAAA,CAAAA;;AAGTC,QAAAA,IAAAA,CAAAA,KAAAA,GAA+BL,sBAAsBG,cAAc,CAAA;aAGnEvV,IAAe,GAAA,CAAA,CAAA;;AAEnB,CAAA;;IANKkF,QAAS,CAAA;QAAE4D,KAAOsM,EAAAA,qBAAAA;AAAsB,KAAA,CAAA;AAFhCI,CAAAA,EAAAA,0BAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAKRtQ,IAAAA,QAAAA;AALQsQ,CAAAA,EAAAA,0BAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACVN,MAAME,cAAAA,CAAAA;;AAETC,QAAAA,IAAAA,CAAAA,UAAAA,GAAqBD,eAAeE,cAAc,EAAA,CAAA;AAClD/K,QAAAA,IAAAA,CAAAA,IAAAA,GAAeyG,gBAAUuE,YAAY,EAAA,CAAA;aACrC3a,IAAe,GAAA,EAAA,CAAA;aACf4a,IAAe,GAAA,gBAAA,CAAA;;AACnB,CAAA;AANaJ,cAAAA,CACFE,cAAyB,GAAA,CAAA;;ACE7B,MAAMG,SAAiDL,SAAAA,cAAAA,CAAAA;AAE1D,IAAA,IAAIM,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;IACA,IAAID,OAAAA,CAAQna,CAAU,EAAE;AACpB,QAAA,IAAI,IAAI,CAACoa,QAAQ,KAAKpa,CAAG,EAAA;YACrB,IAAI,CAACoa,QAAQ,GAAGpa,CAAAA,CAAAA;YAChB,IAAI,CAACmS,OAAO,CAACkI,kBAAkB,CAACC,eAAe,CAAC,IAAI,EAAEta,CAAAA,CAAAA,CAAAA;AAC1D,SAAA;AACJ,KAAA;IAyBUua,aAAgB,GAAA;AACtB,QAAA,IAAI,CAACC,aAAa,EAAA,CAAA;QAClB,IAAI,CAACrI,OAAO,CAACsI,eAAe,CAAC,IAAI,CAACjM,IAAI,EAAE,IAAI,CAAA,CAAA;QAE5C,IAAI,IAAI,CAAC4L,QAAQ,EAAE;YACf,IAAI,CAACjI,OAAO,CAACkI,kBAAkB,CAACC,eAAe,CAAC,IAAI,EAAE,KAAA,CAAA,CAAA;AAC1D,SAAA;QACA,IAAI,IAAI,CAACI,SAAS,IAAI,IAAI,CAACC,KAAK,CAACC,YAAY,EAAE;AAC3C,YAAA,IAAI,CAACF,SAAS,EAAA,CAAA;AAClB,SAAA;AACJ,KAAA;AAEAG,IAAAA,QAAAA,CAASjb,QAAkB,EAAEkb,QAAgB,EAAErP,MAAiB,GAAA,CAAC,CAAC,EAAE;QAChE,IAAI,CAAC0G,OAAO,CAAC4I,SAAS,CAACF,QAAQ,CAAC,IAAI,EAAEjb,QAAAA,EAAUkb,QAAUrP,EAAAA,MAAAA,CAAAA,CAAAA;AAC9D,KAAA;AAEAuP,IAAAA,SAAAA,CAAUpb,QAAkB,EAAE;QAC1B,IAAI,CAACuS,OAAO,CAAC4I,SAAS,CAACC,SAAS,CAAC,IAAI,EAAEpb,QAAAA,CAAAA,CAAAA;AAC3C,KAAA;IAEA4a,aAAgB,GAAA;AACZ,QAAA,IAAI,CAACrI,OAAO,CAAC4I,SAAS,CAACP,aAAa,CAAC,IAAI,CAAA,CAAA;AAC7C,KAAA;IAEAtM,OAAU,GAAA;AACN,QAAA,IAAI,IAAI,CAACyM,KAAK,CAACM,SAAS,EAAE;YACtB,OAAO,KAAA,CAAA;AACX,SAAA;AACA,QAAA,IAAI,CAACC,gBAAgB,EAAA,CAAA;QACrB,OAAO,IAAA,CAAA;AACX,KAAA;IAEAA,gBAAmB,GAAA;QACf,IAAI,IAAI,CAACX,aAAa,EAAE;AACpB,YAAA,IAAI,CAACA,aAAa,EAAA,CAAA;AACtB,SAAA;AACA,QAAA,IAAI,CAACI,KAAK,CAACM,SAAS,GAAG,IAAA,CAAA;AAC3B,KAAA;;;aA7DQb,QAAoB,GAAA,IAAA,CAAA;aAK5BH,IAAe,GAAA,WAAA,CAAA;AAUfU,QAAAA,IAAAA,CAAAA,KAAAA,GAOI,EAAC,CAAA;;AAwCT;;ACxEA,MAAM,SAAEQ,OAAK,EAAEC,IAAI,EAAE,GAAG3F,eAAAA,CAAAA;AAEjB,MAAM4F,gBAAyBnB,SAAAA,SAAAA,CAAAA;AAYlC,IAAA,IAAIoB,IAAO,GAAA;QACP,OAAO,IAAI,CAACC,KAAK,CAAA;AACrB,KAAA;AAEA,IAAA,IAAIC,KAAQ,GAAA;QACR,OAAO,IAAI,CAACC,MAAM,CAAA;AACtB,KAAA;AAEAC,IAAAA,UAAAA,CAAWC,EAAU,EAAE;QACnB,IAAIL,IAAAA,GAAO,IAAI,CAACM,eAAe,EAAA,CAAA;AAC/B,QAAA,IAAIN,QAAQ,IAAM,EAAA,OAAA;QAElB,IAAI,CAACG,MAAM,CAAC1Z,OAAO,CAAC/B,CAAAA,CAAKA,GAAAA,CAAAA,CAAEma,OAAO,GAAGna,CAAMsb,KAAAA,IAAAA,CAAAA,CAAAA;QAE3C,IAAI,IAAI,CAACO,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC3X,IAAI,EAAE;YACvC,IAAI,CAAC0X,SAAS,IAAIF,EAAAA,CAAAA;AAClB,YAAA,IAAIlV,CAAI0U,GAAAA,OAAAA,CAAM,IAAI,CAACU,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC3X,IAAI,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA;YACxD,IAAI,CAAC4X,iBAAiB,CAACT,IAAAA,EAAM,IAAI,CAACQ,UAAU,CAAClC,KAAK,CAACnT,CAAAA,CAAAA,CAAAA,CAAAA;SAElD,MAAA;YACD,IAAI,CAACsV,iBAAiB,CAACT,IAAM,EAAA,CAAA,CAAA,CAAA;AACjC,SAAA;AACJ,KAAA;AAEAU,IAAAA,YAAAA,CAAaV,IAAmB,EAAEnX,IAAe,GAAA,CAAC,EAAE;AAChD,QAAA,IAAI,IAAI,CAAC8X,SAAS,KAAKX,IAAM,EAAA;YACzB,IAAI,CAACW,SAAS,GAAGX,IAAAA,CAAAA;YACjB,IAAI,CAACO,SAAS,GAAG,CAAA,CAAA;AACjB,YAAA,IAAI,CAACC,UAAU,CAAC3X,IAAI,GAAGA,IAAAA,CAAAA;AAC3B,SAAA;AACJ,KAAA;AAEA+X,IAAAA,SAAAA,CAAUZ,IAAmB,EAAE;AAC3B,QAAA,IAAIlc,QAAQ,IAAI,CAACqc,MAAM,CAACU,OAAO,CAACb,IAAAA,CAAAA,CAAAA;QAChC,IAAIlc,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACqc,MAAM,CAACtb,IAAI,CAACmb,IAAAA,CAAAA,CAAAA;AACrB,SAAA;AACJ,KAAA;AAEAc,IAAAA,YAAAA,CAAad,IAAmB,EAAE;AAC9B,QAAA,IAAIlc,QAAQ,IAAI,CAACqc,MAAM,CAACU,OAAO,CAACb,IAAAA,CAAAA,CAAAA;QAChC,IAAIlc,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACqc,MAAM,CAACnc,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAC9B,SAAA;AACJ,KAAA;IAEAwc,eAAkB,GAAA;QACd,OAAO,IAAI,CAACK,SAAS,IAAI,IAAI,CAACR,MAAM,CAACY,MAAM,CAACrc,CAAAA,CAAKA,GAAAA,CAAAA,CAAEma,OAAO,CAAA,CAAEmC,IAAI,CAAC,CAACjc,CAAAA,EAAG4F,CAAMA,GAAAA,CAAAA,CAAEsW,QAAQ,GAAGlc,CAAEkc,CAAAA,QAAQ,CAAC,CAAC,CAAE,CAAA,CAAA;AAC1G,KAAA;IAEQR,iBAAkBT,CAAAA,IAAmB,EAAE7U,CAAS,EAAE;AACtD,QAAA,MAAMuE,IAAO,GAAA,IAAI,CAACwD,IAAI,EAAEtD,EAAKoQ,GAAAA,IAAAA,CAAAA;QAC7B,MAAM,EAAEkB,GAAG,EAAEC,IAAI,EAAEC,GAAG,EAAEC,aAAa,EAAEC,aAAa,EAAE,GAAG1R,EAAAA,CAAAA;QAEzD,MAAM2R,aAAAA,GAAgB7R,IAAKwR,CAAAA,GAAG,IAAIA,GAAAA,IAAOxR,IAAKyR,CAAAA,IAAI,IAAIA,IAAAA,IAAQzR,IAAK0R,CAAAA,GAAG,IAAIA,GAAAA,CAAAA;AAC1E,QAAA,MAAMI,kBAAqB,GAAA,CAAC9R,IAAK+R,CAAAA,QAAQ,CAACC,MAAM,CAACL,aAAAA,CAAAA,IAAkB,CAAC3R,IAAAA,CAAKiS,UAAU,CAACD,MAAM,CAACJ,aAAAA,CAAAA,CAAAA;AAC3F,QAAA,MAAMM,YAAYL,aAAiBC,IAAAA,kBAAAA,CAAAA;AAEnC9R,QAAAA,IAAAA,CAAK+R,QAAQ,CAAC3B,IAAI,CAACuB,aAAelW,EAAAA,CAAAA,CAAAA,CAAAA;AAClCuE,QAAAA,IAAAA,CAAKiS,UAAU,CAACE,KAAK,CAACP,aAAenW,EAAAA,CAAAA,CAAAA,CAAAA;AACrCuE,QAAAA,IAAAA,CAAKwR,GAAG,GAAGpB,IAAAA,CAAKpQ,IAAKwR,CAAAA,GAAG,EAAEA,GAAK/V,EAAAA,CAAAA,CAAAA,CAAAA;AAC/BuE,QAAAA,IAAAA,CAAKyR,IAAI,GAAGrB,IAAAA,CAAKpQ,IAAKyR,CAAAA,IAAI,EAAEA,IAAMhW,EAAAA,CAAAA,CAAAA,CAAAA;AAClCuE,QAAAA,IAAAA,CAAK0R,GAAG,GAAGtB,IAAAA,CAAKpQ,IAAK0R,CAAAA,GAAG,EAAEA,GAAKjW,EAAAA,CAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAIoW,aAAe,EAAA;AACf7R,YAAAA,IAAAA,CAAKoS,sBAAsB,EAAA,CAAA;AAC/B,SAAA;AAEA,QAAA,IAAI,IAAI,CAACC,UAAU,KAAKH,SAAW,EAAA;YAC/B,IAAI,CAACG,UAAU,GAAGH,SAAAA,CAAAA;AAClB,YAAA,IAAI,CAACI,SAAS,IAAI,IAAI,CAACA,SAAS,CAACJ,SAAAA,CAAAA,CAAAA;AACrC,SAAA;AACJ,KAAA;;;aAnFQ3B,KAA8B,GAAA,IAAA,CAAA;aAC9BU,SAAkC,GAAA,IAAA,CAAA;AAClCR,QAAAA,IAAAA,CAAAA,MAAAA,GAA0B,EAAE,CAAA;aAC5BI,SAAoB,GAAA,CAAA,CAAA;aACpBwB,UAAsB,GAAA,KAAA,CAAA;AAG9BvB,QAAAA,IAAAA,CAAAA,UAAAA,GAAyC,IAAInC,0BAAAA,EAAAA,CAAAA;aAE7C2D,SAAkC,GAAA,IAAA,CAAA;;AA2EtC,CAAA;;AA9EKjU,IAAAA,QAAAA;AAPQgS,CAAAA,EAAAA,gBAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACHN,MAAMkC,aAAsBrD,SAAAA,SAAAA,CAAAA;AAqB/B,IAAA,IAAIyC,aAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAACa,cAAc,CAACC,IAAI,CAAC,IAAI,CAACjP,IAAI,CAACuO,QAAQ,CAAE9X,CAAAA,GAAG,CAAC,IAAI,CAACyY,eAAe,CAAA,CAAA;AAChF,KAAA;AAEA,IAAA,IAAId,aAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAACe,cAAc,CAACF,IAAI,CAAC,IAAI,CAACjP,IAAI,CAACyO,UAAU,CAAEW,CAAAA,QAAQ,CAAC,IAAI,CAACC,eAAe,CAAA,CAAA;AACvF,KAAA;IAEAnM,MAAS,GAAA;AACL,QAAA,IAAI,CAAClD,IAAI,CAACsP,QAAQ,GAAG,IAAA,CAAA;AAErB,QAAA,MAAMC,MAAS,GAAA,IAAI,CAACC,MAAM,CAACD,MAAM,CAAA;AACjC,QAAA,IAAI,CAACvB,GAAG,GAAGuB,MAAAA,CAAOvB,GAAG,CAAA;AACrB,QAAA,IAAI,CAACC,IAAI,GAAGsB,MAAAA,CAAOtB,IAAI,CAAA;AACvB,QAAA,IAAI,CAACC,GAAG,GAAGqB,MAAAA,CAAOrB,GAAG,CAAA;QACrB,IAAI,CAAClO,IAAI,CAACuO,QAAQ,CAACxP,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;QAE7B,IAAI,CAAC0Q,KAAK,GAAG,IAAI,CAACD,MAAM,CAACE,YAAY,CAACH,MAAAA,EAAQ1C,gBAAkB,EAAA,IAAA,CAAA,CAAA;AAChE,QAAA,IAAI,CAAC4C,KAAK,CAAC/B,SAAS,CAAC,IAAI,CAAA,CAAA;AAC7B,KAAA;IAEAxB,SAAY,GAAA;AACR,QAAA,IAAI,CAACuD,KAAK,CAAC7B,YAAY,CAAC,IAAI,CAAA,CAAA;AAChC,KAAA;AAEA/W,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;QACf,IAAI,IAAI,CAACwC,MAAM,EAAE;YACb,IAAI,CAAC3P,IAAI,CAAC2P,MAAM,CAAC,IAAI,CAACA,MAAM,CAACpB,QAAQ,CAAA,CAAA;AACzC,SAAA;AACJ,KAAA;;;AAjDQS,QAAAA,IAAAA,CAAAA,cAAAA,GAA0B,IAAIpK,aAAAA,EAAAA,CAAAA;AAC9BuK,QAAAA,IAAAA,CAAAA,cAAAA,GAA6B,IAAItK,gBAAAA,EAAAA,CAAAA;aAEzCkJ,QAAmB,GAAA,EAAA,CAAA;aACnB4B,MAA0B,GAAA,IAAA,CAAA;aAC1BC,MAA0B,GAAA,IAAA,CAAA;aAG1B5B,GAAc,GAAA,EAAA,CAAA;aAEdC,IAAe,GAAA,GAAA,CAAA;aAEfC,GAAc,GAAA,IAAA,CAAA;AAEdgB,QAAAA,IAAAA,CAAAA,eAAAA,GAA2B,IAAItK,aAAAA,EAAAA,CAAAA;AAC/ByK,QAAAA,IAAAA,CAAAA,eAAAA,GAA8B,IAAIxK,gBAAAA,EAAAA,CAAAA;AAClCgL,QAAAA,IAAAA,CAAAA,iBAAAA,GAA6B,IAAIjL,aAAAA,EAAAA,CAAAA;AACjCkL,QAAAA,IAAAA,CAAAA,mBAAAA,GAA+B,IAAIlL,aAAAA,EAAAA,CAAAA;;AAiCvC,CAAA;;IA3CK/J,QAAS,CAAA;QAACkV,GAAK,EAAA,MAAA;AAAM,KAAA,CAAA;AARbhB,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAURlU,QAAS,CAAA;QAACkV,GAAK,EAAA,MAAA;AAAM,KAAA,CAAA;AAVbhB,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAYRlU,QAAS,CAAA;QAACkV,GAAK,EAAA,MAAA;AAAM,KAAA,CAAA;AAZbhB,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;;ACHRiB,CAAAA,SAAAA,UAAAA,EAAAA;;;;GAAAA,UAAAA,KAAAA,UAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAYE,MAAMC,YAAAA,CAAAA;AAIFC,IAAAA,OAAAA,CAAQ7e,MAAkB,EAAE;QAC/B,IAAI8e,SAAAA,GAAY,IAAI,CAACC,WAAW,CAACC,IAAI,CAAC7e,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,MAAM,KAAKA,MAAAA,CAAAA,CAAAA;AACxD,QAAA,IAAI8e,cAAcle,SAAW,EAAA;YACzBke,SAAY,GAAA;AAAE9e,gBAAAA,MAAAA;gBAAQif,KAAK,EAAA,CAAA;AAAkB,aAAA,CAAA;AAC7C,YAAA,IAAI,CAACF,WAAW,CAACze,IAAI,CAACwe,SAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACJ,KAAA;AAEOI,IAAAA,UAAAA,CAAWlf,MAAkB,EAAE;QAClC,IAAIT,KAAAA,GAAQ,IAAI,CAACwf,WAAW,CAAC7e,SAAS,CAACC,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,MAAM,KAAKA,MAAAA,CAAAA,CAAAA;QACzD,IAAIT,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACwf,WAAW,CAACtf,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACnC,SAAA;AACJ,KAAA;IAEO4f,WAAYC,CAAAA,OAAgB,EAAElB,MAAc,EAAE;AACjD,QAAA,IAAI,IAAI,CAACa,WAAW,CAACrf,MAAM,KAAK,CAAG,EAAA,OAAA;AAEnC,QAAA,IAAI,CAAC2f,UAAU,CAACC,aAAa,CAACF,OAASlB,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,QAAA,KAAK,IAAIqB,IAAAA,IAAQ,IAAI,CAACR,WAAW,CAAE;YAC/B,IAAIQ,IAAAA,CAAKvf,MAAM,CAACH,GAAG,CAAC,OAAY0f,CAAAA,IAAAA,IAAAA,CAAKvf,MAAM,CAACH,GAAG,CAAC,aAAgB,CAAA,EAAA;gBAC5D,IAAI2f,UAAAA,GAAa,IAAI,CAACH,UAAU,CAACI,eAAe,CAACF,IAAKvf,CAAAA,MAAM,CAAC2O,IAAI,EAAE,IAAA,CAAA,CAAA;gBACnE,IAAI6Q,UAAAA,CAAW9f,MAAM,EAAE;AACnB6f,oBAAAA,IAAAA,CAAKN,KAAK,IAAA,CAAA,CAAA;AACVM,oBAAAA,IAAAA,CAAKvf,MAAM,CAACgB,IAAI,CAAC,aAAe,EAAA;AAAEwe,wBAAAA,UAAAA;AAAW,qBAAA,CAAA,CAAA;AACjD,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IAEOE,SAAUN,CAAAA,OAAgB,EAAElB,MAAc,EAAE;AAC/C,QAAA,IAAI,IAAI,CAACa,WAAW,CAACrf,MAAM,KAAK,CAAG,EAAA,OAAA;AAEnC,QAAA,IAAI,CAAC2f,UAAU,CAACC,aAAa,CAACF,OAASlB,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,QAAA,KAAK,IAAIqB,IAAAA,IAAQ,IAAI,CAACR,WAAW,CAAE;YAC/B,IAAIQ,IAAAA,CAAKvf,MAAM,CAACH,GAAG,CAAC,OAAY0f,CAAAA,IAAAA,IAAAA,CAAKvf,MAAM,CAACH,GAAG,CAAC,WAAc,CAAA,EAAA;gBAC1D,IAAI2f,UAAAA,GAAa,IAAI,CAACH,UAAU,CAACI,eAAe,CAACF,IAAKvf,CAAAA,MAAM,CAAC2O,IAAI,EAAE,IAAA,CAAA,CAAA;gBACnE,IAAI6Q,UAAAA,CAAW9f,MAAM,EAAE;oBACnB,IAAI6f,IAAAA,CAAKN,KAAK,GAAwB,CAAA,EAAA;AAClCM,wBAAAA,IAAAA,CAAKN,KAAK,IAAI,CAAA,CAAA,CAAA;AACdM,wBAAAA,IAAAA,CAAKvf,MAAM,CAACgB,IAAI,CAAC,OAAS,EAAA;AAAEwe,4BAAAA,UAAAA;AAAW,yBAAA,CAAA,CAAA;AAC3C,qBAAA;AACAD,oBAAAA,IAAAA,CAAKvf,MAAM,CAACgB,IAAI,CAAC,WAAa,EAAA;AAAEwe,wBAAAA,UAAAA;AAAW,qBAAA,CAAA,CAAA;AAC/C,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IAEOG,WAAYP,CAAAA,OAAgB,EAAElB,MAAc,EAAE;AACjD,QAAA,IAAI,IAAI,CAACa,WAAW,CAACrf,MAAM,KAAK,CAAG,EAAA,OAAA;AAEnC,QAAA,IAAI,CAAC2f,UAAU,CAACC,aAAa,CAACF,OAASlB,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,QAAA,KAAK,IAAIqB,IAAAA,IAAQ,IAAI,CAACR,WAAW,CAAE;YAC/B,IAAIQ,IAAAA,CAAKvf,MAAM,CAACH,GAAG,CAAC,aAAkB0f,CAAAA,IAAAA,IAAAA,CAAKvf,MAAM,CAACH,GAAG,CAAC,YAAe,CAAA,EAAA;gBACjE,IAAI2f,UAAAA,GAAa,IAAI,CAACH,UAAU,CAACI,eAAe,CAACF,IAAKvf,CAAAA,MAAM,CAAC2O,IAAI,EAAE,IAAA,CAAA,CAAA;gBACnE,IAAI6Q,UAAAA,CAAW9f,MAAM,EAAE;AACnB,oBAAA,IAAI,EAAE6f,IAAKN,CAAAA,KAAK,IAAe,CAAI,EAAA;AAC/BM,wBAAAA,IAAAA,CAAKN,KAAK,IAAA,CAAA,CAAA;AACVM,wBAAAA,IAAAA,CAAKvf,MAAM,CAACgB,IAAI,CAAC,aAAe,EAAA;AAAEwe,4BAAAA,UAAAA;AAAW,yBAAA,CAAA,CAAA;AACjD,qBAAA;iBAEC,MAAA;oBACD,IAAID,IAAAA,CAAKN,KAAK,GAAkB,CAAA,EAAA;AAC5BM,wBAAAA,IAAAA,CAAKN,KAAK,IAAI,CAAA,CAAA,CAAA;AACdM,wBAAAA,IAAAA,CAAKvf,MAAM,CAACgB,IAAI,CAAC,YAAc,EAAA;AAAEwe,4BAAAA,UAAAA;AAAW,yBAAA,CAAA,CAAA;AAChD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;;AAxEQH,QAAAA,IAAAA,CAAAA,UAAAA,GAAwB,IAAIO,eAAAA,EAAAA,CAAAA;AAC5Bb,QAAAA,IAAAA,CAAAA,WAAAA,GAAuD,EAAE,CAAA;;AAyErE;;AC9EO,MAAMc,WAAAA,CAAAA;AA0BT,IAAA,IAAIC,aAAgB,GAAA;QAChB,OAAO,IAAI,CAACC,cAAc,CAAA;AAC9B,KAAA;AAEA,IAAA,IAAIX,OAAU,GAAA;QACV,OAAO,IAAI,CAACY,QAAQ,CAAA;AACxB,KAAA;AAEA,IAAA,IAAIC,eAAkB,GAAA;QAClB,OAAO,IAAI,CAACC,gBAAgB,CAAA;AAChC,KAAA;AAEA,IAAA,IAAIC,UAAa,GAAA;QACb,OAAO,IAAI,CAACC,WAAW,CAAA;AAC3B,KAAA;AAEA,IAAA,IAAIC,UAAa,GAAA;QACb,OAAO,IAAI,CAACC,WAAW,CAAA;AAC3B,KAAA;AAEA,IAAA,IAAIC,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;AAEA,IAAA,IAAIxb,IAAO,GAAA;QACP,OAAO,IAAI,CAACyb,KAAK,CAAA;AACrB,KAAA;IAIAC,iBAAoB,GAAA;AAChB,QAAA,MAAMC,UAAa,GAAA,IAAI,CAACxC,MAAM,CAACyC,MAAM,CAAA;QAAED,UAAW5G,CAAAA,KAAK,CAAC8G,WAAW,GAAG,MAAA,CAAA;QACtE,IAAI,CAACC,iBAAiB,CAACH,UAAAA,EAAY,eAAeI,CAAAA,CAAAA,GAAKA,EAAEC,cAAc,EAAA,CAAA,CAAA;QACvE,IAAI,CAACF,iBAAiB,CAACH,UAAY,EAAA,aAAA,EAAeI,CAAAA,CAAAA,GAAK,IAAI,CAACE,cAAc,CAACF,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAChG,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,WAAA,EAAaI,CAAAA,CAAAA,GAAK,IAAI,CAACI,YAAY,CAACJ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAC5F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,eAAA,EAAiBI,CAAAA,CAAAA,GAAK,IAAI,CAACI,YAAY,CAACJ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAChG,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,YAAA,EAAcI,CAAAA,CAAAA,GAAK,IAAI,CAACI,YAAY,CAACJ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QAC7F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,aAAA,EAAeI,CAAAA,CAAAA,GAAK,IAAI,CAACK,cAAc,CAACL,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;QAC/F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,OAAA,EAASI,CAAAA,CAAAA,GAAK,IAAI,CAACM,aAAa,CAACN,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QACzF,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,YAAA,EAAcI,CAAAA,CAAAA,GAAK,IAAI,CAACO,aAAa,CAACP,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;QAC7F,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,UAAA,EAAYI,CAAAA,CAAAA,GAAK,IAAI,CAACQ,WAAW,CAACR,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;QACzF,IAAI,CAACJ,iBAAiB,CAACH,UAAY,EAAA,WAAA,EAAaI,CAAAA,CAAAA,GAAK,IAAI,CAACS,YAAY,CAACT,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;;QAE3F,IAAI,CAACJ,iBAAiB,CAACW,MAAQ,EAAA,SAAA,EAAWV,CAAAA,CAAAA,GAAK,IAAI,CAACW,UAAU,CAACX,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QACpF,IAAI,CAACJ,iBAAiB,CAACW,MAAQ,EAAA,UAAA,EAAYV,CAAAA,CAAAA,GAAK,IAAI,CAACY,WAAW,CAACZ,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;QACtF,IAAI,CAACJ,iBAAiB,CAACW,MAAQ,EAAA,OAAA,EAASV,CAAAA,CAAAA,GAAK,IAAI,CAACa,QAAQ,CAACb,CAAI,CAAA,EAAA;YAAEG,OAAS,EAAA,KAAA;AAAM,SAAA,CAAA,CAAA;AACpF,KAAA;IAEAW,kBAAqB,GAAA;AACjB,QAAA,KAAK,IAAI,EAAE7hB,MAAM,EAAEoa,IAAI,EAAEra,QAAQ,EAAE,IAAI,IAAI,CAACY,UAAU,CAAE;AACpD,YAAA,IAAIX,OAAO8hB,mBAAmB,EAAE9hB,MAAO8hB,CAAAA,mBAAmB,CAAC1H,IAAMra,EAAAA,QAAAA,CAAAA,CAAAA;AAC5D,iBAAA,IAAIC,OAAOO,GAAG,EAAEP,OAAOO,GAAG,CAAC6Z,MAAMra,QAAUC,EAAAA,MAAAA,CAAAA,CAAAA;AACpD,SAAA;QACA,IAAI,CAACW,UAAU,GAAG,EAAE,CAAA;AACxB,KAAA;IAEAke,OAAQ7e,CAAAA,MAAkB,EAAE+hB,KAAa,EAAE;QACvC,OAAQA,KAAAA;AACJ,YAAA,KAAKlC,YAAYmC,KAAK,CAAA;AACtB,YAAA,KAAKnC,YAAYoC,YAAY,CAAA;AAC7B,YAAA,KAAKpC,YAAYqC,UAAU,CAAA;AAC3B,YAAA,KAAKrC,YAAYsC,YAAY,CAAA;AAC7B,YAAA,KAAKtC,YAAYuC,WAAW;AACxB,gBAAA,IAAI,CAACC,aAAa,CAACxD,OAAO,CAAC7e,MAAAA,CAAAA,CAAAA;AAC3B,gBAAA,MAAA;AACR,SAAA;AACJ,KAAA;AAEAkf,IAAAA,UAAAA,CAAWlf,MAAkB,EAAE;AAC3B,QAAA,IAAI,CAACqiB,aAAa,CAACnD,UAAU,CAAClf,MAAAA,CAAAA,CAAAA;AAClC,KAAA;AAEQ8gB,IAAAA,iBAAAA,CACJ9gB,MAAmB,EACnBoa,IAAgB,EAChBra,QAAsE,EACtEwZ,OAA2C,EAC7C;AACE,QAAA,IAAIvZ,OAAOsiB,gBAAgB,EAAEtiB,OAAOsiB,gBAAgB,CAAClI,MAAMra,QAAUwZ,EAAAA,OAAAA,CAAAA,CAAAA;AAChE,aAAA,IAAIvZ,OAAOF,EAAE,EAAEE,OAAOF,EAAE,CAACsa,MAAMra,QAAUC,EAAAA,MAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAI,CAACW,UAAU,CAACL,IAAI,CAAC;AAAEN,YAAAA,MAAAA;AAAQoa,YAAAA,IAAAA;AAAMra,YAAAA,QAAAA;AAAS,SAAA,CAAA,CAAA;AAClD,KAAA;AAEQwiB,IAAAA,aAAAA,CAAcxB,CAAe,EAAE;AACnC,QAAA,MAAMyB,KAAQ,GAAA,IAAI,CAACrE,MAAM,CAACqE,KAAK,CAAA;AAC/B,QAAA,OAAO,IAAI,CAACrE,MAAM,CAACsE,WAAW,GAAG;AAC7BC,YAAAA,MAAAA,EAAQ3B,EAAE2B,MAAM;AAChBC,YAAAA,OAAAA,EAAS5B,EAAE4B,OAAO;AAClBC,YAAAA,OAAAA,EAAS7B,EAAE8B,OAAO;YAClBA,OAASL,EAAAA,KAAAA,GAAQzB,EAAE6B,OAAO;AAC1BE,YAAAA,OAAAA,EAAS/B,EAAEgC,OAAO;YAClBA,OAASP,EAAAA,KAAAA,GAAQzB,EAAE+B,OAAO;AAC1BE,YAAAA,KAAAA,EAAOjC,EAAEkC,KAAK;YACdA,KAAOT,EAAAA,KAAAA,GAAQzB,EAAEiC,KAAK;AACtBE,YAAAA,OAAAA,EAASnC,EAAEoC,OAAO;YAClBA,OAASX,EAAAA,KAAAA,GAAQzB,EAAEmC,OAAO;AAC1BE,YAAAA,SAAAA,EAAWrC,EAAEsC,SAAS;AACtBA,YAAAA,SAAAA,EAAWtC,EAAEqC,SAAS;SACfrC,GAAAA,CAAAA,CAAAA;AACf,KAAA;AAEQuC,IAAAA,WAAAA,CAAYvC,CAAa,EAAE;AAC/B,QAAA,MAAMyB,KAAQ,GAAA,IAAI,CAACrE,MAAM,CAACqE,KAAK,CAAA;AAC/B,QAAA,OAAO,IAAI,CAACrE,MAAM,CAACsE,WAAW,GAAG;YAC7BlC,OAASzW,EAAAA,KAAAA,CAAMqB,IAAI,CAAC4V,CAAAA,CAAER,OAAO,CAAEtb,CAAAA,GAAG,CAAC9E,CAAAA,CAAAA,GAAAA;gBAC/B,OAAO;AACHojB,oBAAAA,UAAAA,EAAYpjB,EAAEojB,UAAU;AACxBX,oBAAAA,OAAAA,EAASziB,EAAE0iB,OAAO;oBAClBA,OAASL,EAAAA,KAAAA,GAAQriB,EAAEyiB,OAAO;AAC1BI,oBAAAA,KAAAA,EAAO7iB,EAAE8iB,KAAK;oBACdA,KAAOT,EAAAA,KAAAA,GAAQriB,EAAE6iB,KAAK;AACtBE,oBAAAA,OAAAA,EAAS/iB,EAAEgjB,OAAO;oBAClBA,OAASX,EAAAA,KAAAA,GAAQriB,EAAE+iB,OAAO;AAC9B,iBAAA,CAAA;AACJ,aAAA,CAAA;SACOnC,GAAAA,CAAAA,CAAAA;AACf,KAAA;AAEQyC,IAAAA,eAAAA,CAAgBzC,CAAe,EAAE;AACrC,QAAA,IAAI,CAACf,QAAQ,CAACyD,CAAC,GAAG1C,CAAE+B,CAAAA,OAAO,GAAG,IAAI,CAAC3E,MAAM,CAACqE,KAAK,GAAG,CAAI,GAAA,CAAA,CAAA;AACtD,QAAA,IAAI,CAACxC,QAAQ,CAAC0D,CAAC,GAAG,CAAI3C,GAAAA,CAAAA,CAAEgC,OAAO,GAAG,IAAI,CAAC5E,MAAM,CAACwF,MAAM,GAAG,CAAA,CAAA;QACvD,IAAI,CAACzD,gBAAgB,CAACxS,GAAG,CAACqT,CAAE+B,CAAAA,OAAO,EAAE/B,CAAAA,CAAEgC,OAAO,CAAA,CAAA;AAClD,KAAA;AAEQ9B,IAAAA,cAAAA,CAAeF,CAAe,EAAE;AACpCA,QAAAA,CAAAA,CAAEC,cAAc,EAAA,CAAA;QAChBD,CAAI,GAAA,IAAI,CAACwB,aAAa,CAACxB,CAAAA,CAAAA,CAAAA;AACvB,QAAA,IAAI,CAAChB,cAAc,GAAGgB,CAAAA,CAAE2B,MAAM,CAAA;QAC9B,IAAI,CAACc,eAAe,CAACzC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACsB,aAAa,CAAClD,WAAW,CAAC,IAAI,CAACa,QAAQ,EAAE,IAAI,CAAC7B,MAAM,CAACD,MAAM,CAAA,CAAA;AAChE,QAAA,IAAI,CAACC,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAYoC,YAAY,EAAElB,CAAAA,CAAAA,CAAAA;AAC/C,KAAA;AAEQI,IAAAA,YAAAA,CAAaJ,CAAe,EAAE;AAClCA,QAAAA,CAAAA,CAAEC,cAAc,EAAA,CAAA;QAChBD,CAAI,GAAA,IAAI,CAACwB,aAAa,CAACxB,CAAAA,CAAAA,CAAAA;QACvB,IAAI,CAAChB,cAAc,GAAG,CAAC,CAAA,CAAA;QACvB,IAAI,CAACyD,eAAe,CAACzC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACsB,aAAa,CAAC3C,SAAS,CAAC,IAAI,CAACM,QAAQ,EAAE,IAAI,CAAC7B,MAAM,CAACD,MAAM,CAAA,CAAA;AAC9D,QAAA,IAAI,CAACC,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAYqC,UAAU,EAAEnB,CAAAA,CAAAA,CAAAA;AAC7C,KAAA;AAEQK,IAAAA,cAAAA,CAAeL,CAAe,EAAE;QACpCA,CAAI,GAAA,IAAI,CAACwB,aAAa,CAACxB,CAAAA,CAAAA,CAAAA;QACvB,IAAI,CAACyC,eAAe,CAACzC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACsB,aAAa,CAAC1C,WAAW,CAAC,IAAI,CAACK,QAAQ,EAAE,IAAI,CAAC7B,MAAM,CAACD,MAAM,CAAA,CAAA;AAChE,QAAA,IAAI,CAACC,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAY+D,YAAY,EAAE7C,CAAAA,CAAAA,CAAAA;AAC/C,KAAA;AAEQM,IAAAA,aAAAA,CAAcN,CAAuC,EAAE;AAC3DA,QAAAA,CAAAA,CAAEC,cAAc,EAAA,CAAA;AAChB,QAAA,IAAI,CAACZ,WAAW,GAAGW,EAAE8C,MAAM,IAAI9C,EAAE+C,UAAU,CAAA;AAC3C,QAAA,IAAI,CAAC3F,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAYkE,WAAW,EAAEhD,CAAAA,CAAAA,CAAAA;AAC9C,KAAA;AAEQO,IAAAA,aAAAA,CAAcP,CAAa,EAAE;QACjCA,CAAI,GAAA,IAAI,CAACuC,WAAW,CAACvC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAAC5C,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAYmE,WAAW,EAAEjD,CAAAA,CAAAA,CAAAA;AAC9C,KAAA;AAEQQ,IAAAA,WAAAA,CAAYR,CAAa,EAAE;QAC/BA,CAAI,GAAA,IAAI,CAACuC,WAAW,CAACvC,CAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAAC5C,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAYoE,SAAS,EAAElD,CAAAA,CAAAA,CAAAA;AAC5C,KAAA;AAEQS,IAAAA,YAAAA,CAAaT,CAAa,EAAE;QAChCA,CAAI,GAAA,IAAI,CAACuC,WAAW,CAACvC,CAAAA,CAAAA,CAAAA;QACrB,IAAIR,OAAAA,GAAUQ,EAAER,OAAO,CAAA;QACvB,IAAI2D,SAAAA,GAAY,IAAI,CAAC1D,QAAQ,CAAA;AAC7B,QAAA,IAAK,IAAIzf,CAAAA,GAAIwf,OAAQ7gB,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;AAC/B,YAAA,IAAImjB,SAAS,CAACnjB,CAAE,CAAA,IAAIH,SAAW,EAAA;gBAC3BsjB,SAAS,CAACnjB,EAAE,GAAG;AAAEojB,oBAAAA,EAAAA,EAAI,CAAC,CAAA;AAAGjH,oBAAAA,QAAAA,EAAU,IAAI7J,aAAAA,EAAAA;AAAU,iBAAA,CAAA;AACrD,aAAA;YACA,MAAM+Q,KAAAA,GAAQ7D,OAAO,CAACxf,CAAE,CAAA,CAAA;AACxBmjB,YAAAA,SAAS,CAACnjB,CAAE,CAAA,CAACojB,EAAE,GAAGC,MAAMb,UAAU,CAAA;YAClCW,SAAS,CAACnjB,CAAE,CAAA,CAACmc,QAAQ,CAACxP,GAAG,CAAC0W,KAAMpB,CAAAA,KAAK,EAAEoB,KAAAA,CAAMnB,KAAK,CAAA,CAAA;AACtD,SAAA;AACA,QAAA,IAAI,CAAC3C,WAAW,GAAGC,OAAAA,CAAQ7gB,MAAM,CAAA;AACjC,QAAA,IAAI,CAACye,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAYwE,UAAU,EAAEtD,CAAAA,CAAAA,CAAAA;AAC7C,KAAA;AAEQW,IAAAA,UAAAA,CAAWX,CAAgB,EAAE;AACjC,QAAA,IAAI,CAACN,KAAK,CAACM,CAAErP,CAAAA,GAAG,CAAC,GAAG,IAAA,CAAA;AACpB,QAAA,IAAI,CAACyM,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAYyE,OAAO,EAAEvD,CAAAA,CAAAA,CAAAA;AAC1C,KAAA;AAEQY,IAAAA,WAAAA,CAAYZ,CAAgB,EAAE;AAClC,QAAA,IAAI,CAACN,KAAK,CAACM,CAAErP,CAAAA,GAAG,CAAC,GAAG,IAAA,CAAA;AACpB,QAAA,IAAI,CAACyM,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAY0E,QAAQ,EAAExD,CAAAA,CAAAA,CAAAA;AAC3C,KAAA;AAEQa,IAAAA,QAAAA,CAASb,CAAgB,EAAE;AAC/B,QAAA,IAAI,CAACN,KAAK,CAACM,CAAErP,CAAAA,GAAG,CAAC,GAAG,KAAA,CAAA;AACpB,QAAA,IAAI,CAACyM,MAAM,CAACnd,IAAI,CAAC6e,WAAAA,CAAY2E,KAAK,EAAEzD,CAAAA,CAAAA,CAAAA;AACxC,KAAA;IAtKA7S,WAAY,CAAOiQ,MAAc,CAAE;aAAhBA,MAAAA,GAAAA,MAAAA,CAAAA;AAtCXxd,QAAAA,IAAAA,CAAAA,UAAAA,GAAqE,EAAE,CAAA;aACvEyf,WAAsB,GAAA,CAAA,CAAA;AACtBI,QAAAA,IAAAA,CAAAA,QAAAA,GAAgD,EAAE,CAAA;aAClDF,WAAsB,GAAA,CAAA,CAAA;AACtBP,QAAAA,IAAAA,CAAAA,cAAAA,GAAyB,CAAC,CAAA,CAAA;AAC1BG,QAAAA,IAAAA,CAAAA,gBAAAA,GAA4B,IAAI7M,aAAAA,EAAAA,CAAAA;AAChC2M,QAAAA,IAAAA,CAAAA,QAAAA,GAAoB,IAAI3M,aAAAA,EAAAA,CAAAA;AACxBoN,QAAAA,IAAAA,CAAAA,KAAAA,GAAkC,EAAC,CAAA;AACnC4B,QAAAA,IAAAA,CAAAA,aAAAA,GAA8B,IAAIzD,YAAAA,EAAAA,CAAAA;AA8BL,KAAA;AAuKzC,CAAA;AA7NaiB,WAAAA,CACOmC,KAAQ,GAAA,OAAA,CAAA;AADfnC,WAAAA,CAEOkE,WAAc,GAAA,YAAA,CAAA;AAFrBlE,WAAAA,CAGOmE,WAAc,GAAA,YAAA,CAAA;AAHrBnE,WAAAA,CAIOoE,SAAY,GAAA,UAAA,CAAA;AAJnBpE,WAAAA,CAKOwE,UAAa,GAAA,WAAA,CAAA;AALpBxE,WAAAA,CAMOoC,YAAe,GAAA,aAAA,CAAA;AANtBpC,WAAAA,CAOOqC,UAAa,GAAA,WAAA,CAAA;AAPpBrC,WAAAA,CAQO+D,YAAe,GAAA,aAAA,CAAA;AARtB/D,WAAAA,CASOsC,YAAe,GAAA,aAAA,CAAA;AATtBtC,WAAAA,CAUOuC,WAAc,GAAA,YAAA,CAAA;AAVrBvC,WAAAA,CAWOyE,OAAU,GAAA,SAAA,CAAA;AAXjBzE,WAAAA,CAYO0E,QAAW,GAAA,UAAA,CAAA;AAZlB1E,WAAAA,CAaO2E,KAAQ,GAAA,OAAA,CAAA;AAbf3E,WAAAA,CAcO4E,MAAS,GAAA,QAAA;;ACzB7B,MAAMC,KAAAA,GAAQ,OAAOjD,MAAW,KAAA,WAAA,CAAA;AAWzB,MAAMkD,QAAAA,CAAAA;AAmCT;;;;AAIC,QACD,KAAQC,CAAM1H,QAAgB,EAAE2H,OAAe,EAAU;AACrD,QAAA,MAAMD,QAAQ,IAAI,CAACE,SAAS,CAACF,KAAK,CAACC,OAAAA,CAAAA,CAAAA;QAEnC,OAAQD,SAASA,KAAMllB,CAAAA,MAAM,GAAG,CAAKklB,IAAAA,KAAK,CAAC1H,QAAAA,CAAS,IAAK,EAAA,CAAA;AAC7D,KAAA;AAEA;;AAEC,QACD,IAAI6H,QAAoB,GAAA;AACpB,QAAA;AAEI,QAAA,CAAC,IAAI,CAACC,QAAQ,KACb,WAAA,CAAYC,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA;QAE5B,IAAI,CAACI,SAAS,KAAK,QAAA,IACnB,IAAI,CAACA,SAAS,KAAK,MAAA;QAEnB,IAAI,CAACC,eAAe;AAEpB,QAAA,mBAAA,CAAoBF,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA,CAAA,EAAA;AAEnD,KAAA;AAEA;;AAEC,QACD,IAAIE,QAAoB,GAAA;AACpB,QAAA;AAEK,QAAA,SAAA,CAAUC,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA,CAAC,YAAaG,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS;AAEpE,QAAA,IAAI,CAACI,SAAS,KAAK,MAAA;QAElB,IAAI,CAACC,eAAe,IAAI,CAAC,WAAA,CAAYF,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA;AAExD,QAAA,CAAC,mBAAoBG,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA,iBAAA,CAAkBG,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA,EAAA;AAE3F,KAAA;AAEA;;AAEC,QACD,IAAIM,SAAqB,GAAA;QACrB,OAAO,CAAC,IAAI,CAACL,QAAQ,IAAI,CAAC,IAAI,CAACC,QAAQ,CAAA;AAC3C,KAAA;AAEA;;;;;;;;;;;;;;AAcC,QACD,IAAIK,OAAmC,GAAA;AACnC,QAAA,OACI,aAAaJ,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA;AACjCQ,YAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,4BAAA,CAAA,CAClB1U,OAAO,CAAC,QAAA,EAAU,KAClBP,KAAK,CAAC,KACN1K,GAAG,CAAC,CAACsgB,aAAkCA,GAAAA,aAAAA,CAAc,CAAC,CAAE,CAAA;AACjE,SAAA,CAAA;AAER,KAAA;AAEA;;;;;;;;;;;;;AAaC,QACD,IAAIC,SAAqC,GAAA;AACrC,QAAA,OACI,YAAYP,IAAI,CAAC,IAAI,CAACH,SAAS,CAAK,IAAA;AAChCQ,YAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,gCAAA,CAAA;AAC3B,SAAA,CAAA;AAER,KAAA;AAEA;;AAEC,QACD,IAAIa,KAAiC,GAAA;AACjC,QAAA,OACI,CAAC,CAAC,IAAI,CAACP,SAAS,IAAI;AAChBI,YAAAA,OAAAA,EACI,IAAI,CAACV,KAAK,CAAC,GAAG,oCAAsC1U,CAAAA,CAAAA,OAAO,CAAC,QAAA,EAAU,GACtE,CAAA,IAAA,IAAI,CAAC0U,KAAK,CAAC,CAAG,EAAA,yBAAA,CAAA;AACtB,SAAA,CAAA;AAER,KAAA;AAEA;;AAEC,QACD,IAAIc,SAAqC,GAAA;QACrC,OACI,IAAI,CAACP,eAAe,IAAI;AACpBG,YAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,6BAAA,CAAA;AAC3B,SAAA,CAAA;AAER,KAAA;AAEA;;AAEC,QACD,IAAIe,OAAoC,GAAA;AACpC,QAAA,MAAMC,iBAAoB,GAAA,IAAI,CAAChB,KAAK,CAAC,CAAG,EAAA,yBAAA,CAAA,CAAA;AAExC,QAAA,IAAI,SAASK,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE/B,OAAO;gBACHtlB,IAAM,EAAA,OAAA;AACN8lB,gBAAAA,OAAAA,EAASM,iBAAqB,IAAA,IAAI,CAAChB,KAAK,CAAC,CAAG,EAAA,yCAAA,CAAA;AAChD,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,cAAeK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE5C,OAAO;gBACHtlB,IAAM,EAAA,OAAA;AACN8lB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,GAAG,mCAAwCgB,CAAAA,IAAAA,iBAAAA;AACnE,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,iBAAkBX,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE/C,OAAO;gBACHtlB,IAAM,EAAA,8BAAA;AACN8lB,gBAAAA,OAAAA,EAASM,iBAAqB,IAAA,IAAI,CAAChB,KAAK,CAAC,CAAG,EAAA,wCAAA,CAAA;AAChD,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,YAAaK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE1C,OAAO;gBACHtlB,IAAM,EAAA,gBAAA;AACN8lB,gBAAAA,OAAAA,EAASM,iBAAqB,IAAA,IAAI,CAAChB,KAAK,CAAC,CAAG,EAAA,mCAAA,CAAA;AAChD,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,YAAaK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE1C,OAAO;gBACHtlB,IAAM,EAAA,YAAA;AACN8lB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,mCAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,eAAgBK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAE7C,OAAO;gBACHtlB,IAAM,EAAA,mBAAA;AACN8lB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,6BAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,yBAA0BK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAEvD,OAAO;gBACHtlB,IAAM,EAAA,gBAAA;AACN8lB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,wCAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,0BAA2BK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAExD,OAAO;gBACHtlB,IAAM,EAAA,SAAA;AACN8lB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,gDAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,WAAYK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAEzC,OAAO;gBACHtlB,IAAM,EAAA,UAAA;AACN8lB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,GAAG,oCAAyCgB,CAAAA,IAAAA,iBAAAA;AACpE,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,oBAAqBX,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAElD,OAAO;gBACHtlB,IAAM,EAAA,QAAA;AACN8lB,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,uCAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA,MAAO,IAAI,qBAAsBK,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAG,EAAA;;YAEnD,OAAO;gBACHtlB,IAAM,EAAA,QAAA;gBACN8lB,OAASM,EAAAA,iBAAAA;AACb,aAAA,CAAA;SACG,MAAA;;YAEH,OAAO;AACHpmB,gBAAAA,IAAAA,EAAM,IAAI,CAAColB,KAAK,CAAC,CAAG,EAAA,cAAA,CAAA;AACpBU,gBAAAA,OAAAA,EAAS,IAAI,CAACV,KAAK,CAAC,CAAG,EAAA,cAAA,CAAA;AAC3B,aAAA,CAAA;AACJ,SAAA;AACJ,KAAA;AAvOA;;;;QAKA1W,WAAAA,CAAY2X,cAAuB,CAAE;AACjC,QAAA,IAAI,CAACf,SAAS,GAAGe,cAAAA,GACXA,iBACA,CAACnB,KAAAA,IAASjD,MAAOqE,CAAAA,SAAS,GACtBrE,MAAAA,CAAOqE,SAAS,CAAChB,SAAS,GAC1B,EAAA,CAAA;AAEV,QAAA,IAAI,CAACK,eAAe,GAAG,CAAC,eAAA,CAAgBF,IAAI,CAAC,IAAI,CAACH,SAAS,KAAK,UAAWG,CAAAA,IAAI,CAAC,IAAI,CAACH,SAAS,CAAA,CAAA;QAC9F,IAAI,CAACI,SAAS,GAAG,IAAI,CAACN,KAAK,CAAC,CAAG,EAAA,qBAAA,CAAA,CAAuBmB,WAAW,EAAA,CAAA;;;;AAKjE,QAAA,IACI,CAACrB,KAAAA,IACDoB,SAAUE,CAAAA,QAAQ,KAAK,UACvBF,IAAAA,SAAAA,CAAUG,cAAc,GAAG,CAC3B,IAAA,CAAC,MAACxE,CAAeyE,QAAQ,EAC3B;YACE,IAAI,CAAChB,SAAS,GAAG,MAAA,CAAA;AACrB,SAAA;AACJ,KAAA;AA8MJ;;ACxPA,MAAMiB,WAAW,IAAIxB,QAAAA,EAAAA,CAAAA;AACrB,MAAMG,SAAAA,GAAY,CAACgB,SAAUhB,CAAAA,SAAS,IAAIgB,SAAUM,CAAAA,MAAM,EAAEL,WAAW,EAAA,CAAA;AACvE,MAAMM,WAAAA,GAAc,OAAOF,QAAAA,CAASR,OAAO,KAAK,YAAY,EAAKQ,GAAAA,QAAAA,CAASR,OAAO,CAACnmB,IAAI,CAAA;AACtF,MAAM8mB,SAAAA,GAAYC,QAASC,CAAAA,aAAa,CAAC,OAAA,CAAA,CAAA;AAElC,MAAMC,UAAAA,CAAAA;AAuBb,CAAA;AAvBaA,UAAAA,CACF1B,QAAWoB,GAAAA,QAAAA,CAASpB,QAAQ,IAAIoB,SAASnB,QAAQ,CAAA;AAD/CyB,UAEFrB,CAAAA,SAAAA,GAAYe,SAASf,SAAS,CAAA;AAF5BqB,UAAAA,CAGFC,MAASD,GAAAA,UAAAA,CAAW1B,QAAQ,GAAG,QAAW,GAAA,SAAA,CAAA;AAHxC0B,UAAAA,CAIFf,SAAY,GAAA,CAAC,CAACS,QAAAA,CAAST,SAAS,CAAA;AAJ9Be,UAAAA,CAKFE,KAAQ,GAAA,CAAC,CAACR,QAAAA,CAASV,KAAK,CAAA;AALtBgB,UAAAA,CAMFpB,OAAU,GAAA,CAAC,CAACc,QAAAA,CAASd,OAAO,CAAA;AAN1BoB,UAAAA,CAOFjB,SAAY,GAAA,OAAOW,QAASX,CAAAA,SAAS,KAAK,SAAA,GAAYW,QAASX,CAAAA,SAAS,GAAGW,QAAAA,CAASX,SAAS,CAACF,OAAO,KAAK,IAAA,CAAA;AAPxGmB,UAAAA,CAQFG,OAAU9B,GAAAA,SAAAA,CAAUxI,OAAO,CAAC,YAAY,CAAC,CAAA,CAAA;AARvCmK,UAAAA,CASFI,EAAK/B,GAAAA,SAAAA,CAAAA;AATH2B,UAAAA,CAUFK,SAAST,WAAgB,KAAA,gBAAA,CAAA;AAVvBI,UAAAA,CAWFM,OAAOV,WAAgB,KAAA,mBAAA,CAAA;AAXrBI,UAAAA,CAYFO,YAAYX,WAAgB,KAAA,SAAA,CAAA;AAZ1BI,UAAAA,CAaFQ,WAAWZ,WAAgB,KAAA,QAAA,CAAA;AAbzBI,UAAAA,CAcFS,UAAUb,WAAgB,KAAA,OAAA,CAAA;AAdxBI,UAAAA,CAeFU,WAAWd,WAAgB,KAAA,QAAA,CAAA;AAfzBI,UAAAA,CAgBFW,aAAgB,GAAA,CAACtC,SAAUF,CAAAA,KAAK,CAAC,eAAA,CAAA,CAAA;AAhB/B6B,UAAAA,CAiBFY,YAAe,GAAA,CAAC,CAACf,SAAAA,CAAUgB,WAAW,CAAC,WAAA,CAAA,CAAA;AAjBrCb,UAAAA,CAkBFc,WAAW9F,MAAO+F,CAAAA,gBAAgB,IAAI/F,MAAAA,CAAO+F,gBAAgB,IAAI,GAAA,CAAA;AAlB/Df,UAmBFe,CAAAA,gBAAAA,GAAmB/F,MAAO+F,CAAAA,gBAAgB,IAAI,CAAA,CAAA;AAnB5Cf,UAoBFgB,CAAAA,YAAAA,GAAe3B,SAAU4B,CAAAA,mBAAmB,IAAI,CAAA,CAAA;AApB9CjB,UAAAA,CAqBFkB,OAAUpB,GAAAA,QAAAA,CAASqB,QAAQ,CAACC,MAAM,CAAA;AArBhCpB,UAAAA,CAsBFqB,QAAWrG,GAAAA,MAAAA,CAAOtd,IAAI,KAAKsd,OAAOsG,GAAG;;AC1BhD,MAAM,EAAEC,GAAG,EAAE1Q,GAAG,EAAE2Q,GAAG,EAAE,GAAG3kB,IAAAA,CAAAA;AAU1B;AACO,SAAS4kB,YAAYC,OAAe,EAAEnoB,MAAc,EAAEooB,QAAgB,EAAEC,SAAiB,EAAA;AAC5F,IAAA,IAAIzhB,CAAK,GAAA,CAAA,GAAIohB,GAAIK,CAAAA,SAAAA,EAAWD,QAAYA,CAAAA,GAAAA,QAAAA,CAAAA;AACxC,IAAA,IAAIE,KAAK1hB,CAAIA,GAAAA,CAAAA,CAAAA;IACb,OAAOuhB,OAAAA,GAAU,CAACnoB,MAAAA,GAASmoB,OAAM,KAAM,CAAIG,GAAAA,EAAAA,GAAKA,EAAC,CAAA,CAAA;AACrD;;AChBO,MAAMC,YAAe,GAAA,IAAIhV,aAAU,EAAA;;ACO1C,MAAM,EAAE+H,KAAK,EAAEkN,QAAQ,EAAE,GAAG5S,eAAAA,CAAAA;AAC5B,MAAM,EAAE6S,GAAG,EAAEC,GAAG,EAAE,GAAGplB,IAAAA,CAAAA;AAEd,MAAMqlB,gBAAmB,GAAA;IAC5BC,IAAM,EAAA,CAAA;IACNC,SAAW,EAAA,CAAA;AACf,CAAC,CAAA;AAGM,MAAMC,qBAA8BpL,SAAAA,aAAAA,CAAAA;IAmDvCqL,QAAW,GAAA;AACP,QAAA,IAAI,CAAC5K,MAAM,CAACre,EAAE,CAAC+f,WAAAA,CAAYoC,YAAY,EAAE,IAAI,CAAChB,cAAc,EAAE,IAAI,CAAA,CAAA;AAClE,QAAA,IAAI,CAAC9C,MAAM,CAACre,EAAE,CAAC+f,WAAAA,CAAYqC,UAAU,EAAE,IAAI,CAACf,YAAY,EAAE,IAAI,CAAA,CAAA;AAC9D,QAAA,IAAI,CAAChD,MAAM,CAACre,EAAE,CAAC+f,WAAAA,CAAY+D,YAAY,EAAE,IAAI,CAACxC,cAAc,EAAE,IAAI,CAAA,CAAA;AAClE,QAAA,IAAI,CAACjD,MAAM,CAACre,EAAE,CAAC+f,WAAAA,CAAYkE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AAChE,QAAA,IAAI,CAAClD,MAAM,CAACre,EAAE,CAAC+f,WAAAA,CAAYmE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AAChE,QAAA,IAAI,CAACnD,MAAM,CAACre,EAAE,CAAC+f,WAAAA,CAAYwE,UAAU,EAAE,IAAI,CAAC7C,YAAY,EAAE,IAAI,CAAA,CAAA;AAC9D,QAAA,IAAI,CAACwH,KAAK,EAAA,CAAA;AACd,KAAA;IAEAC,SAAY,GAAA;AACR,QAAA,IAAI,CAAC9K,MAAM,CAAC5d,GAAG,CAACsf,WAAAA,CAAYoC,YAAY,EAAE,IAAI,CAAChB,cAAc,EAAE,IAAI,CAAA,CAAA;AACnE,QAAA,IAAI,CAAC9C,MAAM,CAAC5d,GAAG,CAACsf,WAAAA,CAAYqC,UAAU,EAAE,IAAI,CAACf,YAAY,EAAE,IAAI,CAAA,CAAA;AAC/D,QAAA,IAAI,CAAChD,MAAM,CAAC5d,GAAG,CAACsf,WAAAA,CAAY+D,YAAY,EAAE,IAAI,CAACxC,cAAc,EAAE,IAAI,CAAA,CAAA;AACnE,QAAA,IAAI,CAACjD,MAAM,CAAC5d,GAAG,CAACsf,WAAAA,CAAYkE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AACjE,QAAA,IAAI,CAAClD,MAAM,CAAC5d,GAAG,CAACsf,WAAAA,CAAYmE,WAAW,EAAE,IAAI,CAAC1C,aAAa,EAAE,IAAI,CAAA,CAAA;AACjE,QAAA,IAAI,CAACnD,MAAM,CAAC5d,GAAG,CAACsf,WAAAA,CAAYwE,UAAU,EAAE,IAAI,CAAC7C,YAAY,EAAE,IAAI,CAAA,CAAA;AACnE,KAAA;IAEAwH,KAAQ,GAAA;QACJ,IAAI,CAACE,OAAO,GAAG,CAAC,CAAA,CAAA;QAChB,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAA,CAAA;AACjB,QAAA,IAAI,CAACC,YAAY,CAAC1b,GAAG,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;AACzB,QAAA,IAAI,CAAC2b,SAAS,CAAC3b,GAAG,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACtB,IAAI,CAAC4b,cAAc,GAAG,CAAA,CAAA;AAC1B,KAAA;AAWAC,IAAAA,OAAAA,CACIrM,QAAiB,EACjBoB,MAAe,EACfjV,QAAmB,GAAA,CAAC,EACpB4C,MAAAA,GAAqCvJ,MAAOI,CAAAA,SAAS,CAACG,KAAK,EAC7D;AACE,QAAA,IAAI,CAACkb,MAAM,CAAC5P,YAAY,CAAC,IAAI,CAACib,SAAS,CAAA,CAAA;QACvC,IAAI,CAACrL,MAAM,CAAC9Y,KAAK,CAAC,IAAI,CAACmkB,SAAS,CAAEne,CAAAA,EAAE,CAAC;AAAE6R,YAAAA,QAAAA;AAAUoB,YAAAA,MAAAA;YAAQG,mBAAqB8J,EAAAA,YAAAA;AAAa,SAAA,EAAGlf,QAAU4C,CAAAA,CAAAA,MAAM,CAACA,MAAAA,CAAAA,CAAQ1C,KAAK,EAAA,CAAA;AAChI,KAAA;AAEQ0X,IAAAA,cAAAA,CAAeF,CAAe,EAAE;QACpC,IAAI0F,UAAAA,CAAW1B,QAAQ,EAAE,OAAA;AAEzB,QAAA,IAAI,CAACmE,OAAO,GAAGnI,CAAAA,CAAE2B,MAAM,CAAA;QACvB,IAAI,CAAC+G,QAAQ,CAAC/b,GAAG,CAACqT,CAAEiC,CAAAA,KAAK,EAAEjC,CAAAA,CAAEkC,KAAK,CAAA,CAAA;AACtC,KAAA;AAEQ9B,IAAAA,YAAAA,CAAaJ,CAAe,EAAE;QAClC,IAAI0F,UAAAA,CAAW1B,QAAQ,EAAE,OAAA;QAEzB,IAAI,CAACmE,OAAO,GAAG,CAAC,CAAA,CAAA;AACpB,KAAA;AAEQ9H,IAAAA,cAAAA,CAAeL,CAAe,EAAE;QACpC,IAAI0F,UAAAA,CAAW1B,QAAQ,EAAE,OAAA;QAEzB+D,qBAAsBY,CAAAA,MAAM,CAAChc,GAAG,CAACqT,EAAEiC,KAAK,EAAEjC,EAAEkC,KAAK,CAAA,CAAA;QACjD,OAAQ,IAAI,CAACiG,OAAO;YAChB,KAAK,CAAA;AAAG,gBAAA,IAAI,CAACE,YAAY,CAAChkB,GAAG,CAAC,IAAI,CAACukB,qBAAqB,CAACb,qBAAAA,CAAsBc,WAAW,EAAE,IAAI,CAACH,QAAQ,EAAEX,sBAAsBY,MAAM,CAAA,CAAA,CAAA;AAAI,gBAAA,MAAA;YAC3I,KAAK,CAAA,CAAA;YACL,KAAK,CAAA;AACD,gBAAA,IAAI,CAACL,SAAS,CAACjkB,GAAG,CAAC,IAAI,CAACykB,kBAAkB,CAACf,qBAAAA,CAAsBc,WAAW,EAAE,IAAI,CAACH,QAAQ,EAAEX,sBAAsBY,MAAM,CAAA,CAAA,CAAA;AAAI,gBAAA,MAAA;AACrI,SAAA;AACA,QAAA,IAAI,CAACD,QAAQ,CAAC7L,IAAI,CAACkL,sBAAsBY,MAAM,CAAA,CAAA;AACnD,KAAA;AAEQrI,IAAAA,aAAAA,CAAcN,CAAa,EAAE;QACjC,IAAI,IAAI,CAACzC,MAAM,EAAE;YACb,IAAIwL,IAAAA,GAAOhB,qBAAsBiB,CAAAA,UAAU,CAACnM,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAA,CAAE9X,GAAG,CAAC,IAAI,CAACqZ,mBAAmB,CAAEuL,CAAAA,UAAU,CAAC,IAAI,CAACrb,IAAI,CAACuO,QAAQ,CAAA,CAAA;AAClI,YAAA,IAAI+M,OAAUH,GAAAA,IAAAA,GAAO,IAAI,CAACR,cAAc,CAAA;YACxC,IAAIvI,CAAAA,CAAE8C,MAAM,GAAG,CAAG,EAAA;AACdoG,gBAAAA,OAAAA,IAAW,IAAI,CAACC,uBAAuB,CAAC,CAAI,GAAA,IAAA,CAAA,CAAA;AAChD,aAAA,MACK,IAAInJ,CAAAA,CAAE8C,MAAM,GAAG,CAAG,EAAA;gBACnBoG,OAAW,IAAA,IAAI,CAACC,uBAAuB,CAAC,IAAA,CAAA,CAAA;AAC5C,aAAA;YACA,IAAI,CAACZ,cAAc,GAAGW,OAAUH,GAAAA,IAAAA,CAAAA;AACpC,SAAA;AACJ,KAAA;AAEQxI,IAAAA,aAAAA,CAAcP,CAAa,EAAE;QACjC,IAAI,CAAC0F,UAAW1B,CAAAA,QAAQ,EAAE,OAAA;QAE1B,IAAIxE,OAAAA,GAAUQ,EAAER,OAAO,CAAA;QACvB,IAAI4J,aAAAA,GAAgB,IAAI,CAACA,aAAa,CAAA;AACtC,QAAA,IAAI5J,OAAQ7gB,CAAAA,MAAM,GAAGyqB,aAAAA,GAAgB,CAAG,EAAA;AACpC,YAAA,IAAI,CAACV,QAAQ,CAAC/b,GAAG,CAAC6S,OAAO,CAAC4J,aAAc,CAAA,CAACnH,KAAK,EAAEzC,OAAO,CAAC4J,aAAAA,CAAc,CAAClH,KAAK,CAAA,CAAA;AAC5E,YAAA,IAAI,CAACmH,QAAQ,CAAC1c,GAAG,CAAC6S,OAAO,CAAC4J,aAAAA,GAAgB,CAAE,CAAA,CAACnH,KAAK,EAAEzC,OAAO,CAAC4J,aAAgB,GAAA,CAAA,CAAE,CAAClH,KAAK,CAAA,CAAA;AACxF,SAAA,MACK,IAAI1C,OAAAA,CAAQ7gB,MAAM,GAAGyqB,aAAe,EAAA;AACrC,YAAA,IAAI,CAAChB,QAAQ,GAAG5I,OAAO,CAAC4J,aAAAA,CAAc,CAAC5G,UAAU,CAAA;AACjD,YAAA,IAAI,CAACkG,QAAQ,CAAC/b,GAAG,CAAC6S,OAAO,CAAC4J,aAAc,CAAA,CAACnH,KAAK,EAAEzC,OAAO,CAAC4J,aAAAA,CAAc,CAAClH,KAAK,CAAA,CAAA;AAChF,SAAA;AACJ,KAAA;AAEQzB,IAAAA,YAAAA,CAAaT,CAAa,EAAE;QAChC,IAAI,CAAC0F,UAAW1B,CAAAA,QAAQ,EAAE,OAAA;AAE1B,QAAA,MAAM,EAAE2E,MAAM,EAAEW,MAAM,EAAEN,UAAU,EAAEH,WAAW,EAAEU,WAAW,EAAEC,QAAQ,EAAE,GAAGzB,qBAAAA,CAAAA;QAE3E,IAAIvI,OAAAA,GAAUQ,EAAER,OAAO,CAAA;QACvB,IAAI4J,aAAAA,GAAgB,IAAI,CAACA,aAAa,CAAA;AACtC,QAAA,IAAI5J,OAAQ7gB,CAAAA,MAAM,GAAGyqB,aAAAA,GAAgB,CAAG,EAAA;AACpCT,YAAAA,MAAAA,CAAOhc,GAAG,CAAC6S,OAAO,CAAC4J,aAAc,CAAA,CAACnH,KAAK,EAAEzC,OAAO,CAAC4J,aAAc,CAAA,CAAClH,KAAK,CAAA,CAAA;AACrEoH,YAAAA,MAAAA,CAAO3c,GAAG,CAAC6S,OAAO,CAAC4J,gBAAgB,CAAE,CAAA,CAACnH,KAAK,EAAEzC,OAAO,CAAC4J,aAAgB,GAAA,CAAA,CAAE,CAAClH,KAAK,CAAA,CAAA;YAC7E,IAAI,IAAI,CAAC3E,MAAM,EAAE;gBACb,IAAIwL,IAAAA,GAAOC,WAAWnM,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAE9X,CAAAA,GAAG,CAAC,IAAI,CAACqZ,mBAAmB,CAAEuL,CAAAA,UAAU,CAAC,IAAI,CAACrb,IAAI,CAACuO,QAAQ,CAAA,CAAA;gBAC5G,IAAI+M,OAAAA,GAAU,CAACH,IAAO,GAAA,IAAI,CAACR,cAAa,IAAK,IAAI,CAACY,uBAAuB,CAAC,IAAI,CAACT,QAAQ,CAACO,UAAU,CAAC,IAAI,CAACI,QAAQ,CAAA,GAAIV,MAAOM,CAAAA,UAAU,CAACK,MAAAA,CAAAA,CAAAA,CAAAA;gBACtI,IAAI,CAACf,cAAc,GAAGW,OAAUH,GAAAA,IAAAA,CAAAA;AACpC,aAAA;AACA,YAAA,IAAI,CAACT,SAAS,CAACjkB,GAAG,CAAC,IAAI,CAACykB,kBAAkB,CAACD,aAAaU,WAAY1M,CAAAA,IAAI,CAAC,IAAI,CAAC6L,QAAQ,CAAA,CAAErkB,GAAG,CAAC,IAAI,CAACglB,QAAQ,CAAA,CAAEI,cAAc,CAAC,GAAA,CAAA,EAAMD,QAAS3M,CAAAA,IAAI,CAAC8L,MAAQtkB,CAAAA,CAAAA,GAAG,CAACilB,MAAAA,CAAAA,CAAQG,cAAc,CAAC,GAAA,CAAA,CAAA,CAAA,CAAA;AACjL,YAAA,IAAI,CAACf,QAAQ,CAAC7L,IAAI,CAAC8L,MAAAA,CAAAA,CAAAA;AACnB,YAAA,IAAI,CAACU,QAAQ,CAACxM,IAAI,CAACyM,MAAAA,CAAAA,CAAAA;AACvB,SAAA,MACK,IAAI9J,OAAAA,CAAQ7gB,MAAM,GAAGyqB,aAAe,EAAA;YACrC,IAAI,IAAI,CAAChB,QAAQ,KAAK5I,OAAO,CAAC4J,aAAAA,CAAc,CAAC5G,UAAU,EAAE;AACrDmG,gBAAAA,MAAAA,CAAOhc,GAAG,CAAC6S,OAAO,CAAC4J,aAAc,CAAA,CAACnH,KAAK,EAAEzC,OAAO,CAAC4J,aAAc,CAAA,CAAClH,KAAK,CAAA,CAAA;AACrE,gBAAA,IAAI,CAACmG,YAAY,CAAChkB,GAAG,CAAC,IAAI,CAACukB,qBAAqB,CAACC,WAAAA,EAAa,IAAI,CAACH,QAAQ,EAAEC,MAAAA,CAAAA,CAAAA,CAAAA;AAC7E,gBAAA,IAAI,CAACD,QAAQ,CAAC7L,IAAI,CAAC8L,MAAAA,CAAAA,CAAAA;AACvB,aAAA;AACJ,SAAA;AACJ,KAAA;AAEQQ,IAAAA,uBAAAA,CAAwBO,KAAa,EAAE;QAC3C,IAAI,IAAI,CAACC,OAAO,EAAE;YACdD,KAAQ,GAAA,CAAA,CAAA;AACZ,SAAA;QACA,OAAOA,KAAAA,CAAAA;AACX,KAAA;AAEQd,IAAAA,qBAAAA,CAAsBgB,GAAY,EAAEC,IAAa,EAAEC,IAAa,EAAE;AACtE,QAAA,MAAMlK,UAAa,GAAA,IAAI,CAACxC,MAAM,CAACyC,MAAM,CAAA;AACrC+J,QAAAA,GAAAA,CAAI/M,IAAI,CAACiN,IAAAA,CAAAA,CAAMC,GAAG,CAACF,MAAMJ,cAAc,CAAC,IAAI,CAACO,WAAW,GAAG,CAAA,GAAIznB,KAAKE,EAAE,GAAGmd,WAAWgD,MAAM,CAAA,CAAA;AAC1FgH,QAAAA,GAAAA,CAAIjH,CAAC,GAAG,CAACiH,GAAAA,CAAIjH,CAAC,CAAA;QACd,IAAI,IAAI,CAACsH,OAAO,EAAE;AACdL,YAAAA,GAAAA,CAAIlH,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,IAAI,IAAI,CAACwH,OAAO,EAAE;AACdN,YAAAA,GAAAA,CAAIjH,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,OAAOiH,GAAAA,CAAAA;AACX,KAAA;AAEQd,IAAAA,kBAAAA,CAAmBc,GAAY,EAAEC,IAAa,EAAEC,IAAa,EAAE;AACnE,QAAA,MAAMlK,UAAa,GAAA,IAAI,CAACxC,MAAM,CAACyC,MAAM,CAAA;AACrC+J,QAAAA,GAAAA,CAAI/M,IAAI,CAACiN,IAAMC,CAAAA,CAAAA,GAAG,CAACF,IAAAA,CAAAA,CAAMJ,cAAc,CAAC,IAAI,CAACU,QAAQ,GAAGvK,WAAWgD,MAAM,CAAA,CAAA;QACzE,IAAI,IAAI,CAACwH,UAAU,EAAE;AACjBR,YAAAA,GAAAA,CAAIlH,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,IAAI,IAAI,CAAC2H,UAAU,EAAE;AACjBT,YAAAA,GAAAA,CAAIjH,CAAC,GAAG,CAAA,CAAA;AACZ,SAAA;QACA,OAAOiH,GAAAA,CAAAA;AACX,KAAA;AAEAnlB,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;AACf,QAAA,IAAI,CAAC,IAAI,CAACwC,MAAM,EAAE,OAAA;AAElB,QAAA,MAAM,EAAE+M,UAAU,EAAEC,WAAW,EAAEvB,UAAU,EAAEwB,MAAM,EAAEC,WAAW,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAG5C,qBAAAA,CAAAA;AAEvFiB,QAAAA,UAAAA,CAAWnM,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAA,CAAE9X,GAAG,CAAC,IAAI,CAACqZ,mBAAmB,CAAA,CAAA;QAElE,OAAQ,IAAI,CAACkN,IAAI;AACb,YAAA,KAAKhD,iBAAiBC,IAAI;gBACtB,IAAKH,IAAI,IAAI,CAACW,YAAY,CAAC3F,CAAC,IAAIgF,GAAI,CAAA,IAAI,CAACW,YAAY,CAAC1F,CAAC,CAAI+E,GAAAA,GAAAA,CAAI,IAAI,CAACa,cAAc,IAAK,KAAO,EAAA;AAC1F,oBAAA,MAAM,EAAE+B,UAAU,EAAEC,WAAW,EAAEvB,UAAU,EAAE,GAAGjB,qBAAAA,CAAAA;oBAChDyC,MAAOK,CAAAA,kBAAkB,CAAC,IAAI,CAACjd,IAAI,CAACkd,EAAE,EAAElY,cAAAA,CAASmY,UAAU,CAAA,CAAA;oBAC3DT,UAAWzN,CAAAA,IAAI,CAAC,IAAI,CAACjP,IAAI,CAACuO,QAAQ,CAAE4N,CAAAA,GAAG,CAACf,UAAAA,CAAAA,CAAAA;AACxCsB,oBAAAA,UAAAA,CAAWU,eAAe,CAACR,MAAAA,CAAAA,CAAAA;AAC3BC,oBAAAA,WAAAA,CAAYQ,cAAc,CAACX,UAAAA,CAAAA,CAAAA;AAE3B,oBAAA,IAAIY,aAAa/D,WAAY,CAAA,CAAA,EAAG,GAAG,IAAI,CAACgE,eAAe,EAAEpQ,EAAAA,CAAAA,CAAAA;oBACzD,IAAI,CAACsN,YAAY,CAAC3F,CAAC,GAAG+H,YAAYW,KAAK,GAAG7Q,KAAMkQ,CAAAA,WAAAA,CAAYW,KAAK,GAAG,IAAI,CAAC/C,YAAY,CAAC3F,CAAC,EAAE,IAAI,CAAC2I,QAAQ,EAAE,IAAI,CAACC,QAAQ,CAAA,CAAA;AACrHb,oBAAAA,WAAAA,CAAYW,KAAK,GAAGX,WAAYW,CAAAA,KAAK,GAAG,IAAI,CAAC/C,YAAY,CAAC3F,CAAC,IAAI,IAAIwI,UAAS,CAAA,CAAA;oBAE5E,IAAI,CAAC7C,YAAY,CAAC1F,CAAC,GAAGpI,MAAMkQ,WAAYc,CAAAA,GAAG,GAAG,IAAI,CAAClD,YAAY,CAAC1F,CAAC,EAAE,IAAI,CAAC6I,MAAM,EAAE,IAAI,CAACC,MAAM,CAAIhB,GAAAA,WAAAA,CAAYc,GAAG,CAAA;AAC9Gd,oBAAAA,WAAAA,CAAYc,GAAG,GAAGhR,KAAAA,CAAMkQ,YAAYc,GAAG,GAAG,IAAI,CAAClD,YAAY,CAAC1F,CAAC,IAAI,CAAIuI,GAAAA,UAAS,GAAI,KAAO3oB,EAAAA,IAAAA,CAAKE,EAAE,GAAG,KAAA,CAAA,CAAA;oBAEnG,IAAI,CAAC8lB,cAAc,GAAGhO,KAAAA,CAAMkQ,YAAYiB,MAAM,GAAG,IAAI,CAACnD,cAAc,EAAE,IAAI,CAACoD,WAAW,EAAE,IAAI,CAACC,WAAW,CAAA,GAAInB,YAAYiB,MAAM,CAAA;oBAC9HjB,WAAYiB,CAAAA,MAAM,GAAGjB,WAAAA,CAAYiB,MAAM,GAAG,IAAI,CAACnD,cAAc,IAAI,CAAA,GAAI2C,UAAS,CAAA,CAAA;AAE9E,oBAAA,IAAI,CAAC7C,YAAY,CAACoB,cAAc,CAACyB,UAAAA,CAAAA,CAAAA;oBACjC,IAAI,CAAC3C,cAAc,IAAI2C,UAAAA,CAAAA;AAEvBZ,oBAAAA,UAAAA,CAAWuB,gBAAgB,CAACpB,WAAAA,CAAAA,CAAAA;oBAC5BH,UAAWU,CAAAA,eAAe,CAACR,MAAAA,CAAOsB,MAAM,EAAA,CAAA,CAAA;oBAExC,IAAI,CAACle,IAAI,CAACuO,QAAQ,CAACU,IAAI,CAACyN,UAAWjmB,CAAAA,GAAG,CAAC2kB,UAAAA,CAAAA,CAAAA,CAAAA;AAC3C,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA,KAAKpB,iBAAiBE,SAAS;AAC3B,gBAAA,IAAIJ,GAAI,CAAA,IAAI,CAACa,cAAc,IAAI,KAAO,EAAA;AAClC+B,oBAAAA,UAAAA,CAAWzN,IAAI,CAAC,IAAI,CAACjP,IAAI,CAACuO,QAAQ,CAAE4N,CAAAA,GAAG,CAAC,IAAI,CAACxM,MAAM,CAACpB,QAAQ,CAAA,CAAA;AAE5D,oBAAA,IAAI+O,aAAa/D,WAAY,CAAA,CAAA,EAAG,GAAG,IAAI,CAACgE,eAAe,EAAEpQ,EAAAA,CAAAA,CAAAA;oBACzD,IAAIgR,KAAAA,GAAQzB,WAAW3rB,MAAM,EAAA,CAAA;AAC7B,oBAAA,IAAI,CAAC4pB,cAAc,GAAGhO,KAAMwR,CAAAA,KAAAA,GAAQ,IAAI,CAACxD,cAAc,EAAE,IAAI,CAACoD,WAAW,EAAE,IAAI,CAACC,WAAW,CAAIG,GAAAA,KAAAA,CAAAA;oBAC/F,IAAIhD,IAAAA,GAAOgD,QAAQ,IAAI,CAACxD,cAAc,IAAI,IAAI2C,UAAS,CAAA,CAAA;oBACvD,IAAI,CAAC3C,cAAc,IAAI2C,UAAAA,CAAAA;AAEvB,oBAAA,IAAIc,GAAM1B,GAAAA,UAAAA,CAAW2B,SAAS,EAAA,CAAGxC,cAAc,CAACV,IAAM1kB,CAAAA,CAAAA,GAAG,CAAC,IAAI,CAACkZ,MAAM,CAACpB,QAAQ,CAAA,CAAA;oBAC9EoO,WAAY1N,CAAAA,IAAI,CAACmP,GAAKjC,CAAAA,CAAAA,GAAG,CAAC,IAAI,CAACnc,IAAI,CAACuO,QAAQ,CAAA,CAAA;AAC5C,oBAAA,IAAI,CAACuB,mBAAmB,CAACrZ,GAAG,CAACkmB,WAAAA,CAAAA,CAAAA;AAC7B,oBAAA,IAAI,CAAC3c,IAAI,CAACuO,QAAQ,CAACU,IAAI,CAACmP,GAAAA,CAAAA,CAAAA;AAExBhD,oBAAAA,UAAAA,CAAWnM,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAA,CAAE9X,GAAG,CAAC,IAAI,CAACqZ,mBAAmB,CAAA,CAAA;AACtE,iBAAA;AACA,gBAAA,MAAA;AACR,SAAA;AAEA,QAAA,IAAIgK,GAAI,CAAA,IAAI,CAACY,SAAS,CAAC5F,CAAC,CAAA,GAAIgF,GAAI,CAAA,IAAI,CAACY,SAAS,CAAC3F,CAAC,IAAI,KAAO,EAAA;YACvD2H,UAAWzN,CAAAA,IAAI,CAAC,IAAI,CAACjP,IAAI,CAACuO,QAAQ,CAAE4N,CAAAA,GAAG,CAACf,UAAAA,CAAAA,CAAAA;AAExC0B,YAAAA,OAAAA,CAAQwB,mBAAmB,CAAC,IAAI,CAACte,IAAI,CAACue,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9CxB,YAAAA,OAAAA,CAAQuB,mBAAmB,CAAC,IAAI,CAACte,IAAI,CAACue,MAAM,EAAE,CAAA,CAAA,CAAA;YAE9C,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACvBzB,gBAAAA,OAAAA,CAAQhI,CAAC,GAAG,CAAA,CAAA;AACZgI,gBAAAA,OAAAA,CAAQsB,SAAS,EAAA,CAAA;AACrB,aAAA;YAEA,IAAIttB,MAAAA,GAAS2rB,UAAW3rB,CAAAA,MAAM,EAAK,GAAA,CAAA,GAAIgpB,IAAIF,QAAS,CAAA,IAAI,CAAC7L,GAAG,GAAG,GAAA,CAAA,CAAA,CAAA;AAE/D,YAAA,IAAIsP,aAAa/D,WAAY,CAAA,CAAA,EAAG,GAAG,IAAI,CAACkF,YAAY,EAAEtR,EAAAA,CAAAA,CAAAA;YAEtD,IAAI2C,mBAAAA,GAAsB,IAAI,CAACA,mBAAmB,CAAA;AAClDA,YAAAA,mBAAAA,CAAoBqM,GAAG,CAACW,OAAQjB,CAAAA,cAAc,CAAC,IAAI,CAACnB,SAAS,CAAC5F,CAAC,GAAG/jB,MAAU,IAAA,IAAIusB,UAAS,CAAA,CAAA,CAAA,CAAA;AACzFxN,YAAAA,mBAAAA,CAAoBrZ,GAAG,CAACsmB,OAAQlB,CAAAA,cAAc,CAAC,IAAI,CAACnB,SAAS,CAAC3F,CAAC,GAAGhkB,MAAU,IAAA,IAAIusB,UAAS,CAAA,CAAA,CAAA,CAAA;AAEzF,YAAA,IAAI,CAAC5C,SAAS,CAACmB,cAAc,CAACyB,UAAAA,CAAAA,CAAAA;YAE9BlC,UAAWnM,CAAAA,IAAI,CAAC,IAAI,CAACU,MAAM,CAACpB,QAAQ,CAAE9X,CAAAA,GAAG,CAACqZ,mBAAAA,CAAAA,CAAAA;YAC1C,IAAI,CAAC9P,IAAI,CAACuO,QAAQ,CAACU,IAAI,CAACyN,UAAWjmB,CAAAA,GAAG,CAAC2kB,UAAAA,CAAAA,CAAAA,CAAAA;AAC3C,SAAA;AAEA,QAAA,IAAI,CAACpb,IAAI,CAAC2P,MAAM,CAACyL,UAAAA,CAAAA,CAAAA;AACrB,KAAA;;;AAvRQb,QAAAA,IAAAA,CAAAA,OAAAA,GAAkB,CAAC,CAAA,CAAA;AACnBC,QAAAA,IAAAA,CAAAA,QAAAA,GAAmB,CAAC,CAAA,CAAA;aACpBG,cAAyB,GAAA,CAAA,CAAA;AACzBG,QAAAA,IAAAA,CAAAA,QAAAA,GAAoB,IAAIpW,aAAAA,EAAAA,CAAAA;AACxB+W,QAAAA,IAAAA,CAAAA,QAAAA,GAAoB,IAAI/W,aAAAA,EAAAA,CAAAA;AACxB+V,QAAAA,IAAAA,CAAAA,YAAAA,GAAwB,IAAI/V,aAAAA,EAAAA,CAAAA;AAC5BgW,QAAAA,IAAAA,CAAAA,SAAAA,GAAqB,IAAIhW,aAAAA,EAAAA,CAAAA;AAGjCsY,QAAAA,IAAAA,CAAAA,IAAAA,GAAyBhD,iBAAiBC,IAAI,CAAA;aAE9CoC,OAAmB,GAAA,KAAA,CAAA;aAEnBC,OAAmB,GAAA,KAAA,CAAA;aAEnBP,OAAmB,GAAA,KAAA,CAAA;aAEnBS,UAAsB,GAAA,KAAA,CAAA;aAEtBC,UAAsB,GAAA,KAAA,CAAA;aAEtB+B,gBAA4B,GAAA,KAAA,CAAA;aAE5BpC,WAAsB,GAAA,CAAA,CAAA;aACtBmB,eAA0B,GAAA,GAAA,CAAA;aAC1BhB,QAAmB,GAAA,CAAA,CAAA;aACnBkC,YAAuB,GAAA,GAAA,CAAA;aACvBC,QAAoB,GAAA,IAAI9Z,aAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;aACtCgZ,MAAiB,GAAA,KAAA,CAAA;aACjBC,MAAiBlpB,GAAAA,IAAAA,CAAKE,EAAE,GAAG,KAAA,CAAA;AAC3B4oB,QAAAA,IAAAA,CAAAA,QAAAA,GAAmB,CAACxhB,QAAAA,CAAAA;aACpByhB,QAAmBzhB,GAAAA,QAAAA,CAAAA;aACnB8hB,WAAsB,GAAA,KAAA,CAAA;aACtBC,WAAsB/hB,GAAAA,QAAAA,CAAAA;aACtBuf,aAAwB,GAAA,CAAA,CAAA;AACxB7L,QAAAA,IAAAA,CAAAA,MAAAA,GAAS,IAAI3K,cAAAA,EAAAA,CAAAA;aA6BL6V,SAAY,GAAA;AAChB,YAAA,IAAItM,QAAW,CAAA,GAAA;AAAE,gBAAA,OAAO,IAAI,CAACvO,IAAI,CAACuO,QAAQ,CAAA;AAAE,aAAA;AAC5C,YAAA,IAAIA,UAAS/c,CAAY,CAAA;AAAE,gBAAA,IAAI,CAACwO,IAAI,CAACuO,QAAQ,CAACU,IAAI,CAACzd,CAAAA,CAAAA,CAAAA;AAAI,aAAA;AACvD,YAAA,IAAIme,MAAS,CAAA,GAAA;AAAE,gBAAA,OAAO,IAAI,CAACA,MAAM,CAACpB,QAAQ,CAAA;AAAE,aAAA;AAC5C,YAAA,IAAIoB,QAAOne,CAAY,CAAA;AAAE,gBAAA,IAAI,CAACme,MAAM,CAACpB,QAAQ,CAACU,IAAI,CAACzd,CAAAA,CAAAA,CAAAA;AAAI,aAAA;AACvD,YAAA,IAAIse,mBAAsB,CAAA,GAAA;gBAAE,OAAO,IAAI,CAACA,mBAAmB,CAAA;AAAE,aAAA;AAC7D,YAAA,IAAIA,qBAAoBte,CAAY,CAAA;AAAE,gBAAA,IAAI,CAACse,mBAAmB,CAACb,IAAI,CAACzd,CAAAA,CAAAA,CAAAA;AAAI,aAAA;AAC5E,SAAA,CAAA;;AAiNJ,CAAA;AAtSa2oB,qBAAAA,CACFY,SAAS,IAAIrW,aAAAA,EAAAA,CAAAA;AADXyV,qBAAAA,CAEFuB,SAAS,IAAIhX,aAAAA,EAAAA,CAAAA;AAFXyV,qBAAAA,CAGFyB,WAAW,IAAIlX,aAAAA,EAAAA,CAAAA;AAHbyV,qBAAAA,CAIFwB,cAAc,IAAIjX,aAAAA,EAAAA,CAAAA;AAJhByV,qBAAAA,CAKFc,cAAc,IAAIvW,aAAAA,EAAAA,CAAAA;AALhByV,qBAAAA,CAMFiB,aAAa,IAAIxW,aAAAA,EAAAA,CAAAA;AANfuV,qBAAAA,CAOFuC,aAAa,IAAI9X,aAAAA,EAAAA,CAAAA;AAPfuV,qBAAAA,CAQFwC,cAAc,IAAI/X,aAAAA,EAAAA,CAAAA;AARhBuV,qBAAAA,CASF2C,UAAU,IAAIlY,aAAAA,EAAAA,CAAAA;AATZuV,qBAAAA,CAUF4C,UAAU,IAAInY,aAAAA,EAAAA,CAAAA;AAVZuV,qBAAAA,CAWFyC,SAAS,IAAI/X,gBAAAA,EAAAA,CAAAA;AAXXsV,qBAAAA,CAYF0C,cAAc,IAAI8B,eAAAA,EAAAA,CAAAA;;IAUxB9jB,QAAS,CAAA;QAAE4D,KAAOub,EAAAA,gBAAAA;AAAiB,KAAA,CAAA;AAtB3BG,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAwBRtf,QAAS,CAAA;QAAEkV,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AAxBdoK,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IA0BRtf,QAAS,CAAA;QAAEkV,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AA1BdoK,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IA4BRtf,QAAS,CAAA;QAAEkV,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AA5BdoK,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,SAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IA8BRtf,QAAS,CAAA;QAAEkV,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AA9BdoK,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAgCRtf,QAAS,CAAA;QAAEkV,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AAhCdoK,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;IAkCRtf,QAAS,CAAA;QAAEkV,GAAK,EAAA,KAAA;AAAM,KAAA,CAAA;AAlCdoK,CAAAA,EAAAA,qBAAAA,CAAAA,SAAAA,EAAAA,kBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;AChBN,MAAMyE,GAAqEle,SAAAA,UAAAA,CAAAA;IAC9EnB,WAAY,CAAA,GAAGjN,IAA+C,CAAE;QAC5D,KAAK,CAAC,IAAIusB,iBAAevsB,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC7B,KAAA;AACJ;;ACJO,MAAMoV,MAAwEhH,SAAAA,UAAAA,CAAAA;IACjFnB,WAAY,CAAA,GAAGjN,IAAkD,CAAE;QAC/D,KAAK,CAAC,IAAIwsB,oBAAkBxsB,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAChC,KAAA;AACJ;;ACJO,MAAMysB,KAAuEre,SAAAA,UAAAA,CAAAA;IAChFnB,WAAY,CAAA,GAAGjN,IAAiD,CAAE;QAC9D,KAAK,CAAC,IAAI0sB,mBAAiB1sB,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC/B,KAAA;AACJ;;ACFA,MAAM2sB,MAAAA,CAAAA;AAWF,IAAA,IAAI/iB,KAAQ,GAAA;QACR,OAAO,IAAI,CAACgjB,MAAM,CAAA;AACtB,KAAA;IAEA,IAAIhjB,KAAAA,CAAM1K,CAAU,EAAE;QAClB,IAAI,CAAC0tB,MAAM,GAAG1tB,CAAAA,CAAAA;AAClB,KAAA;AAEA,IAAA,IAAIH,MAAS,GAAA;QACT,OAAO,IAAI,CAAC8tB,OAAO,CAAA;AACvB,KAAA;AAEA,IAAA,IAAI/tB,QAAW,GAAA;QACX,OAAO,IAAI,CAACguB,SAAS,CAAA;AACzB,KAAA;AAUA,IAAA,IAAIC,KAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC7lB,OAAO,GAAG,CAAK,IAAA,IAAI,CAAC8lB,cAAc,CAAA;AAClD,KAAA;AAEAzoB,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;QACf,IAAI,IAAI,CAAC+R,MAAM,EAAE,OAAA;QACjB,IAAI,IAAI,CAAC1lB,OAAO,GAAG,KAAK,IAAI,CAAC8lB,cAAc,EAAE;YACzC,IAAI,CAACC,QAAQ,IAAIpS,EAAAA,CAAAA;AACjB,YAAA,IAAI,IAAI,CAACoS,QAAQ,IAAI,IAAI,CAACC,SAAS,EAAE;gBACjC,IAAI,CAACC,OAAO,CAAC,IAAI,CAACF,QAAQ,GAAG,IAAI,CAACG,SAAS,CAAA,CAAA;AAC3C,gBAAA,IAAI,CAACH,QAAQ,IAAI,IAAI,CAACC,SAAS,CAAA;AAC/B,gBAAA,IAAI,CAACE,SAAS,GAAG,IAAI,CAACH,QAAQ,CAAA;AAC9B,gBAAA,IAAI,CAAC/lB,OAAO,EAAA,CAAA;AAChB,aAAA;AACJ,SAAA;AACJ,KAAA;AAEAimB,IAAAA,OAAAA,CAAQtS,EAAU,EAAE;AAChB,QAAA,IAAI,IAAI,CAACgS,OAAO,IAAI,IAAI,CAACC,SAAS,EAAE;AAChC,YAAA,IAAI,CAACA,SAAS,CAAC9iB,IAAI,CAAC,IAAI,CAAC6iB,OAAO,EAAEhS,EAAAA,EAAI,IAAI,CAACoS,QAAQ,CAAA,CAAA;AACvD,SAAA;AACJ,KAAA;AA7BAhgB,IAAAA,WAAAA,CAAYlO,MAAmB,EAAED,QAAkB,EAAEkb,QAAgB,EAAErP,MAAc,CAAE;aA1B/EkiB,OAA8B,GAAA,IAAA,CAAA;aAC9BC,SAA6B,GAAA,IAAA,CAAA;aAC7BI,SAAoB,GAAA,CAAA,CAAA;aACpBhmB,OAAkB,GAAA,CAAA,CAAA;aAElB+lB,QAAmB,GAAA,CAAA,CAAA;aACnBG,SAAoB,GAAA,CAAA,CAAA;aACpBJ,cAA0B,GAAA,KAAA,CAAA;aAC1BJ,MAAkB,GAAA,KAAA,CAAA;QAmBtB,IAAI,CAACC,OAAO,GAAG9tB,MAAAA,CAAAA;QACf,IAAI,CAAC+tB,SAAS,GAAGhuB,QAAAA,CAAAA;QACjB,IAAI,CAACouB,SAAS,GAAGlT,QAAAA,CAAAA;QACjB,IAAI,CAAC9S,OAAO,GAAGyD,MAAAA,CAAAA;AACf,QAAA,IAAI,CAACqiB,cAAc,GAAGriB,MAAAA,KAAW,CAAC,CAAA,CAAA;AACtC,KAAA;AAwBJ,CAAA;AAEA,MAAM0iB,OAAAA,CAAAA;AAIF,IAAA,IAAItuB,MAAS,GAAA;QACT,OAAO,IAAI,CAAC8tB,OAAO,CAAA;AACvB,KAAA;AAEA,IAAA,IAAIS,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;IAEAtgB,WAAYlO,CAAAA,MAAmB,EAAEuuB,OAAiB,CAAE;QAChD,IAAI,CAACT,OAAO,GAAG9tB,MAAAA,CAAAA;QACf,IAAI,CAACwuB,QAAQ,GAAGD,OAAAA,CAAAA;AACpB,KAAA;AACJ,CAAA;AAEO,MAAME,SAAAA,CAAAA;AAIT5jB,IAAAA,KAAAA,CAAM7K,MAAmB,EAAE;AACvB,QAAA,IAAIuuB,UAAU,IAAI,CAACC,QAAQ,CAACxuB,MAAAA,CAAOmP,IAAI,CAAC,CAAA;QACxC,IAAIof,OAAAA,EAASA,QAAQrsB,OAAO,CAAC/B,CAAAA,CAAKA,GAAAA,CAAAA,CAAE0K,KAAK,GAAG,IAAA,CAAA,CAAA;AAChD,KAAA;AAEAC,IAAAA,MAAAA,CAAO9K,MAAmB,EAAE;AACxB,QAAA,IAAIuuB,UAAU,IAAI,CAACC,QAAQ,CAACxuB,MAAAA,CAAOmP,IAAI,CAAC,CAAA;QACxC,IAAIof,OAAAA,EAASA,QAAQrsB,OAAO,CAAC/B,CAAAA,CAAKA,GAAAA,CAAAA,CAAE0K,KAAK,GAAG,KAAA,CAAA,CAAA;AAChD,KAAA;AAEAmQ,IAAAA,QAAAA,CAAShb,MAAmB,EAAED,QAAkB,EAAEkb,QAAgB,EAAErP,MAAc,EAAE;AAChF,QAAA,IAAI2iB,UAAU,IAAI,CAACC,QAAQ,CAACxuB,MAAAA,CAAOmP,IAAI,CAAC,CAAA;AACxC,QAAA,IAAIof,YAAY3tB,SAAW,EAAA;YACvB2tB,OAAU,GAAA,IAAI,CAACC,QAAQ,CAACxuB,OAAOmP,IAAI,CAAC,GAAG,EAAE,CAAA;AACzC,YAAA,IAAI,CAACuf,aAAa,CAACpuB,IAAI,CAAC,IAAIguB,QAAQtuB,MAAQuuB,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAChD,SAAA;AACAA,QAAAA,OAAAA,CAAQjuB,IAAI,CAAC,IAAIstB,MAAO5tB,CAAAA,MAAAA,EAAQD,UAAUkb,QAAUrP,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACxD,KAAA;IAEAuP,SAAUnb,CAAAA,MAAmB,EAAED,QAAkB,EAAE;AAC/C,QAAA,IAAIwuB,UAAU,IAAI,CAACC,QAAQ,CAACxuB,MAAAA,CAAOmP,IAAI,CAAC,CAAA;AACxC,QAAA,IAAIof,OAAS,EAAA;YACT,IAAIhvB,KAAAA,GAAQgvB,QAAQruB,SAAS,CAACC,CAAAA,CAAKA,GAAAA,CAAAA,CAAEJ,QAAQ,KAAKA,QAAAA,CAAAA,CAAAA;AAClD,YAAA,IAAIR,UAAU,CAAC,CAAA,EAAGgvB,OAAQ9uB,CAAAA,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAC5C,SAAA;AACJ,KAAA;AAEAob,IAAAA,aAAAA,CAAc3a,MAAmB,EAAE;AAC/B,QAAA,OAAO,IAAI,CAACwuB,QAAQ,CAACxuB,MAAAA,CAAOmP,IAAI,CAAC,CAAA;QACjC,IAAI5P,KAAAA,GAAQ,IAAI,CAACmvB,aAAa,CAACxuB,SAAS,CAACC,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,MAAM,KAAKA,MAAAA,CAAAA,CAAAA;QAC3D,IAAIT,KAAAA,KAAU,CAAC,CAAG,EAAA,IAAI,CAACmvB,aAAa,CAACjvB,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACvD,KAAA;AAEAiG,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;QACf,IAAIyS,OAAAA,CAAAA;QACJ,IAAII,YAAAA,GAAe,IAAI,CAACD,aAAa,CAAA;AACrC,QAAA,IAAK,IAAIE,CAAAA,GAAID,YAAajvB,CAAAA,MAAM,EAAEkvB,CAAM,EAAA,EAAA;AACpCL,YAAAA,OAAAA,GAAUI,YAAY,CAACC,CAAE,CAAA,CAACL,OAAO,CAAA;AACjC,YAAA,IAAK,IAAIxtB,CAAAA,GAAIwtB,OAAQ7uB,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAC/B,IAAIwtB,OAAO,CAACxtB,CAAAA,CAAE,CAACitB,KAAK,EAAEO,OAAO,CAACxtB,CAAAA,CAAE,CAACyE,MAAM,CAACsW,EAAAA,CAAAA,CAAAA;qBACnCyS,OAAQ9uB,CAAAA,MAAM,CAACsB,CAAG,EAAA,CAAA,CAAA,CAAA;AAC3B,aAAA;AACJ,SAAA;AACJ,KAAA;;AA9CQytB,QAAAA,IAAAA,CAAAA,QAAAA,GAAsC,EAAC,CAAA;AACvCE,QAAAA,IAAAA,CAAAA,aAAAA,GAA2B,EAAE,CAAA;;AA8CzC;;AC/HA,MAAMG,OAAAA,CAAAA;AAQFzpB,IAAAA,GAAAA,CAAIpF,MAAW,EAAE;AACb,QAAA,IAAI,CAAC8uB,QAAQ,CAACxuB,IAAI,CAACN,MAAAA,CAAAA,CAAAA;AACvB,KAAA;AAEAuF,IAAAA,MAAAA,CAAOvF,MAAW,EAAE;AAChB,QAAA,IAAIT,QAAQ,IAAI,CAACuvB,QAAQ,CAACxS,OAAO,CAACtc,MAAAA,CAAAA,CAAAA;QAClC,IAAIT,KAAAA,KAAU,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACuvB,QAAQ,CAACrvB,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAChC,SAAA;AACJ,KAAA;AAEAwvB,IAAAA,MAAAA,CAAOjT,EAAU,EAAE;QACf,IAAI/b,QAAAA,GAAW,IAAI,CAACguB,SAAS,CAAA;AAC7B,QAAA,KAAK,IAAI5tB,CAAAA,IAAK,IAAI,CAAC2uB,QAAQ,CAAE;AACzB/uB,YAAAA,QAAAA,CAASI,CAAG2b,EAAAA,EAAAA,CAAAA,CAAAA;AAChB,SAAA;AACJ,KAAA;AApBA5N,IAAAA,WAAAA,CAAYnO,QAAwC,CAAE;AAH5C+uB,QAAAA,IAAAA,CAAAA,QAAAA,GAAgB,EAAE,CAAA;QAIxB,IAAI,CAACf,SAAS,GAAGhuB,QAAAA,CAAAA;AACrB,KAAA;AAmBJ,CAAA;AAEA,MAAMivB,cAA0BH,SAAAA,OAAAA,CAAAA;AAC5BE,IAAAA,MAAAA,CAAOjT,EAAU,EAAE;AACf,QAAA,IAAI,IAAI,CAACgT,QAAQ,CAACpvB,MAAM,GAAG,CAAG,EAAA;YAC1B,IAAIK,QAAAA,GAAW,IAAI,CAACguB,SAAS,CAAA;AAC7B,YAAA,KAAK,IAAI5tB,CAAAA,IAAK,IAAI,CAAC2uB,QAAQ,CAAE;AACzB/uB,gBAAAA,QAAAA,CAASI,CAAG2b,EAAAA,EAAAA,CAAAA,CAAAA;AAChB,aAAA;AACA,YAAA,IAAI,CAACgT,QAAQ,CAACpvB,MAAM,GAAG,CAAA,CAAA;AAC3B,SAAA;AACJ,KAAA;AACJ,CAAA;AAEO,MAAMuvB,kBAAAA,CAAAA;IAKT1lB,KAAQ,GAAA;AACJ,QAAA,IAAI,CAAC2lB,YAAY,CAACH,MAAM,CAAC,CAAA,CAAA,CAAA;AAC7B,KAAA;AAEAvpB,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;AACf,QAAA,IAAI,CAACqT,aAAa,CAACJ,MAAM,CAACjT,EAAAA,CAAAA,CAAAA;AAC9B,KAAA;AAEAD,IAAAA,UAAAA,CAAWC,EAAU,EAAE;AACnB,QAAA,IAAI,CAACsT,iBAAiB,CAACL,MAAM,CAACjT,EAAAA,CAAAA,CAAAA;AAClC,KAAA;IAEArB,eAAgB4U,CAAAA,IAAe,EAAExtB,MAAe,EAAE;AAC9C,QAAA,IAAIA,MAAQ,EAAA;AACR,YAAA,IAAI,CAACwtB,IAAAA,CAAKvU,KAAK,CAACwU,cAAc,EAAE;gBAC5BD,IAAKvU,CAAAA,KAAK,CAACwU,cAAc,GAAG,IAAA,CAAA;gBAC5B,IAAID,IAAAA,CAAKtG,QAAQ,EAAE;AACfsG,oBAAAA,IAAAA,CAAKtG,QAAQ,EAAA,CAAA;AACjB,iBAAA;gBACA,IAAI,OAAOsG,IAAK9lB,CAAAA,KAAK,KAAK,UAAA,IAAc,CAAC8lB,IAAKvU,CAAAA,KAAK,CAACyU,aAAa,EAAE;oBAC/DF,IAAKvU,CAAAA,KAAK,CAACyU,aAAa,GAAG,IAAA,CAAA;AAC3B,oBAAA,IAAI,CAACL,YAAY,CAAC9pB,GAAG,CAACiqB,IAAAA,CAAAA,CAAAA;AAC1B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAK7pB,MAAM,KAAK,UAAY,EAAA;AACnC,oBAAA,IAAI,CAAC2pB,aAAa,CAAC/pB,GAAG,CAACiqB,IAAAA,CAAAA,CAAAA;AAC3B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAKxT,UAAU,KAAK,UAAY,EAAA;AACvC,oBAAA,IAAI,CAACuT,iBAAiB,CAAChqB,GAAG,CAACiqB,IAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACJ,aAAA;SAEC,MAAA;AACD,YAAA,IAAIA,IAAKvU,CAAAA,KAAK,CAACwU,cAAc,EAAE;gBAC3BD,IAAKvU,CAAAA,KAAK,CAACwU,cAAc,GAAG,KAAA,CAAA;gBAC5B,IAAID,IAAAA,CAAKpG,SAAS,EAAE;AAChBoG,oBAAAA,IAAAA,CAAKpG,SAAS,EAAA,CAAA;AAClB,iBAAA;gBACA,IAAI,OAAOoG,IAAK9lB,CAAAA,KAAK,KAAK,UAAA,IAAc,CAAC8lB,IAAKvU,CAAAA,KAAK,CAACyU,aAAa,EAAE;AAC/D,oBAAA,IAAI,CAACL,YAAY,CAAC3pB,MAAM,CAAC8pB,IAAAA,CAAAA,CAAAA;AAC7B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAK7pB,MAAM,KAAK,UAAY,EAAA;AACnC,oBAAA,IAAI,CAAC2pB,aAAa,CAAC5pB,MAAM,CAAC8pB,IAAAA,CAAAA,CAAAA;AAC9B,iBAAA;AACA,gBAAA,IAAI,OAAOA,IAAAA,CAAKxT,UAAU,KAAK,UAAY,EAAA;AACvC,oBAAA,IAAI,CAACuT,iBAAiB,CAAC7pB,MAAM,CAAC8pB,IAAAA,CAAAA,CAAAA;AAClC,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;;AApDAH,QAAAA,IAAAA,CAAAA,YAAAA,GAAmC,IAAIF,cAAAA,CAAeK,CAAAA,IAAAA,GAAQA,KAAK9lB,KAAK,EAAA,CAAA,CAAA;AACxE4lB,QAAAA,IAAAA,CAAAA,aAAAA,GAAoC,IAAIN,OAAQ,CAAA,CAACQ,MAAMvT,EAAOuT,GAAAA,IAAAA,CAAK7pB,MAAM,CAAEsW,EAAAA,CAAAA,CAAAA,CAAAA;AAC3EsT,QAAAA,IAAAA,CAAAA,iBAAAA,GAAwC,IAAIP,OAAQ,CAAA,CAACQ,MAAMvT,EAAOuT,GAAAA,IAAAA,CAAKxT,UAAU,CAAEC,EAAAA,CAAAA,CAAAA,CAAAA;;AAmDvF;;;ACjFY0T,CAAAA,SAAAA,aAAAA,EAAAA;yEAC0D,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;0DAEf,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;GAH3CA,aAAAA,KAAAA,aAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAiBL,MAAMC,gBAAAA,CAAAA;AAQT,IAAA,IAAItR,MAAS,GAAA;QACT,OAAO,IAAI,CAACuR,OAAO,CAAA;AACvB,KAAA;AAEA,IAAA,IAAIxU,SAAY,GAAA;QACZ,OAAO,IAAI,CAACyU,UAAU,CAAA;AAC1B,KAAA;AAEA,IAAA,IAAInV,kBAAqB,GAAA;QACrB,OAAO,IAAI,CAACoV,mBAAmB,CAAA;AACnC,KAAA;IAMAvhB,OAAU,GAAA;AACN,QAAA,IAAI,CAACwhB,cAAc,CAAC3tB,OAAO,CAAC4tB,CAAAA,UAAcA,GAAAA,UAAAA,CAAW5tB,OAAO,CAACmtB,CAAAA,IAAAA,GAAQA,KAAKhhB,OAAO,EAAA,CAAA,CAAA,CAAA;QACjF,IAAI,CAACwhB,cAAc,CAACjwB,KAAK,EAAA,CAAA;AAC7B,KAAA;AAEA4F,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;AACf,QAAA,IAAI,CAAC6T,UAAU,CAACnqB,MAAM,CAACsW,EAAAA,CAAAA,CAAAA;QACvB,IAAI,CAAC8T,mBAAmB,CAACrmB,KAAK,EAAA,CAAA;AAC9B,QAAA,IAAI,CAACqmB,mBAAmB,CAACpqB,MAAM,CAACsW,EAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAI,CAAC8T,mBAAmB,CAAC/T,UAAU,CAACC,EAAAA,CAAAA,CAAAA;AACxC,KAAA;AAEAiU,IAAAA,iBAAAA,CAAkBphB,IAAc,EAAE;AAC9B,QAAA,IAAImhB,aAAa,IAAI,CAACD,cAAc,CAACje,GAAG,CAACjD,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAImhB,UAAY,EAAA;AACZA,YAAAA,UAAAA,CAAW5tB,OAAO,CAACmtB,CAAAA,IAAAA,GAAQA,KAAKhhB,OAAO,EAAA,CAAA,CAAA;AACvC,YAAA,IAAI,CAACwhB,cAAc,CAACG,MAAM,CAACrhB,IAAAA,CAAAA,CAAAA;AAC/B,SAAA;AACA,QAAA,KAAK,IAAIshB,KAAAA,IAASthB,IAAKuhB,CAAAA,QAAQ,CAAE;YAC7B,IAAI,CAACH,iBAAiB,CAACE,KAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACJ,KAAA;AAEAE,IAAAA,gBAAAA,CAAiBxhB,IAAc,EAAE;AAC7B,QAAA,IAAImhB,aAAa,IAAI,CAACD,cAAc,CAACje,GAAG,CAACjD,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAImhB,UAAY,EAAA;YACZA,UAAW5tB,CAAAA,OAAO,CAACmtB,CAAAA,IAAQ,GAAA,IAAI,CAACe,gBAAgB,CAACf,IAAM1gB,EAAAA,IAAAA,CAAK0hB,OAAO,CAAA,CAAA,CAAA;AACvE,SAAA;AACA,QAAA,KAAK,IAAIJ,KAAAA,IAASthB,IAAKuhB,CAAAA,QAAQ,CAAE;YAC7B,IAAI,CAACC,gBAAgB,CAACF,KAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACJ,KAAA;IAIAK,YAAkC3hB,CAAAA,IAA0B,EAAET,WAAgB,EAAK;AAC/E,QAAA,IAAIqiB,IAAO5hB,GAAAA,IAAAA,YAAgB0L,SAAY1L,GAAAA,IAAAA,CAAKA,IAAI,GAAGA,IAAAA,CAAAA;QACnD,IAAI6hB,IAAAA,GAAO,OAAOtiB,WAAgB,KAAA,UAAA,CAAA;QAClC,IAAIuiB,SAAAA,GAAY,IAAI,CAACC,cAAc,CAACH,IAAMC,EAAAA,IAAAA,GAAOtiB,WAAcA,GAAAA,WAAAA,CAAYA,WAAW,CAAA,CAAA;AACtF,QAAA,IAAIuiB,cAAc7vB,SAAW,EAAA;YACzB6vB,SAAYD,GAAAA,IAAAA,GAAO,IAAItiB,WAAgBA,EAAAA,GAAAA,WAAAA,CAAAA;AACvCuiB,YAAAA,SAAAA,CAAU9hB,IAAI,GAAG4hB,IAAAA,CAAAA;YACjBE,SAAUne,CAAAA,OAAO,GAAG,IAAI,CAAA;AACxBme,YAAAA,SAAAA,CAAUtS,MAAM,GAAG,IAAI,CAACuR,OAAO,CAAA;AAE/B,YAAA,IAAI,CAACiB,cAAc,CAACJ,IAAAA,EAAME,UAAUviB,WAAW,CAAA,CAAA;AAE/C,YAAA,IAAI,CAACuiB,SAAAA,CAAU3V,KAAK,CAACC,YAAY,EAAE;gBAC/B0V,SAAU3V,CAAAA,KAAK,CAACC,YAAY,GAAG,IAAA,CAAA;gBAC/B,IAAI0V,SAAAA,CAAU5e,MAAM,EAAE;AAClB4e,oBAAAA,SAAAA,CAAU5e,MAAM,EAAA,CAAA;AACpB,iBAAA;AACJ,aAAA;AAEA,YAAA,IAAIie,aAAa,IAAI,CAACD,cAAc,CAACje,GAAG,CAAC2e,IAAAA,CAAAA,CAAAA;AACzC,YAAA,IAAIT,eAAelvB,SAAW,EAAA;AAC1B,gBAAA,IAAI,CAACivB,cAAc,CAACniB,GAAG,CAAC6iB,IAAM,EAAA;AAACE,oBAAAA,SAAAA;AAAU,iBAAA,CAAA,CAAA;aAExC,MAAA;AACDX,gBAAAA,UAAAA,CAAWxvB,IAAI,CAACmwB,SAAAA,CAAAA,CAAAA;AACpB,aAAA;AAEA,YAAA,IAAI,CAACL,gBAAgB,CAACK,SAAAA,EAAWA,UAAUnW,OAAO,CAAA,CAAA;AACtD,SAAA;QACA,OAAOmW,SAAAA,CAAAA;AACX,KAAA;IAEA7V,eAAgBjM,CAAAA,IAAc,EAAE8hB,SAAoB,EAAE;AAClD,QAAA,IAAIX,aAAa,IAAI,CAACD,cAAc,CAACje,GAAG,CAACjD,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAImhB,UAAY,EAAA;AACZA,YAAAA,UAAAA,CAAWrwB,MAAM,CAACqwB,UAAWxT,CAAAA,OAAO,CAACmU,SAAY,CAAA,EAAA,CAAA,CAAA,CAAA;AACrD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEApS,IAAAA,YAAAA,CAAkC1P,IAAc,EAAET,WAAyB,EAAE0iB,OAAAA,GAAmB,KAAK,EAAK;AACtG,QAAA,IAAIvB,IAAO,GAAA,IAAI,CAACqB,cAAc,CAAC/hB,IAAMT,EAAAA,WAAAA,CAAAA,CAAAA;QACrC,IAAImhB,IAAAA,KAASzuB,aAAagwB,OAAS,EAAA;AAC/BvB,YAAAA,IAAAA,GAAO,IAAI,CAACiB,YAAY,CAAC3hB,IAAMT,EAAAA,WAAAA,CAAAA,CAAAA;AACnC,SAAA;QACA,OAAOmhB,IAAAA,CAAAA;AACX,KAAA;AAEAwB,IAAAA,sBAAAA,CAA4CliB,IAAc,EAAET,WAAyB,EAAEyc,GAAAA,GAAW,EAAE,EAAO;AACvG,QAAA,IAAImF,aAAa,IAAI,CAACD,cAAc,CAACje,GAAG,CAACjD,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAImhB,UAAY,EAAA;AACZ,YAAA,IAAK,IAAI/uB,CAAAA,GAAI+uB,UAAWpwB,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAClC,IAAI+uB,UAAU,CAAC/uB,CAAAA,CAAE,YAAamN,WAAAA,EAAqByc,IAAIrqB,IAAI,CAACwvB,UAAU,CAAC/uB,CAAE,CAAA,CAAA,CAAA;AAC7E,aAAA;AACA,YAAA,KAAK,IAAIkvB,KAAAA,IAASthB,IAAKuhB,CAAAA,QAAQ,CAAE;AAC7B,gBAAA,IAAI,CAACW,sBAAsB,CAACZ,KAAAA,EAAO/hB,WAAayc,EAAAA,GAAAA,CAAAA,CAAAA;AACpD,aAAA;AACJ,SAAA;QACA,OAAOA,GAAAA,CAAAA;AACX,KAAA;AAEAmG,IAAAA,kBAAAA,CAAmB/wB,QAAmC,EAAE;QACpD,IAAI,CAAC8vB,cAAc,CAAC3tB,OAAO,CAAC/B,CAAAA,CAAAA,GAAKA,CAAE+B,CAAAA,OAAO,CAACnC,QAAAA,CAAAA,CAAAA,CAAAA;AAC/C,KAAA;IAEQ4wB,cAAehiB,CAAAA,IAAc,EAAET,WAAiC,EAAE;AACtE,QAAA,MAAOA,gBAAgBmM,SAAW,CAAA;AAC9B,YAAA,IAAI0W,aAAgBtB,GAAAA,gBAAAA,CAAiBuB,gBAAgB,CAACpf,GAAG,CAAC1D,WAAAA,CAAAA,CAAAA;AAC1D,YAAA,IAAI6iB,aAAe,EAAA;AACf,gBAAA,MAAM,EAAEjB,UAAU,EAAEnE,IAAI,EAAE,GAAGoF,aAAAA,CAAAA;gBAC7B,KAAK,MAAME,OAAOnB,UAAY,CAAA;AAC1B,oBAAA,IAAI,CAAC,IAAI,CAACzR,YAAY,CAAC1P,MAAMsiB,GAAM,CAAA,EAAA;AAC/B,wBAAA,IAAItF,IAAgC,KAAA,CAAA,EAAA;4BAChC,IAAI,CAAC2E,YAAY,CAAC3hB,IAAMsiB,EAAAA,GAAAA,CAAAA,CAAAA;yBACrB,MAAA;4BACH,MAAM,CAAC,WAAW,EAAEA,GAAIzxB,CAAAA,IAAI,CAAC,eAAe,EAAE0O,WAAAA,CAAY1O,IAAI,CAAC,CAAC,CAAA;AACpE,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;YACA0O,WAAc9L,GAAAA,MAAAA,CAAOiX,cAAc,CAACnL,WAAAA,CAAAA,CAAAA;AACxC,SAAA;AACJ,KAAA;IAEQwiB,cAAe/hB,CAAAA,IAAc,EAAET,WAAgB,EAAE;AACrD,QAAA,IAAI4hB,aAAa,IAAI,CAACD,cAAc,CAACje,GAAG,CAACjD,IAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAImhB,UAAY,EAAA;AACZ,YAAA,IAAK,IAAI/uB,CAAAA,GAAI+uB,UAAWpwB,CAAAA,MAAM,EAAEqB,CAAM,EAAA,EAAA;gBAClC,IAAI0vB,SAAAA,GAAYX,UAAU,CAAC/uB,CAAE,CAAA,CAAA;AAC7B,gBAAA,IAAI0vB,qBAAqBviB,WAAa,EAAA;oBAClC,OAAOuiB,SAAAA,CAAAA;AACX,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IAEUL,gBAAiBf,CAAAA,IAAe,EAAE6B,MAAe,EAAE;AACzD,QAAA,IAAI,CAACtB,mBAAmB,CAACnV,eAAe,CAAC4U,IAAM6B,EAAAA,MAAAA,CAAAA,CAAAA;AACnD,KAAA;AAzIAhjB,IAAAA,WAAAA,CAAYiQ,MAAc,CAAE;AAhBpBwR,QAAAA,IAAAA,CAAAA,UAAAA,GAAwB,IAAIlB,SAAAA,EAAAA,CAAAA;AAC5BmB,QAAAA,IAAAA,CAAAA,mBAAAA,GAA0C,IAAIX,kBAAAA,EAAAA,CAAAA;AAC9CY,QAAAA,IAAAA,CAAAA,cAAAA,GAAiB,IAAI1d,GAAAA,EAAAA,CAAAA;QAezB,IAAI,CAACud,OAAO,GAAGvR,MAAAA,CAAAA;AACnB,KAAA;AAwIJ,CAAA;AA9JasR,gBAAAA,CACFuB,mBAAmB,IAAI7e,GAAAA,EAAAA;;AC5B3B,MAAMgf,WAAoB/xB,SAAAA,YAAAA,CAAAA;AAK7B,IAAA,IAAIgyB,OAAU,GAAA;QACV,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,KAAA;IAUAhjB,OAAU,GAAA;AACN,QAAA,IAAI,CAACijB,MAAM,CAAC5xB,MAAM,GAAG,CAAA,CAAA;QACrB,IAAI,CAAC6xB,UAAU,GAAG,CAAA,CAAA;QAClB,IAAI,CAACF,QAAQ,GAAG,CAAA,CAAA;AACpB,KAAA;AAEAjsB,IAAAA,GAAAA,CAAIosB,IAAU,EAAE;AACZ,QAAA,IAAI,CAACF,MAAM,CAAChxB,IAAI,CAACkxB,IAAAA,CAAAA,CAAAA;AACrB,KAAA;IAEAhsB,MAAS,GAAA;QACL,IAAIgsB,IAAAA,GAAO,IAAI,CAACF,MAAM,CAAC,IAAI,CAACC,UAAU,CAAC,CAAA;AACvC,QAAA,IAAIC,IAAM,EAAA;YACN,IAAI;AACAA,gBAAAA,IAAAA,CAAKC,MAAM,EAAA,CAAA;AACf,aAAA,CACA,OAAO1Q,CAAG,EAAA;AACN3gB,gBAAAA,OAAAA,CAAQsB,KAAK,CAACqf,CAAAA,CAAAA,CAAAA;AACd,gBAAA,IAAI,CAAC/O,OAAO,IAAI,IAAI,CAACA,OAAO,CAACwf,IAAAA,CAAAA,CAAAA;AACjC,aAAA;AACA,YAAA,IAAI,CAACH,QAAQ,GAAG,EAAE,IAAI,CAACE,UAAU,GAAG,IAAI,CAACD,MAAM,CAAC5xB,MAAM,CAAA;AACtD,YAAA,IAAI,CAAC2R,UAAU,IAAI,IAAI,CAACA,UAAU,CAACmgB,IAAAA,EAAM,IAAI,CAACD,UAAU,EAAE,IAAI,CAACD,MAAM,CAAC5xB,MAAM,CAAA,CAAA;YAE5E,IAAI,IAAI,CAAC6xB,UAAU,KAAK,IAAI,CAACD,MAAM,CAAC5xB,MAAM,EAAE;gBACxC,IAAI,CAAC2xB,QAAQ,GAAG,CAAA,CAAA;AAChB,gBAAA,IAAI,CAACtkB,UAAU,IAAI,IAAI,CAACA,UAAU,EAAA,CAAA;AACtC,aAAA;AACJ,SAAA;AACJ,KAAA;IApCAmB,WACI,CAAOnB,UAAuB,EACvBsE,UAAgE,EAChEW,OAA8B,CACvC;QACE,KAAK,EAAA,CAAA;aAJEjF,UAAAA,GAAAA,UAAAA,CAAAA;aACAsE,UAAAA,GAAAA,UAAAA,CAAAA;aACAW,OAAAA,GAAAA,OAAAA,CAAAA;AAXHsf,QAAAA,IAAAA,CAAAA,MAAAA,GAAiB,EAAE,CAAA;aACnBC,UAAqB,GAAA,CAAA,CAAA;aACrBF,QAAmB,GAAA,CAAA,CAAA;AAY3B,KAAA;AA+BJ;;AC9CO,SAASK,aAAAA,CAAc9Q,MAAyB,EAAE3S,KAA8B,EAAA;IACnF,IAAI0jB,kBAAAA,GAAqB,CAAClL,UAAAA,CAAWQ,QAAQ,IAAIR,UAAAA,CAAWU,QAAQ,IAAIV,UAAAA,CAAWK,MAAM,IAAIL,UAAAA,CAAWO,SAAS,IAAIP,UAAAA,CAAWS,OAAO,KAAK,CAACT,UAAAA,CAAWM,IAAI,CAAA;AAC5J,IAAA,IAAI,CAAC4K,kBAAoB,EAAA;AACrBhwB,QAAAA,MAAAA,CAAOD,KAAK,CAAC,oBAAA,CAAA,CAAA;QACb,OAAO,IAAA,CAAA;AACX,KAAA;AACA,IAAA,IAAI,EAAEkf,MAAkBgR,YAAAA,iBAAgB,CAAI,EAAA;AACxCjwB,QAAAA,MAAAA,CAAOD,KAAK,CAAC,gBAAA,CAAA,CAAA;QACb,OAAO,IAAA,CAAA;AACX,KAAA;IAEA,IAAImwB,SAAAA,GAAYzvB,MAAOwW,CAAAA,MAAM,CAAC;QAC1BkZ,KAAO,EAAA,KAAA;QACPC,KAAO,EAAA,IAAA;QACPC,OAAS,EAAA,IAAA;QACTC,SAAW,EAAA,KAAA;QACXC,kBAAoB,EAAA,IAAA;QACpBC,qBAAuB,EAAA,KAAA;QACvBC,eAAiB,EAAA,kBAAA;QACjBC,4BAA8B,EAAA,KAAA;KAC/BpkB,EAAAA,KAAAA,CAAAA,CAAAA;IAEH,IAAIwT,MAAAA,CAAO6Q,sBAAsB,EAAE;QAC/B,IAAI;AACA,YAAA,MAAMC,EAAK3R,GAAAA,MAAAA,CAAO4R,UAAU,CAAC,QAAUX,EAAAA,SAAAA,CAAAA,CAAAA;YACvC,OAAO;AACHU,gBAAAA,EAAAA;gBACAE,wBAA0Bja,EAAAA,mBAAAA;gBAC1Bka,eAAiBha,EAAAA,eAAAA;AACrB,aAAA,CAAA;AACJ,SAAA,CACA,OAAOia,GAAK,EAAA;AACRhxB,YAAAA,MAAAA,CAAOD,KAAK,CAACixB,GAAAA,CAAAA,CAAAA;YACb,OAAO,IAAA,CAAA;AACX,SAAA;KAEC,MAAA,IAAIlR,MAAOmR,CAAAA,qBAAqB,EAAE;AACnC,QAAA,MAAML,EAAM3R,GAAAA,MAAAA,CAAO4R,UAAU,CAAC,SAASX,SAAcjR,CAAAA,IAAAA,MAAAA,CAAO4R,UAAU,CAAC,QAAUX,EAAAA,SAAAA,CAAAA,IAAcjR,MAAO4R,CAAAA,UAAU,CAAC,oBAAsBX,EAAAA,SAAAA,CAAAA,CAAAA;AACvI,QAAA,IAAI,CAACU,EAAAA,CAAGM,YAAY,CAAC,wBAAwBN,EAAGM,CAAAA,YAAY,CAAC,wBAAA,CAAwB,KAAMN,EAAGO,CAAAA,YAAY,CAACP,EAAAA,CAAGQ,8BAA8B,CAAG,EAAA;YAC3I,OAAO;AACHR,gBAAAA,EAAAA;AACAE,gBAAAA,wBAAAA,EAA0BhM,WAAWE,KAAK,IAAI4L,GAAGM,YAAY,CAAC,4BAA4Bra,mBAAgBE,GAAAA,eAAAA;gBAC1Gga,eAAiBha,EAAAA,eAAAA;AACrB,aAAA,CAAA;AACJ,SAAA,MACK,IAAI,IAAI,CAACsa,aAAa,EAAE;YACzB,OAAO;AACHT,gBAAAA,EAAAA;gBACAE,wBAA0BQ,EAAAA,sBAAAA;gBAC1BP,eAAiBO,EAAAA,sBAAAA;AACrB,aAAA,CAAA;AACJ,SAAA;AACAtxB,QAAAA,MAAAA,CAAOL,KAAK,CAAC,yCAAA,CAAA,CAAA;QACb,OAAO,IAAA,CAAA;AACX,KAAA;IACA,OAAO,IAAA,CAAA;AACX;;;AC5DY4xB,CAAAA,SAAAA,WAAAA,EAAAA;;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACEL,SAASC,UAAAA,CACZnzB,MAA+B,EAC/BiO,KAAgB,EAAA;IAEhB,IAAK,IAAIpI,KAAKoI,KAAO,CAAA;QACjB,IAAI5D,IAAAA,GAAO4D,KAAK,CAACpI,CAAE,CAAA,CAAA;AACnB,QAAA,IAAIwE,SAASzJ,SAAW,EAAA;AACpB,YAAA,SAAA;AACJ,SAAA;AACA,QAAA,IAAIZ,MAAM,CAAC6F,CAAE,CAAA,KAAKjF,SAAW,EAAA;AACzB,YAAA,IAAI6M,GAAMrL,GAAAA,MAAAA,CAAOI,wBAAwB,CAACxC,MAAQ6F,EAAAA,CAAAA,CAAAA,CAAAA;AAClD,YAAA,IAAI,CAAC4H,GAAQA,IAAAA,GAAAA,CAAI2lB,QAAQ,IAAI3lB,GAAAA,CAAIC,GAAG,EAAG;gBACnC1N,MAAM,CAAC6F,EAAE,GAAGwE,IAAAA,CAAAA;aAEX,MAAA;gBACD,IAAI+C,KAAAA,GAAQpN,MAAM,CAAC6F,CAAE,CAAA,CAAA;gBACrB,IAAIuH,KAAAA,IAASA,KAAMwQ,CAAAA,IAAI,EAAE;AACrBxQ,oBAAAA,KAAAA,CAAMwQ,IAAI,CAACvT,IAAAA,CAAAA,CAAAA;AACf,iBAAA;AACJ,aAAA;AACJ,SAAA;AACJ,KAAA;IACA,OAAOrK,MAAAA,CAAAA;AACX;;ACpBO,MAAMqzB,aAAAA,CAAAA;AAKT,IAAA,IAAIlV,MAAS,GAAA;QACT,OAAO,IAAI,CAACuR,OAAO,CAAA;AACvB,KAAA;IAMArhB,OAAU,GAAA;QACN,IAAI,CAACilB,QAAQ,CAACpxB,OAAO,CAACqxB,CAAAA,MAAAA,GAAUA,MAAOC,CAAAA,SAAS,IAAID,MAAAA,CAAOC,SAAS,EAAA,CAAA,CAAA;AACpE,QAAA,IAAI,CAACF,QAAQ,CAAC5zB,MAAM,GAAG,CAAA,CAAA;QACvB,IAAI,CAAC+zB,WAAW,CAAC7zB,KAAK,EAAA,CAAA;AAC1B,KAAA;AAEA4F,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;AACf,QAAA,IAAI,CAACwX,QAAQ,CAACpxB,OAAO,CAACqxB,CAAAA,MAAUA,GAAAA,MAAAA,CAAO5mB,QAAQ,IAAI4mB,MAAO5mB,CAAAA,QAAQ,CAACmP,EAAAA,CAAAA,CAAAA,CAAAA;AACvE,KAAA;AAEA4X,IAAAA,MAAAA,CAAO5X,EAAU,EAAE;AACf,QAAA,IAAI,CAACwX,QAAQ,CAACpxB,OAAO,CAACqxB,CAAAA,MAAUA,GAAAA,MAAAA,CAAOI,QAAQ,IAAIJ,MAAOI,CAAAA,QAAQ,CAAC7X,EAAAA,CAAAA,CAAAA,CAAAA;AACvE,KAAA;AAEA8X,IAAAA,eAAAA,CAAgB7zB,QAAkC,EAAE;AAChD,QAAA,IAAI,CAACuzB,QAAQ,CAACpxB,OAAO,CAACnC,QAAAA,CAAAA,CAAAA;AAC1B,KAAA;AAEA8zB,IAAAA,SAAAA,CAA4BN,MAAiC,EAAE3C,OAAmB,GAAA,KAAK,EAAK;AACxF,QAAA,IAAIkD,MAAM,IAAI,CAACL,WAAW,CAAC7hB,GAAG,CAAC2hB,MAAAA,CAAAA,CAAAA;QAC/B,IAAIO,GAAAA,KAAQlzB,aAAagwB,OAAS,EAAA;YAC9BkD,GAAM,GAAA,IAAI,CAACC,SAAS,CAACR,MAAAA,CAAAA,CAAAA;AACzB,SAAA;QACA,OAAOO,GAAAA,CAAAA;AACX,KAAA;AAGAC,IAAAA,SAAAA,CAAUR,MAAW,EAAE;QACnB,MAAMO,GAAAA,GAAME,MAAOC,CAAAA,iBAAiB,CAACV,MAAAA,CAAAA,CAAAA;QACrC,IAAI,IAAI,CAACE,WAAW,CAAC5zB,GAAG,CAACi0B,GAAAA,CAAI5lB,WAAW,CAAG,EAAA;AACvCvM,YAAAA,MAAAA,CAAOtB,IAAI,CAAC,sBAAA,CAAA,CAAA;SAEX,MAAA;AACDyzB,YAAAA,GAAAA,CAAI3V,MAAM,GAAG,IAAI,CAACuR,OAAO,CAAA;YACzBoE,GAAII,CAAAA,OAAO,IAAIJ,GAAAA,CAAII,OAAO,EAAA,CAAA;AAC1B,YAAA,IAAI,CAACZ,QAAQ,CAAChzB,IAAI,CAACwzB,GAAAA,CAAAA,CAAAA;AACnB,YAAA,IAAI,CAACL,WAAW,CAAC/lB,GAAG,CAAComB,GAAAA,CAAI5lB,WAAW,EAAE4lB,GAAAA,CAAAA,CAAAA;AAC1C,SAAA;QACA,OAAOA,GAAAA,CAAAA;AACX,KAAA;AAGAK,IAAAA,YAAAA,CAAaZ,MAAW,EAAE;AACtB,QAAA,MAAM7hB,MAAM,OAAO6hB,MAAAA,KAAW,UAAaA,GAAAA,MAAAA,GAASA,OAAOrlB,WAAW,CAAA;AACtE,QAAA,MAAM4lB,MAAM,IAAI,CAACL,WAAW,CAAC7hB,GAAG,CAACF,GAAAA,CAAAA,CAAAA;AACjC,QAAA,IAAIoiB,GAAK,EAAA;YACLA,GAAIN,CAAAA,SAAS,IAAIM,GAAAA,CAAIN,SAAS,EAAA,CAAA;YAC9B,IAAI,CAACF,QAAQ,CAAC7zB,MAAM,CAAC,IAAI,CAAC6zB,QAAQ,CAAChX,OAAO,CAACwX,GAAM,CAAA,EAAA,CAAA,CAAA,CAAA;AACjD,YAAA,IAAI,CAACL,WAAW,CAACzD,MAAM,CAACte,GAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACJ,KAAA;AAtDAxD,IAAAA,WAAAA,CAAYiQ,MAAc,CAAE;AAPpBmV,QAAAA,IAAAA,CAAAA,QAAAA,GAAqB,EAAE,CAAA;AACvBG,QAAAA,IAAAA,CAAAA,WAAAA,GAAmC,IAAIthB,GAAAA,EAAAA,CAAAA;QAO3C,IAAI,CAACud,OAAO,GAAGvR,MAAAA,CAAAA;AACnB,KAAA;AAsDJ;;ACdO,MAAM6V,MAAe50B,SAAAA,YAAAA,CAAAA;AAIxB,IAAA,OAAO60B,iBAAkB/lB,CAAAA,WAAgB,EAAEjN,IAAAA,GAAc,EAAE,EAAE;AACzD,QAAA,OAAO,OAAOiN,WAAAA,KAAgB,UAAa,GAAA,IAAIA,eAAejN,IAAQiN,CAAAA,GAAAA,WAAAA,CAAAA;AAC1E,KAAA;AAGA,IAAA,OAAOkmB,qBAAsBC,CAAAA,MAA8B,EAAEpmB,KAAe,EAAE;QAC1E,MAAMqmB,YAAAA,GAAeD,OAAOnW,MAAM,CAAA;QAClC,IAAK,IAAInd,IAAI,CAAGA,EAAAA,CAAAA,GAAIkN,MAAMvO,MAAM,IAAIqB,CAAI,GAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;YAC5CuzB,YAAY,CAACN,OAAOO,iBAAiB,CAACxzB,EAAE,CAAC,GAAGkN,KAAK,CAAClN,CAAE,CAAA,CAAA;AACxD,SAAA;QACA,IAAIkN,KAAAA,CAAMvO,MAAM,GAAG,CAAG,EAAA;AAClB20B,YAAAA,MAAAA,CAAOG,IAAI,GAAGvmB,KAAK,CAAC,CAAE,CAAA,CAAA;AAC1B,SAAA;QACA,IAAIA,KAAAA,CAAMvO,MAAM,GAAG,CAAG,EAAA;YAClB20B,MAAOI,CAAAA,OAAO,CAAC/mB,GAAG,CAACO,KAAK,CAAC,CAAE,CAAA,EAAEA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AACzC,SAAA;QACA,OAAOomB,MAAAA,CAAAA;AACX,KAAA;IAEA,OAAOK,eAAAA,CACHC,QAAuB,EACvBje,KAAY,EACZwH,MAAc,EACdle,MAA6B,EAC/B;QACEg0B,MAAOY,CAAAA,cAAc,CAAC5lB,QAAQ,GAAGhP,MAAAA,CAAAA;AACjC20B,QAAAA,QAAAA,CAASE,OAAO,CAACb,MAAOY,CAAAA,cAAc,EAAE1W,MAAQxH,EAAAA,KAAAA,CAAAA,CAAAA;AACpD,KAAA;IAEA,OAAOoe,eAAAA,CACHH,QAAuB,EACvBje,KAAY,EACZwH,MAAc,EACdle,MAAgB,EAClB;QACE20B,QAASE,CAAAA,OAAO,CAAC70B,MAAAA,EAAQke,MAAQxH,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,KAAA;AAEA,IAAA,OAAOqe,cACHJ,CAAAA,QAAuB,EACvB30B,MAA2B,EAC7B;QACE,IAAI8J,KAAAA,CAAMC,OAAO,CAAC/J,MAAS,CAAA,EAAA;YACvB,KAAK,IAAIG,KAAKH,MAAQ,CAAA;AAClB20B,gBAAAA,QAAAA,CAASK,WAAW,CAAC70B,CAAAA,CAAAA,CAAAA;AACzB,aAAA;SAEC,MAAA;AACDw0B,YAAAA,QAAAA,CAASK,WAAW,CAACh1B,MAAAA,CAAAA,CAAAA;AACzB,SAAA;AACJ,KAAA;IAEA,OAAOi1B,IAAAA,CACHN,QAAuB,EACvBO,YAA+B,EAC/BlmB,QAAwB,EACxBmmB,GAAY,EACZC,IAAa,EACf;QACEpB,MAAOY,CAAAA,cAAc,CAAC5lB,QAAQ,GAAGA,QAAAA,CAAAA;QACjC,MAAMqmB,EAAAA,GAAKV,SAASW,eAAe,EAAA,CAAA;QACnCX,QAASY,CAAAA,eAAe,CAACL,YAAAA,EAAcE,IAAMD,EAAAA,GAAAA,CAAAA,CAAAA;AAC7CR,QAAAA,QAAAA,CAASjB,MAAM,CAACM,MAAAA,CAAOY,cAAc,EAAEZ,OAAOwB,gBAAgB,CAAA,CAAA;AAC9Db,QAAAA,QAAAA,CAASY,eAAe,CAACF,EAAAA,CAAAA,CAAAA;AAC7B,KAAA;AAEA,IAAA,OAAOI,qBAAwB,GAAA;AAC3B,QAAA,IAAIC,WAAW,IAAIrgB,oBAAAA,EAAAA,CAAAA;AACnBqgB,QAAAA,QAAAA,CAASC,YAAY,CAAC,UAAY,EAAA,IAAI5d,4BAAuB,CAAA;YAAC,CAAE,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;YAAG,CAAE,CAAA;YAAG,CAAE,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;YAAG,CAAE,CAAA;AAAG,YAAA,CAAA;SAAE,EAAE,CAAA,CAAA,CAAA,CAAA;AAClG2d,QAAAA,QAAAA,CAASC,YAAY,CAAC,IAAM,EAAA,IAAI5d,4BAAuB,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;SAAE,EAAE,CAAA,CAAA,CAAA,CAAA;QAC3E,OAAO2d,QAAAA,CAAAA;AACX,KAAA;AAoCA,IAAA,IAAInF,IAAO,GAAA;QACP,OAAO,IAAI,CAACqF,KAAK,CAAA;AACrB,KAAA;AACA,IAAA,IAAItxB,IAAO,GAAA;QACP,OAAO,IAAI,CAACuxB,KAAK,CAAA;AACrB,KAAA;AACA,IAAA,IAAInf,KAAQ,GAAA;QACR,OAAO,IAAI,CAACof,MAAM,CAAA;AACtB,KAAA;AACA,IAAA,IAAI5X,MAAS,GAAA;QACT,OAAO,IAAI,CAAC6X,OAAO,CAAA;AACvB,KAAA;AACA,IAAA,IAAIpB,QAAW,GAAA;QACX,OAAO,IAAI,CAACqB,SAAS,CAAA;AACzB,KAAA;AACA,IAAA,IAAIpV,MAAS,GAAA;QACT,OAAO,IAAI,CAACqV,OAAO,CAAA;AACvB,KAAA;AACA,IAAA,IAAI1D,EAAK,GAAA;QACL,OAAO,IAAI,CAAC2D,GAAG,CAAA;AACnB,KAAA;AACA,IAAA,IAAIzD,wBAA2B,GAAA;QAC3B,OAAO,IAAI,CAAC0D,yBAAyB,CAAA;AACzC,KAAA;AACA,IAAA,IAAIzD,eAAkB,GAAA;QAClB,OAAO,IAAI,CAAC0D,gBAAgB,CAAA;AAChC,KAAA;AACA,IAAA,IAAIC,GAAM,GAAA;QACN,OAAO,IAAI,CAACC,IAAI,CAAA;AACpB,KAAA;AACA,IAAA,IAAI9T,KAAQ,GAAA;QACR,OAAO,IAAI,CAAC+T,MAAM,CAAA;AACtB,KAAA;AACA,IAAA,IAAI5S,MAAS,GAAA;QACT,OAAO,IAAI,CAAC6S,OAAO,CAAA;AACvB,KAAA;AACA,IAAA,IAAIC,QAAW,GAAA;QACX,OAAO,IAAI,CAACC,SAAS,CAAA;AACzB,KAAA;AACA,IAAA,IAAIjU,WAAc,GAAA;QACd,OAAO,IAAI,CAACkU,YAAY,CAAA;AAC5B,KAAA;IA6FAtoB,OAAU,GAAA;QACN,IAAI,CAAC2nB,SAAS,CAACY,OAAO,EAAA,CAAA;QACtB,IAAI,CAACC,YAAY,CAACxoB,OAAO,EAAA,CAAA;QACzB,IAAI,CAACyoB,gBAAgB,CAACzoB,OAAO,EAAA,CAAA;QAC7B,IAAI,CAAC0oB,iBAAiB,CAAC1oB,OAAO,EAAA,CAAA;QAC9B,IAAI,CAAC2oB,cAAc,CAAC3oB,OAAO,EAAA,CAAA;QAC3B,IAAI,CAAC4oB,aAAa,CAAC5oB,OAAO,EAAA,CAAA;QAC1B,IAAI,CAAC6oB,MAAM,CAACrV,kBAAkB,EAAA,CAAA;AAClC,KAAA;AAEQsV,IAAAA,MAAAA,CAAO7yB,IAAY,EAAE;QACzB,IAAI,CAACuxB,KAAK,GAAGvxB,IAAAA,CAAAA;AAEb,QAAA,IAAI,IAAI,CAAC8yB,gBAAgB,GAAG,CAAC,CAAG,EAAA;AAC5B,YAAA,MAAMnc,QAAW,GAAA,CAAA,GAAI,IAAI,CAACmc,gBAAgB,CAAA;AAC1C,YAAA,MAAMC,KAAQ/yB,GAAAA,IAAAA,GAAO,IAAI,CAAC+pB,SAAS,CAAA;AAEnC,YAAA,IAAIgJ,SAASpc,QAAU,EAAA;gBACnB,IAAI,CAACqc,IAAI,CAACD,KAAAA,CAAAA,CAAAA;AACV,gBAAA,IAAI,CAAChJ,SAAS,GAAG/pB,IAAAA,GAAQ+yB,KAAQpc,GAAAA,QAAAA,CAAAA;AACrC,aAAA;SAEC,MAAA;AACD,YAAA,IAAI,CAACqc,IAAI,CAAChzB,IAAO,GAAA,IAAI,CAAC+pB,SAAS,CAAA,CAAA;YAC/B,IAAI,CAACA,SAAS,GAAG/pB,IAAAA,CAAAA;AACrB,SAAA;AACJ,KAAA;AAEAgzB,IAAAA,IAAAA,CAAKxb,EAAU,EAAE;AACb,QAAA,IAAI,IAAI,CAACyb,WAAW,EAAE,IAAI,CAACC,MAAM,EAAA,CAAA;QAEjC1b,EAAKxY,GAAAA,IAAAA,CAAK0kB,GAAG,CAAClM,EAAI,EAAA,KAAA,CAAA,CAAA;QAClB,IAAI,CAACtW,MAAM,CAACsW,EAAAA,CAAAA,CAAAA;QACZ,IAAI,CAAC4X,MAAM,CAAC5X,EAAAA,CAAAA,CAAAA;AAChB,KAAA;AAEAtW,IAAAA,MAAAA,CAAOsW,EAAU,EAAE;QACf,IAAI,CAAC+a,YAAY,CAACrxB,MAAM,EAAA,CAAA;AACxB,QAAA,IAAI,CAACyxB,aAAa,CAACzxB,MAAM,CAAC,IAAI,CAACqwB,KAAK,CAAA,CAAA;AACpC,QAAA,IAAI,CAACkB,iBAAiB,CAACvxB,MAAM,CAACsW,EAAAA,CAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACkb,cAAc,CAACxxB,MAAM,CAACsW,EAAAA,CAAAA,CAAAA;AAC/B,KAAA;AAEA4X,IAAAA,MAAAA,CAAO5X,EAAU,EAAE;AACf,QAAA,IAAI,CAACka,SAAS,CAACv0B,IAAI,CAACunB,KAAK,EAAA,CAAA;QACzB,IAAI,CAACyO,SAAS,CAAC3b,EAAAA,CAAAA,CAAAA;AACf,QAAA,IAAI,CAACkb,cAAc,CAACtD,MAAM,CAAC5X,EAAAA,CAAAA,CAAAA;AAC/B,KAAA;AAEA2b,IAAAA,SAAAA,CAAU3b,EAAU,EAAE;QAClB,IAAI,CAACka,SAAS,CAACtC,MAAM,CAAC,IAAI,CAACoC,MAAM,EAAE,IAAI,CAACC,OAAO,CAAA,CAAA;AACnD,KAAA;IAEA2B,SAAUlV,CAAAA,KAAa,EAAEmB,MAAc,EAAE;AACrC,QAAA,IAAI,CAACqS,SAAS,CAAC2B,OAAO,CAACnV,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AAClC,KAAA;IAEApa,KAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAACquB,QAAQ,IAAI,KAAO,EAAA;YACxB,IAAI,CAACA,QAAQ,GAAG,IAAA,CAAA;AAChB,YAAA,MAAMC,gBAAgB,CAACvzB,IAAAA,GAAAA;gBACnB,IAAI,IAAI,CAACszB,QAAQ,EAAE;oBACf,IAAI,CAACT,MAAM,CAAC7yB,IAAO,GAAA,KAAA,CAAA,CAAA;oBACnBwzB,qBAAsBD,CAAAA,aAAAA,CAAAA,CAAAA;AAC1B,iBAAA;AACJ,aAAA,CAAA;YACAC,qBAAsBD,CAAAA,aAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAEArtB,IAAO,GAAA;QACH,IAAI,CAACotB,QAAQ,GAAG,KAAA,CAAA;AAChB,QAAA,IAAI,CAAC/B,KAAK,GAAG,IAAI,CAACxH,SAAS,GAAG,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAmJ,IAAAA,MAAAA,CACIhV,QAAgBf,MAAOsW,CAAAA,UAAU,EACjCpU,MAAiBlC,GAAAA,MAAAA,CAAOuW,WAAW,EACrC;QACE,IAAI,CAACrB,YAAY,GACb,IAAI,CAACsB,YAAY,KAAK/E,YAAYgF,SAAS,GAAG1V,QAAQmB,MAClD,GAAA,IAAI,CAACsU,YAAY,KAAK/E,YAAYiF,QAAQ,GAAG3V,QAAQmB,MAAS,GAAA,KAAA,CAAA;QAEtE,IAAI,IAAI,CAACgT,YAAY,EAAE;AACnB,YAAA,IAAI/oB,GAAM4U,GAAAA,KAAAA,CAAAA;YACVA,KAAQmB,GAAAA,MAAAA,CAAAA;YACRA,MAAS/V,GAAAA,GAAAA,CAAAA;AACb,SAAA;QAEA,IAAI,IAAI,CAAC2oB,MAAM,KAAK/T,SAChB,IAAI,CAACgU,OAAO,KAAK7S,MACnB,EAAA;YACE,IAAI,CAAC4S,MAAM,GAAG/T,KAAAA,CAAAA;YACd,IAAI,CAACgU,OAAO,GAAG7S,MAAAA,CAAAA;YAEf,IAAI4M,IAAAA,GAAO,IAAI,CAACqF,KAAK,CAAA;YACrB,IAAI,IAAI,CAACe,YAAY,EAAE;gBACnBpG,IAAKxW,CAAAA,KAAK,CAAC,mBAAA,CAAoB,GAAG,eAAA,CAAA;gBAClCwW,IAAKxW,CAAAA,KAAK,CAACqe,SAAS,GAAG,eAAA,CAAA;gBACvB7H,IAAKxW,CAAAA,KAAK,CAAC,0BAAA,CAA2B,GAAG,aAAA,CAAA;gBACzCwW,IAAKxW,CAAAA,KAAK,CAACse,eAAe,GAAG,aAAA,CAAA;gBAC7B9H,IAAKxW,CAAAA,KAAK,CAACue,MAAM,GAAG,CAAC,MAAM,EAAE3U,MAAO,CAAA,EAAE,CAAC,CAAA;gBACvC4M,IAAKxW,CAAAA,KAAK,CAACyI,KAAK,GAAG,CAAC,EAAEA,KAAAA,CAAM,EAAE,CAAC,CAAA;gBAC/B+N,IAAKxW,CAAAA,KAAK,CAAC4J,MAAM,GAAG,CAAC,EAAEA,MAAAA,CAAO,EAAE,CAAC,CAAA;aAEhC,MAAA;gBACD4M,IAAKxW,CAAAA,KAAK,CAAC,mBAAA,CAAoB,GAAG,cAAA,CAAA;gBAClCwW,IAAKxW,CAAAA,KAAK,CAACqe,SAAS,GAAG,cAAA,CAAA;gBACvB7H,IAAKxW,CAAAA,KAAK,CAACue,MAAM,GAAG,UAAA,CAAA;gBACpB/H,IAAKxW,CAAAA,KAAK,CAACyI,KAAK,GAAG,CAAC,EAAEA,KAAAA,CAAM,EAAE,CAAC,CAAA;gBAC/B+N,IAAKxW,CAAAA,KAAK,CAAC4J,MAAM,GAAG,CAAC,EAAEA,MAAAA,CAAO,EAAE,CAAC,CAAA;AACrC,aAAA;YAEA,IAAIzF,MAAAA,GAAS,IAAI,CAAC6X,OAAO,CAAA;YACzB,IAAI7X,MAAAA,CAAOqa,oBAAoB,EAAE;gBAC7B,IAAI,CAAC7B,SAAS,GAAG;oBAAElU,KAAOA,EAAAA,KAAAA,GAAQtE,OAAOsa,IAAI;oBAAE7U,MAAQA,EAAAA,MAAAA,GAASzF,OAAOsa,IAAI;oBAAEC,MAAQ,EAAA,CAAA;AAAE,iBAAA,CAAA;aAEtF,MAAA,IAAIva,MAAOwa,CAAAA,mBAAmB,EAAE;gBACjC,IAAI,CAACxa,MAAOya,CAAAA,MAAM,EAAE;oBAChBza,MAAO0a,CAAAA,MAAM,GAAGpW,KAAQmB,GAAAA,MAAAA,CAAAA;AACxBzF,oBAAAA,MAAAA,CAAOX,sBAAsB,EAAA,CAAA;AACjC,iBAAA;gBACA,IAAIsb,QAAAA,GAAW3a,MAAO4a,CAAAA,gBAAgB,CAAC9E,MAAAA,CAAOjK,UAAU,CAAEC,CAAAA,UAAU,CAACgK,MAAAA,CAAO+E,QAAQ,CAAA,CAAA;gBACpF,IAAIC,CAAAA,GAAI,CAAI11B,GAAAA,IAAAA,CAAKolB,GAAG,CAAC9S,eAAU4S,CAAAA,QAAQ,CAACtK,MAAAA,CAAOvB,GAAG,GAAG,GAAQkc,CAAAA,CAAAA,GAAAA,QAAAA,CAAAA;gBAC7D,IAAII,CAAAA,GAAID,IAAIxW,KAAQmB,GAAAA,MAAAA,CAAAA;gBACpB,IAAI,CAAC+S,SAAS,GAAG;oBAAElU,KAAOyW,EAAAA,CAAAA;oBAAGtV,MAAQqV,EAAAA,CAAAA;AAAGP,oBAAAA,MAAAA,EAAQjW,KAAQyW,GAAAA,CAAAA;AAAE,iBAAA,CAAA;AAC9D,aAAA;YAEA,IAAI,CAACvB,SAAS,CAAClV,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AACtB,YAAA,IAAI,CAAC3iB,IAAI,CAAC6e,WAAY4E,CAAAA,MAAM,EAAEjC,KAAOmB,EAAAA,MAAAA,CAAAA,CAAAA;AACzC,SAAA;AACJ,KAAA;AAEAvS,IAAAA,SAAAA,CAAUnD,KAAwC,EAAE;AAChD,QAAA,OAAO,IAAI,CAAC6oB,gBAAgB,CAAC1lB,SAAS,CAACnD,KAAAA,CAAAA,CAAAA;AAC3C,KAAA;AAEA,IAAA,MAAM8D,KAAK,EACPrB,GAAG,EAAET,GAAG,EAAEoB,UAAU,EACpB6nB,UAAa,GAAA,KAAK,EAClBC,aAAgB,GAAA,KAAK,EACrB,GAAGlrB,OAC4C,EAAE;AACjD,QAAA,MAAMU,IAAO,GAAA,MAAM,IAAI,CAACyC,SAAS,CAAC;AAAEV,YAAAA,GAAAA;AAAKT,YAAAA,GAAAA;AAAKoB,YAAAA,UAAAA;AAAW,SAAA,CAAA,CAAA;AACzD,QAAA,IAAI6nB,cAAcC,aAAe,EAAA;YAC7BxqB,IAAKW,CAAAA,QAAQ,CAACV,QAAQ,CAACC,MAAM,CAAC3M,OAAO,CAAC/B,CAAAA,CAAAA,GAAAA;AAAOA,gBAAAA,CAAAA,CAAE+4B,UAAU,GAAGA,UAAAA,CAAAA;AAAY/4B,gBAAAA,CAAAA,CAAEg5B,aAAa,GAAGA,aAAAA,CAAAA;AAAe,aAAA,CAAA,CAAA;AAC7G,SAAA;QACA,IAAI,CAACC,OAAO,CAACzqB,IAAMV,EAAAA,KAAAA,CAAAA,CAAAA;QACnB,OAAOU,IAAAA,CAAAA;AACX,KAAA;AAEAtJ,IAAAA,KAAAA,CAAMrF,MAAc,EAAE;AAClB,QAAA,OAAO,IAAI,CAACi3B,aAAa,CAAC5xB,KAAK,CAACrF,MAAAA,CAAAA,CAAAA;AACpC,KAAA;AAEAsO,IAAAA,QAAAA,CAAStO,MAAc,EAAE;AACrB,QAAA,OAAO,IAAI,CAACi3B,aAAa,CAAC3oB,QAAQ,CAACtO,MAAAA,CAAAA,CAAAA;AACvC,KAAA;AAEAuO,IAAAA,YAAAA,CAAavO,MAAc,EAAE;AACzB,QAAA,IAAI,CAACi3B,aAAa,CAAC1oB,YAAY,CAACvO,MAAAA,CAAAA,CAAAA;AACpC,KAAA;AAEAq5B,IAAAA,iBAAAA,CAAkBt5B,QAAiC,EAAE;AACjD,QAAA,MAAMu5B,UAAa,GAAA,IAAI,CAACtD,SAAS,CAACuD,WAAW,CAAC3nB,GAAG,CAAC,IAAI,CAACkkB,MAAM,EAAE,CAAA,CAAA,CAAA;AAC/D,QAAA,MAAM0D,cAAc,CAACC,IAAAA,GAAAA;YACjB,IAAIA,IAAAA,CAAKzqB,QAAQ,EAAE;gBACf,IAAIlF,KAAAA,CAAMC,OAAO,CAAC0vB,IAAKzqB,CAAAA,QAAQ,GAAGyqB,IAAKzqB,CAAAA,QAAQ,CAAC9M,OAAO,CAACnC,QAAAA,CAAAA,CAAAA;AACnDA,qBAAAA,QAAAA,CAAS05B,KAAKzqB,QAAQ,CAAA,CAAA;AAC/B,aAAA;AACJ,SAAA,CAAA;QACAsqB,UAAWI,CAAAA,MAAM,CAACx3B,OAAO,CAACs3B,WAAAA,CAAAA,CAAAA;QAC1BF,UAAWK,CAAAA,WAAW,CAACz3B,OAAO,CAACs3B,WAAAA,CAAAA,CAAAA;QAC/BF,UAAWM,CAAAA,YAAY,CAAC13B,OAAO,CAACs3B,WAAAA,CAAAA,CAAAA;AACpC,KAAA;AAEA5F,IAAAA,eAAAA,CAAgB7zB,QAAkC,EAAE;AAChD,QAAA,OAAO,IAAI,CAACi3B,cAAc,CAACpD,eAAe,CAAC7zB,QAAAA,CAAAA,CAAAA;AAC/C,KAAA;IAEA8zB,SAA4BN,CAAAA,MAAiC,EAAE3C,OAAiB,EAAK;AACjF,QAAA,OAAO,IAAI,CAACoG,cAAc,CAACnD,SAAS,CAACN,MAAQ3C,EAAAA,OAAAA,CAAAA,CAAAA;AACjD,KAAA;IAGAmD,SAAUR,CAAAA,MAAW,EAAEtlB,KAAU,EAAE;AAC/B,QAAA,MAAM6lB,MAAM,IAAI,CAACkD,cAAc,CAACjD,SAAS,CAACR,MAAAA,CAAAA,CAAAA;AAC1CJ,QAAAA,UAAAA,CAAWW,GAAK7lB,EAAAA,KAAAA,CAAAA,CAAAA;QAChB,OAAO6lB,GAAAA,CAAAA;AACX,KAAA;AAGAK,IAAAA,YAAAA,CAAaZ,MAAW,EAAE;AACtB,QAAA,IAAI,CAACyD,cAAc,CAAC7C,YAAY,CAACZ,MAAAA,CAAAA,CAAAA;AACrC,KAAA;AAEAlV,IAAAA,YAAAA,CAAkC1P,IAAc,EAAET,WAAyB,EAAE0iB,OAAiB,EAAK;AAC/F,QAAA,OAAO,IAAI,CAACmG,iBAAiB,CAAC1Y,YAAY,CAAC1P,MAAMT,WAAa0iB,EAAAA,OAAAA,CAAAA,CAAAA;AAClE,KAAA;AAEAE,IAAAA,kBAAAA,CAAmB/wB,QAAmC,EAAE;AACpD,QAAA,OAAO,IAAI,CAACg3B,iBAAiB,CAACjG,kBAAkB,CAAC/wB,QAAAA,CAAAA,CAAAA;AACrD,KAAA;IAIAuwB,YAAkC3hB,CAAAA,IAA0B,EAAET,WAAgB,EAAK;AAC/E,QAAA,OAAO,IAAI,CAAC6oB,iBAAiB,CAACzG,YAAY,CAAC3hB,IAAMT,EAAAA,WAAAA,CAAAA,CAAAA;AACrD,KAAA;IAEA0M,eAAgBjM,CAAAA,IAAc,EAAE8hB,SAAoB,EAAE;AAClD,QAAA,OAAO,IAAI,CAACsG,iBAAiB,CAACnc,eAAe,CAACjM,IAAM8hB,EAAAA,SAAAA,CAAAA,CAAAA;AACxD,KAAA;AAGA2I,IAAAA,OAAAA,CAAQjrB,MAAW,EAAE,EACjBlN,IAAI,EACJK,KAAK,EACLmpB,KAAK,EACLvN,QAAQ,EACR2c,QAAQ,EACRC,UAAU,EACVC,WAAW,EACXtJ,SAAS,EACTuJ,MAAAA,GAAS,IAAI,CAAClE,MAAM,EACpB,GAAG7nB,KAAAA,EACD,GAAG,EAAE,EACT;AACE,QAAA,IAAIU,IAAO,GAAA,IAAA,CAAA;AACX,QAAA,IAAImlB,GAAME,GAAAA,MAAAA,CAAOC,iBAAiB,CAAC9lB,MAAQlN,EAAAA,IAAAA,CAAAA,CAAAA;QAC3C,IAAI6yB,GAAAA,CAAImG,UAAU,EAAE;YAChBtrB,IAAOmlB,GAAAA,GAAAA,CAAAA;AACPkG,YAAAA,MAAAA,CAAO50B,GAAG,CAAC0uB,GAAAA,CAAAA,CAAAA;SAEV,MAAA,IAAIA,eAAezZ,SAAW,EAAA;YAC/B1L,IAAOmlB,GAAAA,GAAAA,CAAInlB,IAAI,IAAI,IAAIgF,cAAAA,EAAAA,CAAAA;AACvBqmB,YAAAA,MAAAA,CAAO50B,GAAG,CAACuJ,IAAAA,CAAAA,CAAAA;AACX,YAAA,IAAI,CAACooB,iBAAiB,CAACzG,YAAY,CAAC3hB,IAAMmlB,EAAAA,GAAAA,CAAAA,CAAAA;SAEzC,MAAA;AACD,YAAA,MAAMoG,KAAM,CAAA,iBAAA,CAAA,CAAA;AAChB,SAAA;AAEA,QAAA,IAAIzJ,SAAW,EAAA;AACX,YAAA,MAAMX,UAAahmB,GAAAA,KAAAA,CAAMC,OAAO,CAAC0mB,aAAaA,SAAY,GAAA;AAACA,gBAAAA,SAAAA;AAAU,aAAA,CAAA;YACrE,KAAK,IAAIqD,OAAOhE,UAAY,CAAA;AACxB,gBAAA,IAAI,CAACiH,iBAAiB,CAACzG,YAAY,CAAC3hB,IAAMmlB,EAAAA,GAAAA,CAAAA,CAAAA;AAC9C,aAAA;AACJ,SAAA;QAEA,IAAIrJ,KAAAA,IAASvN,YAAY2c,QAAU,EAAA;AAC/B1G,YAAAA,UAAAA,CAAWxkB,IAAM,EAAA;AAAE8b,gBAAAA,KAAAA;AAAOvN,gBAAAA,QAAAA;AAAU2c,gBAAAA,QAAAA;AAAS,aAAA,CAAA,CAAA;AACjD,SAAA;AACA,QAAA,IAAI5rB,KAAO,EAAA;AACPklB,YAAAA,UAAAA,CAAWW,GAAK7lB,EAAAA,KAAAA,CAAAA,CAAAA;AACpB,SAAA;QAEA,IAAI6lB,GAAAA,CAAI7V,QAAQ,IAAI8b,WAAa,EAAA;YAC7BjG,GAAI6E,CAAAA,MAAM,GAAG7E,GAAI8E,CAAAA,MAAM,KAAK,IAAI,CAAC7C,OAAO,CAAC6C,MAAM,CAAA;YAC/C,IAAI,CAAC7C,OAAO,GAAGjC,GAAAA,CAAAA;AACnB,SAAA;AACA,QAAA,IAAIgG,UAAY,EAAA;YACZ,IAAInrB,IAAAA,CAAKwrB,kBAAkB,EAAEnG,MAAAA,CAAOI,qBAAqB,CAACzlB,IAAAA,CAAK0lB,MAAM,EAAEyF,UAAAA,CAAAA,CAAAA;AAC3E,SAAA;QAEA,OAAOhG,GAAAA,CAAAA;AACX,KAAA;AAEAsG,IAAAA,UAAAA,CAAWzrB,IAAc,EAAE;AACvB,QAAA,IAAI,CAACooB,iBAAiB,CAAChH,iBAAiB,CAACphB,IAAAA,CAAAA,CAAAA;AACzCA,QAAAA,IAAAA,CAAK0rB,gBAAgB,EAAA,CAAA;AACzB,KAAA;IAEAC,UAAW3rB,CAAAA,IAAc,EAAEuiB,MAAe,EAAE;AACxC,QAAA,IAAI,CAAC6F,iBAAiB,CAAC5G,gBAAgB,CAACxhB,IAAAA,CAAAA,CAAAA;AACxCA,QAAAA,IAAAA,CAAK0hB,OAAO,GAAGa,MAAAA,CAAAA;AACnB,KAAA;AAEAqJ,IAAAA,kBAAAA,CACI/X,KAAa,EACbmB,MAAc,EACd6W,UAAmB,KAAK,EACxBC,SAAuC,GAAA,KAAK,EAC5CC,IAAe,GAAA,CAAC,EAChBC,MAAAA,GAAkB,KAAK,EACzB;QACE,OAAO,IAAIC,uBAAkBpY,CAAAA,KAAAA,EAAOmB,MAAQ,EAAA;YACxCkX,KAAO1mB,EAAAA,yBAAAA;YACP2mB,KAAO3mB,EAAAA,yBAAAA;AACP4mB,YAAAA,SAAAA,EAAWP,UAAU3mB,mBAAgBC,GAAAA,kBAAAA;YACrCknB,SAAWR,EAAAA,OAAAA,GAAU3mB,mBAAgB8mB,GAAAA,MAAAA,GAASM,8BAA2BnnB,GAAAA,kBAAAA;YACzEsG,IAAM,EAAA,OAAOqgB,cAAc,SAAYA,GAAAA,SAAAA,GAAY,IAAI,CAAC/H,eAAe,GAAGO,sBAAmBwH,GAAAA,SAAAA;YAC7FS,UAAY,EAAA,CAAA;YACZC,UAAYhoB,EAAAA,oBAAAA;YACZioB,WAAa,EAAA,KAAA;YACbC,aAAe,EAAA,KAAA;YACfC,OAAS7U,EAAAA,UAAAA,CAAWW,aAAa,GAAGsT,IAAO,GAAA,CAAA;YAC3Ca,eAAiBZ,EAAAA,MAAAA;AACrB,SAAA,CAAA,CAAA;AACJ,KAAA;AAEAa,IAAAA,sBAAAA,CACIC,IAAY,EACZjB,OAAmB,GAAA,KAAK,EACxBC,SAAAA,GAAuC,KAAK,EAC5CC,IAAe,GAAA,CAAC,EAChBC,MAAAA,GAAkB,KAAK,EACzB;QACE,OAAO,IAAIe,4BAAsBD,IAAM,EAAA;YACnCZ,KAAO1mB,EAAAA,yBAAAA;YACP2mB,KAAO3mB,EAAAA,yBAAAA;AACP4mB,YAAAA,SAAAA,EAAWP,UAAU3mB,mBAAgBC,GAAAA,kBAAAA;YACrCknB,SAAWR,EAAAA,OAAAA,GAAU3mB,mBAAgB8mB,GAAAA,MAAAA,GAASM,8BAA2BnnB,GAAAA,kBAAAA;YACzEsG,IAAM,EAAA,OAAOqgB,cAAc,SAAYA,GAAAA,SAAAA,GAAY,IAAI,CAAC/H,eAAe,GAAGO,sBAAmBwH,GAAAA,SAAAA;YAC7FS,UAAY,EAAA,CAAA;YACZC,UAAYhoB,EAAAA,oBAAAA;YACZioB,WAAa,EAAA,KAAA;YACbC,aAAe,EAAA,KAAA;YACfC,OAAS7U,EAAAA,UAAAA,CAAWW,aAAa,GAAGsT,IAAO,GAAA,CAAA;YAC3Ca,eAAiBZ,EAAAA,MAAAA;AACrB,SAAA,CAAA,CAAA;AACJ,KAAA;IAEAgB,iBACIC,CAAAA,IAAkB,EAClBpZ,KAAa,EACbmB,MAAc,EACd8W,SAAAA,GAAqB,KAAK,EAC1BD,OAAmB,GAAA,IAAI,EACzB;AACE,QAAA,OAAO,IAAIqB,iBACPD,CAAAA,IAAAA,EAAMpZ,KAAOmB,EAAAA,MAAAA,EACbmY,kBACArB,SAAY/hB,GAAAA,eAAAA,GAAYua,sBACxB8I,EAAAA,eAAAA,EAAW5nB,2BAAqBA,yBAChCqmB,EAAAA,OAAAA,GAAU3mB,sBAAgBC,kBAC1B0mB,EAAAA,OAAAA,GAAU3mB,sBAAgBC,kBAC1B,EAAA,CAAA,CAAA,CAAA;AAER,KAAA;AAEA;;;;QAKAkoB,MAAAA,CAAgBj8B,QAAiB,EAAE;QAC/B,MAAM2W,KAAAA,GAAQ,IAAI,CAACof,MAAM,CAAA;QACzB,MAAM5X,MAAAA,GAAS,IAAI,CAAC6X,OAAO,CAAA;QAC3B,IAAI,CAACD,MAAM,GAAG,IAAImG,WAAAA,EAAAA,CAAAA;AAClB,QAAA,MAAMtqB,MAAS5R,GAAAA,QAAAA,EAAAA,CAAAA;QACf,IAAI,CAAC+1B,MAAM,GAAGpf,KAAAA,CAAAA;QACd,IAAI,CAACqf,OAAO,GAAG7X,MAAAA,CAAAA;QACf,OAAOvM,MAAAA,CAAAA;AACX,KAAA;AAIAkjB,IAAAA,OAAAA,CAAQ70B,MAAY,EAAE;QAClB,IAAI8J,KAAAA,CAAMC,OAAO,CAAC/J,MAAS,CAAA,EAAA;AACvB,YAAA,IAAIA,OAAOk8B,KAAK,CAAC/7B,CAAAA,CAAKA,GAAAA,CAAAA,CAAEg8B,UAAU,CAAG,EAAA;AACjCnI,gBAAAA,MAAAA,CAAOU,eAAe,CAAC,IAAI,CAACsB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAE/1B,MAAAA,CAAAA,CAAAA;aAEjE,MAAA;AACD,gBAAA,MAAMk6B,KAAM,CAAA,mBAAA,CAAA,CAAA;AAChB,aAAA;SAEC,MAAA,IAAI,OAAOl6B,MAAAA,KAAW,QAAU,EAAA;YACjC,IAAIA,MAAAA,CAAOm8B,UAAU,EAAE;AACnBnI,gBAAAA,MAAAA,CAAOU,eAAe,CAAC,IAAI,CAACsB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAE/1B,MAAAA,CAAAA,CAAAA;aAEjE,MAAA,IAAIA,MAAOi6B,CAAAA,UAAU,EAAE;AACxB,gBAAA,IAAIj6B,MAAO4O,CAAAA,QAAQ,CAACE,SAAS,EAAE;oBAC3BklB,MAAOU,CAAAA,eAAe,CAAC,IAAI,CAACsB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAE3zB,MAAOiQ,CAAAA,MAAM,CAACrS,MAAO4O,CAAAA,QAAQ,CAACE,SAAS,CAAA,CAAA,CAAA;AAC7G,iBAAA;AACA,gBAAA,IAAI9O,MAAO4O,CAAAA,QAAQ,CAACG,QAAQ,EAAE;AAC1BilB,oBAAAA,MAAAA,CAAOe,cAAc,CAAC,IAAI,CAACiB,SAAS,EAAE5zB,MAAOiQ,CAAAA,MAAM,CAACrS,MAAAA,CAAO4O,QAAQ,CAACG,QAAQ,CAAA,CAAA,CAAA;AAChF,iBAAA;AACA,gBAAA,IAAI,CAAC/O,MAAAA,CAAO4O,QAAQ,CAACC,MAAM,EAAE;AACzBmlB,oBAAAA,MAAAA,CAAOc,eAAe,CAAC,IAAI,CAACkB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAE/1B,MAAAA,CAAAA,CAAAA;AACtE,iBAAA;aAEC,MAAA,IAAIA,MAAOo8B,CAAAA,SAAS,EAAE;AACvBpI,gBAAAA,MAAAA,CAAOe,cAAc,CAAC,IAAI,CAACiB,SAAS,EAAEh2B,MAAAA,CAAAA,CAAAA;AAC1C,aAAA;SAEC,MAAA;AACDg0B,YAAAA,MAAAA,CAAOc,eAAe,CAAC,IAAI,CAACkB,SAAS,EAAE,IAAI,CAACF,MAAM,EAAE,IAAI,CAACC,OAAO,EAAE,IAAI,CAACD,MAAM,CAAA,CAAA;AACjF,SAAA;AACJ,KAAA;AAleA5nB,IAAAA,WAAAA,CAAY,EACRqiB,IAAI,EACJ3P,MAAM,EACNjb,SAAY,GAAA,IAAI,EAChB02B,UAAAA,GAAa,IAAI,EACjBC,OAAU,GAAA,KAAK,EACfpe,MAAS,GAAA;QAAEvB,GAAK,EAAA,EAAA;QAAIC,IAAM,EAAA,CAAA;QAAGC,GAAK,EAAA,IAAA;QAAMK,QAAU,EAAA,IAAI3J,aAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;AAAG,KAAC,EACxEgpB,eAAkB,GAAA,CAAC,CAAC,EACpBpB,aAAahoB,oBAAc,EAC3BqpB,WAAcC,GAAAA,uBAAiB,EAC/BC,mBAAsB,GAAA,CAAC,EACvBC,MAAS,GAAA,GAAG,EACZltB,IAAO,GAAA,EAAE,EACTwC,YAAAA,GAAe,EAAE,EACjBC,SAAAA,GAAY,4CAA4C,EACxD5B,MAAAA,GAAS,EAAE,EACXssB,MAAS,GAAA,EAAE,EACX,GAAG/K,WAiCoB,GAAG,EAAE,CAAE;QAC9B,KAAK,EAAA,CAAA;aAlHDyE,IAAe,GAAA,CAAA,CAAA;aACfC,MAAiB,GAAA,CAAA,CAAA;aACjBC,OAAkB,GAAA,CAAA,CAAA;aAClBE,SAA+D,GAAA;YAAElU,KAAO,EAAA,CAAA;YAAGmB,MAAQ,EAAA,CAAA;YAAG8U,MAAQ,EAAA,CAAA;AAAE,SAAA,CAAA;AAChGR,QAAAA,IAAAA,CAAAA,YAAAA,GAA4B/E,YAAY2J,IAAI,CAAA;aAE5CjF,QAAoB,GAAA,KAAA,CAAA;aACpBjB,YAAwB,GAAA,KAAA,CAAA;aAExBd,KAAgB,GAAA,CAAA,CAAA;aAChBxH,SAAoB,GAAA,CAAA,CAAA;AACpB+I,QAAAA,IAAAA,CAAAA,gBAAAA,GAA2B,CAAC,CAAA,CAAA;aAC5BG,WAAuB,GAAA,IAAA,CAAA;AAuG3B,QAAA,MAAMuF,EAAKlc,GAAAA,MAAAA,IAAU2F,QAASwW,CAAAA,cAAc,CAAC,QAAA,CAAA,CAAA;QAC7C,MAAMC,KAAAA,GAAQtL,cAAcoL,EAAIjL,EAAAA,SAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAI,CAACmL,KAAO,EAAA;AACR,YAAA,MAAM9C,KAAM,CAAA,qCAAA,CAAA,CAAA;AAChB,SAAA;QAEA,IAAI,CAACtE,KAAK,GAAGrF,IAAQuM,IAAAA,EAAAA,CAAAA;QACrB,IAAI,CAAC7G,OAAO,GAAG6G,EAAAA,CAAAA;AACf,QAAA,IAAI,CAAC5G,GAAG,GAAG8G,KAAAA,CAAMzK,EAAE,CAAA;AACnB,QAAA,IAAI,CAAC4D,yBAAyB,GAAG6G,KAAAA,CAAMvK,wBAAwB,CAAA;AAC/D,QAAA,IAAI,CAAC2D,gBAAgB,GAAG4G,KAAAA,CAAMtK,eAAe,CAAA;QAC7C,IAAI,CAAC4D,IAAI,GAAGhzB,IAAAA,CAAK0kB,GAAG,CAAC2U,MAAAA,EAAQlb,OAAO+F,gBAAgB,CAAA,CAAA;QAEpD,IAAI,CAACsO,MAAM,GAAG,IAAImG,WAAAA,EAAAA,CAAAA;QAClB,IAAI,CAAClG,OAAO,GAAG,IAAIpgB,uBAAAA,EAAAA,CAAAA;AACnB,QAAA,IAAI,CAACqgB,SAAS,GAAG,IAAIiH,mBAAc,CAAA;YAAErc,MAAQkc,EAAAA,EAAAA;AAAII,YAAAA,OAAAA,EAASF,MAAMzK,EAAE;AAAC,SAAA,CAAA,CAAA;AACnE,QAAA,IAAI,CAACyD,SAAS,CAACmH,aAAa,CAAC,IAAI,CAAC7G,IAAI,CAAA,CAAA;AACtC,QAAA,IAAI,CAACN,SAAS,CAACoH,gBAAgB,GAAGjC,UAAAA,CAAAA;AAClC,QAAA,IAAI,CAACnF,SAAS,CAACwG,WAAW,GAAGA,WAAAA,CAAAA;AAC7B,QAAA,IAAI,CAACxG,SAAS,CAAC0G,mBAAmB,GAAGA,mBAAAA,CAAAA;QACrC,IAAI,CAAC1G,SAAS,CAACqH,SAAS,CAAC/iB,OAAO,GAAG,CAAC,CAACgiB,OAAAA,CAAAA;QACrC,IAAI,CAACtG,SAAS,CAACqH,SAAS,CAACjjB,IAAI,GAAG,OAAOkiB,OAAY,KAAA,SAAA,GAAYgB,sBAAmBhB,GAAAA,OAAAA,CAAAA;AAClF,QAAA,IAAI,CAACtG,SAAS,CAACv0B,IAAI,CAAC87B,SAAS,GAAG,KAAA,CAAA;QAEhC,MAAMnrB,cAAAA,GAAiB,IAAIorB,oBAAAA,CAAeltB,MAAOuB,CAAAA,MAAM,EAAEvB,MAAOe,CAAAA,UAAU,EAAEf,MAAAA,CAAO0B,OAAO,CAAA,CAAA;AAC1F,QAAA,IAAI,CAAC8kB,gBAAgB,GAAG,IAAIvnB,eAAgB,CAAA;AAAEE,YAAAA,IAAAA;AAAMwC,YAAAA,YAAAA;AAAcC,YAAAA,SAAAA;AAAWE,YAAAA,cAAAA;AAAe,SAAA,CAAA,CAAA;AAC5F,QAAA,IAAI,CAACykB,YAAY,GAAG,IAAI1F,WAAYyL,CAAAA,MAAAA,CAAO7vB,UAAU,EAAE6vB,MAAOvrB,CAAAA,UAAU,EAAEurB,MAAAA,CAAO5qB,OAAO,CAAA,CAAA;AACxF,QAAA,IAAI,CAAC+kB,iBAAiB,GAAG,IAAItH,iBAAiB,IAAI,CAAA,CAAA;AAClD,QAAA,IAAI,CAACuH,cAAc,GAAG,IAAI3D,cAAc,IAAI,CAAA,CAAA;QAC5C,IAAI,CAAC4D,aAAa,GAAG,IAAI7oB,YAAAA,EAAAA,CAAAA;QAEzB,IAAI,CAACmpB,WAAW,GAAG8E,UAAAA,CAAAA;QACnB,IAAI,CAACjF,gBAAgB,GAAGmF,eAAAA,CAAAA;AACxB,QAAA,IAAI,CAACrF,MAAM,GAAG,IAAIrX,YAAY,IAAI,CAAA,CAAA;QAClC,IAAI,CAACqX,MAAM,CAACxW,iBAAiB,EAAA,CAAA;QAE7B,IAAI/a,SAAAA,EAAW,IAAI,CAAC4D,KAAK,EAAA,CAAA;AAC7B,KAAA;AA0YJ,CAAA;AA7nBayqB,MAAAA,CACF+E,WAAoB,IAAIxlB,aAAAA,EAAAA,CAAAA;AADtBygB,MAAAA,CAEFjK,aAAsB,IAAIxW,aAAAA,EAAAA,CAAAA;AAFxBygB,MAAAA,CAQFO,iBAAoB,GAAA;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA,MAAA;AAAQ,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,KAAA;AAAM,CAAA,CAAA;AARnEP,MAAAA,CA6EFY,cAAuB,GAAA,IAAIvlB,UAAK2kB,CAAAA,MAAAA,CAAOyB,qBAAqB,EAAA,CAAA,CAAA;AA7E1DzB,MA8EFwB,CAAAA,gBAAAA,GAAuC,IAAI3f,wBAAmB,CAAA,CAAE,GAAG,CAAG,EAAA,CAAA,EAAG,CAAE,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;;ACnIrF,MAAM4nB,MAAezjB,SAAAA,cAAAA,CAAAA;;;aAExBI,IAAe,GAAA,QAAA,CAAA;;AAKnB;;;;;;;;;;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[6,9,10,11,12,14,15,16,17,19]}
1
+ {"version":3,"file":"main.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/tween/tween.js","../src/tween/TweenChain.ts","../src/tween/TweenManager.ts","../src/asset/aLoader.ts","../src/loader/aEXRLoader.ts","../src/loader/aFBXLoader.ts","../src/loader/aGLTFLoader.ts","../src/loader/aHDRLoader.ts","../src/loader/aJSONLoader.ts","../src/loader/aTextureLoader.ts","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/math/Damp.ts","../src/math/Constant.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitives/Box.ts","../src/primitives/Sphere.ts","../src/primitives/Plane.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/asset/ResourceManager.ts","../src/Utils.ts","../src/PluginManager.ts","../src/Viewer.ts","../src/Plugin.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener {\n name: string, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter {\n\n protected _events: { [k: string]: EventHandler[] } = {};\n protected _removeEvent(list: EventHandler[], index: number, name: string) {\n if (index > -1) {\n list.splice(index, 1);\n if (list.length === 0) {\n delete this._events[name];\n }\n }\n return this;\n }\n\n clear() {\n this._events = {};\n return this;\n }\n\n has(name: string) {\n return !!this._events[name];\n }\n\n on(name: string, callback: (...args: any[]) => any, target?: Object, once: boolean = false) {\n let list = this._events[name];\n if (list == null) {\n list = this._events[name] = [];\n }\n\n let index = list.findIndex(v => v.callback === callback && (!target || v.target === target));\n if (index > -1) {\n console.warn(`event: ${name} duplicate registered`);\n return;\n }\n\n list.push({ name, callback, target, once });\n return this;\n }\n\n off(name: string, callback: (...args: any[]) => any, target?: Object) {\n let list = this._events[name];\n if (list) {\n let index = list.findIndex(a => (a.callback === callback) && (!target || a.target === target));\n this._removeEvent(list, index, name);\n }\n return this;\n }\n\n onof(name: string, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener[] }) {\n if (container._listeners === undefined) {\n container._listeners = [];\n }\n container._listeners.push({ name, callback });\n this.on(name, callback);\n return this;\n }\n\n offof(container: Object & { _listeners?: Listener[] }) {\n for (let v of container._listeners) {\n this.off(v.name, v.callback);\n }\n return this;\n }\n\n targetOff(target: Object) {\n for (let name in this._events) {\n let list = this._events[name];\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v.target === target) {\n this._removeEvent(list, i, name);\n }\n }\n }\n return this;\n }\n\n emit(name: string, ...args: any[]) {\n let list = this._events[name];\n if (list) {\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v) { //callback可能会删除list元素\n if (v.once) this._removeEvent(list, i, name);\n if (v.target) v.callback.apply(v.target, args);\n else v.callback(...args);\n }\n }\n }\n return this;\n }\n}\n","/**\n * @class\n * @private\n */\n/* tslint:disable */\nconst noop = (message?: any, ...optionalParams: any[]) => {};\nconst debug = console.log.bind(console);\nconst info = console.info.bind(console);\nconst warn = console.warn.bind(console);\nconst error = console.error.bind(console);\n\nexport const Logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n isEnabled: false,\n\n /** Turn on log */\n enable() {\n this.debug = debug;\n this.info = info;\n this.warn = warn;\n this.error = error;\n this.isEnabled = true;\n },\n\n /** Turn off log */\n disable() {\n this.debug = noop;\n this.info = noop;\n this.warn = noop;\n this.error = noop;\n this.isEnabled = false;\n }\n};\n","export function mixin(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}","/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\nvar Easing = {\n Linear: {\n None: function (amount) {\n return amount;\n },\n },\n Quadratic: {\n In: function (amount) {\n return amount * amount;\n },\n Out: function (amount) {\n return amount * (2 - amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount;\n }\n return -0.5 * (--amount * (amount - 2) - 1);\n },\n },\n Cubic: {\n In: function (amount) {\n return amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount + 2);\n },\n },\n Quartic: {\n In: function (amount) {\n return amount * amount * amount * amount;\n },\n Out: function (amount) {\n return 1 - --amount * amount * amount * amount;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount;\n }\n return -0.5 * ((amount -= 2) * amount * amount * amount - 2);\n },\n },\n Quintic: {\n In: function (amount) {\n return amount * amount * amount * amount * amount;\n },\n Out: function (amount) {\n return --amount * amount * amount * amount * amount + 1;\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return 0.5 * amount * amount * amount * amount * amount;\n }\n return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);\n },\n },\n Sinusoidal: {\n In: function (amount) {\n return 1 - Math.cos((amount * Math.PI) / 2);\n },\n Out: function (amount) {\n return Math.sin((amount * Math.PI) / 2);\n },\n InOut: function (amount) {\n return 0.5 * (1 - Math.cos(Math.PI * amount));\n },\n },\n Exponential: {\n In: function (amount) {\n return amount === 0 ? 0 : Math.pow(1024, amount - 1);\n },\n Out: function (amount) {\n return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n if ((amount *= 2) < 1) {\n return 0.5 * Math.pow(1024, amount - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);\n },\n },\n Circular: {\n In: function (amount) {\n return 1 - Math.sqrt(1 - amount * amount);\n },\n Out: function (amount) {\n return Math.sqrt(1 - --amount * amount);\n },\n InOut: function (amount) {\n if ((amount *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - amount * amount) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);\n },\n },\n Elastic: {\n In: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n },\n Out: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;\n },\n InOut: function (amount) {\n if (amount === 0) {\n return 0;\n }\n if (amount === 1) {\n return 1;\n }\n amount *= 2;\n if (amount < 1) {\n return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);\n }\n return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;\n },\n },\n Back: {\n In: function (amount) {\n var s = 1.70158;\n return amount * amount * ((s + 1) * amount - s);\n },\n Out: function (amount) {\n var s = 1.70158;\n return --amount * amount * ((s + 1) * amount + s) + 1;\n },\n InOut: function (amount) {\n var s = 1.70158 * 1.525;\n if ((amount *= 2) < 1) {\n return 0.5 * (amount * amount * ((s + 1) * amount - s));\n }\n return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);\n },\n },\n Bounce: {\n In: function (amount) {\n return 1 - Easing.Bounce.Out(1 - amount);\n },\n Out: function (amount) {\n if (amount < 1 / 2.75) {\n return 7.5625 * amount * amount;\n }\n else if (amount < 2 / 2.75) {\n return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;\n }\n else if (amount < 2.5 / 2.75) {\n return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;\n }\n else {\n return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;\n }\n },\n InOut: function (amount) {\n if (amount < 0.5) {\n return Easing.Bounce.In(amount * 2) * 0.5;\n }\n return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;\n },\n },\n};\n\nvar now;\n// Include a performance.now polyfill.\n// In node.js, use process.hrtime.\n// eslint-disable-next-line\n// @ts-ignore\nif (typeof self === 'undefined' && typeof process !== 'undefined' && process.hrtime) {\n now = function () {\n // eslint-disable-next-line\n // @ts-ignore\n var time = process.hrtime();\n // Convert [seconds, nanoseconds] to milliseconds.\n return time[0] * 1000 + time[1] / 1000000;\n };\n}\n// In a browser, use self.performance.now if it is available.\nelse if (typeof self !== 'undefined' && self.performance !== undefined && self.performance.now !== undefined) {\n // This must be bound, because directly assigning this function\n // leads to an invocation exception in Chrome.\n now = self.performance.now.bind(self.performance);\n}\n// Use Date.now if it is available.\nelse if (Date.now !== undefined) {\n now = Date.now;\n}\n// Otherwise, use 'new Date().getTime()'.\nelse {\n now = function () {\n return new Date().getTime();\n };\n}\n\nfunction now$1() {\n return now() * 0.001;\n};\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nvar Group = /** @class */ (function () {\n function Group() {\n this._tweens = {};\n this._tweensAddedDuringUpdate = {};\n }\n Group.prototype.getAll = function () {\n var _this = this;\n return Object.keys(this._tweens).map(function (tweenId) {\n return _this._tweens[tweenId];\n });\n };\n Group.prototype.removeAll = function () {\n this._tweens = {};\n };\n Group.prototype.add = function (tween) {\n this._tweens[tween.getId()] = tween;\n this._tweensAddedDuringUpdate[tween.getId()] = tween;\n };\n Group.prototype.remove = function (tween) {\n delete this._tweens[tween.getId()];\n delete this._tweensAddedDuringUpdate[tween.getId()];\n };\n Group.prototype.update = function (time, preserve) {\n if (time === void 0) { time = now$1(); }\n if (preserve === void 0) { preserve = false; }\n var tweenIds = Object.keys(this._tweens);\n if (tweenIds.length === 0) {\n return false;\n }\n // Tweens are updated in \"batches\". If you add a new tween during an\n // update, then the new tween will be updated in the next batch.\n // If you remove a tween during an update, it may or may not be updated.\n // However, if the removed tween was added during the current batch,\n // then it will not be updated.\n while (tweenIds.length > 0) {\n this._tweensAddedDuringUpdate = {};\n for (var i = 0; i < tweenIds.length; i++) {\n var tween = this._tweens[tweenIds[i]];\n var autoStart = !preserve;\n if (tween && tween.update(time, autoStart) === false && !preserve) {\n delete this._tweens[tweenIds[i]];\n }\n }\n tweenIds = Object.keys(this._tweensAddedDuringUpdate);\n }\n return true;\n };\n return Group;\n}());\n\n/**\n *\n */\nvar Interpolation = {\n Linear: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.Linear;\n if (k < 0) {\n return fn(v[0], v[1], f);\n }\n if (k > 1) {\n return fn(v[m], v[m - 1], m - f);\n }\n return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n },\n Bezier: function (v, k) {\n var b = 0;\n var n = v.length - 1;\n var pw = Math.pow;\n var bn = Interpolation.Utils.Bernstein;\n for (var i = 0; i <= n; i++) {\n b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n }\n return b;\n },\n CatmullRom: function (v, k) {\n var m = v.length - 1;\n var f = m * k;\n var i = Math.floor(f);\n var fn = Interpolation.Utils.CatmullRom;\n if (v[0] === v[m]) {\n if (k < 0) {\n i = Math.floor((f = m * (1 + k)));\n }\n return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\n }\n else {\n if (k < 0) {\n return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n }\n if (k > 1) {\n return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n }\n return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\n }\n },\n Utils: {\n Linear: function (p0, p1, t) {\n return (p1 - p0) * t + p0;\n },\n Bernstein: function (n, i) {\n var fc = Interpolation.Utils.Factorial;\n return fc(n) / fc(i) / fc(n - i);\n },\n Factorial: (function () {\n var a = [1];\n return function (n) {\n var s = 1;\n if (a[n]) {\n return a[n];\n }\n for (var i = n; i > 1; i--) {\n s *= i;\n }\n a[n] = s;\n return s;\n };\n })(),\n CatmullRom: function (p0, p1, p2, p3, t) {\n var v0 = (p2 - p0) * 0.5;\n var v1 = (p3 - p1) * 0.5;\n var t2 = t * t;\n var t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n },\n },\n};\n\n/**\n * Utils\n */\nvar Sequence = /** @class */ (function () {\n function Sequence() {\n }\n Sequence.nextId = function () {\n return Sequence._nextId++;\n };\n Sequence._nextId = 0;\n return Sequence;\n}());\n\nvar mainGroup = new Group();\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar Tween = /** @class */ (function () {\n function Tween(_object, _group) {\n if (_group === void 0) { _group = mainGroup; }\n this._object = _object;\n this._group = _group;\n this._isPaused = false;\n this._pauseStart = 0;\n this._valuesStart = {};\n this._valuesEnd = {};\n this._valuesStartRepeat = {};\n this._duration = 0;\n this._initialRepeat = 0;\n this._repeat = 0;\n this._yoyo = false;\n this._isPlaying = false;\n this._reversed = false;\n this._delayTime = 0;\n this._startTime = 0;\n this._easingFunction = Easing.Linear.None;\n this._interpolationFunction = Interpolation.Linear;\n this._chainedTweens = [];\n this._onStartCallbackFired = false;\n this._id = Sequence.nextId();\n this._isChainStopped = false;\n this._goToEnd = false;\n this._headTween = null;\n this._tailTween = null;\n this._headStart = false;\n }\n Tween.prototype.getId = function () {\n return this._id;\n };\n Tween.prototype.isPlaying = function () {\n return this._isPlaying;\n };\n Tween.prototype.isPaused = function () {\n return this._isPaused;\n };\n Tween.prototype.duration = function (d) {\n this._duration = d;\n return this;\n };\n Tween.prototype.start = function (time) {\n if (this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.add(this);\n this._repeat = this._initialRepeat;\n if (this._reversed) {\n // If we were reversed (f.e. using the yoyo feature) then we need to\n // flip the tween direction back to forward.\n this._reversed = false;\n for (var property in this._valuesStartRepeat) {\n this._swapEndStartRepeatValues(property);\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n }\n this._isPlaying = true;\n this._isPaused = false;\n this._onStartCallbackFired = false;\n this._isChainStopped = false;\n this._startTime = time !== undefined ? (typeof time === 'string' ? now$1() + parseFloat(time) : time) : now$1();\n this._startTime += this._delayTime;\n this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat);\n return this;\n };\n Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat) {\n for (var property in _valuesEnd) {\n var startValue = _object[property];\n var startValueIsArray = Array.isArray(startValue);\n var propType = startValueIsArray ? 'array' : typeof startValue;\n var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);\n // If `to()` specifies a property that doesn't exist in the source object,\n // we should not set that property in the object\n if (propType === 'undefined' || propType === 'function') {\n continue;\n }\n // Check if an Array was provided as property value\n if (isInterpolationList) {\n var endValues = _valuesEnd[property];\n if (endValues.length === 0) {\n continue;\n }\n // handle an array of relative values\n endValues = endValues.map(this._handleRelativeValue.bind(this, startValue));\n // Create a local copy of the Array with the start value at the front\n _valuesEnd[property] = [startValue].concat(endValues);\n }\n // handle the deepness of the values\n if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n _valuesStart[property] = startValueIsArray ? [] : {};\n // eslint-disable-next-line\n for (var prop in startValue) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property][prop] = startValue[prop];\n }\n _valuesStartRepeat[property] = startValueIsArray ? [] : {}; // TODO? repeat nested values? And yoyo? And array values?\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._setupProperties(startValue, _valuesStart[property], _valuesEnd[property], _valuesStartRepeat[property]);\n }\n else {\n // Save the starting value, but only once.\n if (typeof _valuesStart[property] === 'undefined') {\n _valuesStart[property] = startValue;\n }\n if (!startValueIsArray) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\n }\n if (isInterpolationList) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();\n }\n else {\n _valuesStartRepeat[property] = _valuesStart[property] || 0;\n }\n }\n }\n };\n Tween.prototype.stop = function () {\n if (!this._isChainStopped) {\n this._isChainStopped = true;\n this.stopChainedTweens();\n }\n if (!this._isPlaying) {\n return this;\n }\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n this._isPlaying = false;\n this._isPaused = false;\n if (this._onStopCallback) {\n this._onStopCallback(this._object);\n }\n return this;\n };\n Tween.prototype.end = function () {\n this._goToEnd = true;\n this.update(Infinity);\n return this;\n };\n Tween.prototype.pause = function (time) {\n if (time === void 0) { time = now$1(); }\n if (this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = true;\n this._pauseStart = time;\n // eslint-disable-next-line\n this._group && this._group.remove(this);\n return this;\n };\n Tween.prototype.resume = function (time) {\n if (time === void 0) { time = now$1(); }\n if (!this._isPaused || !this._isPlaying) {\n return this;\n }\n this._isPaused = false;\n this._startTime += time - this._pauseStart;\n this._pauseStart = 0;\n // eslint-disable-next-line\n this._group && this._group.add(this);\n return this;\n };\n Tween.prototype.stopChainedTweens = function () {\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n this._chainedTweens[i].stop();\n }\n this._chainedTweens = [];\n return this;\n };\n Tween.prototype.group = function (group) {\n this._group = group;\n return this;\n };\n Tween.prototype.call = function (callback) {\n this._onFinishCallback = callback;\n return this;\n };\n Tween.prototype.from = function (properties) {\n this._valuesStart = Object.create(properties);\n return this;\n };\n Tween.prototype.to = function (properties, duration) {\n // TODO? restore this, then update the 07_dynamic_to example to set fox\n // tween's to on each update. That way the behavior is opt-in (there's\n // currently no opt-out).\n // for (const prop in properties) this._valuesEnd[prop] = properties[prop]\n this._valuesEnd = Object.create(properties);\n if (duration !== undefined) {\n this._duration = duration;\n }\n this._chainedTween = this;\n return this;\n };\n Tween.prototype.delay = function (amount) {\n this._delayTime = amount;\n return this;\n };\n Tween.prototype.union = function (headTween, tailTween) {\n this._headTween = headTween;\n this._tailTween = tailTween.chain(this);\n this._headStart = true;\n return this;\n };\n Tween.prototype.repeat = function (times) {\n this._initialRepeat = times;\n this._repeat = times;\n return this;\n };\n Tween.prototype.repeatDelay = function (amount) {\n this._repeatDelayTime = amount;\n return this;\n };\n Tween.prototype.yoyo = function (yoyo) {\n this._yoyo = yoyo;\n return this;\n };\n Tween.prototype.easing = function (easingFunction) {\n this._easingFunction = easingFunction;\n return this;\n };\n Tween.prototype.interpolation = function (interpolationFunction) {\n this._interpolationFunction = interpolationFunction;\n return this;\n };\n Tween.prototype.chain = function () {\n var tweens = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n tweens[_i] = arguments[_i];\n }\n this._chainedTweens = tweens;\n return this;\n };\n Tween.prototype.unchain = function () {\n for (var _i = 0; _i < arguments.length; _i++) {\n let index = this._chainedTweens.findIndex(v => v == arguments[_i]);\n if (index > -1) {\n this._chainedTweens.splice(index, 1);\n }\n }\n return this;\n };\n Tween.prototype.onStart = function (callback) {\n this._onStartCallback = callback;\n return this;\n };\n Tween.prototype.onUpdate = function (callback) {\n this._onUpdateCallback = callback;\n return this;\n };\n Tween.prototype.onRepeat = function (callback) {\n this._onRepeatCallback = callback;\n return this;\n };\n Tween.prototype.onComplete = function (callback) {\n this._onCompleteCallback = callback;\n return this;\n };\n Tween.prototype.onStop = function (callback) {\n this._onStopCallback = callback;\n return this;\n };\n /**\n * @returns true if the tween is still playing after the update, false\n * otherwise (calling update on a paused tween still returns true because\n * it is still playing, just paused).\n */\n Tween.prototype.update = function (time, autoStart) {\n if (time === void 0) { time = now$1(); }\n if (autoStart === void 0) { autoStart = true; }\n if (this._isPaused)\n return true;\n var property;\n var elapsed;\n var endTime = this._startTime + this._duration;\n if (!this._goToEnd && !this._isPlaying) {\n if (time > endTime)\n return false;\n if (autoStart)\n this.start(time);\n }\n this._goToEnd = false;\n if (time < this._startTime) {\n return true;\n }\n if (this._onStartCallbackFired === false) {\n if (this._onStartCallback) {\n this._onStartCallback(this._object);\n }\n this._onStartCallbackFired = true;\n }\n elapsed = (time - this._startTime) / this._duration;\n elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed;\n var value = this._easingFunction(elapsed);\n // properties transformations\n this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);\n if (this._onUpdateCallback) {\n this._onUpdateCallback(this._object, elapsed);\n }\n if (elapsed === 1) {\n if (this._onFinishCallback) {\n this._onFinishCallback(this._object);\n }\n if (this._headTween && this._headStart) {\n this._headTween.start(this._startTime + this._duration);\n this._headStart = false;\n this._isPlaying = false;\n return false;\n }\n if (this._repeat > 0) {\n if (isFinite(this._repeat)) {\n this._repeat--;\n }\n // Reassign starting values, restart by making startTime = now\n for (property in this._valuesStartRepeat) {\n if (!this._yoyo && typeof this._valuesEnd[property] === 'string') {\n this._valuesStartRepeat[property] =\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\n }\n if (this._yoyo) {\n this._swapEndStartRepeatValues(property);\n }\n this._valuesStart[property] = this._valuesStartRepeat[property];\n }\n if (this._yoyo) {\n this._reversed = !this._reversed;\n }\n if (this._repeatDelayTime !== undefined) {\n this._startTime = time + this._repeatDelayTime;\n }\n else {\n this._startTime = time + this._delayTime;\n }\n if (this._onRepeatCallback) {\n this._onRepeatCallback(this._object);\n }\n if (this._headTween) {\n this._headStart = true;\n this._initialRepeat = this._repeat;\n }\n return true;\n }\n else {\n if (this._tailTween) {\n this._tailTween.unchain(this);\n }\n if (this._onCompleteCallback) {\n this._onCompleteCallback(this._object);\n }\n for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n // Make the chained tweens start exactly at the time they should,\n // even if the `update()` method was called way past the duration of the tween\n this._chainedTweens[i].start(this._startTime + this._duration);\n }\n this._isPlaying = false;\n return false;\n }\n }\n return true;\n };\n Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) {\n for (var property in _valuesEnd) {\n // Don't update properties that do not exist in the source object\n if (_valuesStart[property] === undefined) {\n continue;\n }\n var start = _valuesStart[property] || 0;\n var end = _valuesEnd[property];\n var startIsArray = Array.isArray(_object[property]);\n var endIsArray = Array.isArray(end);\n var isInterpolationList = !startIsArray && endIsArray;\n if (isInterpolationList) {\n _object[property] = this._interpolationFunction(end, value);\n }\n else if (typeof end === 'object' && end) {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n this._updateProperties(_object[property], start, end, value);\n let des = Object.getOwnPropertyDescriptor(_object, property);\n if (des && des.set) {\n _object[property] = _object[property];\n }\n }\n else {\n // Parses relative end values with start as base (e.g.: +10, -3)\n end = this._handleRelativeValue(start, end);\n // Protect against non numeric properties.\n if (typeof end === 'number') {\n // eslint-disable-next-line\n // @ts-ignore FIXME?\n _object[property] = start + (end - start) * value;\n }\n }\n }\n };\n Tween.prototype._handleRelativeValue = function (start, end) {\n if (typeof end !== 'string') {\n return end;\n }\n if (end.charAt(0) === '+' || end.charAt(0) === '-') {\n return start + parseFloat(end);\n }\n else {\n return parseFloat(end);\n }\n };\n Tween.prototype._swapEndStartRepeatValues = function (property) {\n var tmp = this._valuesStartRepeat[property];\n var endValue = this._valuesEnd[property];\n if (typeof endValue === 'string') {\n this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue);\n }\n else {\n this._valuesStartRepeat[property] = this._valuesEnd[property];\n }\n this._valuesEnd[property] = tmp;\n };\n return Tween;\n}());\n\nvar VERSION = '18.6.4';\n\n/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\nvar nextId = Sequence.nextId;\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tweens.\n */\nvar TWEEN = mainGroup;\n// This is the best way to export things in a way that's compatible with both ES\n// Modules and CommonJS, without build hacks, and so as not to break the\n// existing API.\n// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881\n\n// var getAll = TWEEN.getAll.bind(TWEEN);\n// var removeAll = TWEEN.removeAll.bind(TWEEN);\n// var add = TWEEN.add.bind(TWEEN);\n// var remove = TWEEN.remove.bind(TWEEN);\n// var update = TWEEN.update.bind(TWEEN);\n\nexport {\n Easing,\n Group,\n Interpolation,\n Tween,\n VERSION,\n nextId,\n};","import { Group, Tween } from \"./tween\";\n\nexport class TweenChain {\n private _object: Object;\n private _tween: Tween<Object>;\n private _chainedTween: Tween<Object>;\n\n constructor(object: Object, group?: Group) {\n this._object = object;\n this._tween = new Tween(object, group);\n }\n\n start() {\n this._tween.start();\n return this;\n }\n\n stop() {\n this._tween.stop();\n return this;\n }\n\n repeat(times) {\n this._chainedTween.repeat(times);\n return this;\n }\n\n union() {\n this._chainedTween = this._tween = new Tween(this._object).union(this._tween, this._chainedTween);\n return this;\n }\n\n call(callback) {\n this._chainTween().call(callback);\n return this;\n }\n\n delay(amount) {\n this._chainTween().delay(amount);\n return this;\n }\n\n to(properties, duration, props) {\n let tween = this._chainTween().to(properties, duration);\n if (props) {\n if (props.from) tween.from(props.from);\n if (props.easing) tween.easing(props.easing);\n if (props.onStart) tween.onStart(props.onStart);\n if (props.onStop) tween.onStop(props.onStop);\n if (props.onComplete) tween.onComplete(props.onComplete);\n if (props.onUpdate) tween.onUpdate(props.onUpdate);\n if (props.onRepeat) tween.onRepeat(props.onRepeat);\n }\n return this;\n }\n\n _chainTween() {\n let tween = this._tween;\n if (this._chainedTween) {\n tween = new Tween(this._object);\n this._chainedTween.chain(tween);\n }\n this._chainedTween = tween;\n return tween;\n }\n}","import { TweenChain } from \"./TweenChain\";\nimport { Group, Tween } from \"./tween\";\n\nexport class TweenManager {\n private _group: Group = new Group();\n\n destroy() {\n this._group.removeAll();\n }\n\n update(time: number) {\n this._group.update(time);\n }\n\n tween(target: Object) {\n return new Tween(target, this._group);\n }\n\n timeline(target: Object) {\n return new TweenChain(target, this._group);\n }\n\n killTweensOf(target: Object) {\n this._group.getAll().forEach((tween: any) => tween._object === target && this._group.remove(tween));\n }\n}","import { Mesh, Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n texSettings?: TextureSettings,\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nconst materialMapKeys = [\n \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\"\n]\n\nexport abstract class aLoader {\n\n static _setMeshData(node: Object3D) {\n const meshData = { meshes: [], materials: {}, textures: {} };\n const callback = (node: Mesh) => {\n const materials = Array.isArray(node.material) ? node.material : [node.material];\n for (let mat of materials) {\n meshData.meshes.push(node);\n meshData.materials[mat.name] = mat;\n let tex = null;\n for (let v of materialMapKeys) {\n tex = mat[v];\n tex && (meshData.textures[tex.uuid] = tex);\n }\n }\n }\n node.traverse(v => (v instanceof Mesh) && callback(v));\n node.userData.meshData = meshData;\n return node;\n }\n \n constructor(public manager: ResourceManager) { };\n abstract extension: string[];\n abstract load(props: LoadProperties): void;\n\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { EXRLoader } from \"three/examples/jsm/loaders/EXRLoader.js\";\n\nexport class aEXRLoader extends aLoader {\n extension: string[] = [\"exr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties) {\n const loader = new EXRLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, (tex) => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n}","import { Object3D } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { FBXLoader } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\nexport class aFBXLoader extends aLoader {\n extension: string[] = [\"fbx\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (node: Object3D) => {\n onLoad(aLoader._setMeshData(node));\n }\n const loader = new FBXLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { GLTF, GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\n\nexport class aGLTFLoader extends aLoader {\n extension: string[] = [\"gltf\", \"glb\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n if (gltf.animations) node.animations = gltf.animations;\n onLoad(aLoader._setMeshData(node));\n }\n let gltfLoader = new GLTFLoader(this.manager.loadingManager);\n gltfLoader.setPath(this.manager.path);\n gltfLoader.setResourcePath(this.manager.resourcePath);\n\n let dracoLoader = new DRACOLoader(this.manager.loadingManager);\n dracoLoader.setDecoderPath(this.manager.dracoPath);\n gltfLoader.setDRACOLoader(dracoLoader);\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder);\n gltfLoader.load(url, loadCallback, onProgress, onError);\n }\n}","import { EquirectangularReflectionMapping } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\nexport class aHDRLoader extends aLoader {\n extension: string[] = [\"hdr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n texSettings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n const loader = new RGBELoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n\n}","import { FileLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aJSONLoader extends aLoader {\n extension: string[] = [\"json\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loader = new FileLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, (file: string) => onLoad(JSON.parse(file)), onProgress, onError);\n }\n}","import { TextureLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aTextureLoader extends aLoader {\n extension: string[] = [\"png\", \"jpg\", \"webp\", \"avif\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n const loadCallback = (tex) => {\n onLoad(Object.assign(tex, texSettings));\n }\n const loader = new TextureLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n}","export class PropertyManager {\n static _propertiesMap = new Map<Object, Object>();\n static _getProperties(target: object) {\n return this._propertiesMap.get(target.constructor);\n }\n static _hasProperties(target: object) {\n return this._propertiesMap.has(target.constructor);\n }\n static _getMergedProperties(target: Object) {\n let props = null;\n let constructor = target.constructor;\n while (constructor !== Object.constructor.prototype) {\n let values = PropertyManager._propertiesMap.get(constructor);\n if (values) {\n if (props === null) {\n props = Object.create(null);\n }\n Object.assign(props, values);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return props;\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n let targetMap = PropertyManager._propertiesMap.get(target.constructor);\n if (targetMap === undefined) {\n targetMap = Object.create(null);\n PropertyManager._propertiesMap.set(target.constructor, targetMap);\n }\n targetMap[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { property } from \"../PropertyManager\";\nimport { Easing } from \"../tween/tween\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n instanceId: number = ObjectInstance._instanceCount++;\n uuid: string = MathUtils.generateUUID();\n name: string = \"\";\n type: string = \"ObjectInstance\";\n}","import { Object3D } from \"three\";\nimport { Viewer } from \"./Viewer\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { ObjectInstance } from \"./ObjectInstance\";\n\nexport class Component<T extends Object3D = Object3D> extends ObjectInstance{\n\n get enabled() {\n return this._enabled;\n }\n set enabled(v: boolean) {\n if (this._enabled !== v) {\n this._enabled = v;\n this.manager.componentScheduler.enableComponent(this, v);\n }\n }\n private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\n } = {};\n\n protected _onPreDestroy() {\n this.unscheduleAll();\n this.manager.removeComponent(this.node, this);\n\n if (this._enabled) {\n this.manager.componentScheduler.enableComponent(this, false);\n }\n if (this.onDestroy && this.flags.OnLoadCalled) {\n this.onDestroy();\n }\n }\n\n schedule(callback: Function, interval: number, repeat: number = -1) {\n this.manager.scheduler.schedule(this, callback, interval, repeat);\n }\n\n unshedule(callback: Function) {\n this.manager.scheduler.unshedule(this, callback);\n }\n\n unscheduleAll() {\n this.manager.scheduler.unscheduleAll(this);\n }\n\n destroy() {\n if (this.flags.Destroyed) {\n return false;\n }\n this.destroyImmediate();\n return true;\n }\n\n destroyImmediate() {\n if (this._onPreDestroy) {\n this._onPreDestroy();\n }\n this.flags.Destroyed = true;\n }\n}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 0;\n private _isChanged: boolean = false;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n onChanged: (v: boolean) => void = null;\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => v.enabled = v === vcam);\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { fov, near, far, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != fov || from.near != near || from.far != far;\n const isTransformChanged = !from.position.equals(finalPosition) || !from.quaternion.equals(finalRotation);\n const isChanged = isLensChanged || isTransformChanged;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, fov, t);\n from.near = lerp(from.near, near, t);\n from.far = lerp(from.far, far, t);\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n\n if (this._isChanged !== isChanged) {\n this._isChanged = isChanged;\n this.onChanged && this.onChanged(isChanged);\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n priority: number = 10;\n lookAt: Object3D | null = null;\n follow: Object3D | null = null;\n\n @property({dir: \"lens\"})\n fov: number = 45;\n @property({dir: \"lens\"})\n near: number = 0.1;\n @property({dir: \"lens\"})\n far: number = 1000;\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n lookaheadPosition: Vector3 = new Vector3();\n trackedObjectOffset: Vector3 = new Vector3();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n this.node.isCamera = true;\n\n const camera = this.viewer.camera;\n this.fov = camera.fov;\n this.near = camera.near;\n this.far = camera.far;\n this.node.position.set(0, 0, 4);\n \n this.brain = this.viewer.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n\n update(dt: number) {\n if (this.lookAt) {\n this.node.lookAt(this.lookAt.position);\n }\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nconst PressState = {\n NONE: 1 << 0,\n SELECTED: 1 << 1,\n IN: 1 << 2,\n}\ntype PressState = typeof PressState[keyof typeof PressState];\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n static readonly RESIZE = \"resize\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const domElement = this.viewer.canvas; domElement.style.touchAction = 'none';\n this._addEventListener(domElement, 'contextmenu', e => e.preventDefault());\n this._addEventListener(domElement, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(domElement, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(domElement, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(domElement, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(domElement, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(domElement, \"touchmove\", e => this._onTouchMove(e), { passive: true });\n //监听了pointer事件之后,key事件失效,改成window解决\n this._addEventListener(window, \"keydown\", e => this._onKeyDown(e), { passive: false });\n this._addEventListener(window, \"keypress\", e => this._onKeyPress(e), { passive: false });\n this._addEventListener(window, \"keyup\", e => this._onKeyUp(e), { passive: false });\n }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\nconst audioElem = document.createElement(\"audio\");\n\nexport class SystemInfo {\n static isMobile = detectUA.isMobile || detectUA.isTablet;\n static isDesktop = detectUA.isDesktop;\n static device = SystemInfo.isMobile ? \"mobile\" : \"desktop\";\n static isAndroid = !!detectUA.isAndroid;\n static isIOS = !!detectUA.isiOS;\n static isMacOS = !!detectUA.isMacOS;\n static isWindows = typeof detectUA.isWindows === \"boolean\" ? detectUA.isWindows : detectUA.isWindows.version !== null;\n static isLinux = userAgent.indexOf(\"linux\") != -1;\n static ua = userAgent;\n static isEdge = browserName === \"Microsoft Edge\";\n static isIE = browserName === \"Internet Explorer\";\n static isFirefox = browserName === \"Firefox\";\n static isChrome = browserName === \"Chrome\";\n static isOpera = browserName === \"Opera\";\n static isSafari = browserName === \"Safari\";\n static isSupportMSAA = !userAgent.match(\"version/15.4 \");\n static isSupportOgg = !!audioElem.canPlayType(\"audio/ogg\");\n static isRetina = window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static devicePixelRatio = window.devicePixelRatio || 1;\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static baseUrl = document.location.origin;\n static isIFrame = window.self !== window.top;\n}","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { min, max, exp } = Math;\n\nconst kNegligibleResidual = 0.01;\nconst kLogNegligibleResidual = Math.log(kNegligibleResidual)// -4.605170186;\n\nexport function exponentialDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let k = -kLogNegligibleResidual / dampTime;\n return current + (target - current) * (1 - exp(-k * deltaTime));\n}\n\n// cuve like exponentialDecay but cost less\nexport function quarticDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let t = (1 - min(deltaTime, dampTime) / dampTime);\n let tt = t * t;\n return current + (target - current) * (1 - tt * tt);\n}\n\nexport function smoothDamp(\n state: Object & { _velocity?: number },\n current: number,\n target: number,\n smoothTime: number,\n maxSpeed: number,\n deltaTime: number\n) {\n if (state._velocity === undefined) {\n state._velocity = 0;\n }\n smoothTime = max(0.0001, smoothTime);\n let num = 2 / smoothTime;\n let num2 = num * deltaTime;\n let num3 = 1 / (1 + num2 + 0.48 * num2 * num2 + 0.235 * num2 * num2 * num2);\n let num4 = current - target;\n let num5 = target;\n let num6 = maxSpeed * smoothTime;\n num4 = clamp(num4, -num6, num6);\n target = current - num4;\n let num7 = (state._velocity + num * num4) * deltaTime;\n state._velocity = (state._velocity - num * num7) * num3;\n let num8 = target + (num4 + num7) * num3;\n if (num5 - current > 0 == num8 > num5) {\n num8 = num5;\n state._velocity = (num8 - num5) / deltaTime;\n }\n return num8;\n}\n\nexport function Quat_exponentialDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, exponentialDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_quarticDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, quarticDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_smoothDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}\n\nexport function Vec3_smoothDamp(current: Vector3, target: Vector3, dampTime: number, deltaTime: number, out: Vector3 = current) {\n return out.copy(current).lerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}","import { Vector3 } from \"three\";\n\nexport const Vector3_ZERO = new Vector3();","import { MathUtils, Object3D, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { Easing } from \"../tween/tween\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { quarticDamp } from \"../math/Damp\";\nimport { Vector3_ZERO } from \"../math/Constant\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan } = Math;\n\nexport const VCamFreeLookMode = {\n FREE: 0,\n TRANSLATE: 1,\n}\nexport type VCamFreeLookMode = typeof VCamFreeLookMode[keyof typeof VCamFreeLookMode];\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __moveDelta = new Vector2();\n static __worldPos = new Vector3();\n static __posDelta = new Vector3();\n static __posOffset = new Vector3();\n static __xAxis = new Vector3();\n static __yAxis = new Vector3();\n static __quat = new Quaternion();\n static __spherical = new Spherical();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _distanceDelta: number = 0;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n private _rotateDelta: Vector2 = new Vector2();\n private _panDelta: Vector2 = new Vector2();\n\n @property({ value: VCamFreeLookMode })\n mode: VCamFreeLookMode = VCamFreeLookMode.FREE;\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n rotateSpeed: number = 2;\n rotateSmoothing: number = 0.5;\n panSpeed: number = 2;\n panSmoothing: number = 0.5;\n panScale: Vector3 = new Vector3(1, 1, 1);\n phiMin: number = 0.001;\n phiMax: number = Math.PI - 0.001;\n thetaMin: number = -Infinity;\n thetaMax: number = Infinity;\n distanceMin: number = 0.001;\n distanceMax: number = Infinity;\n rotateTouchID: number = 0;\n lookAt = new Object3D();\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.off(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.off(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.off(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.off(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.off(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.off(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n this._rotateDelta.set(0, 0);\n this._panDelta.set(0, 0);\n this._distanceDelta = 0;\n }\n\n private _tweenPOI = {\n get position() { return this.node.position; },\n set position(v: Vector3) { this.node.position.copy(v); },\n get lookAt() { return this.lookAt.position; },\n set lookAt(v: Vector3) { this.lookAt.position.copy(v); },\n get trackedObjectOffset() { return this.trackedObjectOffset; },\n set trackedObjectOffset(v: Vector3) { this.trackedObjectOffset.copy(v); }\n }\n\n gotoPOI(\n position: Vector3,\n lookAt: Vector3,\n duration: number = 1,\n easing: (amount: number) => number = Easing.Quadratic.InOut\n ) {\n this.viewer.killTweensOf(this._tweenPOI);\n this.viewer.tween(this._tweenPOI).to({ position, lookAt, trackedObjectOffset: Vector3_ZERO }, duration).easing(easing).start();\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n FreelookVirtualCamera.__loc0.set(e.pageX, e.pageY);\n switch (this._button) {\n case 0: this._rotateDelta.add(this._calculateRotateDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n case 1:\n case 2:\n this._panDelta.add(this._calculatePanDelta(FreelookVirtualCamera.__moveDelta, this._preLoc0, FreelookVirtualCamera.__loc0)); break;\n }\n this._preLoc0.copy(FreelookVirtualCamera.__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (this.lookAt) {\n let dist = FreelookVirtualCamera.__worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = dist + this._distanceDelta;\n if (e.deltaY > 0) {\n distNew *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n distNew *= this._calculateDistanceScale(0.85);\n }\n this._distanceDelta = distNew - dist;\n }\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._preLoc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n }\n else if (touches.length > rotateTouchID) {\n this._touchID = touches[rotateTouchID].identifier;\n this._preLoc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __worldPos, __moveDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n let rotateTouchID = this.rotateTouchID;\n if (touches.length > rotateTouchID + 1) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n __loc1.set(touches[rotateTouchID + 1].pageX, touches[rotateTouchID + 1].pageY);\n if (this.lookAt) {\n let dist = __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset).distanceTo(this.node.position);\n let distNew = (dist + this._distanceDelta) * this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n this._distanceDelta = distNew - dist;\n }\n this._panDelta.add(this._calculatePanDelta(__moveDelta, __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5), __center.copy(__loc0).add(__loc1).multiplyScalar(0.5)));\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > rotateTouchID) {\n if (this._touchID === touches[rotateTouchID].identifier) {\n __loc0.set(touches[rotateTouchID].pageX, touches[rotateTouchID].pageY);\n this._rotateDelta.add(this._calculateRotateDelta(__moveDelta, this._preLoc0, __loc0));\n this._preLoc0.copy(__loc0);\n }\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotateDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / domElement.height);\n out.y = -out.y;\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n const domElement = this.viewer.canvas;\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / domElement.height);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n return out;\n }\n\n update(dt: number) {\n if (!this.lookAt) return;\n\n const { __posDelta, __posOffset, __worldPos, __quat, __spherical, __xAxis, __yAxis } = FreelookVirtualCamera;\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n\n switch (this.mode) {\n case VCamFreeLookMode.FREE:\n if ((abs(this._rotateDelta.x) + abs(this._rotateDelta.y) + abs(this._distanceDelta)) > 0.001) {\n const { __posDelta, __posOffset, __worldPos } = FreelookVirtualCamera;\n __quat.setFromUnitVectors(this.node.up, Object3D.DEFAULT_UP);\n __posDelta.copy(this.node.position).sub(__worldPos);\n __posDelta.applyQuaternion(__quat);\n __spherical.setFromVector3(__posDelta);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n this._rotateDelta.x = __spherical.theta - clamp(__spherical.theta - this._rotateDelta.x, this.thetaMin, this.thetaMax);\n __spherical.theta = __spherical.theta - this._rotateDelta.x * (1 - dampFactor);\n\n this._rotateDelta.y = clamp(__spherical.phi + this._rotateDelta.y, this.phiMin, this.phiMax) - __spherical.phi;\n __spherical.phi = clamp(__spherical.phi + this._rotateDelta.y * (1 - dampFactor), 0.001, Math.PI - 0.001);\n\n this._distanceDelta = clamp(__spherical.radius + this._distanceDelta, this.distanceMin, this.distanceMax) - __spherical.radius;\n __spherical.radius = __spherical.radius + this._distanceDelta * (1 - dampFactor);\n\n this._rotateDelta.multiplyScalar(dampFactor);\n this._distanceDelta *= dampFactor;\n\n __posDelta.setFromSpherical(__spherical);\n __posDelta.applyQuaternion(__quat.invert());\n\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n break;\n case VCamFreeLookMode.TRANSLATE:\n if (abs(this._distanceDelta) > 0.001) {\n __posDelta.copy(this.node.position).sub(this.lookAt.position);\n\n let dampFactor = quarticDamp(1, 0, this.rotateSmoothing, dt);\n let dist0 = __posDelta.length();\n this._distanceDelta = clamp(dist0 + this._distanceDelta, this.distanceMin, this.distanceMax) - dist0;\n let dist = dist0 + this._distanceDelta * (1 - dampFactor);\n this._distanceDelta *= dampFactor;\n\n let pos = __posDelta.normalize().multiplyScalar(dist).add(this.lookAt.position);\n __posOffset.copy(pos).sub(this.node.position);\n this.trackedObjectOffset.add(__posOffset);\n this.node.position.copy(pos);\n\n __worldPos.copy(this.lookAt.position).add(this.trackedObjectOffset);\n }\n break;\n }\n\n if (abs(this._panDelta.x) + abs(this._panDelta.y) > 0.001) {\n __posDelta.copy(this.node.position).sub(__worldPos);\n\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n let length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n let dampFactor = quarticDamp(1, 0, this.panSmoothing, dt);\n\n let trackedObjectOffset = this.trackedObjectOffset;\n trackedObjectOffset.sub(__xAxis.multiplyScalar(this._panDelta.x * length * (1 - dampFactor)));\n trackedObjectOffset.add(__yAxis.multiplyScalar(this._panDelta.y * length * (1 - dampFactor)));\n\n this._panDelta.multiplyScalar(dampFactor);\n\n __worldPos.copy(this.lookAt.position).add(trackedObjectOffset);\n this.node.position.copy(__posDelta.add(__worldPos));\n }\n\n this.node.lookAt(__worldPos);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, dt: number) => any;\n\n constructor(callback: (target: T, dt: number) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(dt: number) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n\n start() {\n this.startInvoker.invoke(0);\n }\n\n update(dt: number) {\n this.updateInvoker.invoke(dt);\n }\n\n lastUpdate(dt: number) {\n this.lastUpdateInvoker.invoke(dt);\n }\n\n enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\n\n\ntype ComponentConstructor = new () => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._dependenciesMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _dependenciesMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor !== Component) {\n let dependentInfo = ComponentManager._dependenciesMap.get(constructor);\n if (dependentInfo) {\n const { components, mode } = dependentInfo;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { aLoader } from \"./aLoader\";\n\nexport interface AssetProperties {\n ext?: string,\n url?: string | File | { mainFile: File, additionalFiles: File[] };\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport type LoaderConstructor = new (manager: ResourceManager) => aLoader;\n\nexport class ResourceManager {\n\n static extension(path: string) {\n let str = path.split(\".\");\n if (str.length > 1) {\n return str.pop();\n }\n return \"\";\n }\n\n static dirname(path: string) {\n let index = path.lastIndexOf(\"/\");\n return index !== -1 ? path.substring(0, index) : \"\";\n }\n\n static basename(path: string, ext?: string) {\n let str = path.split(\"/\").pop();\n return ext ? str.replace(\".\" + ext, \"\") : str;\n }\n\n static _parseURL(uri: any) {\n let url = \"\";\n let file = null;\n let ext = \"\";\n if (typeof (File) !== \"undefined\" && uri instanceof File) {\n url = uri.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else if (typeof (uri) === \"object\") {\n url = uri.mainFile.name;\n ext = ResourceManager.extension(url);\n file = uri;\n }\n else {\n url += uri;\n ext = ResourceManager.extension(url);\n }\n return { url, file, ext };\n }\n\n static _getTextureKey(url: string, settings: TextureSettings) {\n let keys = [url];\n for (let k in settings) {\n if (settings[k] !== undefined) keys.push(k + \"=\" + settings[k]);\n }\n return keys.join(\",\");\n }\n\n static _texSettingKeys = [\n \"flipY\", \"mapping\", \"wrapS\", \"wrapT\", \"dataType\",\n \"magFilter\", \"minFilter\", \"format\", \"anisotropy\", \"encoding\", \"repeat\"\n ]\n static _splitTextureSettings(props: TextureSettings & { [k: string]: any }) {\n let settings = {};\n for (let v of ResourceManager._texSettingKeys) {\n if (props[v] !== undefined) {\n if (v === \"dataType\") {\n settings[\"type\"] = props[v];\n }\n else {\n settings[v] = props[v];\n }\n }\n }\n return settings;\n }\n\n path: string = \"\";\n resourcePath: string = \"\";\n dracoPath: string = \"\";\n loadingManager: LoadingManager;\n\n private _caches: Map<string, any> = new Map();\n private _loaders: Map<string, aLoader> = new Map();\n\n constructor(props: {\n path: string;\n resourcePath: string;\n dracoPath: string;\n loadingManager: LoadingManager;\n }) {\n this.path = props.path;\n this.resourcePath = props.resourcePath;\n this.dracoPath = props.dracoPath;\n this.loadingManager = props.loadingManager;\n }\n\n destroy() {\n this._caches.clear();\n this._loaders.clear();\n }\n\n addLoader(Loader: LoaderConstructor) {\n let loader = new Loader(this);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n }\n\n loadAsset<T = any>({ url, ext, onProgress, ...props }: AssetProperties & TextureSettings) {\n return new Promise<T>((resolve, reject) => {\n const info = ResourceManager._parseURL(url);\n const texSettings = ResourceManager._splitTextureSettings(props);\n const key = ResourceManager._getTextureKey(info.url, texSettings);\n let result = this._caches.get(key);\n if (result) {\n resolve(result);\n }\n else {\n const onLoad = (file) => {\n this._caches.set(key, file);\n resolve(file);\n }\n let sel = ext || info.ext;\n if (this._loaders.has(sel)) {\n this._loaders.get(sel).load({\n url: info.url,\n texSettings,\n onProgress,\n onLoad,\n onError: reject\n });\n }\n else {\n reject(\"missing loader for \" + ext)\n }\n }\n })\n }\n}","import { __C, __P } from \"./types\";\n\nexport function applyProps<T, K extends __C<T>>(\n target: T & { copy?: Function },\n props: __P<T, K>,\n) {\n for (let k in props) {\n let prop = props[k];\n if (prop === undefined) {\n continue;\n }\n if (target[k] !== undefined) {\n let des = Object.getOwnPropertyDescriptor(target, k);\n if (!des || (des.writable || des.set)) {\n target[k] = prop;\n }\n else {\n let value = target[k];\n if (value && value.copy) {\n value.copy(prop);\n }\n }\n }\n }\n return target;\n}","import { Plugin } from \"./Plugin\";\nimport { Viewer } from \"./Viewer\";\nimport { Logger } from \"./base\";\nimport { __C, __Comp } from \"./types\";\n\nexport class PluginManager {\n private _viewer: Viewer;\n private _plugins: Plugin[] = [];\n private _pluginsMap: Map<Object, Plugin> = new Map();\n\n get viewer() {\n return this._viewer\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._plugins.forEach(plugin => plugin.uninstall && plugin.uninstall());\n this._plugins.length = 0;\n this._pluginsMap.clear();\n }\n\n update(dt: number) {\n this._plugins.forEach(plugin => plugin.onUpdate && plugin.onUpdate(dt));\n }\n\n render(dt: number) {\n this._plugins.forEach(plugin => plugin.onRender && plugin.onRender(dt));\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n this._plugins.forEach(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd: boolean = false): T {\n let ins = this._pluginsMap.get(plugin);\n if (ins === undefined && autoAdd) {\n ins = this.addPlugin(plugin);\n }\n return ins as T;\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): T;\n addPlugin(plugin: any) {\n const ins = Viewer._getClassInstance(plugin);\n if (this._pluginsMap.has(ins.constructor)) {\n Logger.warn(\"Plugin already added\");\n }\n else {\n ins.viewer = this._viewer;\n ins.install && ins.install();\n this._plugins.push(ins);\n this._pluginsMap.set(ins.constructor, ins);\n }\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n const key = typeof plugin === \"function\" ? plugin : plugin.constructor;\n const ins = this._pluginsMap.get(key);\n if (ins) {\n ins.uninstall && ins.uninstall();\n this._plugins.splice(this._plugins.indexOf(ins), 1);\n this._pluginsMap.delete(key);\n }\n }\n\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RenderItem,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { TextureSettings } from \"./TextureSettings\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { PluginManager } from \"./PluginManager\";\nimport { Plugin } from \"./Plugin\";\nimport { TweenManager } from \"./tween\";\nimport { aGLTFLoader, aHDRLoader, aTextureLoader } from \"./loader\";\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _getClassInstance(constructor: any, args: any[] = []) {\n return typeof constructor === \"function\" ? new constructor(...args) : constructor;\n }\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static CompileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static CompileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static CompileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget,\n material: ShaderMaterial,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static GetFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.GetFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _targetFrameRate: number = -1;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _pluginManager: PluginManager;\n private _tweenManager: TweenManager;\n\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n\n constructor({\n root,\n canvas,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n targetFrameRate?: number;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n\n this._scene = new Scene();\n this._camera = new PerspectiveCamera();\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n const loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._resourceManager = new ResourceManager({ path, resourcePath, dracoPath, loadingManager });\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._pluginManager = new PluginManager(this);\n this._tweenManager = new TweenManager();\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n this._addDefaultLoaders();\n\n if (autoStart) this.start();\n }\n\n destroy() {\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._pluginManager.destroy();\n this._tweenManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _addDefaultLoaders() {\n this.addLoader(aGLTFLoader);\n this.addLoader(aHDRLoader);\n this.addLoader(aTextureLoader);\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = time - this._lastTime;\n\n if (delta >= interval) {\n this.loop(delta);\n this._lastTime = time - (delta % interval);\n }\n }\n else {\n this.loop(time - this._lastTime);\n this._lastTime = time;\n }\n }\n\n loop(dt: number) {\n if (this._autoResize) this.resize();\n\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._tweenManager.update(this._time);\n this._componentManager.update(dt);\n this._pluginManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._onRender(dt);\n this._pluginManager.render(dt);\n }\n\n _onRender(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _onResize(width: number, height: number) {\n this._renderer.setSize(width, height);\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n requestAnimationFrame(frameCallback);\n }\n }\n requestAnimationFrame(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n resize(\n width: number = window.innerWidth,\n height: number = window.innerHeight\n ) {\n this._rootRotated =\n this._orientation === Orientation.LANDSCAPE ? width < height :\n this._orientation === Orientation.PORTRAIT ? width > height : false;\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n if (this._width !== width ||\n this._height !== height\n ) {\n this._width = width;\n this._height = height;\n\n let root = this._root;\n if (this._rootRotated) {\n root.style['-webkit-transform'] = 'rotate(90deg)';\n root.style.transform = 'rotate(90deg)';\n root.style['-webkit-transform-origin'] = '0px 0px 0px';\n root.style.transformOrigin = '0px 0px 0px';\n root.style.margin = `0 0 0 ${height}px`;\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n else {\n root.style['-webkit-transform'] = 'rotate(0deg)';\n root.style.transform = 'rotate(0deg)';\n root.style.margin = '0px auto';\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n\n let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._onResize(width, height);\n this.emit(DeviceInput.RESIZE, width, height);\n }\n }\n\n loadAsset(props: AssetProperties & TextureSettings) {\n return this._resourceManager.loadAsset(props);\n }\n\n addLoader(Loader: LoaderConstructor) {\n this._resourceManager.addLoader(Loader);\n }\n\n async load({\n url, ext, onProgress,\n castShadow = false,\n receiveShadow = false,\n ...props\n }: AssetProperties & __P<Object3D, typeof Object3D>) {\n const node = await this.loadAsset({ url, ext, onProgress });\n if (castShadow || receiveShadow) {\n node.userData.meshData.meshes.forEach(v => { v.castShadow = castShadow; v.receiveShadow = receiveShadow; });\n }\n this.addNode(node, props);\n return node;\n }\n\n tween(target: Object) {\n return this._tweenManager.tween(target);\n }\n\n timeline(target: Object) {\n return this._tweenManager.timeline(target);\n }\n\n killTweensOf(target: Object) {\n this._tweenManager.killTweensOf(target);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n const renderList = this._renderer.renderLists.get(this._scene, 0);\n const setMaterial = (item: RenderItem) => {\n if (item.material) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n }\n renderList.opaque.forEach(setMaterial);\n renderList.transparent.forEach(setMaterial);\n renderList.transmissive.forEach(setMaterial);\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n return this._pluginManager.traversePlugins(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd?: boolean): T {\n return this._pluginManager.getPlugin(plugin, autoAdd);\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>, props?: __P<T, K>): T;\n addPlugin(plugin: any, props: any) {\n const ins = this._pluginManager.addPlugin(plugin);\n applyProps(ins, props);\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n this._pluginManager.removePlugin(plugin);\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd?: boolean): T {\n return this._componentManager.getComponent(node, constructor, autoAdd);\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n return this._componentManager.addComponent(node, constructor);\n }\n\n removeComponent(node: Object3D, component: Component) {\n return this._componentManager.removeComponent(node, component);\n }\n\n addNode<T, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n addNode(object: any, {\n args,\n debug,\n scale,\n position,\n rotation,\n shadowArgs,\n makeDefault,\n component,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let node = null;\n let ins = Viewer._getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n parent.add(ins);\n }\n else if (ins instanceof Component) {\n node = ins.node || new Object3D();\n parent.add(node);\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"unsuport object\");\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (let ins of components) {\n this._componentManager.addComponent(node, ins);\n }\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n removeNode(node: Object3D) {\n this._componentManager.destroyComponents(node);\n node.removeFromParent();\n }\n\n activeNode(node: Object3D, active: boolean) {\n this._componentManager.activeComponents(node);\n node.visible = active;\n return node;\n }\n\n createRenderTarget(\n width: number,\n height: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLRenderTarget(width, height, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: SRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createCubeRenderTarget(\n size: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n ) {\n return new WebGLCubeRenderTarget(size, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: SRGBColorSpace,\n depthBuffer: false,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createDataTexture(\n data: BufferSource,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(callback: () => T) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = new Scene();\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.CompileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.CompileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { ObjectInstance } from \"./ObjectInstance\";\nimport { Viewer } from \"./Viewer\";\n\nexport class Plugin extends ObjectInstance {\n viewer: Viewer;\n type: string = \"Plugin\";\n install?(): void;\n uninstall?(): void;\n onUpdate?(dt: number): void;\n onRender?(dt: number): void;\n}"],"names":["EventEmitter","_removeEvent","list","index","name","splice","length","_events","clear","has","on","callback","target","once","findIndex","v","console","warn","push","off","a","onof","container","_listeners","undefined","offof","targetOff","i","emit","args","apply","noop","message","optionalParams","debug","log","bind","info","error","Logger","isEnabled","enable","disable","mixin","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","Easing","Linear","None","amount","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Math","cos","PI","sin","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","now","self","process","hrtime","time","performance","Date","getTime","now$1","Group","_tweens","_tweensAddedDuringUpdate","getAll","_this","keys","map","tweenId","removeAll","add","tween","getId","remove","update","preserve","tweenIds","autoStart","Interpolation","k","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","t","fc","Factorial","p2","p3","v0","v1","t2","t3","Sequence","nextId","_nextId","mainGroup","Tween","_object","_group","_isPaused","_pauseStart","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_initialRepeat","_repeat","_yoyo","_isPlaying","_reversed","_delayTime","_startTime","_easingFunction","_interpolationFunction","_chainedTweens","_onStartCallbackFired","_id","_isChainStopped","_goToEnd","_headTween","_tailTween","_headStart","isPlaying","isPaused","duration","d","start","property","_swapEndStartRepeatValues","parseFloat","_setupProperties","startValue","startValueIsArray","Array","isArray","propType","isInterpolationList","endValues","_handleRelativeValue","concat","prop","slice","reverse","stop","stopChainedTweens","_onStopCallback","end","Infinity","pause","resume","numChainedTweens","group","call","_onFinishCallback","from","properties","to","_chainedTween","delay","union","headTween","tailTween","chain","repeat","times","repeatDelay","_repeatDelayTime","yoyo","easing","easingFunction","interpolation","interpolationFunction","tweens","_i","arguments","unchain","onStart","_onStartCallback","onUpdate","_onUpdateCallback","onRepeat","_onRepeatCallback","onComplete","_onCompleteCallback","onStop","elapsed","endTime","value","_updateProperties","isFinite","startIsArray","endIsArray","des","set","charAt","tmp","endValue","TweenChain","_tween","_chainTween","props","constructor","object","TweenManager","destroy","timeline","killTweensOf","materialMapKeys","aLoader","_setMeshData","node","meshData","meshes","materials","textures","material","mat","tex","uuid","traverse","Mesh","userData","manager","aEXRLoader","load","url","onLoad","onProgress","onError","texSettings","loader","EXRLoader","loadingManager","setPath","path","setResourcePath","resourcePath","assign","extension","aFBXLoader","loadCallback","FBXLoader","aGLTFLoader","gltf","scene","animations","gltfLoader","GLTFLoader","dracoLoader","DRACOLoader","setDecoderPath","dracoPath","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","aHDRLoader","mapping","EquirectangularReflectionMapping","RGBELoader","aJSONLoader","FileLoader","file","JSON","parse","aTextureLoader","TextureLoader","PropertyManager","_getProperties","_propertiesMap","get","_hasProperties","_getMergedProperties","values","getPrototypeOf","Map","propertyKey","options","normalized","targetMap","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","ObjectInstance","instanceId","_instanceCount","MathUtils","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","scheduler","unshedule","Destroyed","destroyImmediate","clamp","lerp","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","filter","sort","priority","fov","near","far","finalPosition","finalRotation","isLensChanged","isTransformChanged","position","equals","quaternion","isChanged","slerp","updateProjectionMatrix","_isChanged","onChanged","VirtualCamera","_finalPosition","copy","correctPosition","_finalRotation","multiply","correctRotation","isCamera","camera","viewer","brain","getComponent","lookAt","Vector3","Quaternion","follow","lookaheadPosition","trackedObjectOffset","dir","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","find","state","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","domElement","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","identifier","_computePointer","x","y","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","Vector2","touch","TOUCH_MOVE","key","KEYDOWN","KEYPRESS","KEYUP","RESIZE","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","version","replace","split","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","audioElem","document","createElement","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","isSupportOgg","canPlayType","isRetina","devicePixelRatio","cpuCoreCount","hardwareConcurrency","baseUrl","location","origin","isIFrame","top","min","max","exp","quarticDamp","current","dampTime","deltaTime","tt","Vector3_ZERO","degToRad","abs","tan","VCamFreeLookMode","FREE","TRANSLATE","FreelookVirtualCamera","onEnable","reset","onDisable","_button","_touchID","_rotateDelta","_panDelta","_distanceDelta","gotoPOI","_tweenPOI","_preLoc0","__loc0","_calculateRotateDelta","__moveDelta","_calculatePanDelta","dist","__worldPos","distanceTo","distNew","_calculateDistanceScale","rotateTouchID","_preLoc1","__loc1","__preCenter","__center","multiplyScalar","scale","forbidZ","out","loc0","loc1","sub","rotateSpeed","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","__posDelta","__posOffset","__quat","__spherical","__xAxis","__yAxis","mode","setFromUnitVectors","up","Object3D","DEFAULT_UP","applyQuaternion","setFromVector3","dampFactor","rotateSmoothing","theta","thetaMin","thetaMax","phi","phiMin","phiMax","radius","distanceMin","distanceMax","setFromSpherical","invert","dist0","pos","normalize","setFromMatrixColumn","matrix","forbitPanOffsetY","panSmoothing","panScale","Spherical","Box","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","Caller","_pause","_target","_callback","lived","_repeatForever","_elapsed","_interval","trigger","_lastTime","Callers","callers","_callers","Scheduler","_callersArray","callersArray","j","Invoker","_targets","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","ComponentManager","_viewer","_scheduler","_componentScheduler","_componentsMap","components","destroyComponents","delete","child","children","activeComponents","_activeComponent","visible","addComponent","root","func","component","_findComponent","_addDendencies","autoAdd","getComponentsInChidren","traverseComponents","dependentInfo","_dependenciesMap","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","alpha","depth","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","gl","getContext","RENDER_TARGET_FLOAT_TYPE","HalfFloatType","DATA_FLOAT_TYPE","FloatType","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_parseURL","uri","File","mainFile","_getTextureKey","settings","join","_splitTextureSettings","_texSettingKeys","_caches","_loaders","addLoader","Loader","loadAsset","Promise","resolve","reject","result","sel","applyProps","writable","PluginManager","_plugins","plugin","uninstall","_pluginsMap","render","onRender","traversePlugins","getPlugin","ins","addPlugin","Viewer","_getClassInstance","install","removePlugin","_setDirectLightShadow","shadow","shadowCamera","_shadowCameraKeys","bias","mapSize","CompileMaterial","renderer","fullscreenMesh","compile","CompileObject3D","CompileTexture","initTexture","Blit","renderTarget","lod","face","RT","getRenderTarget","setRenderTarget","fullscreenCamera","GetFullscreenTriangle","geometry","BufferGeometry","setAttribute","Float32BufferAttribute","_root","_time","_scene","_camera","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","viewport","_viewport","_rootRotated","dispose","_taskManager","_resourceManager","_componentManager","_pluginManager","_tweenManager","_input","_addDefaultLoaders","_frame","_targetFrameRate","delta","loop","_autoResize","resize","_onRender","_onResize","setSize","_running","frameCallback","requestAnimationFrame","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","transform","transformOrigin","margin","isOrthographicCamera","zoom","factor","isPerspectiveCamera","manual","aspect","distance","getWorldPosition","__target","h","w","castShadow","receiveShadow","addNode","traverseMaterials","renderList","renderLists","setMaterial","item","opaque","transparent","transmissive","rotation","shadowArgs","makeDefault","parent","isObject3D","Error","isDirectionalLight","removeNode","removeFromParent","activeNode","createRenderTarget","nearest","floatType","msaa","mipmap","WebGLRenderTarget","wrapS","ClampToEdgeWrapping","wrapT","magFilter","NearestFilter","LinearFilter","minFilter","LinearMipMapLinearFilter","anisotropy","colorSpace","SRGBColorSpace","depthBuffer","stencilBuffer","samples","generateMipmaps","createCubeRenderTarget","size","WebGLCubeRenderTarget","createDataTexture","data","DataTexture","RGBAFormat","UVMapping","portal","Scene","every","isMaterial","isTexture","autoResize","shadows","targetFrameRate","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","tasker","AUTO","el","getElementById","webgl","PerspectiveCamera","WebGLRenderer","context","setPixelRatio","outputColorSpace","shadowMap","PCFSoftShadowMap","autoReset","LoadingManager","OrthographicCamera","Plugin"],"mappings":"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"}