{"version":3,"file":"index-B0ZX0jH6.js","sources":["../../node_modules/@vue/shared/dist/shared.esm-bundler.js","../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../node_modules/vue-demi/lib/index.mjs","../../node_modules/pinia/dist/pinia.mjs","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../node_modules/axios/lib/platform/browser/classes/FormData.js","../../node_modules/axios/lib/platform/browser/classes/Blob.js","../../node_modules/axios/lib/platform/browser/index.js","../../node_modules/axios/lib/platform/common/utils.js","../../node_modules/axios/lib/platform/index.js","../../node_modules/axios/lib/helpers/toURLEncodedForm.js","../../node_modules/axios/lib/helpers/formDataToJSON.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/core/AxiosHeaders.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/helpers/speedometer.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/adapters/adapters.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/lib/helpers/HttpStatusCode.js","../../node_modules/axios/lib/axios.js","../../src/stores/data.js","../../src/components/Numbers.vue","../../src/components/Input.vue","../../node_modules/@kurkle/color/dist/color.esm.js","../../node_modules/chart.js/dist/chunks/helpers.segment.js","../../node_modules/chart.js/dist/chart.js","../../src/components/Charts.vue","../../node_modules/xlsx/xlsx.mjs","../../src/components/Exporter.vue","../../src/components/Output.vue","../../src/crypto.js","../../src/components/Sharing.vue","../../node_modules/@vueform/slider/dist/slider.js","../../src/components/InputAdvanced.vue","../../src/App.vue","../../src/main.js"],"sourcesContent":["/**\n* @vue/shared v3.4.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.4.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n this.onStop && this.onStop();\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n const depsMap = targetMap.get(object);\n return depsMap && depsMap.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n if (!isSymbol(key))\n key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.26\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, shallowReadonly, isShallow, isReactive, ReactiveEffect, getCurrentScope, ref, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, customRef, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, isBuiltInDirective, invokeArrayFns, isRegExp, isGloballyAllowed, NO, isReservedProp, EMPTY_ARR, toRawType, makeMap, def, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\"))\n return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n pauseTracking();\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n props,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n const prev = setCurrentRenderingInstance(instance);\n let result;\n let fallthroughAttrs;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return shallowReadonly(attrs);\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(props) : props,\n null\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs, false, true);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root, null, false, true);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n ` is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n const suspensible = vnode.props && vnode.props.suspensible;\n return suspensible != null && suspensible !== false;\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n warn$1(\n `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = currentInstance;\n const reactiveGetter = (source2) => deep === true ? source2 : (\n // for deep: false, only traverse root-level properties\n traverse(source2, deep === false ? 1 : void 0)\n );\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n onCleanup = NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3, [\n getter(),\n isMultiSource ? [] : void 0,\n onCleanup\n ]);\n }\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const scope = getCurrentScope();\n const unwatch = () => {\n effect.stop();\n if (scope) {\n remove(scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\"))\n break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {\n const leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (instance.update.active !== false) {\n instance.effect.dirty = true;\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1))\n done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n return resolveTransitionHooks(vnode2, props, state, instance);\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n if (!isKeepAlive(vnode)) {\n return vnode;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128)\n keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || !isSameVNodeType(cached, current)) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res)\n res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\")\n props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n\n","\r\n\r\n\r\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set(items);\n if (set.size === items.length) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n clip: true,\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */ function toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */ function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n/**\n * @private\n */ // eslint-disable-next-line complexity\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */ function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */ function clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */ case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */ case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */ function _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */ function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */ function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */ const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */ function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */ function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */ function _createResolver(scopes, prefixes = [\n ''\n], rootScopes, fallback, getTarget = ()=>scopes[0]) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */ function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */ function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n","/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPieController: PieController,\nPolarAreaController: PolarAreaController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit)=>Math.min(maxTicksLimit || ticksLength, ticksLength);\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; i += increment){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i = 0; i < local.length; i++){\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions){\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d)=>d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).some((key)=>isFunction(value[key]));\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.4.2\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\nfunction getDatasetArea(meta, chartArea) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle , borderDash , borderDashOffset } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash'\n };\n circumference;\n endAngle;\n fullCircles;\n innerRadius;\n outerRadius;\n pixelMargin;\n startAngle;\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n function getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n parsed;\n skip;\n stop;\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nBarElement: BarElement,\nLineElement: LineElement,\nPointElement: PointElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { data: { datasets } , options: chartOptions } = chart.config;\n const { elements } = chartOptions;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes){\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n const xAverage = [\n ...xSet\n ].reduce((a, b)=>a + b) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive.filter((i)=>this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined);\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const { extra , additionalAngle , padding , size } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const { left , top , right , bottom } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const { centerPointLabels , display } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for(let i = 0; i < valueCount; i++){\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const { left , top , right , bottom } = item;\n const { backdropColor } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0 || index === 0 && this.min < 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && this.min >= 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b)=>a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","\n\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array*/ = [\"ID;PWXL;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('');\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
\" + t + \"
\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
\");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday: [\"d\", \"dd\"],\n\tmonth: [\"m\", \"mm\"],\n\tyear: [\"y\", \"yy\"],\n\thours: [\"h\", \"hh\"],\n\tminutes: [\"m\", \"mm\"],\n\tseconds: [\"s\", \"ss\"],\n\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera: [\"e\", \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': // 16.2 \n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* table cells, text */\n\t\to.push(' \\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n outer:\n for (var L = 0; L <= body.length - search.length; ++L) {\n for (var j = 0; j < search.length; ++j)\n if (body[L + j] != search[j])\n continue outer;\n return true;\n }\n return false;\n}\nfunction u8concat(u8a) {\n var len = u8a.reduce(function(acc, x) {\n return acc + x.length;\n }, 0);\n var out = new Uint8Array(len);\n var off = 0;\n u8a.forEach(function(u8) {\n out.set(u8, off);\n off += u8.length;\n });\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr ? ptr[0] : 0;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n if (ptr)\n ptr[0] = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var off = ptr[0];\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = Math.floor(num / 8);\n var len = 0;\n var res;\n if (num == 0)\n break;\n switch (type) {\n case 0:\n {\n var l = ptr[0];\n while (buf[ptr[0]++] >= 128)\n ;\n res = buf.slice(l, ptr[0]);\n }\n break;\n case 5:\n len = 4;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 1:\n len = 8;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 2:\n len = parse_varint49(buf, ptr);\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 3:\n case 4:\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: res, type: type };\n if (out[num] == null)\n out[num] = [v];\n else\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf.slice(ptr[0], ptr[0] + fl)\n });\n ptr[0] += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [];\n ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n ai[2] = [];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = [0];\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n while (ptr[0] < buf.length) {\n var tag = buf[ptr[0]] & 3;\n if (tag == 0) {\n var len = buf[ptr[0]++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[ptr[0]];\n if (c > 1)\n len |= buf[ptr[0] + 1] << 8;\n if (c > 2)\n len |= buf[ptr[0] + 2] << 16;\n if (c > 3)\n len |= buf[ptr[0] + 3] << 24;\n len >>>= 0;\n len++;\n ptr[0] += c;\n }\n chunks.push(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[ptr[0]] >> 2 & 7) + 4;\n offset = (buf[ptr[0]++] & 224) << 3;\n offset |= buf[ptr[0]++];\n } else {\n length = (buf[ptr[0]++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n ptr[0] += 2;\n } else {\n offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n ptr[0] += 4;\n }\n }\n chunks = [u8concat(chunks)];\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n if (offset > chunks[0].length)\n throw new Error(\"Invalid offset beyond length\");\n if (length >= offset) {\n chunks.push(chunks[0].slice(-offset));\n length -= offset;\n while (length >= chunks[chunks.length - 1].length) {\n chunks.push(chunks[chunks.length - 1]);\n length -= chunks[chunks.length - 1].length;\n }\n }\n chunks.push(chunks[0].slice(-offset, -offset + length));\n }\n }\n var o = u8concat(chunks);\n if (o.length != usz)\n throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n return o;\n}\nfunction decompress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf.slice(l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 512) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n var ret;\n switch (buf[2]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else if (sidx > -1)\n ret = { t: \"s\", v: sst[sidx] };\n else if (!isNaN(ieee))\n ret = { t: \"n\", v: ieee };\n else\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(8, true);\n var data_offset = 12;\n var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 1) {\n d128 = readDecimal128LE(buf, data_offset);\n data_offset += 16;\n }\n if (flags & 2) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n if (flags & 8) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 16) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n var ret;\n switch (buf[1]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[1] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 3;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[2] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(4, flags, true);\n return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n return parse_old_storage(buf, sst, rsst, buf[0]);\n case 5:\n return parse_new_storage(buf, sst, rsst);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n var out = [];\n out[1] = [{ type: 0, data: write_varint49(idx) }];\n return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var store = parse_shallow(pb[4][0].data);\n var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype));\n var _tile = parse_TST_Tile(M, ref);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var addr = encode_cell({ r: _R + R, c: C });\n var res = parse_cell_storage(buf, sst, rsst);\n if (res)\n ws[addr] = res;\n });\n });\n _R += _tile.nrows;\n });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n var out = book_new();\n var pb = parse_shallow(root.data);\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n return out;\n}\nfunction parse_numbers_iwa(cfb) {\n var _a, _b, _c, _d;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n var _a, _b, _c, _d;\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n if (wide_offsets)\n throw \"Math only works with normal offsets\";\n var cnt = 0;\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset, true);\n _dv.setUint16(C * 2, _last_offset, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var ws = wb.Sheets[wb.SheetNames[0]];\n if (wb.SheetNames.length > 1)\n console.error(\"The Numbers writer currently writes only the first table\");\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 9) {\n trunc = true;\n range.e.c = 9;\n }\n if (range.e.r > 49) {\n trunc = true;\n range.e.r = 49;\n }\n if (trunc)\n console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n data.forEach(function(row) {\n return row.forEach(function(cell) {\n if (typeof cell == \"string\")\n SST.push(cell);\n });\n });\n var dependents = {};\n var indices = [];\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n var old_content = fi.content;\n var raw1 = decompress_iwa_file(old_content);\n var x2 = parse_iwa_file(raw1);\n x2.forEach(function(packet2) {\n indices.push(packet2.id);\n dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n });\n });\n indices.sort(function(x2, y2) {\n return x2 - y2;\n });\n var indices_varint = indices.filter(function(x2) {\n return x2 > 1;\n }).map(function(x2) {\n return [x2, write_varint49(x2)];\n });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (!fi.name.match(/\\.iwa/))\n return;\n var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n x2.forEach(function(ia) {\n ia.messages.forEach(function(m) {\n indices_varint.forEach(function(ivi) {\n if (ia.messages.some(function(mess) {\n return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n })) {\n dependents[ivi[0]].deps.push(ia.id);\n }\n });\n });\n });\n });\n function get_unique_msgid() {\n for (var i = 927262; i < 2e6; ++i)\n if (!dependents[i])\n return i;\n throw new Error(\"Too many messages\");\n }\n var entry = CFB.find(cfb, dependents[1].location);\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var docroot;\n for (var xi = 0; xi < x.length; ++xi) {\n var packet = x[xi];\n if (packet.id == 1)\n docroot = packet;\n }\n var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n var pb = parse_shallow(docroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n var cruidsref = parse_TSP_Reference(pb[46][0].data);\n var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n for (var j = 0; j < _x.length; ++j) {\n if (_x[j].id == cruidsref)\n break;\n }\n if (_x[j].id != cruidsref)\n throw \"Bad ColumnRowUIDMapArchive\";\n var cruids = parse_shallow(_x[j].messages[0].data);\n cruids[1] = [];\n cruids[2] = [], cruids[3] = [];\n for (var C = 0; C <= range.e.c; ++C) {\n var uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n cruids[1].push({ type: 2, data: write_shallow(uuid) });\n cruids[2].push({ type: 0, data: write_varint49(C) });\n cruids[3].push({ type: 0, data: write_varint49(C) });\n }\n cruids[4] = [];\n cruids[5] = [], cruids[6] = [];\n for (var R = 0; R <= range.e.r; ++R) {\n uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n cruids[4].push({ type: 2, data: write_shallow(uuid) });\n cruids[5].push({ type: 0, data: write_varint49(R) });\n cruids[6].push({ type: 0, data: write_varint49(R) });\n }\n _x[j].messages[0].data = write_shallow(cruids);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n store[7][0].data = write_varint49(range.e.r + 1);\n var row_headers = parse_shallow(store[1][0].data);\n var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != row_header_ref)\n throw \"Bad HeaderStorageBucket\";\n var base_bucket = parse_shallow(_x[0].messages[0].data);\n for (R = 0; R < data.length; ++R) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R);\n _bucket[4][0].data = write_varint49(data[R].length);\n base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != col_header_ref)\n throw \"Bad HeaderStorageBucket\";\n base_bucket = parse_shallow(_x[0].messages[0].data);\n for (C = 0; C <= range.e.c; ++C) {\n _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var sstref = parse_TSP_Reference(store[4][0].data);\n (function() {\n var sentry = CFB.find(cfb, dependents[sstref].location);\n var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n var sstroot;\n for (var sxi = 0; sxi < sx.length; ++sxi) {\n var packet2 = sx[sxi];\n if (packet2.id == sstref)\n sstroot = packet2;\n }\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n var newsst = [];\n SST.forEach(function(str, i) {\n newsst[1] = [{ type: 0, data: write_varint49(i) }];\n newsst[2] = [{ type: 0, data: write_varint49(1) }];\n newsst[3] = [{ type: 2, data: stru8(str) }];\n sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n var sy = write_iwa_file(sx);\n var raw32 = compress_iwa_file(sy);\n sentry.content = raw32;\n sentry.size = sentry.content.length;\n })();\n var tile = parse_shallow(store[3][0].data);\n {\n var t = tile[1][0];\n delete tile[2];\n var tl = parse_shallow(t.data);\n {\n var tileref = parse_TSP_Reference(tl[2][0].data);\n (function() {\n var tentry = CFB.find(cfb, dependents[tileref].location);\n var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n var tileroot;\n for (var sxi = 0; sxi < tx.length; ++sxi) {\n var packet2 = tx[sxi];\n if (packet2.id == tileref)\n tileroot = packet2;\n }\n var tiledata = parse_shallow(tileroot.messages[0].data);\n {\n delete tiledata[6];\n delete tile[7];\n var rowload = new Uint8Array(tiledata[5][0].data);\n tiledata[5] = [];\n var cnt = 0;\n for (var R2 = 0; R2 <= range.e.r; ++R2) {\n var tilerow = parse_shallow(rowload);\n cnt += write_tile_row(tilerow, data[R2], SST);\n tilerow[1][0].data = write_varint49(R2);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n }\n tileroot.messages[0].data = write_shallow(tiledata);\n var ty = write_iwa_file(tx);\n var raw32 = compress_iwa_file(ty);\n tentry.content = raw32;\n tentry.size = tentry.content.length;\n })();\n }\n t.data = write_shallow(tl);\n }\n store[3][0].data = write_shallow(tile);\n }\n pb[4][0].data = write_shallow(store);\n }\n docroot.messages[0].data = write_shallow(pb);\n var y = write_iwa_file(x);\n var raw3 = compress_iwa_file(y);\n entry.content = raw3;\n entry.size = entry.content.length;\n return cfb;\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar. Originally they were unified in one\n export function. This is horrible for tree shaking in the common case (most\n applications need to export files in one format) so this function supports\n both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","\n\n","\n\n\n\n","// Follows the example of https://blog.excalidraw.com/end-to-end-encryption/\nconst subtle = window.crypto.subtle;\nexport async function generateKey() {\n const algorithm = {\n name: 'AES-GCM',\n length: 256\n };\n\n return await subtle.generateKey(algorithm, true, ['encrypt', 'decrypt']);\n}\n\nexport async function encrypt(key, data) {\n return await subtle.encrypt(\n {\n name: 'AES-GCM',\n iv: new Uint8Array(12), // Can be left as 0 because we don't reuse it\n tagLength: 128\n },\n key,\n new TextEncoder().encode(data)\n );\n}\n\nexport async function sha256(data) {\n return subtle.digest(\"SHA-256\", new TextEncoder().encode(data));\n}\n\nexport async function getKeyString(key) {\n return (await subtle.exportKey(\"jwk\", key)).k;\n}\n\nexport async function retreiveKeyfromString(keyString) {\n return subtle.importKey(\n \"jwk\",\n {\n kty: \"oct\",\n k: keyString,\n },\n {\n name: \"AES-GCM\",\n length: 256\n },\n true,\n [\"decrypt\", \"encrypt\"]\n );\n}\nexport async function decrypt(keyString, encrypted) {\n const cryptoKey = await retreiveKeyfromString(keyString);\n\n const decrypted = await subtle.decrypt(\n {\n name: 'AES-GCM',\n iv: new Uint8Array(12),\n },\n cryptoKey,\n new Uint8Array(encrypted).buffer\n );\n\n return new TextDecoder().decode(decrypted);\n}","\n\n","import{toRefs as e,ref as t,computed as r,onMounted as i,onUnmounted as n,watch as o,openBlock as a,createElementBlock as s,mergeProps as l}from\"vue\";function u(e){return-1!==[null,void 0,!1].indexOf(e)}\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;function c(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function p(e){var t={exports:{}};return e(t,t.exports),t.exports}var d=p((function(e,t){e.exports=function(){var e=[\"decimals\",\"thousand\",\"mark\",\"prefix\",\"suffix\",\"encoder\",\"decoder\",\"negativeBefore\",\"negative\",\"edit\",\"undo\"];function t(e){return e.split(\"\").reverse().join(\"\")}function r(e,t){return e.substring(0,t.length)===t}function i(e,t){return e.slice(-1*t.length)===t}function n(e,t,r){if((e[t]||e[r])&&e[t]===e[r])throw new Error(t)}function o(e){return\"number\"==typeof e&&isFinite(e)}function a(e,t){return e=e.toString().split(\"e\"),(+((e=(e=Math.round(+(e[0]+\"e\"+(e[1]?+e[1]+t:t)))).toString().split(\"e\"))[0]+\"e\"+(e[1]?+e[1]-t:-t))).toFixed(t)}function s(e,r,i,n,s,l,u,c,p,d,f,h){var m,v,g,b=h,y=\"\",S=\"\";return l&&(h=l(h)),!!o(h)&&(!1!==e&&0===parseFloat(h.toFixed(e))&&(h=0),h<0&&(m=!0,h=Math.abs(h)),!1!==e&&(h=a(h,e)),-1!==(h=h.toString()).indexOf(\".\")?(g=(v=h.split(\".\"))[0],i&&(y=i+v[1])):g=h,r&&(g=t(g).match(/.{1,3}/g),g=t(g.join(t(r)))),m&&c&&(S+=c),n&&(S+=n),m&&p&&(S+=p),S+=g,S+=y,s&&(S+=s),d&&(S=d(S,b)),S)}function l(e,t,n,a,s,l,u,c,p,d,f,h){var m,v=\"\";return f&&(h=f(h)),!(!h||\"string\"!=typeof h)&&(c&&r(h,c)&&(h=h.replace(c,\"\"),m=!0),a&&r(h,a)&&(h=h.replace(a,\"\")),p&&r(h,p)&&(h=h.replace(p,\"\"),m=!0),s&&i(h,s)&&(h=h.slice(0,-1*s.length)),t&&(h=h.split(t).join(\"\")),n&&(h=h.replace(n,\".\")),m&&(v+=\"-\"),\"\"!==(v=(v+=h).replace(/[^0-9\\.\\-.]/g,\"\"))&&(v=Number(v),u&&(v=u(v)),!!o(v)&&v))}function u(t){var r,i,o,a={};for(void 0===t.suffix&&(t.suffix=t.postfix),r=0;r=0&&o<8))throw new Error(i);a[i]=o}else if(\"encoder\"===i||\"decoder\"===i||\"edit\"===i||\"undo\"===i){if(\"function\"!=typeof o)throw new Error(i);a[i]=o}else{if(\"string\"!=typeof o)throw new Error(i);a[i]=o}return n(a,\"mark\",\"thousand\"),n(a,\"prefix\",\"negative\"),n(a,\"prefix\",\"negativeBefore\"),a}function c(t,r,i){var n,o=[];for(n=0;n0&&(h(e,t),setTimeout((function(){m(e,t)}),r))}function p(e){return Math.max(Math.min(e,100),0)}function d(e){return Array.isArray(e)?e:[e]}function f(e){var t=(e=String(e)).split(\".\");return t.length>1?t[1].length:0}function h(e,t){e.classList&&!/\\s/.test(t)?e.classList.add(t):e.className+=\" \"+t}function m(e,t){e.classList&&!/\\s/.test(t)?e.classList.remove(t):e.className=e.className.replace(new RegExp(\"(^|\\\\b)\"+t.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function v(e,t){return e.classList?e.classList.contains(t):new RegExp(\"\\\\b\"+t+\"\\\\b\").test(e.className)}function g(e){var t=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(e.compatMode||\"\");return{x:t?window.pageXOffset:r?e.documentElement.scrollLeft:e.body.scrollLeft,y:t?window.pageYOffset:r?e.documentElement.scrollTop:e.body.scrollTop}}function b(){return window.navigator.pointerEnabled?{start:\"pointerdown\",move:\"pointermove\",end:\"pointerup\"}:window.navigator.msPointerEnabled?{start:\"MSPointerDown\",move:\"MSPointerMove\",end:\"MSPointerUp\"}:{start:\"mousedown touchstart\",move:\"mousemove touchmove\",end:\"mouseup touchend\"}}function y(){var e=!1;try{var t=Object.defineProperty({},\"passive\",{get:function(){e=!0}});window.addEventListener(\"test\",null,t)}catch(e){}return e}function S(){return window.CSS&&CSS.supports&&CSS.supports(\"touch-action\",\"none\")}function x(e,t){return 100/(t-e)}function w(e,t,r){return 100*t/(e[r+1]-e[r])}function E(e,t){return w(e,e[0]<0?t+Math.abs(e[0]):t-e[0],0)}function P(e,t){return t*(e[1]-e[0])/100+e[0]}function N(e,t){for(var r=1;e>=t[r];)r+=1;return r}function C(e,t,r){if(r>=e.slice(-1)[0])return 100;var i=N(r,e),n=e[i-1],o=e[i],a=t[i-1],s=t[i];return a+E([n,o],r)/x(a,s)}function k(e,t,r){if(r>=100)return e.slice(-1)[0];var i=N(r,t),n=e[i-1],o=e[i],a=t[i-1];return P([n,o],(r-a)*x(a,t[i]))}function V(e,t,r,i){if(100===i)return i;var n=N(i,e),o=e[n-1],a=e[n];return r?i-o>(a-o)/2?a:o:t[n-1]?e[n-1]+s(i-e[n-1],t[n-1]):i}var A,M;e.PipsMode=void 0,(M=e.PipsMode||(e.PipsMode={})).Range=\"range\",M.Steps=\"steps\",M.Positions=\"positions\",M.Count=\"count\",M.Values=\"values\",e.PipsType=void 0,(A=e.PipsType||(e.PipsType={}))[A.None=-1]=\"None\",A[A.NoValue=0]=\"NoValue\",A[A.LargeValue=1]=\"LargeValue\",A[A.SmallValue=2]=\"SmallValue\";var L=function(){function e(e,t,r){var i;this.xPct=[],this.xVal=[],this.xSteps=[],this.xNumSteps=[],this.xHighestCompleteStep=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.snap=t;var n=[];for(Object.keys(e).forEach((function(t){n.push([d(e[t]),t])})),n.sort((function(e,t){return e[0][0]-t[0][0]})),i=0;ithis.xPct[n+1];)n++;else e===this.xPct[this.xPct.length-1]&&(n=this.xPct.length-2);r||e!==this.xPct[n+1]||n++,null===t&&(t=[]);var o=1,a=t[n],s=0,l=0,u=0,c=0;for(i=r?(e-this.xPct[n])/(this.xPct[n+1]-this.xPct[n]):(this.xPct[n+1]-e)/(this.xPct[n+1]-this.xPct[n]);a>0;)s=this.xPct[n+1+c]-this.xPct[n+c],t[n+c]*o+100-100*i>100?(l=s*i,o=(a-100*i)/t[n+c],i=1):(l=t[n+c]*s/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),a=t[n+c]*o;return e+u},e.prototype.toStepping=function(e){return e=C(this.xVal,this.xPct,e)},e.prototype.fromStepping=function(e){return k(this.xVal,this.xPct,e)},e.prototype.getStep=function(e){return e=V(this.xPct,this.xSteps,this.snap,e)},e.prototype.getDefaultStep=function(e,t,r){var i=N(e,this.xPct);return(100===e||t&&e===this.xPct[i-1])&&(i=Math.max(i-1,1)),(this.xVal[i]-this.xVal[i-1])/r},e.prototype.getNearbySteps=function(e){var t=N(e,this.xPct);return{stepBefore:{startValue:this.xVal[t-2],step:this.xNumSteps[t-2],highestStep:this.xHighestCompleteStep[t-2]},thisStep:{startValue:this.xVal[t-1],step:this.xNumSteps[t-1],highestStep:this.xHighestCompleteStep[t-1]},stepAfter:{startValue:this.xVal[t],step:this.xNumSteps[t],highestStep:this.xHighestCompleteStep[t]}}},e.prototype.countStepDecimals=function(){var e=this.xNumSteps.map(f);return Math.max.apply(null,e)},e.prototype.hasNoSize=function(){return this.xVal[0]===this.xVal[this.xVal.length-1]},e.prototype.convert=function(e){return this.getStep(this.toStepping(e))},e.prototype.handleEntryPoint=function(e,t){var r;if(!u(r=\"min\"===e?0:\"max\"===e?100:parseFloat(e))||!u(t[0]))throw new Error(\"noUiSlider: 'range' value isn't numeric.\");this.xPct.push(r),this.xVal.push(t[0]);var i=Number(t[1]);r?this.xSteps.push(!isNaN(i)&&i):isNaN(i)||(this.xSteps[0]=i),this.xHighestCompleteStep.push(0)},e.prototype.handleStepPoint=function(e,t){if(t)if(this.xVal[e]!==this.xVal[e+1]){this.xSteps[e]=w([this.xVal[e],this.xVal[e+1]],t,0)/x(this.xPct[e],this.xPct[e+1]);var r=(this.xVal[e+1]-this.xVal[e])/this.xNumSteps[e],i=Math.ceil(Number(r.toFixed(3))-1),n=this.xVal[e]+this.xNumSteps[e]*i;this.xHighestCompleteStep[e]=n}else this.xSteps[e]=this.xHighestCompleteStep[e]=this.xVal[e]},e}(),U={to:function(e){return void 0===e?\"\":e.toFixed(2)},from:Number},O={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"},D={tooltips:\".__tooltips\",aria:\".__aria\"};function j(e,t){if(!u(t))throw new Error(\"noUiSlider: 'step' is not numeric.\");e.singleStep=t}function F(e,t){if(!u(t))throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");e.keyboardPageMultiplier=t}function T(e,t){if(!u(t))throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");e.keyboardMultiplier=t}function z(e,t){if(!u(t))throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");e.keyboardDefaultStep=t}function H(e,t){if(\"object\"!=typeof t||Array.isArray(t))throw new Error(\"noUiSlider: 'range' is not an object.\");if(void 0===t.min||void 0===t.max)throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");e.spectrum=new L(t,e.snap||!1,e.singleStep)}function q(e,t){if(t=d(t),!Array.isArray(t)||!t.length)throw new Error(\"noUiSlider: 'start' option is incorrect.\");e.handles=t.length,e.start=t}function R(e,t){if(\"boolean\"!=typeof t)throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");e.snap=t}function B(e,t){if(\"boolean\"!=typeof t)throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");e.animate=t}function _(e,t){if(\"number\"!=typeof t)throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");e.animationDuration=t}function $(e,t){var r,i=[!1];if(\"lower\"===t?t=[!0,!1]:\"upper\"===t&&(t=[!1,!0]),!0===t||!1===t){for(r=1;r1)throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\")}}function G(e,t){switch(t){case\"ltr\":e.dir=0;break;case\"rtl\":e.dir=1;break;default:throw new Error(\"noUiSlider: 'direction' option was not recognized.\")}}function J(e,t){if(\"string\"!=typeof t)throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");var r=t.indexOf(\"tap\")>=0,i=t.indexOf(\"drag\")>=0,n=t.indexOf(\"fixed\")>=0,o=t.indexOf(\"snap\")>=0,a=t.indexOf(\"hover\")>=0,s=t.indexOf(\"unconstrained\")>=0,l=t.indexOf(\"drag-all\")>=0,u=t.indexOf(\"smooth-steps\")>=0;if(n){if(2!==e.handles)throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");Y(e,e.start[1]-e.start[0])}if(s&&(e.margin||e.limit))throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");e.events={tap:r||o,drag:i,dragAll:l,smoothSteps:u,fixed:n,snap:o,hover:a,unconstrained:s}}function K(e,t){if(!1!==t)if(!0===t||r(t)){e.tooltips=[];for(var i=0;i= 2) required for mode 'count'.\");for(var r=t.values-1,i=100/r,n=[];r--;)n[r]=r*i;return n.push(100),J(n,t.stepped)}return t.mode===e.PipsMode.Positions?J(t.values,t.stepped):t.mode===e.PipsMode.Values?t.stepped?t.values.map((function(e){return k.fromStepping(k.getStep(k.toStepping(e)))})):t.values:[]}function J(e,t){return e.map((function(e){return k.fromStepping(t?k.getStep(e):e)}))}function K(t){function r(e,t){return Number((e+t).toFixed(7))}var i=G(t),n={},o=k.xVal[0],s=k.xVal[k.xVal.length-1],l=!1,u=!1,c=0;return(i=a(i.slice().sort((function(e,t){return e-t}))))[0]!==o&&(i.unshift(o),l=!0),i[i.length-1]!==s&&(i.push(s),u=!0),i.forEach((function(o,a){var s,p,d,f,h,m,v,g,b,y,S=o,x=i[a+1],w=t.mode===e.PipsMode.Steps;for(w&&(s=k.xNumSteps[a]),s||(s=x-S),void 0===x&&(x=S),s=Math.max(s,1e-7),p=S;p<=x;p=r(p,s)){for(g=(h=(f=k.toStepping(p))-c)/(t.density||1),y=h/(b=Math.round(g)),d=1;d<=b;d+=1)n[(m=c+d*y).toFixed(5)]=[k.fromStepping(m),0];v=i.indexOf(p)>-1?e.PipsType.LargeValue:w?e.PipsType.SmallValue:e.PipsType.NoValue,!a&&l&&p!==x&&(v=0),p===x&&u||(n[f.toFixed(5)]=[p,v]),c=f}})),n}function Q(t,i,n){var o,a,s=O.createElement(\"div\"),l=((o={})[e.PipsType.None]=\"\",o[e.PipsType.NoValue]=r.cssClasses.valueNormal,o[e.PipsType.LargeValue]=r.cssClasses.valueLarge,o[e.PipsType.SmallValue]=r.cssClasses.valueSub,o),u=((a={})[e.PipsType.None]=\"\",a[e.PipsType.NoValue]=r.cssClasses.markerNormal,a[e.PipsType.LargeValue]=r.cssClasses.markerLarge,a[e.PipsType.SmallValue]=r.cssClasses.markerSub,a),c=[r.cssClasses.valueHorizontal,r.cssClasses.valueVertical],p=[r.cssClasses.markerHorizontal,r.cssClasses.markerVertical];function d(e,t){var i=t===r.cssClasses.value,n=i?l:u;return t+\" \"+(i?c:p)[r.ort]+\" \"+n[e]}function f(t,o,a){if((a=i?i(o,a):a)!==e.PipsType.None){var l=z(s,!1);l.className=d(a,r.cssClasses.marker),l.style[r.style]=t+\"%\",a>e.PipsType.NoValue&&((l=z(s,!1)).className=d(a,r.cssClasses.value),l.setAttribute(\"data-value\",String(o)),l.style[r.style]=t+\"%\",l.innerHTML=String(n.to(o)))}}return h(s,r.cssClasses.pips),h(s,0===r.ort?r.cssClasses.pipsHorizontal:r.cssClasses.pipsVertical),Object.keys(t).forEach((function(e){f(e,t[e][0],t[e][1])})),s}function Z(){w&&(i(w),w=null)}function ee(e){Z();var t=K(e),r=e.filter,i=e.format||{to:function(e){return String(Math.round(e))}};return w=C.appendChild(Q(t,r,i))}function te(){var e=u.getBoundingClientRect(),t=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?e.width||u[t]:e.height||u[t]}function re(e,t,i,n){var o=function(o){var a=ie(o,n.pageOffset,n.target||t);return!!a&&!($()&&!n.doNotReject)&&!(v(C,r.cssClasses.tap)&&!n.doNotReject)&&!(e===P.start&&void 0!==a.buttons&&a.buttons>1)&&(!n.hover||!a.buttons)&&(N||a.preventDefault(),a.calcPoint=a.points[r.ort],void i(a,n))},a=[];return e.split(\" \").forEach((function(e){t.addEventListener(e,o,!!N&&{passive:!0}),a.push([e,o])})),a}function ie(e,t,r){var i=0===e.type.indexOf(\"touch\"),n=0===e.type.indexOf(\"mouse\"),o=0===e.type.indexOf(\"pointer\"),a=0,s=0;if(0===e.type.indexOf(\"MSPointer\")&&(o=!0),\"mousedown\"===e.type&&!e.buttons&&!e.touches)return!1;if(i){var l=function(t){var i=t.target;return i===r||r.contains(i)||e.composed&&e.composedPath().shift()===r};if(\"touchstart\"===e.type){var u=Array.prototype.filter.call(e.touches,l);if(u.length>1)return!1;a=u[0].pageX,s=u[0].pageY}else{var c=Array.prototype.find.call(e.changedTouches,l);if(!c)return!1;a=c.pageX,s=c.pageY}}return t=t||g(O),(n||o)&&(a=e.clientX+t.x,s=e.clientY+t.y),e.pageOffset=t,e.points=[a,s],e.cursor=n||o,e}function ne(e){var t=100*(e-l(u,r.ort))/te();return t=p(t),r.dir?100-t:t}function ae(e){var t=100,r=!1;return f.forEach((function(i,n){if(!X(n)){var o=A[n],a=Math.abs(o-e);(ao||100===a&&100===t)&&(r=n,t=a)}})),r}function se(e,t){\"mouseout\"===e.type&&\"HTML\"===e.target.nodeName&&null===e.relatedTarget&&ue(e,t)}function le(e,t){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===e.buttons&&0!==t.buttonsProperty)return ue(e,t);var i=(r.dir?-1:1)*(e.calcPoint-t.startCalcPoint);xe(i>0,100*i/t.baseSize,t.locations,t.handleNumbers,t.connect)}function ue(e,t){t.handle&&(m(t.handle,r.cssClasses.active),L-=1),t.listeners.forEach((function(e){j.removeEventListener(e[0],e[1])})),0===L&&(m(C,r.cssClasses.drag),Pe(),e.cursor&&(F.style.cursor=\"\",F.removeEventListener(\"selectstart\",o))),r.events.smoothSteps&&(t.handleNumbers.forEach((function(e){Ne(e,A[e],!0,!0,!1,!1)})),t.handleNumbers.forEach((function(e){be(\"update\",e)}))),t.handleNumbers.forEach((function(e){be(\"change\",e),be(\"set\",e),be(\"end\",e)}))}function ce(e,t){if(!t.handleNumbers.some(X)){var i;1===t.handleNumbers.length&&(i=f[t.handleNumbers[0]].children[0],L+=1,h(i,r.cssClasses.active)),e.stopPropagation();var n=[],a=re(P.move,j,le,{target:e.target,handle:i,connect:t.connect,listeners:n,startCalcPoint:e.calcPoint,baseSize:te(),pageOffset:e.pageOffset,handleNumbers:t.handleNumbers,buttonsProperty:e.buttons,locations:A.slice()}),s=re(P.end,j,ue,{target:e.target,handle:i,listeners:n,doNotReject:!0,handleNumbers:t.handleNumbers}),l=re(\"mouseout\",j,se,{target:e.target,handle:i,listeners:n,doNotReject:!0,handleNumbers:t.handleNumbers});n.push.apply(n,a.concat(s,l)),e.cursor&&(F.style.cursor=getComputedStyle(e.target).cursor,f.length>1&&h(C,r.cssClasses.drag),F.addEventListener(\"selectstart\",o,!1)),t.handleNumbers.forEach((function(e){be(\"start\",e)}))}}function pe(e){e.stopPropagation();var t=ne(e.calcPoint),i=ae(t);!1!==i&&(r.events.snap||c(C,r.cssClasses.tap,r.animationDuration),Ne(i,t,!0,!0),Pe(),be(\"slide\",i,!0),be(\"update\",i,!0),r.events.snap?ce(e,{handleNumbers:[i]}):(be(\"change\",i,!0),be(\"set\",i,!0)))}function de(e){var t=ne(e.calcPoint),r=k.getStep(t),i=k.fromStepping(r);Object.keys(U).forEach((function(e){\"hover\"===e.split(\".\")[0]&&U[e].forEach((function(e){e.call(Te,i)}))}))}function fe(e,t){if($()||X(t))return!1;var i=[\"Left\",\"Right\"],n=[\"Down\",\"Up\"],o=[\"PageDown\",\"PageUp\"],a=[\"Home\",\"End\"];r.dir&&!r.ort?i.reverse():r.ort&&!r.dir&&(n.reverse(),o.reverse());var s,l=e.key.replace(\"Arrow\",\"\"),u=l===o[0],c=l===o[1],p=l===n[0]||l===i[0]||u,d=l===n[1]||l===i[1]||c,f=l===a[0],h=l===a[1];if(!(p||d||f||h))return!0;if(e.preventDefault(),d||p){var m=p?0:1,v=Oe(t)[m];if(null===v)return!1;!1===v&&(v=k.getDefaultStep(A[t],p,r.keyboardDefaultStep)),v*=c||u?r.keyboardPageMultiplier:r.keyboardMultiplier,v=Math.max(v,1e-7),v*=p?-1:1,s=V[t]+v}else s=h?r.spectrum.xVal[r.spectrum.xVal.length-1]:r.spectrum.xVal[0];return Ne(t,k.toStepping(s),!0,!0),be(\"slide\",t),be(\"update\",t),be(\"change\",t),be(\"set\",t),!1}function he(e){e.fixed||f.forEach((function(e,t){re(P.start,e.children[0],ce,{handleNumbers:[t]})})),e.tap&&re(P.start,u,pe,{}),e.hover&&re(P.move,u,de,{hover:!0}),e.drag&&x.forEach((function(t,i){if(!1!==t&&0!==i&&i!==x.length-1){var n=f[i-1],o=f[i],a=[t],s=[n,o],l=[i-1,i];h(t,r.cssClasses.draggable),e.fixed&&(a.push(n.children[0]),a.push(o.children[0])),e.dragAll&&(s=f,l=M),a.forEach((function(e){re(P.start,e,ce,{handles:s,handleNumbers:l,connect:t})}))}}))}function me(e,t){U[e]=U[e]||[],U[e].push(t),\"update\"===e.split(\".\")[0]&&f.forEach((function(e,t){be(\"update\",t)}))}function ve(e){return e===D.aria||e===D.tooltips}function ge(e){var t=e&&e.split(\".\")[0],r=t?e.substring(t.length):e;Object.keys(U).forEach((function(e){var i=e.split(\".\")[0],n=e.substring(i.length);t&&t!==i||r&&r!==n||ve(n)&&r!==n||delete U[e]}))}function be(e,t,i){Object.keys(U).forEach((function(n){var o=n.split(\".\")[0];e===o&&U[n].forEach((function(e){e.call(Te,V.map(r.format.to),t,V.slice(),i||!1,A.slice(),Te)}))}))}function ye(e,t,i,n,o,a,s){var l;return f.length>1&&!r.events.unconstrained&&(n&&t>0&&(l=k.getAbsoluteDistance(e[t-1],r.margin,!1),i=Math.max(i,l)),o&&t1&&r.limit&&(n&&t>0&&(l=k.getAbsoluteDistance(e[t-1],r.limit,!1),i=Math.min(i,l)),o&&t1?n.forEach((function(e,r){var i=ye(a,e,a[e]+t,u[r],c[r],!1,l);!1===i?t=0:(t=i-a[e],a[e]=i)})):u=c=[!0];var p=!1;n.forEach((function(e,r){p=Ne(e,i[e]+t,u[r],c[r],!1,l)||p})),p&&(n.forEach((function(e){be(\"update\",e),be(\"slide\",e)})),null!=o&&be(\"drag\",s))}function we(e,t){return r.dir?100-e-t:e}function Ee(e,t){A[e]=t,V[e]=k.fromStepping(t);var i=\"translate(\"+Se(we(t,0)-T+\"%\",\"0\")+\")\";f[e].style[r.transformRule]=i,Ce(e),Ce(e+1)}function Pe(){M.forEach((function(e){var t=A[e]>50?-1:1,r=3+(f.length+t*e);f[e].style.zIndex=String(r)}))}function Ne(e,t,r,i,n,o){return n||(t=ye(A,e,t,r,i,!1,o)),!1!==t&&(Ee(e,t),!0)}function Ce(e){if(x[e]){var t=0,i=100;0!==e&&(t=A[e-1]),e!==x.length-1&&(i=A[e]);var n=i-t,o=\"translate(\"+Se(we(t,n)+\"%\",\"0\")+\")\",a=\"scale(\"+Se(n/100,\"1\")+\")\";x[e].style[r.transformRule]=o+\" \"+a}}function ke(e,t){return null===e||!1===e||void 0===e?A[t]:(\"number\"==typeof e&&(e=String(e)),!1!==(e=r.format.from(e))&&(e=k.toStepping(e)),!1===e||isNaN(e)?A[t]:e)}function Ve(e,t,i){var n=d(e),o=void 0===A[0];t=void 0===t||t,r.animate&&!o&&c(C,r.cssClasses.tap,r.animationDuration),M.forEach((function(e){Ne(e,ke(n[e],e),!0,!1,i)}));var a=1===M.length?0:1;if(o&&k.hasNoSize()&&(i=!0,A[0]=0,M.length>1)){var s=100/(M.length-1);M.forEach((function(e){A[e]=e*s}))}for(;a=0&&ei.stepAfter.startValue&&(o=i.stepAfter.startValue-n),a=n>i.thisStep.startValue?i.thisStep.step:!1!==i.stepBefore.step&&n-i.stepBefore.highestStep,100===t?o=null:0===t&&(a=null);var s=k.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(s))),null!==a&&!1!==a&&(a=Number(a.toFixed(s))),[a,o]}function De(){return M.map(Oe)}function je(e,t){var i=Le(),o=[\"margin\",\"limit\",\"padding\",\"range\",\"animate\",\"snap\",\"step\",\"format\",\"pips\",\"tooltips\"];o.forEach((function(t){void 0!==e[t]&&(s[t]=e[t])}));var a=oe(s);o.forEach((function(t){void 0!==e[t]&&(r[t]=a[t])})),k=a.spectrum,r.margin=a.margin,r.limit=a.limit,r.padding=a.padding,r.pips?ee(r.pips):Z(),r.tooltips?I():Y(),A=[],Ve(n(e.start)?e.start:i,t)}function Fe(){u=B(C),R(r.connect,u),he(r.events),Ve(r.start),r.pips&&ee(r.pips),r.tooltips&&I(),W()}Fe();var Te={destroy:Ue,steps:De,on:me,off:ge,get:Le,set:Ve,setHandle:Me,reset:Ae,__moveHandles:function(e,t,r){xe(e,t,A,r)},options:s,updateOptions:je,target:C,removePips:Z,removeTooltips:Y,getPositions:function(){return A.slice()},getTooltips:function(){return E},getOrigins:function(){return f},pips:ee};return Te}function se(e,t){if(!e||!e.nodeName)throw new Error(\"noUiSlider: create requires a single element, got: \"+e);if(e.noUiSlider)throw new Error(\"noUiSlider: Slider was already initialized.\");var r=ae(e,oe(t),t);return e.noUiSlider=r,r}var le={__spectrum:L,cssClasses:O,create:se};e.create=se,e.cssClasses=O,e.default=le,Object.defineProperty(e,\"__esModule\",{value:!0})}(t)})));function h(e,t){if(!Array.isArray(e)||!Array.isArray(t))return!1;const r=t.slice().sort();return e.length===t.length&&e.slice().sort().every((function(e,t){return e===r[t]}))}var m={name:\"Slider\",emits:[\"input\",\"update:modelValue\",\"start\",\"slide\",\"drag\",\"update\",\"change\",\"set\",\"end\"],props:{...{value:{validator:function(e){return e=>\"number\"==typeof e||e instanceof Array||null==e||!1===e},required:!1},modelValue:{validator:function(e){return e=>\"number\"==typeof e||e instanceof Array||null==e||!1===e},required:!1}},id:{type:[String,Number],required:!1},disabled:{type:Boolean,required:!1,default:!1},min:{type:Number,required:!1,default:0},max:{type:Number,required:!1,default:100},step:{type:Number,required:!1,default:1},orientation:{type:String,required:!1,default:\"horizontal\"},direction:{type:String,required:!1,default:\"ltr\"},tooltips:{type:Boolean,required:!1,default:!0},options:{type:Object,required:!1,default:()=>({})},merge:{type:Number,required:!1,default:-1},format:{type:[Object,Function,Boolean],required:!1,default:null},classes:{type:Object,required:!1,default:()=>({})},showTooltip:{type:String,required:!1,default:\"always\"},tooltipPosition:{type:String,required:!1,default:null},lazy:{type:Boolean,required:!1,default:!0},ariaLabelledby:{type:String,required:!1,default:void 0},aria:{required:!1,type:Object,default:()=>({})}},setup(a,s){const l=function(r,i,n){const{value:o,modelValue:a,min:s}=e(r);let l=a&&void 0!==a.value?a:o;const c=t(l.value);if(u(l.value)&&(l=t(s.value)),Array.isArray(l.value)&&0==l.value.length)throw new Error(\"Slider v-model must not be an empty array\");return{value:l,initialValue:c}}(a),c=function(t,i,n){const{classes:o,showTooltip:a,tooltipPosition:s,orientation:l}=e(t),u=r((()=>({target:\"slider-target\",focused:\"slider-focused\",tooltipFocus:\"slider-tooltip-focus\",tooltipDrag:\"slider-tooltip-drag\",ltr:\"slider-ltr\",rtl:\"slider-rtl\",horizontal:\"slider-horizontal\",vertical:\"slider-vertical\",textDirectionRtl:\"slider-txt-dir-rtl\",textDirectionLtr:\"slider-txt-dir-ltr\",base:\"slider-base\",connects:\"slider-connects\",connect:\"slider-connect\",origin:\"slider-origin\",handle:\"slider-handle\",handleLower:\"slider-handle-lower\",handleUpper:\"slider-handle-upper\",touchArea:\"slider-touch-area\",tooltip:\"slider-tooltip\",tooltipTop:\"slider-tooltip-top\",tooltipBottom:\"slider-tooltip-bottom\",tooltipLeft:\"slider-tooltip-left\",tooltipRight:\"slider-tooltip-right\",tooltipHidden:\"slider-tooltip-hidden\",active:\"slider-active\",draggable:\"slider-draggable\",tap:\"slider-state-tap\",drag:\"slider-state-drag\",pips:\"slider-pips\",pipsHorizontal:\"slider-pips-horizontal\",pipsVertical:\"slider-pips-vertical\",marker:\"slider-marker\",markerHorizontal:\"slider-marker-horizontal\",markerVertical:\"slider-marker-vertical\",markerNormal:\"slider-marker-normal\",markerLarge:\"slider-marker-large\",markerSub:\"slider-marker-sub\",value:\"slider-value\",valueHorizontal:\"slider-value-horizontal\",valueVertical:\"slider-value-vertical\",valueNormal:\"slider-value-normal\",valueLarge:\"slider-value-large\",valueSub:\"slider-value-sub\",...o.value})));return{classList:r((()=>{const e={...u.value};return Object.keys(e).forEach((t=>{e[t]=Array.isArray(e[t])?e[t].filter((e=>null!==e)).join(\" \"):e[t]})),\"always\"!==a.value&&(e.target+=` ${\"drag\"===a.value?e.tooltipDrag:e.tooltipFocus}`),\"horizontal\"===l.value&&(e.tooltip+=\"bottom\"===s.value?` ${e.tooltipBottom}`:` ${e.tooltipTop}`),\"vertical\"===l.value&&(e.tooltip+=\"right\"===s.value?` ${e.tooltipRight}`:` ${e.tooltipLeft}`),e}))}}(a),p=function(t,i,n){const{format:o,step:a}=e(t),s=n.value,l=n.classList,u=r((()=>o&&o.value?\"function\"==typeof o.value?{to:o.value}:d({...o.value}):d({decimals:a.value>=0?0:2}))),c=r((()=>Array.isArray(s.value)?s.value.map((e=>u.value)):u.value));return{tooltipFormat:u,tooltipsFormat:c,tooltipsMerge:(e,t,r)=>{var i=\"rtl\"===getComputedStyle(e).direction,n=\"rtl\"===e.noUiSlider.options.direction,o=\"vertical\"===e.noUiSlider.options.orientation,a=e.noUiSlider.getTooltips(),s=e.noUiSlider.getOrigins();a.forEach((function(e,t){e&&s[t].appendChild(e)})),e.noUiSlider.on(\"update\",(function(e,s,c,p,d){var f=[[]],h=[[]],m=[[]],v=0;a[0]&&(f[0][0]=0,h[0][0]=d[0],m[0][0]=u.value.to(parseFloat(e[0])));for(var g=1;gt)&&(f[++v]=[],m[v]=[],h[v]=[]),a[g]&&(f[v].push(g),m[v].push(u.value.to(parseFloat(e[g]))),h[v].push(d[g]));f.forEach((function(e,t){for(var s=e.length,u=0;u{a[c].classList.contains(e)&&a[c].classList.remove(e)}))}else a[c].style.display=\"none\",l.value.tooltipHidden.split(\" \").forEach((e=>{a[c].classList.add(e)}))}}))}))}}}(a,0,{value:l.value,classList:c.classList}),m=function(a,s,l){const{orientation:c,direction:p,tooltips:d,step:m,min:v,max:g,merge:b,id:y,disabled:S,options:x,classes:w,format:E,lazy:P,ariaLabelledby:N,aria:C}=e(a),k=l.value,V=l.initialValue,A=l.tooltipsFormat,M=l.tooltipsMerge,L=l.tooltipFormat,U=l.classList,O=t(null),D=t(null),j=t(!1),F=r((()=>{let e={cssPrefix:\"\",cssClasses:U.value,orientation:c.value,direction:p.value,tooltips:!!d.value&&A.value,connect:\"lower\",start:u(k.value)?v.value:k.value,range:{min:v.value,max:g.value}};if(m.value>0&&(e.step=m.value),Array.isArray(k.value)&&(e.connect=!0),N&&N.value||C&&Object.keys(C.value).length){let t=Array.isArray(k.value)?k.value:[k.value];e.handleAttributes=t.map((e=>Object.assign({},C.value,N&&N.value?{\"aria-labelledby\":N.value}:{})))}return E.value&&(e.ariaFormat=L.value),e})),T=r((()=>{let e={id:y&&y.value?y.value:void 0};return S.value&&(e.disabled=!0),e})),z=r((()=>Array.isArray(k.value))),H=()=>{let e=D.value.get();return Array.isArray(e)?e.map((e=>parseFloat(e))):parseFloat(e)},q=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];D.value.set(e,t)},R=e=>{s.emit(\"input\",e),s.emit(\"update:modelValue\",e),s.emit(\"update\",e)},B=()=>{D.value=f.create(O.value,Object.assign({},F.value,x.value)),d.value&&z.value&&b.value>=0&&M(O.value,b.value,\" - \"),D.value.on(\"set\",(()=>{const e=H();s.emit(\"change\",e),s.emit(\"set\",e),P.value&&R(e)})),D.value.on(\"update\",(()=>{if(!j.value)return;const e=H();z.value&&h(k.value,e)||!z.value&&k.value==e?s.emit(\"update\",e):P.value||R(e)})),D.value.on(\"start\",(()=>{s.emit(\"start\",H())})),D.value.on(\"end\",(()=>{s.emit(\"end\",H())})),D.value.on(\"slide\",(()=>{s.emit(\"slide\",H())})),D.value.on(\"drag\",(()=>{s.emit(\"drag\",H())})),O.value.querySelectorAll(\"[data-handle]\").forEach((e=>{e.onblur=()=>{O.value&&U.value.focused.split(\" \").forEach((e=>{O.value.classList.remove(e)}))},e.onfocus=()=>{U.value.focused.split(\" \").forEach((e=>{O.value.classList.add(e)}))}})),j.value=!0},_=()=>{D.value.off(),D.value.destroy(),D.value=null},$=(e,t)=>{j.value=!1,_(),B()};return i(B),n(_),o(z,$,{immediate:!1}),o(v,$,{immediate:!1}),o(g,$,{immediate:!1}),o(m,$,{immediate:!1}),o(c,$,{immediate:!1}),o(p,$,{immediate:!1}),o(d,$,{immediate:!1}),o(b,$,{immediate:!1}),o(E,$,{immediate:!1,deep:!0}),o(x,$,{immediate:!1,deep:!0}),o(w,$,{immediate:!1,deep:!0}),o(k,((e,t)=>{t&&(\"object\"==typeof t&&\"object\"==typeof e&&e&&Object.keys(t)>Object.keys(e)||\"object\"==typeof t&&\"object\"!=typeof e||u(e))&&$()}),{immediate:!1}),o(k,(e=>{if(u(e))return void q(v.value,!1);let t=H();z.value&&!Array.isArray(t)&&(t=[t]),(z.value&&!h(e,t)||!z.value&&e!=t)&&q(e,!1)}),{deep:!0}),{slider:O,slider$:D,isRange:z,sliderProps:T,init:B,destroy:_,refresh:$,update:q,reset:()=>{R(V.value)}}}(a,s,{value:l.value,initialValue:l.initialValue,tooltipFormat:p.tooltipFormat,tooltipsFormat:p.tooltipsFormat,tooltipsMerge:p.tooltipsMerge,classList:c.classList});return{...c,...p,...m}}};m.render=function(e,t,r,i,n,o){return a(),s(\"div\",l(e.sliderProps,{ref:\"slider\"}),null,16)},m.__file=\"src/Slider.vue\";export{m as default};\n","\n\n\n\n","\n\n\n\n\n","import './assets/main.css'\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport App from './App.vue'\n\nexport function formatNumber(num) {\n return Intl.NumberFormat(\"en-IN\").format(parseInt(num));\n}\n\ncreateApp(App).use(createPinia()).mount('#app')\n"],"names":["makeMap","str","expectsLowerCase","set","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","key","isModelListener","extend","remove","arr","el","i","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isDate","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","writable","looseToNumber","n","_globalThis","getGlobalThis","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","name","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","a","b","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","toDisplayString","replacer","_key","entries","val2","stringifySymbol","v","_a","activeEffectScope","EffectScope","detached","currentEffectScope","fromParent","l","last","effectScope","recordEffectScope","effect","scope","getCurrentScope","onScopeDispose","activeEffect","ReactiveEffect","trigger","scheduler","pauseTracking","dep","triggerComputed","resetTracking","lastShouldTrack","shouldTrack","lastEffect","preCleanupEffect","postCleanupEffect","computed","effect2","cleanupDepEffect","trackId","pauseScheduleStack","trackStack","pauseScheduling","resetScheduling","queueEffectSchedulers","trackEffect","debuggerEventExtraInfo","oldDep","triggerEffects","dirtyLevel","tracking","createDep","cleanup","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","track","target","type","depsMap","newValue","oldTarget","deps","newLength","key2","getDepFromReactive","object","isNonTrackableKeys","builtInSymbols","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","toRaw","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","isShallow","hadKey","result","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","get","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","has","size","add","get2","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","isKeyOnly","innerIterator","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","shallow","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","raw","markRaw","ComputedRefImpl","getter","_setter","isSSR","triggerRefValue","self","trackRefValue","getterOrOptions","debugOptions","setter","onlyGetter","ref2","newVal","r","ref","createRef","rawValue","RefImpl","__v_isShallow","useDirectValue","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","source","defaultValue","callWithErrorHandling","instance","err","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJob","middleJobId","getId","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","comparator","diff","emit","event","rawArgs","props","modelArg","modifiersKey","number","trim","handlerName","handler","onceHandler","normalizeEmitsOptions","comp","appContext","asMixin","cached","hasExtends","extendEmits","raw2","normalizedFromExtend","isEmitListener","options","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","renderComponentRoot","Component","vnode","withProxy","propsOptions","slots","attrs","render","renderCache","data","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","thisProxy","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","root","keys","shapeFlag","filterModelListeners","cloneVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","updateHOCHostEl","parent","NULL_DYNAMIC_COMPONENT","isSuspense","queueEffectWithSuspense","suspense","ssrContextKey","useSSRContext","inject","INITIAL_WATCHER_VALUE","watch","doWatch","immediate","deep","flush","once","onTrack","onTrigger","_cb","unwatch","currentInstance","reactiveGetter","source2","traverse","forceTrigger","isMultiSource","s","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","reset","setCurrentInstance","path","segments","depth","withDirectives","directives","getExposeProxy","bindings","dir","modifiers","invokeDirectiveHook","oldBindings","binding","hook","isAsyncWrapper","isKeepAlive","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","current","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","hooks","createHook","lifecycle","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","renderList","renderItem","index","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","hasSetupBinding","state","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","descriptor","normalizePropsOrEmits","applyOptions","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","resolveInjections","methodHandler","opt","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","h","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","m","mergeOptions","to","from","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","namespace","lastApp","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","internalObjectProto","createInternalObject","isInternalObject","initProps","rawProps","isStateful","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","normalizePropsOptions","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","expectedTypes","t","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","children","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","refs","_isString","_isRef","doSet","existing","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","isSameVNodeType","getNextHostNode","unmount","Text","processText","processCommentNode","Static","mountStaticNode","Fragment","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","next","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","resolveChildrenNamespace","setScopeId","unmountChildren","invokeVNodeHook","needCallTransitionHooks","needTransition","scopeId","subTree","parentVNode","child","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","updateComponentPreRender","componentUpdateFn","bu","u","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","update","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","currentNamespace","allowed","ch1","ch2","len","arrI","subComponent","isTeleport","currentBlock","openBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","createBlock","isVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","style","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","createTextVNode","text","flag","createStaticVNode","content","numberOfNodes","createCommentVNode","asBlock","slot","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","createSetupContext","resolvedResult","handleSetupResult","e","finishComponentSetup","compile","skipOptions","template","isCustomElement","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","attrsProxyHandlers","computed$1","svgNS","mathmlNS","doc","templateContainer","nodeOps","tag","is","node","selector","before","wrapper","vtcKey","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","setDisplay","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","isNativeOn","patchProp","shouldSetAsProp","getModelAssigner","onCompositionStart","onCompositionEnd","assignKey","vModelText","lazy","castToNumber","domValue","elValue","vModelRadio","getValue","systemModifiers","modifierGuards","withModifiers","cacheKey","guard","rendererOptions","renderer","ensureRenderer","createApp","mount","containerOrSelector","normalizeContainer","resolveRootNamespace","isVue2","activePinia","setActivePinia","pinia","piniaSymbol","o","MutationType","createPinia","_p","toBeInstalled","noop","addSubscription","subscriptions","removeSubscription","idx","triggerSubscriptions","fallbackRunWithContext","mergeReactiveObjects","patchToApply","subPatch","targetValue","skipHydrateSymbol","shouldHydrate","assign","isComputed","createOptionsStore","hot","actions","getters","initialState","store","localState","computedGetters","createSetupStore","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","$reset","newState","$state","$dispose","wrapAction","action","afterCallbackList","onErrorCallbackList","after","onError","error","partialStore","stopWatcher","setupStore","actionValue","extender","defineStore","idOrOptions","setupOptions","isSetupStore","useStore","hasContext","bind","toString","getPrototypeOf","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isBuffer","isArrayBuffer","isArrayBufferView","isNumber","prototype","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","forEach","allOwnKeys","findKey","_global","isContextDefined","merge","caseless","assignValue","targetKey","stripBOM","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","endsWith","searchString","position","lastIndex","toArray","isTypedArray","TypedArray","forEachEntry","iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","p1","p2","isRegExp","reduceDescriptors","reducer","reducedDescriptors","freezeMethods","toObjectSet","arrayOrString","delimiter","define","toFiniteNumber","ALPHA","DIGIT","ALPHABET","generateString","alphabet","length","isSpecCompliantForm","toJSONObject","stack","visit","reducedValue","isAsyncFn","isThenable","utils$2","AxiosError","message","code","config","request","response","utils","customProps","axiosError","httpAdapter","isVisitable","removeBrackets","renderKey","dots","token","isFlatArray","predicates","toFormData","formData","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","encode","charMap","match","AxiosURLSearchParams","params","encoder","_encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","parser","defaults","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","matcher","deleted","deleteHeader","format","targets","asStrings","first","accessors","defineAccessor","mapped","headerValue","transformData","isCancel","CanceledError","settle","resolve","reject","validateStatus","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","isURLSameOrigin","msie","urlParsingNode","originURL","resolveURL","href","requestURL","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","isXHRAdapterSupported","xhrAdapter","requestData","requestHeaders","responseType","withXSRFToken","onCanceled","username","password","fullPath","onloadend","responseHeaders","timeoutErrorMessage","xsrfValue","cancel","protocol","knownAdapters","renderReason","reason","isResolvedHandle","adapter","adapters$1","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","VERSION","validators","deprecatedWarnings","validator","formatMessage","desc","opts","assertOptions","schema","allowUnknown","Axios","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","onfulfilled","_resolve","spread","isAxiosError","payload","HttpStatusCode","createInstance","defaultConfig","axios","promises","dataStore","output","inputSimple","inputAdvanced","compute","isSimpleInput","input","cleanInput","createScheduleObject","addDepositSchedule","addWithdrawalSchedule","addGoal","deleteDepositSchedule","deleteWithdrawalSchedule","deleteGoal","storeDataLocally","retrieveDataLocally","clearData","cleanNumber","num","amount","__props","__emit","emitValue","caret","new_value","round","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","h2","eq","isShort","hexParse","alpha","f","hexString","HUE_RE","hsl2rgbn","k","hsv2rgbn","hwb2rgbn","rgb","hueValue","d","max","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","rotate","deg","hslString","map","names$1","unpack","unpacked","tkeys","ok","nk","names","nameParse","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","ratio","clone","proto","fromObject","functionParse","Color","color","weight","w2","w1","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","_splitKey","parts","part","_getKeyResolver","resolveObjectKey","_capitalize","defined","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","x","y","epsilon","niceNum","range","roundedRange","niceRange","fraction","_factorize","sqrt","almostWhole","rounded","_setMinAndMaxByKey","array","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","hi","lo","mid","_lookupByKey","ti","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","unlistenArrayEvents","stub","listeners","_arrayUnique","items","requestAnimFrame","throttled","argsToUse","ticking","debounce","delay","timeout","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","iScale","_parsed","axis","minDefined","maxDefined","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","changed","atEdge","elasticIn","elasticOut","effects","isPatternOrGradient","getHoverColor","numbers","colors","applyAnimationsDefaults","applyLayoutsDefaults","intlCache","getNumberFormat","locale","formatter","formatNumber","formatters","tickValue","ticks","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","remain","Ticks","applyScaleDefaults","_ctx","overrides","getScope$1","Defaults","_descriptors","_appliers","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","appliers","apply","toFontString","font","_measureText","gc","longest","string","textWidth","_longestText","arrayOfThings","jlen","nestedThing","gcLen","_alignPixel","chart","pixel","width","devicePixelRatio","halfWidth","clearCanvas","canvas","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","rotation","radius","rad","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","mode","midpoint","_bezierCurveTo","setRenderOpts","decorateText","metrics","left","right","top","bottom","yDecoration","drawBackdrop","oldColor","renderText","lines","stroke","addRoundedRectPath","rect","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","fallback","inputs","info","_addGrace","minmax","grace","beginAtZero","change","keepZero","createContext","parentContext","_createResolver","scopes","rootScopes","getTarget","finalRootScopes","_cached","_resolveWithPrefixes","getKeysFromAllScopes","storage","_attachContext","subProxy","descriptorDefaults","_resolveWithContext","_scriptable","_indexable","_allKeys","readKey","prefix","needsSubResolver","_proxy","_context","_subProxy","_resolveScriptable","_resolveArray","_stack","createSubResolver","isIndexable","resolver","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","getValueAxis","indexAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","loop","controlPoints","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","getStyle","positions","getPositionedStyle","styles","suffix","pos","useOffsetPos","getCanvasPosition","touches","offsetX","offsetY","box","getRelativePosition","currentDevicePixelRatio","borderBox","paddings","borders","height","getContainerSize","maxWidth","maxHeight","containerStyle","containerBorder","containerPadding","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRightToLeftAdapter","rectX","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","rtl","overrideTextDirection","direction","original","restoreTextDirection","propertyFn","normalizeSegment","getSegment","segment","bounds","startBound","endBound","between","normalize","_boundSegment","compare","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","sub","findStartAndEnd","spanGaps","solidSegments","_computeSegments","segmentOptions","splitByStyles","completeLoop","doSplitByStyles","chartContext","baseStyle","readStyle","datasetIndex","addStyle","st","styleChanged","Animator","anims","date","callbacks","numSteps","remaining","draw","charts","acc","animator","transparent","interpolators","factor","c0","Animation","cfg","currentValue","elapsed","duration","rej","Animations","animationOptions","animatedProps","newOptions","resolveTargetOptions","animations","awaitAll","running","animation","properties","anim","scaleClip","scale","allowedOverflow","defaultClip","toClip","getSortedDatasetIndices","filterVisible","metasets","applyStack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","getUserBounds","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","updateStacks","controller","iAxis","vAxis","itemStacks","visualValues","getFirstScaleId","scales","createDatasetContext","createDataContext","clearStacks","isDirectUpdateMode","cloneIfNotShared","shared","createStack","canStack","DatasetController","dataset","chooseId","xid","yid","rid","iid","vid","scaleID","_data","resetNewElements","stackChanged","oldStacked","scopeKeys","_stacked","sorted","isNotInOrderComparedToPrev","labels","singleScale","xAxisKey","yAxisKey","parsedValue","otherScale","otherMin","otherMax","_skip","elements","active","drawActiveElementsOnTop","elementType","sharing","sharedOptions","firstOpts","previouslySharedOptions","includeOptions","numMeta","numData","removed","newCount","__publicField","getAllScaleValues","visibleMetas","computeMinSampleSize","curr","updateMinAndPrev","computeFitCategoryTraits","ruler","stackCount","thickness","computeFlexCategoryTraits","pixels","percent","parseFloatBar","entry","startValue","endValue","barStart","barEnd","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","borderProps","setBorderSkipped","edge","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","horizontal","vpixels","ipixels","dataIndex","skipNull","barThickness","baseValue","minBarLength","floating","startPixel","endPixel","halfGrid","maxBarThickness","center","stackIndex","rects","LineController","_dataset","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","border","lastPoint","abstract","DateAdapterBase","members","binarySearch","metaset","intersect","_sorted","lookupMethod","evaluateInteractionItems","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","includeInvisible","getNearestRadialItems","evaluationFunc","startAngle","endAngle","getNearestCartesianItems","distanceMetric","minDistance","distance","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","buildLayoutBoxes","centerHorizontal","centerVertical","getCombinedMax","maxPadding","chartArea","updateMaxPadding","boxPadding","updateDims","newWidth","newHeight","widthChanged","heightChanged","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","same","other","setBoxDims","placeBoxes","userPadding","layoutItem","minPadding","padding","availableWidth","availableHeight","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","isNullOrEmpty","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","eventListenerOptions","addListener","removeListener","fromNativeEvent","nodeListContains","nodeList","createAttachObserver","observer","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","resize","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","releaseObserver","createProxyAndListen","DomPlatform","initial","proxies","_detectPlatform","Element$1","final","autoSkip","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","spacing","calculateSpacing","avgMajorSpacing","skip","offset","tickLength","maxScale","maxChart","evenMajorSpacing","getEvenSpacing","factors","majorStart","majorEnd","reverseAlign","offsetFromEdge","getTicksLimit","ticksLength","maxTicksLimit","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","garbageCollect","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","tick","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","Element","_userMin","_userMax","_suggestedMin","_suggestedMax","metas","sampleSize","samplingEnabled","reversePixels","numTicks","minRotation","maxRotation","labelRotation","tickWidth","maxLabelDiagonal","labelSizes","maxLabelWidth","maxLabelHeight","minSize","titleOpts","gridOpts","display","isHorizontal","titleHeight","widest","highest","tickPadding","angleRadians","cos","sin","labelHeight","labelWidth","isRotated","labelsBelowTicks","offsetLeft","offsetRight","paddingLeft","paddingRight","paddingTop","paddingBottom","widths","heights","widestLabelSize","highestLabelSize","label","tickFont","fontString","lineHeight","nestedLabel","valueAt","decimal","optionTicks","rot","grid","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","optsAtIndexBorder","lineWidth","lineColor","borderDash","borderDashOffset","tickColor","tickBorderDash","tickBorderDashOffset","crossAlign","mirror","tickAndPadding","hTickAndPadding","textAlign","lineCount","textOffset","textBaseline","halfCount","strokeColor","strokeWidth","tickTextAlign","backdrop","labelPadding","backgroundColor","drawLine","lastLineWidth","renderTextOptions","title","tz","gz","bz","axisID","fontSize","TypedRegistry","override","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","Registry","typedRegistry","reg","itemReg","registry","camelMethod","PluginService","all","plugins","allPlugins","createDescriptors","previousDescriptors","localIds","getOpts","pluginOpts","getIndexAxis","datasetDefaults","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","getAxisFromDataset","retrieveAxisFromDatasets","boundDs","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","datasetType","mainScope","resetCache","_scopeCache","keyLists","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","isScriptable","scriptable","indexable","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","onAnimationsComplete","onAnimationProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","getSizeForArea","field","getDatasetArea","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","maintainAspectRatio","_aspectRatio","newSize","newRatio","scalesOptions","axisOptions","scaleOpts","isRadial","scaleType","scaleClass","hasUpdated","datasets","newControllers","ControllerClass","datasetElementType","dataElementType","animsDisabled","_active","_lastEvent","existingEvents","newEvents","_hiddenIndices","changes","_dataChanges","datasetCount","makeSet","changeSet","noArea","layers","clip","useClip","visible","_add","_remove","attached","enabled","activeElements","lastActive","pluginId","replay","hoverOptions","eventFilter","lineTo","getLineMethod","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","avgX","countX","prevX","minY","maxY","lastY","pointIndex","drawX","truncX","_getSegmentMethod","_getInterpolationMethod","strokePathWithCache","strokePathDirect","segmentMethod","usePath2D","LineElement","_interpolate","interpolated","inRange$1","PointElement","mouseX","mouseY","borderWidth","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","enableBorderRadius","maxR","enableBorder","boundingRects","skipX","skipY","hasRadius","addNormalRectPath","inflateRect","refRect","BarElement","borderColor","inner","outer","addRectPath","positioners","xSet","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","tooltip","body","footer","boxWidth","boxHeight","bodyFont","titleFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","bodyLineHeight","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","caretSize","caretPadding","topLeft","topRight","bottomLeft","bottomRight","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","defaultCallbacks","labelCount","tooltipItem","invokeCallbackWithFallback","Tooltip","beforeTitle","afterTitle","bodyItems","scoped","beforeFooter","afterFooter","labelColors","labelPointStyles","labelTextColors","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","ptX","ptY","x3","y3","titleSpacing","rtlHelper","labelColor","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","drawOptions","centerX","centerY","outerX","innerX","borderRadius","bodySpacing","bodyAlign","displayColors","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","tooltipSize","animX","animY","opacity","hasTooltipContent","positionChanged","caretX","caretY","plugin_tooltip","_args","addIfString","addedLabels","findOrAddLabel","_getLabelForValue","CategoryScale","added","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","setMin","setMax","minSign","maxSign","stepSize","numericGeneratorOptions","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","startExp","generateTicks","minExp","exp","significand","lastTick","LogarithmicScale","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","pointLabelOpts","additionalAngle","pointPosition","plFont","textSize","hLimits","vLimits","updateLimits","buildPointLabelItems","createPointLabelItem","itemOpts","outerDistance","extra","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","centerPointLabels","drawPointLabelBox","backdropColor","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","pointLabels","pathRadiusLine","circular","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","angleLines","INTERVALS","UNITS","sorter","parse","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","addTick","time","timestamp","setMajorTicks","majorUnit","major","ticksFromTimestamps","TimeScale","_applyBounds","timeOpts","minor","weekday","hasWeekday","formats","fmt","minorFormat","majorFormat","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","displayFormats","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","chartRef","chartInstance","newData","chartData","row","XLSX","current_ansi","VALID_ANSI","set_ansi","cp","reset_ansi","set_cp","reset_cp","_getchar","_getansi","$cptable","Base64_map","Base64_encode","c3","e3","e4","Base64_decode","has_buf","Buffer_from","nbfs","buf","enc","new_raw_buf","new_unsafe_buf","s2a","s2ab","view","a2s","a2u","bconcat","bufs","maxlen","utf8decode","out","widx","L","ridx","chr0","chr1","_strrev","pad0","fill","pad_","rpad_","pad0r1","pad0r2","p2_32","pad0r","SSF_isgeneral","days","months","SSF_init_table","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","q","SSF_parse_date_code","b2","dow","dout","SSF_fix_hijri","SSFbasedate","SSFdnthresh","SSFbase1904","datenum_local","date1904","epoch","SSF_strip_decimal","SSF_normalize_exp","SSF_small_exp","SSF_large_exp","SSF_general_num","V","SSF_general","SSF_format","SSF_write_date","ss0","ss","tt","outl","outstr","commaify","pct1","write_num_pct","sfmt","mul","write_num","write_num_cm","write_num_exp","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","aval","den","rr","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","cc","rnd","dd","dec","_frac","carry","flr","write_num_flt","ffmt","ri","ff","oa","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","SSF_split_fmt","in_str","SSF_abstime","fmt_is_date","eval_fmt","flen","lst","dt","hr","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","cfregex2","chkcond","thresh","choose_fmt","lat","m1","m2","SSF_load","SSF_load_table","tbl","make_ssf","dateNFregex","dateNF_regex","dateNF","dateNF_fix","Y","H","M","S","datestr","timestr","CRC32","signed_crc_table","T0","slice_by_16_tables","T","TT","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","seed","crc32_buf","crc32_str","CFB","exports","namecmp","R","Z","dirname","filename","write_dos_date","hms","ymd","parse_dos_date","parse_extra_field","blob","prep_blob","flags","sz","tgt","fs","get_fs","file","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","check_shifts","dir_cnt","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","HEADER_SIGNATURE","shift","nsectors","FI","FP","C","pl","dad","get_mfat_entry","mini","MSSZ","__readInt32LE","new_buf","cnt","sector","get_sector_list","chkd","buf_chain","modulus","addr","__toBuffer","sl","minifat_store","namelen","__utf16le","ctime","read_date","mtime","__readUInt32LE","read_file","init_cfb","cfb","seed_cfb","nm","rebuild_cfb","_file","fullPaths","HEADER_CLSID","elt","_write","_opts","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","_nm","find","UCFullPaths","UCPaths","UCPath","write_file","write","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_inflateRawSync","usz","_inflate","_deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","bl","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","off","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","dst","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","cdirs","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","get_content_type","ext","write_base64_76","write_quoted_printable","encoded","split","si","parse_quoted_printable","di","oi","parse_mime","fname","cte","ctype","fdata","mboundary","boundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","unsafe","fpath","cfb_del","cfb_mov","old_name","new_name","cfb_gc","ReadShift","CheckField","blobify","write_dl","utf8write","ks","o2","evert_key","K","evert","evert_num","evert_arr","basedate","datenum","dnthresh","refdate","refoffset","numdate","good_pd_date_1","good_pd_date","good_pd","parseDate","fixdate","cc2str","debomit","dup","fuzzynum","wt","lower_months","fuzzydate","lower","zip_add_file","zip","zip_new","XML_HEADER","encodings","rencoding","decregex","charegex","escapexml","escapexmltag","htmlcharegex","escapehtml","escapexlml","xlml_unfixstr","parsexmlbool","utf8reada","utf8readb","ww","utf8readc","utf8corpus","utf8read","htmldecode","entities","wtregex","writetag","wxt_helper","writextag","write_w3cdtf","write_vt","xlsx","XMLNS","XMLNS_main","XLMLNS","read_double_le","write_double_le","bs","av","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","__lpp4","___8lpp4","__8lpp4","___double","__double","is_buf","__readInt16LE","__readInt32BE","oI","oR","oo","loc","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","hexstr","fld","parsenoop","buf_array","blksz","newblk","curbuf","endbuf","push","write_record","ba","XLSBRecordEnum","shift_cell_xls","cell","shift_range_xls","encode_cell_xls","biff","encode_cell","fix_col","fix_row","encode_range_xls","encode_col","encode_row","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","col","split_cell","decode_cell","decode_range","encode_range","cs","ce","safe_decode_range","safe_format_cell","format_cell","BErr","sheet_to_workbook","sheet","sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","_origin","_range","__R","__C","cell_ref","aoa_to_sheet","parse_Int32LE","write_UInt32LE","parse_XLWideString","cchCharacters","write_XLWideString","_null","parse_StrRun","write_StrRun","run","parse_RichStr","rgsStrRun","z","dwSizeStrRun","write_RichStr","parse_BrtCommentText","write_BrtCommentText","parse_XLSBCell","iStyleRef","write_XLSBCell","parse_XLSBShortCell","write_XLSBShortCell","parse_XLSBCodeName","write_XLSBCodeName","parse_XLNullableWideString","write_XLNullableWideString","parse_XLNameWideString","parse_RelID","write_RelID","parse_RkNumber","fX100","fInt","RK","write_RkNumber","d100","parse_RfX","write_RfX","parse_UncheckedRfX","write_UncheckedRfX","parse_Xnum","write_Xnum","parse_BrtColor","xColorType","nTS","bR","bG","bB","icv","XLSIcv","rgb2Hex","write_BrtColor","parse_FontFlags","write_FontFlags","grbit","VT_I2","VT_I4","VT_BOOL","VT_UI4","VT_FILETIME","VT_BLOB","VT_CF","VT_VECTOR_VARIANT","VT_VECTOR_LPSTR","VT_STRING","DocSummaryPIDDSI","SummaryPIDSI","rgbify","_XLSIcv","ct2type","CT_LIST","new_ct","write_ct","ct","type2ct","f1","f2","f3","RELS","get_rels_path","write_rels","rels","add_rels","rId","relobj","targetmode","write_manifest","manifest","write_rdf_type","write_rdf_has","write_rdf","rdf","write_meta_ods","CORE_PROPS","cp_doit","write_core_props","EXT_PROPS","PseudoPropsPairs","write_ext_props","W","write_cust_props","pid","XLMLDocPropsMap","xlml_write_docprops","Props","xlml_write_custprops","Custprops","BLACKLIST","write_FILETIME","write_TypedPropertyValue","XLSPSSkip","guess_property_type","write_PropertySet","RE","PIDSI","hdr","piao","pr","pio","pinfo","write_PropertySetStream","clsid","entries2","clsid2","ps0","ps1","writezeroes","parsebool","writebool","parseuint16","writeuint16","write_Bes","parse_ShortXLUnicodeString","cch","encoding","fHighByte","write_XLUnicodeRichExtendedString","xlstr","otext","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","write_XLUnicodeString","write_HyperlinkString","write_Hyperlink","hl","Target","hashidx","F","Pretarget","write_XLSCell","ixfe","parse_XTI","iSupBook","itabFirst","itabLast","parse_Ref8U","rwFirst","rwLast","colFirst","colLast","write_Ref8U","write_BOF","wb","write_WriteAccess","b8","write_BoundSheet8","write_SST","sst","strs","write_Window1","write_Window2","write_Font","b5","write_LabelSst","os","write_Label","write_Format","write_Dimensions","write_XF","ixfeP","write_Guts","guts","write_BoolErr","write_Number","parse_ExternSheet","parse_BIFF5ExternSheet","write_MergeCells","merges","write_HLink","O","write_HLinkTooltip","write_Country","parse_ColInfo","coldx","write_ColInfo","write_RRTabId","write_BIFF2NUM","write_BIFF2Cell","write_BIFF2INT","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_aoa","ft","memo","vfp","l7","nrow","fpos","rlen","current_cp","fields","hend","dbf_to_sheet","dbf_to_workbook","_RLEN","sheet_to_dbf","aoa","sheet_to_json","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","_f","hb","rout","_n","_s","SYLK","sylk_escapes","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","RT","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","process_col","pt2px","sylk_to_sheet","aoasht","sylk_to_workbook","write_ws_cell_sylk","a1_to_rc","write_ws_cols_sylk","rec","width2px","px2char","write_ws_rows_sylk","rows","px2pt","sheet_to_sylk","preamble","RS","coord","DIF","dif_to_aoa","dif_to_aoa_str","metadata","dif_to_sheet","dif_to_workbook","sheet_to_dif","push_field","topic","push_value","ETH","decode","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","sheet_to_eth_data","sheet_to_eth","PRN","set_text_arr","prn_to_aoa_str","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","sepcc","startcc","_re","finish_cell","fuzzyfmla","prn_to_sheet_str","prn_to_sheet","firstbyte","prn_to_workbook","sheet_to_prn","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","sheetRows","tmpcell","WK3Enum","osheets","rnames","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","write_INTEGER","write_NUMBER","write_LABEL","book_to_wk3","write_BOF_WK3","write_XFORMAT_SHEETNAME","wsidx","write_NUMBER_17","write_LABEL_16","wscnt","parse_RANGE","parse_cell","parse_LABEL","parse_INTEGER","parse_NUMBER","parse_FORMULA","wk1_fmla_to_csf","wk1_parse_rc","rel","FuncTab","BinOpTab","argc","argL","argR","parse_cell_3","parse_LABEL_16","parse_NUMBER_18","parse_NUMBER_17","parse_FORMULA_19","parse_NUMBER_25","parse_NUMBER_27","parse_FORMULA_28","parse_SHEETNAMECS","parse_SHEETNAMELP","parse_SHEETINFOQP","parse_XFORMAT","straywsregex","write_sst_xml","sitag","parse_BrtBeginSst","write_BrtBeginSst","write_BrtSSTItem","write_sst_bin","_JS2ANSI","crypto_CreatePasswordVerifier_Method1","Password","Verifier","PasswordArray","PasswordDecoded","PasswordByte","Intermediate1","Intermediate2","Intermediate3","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","rtf_to_workbook","sheet_to_rtf","DEF_MDW","MDW","px","char2width","chr","coll","DEF_PPI","PPI","write_numFmts","NF","write_cellXfs","cellXfs","write_sty_xml","parse_BrtFmt","numFmtId","stFmtCode","write_BrtFmt","parse_BrtFont","bls","underline","family","bCharSet","write_BrtFont","sss","scheme","XLSBFillPTNames","rev_XLSBFillPTNames","parse_BrtFill","write_BrtFill","fls","parse_BrtXF","ixfeParent","ifmt","write_BrtXF","flow","write_Blxf","parse_BrtBorder","write_BrtBorder","write_BrtStyle","write_BrtBeginTableStyles","defTableStyle","defPivotStyle","write_FMTS_bin","write_FONTS_bin","write_FILLS_bin","write_BORDERS_bin","write_CELLSTYLEXFS_bin","write_CELLXFS_bin","write_STYLES_bin","write_DXFS_bin","write_TABLESTYLES_bin","write_sty_bin","write_theme","Themes","parse_BrtMdtinfo","write_BrtMdtinfo","parse_BrtMdb","write_BrtMdb","mdb","write_BrtBeginEsfmd","parse_BrtBeginEsmdb","write_BrtBeginEsmdb","cm","write_xlmeta_bin","write_xlmeta_xml","parse_BrtCalcChainItem$","_shapeid","write_comments_vml","comments","csize","bbox","fillopts","fillparm","fillxml","shadata","write_comments_xml","iauthor","lastauthor","ts","write_tcmnt_xml","people","carr","rootid","tcopts","write_people_xml","person","parse_BrtBeginComment","rfx","write_BrtBeginComment","parse_BrtCommentAuthor","write_BrtCommentAuthor","write_comments_bin","comment","fill_vba_xls","vba","newpath","VBAFMTS","rcregex","rcbase","rcfunc","cRel","rRel","fstr","crefregex","$0","$4","$5","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceAreaRel","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","parse_RgceLocRel","parse_RgceLocRel_BIFF2","cl","rl","parse_PtgArea","parse_PtgArea3d","ixti","parse_PtgAreaErr","parse_PtgAreaErr3d","parse_PtgAreaN","parse_PtgArray","parse_PtgAttrBaxcel","bitSemi","bitBaxcel","parse_PtgAttrChoose","parse_PtgAttrGoto","bitGoto","parse_PtgAttrIf","bitIf","parse_PtgAttrIfError","parse_PtgAttrSemi","parse_PtgAttrSpaceType","parse_PtgAttrSpace","parse_PtgAttrSpaceSemi","parse_PtgRef","parse_PtgRefN","parse_PtgRef3d","parse_PtgFunc","iftab","FtabArgc","Ftab","parse_PtgFuncVar","cparams","tab","parsetab","Cetab","parse_PtgAttrSum","parse_PtgExp","parse_PtgErr","parse_PtgInt","parse_PtgBool","parse_PtgNum","parse_PtgStr","parse_SerAr","parse_PtgExtraMem","cce","parse_PtgExtraArray","parse_PtgName","nameindex","parse_PtgNameX","parse_PtgNameX_BIFF5","parse_PtgMemArea","parse_PtgMemFunc","parse_PtgRefErr","parse_PtgRefErr3d","parse_PtgMemErr","parse_PtgMemNoMem","parse_PtgTbl","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfCol","parse_PtgElfColS","parse_PtgElfColSV","parse_PtgElfColV","parse_PtgElfLel","parse_PtgElfRadical","parse_PtgElfRadicalLel","parse_PtgElfRadicalS","parse_PtgElfRw","parse_PtgElfRwV","PtgListRT","parse_PtgList","rt","parse_PtgSxName","parse_PtgSheet","parse_PtgEndSheet","parse_PtgMemAreaN","parse_PtgMemNoMemN","parse_PtgAttrNoop","PtgTypes","PtgDupes","Ptg18","Ptg19","parse_RgbExtra","rgce","parse_Rgce","ptgs","stringify_array","PtgBinOp","formula_quote_sheet_name","sname","get_ixti_raw","supbooks","XTI","get_ixti","ixtiraw","stringify_formula","nameidx","last_sp","sp","fflen","func","lbl","bookidx","externbook","ixtidata","lp","rp","parsedf","fnd","PtgNonDisp","_left","write_FormulaValue","write_Formula","o1","o3","bf","parse_XLSBParsedFormula","rgcb","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","csf_to_ods_formula","csf_to_ods_3D","browser_has_Map","get_sst_id","revarr","col_obj_w","wch","default_margins","defs","get_cell_style","check_ws","write_ws_xml_merges","write_ws_xml_sheetpr","needed","cname","outlineprops","sheetprot_deffalse","sheetprot_deftrue","write_ws_xml_protection","write_ws_xml_margins","write_ws_xml_cols","write_ws_xml_autofilter","write_ws_xml_sheetviews","sview","write_ws_xml_cell","oldt","oldv","write_ws_xml_data","_cell","write_ws_xml","rdata","_drawing","relc","parse_BrtRowHdr","miyRw","write_BrtRowHdr","ncolspan","lcs","caddr","write_row_header","parse_BrtWsDim","write_BrtWsDim","parse_BrtWsFmtInfo","parse_BrtWsProp","write_BrtWsProp","parse_BrtCellBlank","write_BrtCellBlank","ncell","parse_BrtShortBlank","write_BrtShortBlank","parse_BrtCellBool","fBool","write_BrtCellBool","parse_BrtShortBool","write_BrtShortBool","parse_BrtCellError","bError","write_BrtCellError","parse_BrtShortError","write_BrtShortError","parse_BrtCellIsst","isst","write_BrtCellIsst","parse_BrtShortIsst","write_BrtShortIsst","parse_BrtCellReal","write_BrtCellReal","parse_BrtShortReal","write_BrtShortReal","parse_BrtCellRk","write_BrtCellRk","parse_BrtShortRk","write_BrtShortRk","parse_BrtCellRString","parse_BrtCellSt","write_BrtCellSt","parse_BrtShortSt","write_BrtShortSt","parse_BrtFmlaBool","parse_BrtFmlaError","parse_BrtFmlaNum","parse_BrtFmlaString","parse_BrtMergeCell","write_BrtMergeCell","write_BrtBeginMergeCells","parse_BrtHLink","relId","write_BrtHLink","locidx","parse_BrtPane","parse_BrtArrFmla","fAlwaysCalc","parse_BrtShrFmla","write_BrtColInfo","BrtMarginKeys","parse_BrtMargins","write_BrtMargins","parse_BrtBeginWsView","write_BrtBeginWsView","Workbook","write_BrtCellIgnoreEC","write_BrtSheetProtection","parse_BrtDVal","parse_BrtDVal14","write_ws_bin_cell","last_seen","write_CELLTABLE","cap","write_MERGECELLS","write_COLINFOS","write_IGNOREECS","write_HLINKS","write_LEGACYDRAWING","write_AUTOFILTER","write_WSVIEWS2","write_SHEETPROTECT","write_ws_bin","parse_BrtCsProp","WBPropsDef","safe1904","badchars","check_ws_name","safe","_good","check_wb_names","N","codes","cn","check_wb","Sheets","write_wb_xml","write_names","workbookPr","parse_BrtBundleSh","write_BrtBundleSh","parse_BrtWbProp","strName","write_BrtWbProp","parse_BrtName","itab","write_BUNDLESHS","viz","write_BrtFileVersion","write_BrtBookView","write_BOOKVIEWS","vistab","hidden","write_wb_bin","write_wb","write_ws","write_sty","write_sst","write_cmnt","write_xlmeta","write_props_xlml","write_wb_xlml","write_sty_xlml","xf","write_name_xlml","write_names_xlml","write_ws_xlml_names","write_ws_xlml_wsopts","write_ws_xlml_comment","write_ws_xlml_cell","attr","marr","mi","_v","write_ws_xlml_row","write_ws_xlml_table","write_ws_xlml","write_xlml","PSCLSID","write_xls_props","DSEntries","SEntries","CEntries","Keys","DocSummaryRE","SummaryRE","CEntries2","write_xlscfb","wbpath","write_biff_buf","write_biff_continue","write_BIFF2BERR","write_BIFF2LABEL","write_ws_biff2_cell","write_ws_biff2","write_biff2_buf","write_FONTS_biff8","write_FMTS_biff8","write_FEAT","write_CELLXFS_biff8","write_ws_biff8_hlinks","HL","write_ws_cols_biff8","write_ws_biff8_cell","write_ws_biff8","_WB","_sheet","MAX_ROWS","write_biff8_global","_sheets","_wb","blen","write_biff8_buf","fix_write_opts","make_html_row","CS","HTML_BEGIN","HTML_END","make_html_preamble","sheet_to_html","sheet_add_dom","or_R","or_C","midx","is_dom_element_hidden","elts","_t","Aelts","Aelti","parse_dom_table","table_to_book","get_computed_style","get_get_computed_style_function","write_styles_ods","master_styles","write_content_ods","write_text_p","null_cell_xml","covered_cell_xml","ROWS","textp","_Fref","text_p","_tgt","write_automatic_styles_ods","cidx","colobj","fods","write_ods","u8_to_dataview","stru8","u8contains","search","u8concat","u8a","u8","writeDecimal128LE","mantissa","parse_varint49","ptr","varint","write_varint49","varint_to_i32","i32","parse_shallow","write_shallow","parse_iwa_file","ai","fl","write_iwa_file","ias","ia","midata","aipayload","parse_snappy_chunk","chunks","decompress_iwa_file","compress_iwa_file","frame","write_new_storage","dv","write_old_storage","parse_TSP_Reference","pb","write_tile_row","tri","SST","_b","_c","_d","wide_offsets","last_offset","cell_storage","_dv","_last_offset","_cell_storage","celload","_celload","write_numbers_iwa","trunc","dependents","indices","old_content","raw1","packet2","indices_varint","ivi","mess","docroot","xi","packet","sheetrootref","cruidsref","oldbucket","_x","cruids","uuid","row_headers","row_header_ref","base_bucket","_bucket","col_header_ref","sstref","sentry","sx","sstroot","sxi","sstdata","newsst","sy","raw32","tile","tileref","tentry","tx","tileroot","tiledata","rowload","R2","tilerow","ty","raw3","fix_opts_func","write_zip_xlsxb","write_zip_xlsx","wbext","vbafmt","_sn","_i","wsrels","_type","need_vml","cf","needtc","write_cfb_ctr","write_zip_type","write_zip_denouement","oopts","ftype","write_cfb_type","write_string_type","bom","write_stxt_type","write_binary_type","writeSync","sheet_to_txt","sheet_to_csv","make_json_row","defval","isempty","outi","counter","header_cnt","qreg","make_csv_row","rs","FS","txt","endregex","sheet_to_formulae","cmds","sheet_add_json","js","JS","ws_get_cell_stub","json_to_sheet","RC","wb_sheet_idx","sh","book_new","book_append_sheet","roll","book_set_sheet_visibility","vis","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","author","sheet_set_array_formula","dynamic","rng","rngstr","exportData","exportToExcel","worksheet","XLSX.utils","workbook","excelBuffer","XLSX.write","saveAsExcelFile","buffer","fileName","link","subtle","generateKey","algorithm","encrypt","sha256","getKeyString","retreiveKeyfromString","keyString","decrypt","encrypted","cryptoKey","decrypted","makeShareAddUrl","urlParams","getOrGenerateKey","share","objectKey","init","E","U","$","X","I","G","J","te","re","ie","ne","oe","ae","fe","ge","me","ye","se","ue","le","xe","Pe","Ne","be","pe","de","Oe","he","ve","Se","we","Ee","Ce","ke","Ve","Ae","Me","Le","Ue","De","je","Fe","currentTab","App"],"mappings":"m3BAAA;AAAA;AAAA;AAAA;AAAA,GAKA,2BAEA,SAASA,GAAQC,EAAKC,EAAkB,CACtC,MAAMC,EAAM,IAAI,IAAIF,EAAI,MAAM,GAAG,CAAC,EAClC,OAAiEG,GAAQD,EAAI,IAAIC,CAAG,CACtF,CAEA,MAAMC,GAA4E,CAAA,EAC5EC,GAA4E,CAAA,EAC5EC,GAAO,IAAM,CACnB,EACMC,GAAK,IAAM,GACXC,GAAQC,GAAQA,EAAI,WAAW,CAAC,IAAM,KAAOA,EAAI,WAAW,CAAC,IAAM,MACxEA,EAAI,WAAW,CAAC,EAAI,KAAOA,EAAI,WAAW,CAAC,EAAI,IAC1CC,GAAmBD,GAAQA,EAAI,WAAW,WAAW,EACrDE,GAAS,OAAO,OAChBC,GAAS,CAACC,EAAKC,IAAO,CACpB,MAAAC,EAAIF,EAAI,QAAQC,CAAE,EACpBC,EAAI,IACFF,EAAA,OAAOE,EAAG,CAAC,CAEnB,EACMC,GAAiB,OAAO,UAAU,eAClCC,GAAS,CAACd,EAAKM,IAAQO,GAAe,KAAKb,EAAKM,CAAG,EACnDS,GAAU,MAAM,QAChBC,GAAShB,GAAQiB,GAAajB,CAAG,IAAM,eACvCkB,GAASlB,GAAQiB,GAAajB,CAAG,IAAM,eACvCmB,GAAUnB,GAAQiB,GAAajB,CAAG,IAAM,gBAExCoB,GAAcpB,GAAQ,OAAOA,GAAQ,WACrCqB,GAAYrB,GAAQ,OAAOA,GAAQ,SACnCsB,GAAYtB,GAAQ,OAAOA,GAAQ,SACnCuB,GAAYvB,GAAQA,IAAQ,MAAQ,OAAOA,GAAQ,SACnDwB,GAAaxB,IACTuB,GAASvB,CAAG,GAAKoB,GAAWpB,CAAG,IAAMoB,GAAWpB,EAAI,IAAI,GAAKoB,GAAWpB,EAAI,KAAK,EAErFyB,GAAiB,OAAO,UAAU,SAClCR,GAAgBS,GAAUD,GAAe,KAAKC,CAAK,EACnDC,GAAaD,GACVT,GAAaS,CAAK,EAAE,MAAM,EAAG,EAAE,EAElCE,GAAiB5B,GAAQiB,GAAajB,CAAG,IAAM,kBAC/C6B,GAAgBvB,GAAQe,GAASf,CAAG,GAAKA,IAAQ,OAASA,EAAI,CAAC,IAAM,KAAO,GAAK,SAASA,EAAK,EAAE,IAAMA,EACvGwB,GAAiClC,GAErC,qIACF,EAIMmC,GAAuBC,GAAO,CAC5B,MAAAC,EAA+B,OAAA,OAAO,IAAI,EAChD,OAAQpC,GACMoC,EAAMpC,CAAG,IACNoC,EAAMpC,CAAG,EAAImC,EAAGnC,CAAG,EAEtC,EACMqC,GAAa,SACbC,GAAWJ,GAAqBlC,GAC7BA,EAAI,QAAQqC,GAAY,CAACE,EAAGC,IAAMA,EAAIA,EAAE,YAAY,EAAI,EAAE,CAClE,EACKC,GAAc,aACdC,GAAYR,GACflC,GAAQA,EAAI,QAAQyC,GAAa,KAAK,EAAE,YAAY,CACvD,EACME,GAAaT,GAAqBlC,GAC/BA,EAAI,OAAO,CAAC,EAAE,cAAgBA,EAAI,MAAM,CAAC,CACjD,EACK4C,GAAeV,GAAqBlC,GAC9BA,EAAM,KAAK2C,GAAW3C,CAAG,CAAC,GAAK,EAE1C,EACK6C,GAAa,CAAChB,EAAOiB,IAAa,CAAC,OAAO,GAAGjB,EAAOiB,CAAQ,EAC5DC,GAAiB,CAACC,EAAKC,IAAQ,CACnC,QAASlC,EAAI,EAAGA,EAAIiC,EAAI,OAAQjC,IAC1BiC,EAAAjC,CAAC,EAAEkC,CAAG,CAEd,EACMC,GAAM,CAACC,EAAK1C,EAAKoB,EAAOuB,EAAW,KAAU,CAC1C,OAAA,eAAeD,EAAK1C,EAAK,CAC9B,aAAc,GACd,WAAY,GACZ,SAAA2C,EACA,MAAAvB,CAAA,CACD,CACH,EACMwB,GAAiBlD,GAAQ,CACvB,MAAAmD,EAAI,WAAWnD,CAAG,EACjB,OAAA,MAAMmD,CAAC,EAAInD,EAAMmD,CAC1B,EAKA,IAAIC,GACJ,MAAMC,GAAgB,IACbD,KAAgBA,GAAc,OAAO,WAAe,IAAc,WAAa,OAAO,KAAS,IAAc,KAAO,OAAO,OAAW,IAAc,OAAS,OAAO,OAAW,IAAc,OAAS,CAAA,GAyI/M,SAASE,GAAe5B,EAAO,CACzB,GAAAX,GAAQW,CAAK,EAAG,CAClB,MAAM6B,EAAM,CAAA,EACZ,QAAS3C,EAAI,EAAGA,EAAIc,EAAM,OAAQd,IAAK,CAC/B,MAAA4C,EAAO9B,EAAMd,CAAC,EACd6C,EAAapC,GAASmC,CAAI,EAAIE,GAAiBF,CAAI,EAAIF,GAAeE,CAAI,EAChF,GAAIC,EACF,UAAWnD,KAAOmD,EACZF,EAAAjD,CAAG,EAAImD,EAAWnD,CAAG,CAG/B,CACO,OAAAiD,UACElC,GAASK,CAAK,GAAKH,GAASG,CAAK,EACnC,OAAAA,CAEX,CACA,MAAMiC,GAAkB,gBAClBC,GAAsB,UACtBC,GAAiB,iBACvB,SAASH,GAAiBI,EAAS,CACjC,MAAMC,EAAM,CAAA,EACJ,OAAAD,EAAA,QAAQD,GAAgB,EAAE,EAAE,MAAMF,EAAe,EAAE,QAASH,GAAS,CAC3E,GAAIA,EAAM,CACF,MAAAQ,EAAMR,EAAK,MAAMI,EAAmB,EAC1CI,EAAI,OAAS,IAAMD,EAAIC,EAAI,CAAC,EAAE,KAAK,CAAC,EAAIA,EAAI,CAAC,EAAE,KAAK,EACtD,CAAA,CACD,EACMD,CACT,CAeA,SAASE,GAAevC,EAAO,CAC7B,IAAI6B,EAAM,GACN,GAAAlC,GAASK,CAAK,EACV6B,EAAA7B,UACGX,GAAQW,CAAK,EACtB,QAASd,EAAI,EAAGA,EAAIc,EAAM,OAAQd,IAAK,CACrC,MAAM6C,EAAaQ,GAAevC,EAAMd,CAAC,CAAC,EACtC6C,IACFF,GAAOE,EAAa,IAExB,SACSlC,GAASG,CAAK,EACvB,UAAWwC,KAAQxC,EACbA,EAAMwC,CAAI,IACZX,GAAOW,EAAO,KAIpB,OAAOX,EAAI,MACb,CAuBA,MAAMY,GAAsB,8EACtBC,MAA+CD,EAAmB,EAIxE,SAASE,GAAmB3C,EAAO,CAC1B,MAAA,CAAC,CAACA,GAASA,IAAU,EAC9B,CA6EA,SAAS4C,GAAmBC,EAAGC,EAAG,CAC5B,GAAAD,EAAE,SAAWC,EAAE,OACV,MAAA,GACT,IAAIC,EAAQ,GACZ,QAAS7D,EAAI,EAAG6D,GAAS7D,EAAI2D,EAAE,OAAQ3D,IACrC6D,EAAQC,GAAWH,EAAE3D,CAAC,EAAG4D,EAAE5D,CAAC,CAAC,EAExB,OAAA6D,CACT,CACA,SAASC,GAAWH,EAAGC,EAAG,CACxB,GAAID,IAAMC,EACD,MAAA,GACL,IAAAG,EAAaxD,GAAOoD,CAAC,EACrBK,EAAazD,GAAOqD,CAAC,EACzB,GAAIG,GAAcC,EAChB,OAAOD,GAAcC,EAAaL,EAAE,QAAc,IAAAC,EAAE,QAAY,EAAA,GAIlE,GAFAG,EAAarD,GAASiD,CAAC,EACvBK,EAAatD,GAASkD,CAAC,EACnBG,GAAcC,EAChB,OAAOL,IAAMC,EAIf,GAFAG,EAAa5D,GAAQwD,CAAC,EACtBK,EAAa7D,GAAQyD,CAAC,EAClBG,GAAcC,EAChB,OAAOD,GAAcC,EAAaN,GAAmBC,EAAGC,CAAC,EAAI,GAI/D,GAFAG,EAAapD,GAASgD,CAAC,EACvBK,EAAarD,GAASiD,CAAC,EACnBG,GAAcC,EAAY,CACxB,GAAA,CAACD,GAAc,CAACC,EACX,MAAA,GAET,MAAMC,EAAa,OAAO,KAAKN,CAAC,EAAE,OAC5BO,EAAa,OAAO,KAAKN,CAAC,EAAE,OAClC,GAAIK,IAAeC,EACV,MAAA,GAET,UAAWxE,KAAOiE,EAAG,CACb,MAAAQ,EAAUR,EAAE,eAAejE,CAAG,EAC9B0E,EAAUR,EAAE,eAAelE,CAAG,EACpC,GAAIyE,GAAW,CAACC,GAAW,CAACD,GAAWC,GAAW,CAACN,GAAWH,EAAEjE,CAAG,EAAGkE,EAAElE,CAAG,CAAC,EACnE,MAAA,EAEX,CACF,CACA,OAAO,OAAOiE,CAAC,IAAM,OAAOC,CAAC,CAC/B,CAKA,MAAMS,GAAmBjF,GAChBqB,GAASrB,CAAG,EAAIA,EAAMA,GAAO,KAAO,GAAKe,GAAQf,CAAG,GAAKuB,GAASvB,CAAG,IAAMA,EAAI,WAAayB,IAAkB,CAACL,GAAWpB,EAAI,QAAQ,GAAK,KAAK,UAAUA,EAAKkF,GAAU,CAAC,EAAI,OAAOlF,CAAG,EAE3LkF,GAAW,CAACC,EAAMnF,IAClBA,GAAOA,EAAI,UACNkF,GAASC,EAAMnF,EAAI,KAAK,EACtBgB,GAAMhB,CAAG,EACX,CACL,CAAC,OAAOA,EAAI,IAAI,GAAG,EAAG,CAAC,GAAGA,EAAI,QAAS,CAAA,EAAE,OACvC,CAACoF,EAAS,CAAC9E,EAAK+E,CAAI,EAAGzE,KACrBwE,EAAQE,GAAgBhF,EAAKM,CAAC,EAAI,KAAK,EAAIyE,EACpCD,GAET,CAAC,CACH,CAAA,EAEOlE,GAAMlB,CAAG,EACX,CACL,CAAC,OAAOA,EAAI,IAAI,GAAG,EAAG,CAAC,GAAGA,EAAI,OAAQ,CAAA,EAAE,IAAKuF,GAAMD,GAAgBC,CAAC,CAAC,CAAA,EAE9DjE,GAAStB,CAAG,EACdsF,GAAgBtF,CAAG,EACjBuB,GAASvB,CAAG,GAAK,CAACe,GAAQf,CAAG,GAAK,CAAC4B,GAAc5B,CAAG,EACtD,OAAOA,CAAG,EAEZA,EAEHsF,GAAkB,CAACC,EAAG3E,EAAI,KAAO,CACjC,IAAA4E,EACJ,OAGElE,GAASiE,CAAC,EAAI,WAAWC,EAAKD,EAAE,cAAgB,KAAOC,EAAK5E,CAAC,IAAM2E,CAEvE,EC9eA;AAAA;AAAA;AAAA;AAAA,GAWA,IAAIE,GACJ,MAAMC,EAAY,CAChB,YAAYC,EAAW,GAAO,CAC5B,KAAK,SAAWA,EAIhB,KAAK,QAAU,GAIf,KAAK,QAAU,GAIf,KAAK,SAAW,GAChB,KAAK,OAASF,GACV,CAACE,GAAYF,KACf,KAAK,OAASA,GAAkB,SAAWA,GAAkB,OAAS,CAAK,IAAA,KACzE,IACE,EAAA,EAER,CACA,IAAI,QAAS,CACX,OAAO,KAAK,OACd,CACA,IAAIzD,EAAI,CACN,GAAI,KAAK,QAAS,CAChB,MAAM4D,EAAqBH,GACvB,GAAA,CACkB,OAAAA,GAAA,KACbzD,EAAG,CAAA,QACV,CACoByD,GAAAG,CACtB,CAGF,CACF,CAKA,IAAK,CACiBH,GAAA,IACtB,CAKA,KAAM,CACJA,GAAoB,KAAK,MAC3B,CACA,KAAKI,EAAY,CACf,GAAI,KAAK,QAAS,CAChB,IAAIjF,EAAGkF,EACF,IAAAlF,EAAI,EAAGkF,EAAI,KAAK,QAAQ,OAAQlF,EAAIkF,EAAGlF,IACrC,KAAA,QAAQA,CAAC,EAAE,KAAK,EAElB,IAAAA,EAAI,EAAGkF,EAAI,KAAK,SAAS,OAAQlF,EAAIkF,EAAGlF,IACtC,KAAA,SAASA,CAAC,IAEjB,GAAI,KAAK,OACF,IAAAA,EAAI,EAAGkF,EAAI,KAAK,OAAO,OAAQlF,EAAIkF,EAAGlF,IACzC,KAAK,OAAOA,CAAC,EAAE,KAAK,EAAI,EAG5B,GAAI,CAAC,KAAK,UAAY,KAAK,QAAU,CAACiF,EAAY,CAChD,MAAME,EAAO,KAAK,OAAO,OAAO,IAAI,EAChCA,GAAQA,IAAS,OACnB,KAAK,OAAO,OAAO,KAAK,KAAK,EAAIA,EACjCA,EAAK,MAAQ,KAAK,MAEtB,CACA,KAAK,OAAS,OACd,KAAK,QAAU,EACjB,CACF,CACF,CACA,SAASC,GAAYL,EAAU,CACtB,OAAA,IAAID,GAAYC,CAAQ,CACjC,CACA,SAASM,GAAkBC,EAAQC,EAAQV,GAAmB,CACxDU,GAASA,EAAM,QACXA,EAAA,QAAQ,KAAKD,CAAM,CAE7B,CACA,SAASE,IAAkB,CAClB,OAAAX,EACT,CACA,SAASY,GAAerE,EAAI,CACtByD,IACgBA,GAAA,SAAS,KAAKzD,CAAE,CAMtC,CAEA,IAAIsE,GACJ,MAAMC,EAAe,CACnB,YAAYvE,EAAIwE,EAASC,EAAWN,EAAO,CACzC,KAAK,GAAKnE,EACV,KAAK,QAAUwE,EACf,KAAK,UAAYC,EACjB,KAAK,OAAS,GACd,KAAK,KAAO,GAIZ,KAAK,YAAc,EAInB,KAAK,SAAW,EAIhB,KAAK,UAAY,EAIjB,KAAK,gBAAkB,GAIvB,KAAK,YAAc,EACnBR,GAAkB,KAAME,CAAK,CAC/B,CACA,IAAI,OAAQ,CACV,GAAI,KAAK,cAAgB,GAAK,KAAK,cAAgB,EAAG,CACpD,KAAK,YAAc,EACLO,KACd,QAAS9F,EAAI,EAAGA,EAAI,KAAK,YAAaA,IAAK,CACnC,MAAA+F,EAAM,KAAK,KAAK/F,CAAC,EACvB,GAAI+F,EAAI,WACNC,GAAgBD,EAAI,QAAQ,EACxB,KAAK,aAAe,GACtB,KAGN,CACI,KAAK,cAAgB,IACvB,KAAK,YAAc,GAEPE,IAChB,CACA,OAAO,KAAK,aAAe,CAC7B,CACA,IAAI,MAAMtB,EAAG,CACN,KAAA,YAAcA,EAAI,EAAI,CAC7B,CACA,KAAM,CAEA,GADJ,KAAK,YAAc,EACf,CAAC,KAAK,OACR,OAAO,KAAK,KAEd,IAAIuB,EAAkBC,GAClBC,EAAaV,GACb,GAAA,CACY,OAAAS,GAAA,GACCT,GAAA,KACV,KAAA,YACLW,GAAiB,IAAI,EACd,KAAK,IAAG,QACf,CACAC,GAAkB,IAAI,EACjB,KAAA,YACUZ,GAAAU,EACDD,GAAAD,CAChB,CACF,CACA,MAAO,CACD,KAAK,SACPG,GAAiB,IAAI,EACrBC,GAAkB,IAAI,EACjB,KAAA,QAAU,KAAK,SACpB,KAAK,OAAS,GAElB,CACF,CACA,SAASN,GAAgBO,EAAU,CACjC,OAAOA,EAAS,KAClB,CACA,SAASF,GAAiBG,EAAS,CACzBA,EAAA,WACRA,EAAQ,YAAc,CACxB,CACA,SAASF,GAAkBE,EAAS,CAClC,GAAIA,EAAQ,KAAK,OAASA,EAAQ,YAAa,CAC7C,QAASxG,EAAIwG,EAAQ,YAAaxG,EAAIwG,EAAQ,KAAK,OAAQxG,IACzDyG,GAAiBD,EAAQ,KAAKxG,CAAC,EAAGwG,CAAO,EAEnCA,EAAA,KAAK,OAASA,EAAQ,WAChC,CACF,CACA,SAASC,GAAiBV,EAAKS,EAAS,CAChC,MAAAE,EAAUX,EAAI,IAAIS,CAAO,EAC3BE,IAAY,QAAUF,EAAQ,WAAaE,IAC7CX,EAAI,OAAOS,CAAO,EACdT,EAAI,OAAS,GACfA,EAAI,QAAQ,EAGlB,CAyBA,IAAII,GAAc,GACdQ,GAAqB,EACzB,MAAMC,GAAa,CAAA,EACnB,SAASd,IAAgB,CACvBc,GAAW,KAAKT,EAAW,EACbA,GAAA,EAChB,CAKA,SAASF,IAAgB,CACjB,MAAAd,EAAOyB,GAAW,MACVT,GAAAhB,IAAS,OAAS,GAAOA,CACzC,CACA,SAAS0B,IAAkB,CACzBF,IACF,CACA,SAASG,IAAkB,CAElB,IADPH,KACO,CAACA,IAAsBI,GAAsB,QAClDA,GAAsB,SAE1B,CACA,SAASC,GAAYR,EAAST,EAAKkB,EAAwB,CAEzD,GAAIlB,EAAI,IAAIS,CAAO,IAAMA,EAAQ,SAAU,CACrCT,EAAA,IAAIS,EAASA,EAAQ,QAAQ,EACjC,MAAMU,EAASV,EAAQ,KAAKA,EAAQ,WAAW,EAC3CU,IAAWnB,GACTmB,GACFT,GAAiBS,EAAQV,CAAO,EAE1BA,EAAA,KAAKA,EAAQ,aAAa,EAAIT,GAE9BS,EAAA,aAKZ,CACF,CACA,MAAMO,GAAwB,CAAA,EAC9B,SAASI,GAAepB,EAAKqB,EAAYH,EAAwB,CAE/CJ,KACL,UAAAL,KAAWT,EAAI,OAAQ,CAC5B,IAAAsB,EACAb,EAAQ,YAAcY,IAAeC,IAA8BA,EAAWtB,EAAI,IAAIS,CAAO,IAAMA,EAAQ,aAC7GA,EAAQ,kBAAoBA,EAAQ,gBAAkBA,EAAQ,cAAgB,GAC9EA,EAAQ,YAAcY,GAEpBZ,EAAQ,kBAAoBa,IAA8BA,EAAWtB,EAAI,IAAIS,CAAO,IAAMA,EAAQ,aAIpGA,EAAQ,QAAQ,GACX,CAACA,EAAQ,WAAaA,EAAQ,eAAiBA,EAAQ,cAAgB,IAC1EA,EAAQ,gBAAkB,GACtBA,EAAQ,WACYO,GAAA,KAAKP,EAAQ,SAAS,GAIpD,CACgBM,IAClB,CAEA,MAAMQ,GAAY,CAACC,EAAShB,IAAa,CACjC,MAAAR,MAA0B,IAChC,OAAAA,EAAI,QAAUwB,EACdxB,EAAI,SAAWQ,EACRR,CACT,EAEMyB,OAAgC,QAChCC,GAAc,OAA+D,EAAE,EAC/EC,GAAsB,OAAuE,EAAE,EACrG,SAASC,GAAMC,EAAQC,EAAMnI,EAAK,CAChC,GAAIyG,IAAeT,GAAc,CAC3B,IAAAoC,EAAUN,GAAU,IAAII,CAAM,EAC7BE,GACHN,GAAU,IAAII,EAAQE,EAA0B,IAAI,GAAK,EAEvD,IAAA/B,EAAM+B,EAAQ,IAAIpI,CAAG,EACpBqG,GACK+B,EAAA,IAAIpI,EAAKqG,EAAMuB,GAAU,IAAMQ,EAAQ,OAAOpI,CAAG,CAAC,CAAC,EAE7DsH,GACEtB,GACAK,CAMF,CACF,CACF,CACA,SAASH,GAAQgC,EAAQC,EAAMnI,EAAKqI,EAAUhG,EAAUiG,EAAW,CAC3D,MAAAF,EAAUN,GAAU,IAAII,CAAM,EACpC,GAAI,CAACE,EACH,OAEF,IAAIG,EAAO,CAAA,EACX,GAAIJ,IAAS,QACXI,EAAO,CAAC,GAAGH,EAAQ,OAAQ,CAAA,UAClBpI,IAAQ,UAAYS,GAAQyH,CAAM,EAAG,CACxC,MAAAM,EAAY,OAAOH,CAAQ,EACzBD,EAAA,QAAQ,CAAC/B,EAAKoC,IAAS,EACzBA,IAAS,UAAY,CAACzH,GAASyH,CAAI,GAAKA,GAAQD,IAClDD,EAAK,KAAKlC,CAAG,CACf,CACD,CAAA,KAKD,QAHIrG,IAAQ,QACVuI,EAAK,KAAKH,EAAQ,IAAIpI,CAAG,CAAC,EAEpBmI,EAAM,CACZ,IAAK,MACE1H,GAAQyH,CAAM,EAKR3G,GAAavB,CAAG,GACzBuI,EAAK,KAAKH,EAAQ,IAAI,QAAQ,CAAC,GAL/BG,EAAK,KAAKH,EAAQ,IAAIL,EAAW,CAAC,EAC9BrH,GAAMwH,CAAM,GACdK,EAAK,KAAKH,EAAQ,IAAIJ,EAAmB,CAAC,GAK9C,MACF,IAAK,SACEvH,GAAQyH,CAAM,IACjBK,EAAK,KAAKH,EAAQ,IAAIL,EAAW,CAAC,EAC9BrH,GAAMwH,CAAM,GACdK,EAAK,KAAKH,EAAQ,IAAIJ,EAAmB,CAAC,GAG9C,MACF,IAAK,MACCtH,GAAMwH,CAAM,GACdK,EAAK,KAAKH,EAAQ,IAAIL,EAAW,CAAC,EAEpC,KACJ,CAEcZ,KAChB,UAAWd,KAAOkC,EACZlC,GACFoB,GACEpB,EACA,CASF,EAGYe,IAClB,CACA,SAASsB,GAAmBC,EAAQ3I,EAAK,CACjC,MAAAoI,EAAUN,GAAU,IAAIa,CAAM,EAC7B,OAAAP,GAAWA,EAAQ,IAAIpI,CAAG,CACnC,CAEA,MAAM4I,MAA6C,6BAA6B,EAC1EC,GAAiB,IAAI,IACT,OAAO,oBAAoB,MAAM,EAAE,OAAQ7I,GAAQA,IAAQ,aAAeA,IAAQ,QAAQ,EAAE,IAAKA,GAAQ,OAAOA,CAAG,CAAC,EAAE,OAAOgB,EAAQ,CACvJ,EACM8H,GAAoEC,GAAA,EAC1E,SAASA,IAA8B,CACrC,MAAMC,EAAmB,CAAA,EACzB,OAAC,WAAY,UAAW,aAAa,EAAE,QAAShJ,GAAQ,CACrCgJ,EAAAhJ,CAAG,EAAI,YAAYiJ,EAAM,CAClC,MAAA7I,EAAM8I,GAAM,IAAI,EACtB,QAAS5I,EAAI,EAAGkF,EAAI,KAAK,OAAQlF,EAAIkF,EAAGlF,IAChC2H,GAAA7H,EAAK,MAAOE,EAAI,EAAE,EAE1B,MAAM2C,EAAM7C,EAAIJ,CAAG,EAAE,GAAGiJ,CAAI,EACxB,OAAAhG,IAAQ,IAAMA,IAAQ,GACjB7C,EAAIJ,CAAG,EAAE,GAAGiJ,EAAK,IAAIC,EAAK,CAAC,EAE3BjG,CACT,CACF,CACD,EACA,CAAA,OAAQ,MAAO,QAAS,UAAW,QAAQ,EAAE,QAASjD,GAAQ,CAC5CgJ,EAAAhJ,CAAG,EAAI,YAAYiJ,EAAM,CAC1B7C,KACEe,KACV,MAAAlE,EAAMiG,GAAM,IAAI,EAAElJ,CAAG,EAAE,MAAM,KAAMiJ,CAAI,EAC7B,OAAA7B,KACFb,KACPtD,CAAA,CACT,CACD,EACM+F,CACT,CACA,SAASzI,GAAeP,EAAK,CACtBgB,GAAShB,CAAG,IACfA,EAAM,OAAOA,CAAG,GACZ,MAAA0C,EAAMwG,GAAM,IAAI,EAChB,OAAAjB,GAAAvF,EAAK,MAAO1C,CAAG,EACd0C,EAAI,eAAe1C,CAAG,CAC/B,CACA,MAAMmJ,EAAoB,CACxB,YAAYC,EAAc,GAAOC,EAAa,GAAO,CACnD,KAAK,YAAcD,EACnB,KAAK,WAAaC,CACpB,CACA,IAAInB,EAAQlI,EAAKsJ,EAAU,CACzB,MAAMC,EAAc,KAAK,YAAaC,EAAa,KAAK,WACxD,GAAIxJ,IAAQ,iBACV,MAAO,CAACuJ,EACV,GAAWvJ,IAAQ,iBACV,OAAAuJ,EACT,GAAWvJ,IAAQ,gBACV,OAAAwJ,EACT,GAAWxJ,IAAQ,UACb,OAAAsJ,KAAcC,EAAcC,EAAaC,GAAqBC,GAAcF,EAAaG,GAAqBC,IAAa,IAAI1B,CAAM,GAEzI,OAAO,eAAeA,CAAM,IAAM,OAAO,eAAeoB,CAAQ,EACvDpB,EAET,OAEI,MAAA2B,EAAgBpJ,GAAQyH,CAAM,EACpC,GAAI,CAACqB,EAAa,CAChB,GAAIM,GAAiBrJ,GAAOsI,GAAuB9I,CAAG,EACpD,OAAO,QAAQ,IAAI8I,GAAuB9I,EAAKsJ,CAAQ,EAEzD,GAAItJ,IAAQ,iBACH,OAAAO,EAEX,CACA,MAAM0C,EAAM,QAAQ,IAAIiF,EAAQlI,EAAKsJ,CAAQ,EAO7C,OANItI,GAAShB,CAAG,EAAI6I,GAAe,IAAI7I,CAAG,EAAI4I,GAAmB5I,CAAG,KAG/DuJ,GACGtB,GAAAC,EAAQ,MAAOlI,CAAG,EAEtBwJ,GACKvG,EAEL6G,GAAM7G,CAAG,EACJ4G,GAAiBtI,GAAavB,CAAG,EAAIiD,EAAMA,EAAI,MAEpDhC,GAASgC,CAAG,EACPsG,EAAcQ,GAAS9G,CAAG,EAAI+G,GAAS/G,CAAG,EAE5CA,CACT,CACF,CACA,MAAMgH,WAA+Bd,EAAoB,CACvD,YAAYK,EAAa,GAAO,CAC9B,MAAM,GAAOA,CAAU,CACzB,CACA,IAAItB,EAAQlI,EAAKoB,EAAOkI,EAAU,CAC5B,IAAAjH,EAAW6F,EAAOlI,CAAG,EACrB,GAAA,CAAC,KAAK,WAAY,CACd,MAAAkK,EAAqBC,GAAW9H,CAAQ,EAK1C,GAJA,CAAC+H,GAAUhJ,CAAK,GAAK,CAAC+I,GAAW/I,CAAK,IACxCiB,EAAW6G,GAAM7G,CAAQ,EACzBjB,EAAQ8H,GAAM9H,CAAK,GAEjB,CAACX,GAAQyH,CAAM,GAAK4B,GAAMzH,CAAQ,GAAK,CAACyH,GAAM1I,CAAK,EACrD,OAAI8I,EACK,IAEP7H,EAAS,MAAQjB,EACV,GAGb,CACA,MAAMiJ,EAAS5J,GAAQyH,CAAM,GAAK3G,GAAavB,CAAG,EAAI,OAAOA,CAAG,EAAIkI,EAAO,OAAS1H,GAAO0H,EAAQlI,CAAG,EAChGsK,EAAS,QAAQ,IAAIpC,EAAQlI,EAAKoB,EAAOkI,CAAQ,EACnD,OAAApB,IAAWgB,GAAMI,CAAQ,IACtBe,EAEMjI,GAAWhB,EAAOiB,CAAQ,GACnC6D,GAAQgC,EAAQ,MAAOlI,EAAKoB,CAAe,EAFnC8E,GAAAgC,EAAQ,MAAOlI,EAAKoB,CAAK,GAK9BkJ,CACT,CACA,eAAepC,EAAQlI,EAAK,CACpB,MAAAqK,EAAS7J,GAAO0H,EAAQlI,CAAG,EAChBkI,EAAOlI,CAAG,EAC3B,MAAMsK,EAAS,QAAQ,eAAepC,EAAQlI,CAAG,EACjD,OAAIsK,GAAUD,GACZnE,GAAQgC,EAAQ,SAAUlI,EAAK,MAAgB,EAE1CsK,CACT,CACA,IAAIpC,EAAQlI,EAAK,CACf,MAAMsK,EAAS,QAAQ,IAAIpC,EAAQlI,CAAG,EAClC,OAAA,CAACgB,GAAShB,CAAG,GAAK,CAAC6I,GAAe,IAAI7I,CAAG,IACrCiI,GAAAC,EAAQ,MAAOlI,CAAG,EAEnBsK,CACT,CACA,QAAQpC,EAAQ,CACd,OAAAD,GACEC,EACA,UACAzH,GAAQyH,CAAM,EAAI,SAAWH,EAAA,EAExB,QAAQ,QAAQG,CAAM,CAC/B,CACF,CACA,MAAMqC,WAAgCpB,EAAoB,CACxD,YAAYK,EAAa,GAAO,CAC9B,MAAM,GAAMA,CAAU,CACxB,CACA,IAAItB,EAAQlI,EAAK,CAOR,MAAA,EACT,CACA,eAAekI,EAAQlI,EAAK,CAOnB,MAAA,EACT,CACF,CACA,MAAMwK,OAAsCP,GACtCQ,OAAuCF,GACvCG,GAA8C,IAAAT,GAClD,EACF,EAGA,MAAMU,GAAavJ,GAAUA,EACvBwJ,GAAY3F,GAAM,QAAQ,eAAeA,CAAC,EAChD,SAAS4F,GAAI3C,EAAQlI,EAAKmK,EAAa,GAAOC,EAAY,GAAO,CAC/DlC,EAASA,EAAO,QACV,MAAA4C,EAAY5B,GAAMhB,CAAM,EACxB6C,EAAS7B,GAAMlJ,CAAG,EACnBmK,IACC/H,GAAWpC,EAAK+K,CAAM,GAClB9C,GAAA6C,EAAW,MAAO9K,CAAG,EAEvBiI,GAAA6C,EAAW,MAAOC,CAAM,GAEhC,KAAM,CAAE,IAAKC,CAAK,EAAIJ,GAASE,CAAS,EAClCG,EAAOb,EAAYO,GAAYR,EAAae,GAAaC,GAC/D,GAAIH,EAAK,KAAKF,EAAW9K,CAAG,EAC1B,OAAOiL,EAAK/C,EAAO,IAAIlI,CAAG,CAAC,EAClB,GAAAgL,EAAK,KAAKF,EAAWC,CAAM,EACpC,OAAOE,EAAK/C,EAAO,IAAI6C,CAAM,CAAC,EACrB7C,IAAW4C,GACpB5C,EAAO,IAAIlI,CAAG,CAElB,CACA,SAASoL,GAAIpL,EAAKmK,EAAa,GAAO,CAC9B,MAAAjC,EAAS,KAAK,QACd4C,EAAY5B,GAAMhB,CAAM,EACxB6C,EAAS7B,GAAMlJ,CAAG,EACxB,OAAKmK,IACC/H,GAAWpC,EAAK+K,CAAM,GAClB9C,GAAA6C,EAAW,MAAO9K,CAAG,EAEvBiI,GAAA6C,EAAW,MAAOC,CAAM,GAEzB/K,IAAQ+K,EAAS7C,EAAO,IAAIlI,CAAG,EAAIkI,EAAO,IAAIlI,CAAG,GAAKkI,EAAO,IAAI6C,CAAM,CAChF,CACA,SAASM,GAAKnD,EAAQiC,EAAa,GAAO,CACxC,OAAAjC,EAASA,EAAO,QAChB,CAACiC,GAAclC,GAAMiB,GAAMhB,CAAM,EAAG,UAAWH,EAAW,EACnD,QAAQ,IAAIG,EAAQ,OAAQA,CAAM,CAC3C,CACA,SAASoD,GAAIlK,EAAO,CAClBA,EAAQ8H,GAAM9H,CAAK,EACb,MAAA8G,EAASgB,GAAM,IAAI,EAGzB,OAFc0B,GAAS1C,CAAM,EACR,IAAI,KAAKA,EAAQ9G,CAAK,IAEzC8G,EAAO,IAAI9G,CAAK,EACR8E,GAAAgC,EAAQ,MAAO9G,EAAOA,CAAK,GAE9B,IACT,CACA,SAAS3B,GAAIO,EAAKoB,EAAO,CACvBA,EAAQ8H,GAAM9H,CAAK,EACb,MAAA8G,EAASgB,GAAM,IAAI,EACnB,CAAE,IAAK8B,EAAM,IAAKO,GAASX,GAAS1C,CAAM,EAChD,IAAImC,EAASW,EAAK,KAAK9C,EAAQlI,CAAG,EAC7BqK,IACHrK,EAAMkJ,GAAMlJ,CAAG,EACNqK,EAAAW,EAAK,KAAK9C,EAAQlI,CAAG,GAIhC,MAAMqC,EAAWkJ,EAAK,KAAKrD,EAAQlI,CAAG,EAC/B,OAAAkI,EAAA,IAAIlI,EAAKoB,CAAK,EAChBiJ,EAEMjI,GAAWhB,EAAOiB,CAAQ,GACnC6D,GAAQgC,EAAQ,MAAOlI,EAAKoB,CAAe,EAFnC8E,GAAAgC,EAAQ,MAAOlI,EAAKoB,CAAK,EAI5B,IACT,CACA,SAASoK,GAAYxL,EAAK,CAClB,MAAAkI,EAASgB,GAAM,IAAI,EACnB,CAAE,IAAK8B,EAAM,IAAKO,GAASX,GAAS1C,CAAM,EAChD,IAAImC,EAASW,EAAK,KAAK9C,EAAQlI,CAAG,EAC7BqK,IACHrK,EAAMkJ,GAAMlJ,CAAG,EACNqK,EAAAW,EAAK,KAAK9C,EAAQlI,CAAG,GAIfuL,GAAOA,EAAK,KAAKrD,EAAQlI,CAAG,EACvC,MAAAsK,EAASpC,EAAO,OAAOlI,CAAG,EAChC,OAAIqK,GACFnE,GAAQgC,EAAQ,SAAUlI,EAAK,MAAgB,EAE1CsK,CACT,CACA,SAASmB,IAAQ,CACT,MAAAvD,EAASgB,GAAM,IAAI,EACnBwC,EAAWxD,EAAO,OAAS,EAE3BoC,EAASpC,EAAO,QACtB,OAAIwD,GACFxF,GAAQgC,EAAQ,QAAS,OAAQ,MAAiB,EAE7CoC,CACT,CACA,SAASqB,GAAcxB,EAAYC,EAAW,CACrC,OAAA,SAAiBwB,EAAUC,EAAS,CACzC,MAAMC,EAAW,KACX5D,EAAS4D,EAAS,QAClBhB,EAAY5B,GAAMhB,CAAM,EACxB+C,EAAOb,EAAYO,GAAYR,EAAae,GAAaC,GAC/D,OAAChB,GAAclC,GAAM6C,EAAW,UAAW/C,EAAW,EAC/CG,EAAO,QAAQ,CAAC9G,EAAOpB,IACrB4L,EAAS,KAAKC,EAASZ,EAAK7J,CAAK,EAAG6J,EAAKjL,CAAG,EAAG8L,CAAQ,CAC/D,CAAA,CAEL,CACA,SAASC,GAAqBC,EAAQ7B,EAAYC,EAAW,CAC3D,OAAO,YAAYnB,EAAM,CACjB,MAAAf,EAAS,KAAK,QACd4C,EAAY5B,GAAMhB,CAAM,EACxB+D,EAAcvL,GAAMoK,CAAS,EAC7BoB,EAASF,IAAW,WAAaA,IAAW,OAAO,UAAYC,EAC/DE,EAAYH,IAAW,QAAUC,EACjCG,EAAgBlE,EAAO8D,CAAM,EAAE,GAAG/C,CAAI,EACtCgC,EAAOb,EAAYO,GAAYR,EAAae,GAAaC,GAC/D,OAAChB,GAAclC,GACb6C,EACA,UACAqB,EAAYnE,GAAsBD,EAAA,EAE7B,CAEL,MAAO,CACL,KAAM,CAAE,MAAA3G,EAAO,KAAAiL,CAAK,EAAID,EAAc,KAAK,EAC3C,OAAOC,EAAO,CAAE,MAAAjL,EAAO,KAAAiL,GAAS,CAC9B,MAAOH,EAAS,CAACjB,EAAK7J,EAAM,CAAC,CAAC,EAAG6J,EAAK7J,EAAM,CAAC,CAAC,CAAC,EAAI6J,EAAK7J,CAAK,EAC7D,KAAAiL,CAAA,CAEJ,EAEA,CAAC,OAAO,QAAQ,GAAI,CACX,OAAA,IACT,CAAA,CACF,CAEJ,CACA,SAASC,GAAqBnE,EAAM,CAClC,OAAO,YAAYc,EAAM,CAQvB,OAAOd,IAAS,SAAW,GAAQA,IAAS,QAAU,OAAS,IAAA,CAEnE,CACA,SAASoE,IAAyB,CAChC,MAAMC,EAA2B,CAC/B,IAAIxM,EAAK,CACA,OAAA6K,GAAI,KAAM7K,CAAG,CACtB,EACA,IAAI,MAAO,CACT,OAAOqL,GAAK,IAAI,CAClB,EACA,IAAAD,GACA,IAAAE,GAAA,IACA7L,GACA,OAAQ+L,GACR,MAAAC,GACA,QAASE,GAAc,GAAO,EAAK,CAAA,EAE/Bc,EAA2B,CAC/B,IAAIzM,EAAK,CACP,OAAO6K,GAAI,KAAM7K,EAAK,GAAO,EAAI,CACnC,EACA,IAAI,MAAO,CACT,OAAOqL,GAAK,IAAI,CAClB,EACA,IAAAD,GACA,IAAAE,GAAA,IACA7L,GACA,OAAQ+L,GACR,MAAAC,GACA,QAASE,GAAc,GAAO,EAAI,CAAA,EAE9Be,EAA4B,CAChC,IAAI1M,EAAK,CACA,OAAA6K,GAAI,KAAM7K,EAAK,EAAI,CAC5B,EACA,IAAI,MAAO,CACF,OAAAqL,GAAK,KAAM,EAAI,CACxB,EACA,IAAIrL,EAAK,CACP,OAAOoL,GAAI,KAAK,KAAMpL,EAAK,EAAI,CACjC,EACA,IAAKsM,GAAqB,KAAK,EAC/B,IAAKA,GAAqB,KAAK,EAC/B,OAAQA,GAAqB,QAAQ,EACrC,MAAOA,GAAqB,OAAO,EACnC,QAASX,GAAc,GAAM,EAAK,CAAA,EAE9BgB,EAAmC,CACvC,IAAI3M,EAAK,CACP,OAAO6K,GAAI,KAAM7K,EAAK,GAAM,EAAI,CAClC,EACA,IAAI,MAAO,CACF,OAAAqL,GAAK,KAAM,EAAI,CACxB,EACA,IAAIrL,EAAK,CACP,OAAOoL,GAAI,KAAK,KAAMpL,EAAK,EAAI,CACjC,EACA,IAAKsM,GAAqB,KAAK,EAC/B,IAAKA,GAAqB,KAAK,EAC/B,OAAQA,GAAqB,QAAQ,EACrC,MAAOA,GAAqB,OAAO,EACnC,QAASX,GAAc,GAAM,EAAI,CAAA,EAQnB,MANQ,CACtB,OACA,SACA,UACA,OAAO,QAAA,EAEO,QAASK,GAAW,CAClCQ,EAAyBR,CAAM,EAAID,GAAqBC,EAAQ,GAAO,EAAK,EAC5EU,EAA0BV,CAAM,EAAID,GAAqBC,EAAQ,GAAM,EAAK,EAC5ES,EAAyBT,CAAM,EAAID,GAAqBC,EAAQ,GAAO,EAAI,EAC3EW,EAAiCX,CAAM,EAAID,GACzCC,EACA,GACA,EAAA,CACF,CACD,EACM,CACLQ,EACAE,EACAD,EACAE,CAAA,CAEJ,CACA,KAAM,CACJC,GACAC,GACAC,GACAC,EACF,EAA2CR,GAAA,EAC3C,SAASS,GAA4B7C,EAAY8C,EAAS,CACxD,MAAMjE,EAAmBiE,EAAU9C,EAAa4C,GAAkCD,GAA0B3C,EAAa0C,GAA2BD,GAC7I,MAAA,CAAC1E,EAAQlI,EAAKsJ,IACftJ,IAAQ,iBACH,CAACmK,EACCnK,IAAQ,iBACVmK,EACEnK,IAAQ,UACVkI,EAEF,QAAQ,IACb1H,GAAOwI,EAAkBhJ,CAAG,GAAKA,KAAOkI,EAASc,EAAmBd,EACpElI,EACAsJ,CAAA,CAGN,CACA,MAAM4D,GAA4B,CAChC,IAAiDF,GAAA,GAAO,EAAK,CAC/D,EACMG,GAA4B,CAChC,IAAiDH,GAAA,GAAO,EAAI,CAC9D,EACMI,GAA6B,CACjC,IAAiDJ,GAAA,GAAM,EAAK,CAC9D,EAcA,MAAMpD,OAAkC,QAClCD,OAAyC,QACzCD,OAAkC,QAClCD,OAAyC,QAC/C,SAAS4D,GAAcC,EAAS,CAC9B,OAAQA,EAAS,CACf,IAAK,SACL,IAAK,QACI,MAAA,GACT,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACI,MAAA,GACT,QACS,MAAA,EACX,CACF,CACA,SAASC,GAAcnM,EAAO,CAC5B,OAAOA,EAAM,UAAe,CAAC,OAAO,aAAaA,CAAK,EAAI,EAAkBiM,GAAchM,GAAUD,CAAK,CAAC,CAC5G,CACA,SAAS4I,GAAS9B,EAAQ,CACpB,OAAAiC,GAAWjC,CAAM,EACZA,EAEFsF,GACLtF,EACA,GACAsC,GACA0C,GACAtD,EAAA,CAEJ,CACA,SAAS6D,GAAgBvF,EAAQ,CACxB,OAAAsF,GACLtF,EACA,GACAwC,GACAyC,GACAxD,EAAA,CAEJ,CACA,SAASI,GAAS7B,EAAQ,CACjB,OAAAsF,GACLtF,EACA,GACAuC,GACA2C,GACA1D,EAAA,CAEJ,CAUA,SAAS8D,GAAqBtF,EAAQqB,EAAamE,EAAcC,EAAoBC,EAAU,CAO7F,GANI,CAAC3M,GAASiH,CAAM,GAMhBA,EAAO,SAAc,EAAEqB,GAAerB,EAAO,gBACxC,OAAAA,EAEH,MAAA2F,EAAgBD,EAAS,IAAI1F,CAAM,EACzC,GAAI2F,EACK,OAAAA,EAEH,MAAAC,EAAaP,GAAcrF,CAAM,EACvC,GAAI4F,IAAe,EACV,OAAA5F,EAET,MAAM6F,EAAQ,IAAI,MAChB7F,EACA4F,IAAe,EAAqBH,EAAqBD,CAAA,EAElD,OAAAE,EAAA,IAAI1F,EAAQ6F,CAAK,EACnBA,CACT,CACA,SAASC,GAAW5M,EAAO,CACrB,OAAA+I,GAAW/I,CAAK,EACX4M,GAAW5M,EAAM,OAAU,EAE7B,CAAC,EAAEA,GAASA,EAAM,eAC3B,CACA,SAAS+I,GAAW/I,EAAO,CACzB,MAAO,CAAC,EAAEA,GAASA,EAAM,eAC3B,CACA,SAASgJ,GAAUhJ,EAAO,CACxB,MAAO,CAAC,EAAEA,GAASA,EAAM,cAC3B,CACA,SAAS6M,GAAQ7M,EAAO,CACtB,OAAOA,EAAQ,CAAC,CAACA,EAAM,QAAa,EACtC,CACA,SAAS8H,GAAM4C,EAAU,CACjB,MAAAoC,EAAMpC,GAAYA,EAAS,QAC1B,OAAAoC,EAAMhF,GAAMgF,CAAG,EAAIpC,CAC5B,CACA,SAASqC,GAAQ/M,EAAO,CAClB,OAAA,OAAO,aAAaA,CAAK,GACvBqB,GAAArB,EAAO,WAAY,EAAI,EAEtBA,CACT,CACA,MAAM+J,GAAc/J,GAAUH,GAASG,CAAK,EAAI4I,GAAS5I,CAAK,EAAIA,EAC5D8J,GAAc9J,GAAUH,GAASG,CAAK,EAAI2I,GAAS3I,CAAK,EAAIA,EAGlE,MAAMgN,EAAgB,CACpB,YAAYC,EAAQC,EAASnE,EAAYoE,EAAO,CAC9C,KAAK,OAASF,EACd,KAAK,QAAUC,EACf,KAAK,IAAM,OACX,KAAK,UAAY,GACjB,KAAK,eAAoB,GACzB,KAAK,OAAS,IAAIrI,GAChB,IAAMoI,EAAO,KAAK,MAAM,EACxB,IAAMG,GACJ,KACA,KAAK,OAAO,cAAgB,EAAI,EAAI,CACtC,CAAA,EAEF,KAAK,OAAO,SAAW,KACvB,KAAK,OAAO,OAAS,KAAK,WAAa,CAACD,EACxC,KAAK,eAAoBpE,CAC3B,CACA,IAAI,OAAQ,CACJ,MAAAsE,EAAOvF,GAAM,IAAI,EACvB,OAAK,CAACuF,EAAK,YAAcA,EAAK,OAAO,QAAUrM,GAAWqM,EAAK,OAAQA,EAAK,OAASA,EAAK,OAAO,IAAA,CAAK,GACpGD,GAAgBC,EAAM,CAAC,EAEzBC,GAAcD,CAAI,EACdA,EAAK,OAAO,aAAe,GAM7BD,GAAgBC,EAAM,CAAC,EAElBA,EAAK,MACd,CACA,IAAI,MAAMpG,EAAU,CAClB,KAAK,QAAQA,CAAQ,CACvB,CAEA,IAAI,QAAS,CACX,OAAO,KAAK,OAAO,KACrB,CACA,IAAI,OAAOpD,EAAG,CACZ,KAAK,OAAO,MAAQA,CACtB,CAEF,CACA,SAAS4B,GAAS8H,EAAiBC,EAAcL,EAAQ,GAAO,CAC1D,IAAAF,EACAQ,EACE,MAAAC,EAAahO,GAAW6N,CAAe,EAC7C,OAAIG,GACOT,EAAAM,EACTE,EAEIhP,KAEJwO,EAASM,EAAgB,IACzBE,EAASF,EAAgB,KAEd,IAAIP,GAAgBC,EAAQQ,EAAQC,GAAc,CAACD,EAAQN,CAAK,CAM/E,CAEA,SAASG,GAAcK,EAAM,CACvB,IAAA7J,EACAuB,IAAeT,KACjB+I,EAAO7F,GAAM6F,CAAI,EACjBzH,GACEtB,IACCd,EAAK6J,EAAK,MAAQ,KAAO7J,EAAK6J,EAAK,IAAMnH,GACxC,IAAMmH,EAAK,IAAM,OACjBA,aAAgBX,GAAkBW,EAAO,MAAA,CAO7C,EAEJ,CACA,SAASP,GAAgBO,EAAMrH,EAAa,EAAGsH,EAAQ,CACrDD,EAAO7F,GAAM6F,CAAI,EACjB,MAAM1I,EAAM0I,EAAK,IACb1I,GACFoB,GACEpB,EACAqB,CAOF,CAEJ,CACA,SAASoC,GAAMmF,EAAG,CAChB,MAAO,CAAC,EAAEA,GAAKA,EAAE,YAAc,GACjC,CACA,SAASC,GAAI9N,EAAO,CACX,OAAA+N,GAAU/N,EAAO,EAAK,CAC/B,CAIA,SAAS+N,GAAUC,EAAUnC,EAAS,CAChC,OAAAnD,GAAMsF,CAAQ,EACTA,EAEF,IAAIC,GAAQD,EAAUnC,CAAO,CACtC,CACA,MAAMoC,EAAQ,CACZ,YAAYjO,EAAOkO,EAAe,CAChC,KAAK,cAAgBA,EACrB,KAAK,IAAM,OACX,KAAK,UAAY,GACjB,KAAK,UAAYA,EAAgBlO,EAAQ8H,GAAM9H,CAAK,EACpD,KAAK,OAASkO,EAAgBlO,EAAQ+J,GAAW/J,CAAK,CACxD,CACA,IAAI,OAAQ,CACV,OAAAsN,GAAc,IAAI,EACX,KAAK,MACd,CACA,IAAI,MAAMM,EAAQ,CAChB,MAAMO,EAAiB,KAAK,eAAiBnF,GAAU4E,CAAM,GAAK7E,GAAW6E,CAAM,EAC1EA,EAAAO,EAAiBP,EAAS9F,GAAM8F,CAAM,EAC3C5M,GAAW4M,EAAQ,KAAK,SAAS,IACnC,KAAK,UAAYA,EACjB,KAAK,OAASO,EAAiBP,EAAS7D,GAAW6D,CAAM,EACzCR,GAAA,KAAM,CAAS,EAEnC,CACF,CAIA,SAASgB,GAAMT,EAAM,CACnB,OAAOjF,GAAMiF,CAAI,EAAIA,EAAK,MAAQA,CACpC,CAIA,MAAMU,GAAwB,CAC5B,IAAK,CAACvH,EAAQlI,EAAKsJ,IAAakG,GAAM,QAAQ,IAAItH,EAAQlI,EAAKsJ,CAAQ,CAAC,EACxE,IAAK,CAACpB,EAAQlI,EAAKoB,EAAOkI,IAAa,CAC/B,MAAAjH,EAAW6F,EAAOlI,CAAG,EAC3B,OAAI8J,GAAMzH,CAAQ,GAAK,CAACyH,GAAM1I,CAAK,GACjCiB,EAAS,MAAQjB,EACV,IAEA,QAAQ,IAAI8G,EAAQlI,EAAKoB,EAAOkI,CAAQ,CAEnD,CACF,EACA,SAASoG,GAAUC,EAAgB,CACjC,OAAO3B,GAAW2B,CAAc,EAAIA,EAAiB,IAAI,MAAMA,EAAgBF,EAAqB,CACtG,CAsBA,SAASG,GAAOjH,EAAQ,CAIhB,MAAAlF,EAAMhD,GAAQkI,CAAM,EAAI,IAAI,MAAMA,EAAO,MAAM,EAAI,GACzD,UAAW3I,KAAO2I,EAChBlF,EAAIzD,CAAG,EAAI6P,GAAclH,EAAQ3I,CAAG,EAE/B,OAAAyD,CACT,CACA,MAAMqM,EAAc,CAClB,YAAYC,EAASlL,EAAMmL,EAAe,CACxC,KAAK,QAAUD,EACf,KAAK,KAAOlL,EACZ,KAAK,cAAgBmL,EACrB,KAAK,UAAY,EACnB,CACA,IAAI,OAAQ,CACV,MAAMtQ,EAAM,KAAK,QAAQ,KAAK,IAAI,EAC3B,OAAAA,IAAQ,OAAS,KAAK,cAAgBA,CAC/C,CACA,IAAI,MAAMsP,EAAQ,CACX,KAAA,QAAQ,KAAK,IAAI,EAAIA,CAC5B,CACA,IAAI,KAAM,CACR,OAAOtG,GAAmBQ,GAAM,KAAK,OAAO,EAAG,KAAK,IAAI,CAC1D,CACF,CAsBA,SAAS2G,GAAcI,EAAQjQ,EAAKkQ,EAAc,CAC1C,MAAAxQ,EAAMuQ,EAAOjQ,CAAG,EACf,OAAA8J,GAAMpK,CAAG,EAAIA,EAAM,IAAIoQ,GAAcG,EAAQjQ,EAAKkQ,CAAY,CACvE,CC9rCA;AAAA;AAAA;AAAA;GAgMA,SAASC,GAAsBzO,EAAI0O,EAAUjI,EAAMc,EAAM,CACnD,GAAA,CACF,OAAOA,EAAOvH,EAAG,GAAGuH,CAAI,EAAIvH,EAAG,QACxB2O,EAAK,CACAC,GAAAD,EAAKD,EAAUjI,CAAI,CACjC,CACF,CACA,SAASoI,GAA2B7O,EAAI0O,EAAUjI,EAAMc,EAAM,CACxD,GAAAnI,GAAWY,CAAE,EAAG,CAClB,MAAMuB,EAAMkN,GAAsBzO,EAAI0O,EAAUjI,EAAMc,CAAI,EACtD,OAAAhG,GAAO/B,GAAU+B,CAAG,GAClBA,EAAA,MAAOoN,GAAQ,CACLC,GAAAD,EAAKD,EAAUjI,CAAI,CAAA,CAChC,EAEIlF,CACT,CACI,GAAAxC,GAAQiB,CAAE,EAAG,CACf,MAAM8O,EAAS,CAAA,EACf,QAASlQ,EAAI,EAAGA,EAAIoB,EAAG,OAAQpB,IACtBkQ,EAAA,KAAKD,GAA2B7O,EAAGpB,CAAC,EAAG8P,EAAUjI,EAAMc,CAAI,CAAC,EAE9D,OAAAuH,CAKT,CACF,CACA,SAASF,GAAYD,EAAKD,EAAUjI,EAAMsI,EAAa,GAAM,CACrD,MAAAC,EAAeN,EAAWA,EAAS,MAAQ,KACjD,GAAIA,EAAU,CACZ,IAAIO,EAAMP,EAAS,OACnB,MAAMQ,EAAkBR,EAAS,MAC3BS,EAAmF,8CAA8C1I,CAAI,GAC3I,KAAOwI,GAAK,CACV,MAAMG,EAAqBH,EAAI,GAC/B,GAAIG,GACF,QAASxQ,EAAI,EAAGA,EAAIwQ,EAAmB,OAAQxQ,IAC7C,GAAIwQ,EAAmBxQ,CAAC,EAAE+P,EAAKO,EAAiBC,CAAS,IAAM,GAC7D,OAINF,EAAMA,EAAI,MACZ,CACM,MAAAI,EAAkBX,EAAS,WAAW,OAAO,aACnD,GAAIW,EAAiB,CACL3K,KACd+J,GACEY,EACA,KACA,GACA,CAACV,EAAKO,EAAiBC,CAAS,CAAA,EAEpBtK,KACd,MACF,CACF,CACSyK,GAAAX,EAAKlI,EAAMuI,EAAcD,CAAU,CAC9C,CACA,SAASO,GAASX,EAAKlI,EAAMuI,EAAcD,EAAa,GAAM,CAgB1D,QAAQ,MAAMJ,CAAG,CAErB,CAEA,IAAIY,GAAa,GACbC,GAAiB,GACrB,MAAMC,GAAQ,CAAA,EACd,IAAIC,GAAa,EACjB,MAAMC,GAAsB,CAAA,EAC5B,IAAIC,GAAqB,KACrBC,GAAiB,EACrB,MAAMC,WAA0C,UAChD,IAAIC,GAAsB,KAE1B,SAASC,GAAShQ,EAAI,CACpB,MAAMiQ,EAAIF,IAAuBD,GAC1B,OAAA9P,EAAKiQ,EAAE,KAAK,KAAOjQ,EAAG,KAAK,IAAI,EAAIA,CAAE,EAAIiQ,CAClD,CACA,SAASC,GAAmBC,EAAI,CAC9B,IAAIC,EAAQV,GAAa,EACrBW,EAAMZ,GAAM,OAChB,KAAOW,EAAQC,GAAK,CACZ,MAAAC,EAASF,EAAQC,IAAQ,EACzBE,EAAYd,GAAMa,CAAM,EACxBE,EAAcC,GAAMF,CAAS,EAC/BC,EAAcL,GAAMK,IAAgBL,GAAMI,EAAU,IACtDH,EAAQE,EAAS,EAEXD,EAAAC,CAEV,CACO,OAAAF,CACT,CACA,SAASM,GAASC,EAAK,EACjB,CAAClB,GAAM,QAAU,CAACA,GAAM,SAC1BkB,EACApB,IAAcoB,EAAI,aAAejB,GAAa,EAAIA,EAAA,KAE9CiB,EAAI,IAAM,KACZlB,GAAM,KAAKkB,CAAG,EAEdlB,GAAM,OAAOS,GAAmBS,EAAI,EAAE,EAAG,EAAGA,CAAG,EAEtCC,KAEf,CACA,SAASA,IAAa,CAChB,CAACrB,IAAc,CAACC,KACDA,GAAA,GACKO,GAAAD,GAAgB,KAAKe,EAAS,EAExD,CACA,SAASC,GAAcH,EAAK,CACpB,MAAA/R,EAAI6Q,GAAM,QAAQkB,CAAG,EACvB/R,EAAI8Q,IACAD,GAAA,OAAO7Q,EAAG,CAAC,CAErB,CACA,SAASmS,GAAiBC,EAAI,CACvBjS,GAAQiS,CAAE,EAQOrB,GAAA,KAAK,GAAGqB,CAAE,GAP1B,CAACpB,IAAsB,CAACA,GAAmB,SAC7CoB,EACAA,EAAG,aAAenB,GAAiB,EAAIA,EAAA,IAEvCF,GAAoB,KAAKqB,CAAE,EAKpBJ,IACb,CACA,SAASK,GAAiBvC,EAAUwC,EAAMtS,EAAI2Q,GAAaG,GAAa,EAAI,EAAG,CAItE,KAAA9Q,EAAI6Q,GAAM,OAAQ7Q,IAAK,CACtB,MAAAoS,EAAKvB,GAAM7Q,CAAC,EACd,GAAAoS,GAAMA,EAAG,IAAK,CAChB,GAAItC,GAAYsC,EAAG,KAAOtC,EAAS,IACjC,SAKIe,GAAA,OAAO7Q,EAAG,CAAC,EACjBA,IACGoS,GACL,CACF,CACF,CACA,SAASG,GAAkBD,EAAM,CAC/B,GAAIvB,GAAoB,OAAQ,CAC9B,MAAMyB,EAAU,CAAC,GAAG,IAAI,IAAIzB,EAAmB,CAAC,EAAE,KAChD,CAACpN,EAAGC,IAAMiO,GAAMlO,CAAC,EAAIkO,GAAMjO,CAAC,CAAA,EAG9B,GADAmN,GAAoB,OAAS,EACzBC,GAAoB,CACHA,GAAA,KAAK,GAAGwB,CAAO,EAClC,MACF,CAKA,IAJqBxB,GAAAwB,EAIhBvB,GAAiB,EAAGA,GAAiBD,GAAmB,OAAQC,KAInED,GAAmBC,EAAc,IAEdD,GAAA,KACJC,GAAA,CACnB,CACF,CACA,MAAMY,GAASE,GAAQA,EAAI,IAAM,KAAO,IAAWA,EAAI,GACjDU,GAAa,CAAC9O,EAAGC,IAAM,CAC3B,MAAM8O,EAAOb,GAAMlO,CAAC,EAAIkO,GAAMjO,CAAC,EAC/B,GAAI8O,IAAS,EAAG,CACV,GAAA/O,EAAE,KAAO,CAACC,EAAE,IACP,MAAA,GACL,GAAAA,EAAE,KAAO,CAACD,EAAE,IACP,MAAA,EACX,CACO,OAAA+O,CACT,EACA,SAAST,GAAUK,EAAM,CACN1B,GAAA,GACJD,GAAA,GAIbE,GAAM,KAAK4B,EAAU,EAEjB,GAAA,CACF,IAAK3B,GAAa,EAAGA,GAAaD,GAAM,OAAQC,KAAc,CACtD,MAAAiB,EAAMlB,GAAMC,EAAU,EACxBiB,GAAOA,EAAI,SAAW,IAIFlC,GAAAkC,EAAK,KAAM,EAAE,CAEvC,CAAA,QACA,CACajB,GAAA,EACbD,GAAM,OAAS,EACf0B,GAAsB,EACT5B,GAAA,GACSQ,GAAA,MAClBN,GAAM,QAAUE,GAAoB,SACtCkB,GAAc,CAElB,CACF,CA6OA,SAASU,GAAK7C,EAAU8C,KAAUC,EAAS,CACzC,GAAI/C,EAAS,YACX,OACI,MAAAgD,EAAQhD,EAAS,MAAM,OAASzQ,GA0BtC,IAAIsJ,EAAOkK,EACLlT,MAAAA,EAAkBiT,EAAM,WAAW,SAAS,EAC5CG,EAAWpT,GAAmBiT,EAAM,MAAM,CAAC,EAC7C,GAAAG,GAAYA,KAAYD,EAAO,CACjC,MAAME,EAAe,GAAGD,IAAa,aAAe,QAAUA,CAAQ,YAChE,CAAE,OAAAE,EAAQ,KAAAC,CAAA,EAASJ,EAAME,CAAY,GAAK3T,GAC5C6T,IACKvK,EAAAkK,EAAQ,IAAKlP,GAAMlD,GAASkD,CAAC,EAAIA,EAAE,KAAK,EAAIA,CAAC,GAElDsP,IACKtK,EAAAkK,EAAQ,IAAIvQ,EAAa,EAEpC,CAiBI,IAAA6Q,EACAC,EAAUN,EAAMK,EAActR,GAAa+Q,CAAK,CAAC,GACrDE,EAAMK,EAActR,GAAaN,GAASqR,CAAK,CAAC,CAAC,EAC7C,CAACQ,GAAWzT,IACdyT,EAAUN,EAAMK,EAActR,GAAaF,GAAUiR,CAAK,CAAC,CAAC,GAE1DQ,GACFnD,GACEmD,EACAtD,EACA,EACAnH,CAAA,EAGE,MAAA0K,EAAcP,EAAMK,EAAc,MAAM,EAC9C,GAAIE,EAAa,CACX,GAAA,CAACvD,EAAS,QACZA,EAAS,QAAU,WACVA,EAAS,QAAQqD,CAAW,EACrC,OAEOrD,EAAA,QAAQqD,CAAW,EAAI,GAChClD,GACEoD,EACAvD,EACA,EACAnH,CAAA,CAEJ,CACF,CACA,SAAS2K,GAAsBC,EAAMC,EAAYC,EAAU,GAAO,CAChE,MAAMpS,EAAQmS,EAAW,WACnBE,EAASrS,EAAM,IAAIkS,CAAI,EAC7B,GAAIG,IAAW,OACN,OAAAA,EAET,MAAM9F,EAAM2F,EAAK,MACjB,IAAI1Q,EAAa,CAAA,EACb8Q,EAAa,GACU,GAAA,CAACnT,GAAW+S,CAAI,EAAG,CACtC,MAAAK,EAAeC,GAAS,CAC5B,MAAMC,EAAuBR,GAAsBO,EAAML,EAAY,EAAI,EACrEM,IACWH,EAAA,GACb/T,GAAOiD,EAAYiR,CAAoB,EACzC,EAEE,CAACL,GAAWD,EAAW,OAAO,QACrBA,EAAA,OAAO,QAAQI,CAAW,EAEnCL,EAAK,SACPK,EAAYL,EAAK,OAAO,EAEtBA,EAAK,QACFA,EAAA,OAAO,QAAQK,CAAW,CAEnC,CACI,MAAA,CAAChG,GAAO,CAAC+F,GACPhT,GAAS4S,CAAI,GACTlS,EAAA,IAAIkS,EAAM,IAAI,EAEf,OAELpT,GAAQyN,CAAG,EACbA,EAAI,QAASlO,GAAQmD,EAAWnD,CAAG,EAAI,IAAI,EAE3CE,GAAOiD,EAAY+K,CAAG,EAEpBjN,GAAS4S,CAAI,GACTlS,EAAA,IAAIkS,EAAM1Q,CAAU,EAErBA,EACT,CACA,SAASkR,GAAeC,EAAStU,EAAK,CACpC,MAAI,CAACsU,GAAW,CAACvU,GAAKC,CAAG,EAChB,IAETA,EAAMA,EAAI,MAAM,CAAC,EAAE,QAAQ,QAAS,EAAE,EAC/BQ,GAAO8T,EAAStU,EAAI,CAAC,EAAE,YAAY,EAAIA,EAAI,MAAM,CAAC,CAAC,GAAKQ,GAAO8T,EAASrS,GAAUjC,CAAG,CAAC,GAAKQ,GAAO8T,EAAStU,CAAG,EACvH,CAEA,IAAIuU,GAA2B,KAC3BC,GAAiB,KACrB,SAASC,GAA4BrE,EAAU,CAC7C,MAAMsE,EAAOH,GACc,OAAAA,GAAAnE,EACVoE,GAAApE,GAAYA,EAAS,KAAK,WAAa,KACjDsE,CACT,CAQA,SAASC,GAAQjT,EAAIkT,EAAML,GAA0BM,EAAiB,CAGpE,GAFI,CAACD,GAEDlT,EAAG,GACE,OAAAA,EAEH,MAAAoT,EAAsB,IAAI7L,IAAS,CACnC6L,EAAoB,IACtBC,GAAiB,EAAE,EAEf,MAAAC,EAAeP,GAA4BG,CAAG,EAChD,IAAA3R,EACA,GAAA,CACIA,EAAAvB,EAAG,GAAGuH,CAAI,CAAA,QAChB,CACAwL,GAA4BO,CAAY,EACpCF,EAAoB,IACtBC,GAAiB,CAAC,CAEtB,CAIO,OAAA9R,CAAA,EAET,OAAA6R,EAAoB,GAAK,GACzBA,EAAoB,GAAK,GACzBA,EAAoB,GAAK,GAClBA,CACT,CAMA,SAASG,GAAoB7E,EAAU,CAC/B,KAAA,CACJ,KAAM8E,EACN,MAAAC,EACA,MAAApH,EACA,UAAAqH,EACA,aAAc,CAACC,CAAY,EAC3B,MAAAC,EACA,MAAAC,EACA,KAAAtC,EACA,OAAAuC,EACA,YAAAC,EACA,MAAArC,EACA,KAAAsC,EACA,WAAAC,EACA,IAAAf,EACA,aAAAgB,CACE,EAAAxF,EACEsE,EAAOD,GAA4BrE,CAAQ,EAC7C,IAAA9F,EACAuL,EAIA,GAAA,CACE,GAAAV,EAAM,UAAY,EAAG,CACvB,MAAMW,EAAaV,GAAarH,EAC1BgI,EASDD,EACIxL,EAAA0L,GACPR,EAAO,KACLO,EACAD,EACAL,EACqErC,EACrEuC,EACAD,EACAd,CACF,CAAA,EAEiBiB,EAAAN,CAAA,KACd,CACL,MAAMU,EAAUf,EAIP5K,EAAA0L,GACPC,EAAQ,OAAS,EAAIA,EACkD7C,EAQjE,CAAE,MAAAmC,EAAO,MAAAD,EAAO,KAAArC,CAAK,CAAA,EACvBgD,EACmE7C,EACrE,IACF,CAAA,EAEFyC,EAAmBX,EAAU,MAAQK,EAAQW,GAAyBX,CAAK,CAC7E,QACOlF,EAAK,CACZ8F,GAAW,OAAS,EACR7F,GAAAD,EAAKD,EAAU,CAAC,EAC5B9F,EAAS8L,GAAYC,EAAO,CAC9B,CACA,IAAIC,EAAOhM,EAKP,GAAAuL,GAAoBD,IAAiB,GAAO,CACxC,MAAAW,EAAO,OAAO,KAAKV,CAAgB,EACnC,CAAE,UAAAW,CAAc,EAAAF,EAClBC,EAAK,QACHC,EAAa,IACXnB,GAAgBkB,EAAK,KAAKtW,EAAe,IACxB4V,EAAAY,GACjBZ,EACAR,CAAA,GAGJiB,EAAOI,GAAWJ,EAAMT,EAAkB,GAAO,EAAI,EA2B3D,CACA,OAAIV,EAAM,OAMRmB,EAAOI,GAAWJ,EAAM,KAAM,GAAO,EAAI,EACpCA,EAAA,KAAOA,EAAK,KAAOA,EAAK,KAAK,OAAOnB,EAAM,IAAI,EAAIA,EAAM,MAE3DA,EAAM,aAMRmB,EAAK,WAAanB,EAAM,YAKf7K,EAAAgM,EAEX7B,GAA4BC,CAAI,EACzBpK,CACT,CA6CA,MAAM4L,GAA4BX,GAAU,CACtC,IAAAtS,EACJ,UAAWjD,KAAOuV,GACZvV,IAAQ,SAAWA,IAAQ,SAAWD,GAAKC,CAAG,MAC/CiD,IAAQA,EAAM,KAAKjD,CAAG,EAAIuV,EAAMvV,CAAG,GAGjC,OAAAiD,CACT,EACMwT,GAAuB,CAAClB,EAAOnC,IAAU,CAC7C,MAAMnQ,EAAM,CAAA,EACZ,UAAWjD,KAAOuV,GACZ,CAACtV,GAAgBD,CAAG,GAAK,EAAEA,EAAI,MAAM,CAAC,IAAKoT,MACzCnQ,EAAAjD,CAAG,EAAIuV,EAAMvV,CAAG,GAGjB,OAAAiD,CACT,EAIA,SAAS0T,GAAsBC,EAAWC,EAAWC,EAAW,CAC9D,KAAM,CAAE,MAAOC,EAAW,SAAUC,EAAc,UAAAC,CAAc,EAAAL,EAC1D,CAAE,MAAOM,EAAW,SAAUC,EAAc,UAAAC,CAAc,EAAAP,EAC1DQ,EAAQJ,EAAU,aAIpB,GAAAJ,EAAU,MAAQA,EAAU,WACvB,MAAA,GAEL,GAAAC,GAAaM,GAAa,EAAG,CAC/B,GAAIA,EAAY,KACP,MAAA,GAET,GAAIA,EAAY,GACd,OAAKL,EAGEO,GAAgBP,EAAWG,EAAWG,CAAK,EAFzC,CAAC,CAACH,EAGb,GAAWE,EAAY,EAAG,CACxB,MAAMG,EAAeV,EAAU,aAC/B,QAASvW,EAAI,EAAGA,EAAIiX,EAAa,OAAQjX,IAAK,CACtC,MAAAN,EAAMuX,EAAajX,CAAC,EACtB,GAAA4W,EAAUlX,CAAG,IAAM+W,EAAU/W,CAAG,GAAK,CAACqU,GAAegD,EAAOrX,CAAG,EAC1D,MAAA,EAEX,CACF,CAAA,KAEA,QAAIgX,GAAgBG,KACd,CAACA,GAAgB,CAACA,EAAa,SAC1B,GAGPJ,IAAcG,EACT,GAEJH,EAGAG,EAGEI,GAAgBP,EAAWG,EAAWG,CAAK,EAFzC,GAHA,CAAC,CAACH,EAON,MAAA,EACT,CACA,SAASI,GAAgBP,EAAWG,EAAWM,EAAc,CACrD,MAAAC,EAAW,OAAO,KAAKP,CAAS,EACtC,GAAIO,EAAS,SAAW,OAAO,KAAKV,CAAS,EAAE,OACtC,MAAA,GAET,QAAS,EAAI,EAAG,EAAIU,EAAS,OAAQ,IAAK,CAClC,MAAAzX,EAAMyX,EAAS,CAAC,EAClB,GAAAP,EAAUlX,CAAG,IAAM+W,EAAU/W,CAAG,GAAK,CAACqU,GAAemD,EAAcxX,CAAG,EACjE,MAAA,EAEX,CACO,MAAA,EACT,CACA,SAAS0X,GAAgB,CAAE,MAAAvC,EAAO,OAAAwC,CAAA,EAAUtX,EAAI,CAC9C,KAAOsX,GAAQ,CACb,MAAMrB,EAAOqB,EAAO,QAIpB,GAHIrB,EAAK,UAAYA,EAAK,SAAS,eAAiBnB,IAClDmB,EAAK,GAAKnB,EAAM,IAEdmB,IAASnB,GACVA,EAAQwC,EAAO,OAAO,GAAKtX,EAC5BsX,EAASA,EAAO,WAEhB,MAEJ,CACF,CAOA,MAAMC,GAAyB,OAAO,IAAI,OAAO,EAiD3CC,GAAc1P,GAASA,EAAK,aAojBlC,SAAS2P,GAAwBpW,EAAIqW,EAAU,CACzCA,GAAYA,EAAS,cACnBtX,GAAQiB,CAAE,EACHqW,EAAA,QAAQ,KAAK,GAAGrW,CAAE,EAElBqW,EAAA,QAAQ,KAAKrW,CAAE,EAG1B+Q,GAAiB/Q,CAAE,CAEvB,CAoBA,MAAMsW,GAAgB,OAAO,IAAI,OAAO,EAClCC,GAAgB,IAENC,GAAOF,EAAa,EA2B9BG,GAAwB,CAAA,EAC9B,SAASC,GAAMnI,EAAQyC,EAAI4B,EAAS,CAM3B,OAAA+D,GAAQpI,EAAQyC,EAAI4B,CAAO,CACpC,CACA,SAAS+D,GAAQpI,EAAQyC,EAAI,CAC3B,UAAA4F,EACA,KAAAC,EACA,MAAAC,EACA,KAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAAIhZ,GAAW,CACb,GAAI+S,GAAM+F,EAAM,CACd,MAAMG,EAAMlG,EACZA,EAAK,IAAIzJ,IAAS,CAChB2P,EAAI,GAAG3P,CAAI,EACH4P,GAAA,CAEZ,CA8BA,MAAMzI,EAAW0I,GACXC,EAAkBC,GAAYT,IAAS,GAAOS,EAElDC,GAASD,EAAST,IAAS,GAAQ,EAAI,MAAM,EAE3C,IAAAlK,EACA6K,EAAe,GACfC,EAAgB,GAyCpB,GAxCIrP,GAAMmG,CAAM,GACd5B,EAAS,IAAM4B,EAAO,MACtBiJ,EAAe9O,GAAU6F,CAAM,GACtBjC,GAAWiC,CAAM,GACjB5B,EAAA,IAAM0K,EAAe9I,CAAM,EACrBiJ,EAAA,IACNzY,GAAQwP,CAAM,GACPkJ,EAAA,GACDD,EAAAjJ,EAAO,KAAMmJ,GAAMpL,GAAWoL,CAAC,GAAKhP,GAAUgP,CAAC,CAAC,EAC/D/K,EAAS,IAAM4B,EAAO,IAAKmJ,GAAM,CAC3B,GAAAtP,GAAMsP,CAAC,EACT,OAAOA,EAAE,MACX,GAAWpL,GAAWoL,CAAC,EACrB,OAAOL,EAAeK,CAAC,EACzB,GAAWtY,GAAWsY,CAAC,EACd,OAAAjJ,GAAsBiJ,EAAGhJ,EAAU,CAAC,CAG7C,CACD,GACQtP,GAAWmP,CAAM,EACtByC,EACFrE,EAAS,IAAM8B,GAAsBF,EAAQG,EAAU,CAAC,EAExD/B,EAAS,KACHxG,GACMA,IAEH0I,GACLN,EACAG,EACA,EACA,CAACiJ,CAAS,CAAA,GAKPhL,EAAAxO,GAGP6S,GAAM6F,EAAM,CACd,MAAMe,EAAajL,EACVA,EAAA,IAAM4K,GAASK,EAAA,CAAY,CACtC,CACI,IAAAzR,EACAwR,EAAa3X,GAAO,CACZkE,EAAAA,EAAO,OAAS,IAAM,CACRuK,GAAAzO,EAAI0O,EAAU,CAAC,EACrCvI,EAAUjC,EAAO,OAAS,MAAA,CAC5B,EAEE2T,EACJ,GAAIC,GAWF,GAVYH,EAAAxZ,GACP6S,EAEM4F,GACkB/H,GAAAmC,EAAItC,EAAU,EAAG,CAC1C/B,EAAO,EACP8K,EAAgB,CAAK,EAAA,OACrBE,CAAA,CACD,EANMhL,IAQLmK,IAAU,OAAQ,CACpB,MAAM5D,EAAMqD,KACZsB,EAAa3E,EAAI,mBAAqBA,EAAI,iBAAmB,CAAC,EAAA,KAEvD,QAAA/U,GAGP,IAAAwC,EAAW8W,EAAgB,IAAI,MAAMlJ,EAAO,MAAM,EAAE,KAAKkI,EAAqB,EAAIA,GACtF,MAAM9F,EAAM,IAAM,CAChB,GAAI,GAACzM,EAAO,QAAU,CAACA,EAAO,OAG9B,GAAI8M,EAAI,CACA,MAAArK,EAAWzC,EAAO,OACpB2S,GAAQW,IAAiBC,EAAgB9Q,EAAS,KAAK,CAACpD,EAAG3E,IAAM8B,GAAW6C,EAAG5C,EAAS/B,CAAC,CAAC,CAAC,EAAI8B,GAAWiG,EAAUhG,CAAQ,MAC1HwF,GACMA,IAEiB0I,GAAAmC,EAAItC,EAAU,EAAG,CAC1C/H,EAEAhG,IAAa8V,GAAwB,OAASgB,GAAiB9W,EAAS,CAAC,IAAM8V,GAAwB,CAAA,EAAK9V,EAC5GgX,CAAA,CACD,EACUhX,EAAAgG,EACb,MAEAzC,EAAO,IAAI,CACb,EAEEyM,EAAA,aAAe,CAAC,CAACK,EACjB,IAAAvM,EACAqS,IAAU,OACArS,EAAAkM,EACHmG,IAAU,OACnBrS,EAAY,IAAMsT,GAAsBpH,EAAKjC,GAAYA,EAAS,QAAQ,GAE1EiC,EAAI,IAAM,GACNjC,IACFiC,EAAI,GAAKjC,EAAS,KACRjK,EAAA,IAAMiM,GAASC,CAAG,GAEhC,MAAMzM,EAAS,IAAIK,GAAeoI,EAAQxO,GAAMsG,CAAS,EACnDN,EAAQC,KACR+S,EAAU,IAAM,CACpBjT,EAAO,KAAK,EACRC,GACK1F,GAAA0F,EAAM,QAASD,CAAM,CAC9B,EAMF,OAAI8M,EACE4F,EACEjG,IAEJhQ,EAAWuD,EAAO,MAEX4S,IAAU,OACnBiB,GACE7T,EAAO,IAAI,KAAKA,CAAM,EACtBwK,GAAYA,EAAS,QAAA,EAGvBxK,EAAO,IAAI,EAET2T,GACFA,EAAW,KAAKV,CAAO,EAClBA,CACT,CACA,SAASa,GAAczJ,EAAQ7O,EAAOkT,EAAS,CAC7C,MAAMqF,EAAa,KAAK,MAClBtL,EAAStN,GAASkP,CAAM,EAAIA,EAAO,SAAS,GAAG,EAAI2J,GAAiBD,EAAY1J,CAAM,EAAI,IAAM0J,EAAW1J,CAAM,EAAIA,EAAO,KAAK0J,EAAYA,CAAU,EACzJ,IAAAjH,EACA5R,GAAWM,CAAK,EACbsR,EAAAtR,GAELsR,EAAKtR,EAAM,QACDkT,EAAAlT,GAEN,MAAAyY,EAAQC,GAAmB,IAAI,EAC/B7W,EAAMoV,GAAQhK,EAAQqE,EAAG,KAAKiH,CAAU,EAAGrF,CAAO,EAClD,OAAAuF,IACC5W,CACT,CACA,SAAS2W,GAAiBhF,EAAKmF,EAAM,CAC7B,MAAAC,EAAWD,EAAK,MAAM,GAAG,EAC/B,MAAO,IAAM,CACX,IAAIpJ,EAAMiE,EACV,QAAS,EAAI,EAAG,EAAIoF,EAAS,QAAUrJ,EAAK,IACpCA,EAAAA,EAAIqJ,EAAS,CAAC,CAAC,EAEhB,OAAArJ,CAAA,CAEX,CACA,SAASsI,GAAS7X,EAAO6Y,EAAQ,IAAUrH,EAAM,CAK3C,GAJAqH,GAAS,GAAK,CAAChZ,GAASG,CAAK,GAAKA,EAAM,WAGrCwR,EAAAA,OAA4B,IAC/BA,EAAK,IAAIxR,CAAK,GACT,OAAAA,EAIL,GAFJwR,EAAK,IAAIxR,CAAK,EACd6Y,IACInQ,GAAM1I,CAAK,EACJ6X,GAAA7X,EAAM,MAAO6Y,EAAOrH,CAAI,UACxBnS,GAAQW,CAAK,EACtB,QAASd,EAAI,EAAGA,EAAIc,EAAM,OAAQd,IAChC2Y,GAAS7X,EAAMd,CAAC,EAAG2Z,EAAOrH,CAAI,UAEvBhS,GAAMQ,CAAK,GAAKV,GAAMU,CAAK,EAC9BA,EAAA,QAAS6D,GAAM,CACVgU,GAAAhU,EAAGgV,EAAOrH,CAAI,CAAA,CACxB,UACQtR,GAAcF,CAAK,EAC5B,UAAWpB,KAAOoB,EAChB6X,GAAS7X,EAAMpB,CAAG,EAAGia,EAAOrH,CAAI,EAG7B,OAAAxR,CACT,CAOA,SAAS8Y,GAAe/E,EAAOgF,EAAY,CACzC,GAAI5F,KAA6B,KAExB,OAAAY,EAET,MAAM/E,EAAWgK,GAAe7F,EAAwB,GAAKA,GAAyB,MAChF8F,EAAWlF,EAAM,OAASA,EAAM,KAAO,CAAA,GAC7C,QAAS,EAAI,EAAG,EAAIgF,EAAW,OAAQ,IAAK,CACtC,GAAA,CAACG,EAAKlZ,EAAOoB,EAAK+X,EAAY5a,EAAS,EAAIwa,EAAW,CAAC,EACvDG,IACExZ,GAAWwZ,CAAG,IACVA,EAAA,CACJ,QAASA,EACT,QAASA,CAAA,GAGTA,EAAI,MACNrB,GAAS7X,CAAK,EAEhBiZ,EAAS,KAAK,CACZ,IAAAC,EACA,SAAAlK,EACA,MAAAhP,EACA,SAAU,OACV,IAAAoB,EACA,UAAA+X,CAAA,CACD,EAEL,CACO,OAAApF,CACT,CACA,SAASqF,GAAoBrF,EAAOyB,EAAWxG,EAAUxM,EAAM,CAC7D,MAAMyW,EAAWlF,EAAM,KACjBsF,EAAc7D,GAAaA,EAAU,KAC3C,QAAStW,EAAI,EAAGA,EAAI+Z,EAAS,OAAQ/Z,IAAK,CAClC,MAAAoa,EAAUL,EAAS/Z,CAAC,EACtBma,IACMC,EAAA,SAAWD,EAAYna,CAAC,EAAE,OAEhC,IAAAqa,EAAOD,EAAQ,IAAI9W,CAAI,EACvB+W,IACYvU,KACamK,GAAAoK,EAAMvK,EAAU,EAAG,CAC5C+E,EAAM,GACNuF,EACAvF,EACAyB,CAAA,CACD,EACarQ,KAElB,CACF,CAuVA,MAAMqU,GAAkBta,GAAM,CAAC,CAACA,EAAE,KAAK,cA2IjCua,GAAe1F,GAAUA,EAAM,KAAK,cA0M1C,SAAS2F,GAAYH,EAAMzS,EAAQ,CACX6S,GAAAJ,EAAM,IAAKzS,CAAM,CACzC,CACA,SAAS8S,GAAcL,EAAMzS,EAAQ,CACb6S,GAAAJ,EAAM,KAAMzS,CAAM,CAC1C,CACA,SAAS6S,GAAsBJ,EAAMxS,EAAMD,EAAS4Q,GAAiB,CACnE,MAAMmC,EAAcN,EAAK,QAAUA,EAAK,MAAQ,IAAM,CACpD,IAAIO,EAAUhT,EACd,KAAOgT,GAAS,CACd,GAAIA,EAAQ,cACV,OAEFA,EAAUA,EAAQ,MACpB,CACA,OAAOP,EAAK,CAAA,GAGd,GADWQ,GAAAhT,EAAM8S,EAAa/S,CAAM,EAChCA,EAAQ,CACV,IAAIgT,EAAUhT,EAAO,OACd,KAAAgT,GAAWA,EAAQ,QACpBL,GAAYK,EAAQ,OAAO,KAAK,GACZE,GAAAH,EAAa9S,EAAMD,EAAQgT,CAAO,EAE1DA,EAAUA,EAAQ,MAEtB,CACF,CACA,SAASE,GAAsBT,EAAMxS,EAAMD,EAAQmT,EAAe,CAChE,MAAMC,EAAWH,GACfhT,EACAwS,EACAU,EACA,EAAA,EAGFE,GAAY,IAAM,CACTpb,GAAAkb,EAAclT,CAAI,EAAGmT,CAAQ,GACnCpT,CAAM,CACX,CASA,SAASiT,GAAWhT,EAAMwS,EAAMzS,EAAS4Q,GAAiB0C,EAAU,GAAO,CACzE,GAAItT,EAAQ,CACV,MAAMuT,EAAQvT,EAAOC,CAAI,IAAMD,EAAOC,CAAI,EAAI,CAAA,GACxC8S,EAAcN,EAAK,QAAUA,EAAK,MAAQ,IAAI1R,IAAS,CAC3D,GAAIf,EAAO,YACT,OAEY9B,KACR,MAAAyT,EAAQC,GAAmB5R,CAAM,EACjCjF,EAAMsN,GAA2BoK,EAAMzS,EAAQC,EAAMc,CAAI,EACzD,OAAA4Q,IACQtT,KACPtD,CAAA,GAET,OAAIuY,EACFC,EAAM,QAAQR,CAAW,EAEzBQ,EAAM,KAAKR,CAAW,EAEjBA,CAMT,CACF,CACA,MAAMS,GAAcC,GAAc,CAAChB,EAAMzS,EAAS4Q,MAE/C,CAACU,IAAyBmC,IAAc,OAASR,GAAWQ,EAAW,IAAI1S,IAAS0R,EAAK,GAAG1R,CAAI,EAAGf,CAAM,EAEtG0T,GAAgBF,GAAW,IAAI,EAC/BG,GAAYH,GAAW,GAAG,EAC1BI,GAAiBJ,GAAW,IAAI,EAChCK,GAAYL,GAAW,GAAG,EAC1BM,GAAkBN,GAAW,KAAK,EAClCH,GAAcG,GAAW,IAAI,EAC7BO,GAAmBP,GAAW,IAAI,EAClCQ,GAAoBR,GACxB,KACF,EACMS,GAAkBT,GACtB,KACF,EACA,SAASU,GAAgBzB,EAAMzS,EAAS4Q,GAAiB,CAC5CqC,GAAA,KAAMR,EAAMzS,CAAM,CAC/B,CAEA,SAASmU,GAAWpM,EAAQqM,EAAY3a,EAAO4a,EAAO,CAChD,IAAA9Y,EACE,MAAAuQ,EAASrS,EACf,GAAIlB,GAAQwP,CAAM,GAAKlP,GAASkP,CAAM,EAAG,CACjCxM,EAAA,IAAI,MAAMwM,EAAO,MAAM,EAC7B,QAAS3P,EAAI,EAAGkF,EAAIyK,EAAO,OAAQ3P,EAAIkF,EAAGlF,IACpCmD,EAAAnD,CAAC,EAAIgc,EAAWrM,EAAO3P,CAAC,EAAGA,EAAG,OAAQ0T,CAAmB,CAC/D,SACS,OAAO/D,GAAW,SAAU,CAI/BxM,EAAA,IAAI,MAAMwM,CAAM,EACtB,QAAS3P,EAAI,EAAGA,EAAI2P,EAAQ3P,IACtBmD,EAAAnD,CAAC,EAAIgc,EAAWhc,EAAI,EAAGA,EAAG,OAAQ0T,CAAmB,CAC3D,SACS/S,GAASgP,CAAM,EACpB,GAAAA,EAAO,OAAO,QAAQ,EACxBxM,EAAM,MAAM,KACVwM,EACA,CAAC/M,EAAM5C,IAAMgc,EAAWpZ,EAAM5C,EAAG,OAAQ0T,CAAmB,CAAA,MAEzD,CACC,MAAAuC,EAAO,OAAO,KAAKtG,CAAM,EACzBxM,EAAA,IAAI,MAAM8S,EAAK,MAAM,EAC3B,QAASjW,EAAI,EAAG,EAAIiW,EAAK,OAAQjW,EAAI,EAAGA,IAAK,CACrC,MAAAN,EAAMuW,EAAKjW,CAAC,EACdmD,EAAAnD,CAAC,EAAIgc,EAAWrM,EAAOjQ,CAAG,EAAGA,EAAKM,EAAG0T,CAAmB,CAC9D,CACF,MAEAvQ,EAAM,CAAA,EAKD,OAAAA,CACT,CAiFA,MAAM+Y,GAAqBlc,GACpBA,EAEDmc,GAAoBnc,CAAC,EAChB8Z,GAAe9Z,CAAC,GAAKA,EAAE,MACzBkc,GAAkBlc,EAAE,MAAM,EAHxB,KAKLoc,GAGmCxc,GAAA,OAAO,OAAO,IAAI,EAAG,CAC1D,EAAII,GAAMA,EACV,IAAMA,GAAMA,EAAE,MAAM,GACpB,MAAQA,GAAMA,EAAE,KAChB,OAASA,GAA6EA,EAAE,MACxF,OAASA,GAA6EA,EAAE,MACxF,OAASA,GAA6EA,EAAE,MACxF,MAAQA,GAA4EA,EAAE,KACtF,QAAUA,GAAMkc,GAAkBlc,EAAE,MAAM,EAC1C,MAAQA,GAAMkc,GAAkBlc,EAAE,IAAI,EACtC,MAAQA,GAAMA,EAAE,KAChB,SAAWA,GAA4Bqc,GAAqBrc,CAAC,EAC7D,aAAeA,GAAMA,EAAE,IAAMA,EAAE,EAAI,IAAM,CACvCA,EAAE,OAAO,MAAQ,GACjB8R,GAAS9R,EAAE,MAAM,CAAA,GAEnB,UAAYA,GAAMA,EAAE,IAAMA,EAAE,EAAIoR,GAAS,KAAKpR,EAAE,KAAK,GACrD,OAASA,GAA4BoZ,GAAc,KAAKpZ,CAAC,CAAI,CAC9D,EAGGsc,GAAkB,CAACC,EAAO7c,IAAQ6c,IAAUld,IAAa,CAACkd,EAAM,iBAAmBrc,GAAOqc,EAAO7c,CAAG,EACpG8c,GAA8B,CAClC,IAAI,CAAE,EAAG1M,CAAA,EAAYpQ,EAAK,CACxB,GAAIA,IAAQ,WACH,MAAA,GAEH,KAAA,CAAE,IAAA4U,EAAK,WAAAe,EAAY,KAAAD,EAAM,MAAAtC,EAAO,YAAA2J,EAAa,KAAA5U,EAAM,WAAA2L,CAAe,EAAA1D,EAIpE,IAAA4M,EACA,GAAAhd,EAAI,CAAC,IAAM,IAAK,CACZ,MAAA6C,EAAIka,EAAY/c,CAAG,EACzB,GAAI6C,IAAM,OACR,OAAQA,EAAG,CACT,IAAK,GACH,OAAO8S,EAAW3V,CAAG,EACvB,IAAK,GACH,OAAO0V,EAAK1V,CAAG,EACjB,IAAK,GACH,OAAO4U,EAAI5U,CAAG,EAChB,IAAK,GACH,OAAOoT,EAAMpT,CAAG,CACpB,KACS,IAAA4c,GAAgBjH,EAAY3V,CAAG,EACxC,OAAA+c,EAAY/c,CAAG,EAAI,EACZ2V,EAAW3V,CAAG,KACZ0V,IAAS/V,IAAaa,GAAOkV,EAAM1V,CAAG,EAC/C,OAAA+c,EAAY/c,CAAG,EAAI,EACZ0V,EAAK1V,CAAG,EACjB,IAGGgd,EAAkB5M,EAAS,aAAa,CAAC,IAAM5P,GAAOwc,EAAiBhd,CAAG,EAE3E,OAAA+c,EAAY/c,CAAG,EAAI,EACZoT,EAAMpT,CAAG,KACP4U,IAAQjV,IAAaa,GAAOoU,EAAK5U,CAAG,EAC7C,OAAA+c,EAAY/c,CAAG,EAAI,EACZ4U,EAAI5U,CAAG,EACmBid,KACjCF,EAAY/c,CAAG,EAAI,GAEvB,CACM,MAAAkd,EAAeR,GAAoB1c,CAAG,EAC5C,IAAImd,EAAWC,EACf,GAAIF,EACF,OAAIld,IAAQ,UACJiI,GAAAmI,EAAS,MAAO,MAAO,EAAE,EAK1B8M,EAAa9M,CAAQ,EAC9B,IAEG+M,EAAYhV,EAAK,gBAAkBgV,EAAYA,EAAUnd,CAAG,GAEtD,OAAAmd,KACEvI,IAAQjV,IAAaa,GAAOoU,EAAK5U,CAAG,EAC7C,OAAA+c,EAAY/c,CAAG,EAAI,EACZ4U,EAAI5U,CAAG,EAChB,GAEEod,EAAmBtJ,EAAW,OAAO,iBAAkBtT,GAAO4c,EAAkBpd,CAAG,EAGjF,OAAOod,EAAiBpd,CAAG,CAiBjC,EACA,IAAI,CAAE,EAAGoQ,CAAS,EAAGpQ,EAAKoB,EAAO,CAC/B,KAAM,CAAE,KAAAsU,EAAM,WAAAC,EAAY,IAAAf,CAAA,EAAQxE,EAC9B,OAAAwM,GAAgBjH,EAAY3V,CAAG,GACjC2V,EAAW3V,CAAG,EAAIoB,EACX,IAIEsU,IAAS/V,IAAaa,GAAOkV,EAAM1V,CAAG,GAC/C0V,EAAK1V,CAAG,EAAIoB,EACL,IACEZ,GAAO4P,EAAS,MAAOpQ,CAAG,GAIjCA,EAAI,CAAC,IAAM,KAAOA,EAAI,MAAM,CAAC,IAAKoQ,EAI7B,IASLwE,EAAI5U,CAAG,EAAIoB,EAGR,GACT,EACA,IAAI,CACF,EAAG,CAAE,KAAAsU,EAAM,WAAAC,EAAY,YAAAoH,EAAa,IAAAnI,EAAK,WAAAd,EAAY,aAAAuB,CAAa,GACjErV,EAAK,CACF,IAAAgd,EACJ,MAAO,CAAC,CAACD,EAAY/c,CAAG,GAAK0V,IAAS/V,IAAaa,GAAOkV,EAAM1V,CAAG,GAAK4c,GAAgBjH,EAAY3V,CAAG,IAAMgd,EAAkB3H,EAAa,CAAC,IAAM7U,GAAOwc,EAAiBhd,CAAG,GAAKQ,GAAOoU,EAAK5U,CAAG,GAAKQ,GAAOkc,GAAqB1c,CAAG,GAAKQ,GAAOsT,EAAW,OAAO,iBAAkB9T,CAAG,CAC3R,EACA,eAAekI,EAAQlI,EAAKqd,EAAY,CAClC,OAAAA,EAAW,KAAO,KACbnV,EAAA,EAAE,YAAYlI,CAAG,EAAI,EACnBQ,GAAO6c,EAAY,OAAO,GACnC,KAAK,IAAInV,EAAQlI,EAAKqd,EAAW,MAAO,IAAI,EAEvC,QAAQ,eAAenV,EAAQlI,EAAKqd,CAAU,CACvD,CACF,EAgJA,SAASC,GAAsBlK,EAAO,CAC7B,OAAA3S,GAAQ2S,CAAK,EAAIA,EAAM,OAC5B,CAACjQ,EAAYwO,KAAOxO,EAAWwO,CAAC,EAAI,KAAMxO,GAC1C,CAAC,CACC,EAAAiQ,CACN,CAuEA,IAAI6J,GAAoB,GACxB,SAASM,GAAanN,EAAU,CACxB,MAAAkE,EAAUqI,GAAqBvM,CAAQ,EACvCuJ,EAAavJ,EAAS,MACtBwE,EAAMxE,EAAS,IACD6M,GAAA,GAChB3I,EAAQ,cACDkJ,GAAAlJ,EAAQ,aAAclE,EAAU,IAAI,EAEzC,KAAA,CAEJ,KAAMqN,EACN,SAAUC,EACV,QAAAC,EACA,MAAOC,EACP,QAASC,EACT,OAAQC,EAER,QAAAC,EACA,YAAAC,EACA,QAAAC,EACA,aAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,cAAAC,EACA,cAAAC,EACA,UAAAC,EACA,UAAAC,EACA,OAAAjJ,EACA,cAAAkJ,EACA,gBAAAC,EACA,cAAAC,EACA,eAAAC,EAEA,OAAAC,EACA,aAAAlJ,EAEA,WAAAmJ,EACA,WAAA5E,GACA,QAAA6E,EACE,EAAA1K,EAaJ,GAHIwJ,GACgBmB,GAAAnB,EAAelJ,EAVqE,IAUxC,EAE5D+I,EACF,UAAW3d,MAAO2d,EAAS,CACnB,MAAAuB,GAAgBvB,EAAQ3d,EAAG,EAC7Bc,GAAWoe,EAAa,IASxBtK,EAAI5U,EAAG,EAAIkf,GAAc,KAAKvF,CAAU,EAU9C,CAEF,GAAI8D,EAAa,CAMf,MAAM/H,GAAO+H,EAAY,KAAK9D,EAAYA,CAAU,EAM/C1Y,GAASyU,EAAI,IAGPtF,EAAA,KAAOpG,GAAS0L,EAAI,EAejC,CAEA,GADoBuH,GAAA,GAChBS,EACF,UAAW1d,MAAO0d,EAAiB,CAC3B,MAAAyB,GAAMzB,EAAgB1d,EAAG,EACzB6K,GAAM/J,GAAWqe,EAAG,EAAIA,GAAI,KAAKxF,EAAYA,CAAU,EAAI7Y,GAAWqe,GAAI,GAAG,EAAIA,GAAI,IAAI,KAAKxF,EAAYA,CAAU,EAAI9Z,GAIxHJ,GAAM,CAACqB,GAAWqe,EAAG,GAAKre,GAAWqe,GAAI,GAAG,EAAIA,GAAI,IAAI,KAAKxF,CAAU,EAIzE9Z,GACEkC,GAAI8E,GAAS,CACjB,IAAAgE,GACA,IAAApL,EAAA,CACD,EACM,OAAA,eAAemV,EAAK5U,GAAK,CAC9B,WAAY,GACZ,aAAc,GACd,IAAK,IAAM+B,GAAE,MACb,IAAMkD,GAAMlD,GAAE,MAAQkD,CAAA,CACvB,CAIH,CAEF,GAAI2Y,EACF,UAAW5d,MAAO4d,EAChBwB,GAAcxB,EAAa5d,EAAG,EAAG4U,EAAK+E,EAAY3Z,EAAG,EAGzD,GAAI6d,EAAgB,CAClB,MAAMwB,GAAWve,GAAW+c,CAAc,EAAIA,EAAe,KAAKlE,CAAU,EAAIkE,EAChF,QAAQ,QAAQwB,EAAQ,EAAE,QAASrf,IAAQ,CACjCsf,GAAAtf,GAAKqf,GAASrf,EAAG,CAAC,CAAA,CAC3B,CACH,CACI+d,GACOP,GAAAO,EAAS3N,EAAU,GAAG,EAExB,SAAAmP,GAAsBC,GAAU7E,GAAM,CACzCla,GAAQka,EAAI,EACTA,GAAA,QAAS8E,IAAUD,GAASC,GAAM,KAAK9F,CAAU,CAAC,CAAC,EAC/CgB,IACA6E,GAAA7E,GAAK,KAAKhB,CAAU,CAAC,CAElC,CAaI,GAZJ4F,GAAsB3D,GAAeoC,CAAW,EAChDuB,GAAsB1D,GAAWoC,CAAO,EACxCsB,GAAsBzD,GAAgBoC,CAAY,EAClDqB,GAAsBxD,GAAWoC,CAAO,EACxCoB,GAAsBzE,GAAasD,CAAS,EAC5CmB,GAAsBvE,GAAeqD,CAAW,EAChDkB,GAAsBnD,GAAiBwC,CAAa,EACpDW,GAAsBpD,GAAiBuC,CAAa,EACpDa,GAAsBrD,GAAmByC,CAAe,EACxDY,GAAsBvD,GAAiBuC,CAAa,EACpDgB,GAAsBhE,GAAakD,CAAS,EAC5Cc,GAAsBtD,GAAkB4C,CAAc,EAClDpe,GAAQqe,CAAM,EAChB,GAAIA,EAAO,OAAQ,CACjB,MAAMY,GAAUtP,EAAS,UAAYA,EAAS,QAAU,CAAA,GACjD0O,EAAA,QAAS9e,IAAQ,CACf,OAAA,eAAe0f,GAAS1f,GAAK,CAClC,IAAK,IAAM2Z,EAAW3Z,EAAG,EACzB,IAAMN,IAAQia,EAAW3Z,EAAG,EAAIN,EAAA,CACjC,CAAA,CACF,CAAA,MACS0Q,EAAS,UACnBA,EAAS,QAAU,IAGnBoF,GAAUpF,EAAS,SAAWvQ,KAChCuQ,EAAS,OAASoF,GAEhBI,GAAgB,OAClBxF,EAAS,aAAewF,GAEtBmJ,IACF3O,EAAS,WAAa2O,GACpB5E,KACF/J,EAAS,WAAa+J,GAC1B,CACA,SAAS8E,GAAkBnB,EAAelJ,EAAK+K,EAA2B9f,GAAM,CAC1EY,GAAQqd,CAAa,IACvBA,EAAgB8B,GAAgB9B,CAAa,GAE/C,UAAW9d,KAAO8d,EAAe,CACzB,MAAAqB,EAAMrB,EAAc9d,CAAG,EACzB,IAAAsb,EACAra,GAASke,CAAG,EACV,YAAaA,EACJ7D,EAAApD,GACTiH,EAAI,MAAQnf,EACZmf,EAAI,QACJ,EAAA,EAGS7D,EAAApD,GAAOiH,EAAI,MAAQnf,CAAG,EAGnCsb,EAAWpD,GAAOiH,CAAG,EAEnBrV,GAAMwR,CAAQ,EACT,OAAA,eAAe1G,EAAK5U,EAAK,CAC9B,WAAY,GACZ,aAAc,GACd,IAAK,IAAMsb,EAAS,MACpB,IAAMrW,GAAMqW,EAAS,MAAQrW,CAAA,CAC9B,EAED2P,EAAI5U,CAAG,EAAIsb,CAKf,CACF,CACA,SAASkC,GAAS7C,EAAMvK,EAAUjI,EAAM,CACtCoI,GACE9P,GAAQka,CAAI,EAAIA,EAAK,IAAKkF,GAAMA,EAAE,KAAKzP,EAAS,KAAK,CAAC,EAAIuK,EAAK,KAAKvK,EAAS,KAAK,EAClFA,EACAjI,CAAA,CAEJ,CACA,SAASiX,GAAclR,EAAK0G,EAAK+E,EAAY3Z,EAAK,CAC1C,MAAAqO,EAASrO,EAAI,SAAS,GAAG,EAAI4Z,GAAiBD,EAAY3Z,CAAG,EAAI,IAAM2Z,EAAW3Z,CAAG,EACvF,GAAAe,GAASmN,CAAG,EAAG,CACX,MAAAwF,EAAUkB,EAAI1G,CAAG,EACnBpN,GAAW4S,CAAO,GACpB0E,GAAM/J,EAAQqF,CAAO,CAGvB,SACS5S,GAAWoN,CAAG,EACvBkK,GAAM/J,EAAQH,EAAI,KAAKyL,CAAU,CAAC,UACzB1Y,GAASiN,CAAG,EACjB,GAAAzN,GAAQyN,CAAG,EACTA,EAAA,QAASe,GAAMmQ,GAAcnQ,EAAG2F,EAAK+E,EAAY3Z,CAAG,CAAC,MACpD,CACL,MAAM0T,EAAU5S,GAAWoN,EAAI,OAAO,EAAIA,EAAI,QAAQ,KAAKyL,CAAU,EAAI/E,EAAI1G,EAAI,OAAO,EACpFpN,GAAW4S,CAAO,GACd0E,GAAA/J,EAAQqF,EAASxF,CAAG,CAI9B,CAIJ,CACA,SAASyO,GAAqBvM,EAAU,CACtC,MAAM0P,EAAO1P,EAAS,KAChB,CAAE,OAAA2P,EAAQ,QAASC,CAAA,EAAmBF,EACtC,CACJ,OAAQG,EACR,aAActe,EACd,OAAQ,CAAE,sBAAAue,CAAsB,CAAA,EAC9B9P,EAAS,WACP4D,EAASrS,EAAM,IAAIme,CAAI,EACzB,IAAAK,EACJ,OAAInM,EACSmM,EAAAnM,EACF,CAACiM,EAAa,QAAU,CAACF,GAAU,CAACC,EAEhCG,EAAAL,GAGbK,EAAW,CAAA,EACPF,EAAa,QACFA,EAAA,QACVG,GAAMC,GAAaF,EAAUC,EAAGF,EAAuB,EAAI,CAAA,EAGnDG,GAAAF,EAAUL,EAAMI,CAAqB,GAEhDjf,GAAS6e,CAAI,GACTne,EAAA,IAAIme,EAAMK,CAAQ,EAEnBA,CACT,CACA,SAASE,GAAaC,EAAIC,EAAMC,EAAQzM,EAAU,GAAO,CACvD,KAAM,CAAE,OAAAgM,EAAQ,QAASC,CAAA,EAAmBO,EACxCP,GACWK,GAAAC,EAAIN,EAAgBQ,EAAQ,EAAI,EAE3CT,GACKA,EAAA,QACJK,GAAMC,GAAaC,EAAIF,EAAGI,EAAQ,EAAI,CAAA,EAG3C,UAAWxgB,KAAOugB,EACZ,GAAA,EAAAxM,GAAW/T,IAAQ,UAIhB,CACL,MAAMygB,EAAQC,GAA0B1gB,CAAG,GAAKwgB,GAAUA,EAAOxgB,CAAG,EACpEsgB,EAAGtgB,CAAG,EAAIygB,EAAQA,EAAMH,EAAGtgB,CAAG,EAAGugB,EAAKvgB,CAAG,CAAC,EAAIugB,EAAKvgB,CAAG,CACxD,CAEK,OAAAsgB,CACT,CACA,MAAMI,GAA4B,CAChC,KAAMC,GACN,MAAOC,GACP,MAAOA,GAEP,QAASC,GACT,SAAUA,GAEV,aAAcC,GACd,QAASA,GACT,YAAaA,GACb,QAASA,GACT,aAAcA,GACd,QAASA,GACT,cAAeA,GACf,cAAeA,GACf,UAAWA,GACX,UAAWA,GACX,UAAWA,GACX,YAAaA,GACb,cAAeA,GACf,eAAgBA,GAEhB,WAAYD,GACZ,WAAYA,GAEZ,MAAOE,GAEP,QAASJ,GACT,OAAQK,EACV,EACA,SAASL,GAAYL,EAAIC,EAAM,CAC7B,OAAKA,EAGAD,EAGE,UAAwB,CACrB,OAAApgB,GACNY,GAAWwf,CAAE,EAAIA,EAAG,KAAK,KAAM,IAAI,EAAIA,EACvCxf,GAAWyf,CAAI,EAAIA,EAAK,KAAK,KAAM,IAAI,EAAIA,CAAA,CAC7C,EANOA,EAHAD,CAWX,CACA,SAASU,GAAYV,EAAIC,EAAM,CAC7B,OAAOM,GAAmBjB,GAAgBU,CAAE,EAAGV,GAAgBW,CAAI,CAAC,CACtE,CACA,SAASX,GAAgB1R,EAAK,CACxB,GAAAzN,GAAQyN,CAAG,EAAG,CAChB,MAAMjL,EAAM,CAAA,EACZ,QAAS3C,EAAI,EAAGA,EAAI4N,EAAI,OAAQ5N,IAC9B2C,EAAIiL,EAAI5N,CAAC,CAAC,EAAI4N,EAAI5N,CAAC,EAEd,OAAA2C,CACT,CACO,OAAAiL,CACT,CACA,SAAS4S,GAAaR,EAAIC,EAAM,CAC9B,OAAOD,EAAK,CAAC,GAAG,IAAI,IAAI,CAAG,EAAA,OAAOA,EAAIC,CAAI,CAAC,CAAC,EAAIA,CAClD,CACA,SAASM,GAAmBP,EAAIC,EAAM,CAC7B,OAAAD,EAAKpgB,GAA8B,OAAA,OAAO,IAAI,EAAGogB,EAAIC,CAAI,EAAIA,CACtE,CACA,SAASK,GAAyBN,EAAIC,EAAM,CAC1C,OAAID,EACE7f,GAAQ6f,CAAE,GAAK7f,GAAQ8f,CAAI,EACtB,CAAC,GAAmB,IAAI,IAAI,CAAC,GAAGD,EAAI,GAAGC,CAAI,CAAC,CAAC,EAE/CrgB,GACW,OAAO,OAAO,IAAI,EAClCod,GAAsBgD,CAAE,EACxBhD,GAAsBiD,GAAsB,CAAA,CAAE,CAAA,EAGzCA,CAEX,CACA,SAASQ,GAAkBT,EAAIC,EAAM,CACnC,GAAI,CAACD,EACI,OAAAC,EACT,GAAI,CAACA,EACI,OAAAD,EACT,MAAMW,EAAS/gB,GAAuB,OAAO,OAAO,IAAI,EAAGogB,CAAE,EAC7D,UAAWtgB,KAAOugB,EACTU,EAAAjhB,CAAG,EAAI8gB,GAAaR,EAAGtgB,CAAG,EAAGugB,EAAKvgB,CAAG,CAAC,EAExC,OAAAihB,CACT,CAEA,SAASC,IAAmB,CACnB,MAAA,CACL,IAAK,KACL,OAAQ,CACN,YAAaphB,GACb,YAAa,GACb,iBAAkB,CAAC,EACnB,sBAAuB,CAAC,EACxB,aAAc,OACd,YAAa,OACb,gBAAiB,CAAC,CACpB,EACA,OAAQ,CAAC,EACT,WAAY,CAAC,EACb,WAAY,CAAC,EACb,SAAiC,OAAA,OAAO,IAAI,EAC5C,iBAAkC,QAClC,eAAgC,QAChC,eAAgC,OAAQ,CAE5C,CACA,IAAIqhB,GAAQ,EACZ,SAASC,GAAa5L,EAAQ6L,EAAS,CACrC,OAAO,SAAmBC,EAAeC,EAAY,KAAM,CACpDzgB,GAAWwgB,CAAa,IACXA,EAAAphB,GAAO,GAAIohB,CAAa,GAEtCC,GAAa,MAAQ,CAACtgB,GAASsgB,CAAS,IAE9BA,EAAA,MAEd,MAAMC,EAAUN,KACVO,MAAuC,QAC7C,IAAIC,EAAY,GACV,MAAAC,EAAMH,EAAQ,IAAM,CACxB,KAAML,KACN,WAAYG,EACZ,OAAQC,EACR,WAAY,KACZ,SAAUC,EACV,UAAW,KAAA,QACXI,GACA,IAAI,QAAS,CACX,OAAOJ,EAAQ,MACjB,EACA,IAAI,OAAOvc,EAAG,CAMd,EACA,IAAI4c,KAAWvN,EAAS,CAClB,OAAAmN,EAAiB,IAAII,CAAM,IAEpBA,GAAU/gB,GAAW+gB,EAAO,OAAO,GAC5CJ,EAAiB,IAAII,CAAM,EACpBA,EAAA,QAAQF,EAAK,GAAGrN,CAAO,GACrBxT,GAAW+gB,CAAM,IAC1BJ,EAAiB,IAAII,CAAM,EACpBA,EAAAF,EAAK,GAAGrN,CAAO,IAMjBqN,CACT,EACA,MAAMG,EAAO,CAET,OAAKN,EAAQ,OAAO,SAASM,CAAK,GACxBN,EAAA,OAAO,KAAKM,CAAK,EAStBH,CACT,EACA,UAAU/d,EAAMqT,EAAW,CAIzB,OAAKA,GAMGuK,EAAA,WAAW5d,CAAI,EAAIqT,EACpB0K,GANEH,EAAQ,WAAW5d,CAAI,CAOlC,EACA,UAAUA,EAAMme,EAAW,CAIzB,OAAKA,GAMGP,EAAA,WAAW5d,CAAI,EAAIme,EACpBJ,GANEH,EAAQ,WAAW5d,CAAI,CAOlC,EACA,MAAMoe,EAAeC,EAAWC,EAAW,CACzC,GAAI,CAACR,EAAW,CAOR,MAAAvM,EAAQiB,GAAYkL,EAAeC,CAAS,EAClD,OAAApM,EAAM,WAAaqM,EACfU,IAAc,GACJA,EAAA,MACHA,IAAc,KACXA,EAAA,QAWVD,GAAaZ,EACfA,EAAQlM,EAAO6M,CAAa,EAErBxM,EAAAL,EAAO6M,EAAeE,CAAS,EAE5BR,EAAA,GACZC,EAAI,WAAaK,EACjBA,EAAc,YAAcL,EAKrBvH,GAAejF,EAAM,SAAS,GAAKA,EAAM,UAAU,KAM5D,CACF,EACA,SAAU,CACJuM,IACKlM,EAAA,KAAMmM,EAAI,UAAU,EAK3B,OAAOA,EAAI,WAAW,YAI1B,EACA,QAAQ3hB,EAAKoB,EAAO,CAMV,OAAAogB,EAAA,SAASxhB,CAAG,EAAIoB,EACjBugB,CACT,EACA,eAAejgB,EAAI,CACjB,MAAMygB,EAAUC,GACHA,GAAAT,EACT,GAAA,CACF,OAAOjgB,EAAG,CAAA,QACV,CACa0gB,GAAAD,CACf,CACF,CAAA,EAEK,OAAAR,CAAA,CAEX,CACA,IAAIS,GAAa,KAEjB,SAAS9C,GAAQtf,EAAKoB,EAAO,CAC3B,GAAK0X,GAIE,CACL,IAAIuG,EAAWvG,GAAgB,SAC/B,MAAMuJ,EAAiBvJ,GAAgB,QAAUA,GAAgB,OAAO,SACpEuJ,IAAmBhD,IACrBA,EAAWvG,GAAgB,SAAW,OAAO,OAAOuJ,CAAc,GAEpEhD,EAASrf,CAAG,EAAIoB,CAClB,CACF,CACA,SAAS8W,GAAOlY,EAAKkQ,EAAcoS,EAAwB,GAAO,CAChE,MAAMlS,EAAW0I,IAAmBvE,GACpC,GAAInE,GAAYgS,GAAY,CAC1B,MAAM/C,EAAWjP,EAAWA,EAAS,QAAU,KAAOA,EAAS,MAAM,YAAcA,EAAS,MAAM,WAAW,SAAWA,EAAS,OAAO,SAAWgS,GAAW,SAAS,SACnK,GAAA/C,GAAYrf,KAAOqf,EACrB,OAAOA,EAASrf,CAAG,EACrB,GAAW,UAAU,OAAS,EACrB,OAAAsiB,GAAyBxhB,GAAWoP,CAAY,EAAIA,EAAa,KAAKE,GAAYA,EAAS,KAAK,EAAIF,CAM/G,CACF,CACA,SAASqS,IAAsB,CACtB,MAAA,CAAC,EAAEzJ,IAAmBvE,IAA4B6N,GAC3D,CAEA,MAAMI,GAAsB,CAAA,EACtBC,GAAuB,IAAM,OAAO,OAAOD,EAAmB,EAC9DE,GAAoBhgB,GAAQ,OAAO,eAAeA,CAAG,IAAM8f,GAEjE,SAASG,GAAUvS,EAAUwS,EAAUC,EAAYtU,EAAQ,GAAO,CAChE,MAAM6E,EAAQ,CAAA,EACRmC,EAAQkN,KACLrS,EAAA,cAAuC,OAAA,OAAO,IAAI,EAC9C0S,GAAA1S,EAAUwS,EAAUxP,EAAOmC,CAAK,EAC7C,UAAWvV,KAAOoQ,EAAS,aAAa,CAAC,EACjCpQ,KAAOoT,IACXA,EAAMpT,CAAG,EAAI,QAMb6iB,EACFzS,EAAS,MAAQ7B,EAAQ6E,EAAQ3F,GAAgB2F,CAAK,EAEjDhD,EAAS,KAAK,MAGjBA,EAAS,MAAQgD,EAFjBhD,EAAS,MAAQmF,EAKrBnF,EAAS,MAAQmF,CACnB,CAQA,SAASwN,GAAY3S,EAAUwS,EAAUI,EAAclM,EAAW,CAC1D,KAAA,CACJ,MAAA1D,EACA,MAAAmC,EACA,MAAO,CAAE,UAAA6B,CAAU,CACjB,EAAAhH,EACE6S,EAAkB/Z,GAAMkK,CAAK,EAC7B,CAACkB,CAAO,EAAIlE,EAAS,aAC3B,IAAI8S,EAAkB,GACtB,IAI+EpM,GAAaM,EAAY,IAAM,EAAEA,EAAY,KAE1H,GAAIA,EAAY,EAAG,CACX,MAAA+L,EAAgB/S,EAAS,MAAM,aACrC,QAAS9P,EAAI,EAAGA,EAAI6iB,EAAc,OAAQ7iB,IAAK,CACzC,IAAAN,EAAMmjB,EAAc7iB,CAAC,EACzB,GAAI+T,GAAejE,EAAS,aAAcpQ,CAAG,EAC3C,SAEI,MAAAoB,EAAQwhB,EAAS5iB,CAAG,EAC1B,GAAIsU,EACE,GAAA9T,GAAO+U,EAAOvV,CAAG,EACfoB,IAAUmU,EAAMvV,CAAG,IACrBuV,EAAMvV,CAAG,EAAIoB,EACK8hB,EAAA,QAEf,CACC,MAAAE,EAAevhB,GAAS7B,CAAG,EACjCoT,EAAMgQ,CAAY,EAAIC,GACpB/O,EACA2O,EACAG,EACAhiB,EACAgP,EACA,EAAA,CAEJ,MAEIhP,IAAUmU,EAAMvV,CAAG,IACrBuV,EAAMvV,CAAG,EAAIoB,EACK8hB,EAAA,GAGxB,CACF,MACK,CACDJ,GAAa1S,EAAUwS,EAAUxP,EAAOmC,CAAK,IAC7B2N,EAAA,IAEhB,IAAAI,EACJ,UAAWtjB,KAAOijB,GACZ,CAACL,GACL,CAACpiB,GAAOoiB,EAAU5iB,CAAG,KAEnBsjB,EAAWrhB,GAAUjC,CAAG,KAAOA,GAAO,CAACQ,GAAOoiB,EAAUU,CAAQ,MAC5DhP,EACE0O,IACHA,EAAahjB,CAAG,IAAM,QACvBgjB,EAAaM,CAAQ,IAAM,UACzBlQ,EAAMpT,CAAG,EAAIqjB,GACX/O,EACA2O,EACAjjB,EACA,OACAoQ,EACA,EAAA,GAIJ,OAAOgD,EAAMpT,CAAG,GAItB,GAAIuV,IAAU0N,EACZ,UAAWjjB,KAAOuV,GACZ,CAACqN,GAAY,CAACpiB,GAAOoiB,EAAU5iB,CAAG,KACpC,OAAOuV,EAAMvV,CAAG,EACEkjB,EAAA,GAI1B,CACIA,GACMhd,GAAAkK,EAAS,MAAO,MAAO,EAAE,CAKrC,CACA,SAAS0S,GAAa1S,EAAUwS,EAAUxP,EAAOmC,EAAO,CACtD,KAAM,CAACjB,EAASiP,CAAY,EAAInT,EAAS,aACzC,IAAI8S,EAAkB,GAClBM,EACJ,GAAIZ,EACF,QAAS5iB,KAAO4iB,EAAU,CACpB,GAAAphB,GAAexB,CAAG,EACpB,SAEI,MAAAoB,EAAQwhB,EAAS5iB,CAAG,EACtB,IAAAyjB,EACAnP,GAAW9T,GAAO8T,EAASmP,EAAW5hB,GAAS7B,CAAG,CAAC,EACjD,CAACujB,GAAgB,CAACA,EAAa,SAASE,CAAQ,EAClDrQ,EAAMqQ,CAAQ,EAAIriB,GAEjBoiB,IAAkBA,EAAgB,CAAA,IAAKC,CAAQ,EAAIriB,EAE5CiT,GAAejE,EAAS,aAAcpQ,CAAG,IAC/C,EAAEA,KAAOuV,IAAUnU,IAAUmU,EAAMvV,CAAG,KACxCuV,EAAMvV,CAAG,EAAIoB,EACK8hB,EAAA,GAGxB,CAEF,GAAIK,EAAc,CACV,MAAAN,EAAkB/Z,GAAMkK,CAAK,EAC7BsQ,EAAaF,GAAiB7jB,GACpC,QAASW,EAAI,EAAGA,EAAIijB,EAAa,OAAQjjB,IAAK,CACtC,MAAAN,EAAMujB,EAAajjB,CAAC,EAC1B8S,EAAMpT,CAAG,EAAIqjB,GACX/O,EACA2O,EACAjjB,EACA0jB,EAAW1jB,CAAG,EACdoQ,EACA,CAAC5P,GAAOkjB,EAAY1jB,CAAG,CAAA,CAE3B,CACF,CACO,OAAAkjB,CACT,CACA,SAASG,GAAiB/O,EAASlB,EAAOpT,EAAKoB,EAAOgP,EAAUuT,EAAU,CAClE,MAAAxE,EAAM7K,EAAQtU,CAAG,EACvB,GAAImf,GAAO,KAAM,CACT,MAAAyE,EAAapjB,GAAO2e,EAAK,SAAS,EACpC,GAAAyE,GAAcxiB,IAAU,OAAQ,CAClC,MAAM8O,EAAeiP,EAAI,QACrB,GAAAA,EAAI,OAAS,UAAY,CAACA,EAAI,aAAere,GAAWoP,CAAY,EAAG,CACnE,KAAA,CAAE,cAAA2T,CAAkB,EAAAzT,EAC1B,GAAIpQ,KAAO6jB,EACTziB,EAAQyiB,EAAc7jB,CAAG,MACpB,CACC,MAAA6Z,EAAQC,GAAmB1J,CAAQ,EACjChP,EAAAyiB,EAAc7jB,CAAG,EAAIkQ,EAAa,KACxC,KACAkD,CAAA,EAEIyG,GACR,CAAA,MAEQzY,EAAA8O,CAEZ,CACIiP,EAAI,CAAA,IACFwE,GAAY,CAACC,EACPxiB,EAAA,GACC+d,EAAI,CAAA,IAA4B/d,IAAU,IAAMA,IAAUa,GAAUjC,CAAG,KACxEoB,EAAA,IAGd,CACO,OAAAA,CACT,CACA,SAAS0iB,GAAsBjQ,EAAMC,EAAYC,EAAU,GAAO,CAChE,MAAMpS,EAAQmS,EAAW,WACnBE,EAASrS,EAAM,IAAIkS,CAAI,EAC7B,GAAIG,EACK,OAAAA,EAET,MAAM9F,EAAM2F,EAAK,MACX1Q,EAAa,CAAA,EACbogB,EAAe,CAAA,EACrB,IAAItP,EAAa,GACU,GAAA,CAACnT,GAAW+S,CAAI,EAAG,CACtC,MAAAkQ,EAAe5P,GAAS,CACfF,EAAA,GACb,KAAM,CAACb,EAAOmD,CAAI,EAAIuN,GAAsB3P,EAAML,EAAY,EAAI,EAClE5T,GAAOiD,EAAYiQ,CAAK,EACpBmD,GACWgN,EAAA,KAAK,GAAGhN,CAAI,CAAA,EAEzB,CAACxC,GAAWD,EAAW,OAAO,QACrBA,EAAA,OAAO,QAAQiQ,CAAW,EAEnClQ,EAAK,SACPkQ,EAAYlQ,EAAK,OAAO,EAEtBA,EAAK,QACFA,EAAA,OAAO,QAAQkQ,CAAW,CAEnC,CACI,GAAA,CAAC7V,GAAO,CAAC+F,EACP,OAAAhT,GAAS4S,CAAI,GACTlS,EAAA,IAAIkS,EAAMjU,EAAS,EAEpBA,GAEL,GAAAa,GAAQyN,CAAG,EACb,QAAS5N,EAAI,EAAGA,EAAI4N,EAAI,OAAQ5N,IAAK,CAInC,MAAM0jB,EAAgBniB,GAASqM,EAAI5N,CAAC,CAAC,EACjC2jB,GAAiBD,CAAa,IAChC7gB,EAAW6gB,CAAa,EAAIrkB,GAEhC,SACSuO,EAIT,UAAWlO,KAAOkO,EAAK,CACf,MAAA8V,EAAgBniB,GAAS7B,CAAG,EAC9B,GAAAikB,GAAiBD,CAAa,EAAG,CAC7B,MAAA7E,EAAMjR,EAAIlO,CAAG,EACbkkB,EAAO/gB,EAAW6gB,CAAa,EAAIvjB,GAAQ0e,CAAG,GAAKre,GAAWqe,CAAG,EAAI,CAAE,KAAMA,CAAA,EAAQjf,GAAO,CAAA,EAAIif,CAAG,EACzG,GAAI+E,EAAM,CACR,MAAMC,EAAeC,GAAa,QAASF,EAAK,IAAI,EAC9CG,EAAcD,GAAa,OAAQF,EAAK,IAAI,EAClDA,EAAK,CAAA,EAAsBC,EAAe,GAC1CD,EAAK,CAAsB,EAAIG,EAAc,GAAKF,EAAeE,GAC7DF,EAAe,IAAM3jB,GAAO0jB,EAAM,SAAS,IAC7CX,EAAa,KAAKS,CAAa,CAEnC,CACF,CACF,CAEI,MAAA/gB,EAAM,CAACE,EAAYogB,CAAY,EACjC,OAAAtiB,GAAS4S,CAAI,GACTlS,EAAA,IAAIkS,EAAM5Q,CAAG,EAEdA,CACT,CACA,SAASghB,GAAiBjkB,EAAK,CAC7B,OAAIA,EAAI,CAAC,IAAM,KAAO,CAACwB,GAAexB,CAAG,CAM3C,CACA,SAASskB,GAAQC,EAAM,CACrB,OAAIA,IAAS,KACJ,OAEL,OAAOA,GAAS,WACXA,EAAK,MAAQ,GACX,OAAOA,GAAS,UACZA,EAAK,aAAeA,EAAK,YAAY,MACnC,EAGnB,CACA,SAASC,GAAWvgB,EAAGC,EAAG,CACxB,OAAOogB,GAAQrgB,CAAC,IAAMqgB,GAAQpgB,CAAC,CACjC,CACA,SAASkgB,GAAajc,EAAMsc,EAAe,CACrC,OAAAhkB,GAAQgkB,CAAa,EAChBA,EAAc,UAAWC,GAAMF,GAAWE,EAAGvc,CAAI,CAAC,EAChDrH,GAAW2jB,CAAa,GAC1BD,GAAWC,EAAetc,CAAI,EAAI,EAEpC,EACT,CAyGA,MAAMwc,GAAiB3kB,GAAQA,EAAI,CAAC,IAAM,KAAOA,IAAQ,UACnD4kB,GAAsBxjB,GAAUX,GAAQW,CAAK,EAAIA,EAAM,IAAI4U,EAAc,EAAI,CAACA,GAAe5U,CAAK,CAAC,EACnGyjB,GAAgB,CAAC7kB,EAAK8kB,EAASlQ,IAAQ,CAC3C,GAAIkQ,EAAQ,GACH,OAAAA,EAEH,MAAA3hB,EAAawR,GAAQ,IAAI1L,IAMtB2b,GAAmBE,EAAQ,GAAG7b,CAAI,CAAC,EACzC2L,CAAG,EACN,OAAAzR,EAAW,GAAK,GACTA,CACT,EACM4hB,GAAuB,CAACC,EAAU1P,EAAOlF,IAAa,CAC1D,MAAMwE,EAAMoQ,EAAS,KACrB,UAAWhlB,KAAOglB,EAAU,CAC1B,GAAIL,GAAc3kB,CAAG,EACnB,SACI,MAAAoB,EAAQ4jB,EAAShlB,CAAG,EACtB,GAAAc,GAAWM,CAAK,EAClBkU,EAAMtV,CAAG,EAAI6kB,GAAc7kB,EAAKoB,EAAOwT,CAAG,UACjCxT,GAAS,KAAM,CAMlB,MAAA+B,EAAayhB,GAAmBxjB,CAAK,EACrCkU,EAAAtV,CAAG,EAAI,IAAMmD,CACrB,CACF,CACF,EACM8hB,GAAsB,CAAC7U,EAAU8U,IAAa,CAM5C,MAAA/hB,EAAayhB,GAAmBM,CAAQ,EACrC9U,EAAA,MAAM,QAAU,IAAMjN,CACjC,EACMgiB,GAAY,CAAC/U,EAAU8U,IAAa,CAClC,MAAA5P,EAAQlF,EAAS,MAAQqS,GAAqB,EAChD,GAAArS,EAAS,MAAM,UAAY,GAAI,CACjC,MAAMjI,EAAO+c,EAAS,EAClB/c,GACFjI,GAAOoV,EAAO4P,CAAQ,EAClBziB,GAAA6S,EAAO,IAAKnN,EAAM,EAAI,GAE1B4c,GAAqBG,EAAU5P,CAAK,OAE7B4P,GACTD,GAAoB7U,EAAU8U,CAAQ,CAE1C,EACME,GAAc,CAAChV,EAAU8U,EAAUpO,IAAc,CAC/C,KAAA,CAAE,MAAA3B,EAAO,MAAAG,CAAU,EAAAlF,EACzB,IAAIiV,EAAoB,GACpBC,EAA2B3lB,GAC3B,GAAAwV,EAAM,UAAY,GAAI,CACxB,MAAMhN,EAAO+c,EAAS,EAClB/c,EAIS2O,GAAa3O,IAAS,EACXkd,EAAA,IAEpBnlB,GAAOoV,EAAO4P,CAAQ,EAClB,CAACpO,GAAa3O,IAAS,GACzB,OAAOmN,EAAM,IAIjB+P,EAAoB,CAACH,EAAS,QAC9BH,GAAqBG,EAAU5P,CAAK,GAEXgQ,EAAAJ,OAClBA,IACTD,GAAoB7U,EAAU8U,CAAQ,EACXI,EAAA,CAAE,QAAS,IAExC,GAAID,EACF,UAAWrlB,KAAOsV,EACZ,CAACqP,GAAc3kB,CAAG,GAAKslB,EAAyBtlB,CAAG,GAAK,MAC1D,OAAOsV,EAAMtV,CAAG,CAIxB,EAEA,SAASulB,GAAOC,EAAQC,EAAWC,EAAgBvQ,EAAOwQ,EAAY,GAAO,CACvE,GAAAllB,GAAQ+kB,CAAM,EAAG,CACZA,EAAA,QACL,CAACvW,EAAG3O,IAAMilB,GACRtW,EACAwW,IAAchlB,GAAQglB,CAAS,EAAIA,EAAUnlB,CAAC,EAAImlB,GAClDC,EACAvQ,EACAwQ,CACF,CAAA,EAEF,MACF,CACA,GAAI/K,GAAezF,CAAK,GAAK,CAACwQ,EAC5B,OAEI,MAAAC,EAAWzQ,EAAM,UAAY,EAAIiF,GAAejF,EAAM,SAAS,GAAKA,EAAM,UAAU,MAAQA,EAAM,GAClG/T,EAAQukB,EAAY,KAAOC,EAC3B,CAAE,EAAGC,EAAO,EAAG3W,GAAQsW,EAOvBM,EAASL,GAAaA,EAAU,EAChCM,EAAOF,EAAM,OAASlmB,GAAYkmB,EAAM,KAAO,CAAA,EAAKA,EAAM,KAC1DlQ,EAAakQ,EAAM,WAWrB,GAVAC,GAAU,MAAQA,IAAW5W,IAC3BnO,GAAS+kB,CAAM,GACjBC,EAAKD,CAAM,EAAI,KACXtlB,GAAOmV,EAAYmQ,CAAM,IAC3BnQ,EAAWmQ,CAAM,EAAI,OAEdhc,GAAMgc,CAAM,IACrBA,EAAO,MAAQ,OAGfhlB,GAAWoO,CAAG,EAChBiB,GAAsBjB,EAAK2W,EAAO,GAAI,CAACzkB,EAAO2kB,CAAI,CAAC,MAC9C,CACC,MAAAC,EAAYjlB,GAASmO,CAAG,EACxB+W,EAASnc,GAAMoF,CAAG,EACxB,GAAI8W,GAAaC,EAAQ,CACvB,MAAMC,EAAQ,IAAM,CAClB,GAAIV,EAAO,EAAG,CACZ,MAAMW,EAAWH,EAAYxlB,GAAOmV,EAAYzG,CAAG,EAAIyG,EAAWzG,CAAG,EAAI6W,EAAK7W,CAAG,EAAIA,EAAI,MACrFyW,EACFllB,GAAQ0lB,CAAQ,GAAKhmB,GAAOgmB,EAAUP,CAAQ,EAEzCnlB,GAAQ0lB,CAAQ,EAWTA,EAAS,SAASP,CAAQ,GACpCO,EAAS,KAAKP,CAAQ,EAXlBI,GACG9W,EAAAA,CAAG,EAAI,CAAC0W,CAAQ,EACjBplB,GAAOmV,EAAYzG,CAAG,IACbA,EAAAA,CAAG,EAAI6W,EAAK7W,CAAG,KAG5BA,EAAI,MAAQ,CAAC0W,CAAQ,EACjBJ,EAAO,IACJO,EAAAP,EAAO,CAAC,EAAItW,EAAI,aAMpB8W,GACTD,EAAK7W,CAAG,EAAI9N,EACRZ,GAAOmV,EAAYzG,CAAG,IACxByG,EAAWzG,CAAG,EAAI9N,IAEX6kB,IACT/W,EAAI,MAAQ9N,EACRokB,EAAO,IACJO,EAAAP,EAAO,CAAC,EAAIpkB,GAGrB,EAEEA,GACF8kB,EAAM,GAAK,GACXzM,GAAsByM,EAAOR,CAAc,GAErCQ,GAIV,CACF,CACF,CA4oBA,MAAMzM,GAAwB3B,GAC9B,SAASsO,GAAe9R,EAAS,CAC/B,OAAO+R,GAAmB/R,CAAO,CACnC,CAIA,SAAS+R,GAAmB/R,EAASgS,EAAoB,CAIvD,MAAMpe,EAASnF,KACfmF,EAAO,QAAU,GAIX,KAAA,CACJ,OAAQqe,EACR,OAAQC,EACR,UAAWC,EACX,cAAeC,EACf,WAAYC,EACZ,cAAeC,EACf,QAASC,EACT,eAAgBC,EAChB,WAAYC,EACZ,YAAaC,EACb,WAAYC,EAAiBpnB,GAC7B,oBAAqBqnB,CACnB,EAAA5S,EACE6S,EAAQ,CAACC,EAAIC,EAAIC,GAAWC,GAAS,KAAMC,EAAkB,KAAM9B,GAAiB,KAAMxD,GAAY,OAAQuF,GAAe,KAAM3Q,GAAiF,CAAC,CAACuQ,EAAG,kBAAoB,CACjP,GAAID,IAAOC,EACT,OAEED,GAAM,CAACM,GAAgBN,EAAIC,CAAE,IAC/BE,GAASI,GAAgBP,CAAE,EACnBQ,EAAAR,EAAII,EAAiB9B,GAAgB,EAAI,EAC5C0B,EAAA,MAEHC,EAAG,YAAc,KACPvQ,GAAA,GACZuQ,EAAG,gBAAkB,MAEvB,KAAM,CAAE,KAAAlf,GAAM,IAAA+G,GAAK,UAAAsH,IAAc6Q,EACjC,OAAQlf,GAAM,CACZ,KAAK0f,GACSC,EAAAV,EAAIC,EAAIC,GAAWC,EAAM,EACrC,MACF,KAAKlR,GACgB0R,EAAAX,EAAIC,EAAIC,GAAWC,EAAM,EAC5C,MACF,KAAKS,GACCZ,GAAM,MACQa,EAAAZ,EAAIC,GAAWC,GAAQrF,EAAS,EAIlD,MACF,KAAKgG,GACHC,EACEf,EACAC,EACAC,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAEF,MACF,QACMN,GAAY,EACd4R,EACEhB,EACAC,EACAC,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAEON,GAAY,EACrB6R,GACEjB,EACAC,EACAC,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,GAEON,GAAY,IAaZA,GAAY,MAChBrO,GAAA,QACHif,EACAC,EACAC,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,GACAwR,EAAA,CAKR,CACIpZ,IAAO,MAAQsY,GACVtY,GAAAA,GAAKkY,GAAMA,EAAG,IAAK1B,GAAgB2B,GAAMD,EAAI,CAACC,CAAE,CACzD,EAEIS,EAAc,CAACV,EAAIC,EAAIC,GAAWC,KAAW,CACjD,GAAIH,GAAM,KACRb,EACEc,EAAG,GAAKV,EAAeU,EAAG,QAAQ,EAClCC,GACAC,EAAA,MAEG,CACC,MAAAlnB,EAAKgnB,EAAG,GAAKD,EAAG,GAClBC,EAAG,WAAaD,EAAG,UACTP,EAAAxmB,EAAIgnB,EAAG,QAAQ,CAE/B,CAAA,EAEIU,EAAqB,CAACX,EAAIC,EAAIC,GAAWC,KAAW,CACpDH,GAAM,KACRb,EACEc,EAAG,GAAKT,EAAkBS,EAAG,UAAY,EAAE,EAC3CC,GACAC,EAAA,EAGFF,EAAG,GAAKD,EAAG,EACb,EAEIa,EAAkB,CAACZ,EAAIC,EAAWC,GAAQrF,KAAc,CAC5D,CAACmF,EAAG,GAAIA,EAAG,MAAM,EAAIH,EACnBG,EAAG,SACHC,EACAC,GACArF,GACAmF,EAAG,GACHA,EAAG,MAAA,CACL,EAiBIkB,EAAiB,CAAC,CAAE,GAAAloB,EAAI,OAAAknB,CAAO,EAAGD,GAAWkB,KAAgB,CAC7D,IAAAC,EACG,KAAApoB,GAAMA,IAAOknB,GAClBkB,EAAOzB,EAAgB3mB,CAAE,EACdkmB,EAAAlmB,EAAIinB,GAAWkB,EAAW,EAChCnoB,EAAAooB,EAEIlC,EAAAgB,EAAQD,GAAWkB,EAAW,CAAA,EAErCE,EAAmB,CAAC,CAAE,GAAAroB,EAAI,OAAAknB,KAAa,CACvC,IAAAkB,GACG,KAAApoB,GAAMA,IAAOknB,GAClBkB,GAAOzB,EAAgB3mB,CAAE,EACzBmmB,EAAWnmB,CAAE,EACRA,EAAAooB,GAEPjC,EAAWe,CAAM,CAAA,EAEba,EAAiB,CAAChB,EAAIC,EAAIC,GAAWC,GAAQC,EAAiB9B,GAAgBxD,GAAWuF,GAAc3Q,KAAc,CACrHuQ,EAAG,OAAS,MACFnF,GAAA,MACHmF,EAAG,OAAS,SACTnF,GAAA,UAEVkF,GAAM,KACRuB,EACEtB,EACAC,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAGF8R,EACExB,EACAC,EACAG,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,CAEJ,EAEI6R,EAAe,CAACxT,EAAOmS,EAAWC,GAAQC,GAAiB9B,EAAgBxD,GAAWuF,GAAc3Q,KAAc,CAClH,IAAAzW,GACAwoB,GACJ,KAAM,CAAE,MAAAzV,GAAO,UAAAoD,GAAW,WAAAsS,GAAY,KAAAC,IAAS5T,EAyB/C,GAxBA9U,GAAK8U,EAAM,GAAKuR,EACdvR,EAAM,KACN+M,GACA9O,IAASA,GAAM,GACfA,EAAA,EAEEoD,GAAY,EACKsQ,EAAAzmB,GAAI8U,EAAM,QAAQ,EAC5BqB,GAAY,IACrBwS,EACE7T,EAAM,SACN9U,GACA,KACAmnB,GACA9B,EACAuD,GAAyB9T,EAAO+M,EAAS,EACzCuF,GACA3Q,EAAA,EAGAiS,IACkBvO,GAAArF,EAAO,KAAMqS,GAAiB,SAAS,EAE7D0B,EAAW7oB,GAAI8U,EAAOA,EAAM,QAASsS,GAAcD,EAAe,EAC9DpU,GAAO,CACT,UAAWpT,MAAOoT,GACZpT,KAAQ,SAAW,CAACwB,GAAexB,EAAG,GACxCymB,EACEpmB,GACAL,GACA,KACAoT,GAAMpT,EAAG,EACTkiB,GACA/M,EAAM,SACNqS,GACA9B,EACAyD,CAAA,EAIF,UAAW/V,IACbqT,EAAcpmB,GAAI,QAAS,KAAM+S,GAAM,MAAO8O,EAAS,GAErD2G,GAAYzV,GAAM,qBACJgW,GAAAP,GAAWrB,GAAiBrS,CAAK,CAErD,CAWI4T,IACkBvO,GAAArF,EAAO,KAAMqS,GAAiB,aAAa,EAE3D,MAAA6B,GAA0BC,GAAe5D,EAAgBoD,EAAU,EACrEO,IACFP,GAAW,YAAYzoB,EAAE,EAEhBkmB,EAAAlmB,GAAIinB,EAAWC,EAAM,IAC3BsB,GAAYzV,IAASA,GAAM,iBAAmBiW,IAA2BN,KAC5EtP,GAAsB,IAAM,CACboP,IAAAO,GAAgBP,GAAWrB,GAAiBrS,CAAK,EACnCkU,IAAAP,GAAW,MAAMzoB,EAAE,EAC9C0oB,IAAQvO,GAAoBrF,EAAO,KAAMqS,GAAiB,SAAS,GAClE9B,CAAc,CACnB,EAEIwD,EAAa,CAAC7oB,EAAI8U,EAAOoU,GAAS9B,GAAcD,IAAoB,CAIxE,GAHI+B,IACFtC,EAAe5mB,EAAIkpB,EAAO,EAExB9B,GACF,QAASnnB,GAAI,EAAGA,GAAImnB,GAAa,OAAQnnB,KACxB2mB,EAAA5mB,EAAIonB,GAAannB,EAAC,CAAC,EAGtC,GAAIknB,EAAiB,CACnB,IAAIgC,GAAUhC,EAAgB,QAI9B,GAAIrS,IAAUqU,GAAS,CACrB,MAAMC,GAAcjC,EAAgB,MACpC0B,EACE7oB,EACAopB,GACAA,GAAY,QACZA,GAAY,aACZjC,EAAgB,MAAA,CAEpB,CACF,CAAA,EAEIwB,EAAgB,CAAC9D,EAAUoC,EAAWC,GAAQC,GAAiB9B,EAAgBxD,GAAWuF,GAAc3Q,GAAWhF,GAAQ,IAAM,CACrI,QAASxR,GAAIwR,GAAOxR,GAAI4kB,EAAS,OAAQ5kB,KAAK,CAC5C,MAAMopB,GAAQxE,EAAS5kB,EAAC,EAAIwW,GAAY6S,GAAezE,EAAS5kB,EAAC,CAAC,EAAI0V,GAAekP,EAAS5kB,EAAC,CAAC,EAChG6mB,EACE,KACAuC,GACApC,EACAC,GACAC,GACA9B,EACAxD,GACAuF,GACA3Q,EAAA,CAEJ,CAAA,EAEI8R,EAAe,CAACxB,EAAIC,EAAIG,GAAiB9B,GAAgBxD,EAAWuF,GAAc3Q,KAAc,CAC9F,MAAAzW,GAAKgnB,EAAG,GAAKD,EAAG,GACtB,GAAI,CAAE,UAAAhQ,GAAW,gBAAAwS,GAAiB,KAAAb,EAAA,EAAS1B,EAC3CjQ,IAAagQ,EAAG,UAAY,GACtB,MAAAyC,GAAWzC,EAAG,OAASznB,GACvBmqB,GAAWzC,EAAG,OAAS1nB,GACzB,IAAAkpB,GAwCJ,GAvCmBrB,IAAAuC,GAAcvC,GAAiB,EAAK,GACnDqB,GAAYiB,GAAS,sBACPV,GAAAP,GAAWrB,GAAiBH,EAAID,CAAE,EAEhD2B,IACkBvO,GAAA6M,EAAID,EAAII,GAAiB,cAAc,EAE1CA,IAAAuC,GAAcvC,GAAiB,EAAI,EAMlDoC,GACFI,EACE5C,EAAG,gBACHwC,GACAvpB,GACAmnB,GACA9B,GACAuD,GAAyB5B,EAAInF,CAAS,EACtCuF,EAAA,EAKQ3Q,IACVmT,GACE7C,EACAC,EACAhnB,GACA,KACAmnB,GACA9B,GACAuD,GAAyB5B,EAAInF,CAAS,EACtCuF,GACA,EAAA,EAGArQ,GAAY,EAAG,CACjB,GAAIA,GAAY,GACd8S,EACE7pB,GACAgnB,EACAwC,GACAC,GACAtC,GACA9B,GACAxD,CAAA,UAGE9K,GAAY,GACVyS,GAAS,QAAUC,GAAS,OAC9BrD,EAAcpmB,GAAI,QAAS,KAAMypB,GAAS,MAAO5H,CAAS,EAG1D9K,GAAY,GACdqP,EAAcpmB,GAAI,QAASwpB,GAAS,MAAOC,GAAS,MAAO5H,CAAS,EAElE9K,GAAY,EAAG,CACjB,MAAM+L,GAAgBkE,EAAG,aACzB,QAAS/mB,GAAI,EAAGA,GAAI6iB,GAAc,OAAQ7iB,KAAK,CACvC,MAAAN,EAAMmjB,GAAc7iB,EAAC,EACrBoU,EAAOmV,GAAS7pB,CAAG,EACnByoB,GAAOqB,GAAS9pB,CAAG,GACrByoB,KAAS/T,GAAQ1U,IAAQ,UAC3BymB,EACEpmB,GACAL,EACA0U,EACA+T,GACAvG,EACAkF,EAAG,SACHI,GACA9B,GACAyD,CAAA,CAGN,CACF,CAEE/R,GAAY,GACVgQ,EAAG,WAAaC,EAAG,UACFP,EAAAzmB,GAAIgnB,EAAG,QAAQ,CAG7B,KAAA,CAACvQ,IAAa8S,IAAmB,MAC1CM,EACE7pB,GACAgnB,EACAwC,GACAC,GACAtC,GACA9B,GACAxD,CAAA,IAGC2G,GAAYiB,GAAS,iBAAmBf,KAC3CtP,GAAsB,IAAM,CAC1BoP,IAAaO,GAAgBP,GAAWrB,GAAiBH,EAAID,CAAE,EAC/D2B,IAAQvO,GAAoB6M,EAAID,EAAII,GAAiB,SAAS,GAC7D9B,EAAc,CACnB,EAEIsE,EAAqB,CAACG,EAAaC,EAAaC,GAAmB7C,GAAiB9B,EAAgBxD,GAAWuF,KAAiB,CACpI,QAASnnB,GAAI,EAAGA,GAAI8pB,EAAY,OAAQ9pB,KAAK,CACrC,MAAAgqB,GAAWH,EAAY7pB,EAAC,EACxBiqB,GAAWH,EAAY9pB,EAAC,EACxBgnB,GAGJgD,GAAS,KAERA,GAAS,OAASpC,IAEnB,CAACR,GAAgB4C,GAAUC,EAAQ,GACnCD,GAAS,UAAa,IAAWvD,EAAeuD,GAAS,EAAE,EAGzDD,GAGJlD,EACEmD,GACAC,GACAjD,GACA,KACAE,GACA9B,EACAxD,GACAuF,GACA,EAAA,CAEJ,CAAA,EAEIyC,EAAa,CAAC7pB,EAAI8U,EAAO0U,GAAUC,GAAUtC,EAAiB9B,GAAgBxD,KAAc,CAChG,GAAI2H,KAAaC,GAAU,CACzB,GAAID,KAAalqB,GACf,UAAWK,MAAO6pB,GACZ,CAACroB,GAAexB,EAAG,GAAK,EAAEA,MAAO8pB,KACnCrD,EACEpmB,EACAL,GACA6pB,GAAS7pB,EAAG,EACZ,KACAkiB,GACA/M,EAAM,SACNqS,EACA9B,GACAyD,CAAA,EAKR,UAAWnpB,MAAO8pB,GAAU,CAC1B,GAAItoB,GAAexB,EAAG,EACpB,SACI,MAAAyoB,GAAOqB,GAAS9pB,EAAG,EACnB0U,GAAOmV,GAAS7pB,EAAG,EACrByoB,KAAS/T,IAAQ1U,KAAQ,SAC3BymB,EACEpmB,EACAL,GACA0U,GACA+T,GACAvG,GACA/M,EAAM,SACNqS,EACA9B,GACAyD,CAAA,CAGN,CACI,UAAWW,IACbrD,EAAcpmB,EAAI,QAASwpB,GAAS,MAAOC,GAAS,MAAO5H,EAAS,CAExE,CAAA,EAEIiG,EAAkB,CAACf,EAAIC,EAAIC,GAAWC,GAAQC,EAAiB9B,GAAgBxD,GAAWuF,GAAc3Q,KAAc,CAC1H,MAAM0T,GAAsBnD,EAAG,GAAKD,EAAKA,EAAG,GAAKT,EAAe,EAAE,EAC5D8D,GAAoBpD,EAAG,OAASD,EAAKA,EAAG,OAAST,EAAe,EAAE,EACxE,GAAI,CAAE,UAAAvP,GAAW,gBAAAwS,GAAiB,aAAcc,IAAyBrD,EAOrEqD,KACFjD,GAAeA,GAAeA,GAAa,OAAOiD,EAAoB,EAAIA,IAExEtD,GAAM,MACGb,EAAAiE,GAAqBlD,GAAWC,EAAM,EACtChB,EAAAkE,GAAmBnD,GAAWC,EAAM,EAC/CyB,EAKE3B,EAAG,UAAY,CAAC,EAChBC,GACAmD,GACAjD,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,GAGEM,GAAY,GAAKA,GAAY,IAAMwS,IAEvCxC,EAAG,iBACD4C,EACE5C,EAAG,gBACHwC,GACAtC,GACAE,EACA9B,GACAxD,GACAuF,EAAA,GASAJ,EAAG,KAAO,MAAQG,GAAmBH,IAAOG,EAAgB,UAE5DmD,GACEvD,EACAC,EACA,EAAA,GAKJ4C,GACE7C,EACAC,EACAC,GACAmD,GACAjD,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,CAGN,EAEIuR,GAAmB,CAACjB,EAAIC,EAAIC,GAAWC,GAAQC,EAAiB9B,GAAgBxD,GAAWuF,GAAc3Q,KAAc,CAC3HuQ,EAAG,aAAeI,GACdL,GAAM,KACJC,EAAG,UAAY,IACjBG,EAAgB,IAAI,SAClBH,EACAC,GACAC,GACArF,GACApL,EAAA,EAGF8T,GACEvD,EACAC,GACAC,GACAC,EACA9B,GACAxD,GACApL,EAAA,EAIY+T,GAAAzD,EAAIC,EAAIvQ,EAAS,CACnC,EAEI8T,GAAiB,CAACE,EAAcxD,EAAWC,GAAQC,GAAiB9B,EAAgBxD,GAAWpL,KAAc,CAC3G,MAAA1G,GAAY0a,EAAa,UAAYC,GACzCD,EACAtD,GACA9B,CAAA,EAqBF,GAZI7K,GAAYiQ,CAAY,IAC1B1a,GAAS,IAAI,SAAWkY,IAMxB0C,GAAe5a,EAAQ,EAKrBA,GAAS,UAEP,GADcsV,GAAAA,EAAe,YAAYtV,GAAU6a,EAAiB,EACpE,CAACH,EAAa,GAAI,CACpB,MAAMI,GAAc9a,GAAS,QAAUgG,GAAYC,EAAO,EACvC0R,EAAA,KAAMmD,GAAa5D,EAAWC,EAAM,CACzD,OAEA0D,GACE7a,GACA0a,EACAxD,EACAC,GACA7B,EACAxD,GACApL,EAAA,CAMJ,EAEI+T,GAAkB,CAACzD,EAAIC,EAAIvQ,KAAc,CACvC,MAAA1G,GAAWiX,EAAG,UAAYD,EAAG,UACnC,GAAIzQ,GAAsByQ,EAAIC,EAAIvQ,EAAS,EACzC,GAAI1G,GAAS,UAAY,CAACA,GAAS,cAAe,CAIvB+a,GAAA/a,GAAUiX,EAAIvQ,EAAS,EAIhD,MAAA,MAEA1G,GAAS,KAAOiX,EAChB7U,GAAcpC,GAAS,MAAM,EAC7BA,GAAS,OAAO,MAAQ,GACxBA,GAAS,OAAO,OAGlBiX,EAAG,GAAKD,EAAG,GACXhX,GAAS,MAAQiX,CACnB,EAEI4D,GAAoB,CAAC7a,EAAU0a,EAAcxD,GAAWC,GAAQ7B,EAAgBxD,GAAWpL,KAAc,CAC7G,MAAMsU,GAAoB,IAAM,CAC1B,GAAChb,EAAS,UA0FP,CACL,GAAI,CAAE,KAAAqY,GAAM,GAAA4C,GAAI,EAAAC,GAAG,OAAA3T,GAAQ,MAAAxC,EAAU,EAAA/E,EACrC,CACQ,MAAAmb,GAAuBC,GAA2Bpb,CAAQ,EAChE,GAAImb,GAAsB,CACpB9C,KACFA,GAAK,GAAKtT,GAAM,GACSgW,GAAA/a,EAAUqY,GAAM3R,EAAS,GAE/ByU,GAAA,SAAS,KAAK,IAAM,CAClCnb,EAAS,aACMgb,IACpB,CACD,EACD,MACF,CACF,CACA,IAAIK,GAAahD,GACbI,EAIJkB,GAAc3Z,EAAU,EAAK,EACzBqY,IACFA,GAAK,GAAKtT,GAAM,GACSgW,GAAA/a,EAAUqY,GAAM3R,EAAS,GAE3C2R,GAAAtT,GAELkW,IACF/oB,GAAe+oB,EAAE,GAEfxC,EAAYJ,GAAK,OAASA,GAAK,MAAM,sBACvBW,GAAAP,EAAWlR,GAAQ8Q,GAAMtT,EAAK,EAEhD4U,GAAc3Z,EAAU,EAAI,EAItB,MAAAsb,EAAWzW,GAAoB7E,CAAQ,EAIvCub,GAAWvb,EAAS,QAC1BA,EAAS,QAAUsb,EAInBvE,EACEwE,GACAD,EAEA3E,EAAe4E,GAAS,EAAE,EAE1BhE,GAAgBgE,EAAQ,EACxBvb,EACAsV,EACAxD,EAAA,EAKFuG,GAAK,GAAKiD,EAAS,GACfD,KAAe,MACD/T,GAAAtH,EAAUsb,EAAS,EAAE,EAEnCJ,IACF7R,GAAsB6R,GAAG5F,CAAc,GAErCmD,EAAYJ,GAAK,OAASA,GAAK,MAAM,iBACvChP,GACE,IAAM2P,GAAgBP,EAAWlR,GAAQ8Q,GAAMtT,EAAK,EACpDuQ,CAAA,CASN,KA3KyB,CACnB,IAAAmD,GACE,KAAA,CAAE,GAAAxoB,GAAI,MAAA+S,EAAU,EAAA0X,EAChB,CAAE,GAAAc,GAAI,EAAAxL,GAAG,OAAAzI,EAAA,EAAWvH,EACpByb,EAAsBjR,GAAekQ,CAAY,EASvD,GARAf,GAAc3Z,EAAU,EAAK,EACzBwb,IACFtpB,GAAespB,EAAE,EAEf,CAACC,IAAwBhD,GAAYzV,IAASA,GAAM,qBACtCgW,GAAAP,GAAWlR,GAAQmT,CAAY,EAEjDf,GAAc3Z,EAAU,EAAI,EACxB/P,IAAMyrB,GAAa,CACrB,MAAMC,EAAiB,IAAM,CAIlB3b,EAAA,QAAU6E,GAAoB7E,CAAQ,EAO/C0b,GACEzrB,GACA+P,EAAS,QACTA,EACAsV,EACA,IAAA,CAIF,EAEEmG,EACWf,EAAA,KAAK,gBAAgB,KAKhC,IAAM,CAAC1a,EAAS,aAAe2b,EAAe,CAAA,EAGjCA,GACjB,KACK,CAIL,MAAMvC,EAAUpZ,EAAS,QAAU6E,GAAoB7E,CAAQ,EAO/D+W,EACE,KACAqC,EACAlC,GACAC,GACAnX,EACAsV,EACAxD,EAAA,EAKF4I,EAAa,GAAKtB,EAAQ,EAC5B,CAIA,GAHIpJ,IACF3G,GAAsB2G,GAAGsF,CAAc,EAErC,CAACmG,IAAwBhD,GAAYzV,IAASA,GAAM,gBAAiB,CACvE,MAAM4Y,EAAqBlB,EAC3BrR,GACE,IAAM2P,GAAgBP,GAAWlR,GAAQqU,CAAkB,EAC3DtG,CAAA,CAEJ,EACIoF,EAAa,UAAY,KAAOnT,IAAUiD,GAAejD,GAAO,KAAK,GAAKA,GAAO,MAAM,UAAY,MACrGvH,EAAS,GAAKqJ,GAAsBrJ,EAAS,EAAGsV,CAAc,EAEhEtV,EAAS,UAAY,GAIrB0a,EAAexD,GAAYC,GAAS,IAAA,CAkFtC,EAEI3hB,GAASwK,EAAS,OAAS,IAAInK,GACnCmlB,GACAvrB,GACA,IAAMuS,GAAS6Z,EAAM,EACrB7b,EAAS,KAAA,EAGL6b,GAAS7b,EAAS,OAAS,IAAM,CACjCxK,GAAO,OACTA,GAAO,IAAI,CACb,EAEFqmB,GAAO,GAAK7b,EAAS,IACrB2Z,GAAc3Z,EAAU,EAAI,EAMrB6b,IAAA,EAEHd,GAA2B,CAAC/a,EAAUyG,EAAWC,KAAc,CACnED,EAAU,UAAYzG,EAChB,MAAA2G,GAAY3G,EAAS,MAAM,MACjCA,EAAS,MAAQyG,EACjBzG,EAAS,KAAO,KAChB2S,GAAY3S,EAAUyG,EAAU,MAAOE,GAAWD,EAAS,EAC/CsO,GAAAhV,EAAUyG,EAAU,SAAUC,EAAS,EACrC1Q,KACduM,GAAiBvC,CAAQ,EACX7J,IAAA,EAEV0jB,GAAgB,CAAC7C,EAAIC,EAAIC,GAAWC,GAAQC,EAAiB9B,GAAgBxD,GAAWuF,GAAc3Q,GAAY,KAAU,CAC1H,MAAAoV,GAAK9E,GAAMA,EAAG,SACd+E,GAAgB/E,EAAKA,EAAG,UAAY,EACpCgF,GAAK/E,EAAG,SACR,CAAE,UAAAjQ,GAAW,UAAAZ,EAAc,EAAA6Q,EACjC,GAAIjQ,GAAY,GACd,GAAIA,GAAY,IAAK,CACnBiV,GACEH,GACAE,GACA9E,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAEF,MAAA,SACSM,GAAY,IAAK,CAC1BkV,GACEJ,GACAE,GACA9E,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAEF,MACF,EAEEN,GAAY,GACV2V,GAAgB,IACFhD,EAAA+C,GAAI1E,EAAiB9B,EAAc,EAEjD0G,KAAOF,IACTpF,EAAmBQ,GAAW8E,EAAE,GAG9BD,GAAgB,GACd3V,GAAY,GACd6V,GACEH,GACAE,GACA9E,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAGcqS,EAAA+C,GAAI1E,EAAiB9B,GAAgB,EAAI,GAGvDyG,GAAgB,GAClBrF,EAAmBQ,GAAW,EAAE,EAE9B9Q,GAAY,IACdwS,EACEoD,GACA9E,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAIR,EAEIwV,GAAuB,CAACJ,EAAIE,EAAI9E,GAAWC,GAAQC,EAAiB9B,GAAgBxD,GAAWuF,GAAc3Q,KAAc,CAC/HoV,EAAKA,GAAMtsB,GACXwsB,EAAKA,GAAMxsB,GACX,MAAM2sB,GAAYL,EAAG,OACf1jB,GAAY4jB,EAAG,OACfI,GAAe,KAAK,IAAID,GAAW/jB,EAAS,EAC9C,IAAAlI,GACJ,IAAKA,GAAI,EAAGA,GAAIksB,GAAclsB,KAAK,CACjC,MAAMmsB,GAAYL,EAAG9rB,EAAC,EAAIwW,GAAY6S,GAAeyC,EAAG9rB,EAAC,CAAC,EAAI0V,GAAeoW,EAAG9rB,EAAC,CAAC,EAClF6mB,EACE+E,EAAG5rB,EAAC,EACJmsB,GACAnF,GACA,KACAE,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,CAEJ,CACIyV,GAAY/jB,GACd2gB,EACE+C,EACA1E,EACA9B,GACA,GACA,GACA8G,EAAA,EAGFxD,EACEoD,EACA9E,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,GACA0V,EAAA,CAEJ,EAEIH,GAAqB,CAACH,EAAIE,EAAI9E,GAAWoF,GAAclF,EAAiB9B,GAAgBxD,GAAWuF,GAAc3Q,KAAc,CACnI,IAAIxW,GAAI,EACR,MAAMqsB,GAAKP,EAAG,OACV,IAAAQ,GAAKV,EAAG,OAAS,EACjBW,GAAKF,GAAK,EACP,KAAArsB,IAAKssB,IAAMtsB,IAAKusB,IAAI,CACnB,MAAAzF,GAAK8E,EAAG5rB,EAAC,EACT+mB,GAAK+E,EAAG9rB,EAAC,EAAIwW,GAAY6S,GAAeyC,EAAG9rB,EAAC,CAAC,EAAI0V,GAAeoW,EAAG9rB,EAAC,CAAC,EACvE,GAAAonB,GAAgBN,GAAIC,EAAE,EACxBF,EACEC,GACAC,GACAC,GACA,KACAE,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,MAGF,OAEFxW,IACF,CACO,KAAAA,IAAKssB,IAAMtsB,IAAKusB,IAAI,CACnB,MAAAzF,GAAK8E,EAAGU,EAAE,EACVvF,GAAK+E,EAAGS,EAAE,EAAI/V,GAAY6S,GAAeyC,EAAGS,EAAE,CAAC,EAAI7W,GAAeoW,EAAGS,EAAE,CAAC,EAC1E,GAAAnF,GAAgBN,GAAIC,EAAE,EACxBF,EACEC,GACAC,GACAC,GACA,KACAE,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,MAGF,OAEF8V,KACAC,IACF,CACA,GAAIvsB,GAAIssB,IACN,GAAItsB,IAAKusB,GAAI,CACX,MAAMC,GAAUD,GAAK,EACftF,GAASuF,GAAUH,GAAKP,EAAGU,EAAO,EAAE,GAAKJ,GAC/C,KAAOpsB,IAAKusB,IACV1F,EACE,KACAiF,EAAG9rB,EAAC,EAAIwW,GAAY6S,GAAeyC,EAAG9rB,EAAC,CAAC,EAAI0V,GAAeoW,EAAG9rB,EAAC,CAAC,EAChEgnB,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAEFxW,IAEJ,UACSA,GAAIusB,GACb,KAAOvsB,IAAKssB,IACVhF,EAAQsE,EAAG5rB,EAAC,EAAGknB,EAAiB9B,GAAgB,EAAI,EACpDplB,SAEG,CACL,MAAMysB,GAAKzsB,GACL0sB,GAAK1sB,GACL2sB,OAAuC,IAC7C,IAAK3sB,GAAI0sB,GAAI1sB,IAAKusB,GAAIvsB,KAAK,CACzB,MAAMmsB,GAAYL,EAAG9rB,EAAC,EAAIwW,GAAY6S,GAAeyC,EAAG9rB,EAAC,CAAC,EAAI0V,GAAeoW,EAAG9rB,EAAC,CAAC,EAC9EmsB,GAAU,KAAO,MAQFQ,GAAA,IAAIR,GAAU,IAAKnsB,EAAC,CAEzC,CACI,IAAA4sB,EACAC,EAAU,EACR,MAAAC,GAAcP,GAAKG,GAAK,EAC9B,IAAIK,GAAQ,GACRC,GAAmB,EACjB,MAAAC,GAAwB,IAAI,MAAMH,EAAW,EAC9C,IAAA9sB,GAAI,EAAGA,GAAI8sB,GAAa9sB,KAC3BitB,GAAsBjtB,EAAC,EAAI,EAC7B,IAAKA,GAAIysB,GAAIzsB,IAAKssB,GAAItsB,KAAK,CACnB,MAAAktB,GAAYtB,EAAG5rB,EAAC,EACtB,GAAI6sB,GAAWC,GAAa,CAClBxF,EAAA4F,GAAWhG,EAAiB9B,GAAgB,EAAI,EACxD,QACF,CACI,IAAA+H,GACA,GAAAD,GAAU,KAAO,KACRC,GAAAR,GAAiB,IAAIO,GAAU,GAAG,MAE7C,KAAKN,EAAIF,GAAIE,GAAKL,GAAIK,IAChB,GAAAK,GAAsBL,EAAIF,EAAE,IAAM,GAAKtF,GAAgB8F,GAAWpB,EAAGc,CAAC,CAAC,EAAG,CACjEO,GAAAP,EACX,KACF,CAGAO,KAAa,OACP7F,EAAA4F,GAAWhG,EAAiB9B,GAAgB,EAAI,GAElC6H,GAAAE,GAAWT,EAAE,EAAI1sB,GAAI,EACvCmtB,IAAYH,GACKA,GAAAG,GAEXJ,GAAA,GAEVlG,EACEqG,GACApB,EAAGqB,EAAQ,EACXnG,GACA,KACAE,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAEFqW,IAEJ,CACA,MAAMO,GAA6BL,GAAQM,GAAYJ,EAAqB,EAAI3tB,GAEhF,IADAstB,EAAIQ,GAA2B,OAAS,EACnCptB,GAAI8sB,GAAc,EAAG9sB,IAAK,EAAGA,KAAK,CACrC,MAAMstB,GAAYZ,GAAK1sB,GACjBmsB,GAAYL,EAAGwB,EAAS,EACxBrG,GAASqG,GAAY,EAAIjB,GAAKP,EAAGwB,GAAY,CAAC,EAAE,GAAKlB,GACvDa,GAAsBjtB,EAAC,IAAM,EAC/B6mB,EACE,KACAsF,GACAnF,GACAC,GACAC,EACA9B,GACAxD,GACAuF,GACA3Q,EAAA,EAEOuW,KACLH,EAAI,GAAK5sB,KAAMotB,GAA2BR,CAAC,EACxCW,GAAApB,GAAWnF,GAAWC,GAAQ,CAAC,EAEpC2F,IAGN,CACF,CAAA,EAEIW,GAAO,CAAC1Y,EAAOmS,EAAWC,GAAQuG,GAAUpI,EAAiB,OAAS,CAC1E,KAAM,CAAE,GAAArlB,GAAI,KAAA8H,GAAM,WAAA2gB,GAAY,SAAA5D,GAAU,UAAA1O,EAAc,EAAArB,EACtD,GAAIqB,GAAY,EAAG,CACjBqX,GAAK1Y,EAAM,UAAU,QAASmS,EAAWC,GAAQuG,EAAQ,EACzD,MACF,CACA,GAAItX,GAAY,IAAK,CACnBrB,EAAM,SAAS,KAAKmS,EAAWC,GAAQuG,EAAQ,EAC/C,MACF,CACA,GAAItX,GAAY,GAAI,CAClBrO,GAAK,KAAKgN,EAAOmS,EAAWC,GAAQe,EAAS,EAC7C,MACF,CACA,GAAIngB,KAAS+f,GAAU,CACV3B,EAAAlmB,GAAIinB,EAAWC,EAAM,EAChC,QAASjnB,GAAI,EAAGA,GAAI4kB,GAAS,OAAQ5kB,KACnCutB,GAAK3I,GAAS5kB,EAAC,EAAGgnB,EAAWC,GAAQuG,EAAQ,EAEpCvH,EAAApR,EAAM,OAAQmS,EAAWC,EAAM,EAC1C,MACF,CACA,GAAIpf,KAAS6f,GAAQ,CACJO,EAAApT,EAAOmS,EAAWC,EAAM,EACvC,MACF,CAEA,GADwBuG,KAAa,GAAKtX,GAAY,GAAKsS,GAEzD,GAAIgF,KAAa,EACfhF,GAAW,YAAYzoB,EAAE,EACdkmB,EAAAlmB,GAAIinB,EAAWC,EAAM,EAChC9N,GAAsB,IAAMqP,GAAW,MAAMzoB,EAAE,EAAGqlB,CAAc,MAC3D,CACL,KAAM,CAAE,MAAAqI,GAAO,WAAAC,GAAY,WAAAC,EAAA,EAAenF,GACpCoF,GAAU,IAAM3H,EAAWlmB,GAAIinB,EAAWC,EAAM,EAChD4G,GAAe,IAAM,CACzBJ,GAAM1tB,GAAI,IAAM,CACd6tB,KACAD,IAAcA,GAAW,CAAA,CAC1B,CAAA,EAECD,GACSA,GAAA3tB,GAAI6tB,GAASC,EAAY,EAEvBA,IAEjB,MAEW5H,EAAAlmB,GAAIinB,EAAWC,EAAM,CAClC,EAEIK,EAAU,CAACzS,EAAOqS,EAAiB9B,GAAgB0I,GAAW,GAAOtX,EAAY,KAAU,CACzF,KAAA,CACJ,KAAA3O,GACA,MAAAiL,GACA,IAAAlE,GACA,SAAAgW,GACA,gBAAA0E,GACA,UAAApT,GACA,UAAAY,GACA,KAAA2R,EACE,EAAA5T,EAIJ,GAHIjG,IAAO,MACTqW,GAAOrW,GAAK,KAAMwW,GAAgBvQ,EAAO,EAAI,EAE3CqB,GAAY,IAAK,CACHgR,EAAA,IAAI,WAAWrS,CAAK,EACpC,MACF,CACM,MAAAkZ,GAAmB7X,GAAY,GAAKuS,GACpCuF,GAAwB,CAAC1T,GAAezF,CAAK,EAC/C,IAAA0T,GAIJ,GAHIyF,KAA0BzF,GAAYzV,IAASA,GAAM,uBACvCgW,GAAAP,GAAWrB,EAAiBrS,CAAK,EAE/CqB,GAAY,EACG+X,EAAApZ,EAAM,UAAWuQ,GAAgB0I,EAAQ,MACrD,CACL,GAAI5X,GAAY,IAAK,CACbrB,EAAA,SAAS,QAAQuQ,GAAgB0I,EAAQ,EAC/C,MACF,CACIC,IACkB7T,GAAArF,EAAO,KAAMqS,EAAiB,eAAe,EAE/DhR,GAAY,GACdrB,EAAM,KAAK,OACTA,EACAqS,EACA9B,GACA5O,EACAwR,GACA8F,EAAA,EAEOxE,KACVzhB,KAAS+f,IAAY9Q,GAAY,GAAKA,GAAY,IACjD+R,EACES,GACApC,EACA9B,GACA,GACA,EAAA,GAEOvd,KAAS+f,IAAY9Q,GAAa,KAAc,CAACN,GAAaN,GAAY,KACnE2S,EAAAjE,GAAUsC,EAAiB9B,EAAc,EAEvD0I,IACFjuB,EAAOgV,CAAK,CAEhB,EACImZ,KAA0BzF,GAAYzV,IAASA,GAAM,mBAAqBib,KAC5E5U,GAAsB,IAAM,CACboP,IAAAO,GAAgBP,GAAWrB,EAAiBrS,CAAK,EAC9DkZ,IAAoB7T,GAAoBrF,EAAO,KAAMqS,EAAiB,WAAW,GAChF9B,EAAc,CACnB,EAEIvlB,EAAUgV,GAAU,CACxB,KAAM,CAAE,KAAAhN,EAAM,GAAA9H,GAAI,OAAAknB,GAAQ,WAAAuB,GAAe3T,EACzC,GAAIhN,IAAS+f,GAAU,CAUnBsG,EAAenuB,GAAIknB,EAAM,EAE3B,MACF,CACA,GAAIpf,IAAS6f,GAAQ,CACnBU,EAAiBvT,CAAK,EACtB,MACF,CACA,MAAMsZ,GAAgB,IAAM,CAC1BjI,EAAWnmB,EAAE,EACTyoB,GAAc,CAACA,EAAW,WAAaA,EAAW,YACpDA,EAAW,WAAW,CACxB,EAEF,GAAI3T,EAAM,UAAY,GAAK2T,GAAc,CAACA,EAAW,UAAW,CACxD,KAAA,CAAE,MAAAiF,GAAO,WAAAC,EAAe,EAAAlF,EACxBqF,GAAe,IAAMJ,GAAM1tB,GAAIouB,EAAa,EAC9CT,GACSA,GAAA7Y,EAAM,GAAIsZ,GAAeN,EAAY,EAEnCA,IACf,MAEcM,IAChB,EAEID,EAAiB,CAAC7d,EAAKoB,IAAQ,CAC/B,IAAA0W,GACJ,KAAO9X,IAAQoB,GACb0W,GAAOzB,EAAgBrW,CAAG,EAC1B6V,EAAW7V,CAAG,EACRA,EAAA8X,GAERjC,EAAWzU,CAAG,CAAA,EAEVwc,EAAmB,CAACne,EAAUsV,EAAgB0I,KAAa,CAI/D,KAAM,CAAE,IAAAM,GAAK,MAAA7oB,EAAO,OAAAomB,GAAQ,QAAAzC,GAAS,GAAAmF,EAAO,EAAAve,EACxCse,IACFpsB,GAAeosB,EAAG,EAEpB7oB,EAAM,KAAK,EACPomB,KACFA,GAAO,OAAS,GACRrE,EAAA4B,GAASpZ,EAAUsV,EAAgB0I,EAAQ,GAEjDO,IACFlV,GAAsBkV,GAAIjJ,CAAc,EAE1CjM,GAAsB,IAAM,CAC1BrJ,EAAS,YAAc,IACtBsV,CAAc,EACbA,GAAkBA,EAAe,eAAiB,CAACA,EAAe,aAAetV,EAAS,UAAY,CAACA,EAAS,eAAiBA,EAAS,aAAesV,EAAe,YAC3JA,EAAA,OACXA,EAAe,OAAS,GAC1BA,EAAe,QAAQ,EAK3B,EAEIyD,EAAkB,CAACjE,EAAUsC,EAAiB9B,GAAgB0I,GAAW,GAAOtX,EAAY,GAAOhF,GAAQ,IAAM,CACrH,QAASxR,GAAIwR,GAAOxR,GAAI4kB,EAAS,OAAQ5kB,KACvCsnB,EAAQ1C,EAAS5kB,EAAC,EAAGknB,EAAiB9B,GAAgB0I,GAAUtX,CAAS,CAC3E,EAEI6Q,GAAmBxS,GACnBA,EAAM,UAAY,EACbwS,GAAgBxS,EAAM,UAAU,OAAO,EAE5CA,EAAM,UAAY,IACbA,EAAM,SAAS,OAEjB6R,EAAgB7R,EAAM,QAAUA,EAAM,EAAE,EAEjD,IAAIlE,GAAa,GACjB,MAAMuE,GAAS,CAACL,EAAOmS,EAAWpF,KAAc,CAC1C/M,GAAS,KACPmS,EAAU,QACZM,EAAQN,EAAU,OAAQ,KAAM,KAAM,EAAI,EAG5CH,EACEG,EAAU,QAAU,KACpBnS,EACAmS,EACA,KACA,KACA,KACApF,EAAA,EAGCjR,KACHA,GAAa,GACI0B,KACCE,KAClB5B,GAAa,IAEfqW,EAAU,OAASnS,CAAA,EAEfmT,GAAY,CAChB,EAAGnB,EACH,GAAIS,EACJ,EAAGiG,GACH,EAAG1tB,EACH,GAAIyqB,GACJ,GAAI5B,EACJ,GAAIiB,GACJ,IAAKD,EACL,EAAGrC,GACH,EAAGrT,CAAA,EAED,IAAA+M,GACAyK,GAMG,MAAA,CACL,OAAAtW,GACA,QAAA6L,GACA,UAAWD,GAAa5L,GAAQ6L,EAAO,CAAA,CAE3C,CACA,SAAS4H,GAAyB,CAAE,KAAA9gB,EAAM,MAAAiL,CAAA,EAASwb,EAAkB,CACnE,OAAOA,IAAqB,OAASzmB,IAAS,iBAAmBymB,IAAqB,UAAYzmB,IAAS,kBAAoBiL,GAASA,EAAM,UAAYA,EAAM,SAAS,SAAS,MAAM,EAAI,OAASwb,CACvM,CACA,SAAS7E,GAAc,CAAE,OAAAnkB,EAAQ,OAAAqmB,CAAA,EAAU4C,EAAS,CAClDjpB,EAAO,aAAeqmB,EAAO,aAAe4C,CAC9C,CACA,SAASvF,GAAe5D,EAAgBoD,EAAY,CAC1C,OAAA,CAACpD,GAAkBA,GAAkB,CAACA,EAAe,gBAAkBoD,GAAc,CAACA,EAAW,SAC3G,CACA,SAAS6B,GAAuBvD,EAAIC,EAAIpa,EAAU,GAAO,CACvD,MAAM6hB,EAAM1H,EAAG,SACT2H,EAAM1H,EAAG,SACf,GAAI5mB,GAAQquB,CAAG,GAAKruB,GAAQsuB,CAAG,EAC7B,QAASzuB,EAAI,EAAGA,EAAIwuB,EAAI,OAAQxuB,IAAK,CAC7B,MAAA4rB,EAAK4C,EAAIxuB,CAAC,EACZ,IAAA8rB,EAAK2C,EAAIzuB,CAAC,EACV8rB,EAAG,UAAY,GAAK,CAACA,EAAG,mBACtBA,EAAG,WAAa,GAAKA,EAAG,YAAc,MACxCA,EAAK2C,EAAIzuB,CAAC,EAAIqpB,GAAeoF,EAAIzuB,CAAC,CAAC,EACnC8rB,EAAG,GAAKF,EAAG,IAERjf,GACH0d,GAAuBuB,EAAIE,CAAE,GAE7BA,EAAG,OAASvE,KACduE,EAAG,GAAKF,EAAG,GAKf,CAEJ,CACA,SAASyB,GAAYvtB,EAAK,CAClB,MAAAuR,EAAIvR,EAAI,QACRkK,EAAS,CAAC,CAAC,EACb,IAAAhK,EAAG4sB,EAAG5B,EAAGrmB,EAAGlD,EAChB,MAAMitB,EAAM5uB,EAAI,OAChB,IAAKE,EAAI,EAAGA,EAAI0uB,EAAK1uB,IAAK,CAClB,MAAA2uB,EAAO7uB,EAAIE,CAAC,EAClB,GAAI2uB,IAAS,EAAG,CAEV,GADA/B,EAAA5iB,EAAOA,EAAO,OAAS,CAAC,EACxBlK,EAAI8sB,CAAC,EAAI+B,EAAM,CACjBtd,EAAErR,CAAC,EAAI4sB,EACP5iB,EAAO,KAAKhK,CAAC,EACb,QACF,CAGA,IAFIgrB,EAAA,EACJrmB,EAAIqF,EAAO,OAAS,EACbghB,EAAIrmB,GACTlD,EAAIupB,EAAIrmB,GAAK,EACT7E,EAAIkK,EAAOvI,CAAC,CAAC,EAAIktB,EACnB3D,EAAIvpB,EAAI,EAEJkD,EAAAlD,EAGJktB,EAAO7uB,EAAIkK,EAAOghB,CAAC,CAAC,IAClBA,EAAI,IACN3Z,EAAErR,CAAC,EAAIgK,EAAOghB,EAAI,CAAC,GAErBhhB,EAAOghB,CAAC,EAAIhrB,EAEhB,CACF,CAGA,IAFAgrB,EAAIhhB,EAAO,OACPrF,EAAAqF,EAAOghB,EAAI,CAAC,EACTA,KAAM,GACXhhB,EAAOghB,CAAC,EAAIrmB,EACZA,EAAI0M,EAAE1M,CAAC,EAEF,OAAAqF,CACT,CACA,SAASkhB,GAA2Bpb,EAAU,CACtC,MAAA8e,EAAe9e,EAAS,QAAQ,UACtC,GAAI8e,EACF,OAAIA,EAAa,UAAY,CAACA,EAAa,cAClCA,EAEA1D,GAA2B0D,CAAY,CAGpD,CAEA,MAAMC,GAAchnB,GAASA,EAAK,aAkR5B+f,GAAW,OAAO,IAAI,OAAO,EAC7BL,GAAO,OAAO,IAAI,OAAO,EACzBxR,GAAU,OAAO,IAAI,OAAO,EAC5B2R,GAAS,OAAO,IAAI,OAAO,EAC3B7R,GAAa,CAAA,EACnB,IAAIiZ,GAAe,KACnB,SAASC,GAAUC,EAAkB,GAAO,CAC1CnZ,GAAW,KAAKiZ,GAAeE,EAAkB,KAAO,CAAE,CAAA,CAC5D,CACA,SAASC,IAAa,CACpBpZ,GAAW,IAAI,EACfiZ,GAAejZ,GAAWA,GAAW,OAAS,CAAC,GAAK,IACtD,CACA,IAAIqZ,GAAqB,EACzB,SAASza,GAAiB3T,EAAO,CACTouB,IAAApuB,CACxB,CACA,SAASquB,GAAWta,EAAO,CACzB,OAAAA,EAAM,gBAAkBqa,GAAqB,EAAIJ,IAAgBxvB,GAAY,KAClE2vB,KACPC,GAAqB,GAAKJ,IAC5BA,GAAa,KAAKja,CAAK,EAElBA,CACT,CACA,SAASua,GAAmBvnB,EAAMiL,EAAO8R,EAAU9N,EAAWG,EAAcf,EAAW,CAC9E,OAAAiZ,GACLE,EACExnB,EACAiL,EACA8R,EACA9N,EACAG,EACAf,EACA,EACF,CAAA,CAEJ,CACA,SAASoZ,GAAYznB,EAAMiL,EAAO8R,EAAU9N,EAAWG,EAAc,CAC5D,OAAAkY,GACLrZ,GACEjO,EACAiL,EACA8R,EACA9N,EACAG,EACA,EACF,CAAA,CAEJ,CACA,SAASsY,GAAQzuB,EAAO,CACf,OAAAA,EAAQA,EAAM,cAAgB,GAAO,EAC9C,CACA,SAASsmB,GAAgBN,EAAIC,EAAI,CAM/B,OAAOD,EAAG,OAASC,EAAG,MAAQD,EAAG,MAAQC,EAAG,GAC9C,CAUA,MAAMyI,GAAe,CAAC,CAAE,IAAA9vB,CAAU,IAAAA,GAAoB,KAChD+vB,GAAe,CAAC,CACpB,IAAA7gB,EACA,QAAA8gB,EACA,QAAAC,CACF,KACM,OAAO/gB,GAAQ,WACjBA,EAAM,GAAKA,GAENA,GAAO,KAAOnO,GAASmO,CAAG,GAAKpF,GAAMoF,CAAG,GAAKpO,GAAWoO,CAAG,EAAI,CAAE,EAAGqF,GAA0B,EAAGrF,EAAK,EAAG8gB,EAAS,EAAG,CAAC,CAACC,CAAQ,EAAI/gB,EAAM,MAElJ,SAASygB,EAAgBxnB,EAAMiL,EAAQ,KAAM8R,EAAW,KAAM9N,EAAY,EAAGG,EAAe,KAAMf,EAAYrO,IAAS+f,GAAW,EAAI,EAAGgI,EAAc,GAAOC,EAAgC,GAAO,CACnM,MAAMhb,EAAQ,CACZ,YAAa,GACb,SAAU,GACV,KAAAhN,EACA,MAAAiL,EACA,IAAKA,GAAS0c,GAAa1c,CAAK,EAChC,IAAKA,GAAS2c,GAAa3c,CAAK,EAChC,QAASoB,GACT,aAAc,KACd,SAAA0Q,EACA,UAAW,KACX,SAAU,KACV,UAAW,KACX,WAAY,KACZ,KAAM,KACN,WAAY,KACZ,GAAI,KACJ,OAAQ,KACR,OAAQ,KACR,aAAc,KACd,YAAa,EACb,UAAA1O,EACA,UAAAY,EACA,aAAAG,EACA,gBAAiB,KACjB,WAAY,KACZ,IAAKhD,EAAA,EAEP,OAAI4b,GACFC,GAAkBjb,EAAO+P,CAAQ,EAC7B1O,EAAY,KACdrO,EAAK,UAAUgN,CAAK,GAEb+P,IACT/P,EAAM,WAAapU,GAASmkB,CAAQ,EAAI,EAAI,IAK1CsK,GAAqB,GACzB,CAACU,GACDd,KAICja,EAAM,UAAY,GAAKqB,EAAY,IAEpCrB,EAAM,YAAc,IAClBia,GAAa,KAAKja,CAAK,EAElBA,CACT,CACA,MAAMiB,GAAyFia,GAC/F,SAASA,GAAaloB,EAAMiL,EAAQ,KAAM8R,EAAW,KAAM9N,EAAY,EAAGG,EAAe,KAAM2Y,EAAc,GAAO,CAO9G,IANA,CAAC/nB,GAAQA,IAASyP,MAIbzP,EAAAkO,IAELwZ,GAAQ1nB,CAAI,EAAG,CACjB,MAAMmoB,EAAS5Z,GACbvO,EACAiL,EACA,EAAA,EAGF,OAAI8R,GACFkL,GAAkBE,EAAQpL,CAAQ,EAEhCsK,GAAqB,GAAK,CAACU,GAAed,KACxCkB,EAAO,UAAY,EACrBlB,GAAaA,GAAa,QAAQjnB,CAAI,CAAC,EAAImoB,EAE3ClB,GAAa,KAAKkB,CAAM,GAG5BA,EAAO,WAAa,GACbA,CACT,CAIA,GAHIC,GAAiBpoB,CAAI,IACvBA,EAAOA,EAAK,WAEViL,EAAO,CACTA,EAAQod,GAAmBpd,CAAK,EAChC,GAAI,CAAE,MAAOqd,EAAO,MAAAC,CAAA,EAAUtd,EAC1Bqd,GAAS,CAAC1vB,GAAS0vB,CAAK,IACpBrd,EAAA,MAAQzP,GAAe8sB,CAAK,GAEhCxvB,GAASyvB,CAAK,IACZziB,GAAQyiB,CAAK,GAAK,CAACjwB,GAAQiwB,CAAK,IAC1BA,EAAAxwB,GAAO,GAAIwwB,CAAK,GAEpBtd,EAAA,MAAQpQ,GAAe0tB,CAAK,EAEtC,CACM,MAAAla,EAAYzV,GAASoH,CAAI,EAAI,EAAI0P,GAAW1P,CAAI,EAAI,IAAMgnB,GAAWhnB,CAAI,EAAI,GAAKlH,GAASkH,CAAI,EAAI,EAAIrH,GAAWqH,CAAI,EAAI,EAAI,EAU7H,OAAAwnB,EACLxnB,EACAiL,EACA8R,EACA9N,EACAG,EACAf,EACA0Z,EACA,EAAA,CAEJ,CACA,SAASM,GAAmBpd,EAAO,CACjC,OAAKA,EAEEnF,GAAQmF,CAAK,GAAKsP,GAAiBtP,CAAK,EAAIlT,GAAO,CAAI,EAAAkT,CAAK,EAAIA,EAD9D,IAEX,CACA,SAASsD,GAAWvB,EAAOwb,EAAYC,EAAW,GAAOC,EAAkB,GAAO,CAChF,KAAM,CAAE,MAAAzd,EAAO,IAAAlE,EAAK,UAAAkI,EAAW,SAAA8N,EAAU,WAAA4D,CAAe,EAAA3T,EAClD2b,EAAcH,EAAaI,GAAW3d,GAAS,GAAIud,CAAU,EAAIvd,EACjEkd,EAAS,CACb,YAAa,GACb,SAAU,GACV,KAAMnb,EAAM,KACZ,MAAO2b,EACP,IAAKA,GAAehB,GAAagB,CAAW,EAC5C,IAAKH,GAAcA,EAAW,IAI5BC,GAAY1hB,EAAMzO,GAAQyO,CAAG,EAAIA,EAAI,OAAO6gB,GAAaY,CAAU,CAAC,EAAI,CAACzhB,EAAK6gB,GAAaY,CAAU,CAAC,EAAIZ,GAAaY,CAAU,EAC/HzhB,EACJ,QAASiG,EAAM,QACf,aAAcA,EAAM,aACpB,SAA8H+P,EAC9H,OAAQ/P,EAAM,OACd,aAAcA,EAAM,aACpB,YAAaA,EAAM,YACnB,UAAWA,EAAM,UAKjB,UAAWwb,GAAcxb,EAAM,OAAS+S,GAAW9Q,IAAc,GAAK,GAAKA,EAAY,GAAKA,EAC5F,aAAcjC,EAAM,aACpB,gBAAiBA,EAAM,gBACvB,WAAYA,EAAM,WAClB,KAAMA,EAAM,KACZ,WAAA2T,EAKA,UAAW3T,EAAM,UACjB,SAAUA,EAAM,SAChB,UAAWA,EAAM,WAAauB,GAAWvB,EAAM,SAAS,EACxD,WAAYA,EAAM,YAAcuB,GAAWvB,EAAM,UAAU,EAC3D,GAAIA,EAAM,GACV,OAAQA,EAAM,OACd,IAAKA,EAAM,IACX,GAAIA,EAAM,EAAA,EAEZ,OAAI2T,GAAc+H,IACTP,EAAA,WAAaxH,EAAW,MAAMwH,CAAM,GAEtCA,CACT,CAQA,SAASU,GAAgBC,EAAO,IAAKC,EAAO,EAAG,CAC7C,OAAO9a,GAAYyR,GAAM,KAAMoJ,EAAMC,CAAI,CAC3C,CACA,SAASC,GAAkBC,EAASC,EAAe,CACjD,MAAMlc,EAAQiB,GAAY4R,GAAQ,KAAMoJ,CAAO,EAC/C,OAAAjc,EAAM,YAAckc,EACblc,CACT,CACA,SAASmc,GAAmBL,EAAO,GAAIM,EAAU,GAAO,CAC/C,OAAAA,GAAWlC,KAAaO,GAAYvZ,GAAS,KAAM4a,CAAI,GAAK7a,GAAYC,GAAS,KAAM4a,CAAI,CACpG,CACA,SAASjb,GAAe0T,EAAO,CAC7B,OAAIA,GAAS,MAAQ,OAAOA,GAAU,UAC7BtT,GAAYC,EAAO,EACjB5V,GAAQipB,CAAK,EACftT,GACL8R,GACA,KAEAwB,EAAM,MAAM,CAAA,EAEL,OAAOA,GAAU,SACnBC,GAAeD,CAAK,EAEpBtT,GAAYyR,GAAM,KAAM,OAAO6B,CAAK,CAAC,CAEhD,CACA,SAASC,GAAeD,EAAO,CACtB,OAAAA,EAAM,KAAO,MAAQA,EAAM,YAAc,IAAMA,EAAM,KAAOA,EAAQhT,GAAWgT,CAAK,CAC7F,CACA,SAAS0G,GAAkBjb,EAAO+P,EAAU,CAC1C,IAAI/c,EAAO,EACL,KAAA,CAAE,UAAAqO,CAAc,EAAArB,EACtB,GAAI+P,GAAY,KACHA,EAAA,aACFzkB,GAAQykB,CAAQ,EAClB/c,EAAA,WACE,OAAO+c,GAAa,SACzB,GAAA1O,EAAa,GAAS,CACxB,MAAMgb,EAAOtM,EAAS,QAClBsM,IACGA,EAAA,KAAOA,EAAK,GAAK,IACJpB,GAAAjb,EAAOqc,GAAM,EAC1BA,EAAA,KAAOA,EAAK,GAAK,KAExB,MAAA,KACK,CACErpB,EAAA,GACP,MAAMspB,EAAWvM,EAAS,EACtB,CAACuM,GAAY,CAAC/O,GAAiBwC,CAAQ,EACzCA,EAAS,KAAO3Q,GACPkd,IAAa,GAAKld,KACvBA,GAAyB,MAAM,IAAM,EACvC2Q,EAAS,EAAI,GAEbA,EAAS,EAAI,EACb/P,EAAM,WAAa,MAGzB,MACSrU,GAAWokB,CAAQ,GAC5BA,EAAW,CAAE,QAASA,EAAU,KAAM3Q,EAAyB,EACxDpM,EAAA,KAEP+c,EAAW,OAAOA,CAAQ,EACtB1O,EAAY,IACPrO,EAAA,GACI+c,EAAA,CAAC8L,GAAgB9L,CAAQ,CAAC,GAE9B/c,EAAA,GAGXgN,EAAM,SAAW+P,EACjB/P,EAAM,WAAahN,CACrB,CACA,SAAS4oB,MAAc9nB,EAAM,CAC3B,MAAMxF,EAAM,CAAA,EACZ,QAASnD,EAAI,EAAGA,EAAI2I,EAAK,OAAQ3I,IAAK,CAC9B,MAAAoxB,EAAUzoB,EAAK3I,CAAC,EACtB,UAAWN,KAAO0xB,EAChB,GAAI1xB,IAAQ,QACNyD,EAAI,QAAUiuB,EAAQ,QACxBjuB,EAAI,MAAQE,GAAe,CAACF,EAAI,MAAOiuB,EAAQ,KAAK,CAAC,WAE9C1xB,IAAQ,QACjByD,EAAI,MAAQT,GAAe,CAACS,EAAI,MAAOiuB,EAAQ,KAAK,CAAC,UAC5C3xB,GAAKC,CAAG,EAAG,CACd,MAAAmmB,EAAW1iB,EAAIzD,CAAG,EAClB2xB,EAAWD,EAAQ1xB,CAAG,EACxB2xB,GAAYxL,IAAawL,GAAY,EAAElxB,GAAQ0lB,CAAQ,GAAKA,EAAS,SAASwL,CAAQ,KACpFluB,EAAAzD,CAAG,EAAImmB,EAAW,CAAA,EAAG,OAAOA,EAAUwL,CAAQ,EAAIA,EACxD,MACS3xB,IAAQ,KACbyD,EAAAzD,CAAG,EAAI0xB,EAAQ1xB,CAAG,EAG5B,CACO,OAAAyD,CACT,CACA,SAAS2lB,GAAgBzO,EAAMvK,EAAU+E,EAAOyB,EAAY,KAAM,CACrCrG,GAAAoK,EAAMvK,EAAU,EAAG,CAC5C+E,EACAyB,CAAA,CACD,CACH,CAEA,MAAMgb,GAAkB1Q,GAAiB,EACzC,IAAI2Q,GAAM,EACV,SAAS9G,GAAwB5V,EAAOwC,EAAQI,EAAU,CACxD,MAAM5P,EAAOgN,EAAM,KACbrB,GAAc6D,EAASA,EAAO,WAAaxC,EAAM,aAAeyc,GAChExhB,EAAW,CACf,IAAKyhB,KACL,MAAA1c,EACA,KAAAhN,EACA,OAAAwP,EACA,WAAA7D,EACA,KAAM,KAEN,KAAM,KACN,QAAS,KAET,OAAQ,KACR,OAAQ,KAER,MAAO,IAAI1O,GACT,EAEF,EACA,OAAQ,KACR,MAAO,KACP,QAAS,KACT,YAAa,KACb,UAAW,KACX,SAAUuS,EAASA,EAAO,SAAW,OAAO,OAAO7D,EAAW,QAAQ,EACtE,YAAa,KACb,YAAa,CAAC,EAEd,WAAY,KACZ,WAAY,KAEZ,aAAcgQ,GAAsB3b,EAAM2L,CAAU,EACpD,aAAcF,GAAsBzL,EAAM2L,CAAU,EAEpD,KAAM,KAEN,QAAS,KAET,cAAenU,GAEf,aAAcwI,EAAK,aAEnB,IAAKxI,GACL,KAAMA,GACN,MAAOA,GACP,MAAOA,GACP,MAAOA,GACP,KAAMA,GACN,WAAYA,GACZ,aAAc,KACd,WAAY,KACZ,WAAY,KAEZ,SAAAoY,EACA,WAAYA,EAAWA,EAAS,UAAY,EAC5C,SAAU,KACV,cAAe,GAGf,UAAW,GACX,YAAa,GACb,cAAe,GACf,GAAI,KACJ,EAAG,KACH,GAAI,KACJ,EAAG,KACH,GAAI,KACJ,EAAG,KACH,GAAI,KACJ,IAAK,KACL,GAAI,KACJ,EAAG,KACH,IAAK,KACL,IAAK,KACL,GAAI,KACJ,GAAI,IAAA,EAKK,OAAA3H,EAAA,IAAM,CAAE,EAAGA,CAAS,EAEtBA,EAAA,KAAOuH,EAASA,EAAO,KAAOvH,EACvCA,EAAS,KAAO6C,GAAK,KAAK,KAAM7C,CAAQ,EACpC+E,EAAM,IACRA,EAAM,GAAG/E,CAAQ,EAEZA,CACT,CACA,IAAI0I,GAAkB,KAElBgZ,GACAC,GACJ,CACE,MAAMC,EAAIjvB,KACJkvB,EAAuB,CAACjyB,EAAK6O,IAAW,CACxC,IAAAqjB,EACA,OAAEA,EAAUF,EAAEhyB,CAAG,KACTkyB,EAAAF,EAAEhyB,CAAG,EAAI,IACrBkyB,EAAQ,KAAKrjB,CAAM,EACX5J,GAAM,CACRitB,EAAQ,OAAS,EACnBA,EAAQ,QAASzyB,GAAQA,EAAIwF,CAAC,CAAC,EAEvBitB,EAAA,CAAC,EAAEjtB,CAAC,CAAA,CAChB,EAE2B6sB,GAAAG,EAC3B,2BACChtB,GAAM6T,GAAkB7T,CAAA,EAEN8sB,GAAAE,EACnB,sBACChtB,GAAMuU,GAAwBvU,CAAA,CAEnC,CACA,MAAM6U,GAAsB1J,GAAa,CACvC,MAAMsE,EAAOoE,GACb,OAAAgZ,GAA2B1hB,CAAQ,EACnCA,EAAS,MAAM,KACR,IAAM,CACXA,EAAS,MAAM,MACf0hB,GAA2Bpd,CAAI,CAAA,CAEnC,EACMyd,GAAuB,IAAM,CACdrZ,IAAAA,GAAgB,MAAM,MACzCgZ,GAA2B,IAAI,CACjC,EASA,SAASrV,GAAoBrM,EAAU,CAC9B,OAAAA,EAAS,MAAM,UAAY,CACpC,CACA,IAAIoJ,GAAwB,GAC5B,SAASwR,GAAe5a,EAAU7B,EAAQ,GAAO,CAC/CA,GAASwjB,GAAmBxjB,CAAK,EACjC,KAAM,CAAE,MAAA6E,EAAO,SAAA8R,GAAa9U,EAAS,MAC/ByS,EAAapG,GAAoBrM,CAAQ,EACrCuS,GAAAvS,EAAUgD,EAAOyP,EAAYtU,CAAK,EAC5C4W,GAAU/U,EAAU8U,CAAQ,EAC5B,MAAMkN,EAAcvP,EAAawP,GAAuBjiB,EAAU7B,CAAK,EAAI,OAC3E,OAAAA,GAASwjB,GAAmB,EAAK,EAC1BK,CACT,CACA,SAASC,GAAuBjiB,EAAU7B,EAAO,CAE/C,MAAM2G,EAAY9E,EAAS,KAuBlBA,EAAA,YAAqC,OAAA,OAAO,IAAI,EACzDA,EAAS,MAAQ,IAAI,MAAMA,EAAS,IAAK0M,EAA2B,EAI9D,KAAA,CAAE,MAAAwV,CAAU,EAAApd,EAClB,GAAIod,EAAO,CACH,MAAAC,EAAeniB,EAAS,aAAekiB,EAAM,OAAS,EAAIE,GAAmBpiB,CAAQ,EAAI,KACzFyJ,EAAQC,GAAmB1J,CAAQ,EAC3BhK,KACd,MAAMgsB,EAAcjiB,GAClBmiB,EACAliB,EACA,EACA,CACgFA,EAAS,MACvFmiB,CACF,CAAA,EAIE,GAFUhsB,KACRsT,IACF3Y,GAAUkxB,CAAW,EAAG,CAE1B,GADYA,EAAA,KAAKD,GAAsBA,EAAoB,EACvD5jB,EACK,OAAA6jB,EAAY,KAAMK,GAAmB,CACxBC,GAAAtiB,EAAUqiB,EAAgBlkB,CAAK,CAAA,CAClD,EAAE,MAAOokB,GAAM,CACFriB,GAAAqiB,EAAGviB,EAAU,CAAC,CAAA,CAC3B,EAEDA,EAAS,SAAWgiB,CAOtB,MAEkBM,GAAAtiB,EAAUgiB,EAAa7jB,CAAK,CAChD,MAEAqkB,GAAqBxiB,EAAU7B,CAAK,CAExC,CACA,SAASmkB,GAAkBtiB,EAAUgiB,EAAa7jB,EAAO,CACnDzN,GAAWsxB,CAAW,EACpBhiB,EAAS,KAAK,kBAChBA,EAAS,UAAYgiB,EAErBhiB,EAAS,OAASgiB,EAEXnxB,GAASmxB,CAAW,IASpBhiB,EAAA,WAAaV,GAAU0iB,CAAW,GAS7CQ,GAAqBxiB,EAAU7B,CAAK,CACtC,CACA,IAAIskB,GAWJ,SAASD,GAAqBxiB,EAAU7B,EAAOukB,EAAa,CAC1D,MAAM5d,EAAY9E,EAAS,KACvB,GAAA,CAACA,EAAS,OAAQ,CACpB,GAAI,CAAC7B,GAASskB,IAAW,CAAC3d,EAAU,OAAQ,CAC1C,MAAM6d,EAAW7d,EAAU,UAAYyH,GAAqBvM,CAAQ,EAAE,SACtE,GAAI2iB,EAAU,CAIZ,KAAM,CAAE,gBAAAC,EAAiB,gBAAAC,CAAgB,EAAI7iB,EAAS,WAAW,OAC3D,CAAE,WAAA8iB,EAAY,gBAAiBC,CAAA,EAA6Bje,EAC5Dke,EAAuBlzB,GAC3BA,GACE,CACE,gBAAA8yB,EACA,WAAAE,CACF,EACAD,CACF,EACAE,CAAA,EAEQje,EAAA,OAAS2d,GAAQE,EAAUK,CAAoB,CAI3D,CACF,CACShjB,EAAA,OAAS8E,EAAU,QAAUrV,EAIxC,CACiC,CACzB,MAAAga,EAAQC,GAAmB1J,CAAQ,EAC3BhK,KACV,GAAA,CACFmX,GAAanN,CAAQ,CAAA,QACrB,CACc7J,KACRsT,GACR,CACF,CAUF,CACA,MAAMwZ,GAcF,CACF,IAAInrB,EAAQlI,EAAK,CACT,OAAAiI,GAAAC,EAAQ,MAAO,EAAE,EAChBA,EAAOlI,CAAG,CACnB,CACF,EASA,SAASwyB,GAAmBpiB,EAAU,CAC9B,MAAA0O,EAAUY,GAAY,CAqBjBtP,EAAA,QAAUsP,GAAW,EAAC,EAiBxB,MAAA,CACL,MAAO,IAAI,MAAMtP,EAAS,MAAOijB,EAAkB,EACnD,MAAOjjB,EAAS,MAChB,KAAMA,EAAS,KACf,OAAA0O,CAAA,CAGN,CACA,SAAS1E,GAAehK,EAAU,CAChC,GAAIA,EAAS,QACJ,OAAAA,EAAS,cAAgBA,EAAS,YAAc,IAAI,MAAMV,GAAUvB,GAAQiC,EAAS,OAAO,CAAC,EAAG,CACrG,IAAIlI,EAAQlI,EAAK,CACf,GAAIA,KAAOkI,EACT,OAAOA,EAAOlI,CAAG,EACnB,GAAWA,KAAO0c,GACT,OAAAA,GAAoB1c,CAAG,EAAEoQ,CAAQ,CAE5C,EACA,IAAIlI,EAAQlI,EAAK,CACR,OAAAA,KAAOkI,GAAUlI,KAAO0c,EACjC,CACD,CAAA,EAEL,CA4BA,SAAS6T,GAAiBnvB,EAAO,CACxB,OAAAN,GAAWM,CAAK,GAAK,cAAeA,CAC7C,CAEA,MAAMyF,GAAW,CAAC8H,EAAiBC,IACvB0kB,GAAW3kB,EAAiBC,EAAc4K,EAAqB,EA6RrEoI,GAAU,SCl+PhB;AAAA;AAAA;AAAA;AAAA,GASA,MAAM2R,GAAQ,6BACRC,GAAW,qCACXC,GAAM,OAAO,SAAa,IAAc,SAAW,KACnDC,GAAoBD,IAA2BA,GAAA,cAAc,UAAU,EACvEE,GAAU,CACd,OAAQ,CAACjK,EAAO/R,EAAQ4P,IAAW,CAC1B5P,EAAA,aAAa+R,EAAOnC,GAAU,IAAI,CAC3C,EACA,OAASmC,GAAU,CACjB,MAAM/R,EAAS+R,EAAM,WACjB/R,GACFA,EAAO,YAAY+R,CAAK,CAE5B,EACA,cAAe,CAACkK,EAAK1R,EAAW2R,EAAIzgB,IAAU,CACtC,MAAA/S,EAAK6hB,IAAc,MAAQuR,GAAI,gBAAgBF,GAAOK,CAAG,EAAI1R,IAAc,SAAWuR,GAAI,gBAAgBD,GAAUI,CAAG,EAAIH,GAAI,cAAcG,EAAKC,EAAK,CAAE,GAAAA,CAAG,EAAI,MAAM,EAC5K,OAAID,IAAQ,UAAYxgB,GAASA,EAAM,UAAY,MAC9C/S,EAAA,aAAa,WAAY+S,EAAM,QAAQ,EAErC/S,CACT,EACA,WAAa4wB,GAASwC,GAAI,eAAexC,CAAI,EAC7C,cAAgBA,GAASwC,GAAI,cAAcxC,CAAI,EAC/C,QAAS,CAAC6C,EAAM7C,IAAS,CACvB6C,EAAK,UAAY7C,CACnB,EACA,eAAgB,CAAC5wB,EAAI4wB,IAAS,CAC5B5wB,EAAG,YAAc4wB,CACnB,EACA,WAAa6C,GAASA,EAAK,WAC3B,YAAcA,GAASA,EAAK,YAC5B,cAAgBC,GAAaN,GAAI,cAAcM,CAAQ,EACvD,WAAW1zB,EAAIwR,EAAI,CACdxR,EAAA,aAAawR,EAAI,EAAE,CACxB,EAKA,oBAAoBuf,EAASzZ,EAAQ4P,EAAQrF,EAAWpQ,EAAOC,EAAK,CAClE,MAAMiiB,EAASzM,EAASA,EAAO,gBAAkB5P,EAAO,UACxD,GAAI7F,IAAUA,IAAUC,GAAOD,EAAM,aACnC,KACE6F,EAAO,aAAa7F,EAAM,UAAU,EAAI,EAAGyV,CAAM,EAC7C,EAAAzV,IAAUC,GAAO,EAAED,EAAQA,EAAM,eAArC,KAGG,CACa4hB,GAAA,UAAYxR,IAAc,MAAQ,QAAQkP,CAAO,SAAWlP,IAAc,SAAW,SAASkP,CAAO,UAAYA,EACnI,MAAM2B,EAAWW,GAAkB,QAC/B,GAAAxR,IAAc,OAASA,IAAc,SAAU,CACjD,MAAM+R,EAAUlB,EAAS,WACzB,KAAOkB,EAAQ,YACJlB,EAAA,YAAYkB,EAAQ,UAAU,EAEzClB,EAAS,YAAYkB,CAAO,CAC9B,CACOtc,EAAA,aAAaob,EAAUxL,CAAM,CACtC,CACO,MAAA,CAELyM,EAASA,EAAO,YAAcrc,EAAO,WAErC4P,EAASA,EAAO,gBAAkB5P,EAAO,SAAA,CAE7C,CACF,EAIMuc,GAAS,OAAO,MAAM,EA2Q5B,SAASC,GAAW9zB,EAAIe,EAAOgzB,EAAO,CAC9B,MAAAC,EAAoBh0B,EAAG6zB,EAAM,EAC/BG,IACOjzB,GAAAA,EAAQ,CAACA,EAAO,GAAGizB,CAAiB,EAAI,CAAC,GAAGA,CAAiB,GAAG,KAAK,GAAG,GAE/EjzB,GAAS,KACXf,EAAG,gBAAgB,OAAO,EACjB+zB,EACN/zB,EAAA,aAAa,QAASe,CAAK,EAE9Bf,EAAG,UAAYe,CAEnB,CAEA,MAAMkzB,GAAuB,OAAO,MAAM,EACpCC,GAAc,OAAO,MAAM,EAC3BC,GAAQ,CACZ,YAAYn0B,EAAI,CAAE,MAAAe,GAAS,CAAE,WAAA0nB,GAAc,CACtCzoB,EAAAi0B,EAAoB,EAAIj0B,EAAG,MAAM,UAAY,OAAS,GAAKA,EAAG,MAAM,QACnEyoB,GAAc1nB,EAChB0nB,EAAW,YAAYzoB,CAAE,EAEzBo0B,GAAWp0B,EAAIe,CAAK,CAExB,EACA,QAAQf,EAAI,CAAE,MAAAe,GAAS,CAAE,WAAA0nB,GAAc,CACjCA,GAAc1nB,GAChB0nB,EAAW,MAAMzoB,CAAE,CAEvB,EACA,QAAQA,EAAI,CAAE,MAAAe,EAAO,SAAAiB,CAAY,EAAA,CAAE,WAAAymB,GAAc,CAC3C,CAAC1nB,GAAU,CAACiB,IAEZymB,EACE1nB,GACF0nB,EAAW,YAAYzoB,CAAE,EACzBo0B,GAAWp0B,EAAI,EAAI,EACnByoB,EAAW,MAAMzoB,CAAE,GAERyoB,EAAA,MAAMzoB,EAAI,IAAM,CACzBo0B,GAAWp0B,EAAI,EAAK,CAAA,CACrB,EAGHo0B,GAAWp0B,EAAIe,CAAK,EAExB,EACA,cAAcf,EAAI,CAAE,MAAAe,GAAS,CAC3BqzB,GAAWp0B,EAAIe,CAAK,CACtB,CACF,EAIA,SAASqzB,GAAWp0B,EAAIe,EAAO,CAC7Bf,EAAG,MAAM,QAAUe,EAAQf,EAAGi0B,EAAoB,EAAI,OACnDj0B,EAAAk0B,EAAW,EAAI,CAACnzB,CACrB,CASA,MAAMszB,GAAe,OAAoE,EAAE,EAkErFC,GAAY,sBAClB,SAASC,GAAWv0B,EAAIqU,EAAM+T,EAAM,CAClC,MAAMiI,EAAQrwB,EAAG,MACXw0B,EAAc9zB,GAAS0nB,CAAI,EACjC,IAAIqM,EAAuB,GACvB,GAAArM,GAAQ,CAACoM,EAAa,CACxB,GAAIngB,EACE,GAAC3T,GAAS2T,CAAI,EAOhB,UAAWqgB,KAAargB,EAAK,MAAM,GAAG,EAAG,CACjC,MAAA1U,EAAM+0B,EAAU,MAAM,EAAGA,EAAU,QAAQ,GAAG,CAAC,EAAE,OACnDtM,EAAKzoB,CAAG,GAAK,MACNg1B,GAAAtE,EAAO1wB,EAAK,EAAE,CAE3B,KAXA,WAAWA,KAAO0U,EACZ+T,EAAKzoB,CAAG,GAAK,MACNg1B,GAAAtE,EAAO1wB,EAAK,EAAE,EAY/B,UAAWA,KAAOyoB,EACZzoB,IAAQ,YACa80B,EAAA,IAEzBE,GAAStE,EAAO1wB,EAAKyoB,EAAKzoB,CAAG,CAAC,CAChC,SAEI60B,GACF,GAAIngB,IAAS+T,EAAM,CACX,MAAAwM,EAAavE,EAAMgE,EAAY,EACjCO,IACFxM,GAAQ,IAAMwM,GAEhBvE,EAAM,QAAUjI,EACOqM,EAAAH,GAAU,KAAKlM,CAAI,CAC5C,OACS/T,GACTrU,EAAG,gBAAgB,OAAO,EAG1Bi0B,MAAwBj0B,IAC1BA,EAAGi0B,EAAoB,EAAIQ,EAAuBpE,EAAM,QAAU,GAC9DrwB,EAAGk0B,EAAW,IAChB7D,EAAM,QAAU,QAGtB,CAEA,MAAMwE,GAAc,iBACpB,SAASF,GAAStE,EAAO9sB,EAAMlE,EAAK,CAC9B,GAAAe,GAAQf,CAAG,EACbA,EAAI,QAASuF,GAAM+vB,GAAStE,EAAO9sB,EAAMqB,CAAC,CAAC,UAEvCvF,GAAO,OACHA,EAAA,IAQJkE,EAAK,WAAW,IAAI,EAChB8sB,EAAA,YAAY9sB,EAAMlE,CAAG,MACtB,CACC,MAAAy1B,EAAWC,GAAW1E,EAAO9sB,CAAI,EACnCsxB,GAAY,KAAKx1B,CAAG,EAChBgxB,EAAA,YACJzuB,GAAUkzB,CAAQ,EAClBz1B,EAAI,QAAQw1B,GAAa,EAAE,EAC3B,WAAA,EAGFxE,EAAMyE,CAAQ,EAAIz1B,CAEtB,CAEJ,CACA,MAAM21B,GAAW,CAAC,SAAU,MAAO,IAAI,EACjCC,GAAc,CAAA,EACpB,SAASF,GAAW1E,EAAO6E,EAAS,CAC5B,MAAAvhB,EAASshB,GAAYC,CAAO,EAClC,GAAIvhB,EACK,OAAAA,EAEL,IAAApQ,EAAO/B,GAAS0zB,CAAO,EACvB,GAAA3xB,IAAS,UAAYA,KAAQ8sB,EACxB,OAAA4E,GAAYC,CAAO,EAAI3xB,EAEhCA,EAAO1B,GAAW0B,CAAI,EACtB,QAAS,EAAI,EAAG,EAAIyxB,GAAS,OAAQ,IAAK,CAClC,MAAAF,EAAWE,GAAS,CAAC,EAAIzxB,EAC/B,GAAIuxB,KAAYzE,EACP,OAAA4E,GAAYC,CAAO,EAAIJ,CAElC,CACO,OAAAI,CACT,CAEA,MAAMC,GAAU,+BAChB,SAASC,GAAUp1B,EAAIL,EAAKoB,EAAOgzB,EAAOhkB,EAAU,CAClD,GAAIgkB,GAASp0B,EAAI,WAAW,QAAQ,EAC9BoB,GAAS,KACXf,EAAG,kBAAkBm1B,GAASx1B,EAAI,MAAM,EAAGA,EAAI,MAAM,CAAC,EAEnDK,EAAA,eAAem1B,GAASx1B,EAAKoB,CAAK,MAElC,CACC,MAAAs0B,EAAY5xB,GAAqB9D,CAAG,EACtCoB,GAAS,MAAQs0B,GAAa,CAAC3xB,GAAmB3C,CAAK,EACzDf,EAAG,gBAAgBL,CAAG,EAEtBK,EAAG,aAAaL,EAAK01B,EAAY,GAAKt0B,CAAK,CAE/C,CACF,CAEA,SAASu0B,GAAat1B,EAAIL,EAAKoB,EAAO4V,EAAcwQ,EAAiB9B,EAAgByD,EAAiB,CAChG,GAAAnpB,IAAQ,aAAeA,IAAQ,cAAe,CAC5CgX,GACcmS,EAAAnS,EAAcwQ,EAAiB9B,CAAc,EAE/DrlB,EAAGL,CAAG,EAAIoB,GAAgB,GAC1B,MACF,CACA,MAAMwyB,EAAMvzB,EAAG,QACX,GAAAL,IAAQ,SAAW4zB,IAAQ,YAC/B,CAACA,EAAI,SAAS,GAAG,EAAG,CACZ,MAAAvxB,EAAWuxB,IAAQ,SAAWvzB,EAAG,aAAa,OAAO,GAAK,GAAKA,EAAG,MAClEgI,EAAWjH,GAAgB,IAC7BiB,IAAagG,GAAY,EAAE,WAAYhI,MACzCA,EAAG,MAAQgI,GAETjH,GAAS,MACXf,EAAG,gBAAgBL,CAAG,EAExBK,EAAG,OAASe,EACZ,MACF,CACA,IAAIw0B,EAAa,GACb,GAAAx0B,IAAU,IAAMA,GAAS,KAAM,CAC3B,MAAA+G,EAAO,OAAO9H,EAAGL,CAAG,EACtBmI,IAAS,UACX/G,EAAQ2C,GAAmB3C,CAAK,EACvBA,GAAS,MAAQ+G,IAAS,UAC3B/G,EAAA,GACKw0B,EAAA,IACJztB,IAAS,WACV/G,EAAA,EACKw0B,EAAA,GAEjB,CACI,GAAA,CACFv1B,EAAGL,CAAG,EAAIoB,OACA,CAOZ,CACcw0B,GAAAv1B,EAAG,gBAAgBL,CAAG,CACtC,CAEA,SAAS61B,GAAiBx1B,EAAI6S,EAAOQ,EAASY,EAAS,CAClDjU,EAAA,iBAAiB6S,EAAOQ,EAASY,CAAO,CAC7C,CACA,SAASwhB,GAAoBz1B,EAAI6S,EAAOQ,EAASY,EAAS,CACrDjU,EAAA,oBAAoB6S,EAAOQ,EAASY,CAAO,CAChD,CACA,MAAMyhB,GAAS,OAAO,MAAM,EAC5B,SAASC,GAAW31B,EAAIk1B,EAASU,EAAWC,EAAW9lB,EAAW,KAAM,CACtE,MAAM+lB,EAAW91B,EAAG01B,EAAM,IAAM11B,EAAG01B,EAAM,EAAI,CAAA,GACvCK,EAAkBD,EAASZ,CAAO,EACxC,GAAIW,GAAaE,EACfA,EAAgB,MAA6FF,MACxG,CACL,KAAM,CAACtyB,EAAM0Q,CAAO,EAAI+hB,GAAUd,CAAO,EACzC,GAAIW,EAAW,CACP,MAAAI,EAAUH,EAASZ,CAAO,EAAIgB,GACmDL,EACrF9lB,CAAA,EAEeylB,GAAAx1B,EAAIuD,EAAM0yB,EAAShiB,CAAO,OAClC8hB,IACWN,GAAAz1B,EAAIuD,EAAMwyB,EAAiB9hB,CAAO,EACtD6hB,EAASZ,CAAO,EAAI,OAExB,CACF,CACA,MAAMiB,GAAoB,4BAC1B,SAASH,GAAUzyB,EAAM,CACnB,IAAA0Q,EACA,GAAAkiB,GAAkB,KAAK5yB,CAAI,EAAG,CAChC0Q,EAAU,CAAA,EACN,IAAA8L,EACJ,KAAOA,EAAIxc,EAAK,MAAM4yB,EAAiB,GAC9B5yB,EAAAA,EAAK,MAAM,EAAGA,EAAK,OAASwc,EAAE,CAAC,EAAE,MAAM,EAC9C9L,EAAQ8L,EAAE,CAAC,EAAE,YAAa,CAAA,EAAI,EAElC,CAEO,MAAA,CADOxc,EAAK,CAAC,IAAM,IAAMA,EAAK,MAAM,CAAC,EAAI3B,GAAU2B,EAAK,MAAM,CAAC,CAAC,EACxD0Q,CAAO,CACxB,CACA,IAAImiB,GAAY,EAChB,MAAM9kB,WAA4B,UAC5B+kB,GAAS,IAAMD,KAAc9kB,GAAE,KAAK,IAAM8kB,GAAY,CAAC,EAAGA,GAAY,KAAK,IAAI,GACrF,SAASF,GAAcI,EAAcvmB,EAAU,CACvC,MAAAkmB,EAAW3D,GAAM,CACjB,GAAA,CAACA,EAAE,KACHA,EAAA,KAAO,KAAK,cACLA,EAAE,MAAQ2D,EAAQ,SAC3B,OAEF/lB,GACEqmB,GAA8BjE,EAAG2D,EAAQ,KAAK,EAC9ClmB,EACA,EACA,CAACuiB,CAAC,CAAA,CACJ,EAEF,OAAA2D,EAAQ,MAAQK,EAChBL,EAAQ,SAAWI,KACZJ,CACT,CAWA,SAASM,GAA8B,EAAGx1B,EAAO,CAC3C,GAAAX,GAAQW,CAAK,EAAG,CAClB,MAAMy1B,EAAe,EAAE,yBACvB,SAAE,yBAA2B,IAAM,CACjCA,EAAa,KAAK,CAAC,EACnB,EAAE,SAAW,EAAA,EAERz1B,EAAM,IACVM,GAAQmrB,GAAO,CAACA,EAAG,UAAYnrB,GAAMA,EAAGmrB,CAAE,CAAA,CAC7C,KAEO,QAAAzrB,CAEX,CAEA,MAAM01B,GAAc92B,GAAQA,EAAI,WAAW,CAAC,IAAM,KAAOA,EAAI,WAAW,CAAC,IAAM,KAC/EA,EAAI,WAAW,CAAC,EAAI,IAAMA,EAAI,WAAW,CAAC,EAAI,IACxC+2B,GAAY,CAAC12B,EAAIL,EAAKi2B,EAAWC,EAAWhU,EAAWlL,EAAcwQ,EAAiB9B,EAAgByD,IAAoB,CAC9H,MAAMiL,EAAQlS,IAAc,MACxBliB,IAAQ,QACCm0B,GAAA9zB,EAAI61B,EAAW9B,CAAK,EACtBp0B,IAAQ,QACN40B,GAAAv0B,EAAI41B,EAAWC,CAAS,EAC1Bn2B,GAAKC,CAAG,EACZC,GAAgBD,CAAG,GACtBg2B,GAAW31B,EAAIL,EAAKi2B,EAAWC,EAAW1O,CAAe,GAElDxnB,EAAI,CAAC,IAAM,KAAOA,EAAMA,EAAI,MAAM,CAAC,EAAG,IAAQA,EAAI,CAAC,IAAM,KAAOA,EAAMA,EAAI,MAAM,CAAC,EAAG,IAASg3B,GAAgB32B,EAAIL,EAAKk2B,EAAW9B,CAAK,GAC/IuB,GACEt1B,EACAL,EACAk2B,EACAlf,EACAwQ,EACA9B,EACAyD,CAAA,GAGEnpB,IAAQ,aACVK,EAAG,WAAa61B,EACPl2B,IAAQ,gBACjBK,EAAG,YAAc61B,GAETT,GAAAp1B,EAAIL,EAAKk2B,EAAW9B,CAAK,EAEvC,EACA,SAAS4C,GAAgB32B,EAAIL,EAAKoB,EAAOgzB,EAAO,CAC9C,GAAIA,EAIF,MAHI,GAAAp0B,IAAQ,aAAeA,IAAQ,eAG/BA,KAAOK,GAAMy2B,GAAW92B,CAAG,GAAKc,GAAWM,CAAK,GActD,GATIpB,IAAQ,cAAgBA,IAAQ,aAAeA,IAAQ,aAGvDA,IAAQ,QAGRA,IAAQ,QAAUK,EAAG,UAAY,SAGjCL,IAAQ,QAAUK,EAAG,UAAY,WAC5B,MAAA,GAEL,GAAAL,IAAQ,SAAWA,IAAQ,SAAU,CACvC,MAAM4zB,EAAMvzB,EAAG,QACf,GAAIuzB,IAAQ,OAASA,IAAQ,SAAWA,IAAQ,UAAYA,IAAQ,SAC3D,MAAA,EAEX,CACA,OAAIkD,GAAW92B,CAAG,GAAKe,GAASK,CAAK,EAC5B,GAEFpB,KAAOK,CAChB,CA4XA,MAAM42B,GAAoB9hB,GAAU,CAClC,MAAMzT,EAAKyT,EAAM,MAAM,qBAAqB,GAAK,GAC1C,OAAA1U,GAAQiB,CAAE,EAAKN,GAAUkB,GAAeZ,EAAIN,CAAK,EAAIM,CAC9D,EACA,SAASw1B,GAAmB,EAAG,CAC7B,EAAE,OAAO,UAAY,EACvB,CACA,SAASC,GAAiB,EAAG,CAC3B,MAAMjvB,EAAS,EAAE,OACbA,EAAO,YACTA,EAAO,UAAY,GACnBA,EAAO,cAAc,IAAI,MAAM,OAAO,CAAC,EAE3C,CACA,MAAMkvB,GAAY,OAAO,SAAS,EAC5BC,GAAa,CACjB,QAAQh3B,EAAI,CAAE,UAAW,CAAE,KAAAi3B,EAAM,KAAA9jB,EAAM,OAAAD,EAAS,EAAG4B,EAAO,CACrD9U,EAAA+2B,EAAS,EAAIH,GAAiB9hB,CAAK,EACtC,MAAMoiB,EAAehkB,GAAU4B,EAAM,OAASA,EAAM,MAAM,OAAS,SACnE0gB,GAAiBx1B,EAAIi3B,EAAO,SAAW,QAAU3E,GAAM,CACrD,GAAIA,EAAE,OAAO,UACX,OACF,IAAI6E,EAAWn3B,EAAG,MACdmT,IACFgkB,EAAWA,EAAS,QAElBD,IACFC,EAAW50B,GAAc40B,CAAQ,GAEhCn3B,EAAA+2B,EAAS,EAAEI,CAAQ,CAAA,CACvB,EACGhkB,GACeqiB,GAAAx1B,EAAI,SAAU,IAAM,CAChCA,EAAA,MAAQA,EAAG,MAAM,KAAK,CAAA,CAC1B,EAEEi3B,IACczB,GAAAx1B,EAAI,mBAAoB62B,EAAkB,EAC1CrB,GAAAx1B,EAAI,iBAAkB82B,EAAgB,EACtCtB,GAAAx1B,EAAI,SAAU82B,EAAgB,EAEnD,EAEA,QAAQ92B,EAAI,CAAE,MAAAe,GAAS,CAClBf,EAAA,MAAQe,GAAgB,EAC7B,EACA,aAAaf,EAAI,CAAE,MAAAe,EAAO,UAAW,CAAE,KAAAk2B,EAAM,KAAA9jB,EAAM,OAAAD,EAAS,EAAG4B,EAAO,CAEpE,GADG9U,EAAA+2B,EAAS,EAAIH,GAAiB9hB,CAAK,EAClC9U,EAAG,UACL,OACF,MAAMo3B,GAAWlkB,GAAUlT,EAAG,OAAS,WAAa,CAAC,OAAO,KAAKA,EAAG,KAAK,EAAIuC,GAAcvC,EAAG,KAAK,EAAIA,EAAG,MACpGgI,EAAWjH,GAAgB,GAC7Bq2B,IAAYpvB,IAGZ,SAAS,gBAAkBhI,GAAMA,EAAG,OAAS,UAC3Ci3B,GAGA9jB,GAAQnT,EAAG,MAAM,KAAA,IAAWgI,KAIlChI,EAAG,MAAQgI,GACb,CACF,EAmDMqvB,GAAc,CAClB,QAAQr3B,EAAI,CAAE,MAAAe,CAAA,EAAS+T,EAAO,CAC5B9U,EAAG,QAAU+D,GAAWhD,EAAO+T,EAAM,MAAM,KAAK,EAC7C9U,EAAA+2B,EAAS,EAAIH,GAAiB9hB,CAAK,EACrB0gB,GAAAx1B,EAAI,SAAU,IAAM,CACnCA,EAAG+2B,EAAS,EAAEO,GAASt3B,CAAE,CAAC,CAAA,CAC3B,CACH,EACA,aAAaA,EAAI,CAAE,MAAAe,EAAO,SAAAiB,CAAA,EAAY8S,EAAO,CACxC9U,EAAA+2B,EAAS,EAAIH,GAAiB9hB,CAAK,EAClC/T,IAAUiB,IACZhC,EAAG,QAAU+D,GAAWhD,EAAO+T,EAAM,MAAM,KAAK,EAEpD,CACF,EAmEA,SAASwiB,GAASt3B,EAAI,CACpB,MAAO,WAAYA,EAAKA,EAAG,OAASA,EAAG,KACzC,CA+EA,MAAMu3B,GAAkB,CAAC,OAAQ,QAAS,MAAO,MAAM,EACjDC,GAAiB,CACrB,KAAO,GAAM,EAAE,gBAAgB,EAC/B,QAAU,GAAM,EAAE,eAAe,EACjC,KAAO,GAAM,EAAE,SAAW,EAAE,cAC5B,KAAO,GAAM,CAAC,EAAE,QAChB,MAAQ,GAAM,CAAC,EAAE,SACjB,IAAM,GAAM,CAAC,EAAE,OACf,KAAO,GAAM,CAAC,EAAE,QAChB,KAAO,GAAM,WAAY,GAAK,EAAE,SAAW,EAC3C,OAAS,GAAM,WAAY,GAAK,EAAE,SAAW,EAC7C,MAAQ,GAAM,WAAY,GAAK,EAAE,SAAW,EAC5C,MAAO,CAAC,EAAGtd,IAAcqd,GAAgB,KAAMxX,GAAM,EAAE,GAAGA,CAAC,KAAK,GAAK,CAAC7F,EAAU,SAAS6F,CAAC,CAAC,CAC7F,EACM0X,GAAgB,CAACp2B,EAAI6Y,IAAc,CACvC,MAAM5Y,EAAQD,EAAG,YAAcA,EAAG,UAAY,CAAA,GACxCq2B,EAAWxd,EAAU,KAAK,GAAG,EAC5B,OAAA5Y,EAAMo2B,CAAQ,IAAMp2B,EAAMo2B,CAAQ,EAAI,CAAC7kB,KAAUjK,IAAS,CAC/D,QAAS3I,EAAI,EAAGA,EAAIia,EAAU,OAAQja,IAAK,CACzC,MAAM03B,EAAQH,GAAetd,EAAUja,CAAC,CAAC,EACrC,GAAA03B,GAASA,EAAM9kB,EAAOqH,CAAS,EACjC,MACJ,CACO,OAAA7Y,EAAGwR,EAAO,GAAGjK,CAAI,CAAA,EAE5B,EAwBMgvB,GAAkC/3B,GAAO,CAAE,UAAA62B,IAAapD,EAAO,EACrE,IAAIuE,GAEJ,SAASC,IAAiB,CACjB,OAAAD,KAAaA,GAAW9R,GAAe6R,EAAe,EAC/D,CAYA,MAAMG,GAAY,IAAInvB,IAAS,CAC7B,MAAM0Y,EAAMwW,GAAA,EAAiB,UAAU,GAAGlvB,CAAI,EAKxC,CAAE,MAAAovB,CAAU,EAAA1W,EACd,OAAAA,EAAA,MAAS2W,GAAwB,CAC7B,MAAAhR,EAAYiR,GAAmBD,CAAmB,EACxD,GAAI,CAAChR,EACH,OACF,MAAMrQ,EAAY0K,EAAI,WAClB,CAAC7gB,GAAWmW,CAAS,GAAK,CAACA,EAAU,QAAU,CAACA,EAAU,WAC5DA,EAAU,SAAWqQ,EAAU,WAEjCA,EAAU,UAAY,GACtB,MAAMvZ,EAAQsqB,EAAM/Q,EAAW,GAAOkR,GAAqBlR,CAAS,CAAC,EACrE,OAAIA,aAAqB,UACvBA,EAAU,gBAAgB,SAAS,EACzBA,EAAA,aAAa,aAAc,EAAE,GAElCvZ,CAAA,EAEF4T,CACT,EAgBA,SAAS6W,GAAqBlR,EAAW,CACvC,GAAIA,aAAqB,WAChB,MAAA,MAET,GAAI,OAAO,eAAkB,YAAcA,aAAqB,cACvD,MAAA,QAEX,CAoCA,SAASiR,GAAmBjR,EAAW,CACjC,OAAAvmB,GAASumB,CAAS,EACR,SAAS,cAAcA,CAAS,EAavCA,CACT,CC/kDA,IAAImR,GAAS,GCFb;AAAA;AAAA;AAAA;AAAA,GAYA,IAAIC,GAQJ,MAAMC,GAAkBC,GAAWF,GAAcE,EAK3CC,GAAsG,OAAO,EAEnH,SAASv3B,GAETw3B,EAAG,CACC,OAAQA,GACJ,OAAOA,GAAM,UACb,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAM,mBACtC,OAAOA,EAAE,QAAW,UAC5B,CAMA,IAAIC,IACH,SAAUA,EAAc,CAQrBA,EAAa,OAAY,SAMzBA,EAAa,YAAiB,eAM9BA,EAAa,cAAmB,gBAEpC,GAAGA,KAAiBA,GAAe,CAAG,EAAA,EAu4BtC,SAASC,IAAc,CACb,MAAAnzB,EAAQH,GAAY,EAAI,EAGxBmX,EAAQhX,EAAM,IAAI,IAAMqJ,GAAI,CAAE,CAAA,CAAC,EACrC,IAAI+pB,EAAK,CAAA,EAELC,EAAgB,CAAA,EACpB,MAAMN,EAAQzqB,GAAQ,CAClB,QAAQwT,EAAK,CAGTgX,GAAeC,CAAK,EAEhBA,EAAM,GAAKjX,EACPA,EAAA,QAAQkX,GAAaD,CAAK,EAC1BjX,EAAA,OAAO,iBAAiB,OAASiX,EAKrCM,EAAc,QAASrX,GAAWoX,EAAG,KAAKpX,CAAM,CAAC,EACjDqX,EAAgB,CAAA,CAExB,EACA,IAAIrX,EAAQ,CACR,MAAI,CAAC,KAAK,IAAM,CAAC4W,GACbS,EAAc,KAAKrX,CAAM,EAGzBoX,EAAG,KAAKpX,CAAM,EAEX,IACX,EACA,GAAAoX,EAGA,GAAI,KACJ,GAAIpzB,EACJ,OAAQ,IACR,MAAAgX,CAAA,CACH,EAMM,OAAA+b,CACX,CAkGA,MAAMO,GAAO,IAAM,CAAE,EACrB,SAASC,GAAgBC,EAAeztB,EAAUvG,EAAUgU,EAAY8f,GAAM,CAC1EE,EAAc,KAAKztB,CAAQ,EAC3B,MAAM0tB,EAAqB,IAAM,CACvB,MAAAC,EAAMF,EAAc,QAAQztB,CAAQ,EACtC2tB,EAAM,KACQF,EAAA,OAAOE,EAAK,CAAC,EACjBlgB,IACd,EAEA,MAAA,CAAChU,GAAYS,MACbC,GAAeuzB,CAAkB,EAE9BA,CACX,CACA,SAASE,GAAqBH,KAAkBpwB,EAAM,CAClDowB,EAAc,MAAM,EAAE,QAASztB,GAAa,CACxCA,EAAS,GAAG3C,CAAI,CAAA,CACnB,CACL,CAEA,MAAMwwB,GAA0B/3B,GAAOA,IACvC,SAASg4B,GAAqBxxB,EAAQyxB,EAAc,CAE5CzxB,aAAkB,KAAOyxB,aAAwB,KACpCA,EAAA,QAAQ,CAACv4B,EAAOpB,IAAQkI,EAAO,IAAIlI,EAAKoB,CAAK,CAAC,EAG3D8G,aAAkB,KAAOyxB,aAAwB,KACpCA,EAAA,QAAQzxB,EAAO,IAAKA,CAAM,EAG3C,UAAWlI,KAAO25B,EAAc,CACxB,GAAA,CAACA,EAAa,eAAe35B,CAAG,EAChC,SACE,MAAA45B,EAAWD,EAAa35B,CAAG,EAC3B65B,EAAc3xB,EAAOlI,CAAG,EAC1BsB,GAAcu4B,CAAW,GACzBv4B,GAAcs4B,CAAQ,GACtB1xB,EAAO,eAAelI,CAAG,GACzB,CAAC8J,GAAM8vB,CAAQ,GACf,CAAC5rB,GAAW4rB,CAAQ,EAIpB1xB,EAAOlI,CAAG,EAAI05B,GAAqBG,EAAaD,CAAQ,EAIxD1xB,EAAOlI,CAAG,EAAI45B,CAEtB,CACO,OAAA1xB,CACX,CACA,MAAM4xB,GAE2B,OAAO,EAqBxC,SAASC,GAAcr3B,EAAK,CACjB,MAED,CAACpB,GAAcoB,CAAG,GAAK,CAACA,EAAI,eAAeo3B,EAAiB,CACtE,CACA,KAAM,CAAE,OAAAE,EAAW,EAAA,OACnB,SAASC,GAAWnB,EAAG,CACnB,MAAO,CAAC,EAAEhvB,GAAMgvB,CAAC,GAAKA,EAAE,OAC5B,CACA,SAASoB,GAAmBroB,EAAIyC,EAASskB,EAAOuB,EAAK,CACjD,KAAM,CAAE,MAAAtd,EAAO,QAAAud,EAAS,QAAAC,CAAA,EAAY/lB,EAC9BgmB,EAAe1B,EAAM,MAAM,MAAM/mB,CAAE,EACrC,IAAA0oB,EACJ,SAASjI,GAAQ,CACRgI,IAMG1B,EAAM,MAAM,MAAM/mB,CAAE,EAAIgL,EAAQA,IAAU,IAIlD,MAAM2d,EAGA5qB,GAAOgpB,EAAM,MAAM,MAAM/mB,CAAE,CAAC,EAClC,OAAOmoB,GAAOQ,EAAYJ,EAAS,OAAO,KAAKC,GAAW,CAAA,CAAE,EAAE,OAAO,CAACI,EAAiB72B,KAInF62B,EAAgB72B,CAAI,EAAIuK,GAAQtH,GAAS,IAAM,CAC3C8xB,GAAeC,CAAK,EAEpB,MAAM2B,EAAQ3B,EAAM,GAAG,IAAI/mB,CAAE,EAQ7B,OAAOwoB,EAAQz2B,CAAI,EAAE,KAAK22B,EAAOA,CAAK,CACzC,CAAA,CAAC,EACKE,GACR,CAAA,CAAE,CAAC,CACV,CACA,OAAAF,EAAQG,GAAiB7oB,EAAIygB,EAAOhe,EAASskB,EAAOuB,EAAK,EAAI,EACtDI,CACX,CACA,SAASG,GAAiBC,EAAKrI,EAAOhe,EAAU,CAAA,EAAIskB,EAAOuB,EAAKS,EAAgB,CACxE,IAAA/0B,EACJ,MAAMg1B,EAAmBb,GAAO,CAAE,QAAS,CAAC,CAAA,EAAK1lB,CAAO,EAMlDwmB,EAAoB,CACtB,KAAM,EAAA,EAwBN,IAAAC,EACAC,EACA3B,EAAgB,CAAA,EAChB4B,EAAsB,CAAA,EACtBC,EACJ,MAAMZ,EAAe1B,EAAM,MAAM,MAAM+B,CAAG,EAGtC,CAACC,GAAkB,CAACN,IAMhB1B,EAAM,MAAM,MAAM+B,CAAG,EAAI,CAAA,GAGhBzrB,GAAI,CAAA,CAAE,EAGnB,IAAAisB,EACJ,SAASC,EAAOC,EAAuB,CAC/B,IAAAC,EACJP,EAAcC,EAAkB,GAM5B,OAAOK,GAA0B,YACjCA,EAAsBzC,EAAM,MAAM,MAAM+B,CAAG,CAAC,EACrBW,EAAA,CACnB,KAAMvC,GAAa,cACnB,QAAS4B,EACT,OAAQO,CAAA,IAIZxB,GAAqBd,EAAM,MAAM,MAAM+B,CAAG,EAAGU,CAAqB,EAC3CC,EAAA,CACnB,KAAMvC,GAAa,YACnB,QAASsC,EACT,QAASV,EACT,OAAQO,CAAA,GAGV,MAAAK,EAAgBJ,EAAiB,SAC9BzpB,GAAA,EAAE,KAAK,IAAM,CACdypB,IAAmBI,IACLR,EAAA,GAClB,CACH,EACiBC,EAAA,GAElBxB,GAAqBH,EAAeiC,EAAsB1C,EAAM,MAAM,MAAM+B,CAAG,CAAC,CACpF,CACM,MAAAa,EAASZ,EACT,UAAkB,CACV,KAAA,CAAE,MAAA/d,CAAU,EAAAvI,EACZmnB,EAAW5e,EAAQA,EAAM,EAAI,CAAA,EAE9B,KAAA,OAAQ6e,GAAW,CACpB1B,GAAO0B,EAAQD,CAAQ,CAAA,CAC1B,CACL,EAMUtC,GACd,SAASwC,GAAW,CAChB91B,EAAM,KAAK,EACXwzB,EAAgB,CAAA,EAChB4B,EAAsB,CAAA,EAChBrC,EAAA,GAAG,OAAO+B,CAAG,CACvB,CAQS,SAAAiB,EAAWh4B,EAAMi4B,EAAQ,CAC9B,OAAO,UAAY,CACflD,GAAeC,CAAK,EACd,MAAA3vB,EAAO,MAAM,KAAK,SAAS,EAC3B6yB,EAAoB,CAAA,EACpBC,EAAsB,CAAA,EAC5B,SAASC,GAAMpwB,GAAU,CACrBkwB,EAAkB,KAAKlwB,EAAQ,CACnC,CACA,SAASqwB,GAAQrwB,GAAU,CACvBmwB,EAAoB,KAAKnwB,EAAQ,CACrC,CAEA4tB,GAAqByB,EAAqB,CACtC,KAAAhyB,EACA,KAAArF,EACA,MAAA22B,EACA,MAAAyB,GACA,QAAAC,EAAA,CACH,EACG,IAAAx4B,GACA,GAAA,CACMA,GAAAo4B,EAAO,MAAM,MAAQ,KAAK,MAAQlB,EAAM,KAAOJ,EAAOtxB,CAAI,QAG7DizB,GAAO,CACV,MAAA1C,GAAqBuC,EAAqBG,EAAK,EACzCA,EACV,CACA,OAAIz4B,cAAe,QACRA,GACF,KAAMrC,KACPo4B,GAAqBsC,EAAmB16B,EAAK,EACtCA,GACV,EACI,MAAO86B,KACR1C,GAAqBuC,EAAqBG,EAAK,EACxC,QAAQ,OAAOA,EAAK,EAC9B,GAGL1C,GAAqBsC,EAAmBr4B,EAAG,EACpCA,GAAA,CAEf,CAOA,MAAM04B,EAAe,CACjB,GAAIvD,EAEJ,IAAA+B,EACA,UAAWvB,GAAgB,KAAK,KAAM6B,CAAmB,EACzD,OAAAG,EACA,OAAAI,EACA,WAAW5vB,EAAU0I,EAAU,GAAI,CACzB,MAAAglB,EAAqBF,GAAgBC,EAAeztB,EAAU0I,EAAQ,SAAU,IAAM8nB,GAAa,EACnGA,EAAcv2B,EAAM,IAAI,IAAMuS,GAAM,IAAMwgB,EAAM,MAAM,MAAM+B,CAAG,EAAI9d,GAAU,EAC3EvI,EAAQ,QAAU,OAAS0mB,EAAkBD,IACpCnvB,EAAA,CACL,QAAS+uB,EACT,KAAM5B,GAAa,OACnB,OAAQmC,GACTre,CAAK,GAEbmd,GAAO,GAAIc,EAAmBxmB,CAAO,CAAC,CAAC,EACnC,OAAAglB,CACX,EACA,SAAAqC,CAAA,EAOEpB,EAAQvwB,GAQRmyB,CAAY,EAGZvD,EAAA,GAAG,IAAI+B,EAAKJ,CAAK,EAGvB,MAAM8B,GAFkBzD,EAAM,IAAMA,EAAM,GAAG,gBAAmBa,IAE9B,IAAMb,EAAM,GAAG,IAAI,KAAO/yB,EAAQH,GAAY,GAAG,IAAI4sB,CAAK,CAAC,CAAC,EAE9F,UAAWtyB,KAAOq8B,EAAY,CACpB,MAAAnY,EAAOmY,EAAWr8B,CAAG,EACtB,GAAA8J,GAAMoa,CAAI,GAAK,CAAC+V,GAAW/V,CAAI,GAAMlW,GAAWkW,CAAI,EAO3C0W,IAEFN,GAAgBP,GAAc7V,CAAI,IAC9Bpa,GAAMoa,CAAI,EACLA,EAAA,MAAQoW,EAAat6B,CAAG,EAKR05B,GAAAxV,EAAMoW,EAAat6B,CAAG,CAAC,GAShD44B,EAAM,MAAM,MAAM+B,CAAG,EAAE36B,CAAG,EAAIkkB,WASjC,OAAOA,GAAS,WAAY,CAEjC,MAAMoY,EAAsEV,EAAW57B,EAAKkkB,CAAI,EAS5FmY,EAAWr8B,CAAG,EAAIs8B,EAQLzB,EAAA,QAAQ76B,CAAG,EAAIkkB,CAAA,CAiBxC,CASI,OAAA8V,GAAOO,EAAO8B,CAAU,EAGjBrC,GAAA9wB,GAAMqxB,CAAK,EAAG8B,CAAU,EAK5B,OAAA,eAAe9B,EAAO,SAAU,CACnC,IAAK,IAAyE3B,EAAM,MAAM,MAAM+B,CAAG,EACnG,IAAM9d,GAAU,CAKZue,EAAQM,GAAW,CACf1B,GAAO0B,EAAQ7e,CAAK,CAAA,CACvB,CACL,CAAA,CACH,EAyFK+b,EAAA,GAAG,QAAS2D,GAAa,CAavBvC,GAAOO,EAAO10B,EAAM,IAAI,IAAM02B,EAAS,CACnC,MAAAhC,EACA,IAAK3B,EAAM,GACX,MAAAA,EACA,QAASiC,CACZ,CAAA,CAAC,CAAC,CACP,CACH,EAWGP,GACAM,GACAtmB,EAAQ,SACAA,EAAA,QAAQimB,EAAM,OAAQD,CAAY,EAEhCS,EAAA,GACIC,EAAA,GACXT,CACX,CACA,SAASiC,GAETC,EAAanK,EAAOoK,EAAc,CAC1B,IAAA7qB,EACAyC,EACE,MAAAqoB,EAAe,OAAOrK,GAAU,WAE7BzgB,EAAA4qB,EAELnoB,EAAUqoB,EAAeD,EAAepK,EASnC,SAAAsK,EAAShE,EAAOuB,EAAK,CAC1B,MAAM0C,EAAata,KACnB,OAAAqW,EAGuFA,IAC9EiE,EAAa3kB,GAAO2gB,GAAa,IAAI,EAAI,MAC9CD,GACAD,GAAeC,CAAK,EAMhBA,EAAAF,GACHE,EAAM,GAAG,IAAI/mB,CAAE,IAEZ8qB,EACiBjC,GAAA7oB,EAAIygB,EAAOhe,EAASskB,CAAK,EAGvBsB,GAAAroB,EAAIyC,EAASskB,CAAK,GAQ/BA,EAAM,GAAG,IAAI/mB,CAAE,CAyBjC,CACA,OAAA+qB,EAAS,IAAM/qB,EACR+qB,CACX,CCztDe,SAASE,GAAKp7B,EAAImK,EAAS,CACxC,OAAO,UAAgB,CACrB,OAAOnK,EAAG,MAAMmK,EAAS,SAAS,CACtC,CACA,CCAA,KAAM,CAAC,SAAAkxB,EAAQ,EAAI,OAAO,UACpB,CAAC,eAAAC,EAAc,EAAI,OAEnBC,IAAUt7B,GAASu7B,GAAS,CAC9B,MAAM39B,EAAMw9B,GAAS,KAAKG,CAAK,EAC/B,OAAOv7B,EAAMpC,CAAG,IAAMoC,EAAMpC,CAAG,EAAIA,EAAI,MAAM,EAAG,EAAE,EAAE,YAAa,EACrE,GAAG,OAAO,OAAO,IAAI,CAAC,EAEhB49B,GAAch1B,IAClBA,EAAOA,EAAK,cACJ+0B,GAAUD,GAAOC,CAAK,IAAM/0B,GAGhCi1B,GAAaj1B,GAAQ+0B,GAAS,OAAOA,IAAU/0B,EAS/C,CAAC1H,QAAAA,EAAO,EAAI,MASZ48B,GAAcD,GAAW,WAAW,EAS1C,SAASE,GAAS59B,EAAK,CACrB,OAAOA,IAAQ,MAAQ,CAAC29B,GAAY39B,CAAG,GAAKA,EAAI,cAAgB,MAAQ,CAAC29B,GAAY39B,EAAI,WAAW,GAC/FoB,GAAWpB,EAAI,YAAY,QAAQ,GAAKA,EAAI,YAAY,SAASA,CAAG,CAC3E,CASA,MAAM69B,GAAgBJ,GAAW,aAAa,EAU9C,SAASK,GAAkB99B,EAAK,CAC9B,IAAI4K,EACJ,OAAK,OAAO,YAAgB,KAAiB,YAAY,OACvDA,EAAS,YAAY,OAAO5K,CAAG,EAE/B4K,EAAU5K,GAASA,EAAI,QAAY69B,GAAc79B,EAAI,MAAM,EAEtD4K,CACT,CASA,MAAMvJ,GAAWq8B,GAAW,QAAQ,EAQ9Bt8B,GAAas8B,GAAW,UAAU,EASlCK,GAAWL,GAAW,QAAQ,EAS9Bn8B,GAAYi8B,GAAUA,IAAU,MAAQ,OAAOA,GAAU,SAQzDxH,GAAYwH,GAASA,IAAU,IAAQA,IAAU,GASjD57B,GAAiB5B,GAAQ,CAC7B,GAAIu9B,GAAOv9B,CAAG,IAAM,SAClB,MAAO,GAGT,MAAMg+B,EAAYV,GAAet9B,CAAG,EACpC,OAAQg+B,IAAc,MAAQA,IAAc,OAAO,WAAa,OAAO,eAAeA,CAAS,IAAM,OAAS,EAAE,OAAO,eAAeh+B,IAAQ,EAAE,OAAO,YAAYA,EACrK,EASMmB,GAASs8B,GAAW,MAAM,EAS1BQ,GAASR,GAAW,MAAM,EAS1BS,GAAST,GAAW,MAAM,EAS1BU,GAAaV,GAAW,UAAU,EASlCW,GAAYp+B,GAAQuB,GAASvB,CAAG,GAAKoB,GAAWpB,EAAI,IAAI,EASxDq+B,GAAcb,GAAU,CAC5B,IAAIc,EACJ,OAAOd,IACJ,OAAO,UAAa,YAAcA,aAAiB,UAClDp8B,GAAWo8B,EAAM,MAAM,KACpBc,EAAOf,GAAOC,CAAK,KAAO,YAE1Bc,IAAS,UAAYl9B,GAAWo8B,EAAM,QAAQ,GAAKA,EAAM,SAAU,IAAK,qBAIjF,EASMe,GAAoBd,GAAW,iBAAiB,EAShD3pB,GAAQjU,GAAQA,EAAI,KACxBA,EAAI,KAAI,EAAKA,EAAI,QAAQ,qCAAsC,EAAE,EAiBnE,SAAS2+B,GAAQx7B,EAAKhB,EAAI,CAAC,WAAAy8B,EAAa,EAAK,EAAI,GAAI,CAEnD,GAAIz7B,IAAQ,MAAQ,OAAOA,EAAQ,IACjC,OAGF,IAAIpC,EACAkF,EAQJ,GALI,OAAO9C,GAAQ,WAEjBA,EAAM,CAACA,CAAG,GAGRjC,GAAQiC,CAAG,EAEb,IAAKpC,EAAI,EAAGkF,EAAI9C,EAAI,OAAQpC,EAAIkF,EAAGlF,IACjCoB,EAAG,KAAK,KAAMgB,EAAIpC,CAAC,EAAGA,EAAGoC,CAAG,MAEzB,CAEL,MAAM6T,EAAO4nB,EAAa,OAAO,oBAAoBz7B,CAAG,EAAI,OAAO,KAAKA,CAAG,EACrEssB,EAAMzY,EAAK,OACjB,IAAIvW,EAEJ,IAAKM,EAAI,EAAGA,EAAI0uB,EAAK1uB,IACnBN,EAAMuW,EAAKjW,CAAC,EACZoB,EAAG,KAAK,KAAMgB,EAAI1C,CAAG,EAAGA,EAAK0C,CAAG,CAEnC,CACH,CAEA,SAAS07B,GAAQ17B,EAAK1C,EAAK,CACzBA,EAAMA,EAAI,cACV,MAAMuW,EAAO,OAAO,KAAK7T,CAAG,EAC5B,IAAIpC,EAAIiW,EAAK,OACT1R,EACJ,KAAOvE,KAAM,GAEX,GADAuE,EAAO0R,EAAKjW,CAAC,EACTN,IAAQ6E,EAAK,cACf,OAAOA,EAGX,OAAO,IACT,CAEA,MAAMw5B,GAEA,OAAO,WAAe,IAAoB,WACvC,OAAO,KAAS,IAAc,KAAQ,OAAO,OAAW,IAAc,OAAS,OAGlFC,GAAoB9c,GAAY,CAAC6b,GAAY7b,CAAO,GAAKA,IAAY6c,GAoB3E,SAASE,IAAmC,CAC1C,KAAM,CAAC,SAAAC,CAAQ,EAAIF,GAAiB,IAAI,GAAK,MAAQ,GAC/Ch0B,EAAS,CAAA,EACTm0B,EAAc,CAAC/+B,EAAKM,IAAQ,CAChC,MAAM0+B,EAAYF,GAAYJ,GAAQ9zB,EAAQtK,CAAG,GAAKA,EAClDsB,GAAcgJ,EAAOo0B,CAAS,CAAC,GAAKp9B,GAAc5B,CAAG,EACvD4K,EAAOo0B,CAAS,EAAIH,GAAMj0B,EAAOo0B,CAAS,EAAGh/B,CAAG,EACvC4B,GAAc5B,CAAG,EAC1B4K,EAAOo0B,CAAS,EAAIH,GAAM,CAAE,EAAE7+B,CAAG,EACxBe,GAAQf,CAAG,EACpB4K,EAAOo0B,CAAS,EAAIh/B,EAAI,MAAK,EAE7B4K,EAAOo0B,CAAS,EAAIh/B,CAEvB,EAED,QAASY,EAAI,EAAGkF,EAAI,UAAU,OAAQlF,EAAIkF,EAAGlF,IAC3C,UAAUA,CAAC,GAAK49B,GAAQ,UAAU59B,CAAC,EAAGm+B,CAAW,EAEnD,OAAOn0B,CACT,CAYA,MAAMpK,GAAS,CAAC+D,EAAGC,EAAG2H,EAAS,CAAC,WAAAsyB,CAAU,EAAG,MAC3CD,GAAQh6B,EAAG,CAACxE,EAAKM,IAAQ,CACnB6L,GAAW/K,GAAWpB,CAAG,EAC3BuE,EAAEjE,CAAG,EAAI88B,GAAKp9B,EAAKmM,CAAO,EAE1B5H,EAAEjE,CAAG,EAAIN,CAEf,EAAK,CAAC,WAAAy+B,CAAU,CAAC,EACRl6B,GAUH06B,GAAYvN,IACZA,EAAQ,WAAW,CAAC,IAAM,QAC5BA,EAAUA,EAAQ,MAAM,CAAC,GAEpBA,GAYHwN,GAAW,CAACC,EAAaC,EAAkB1rB,EAAO2rB,IAAgB,CACtEF,EAAY,UAAY,OAAO,OAAOC,EAAiB,UAAWC,CAAW,EAC7EF,EAAY,UAAU,YAAcA,EACpC,OAAO,eAAeA,EAAa,QAAS,CAC1C,MAAOC,EAAiB,SAC5B,CAAG,EACD1rB,GAAS,OAAO,OAAOyrB,EAAY,UAAWzrB,CAAK,CACrD,EAWM4rB,GAAe,CAACC,EAAWC,EAASC,EAAQC,IAAe,CAC/D,IAAIhsB,EACA9S,EACA4jB,EACJ,MAAMjD,EAAS,CAAA,EAIf,GAFAie,EAAUA,GAAW,GAEjBD,GAAa,KAAM,OAAOC,EAE9B,EAAG,CAGD,IAFA9rB,EAAQ,OAAO,oBAAoB6rB,CAAS,EAC5C3+B,EAAI8S,EAAM,OACH9S,KAAM,GACX4jB,EAAO9Q,EAAM9S,CAAC,GACT,CAAC8+B,GAAcA,EAAWlb,EAAM+a,EAAWC,CAAO,IAAM,CAACje,EAAOiD,CAAI,IACvEgb,EAAQhb,CAAI,EAAI+a,EAAU/a,CAAI,EAC9BjD,EAAOiD,CAAI,EAAI,IAGnB+a,EAAYE,IAAW,IAASnC,GAAeiC,CAAS,CAC5D,OAAWA,IAAc,CAACE,GAAUA,EAAOF,EAAWC,CAAO,IAAMD,IAAc,OAAO,WAEtF,OAAOC,CACT,EAWMG,GAAW,CAAC9/B,EAAK+/B,EAAcC,IAAa,CAChDhgC,EAAM,OAAOA,CAAG,GACZggC,IAAa,QAAaA,EAAWhgC,EAAI,UAC3CggC,EAAWhgC,EAAI,QAEjBggC,GAAYD,EAAa,OACzB,MAAME,EAAYjgC,EAAI,QAAQ+/B,EAAcC,CAAQ,EACpD,OAAOC,IAAc,IAAMA,IAAcD,CAC3C,EAUME,GAAWvC,GAAU,CACzB,GAAI,CAACA,EAAO,OAAO,KACnB,GAAIz8B,GAAQy8B,CAAK,EAAG,OAAOA,EAC3B,IAAI58B,EAAI48B,EAAM,OACd,GAAI,CAACO,GAASn9B,CAAC,EAAG,OAAO,KACzB,MAAMF,EAAM,IAAI,MAAME,CAAC,EACvB,KAAOA,KAAM,GACXF,EAAIE,CAAC,EAAI48B,EAAM58B,CAAC,EAElB,OAAOF,CACT,EAWMs/B,IAAgBC,GAEbzC,GACEyC,GAAczC,aAAiByC,GAEvC,OAAO,WAAe,KAAe3C,GAAe,UAAU,CAAC,EAU5D4C,GAAe,CAACl9B,EAAKhB,IAAO,CAGhC,MAAMm+B,GAFYn9B,GAAOA,EAAI,OAAO,QAAQ,GAEjB,KAAKA,CAAG,EAEnC,IAAI4H,EAEJ,MAAQA,EAASu1B,EAAS,KAAI,IAAO,CAACv1B,EAAO,MAAM,CACjD,MAAMw1B,EAAOx1B,EAAO,MACpB5I,EAAG,KAAKgB,EAAKo9B,EAAK,CAAC,EAAGA,EAAK,CAAC,CAAC,CAC9B,CACH,EAUMC,GAAW,CAACC,EAAQzgC,IAAQ,CAChC,IAAI0gC,EACJ,MAAM7/B,EAAM,CAAA,EAEZ,MAAQ6/B,EAAUD,EAAO,KAAKzgC,CAAG,KAAO,MACtCa,EAAI,KAAK6/B,CAAO,EAGlB,OAAO7/B,CACT,EAGM8/B,GAAa/C,GAAW,iBAAiB,EAEzCgD,GAAc5gC,GACXA,EAAI,cAAc,QAAQ,wBAC/B,SAAkB6gB,EAAGggB,EAAIC,EAAI,CAC3B,OAAOD,EAAG,YAAa,EAAGC,CAC3B,CACL,EAIM9/B,IAAkB,CAAC,CAAC,eAAAA,CAAc,IAAM,CAACmC,EAAKwhB,IAAS3jB,EAAe,KAAKmC,EAAKwhB,CAAI,GAAG,OAAO,SAAS,EASvGoc,GAAWnD,GAAW,QAAQ,EAE9BoD,GAAoB,CAAC79B,EAAK89B,IAAY,CAC1C,MAAMzB,EAAc,OAAO,0BAA0Br8B,CAAG,EAClD+9B,EAAqB,CAAA,EAE3BvC,GAAQa,EAAa,CAAC1hB,EAAYzZ,IAAS,CACzC,IAAIH,GACCA,EAAM+8B,EAAQnjB,EAAYzZ,EAAMlB,CAAG,KAAO,KAC7C+9B,EAAmB78B,CAAI,EAAIH,GAAO4Z,EAExC,CAAG,EAED,OAAO,iBAAiB3a,EAAK+9B,CAAkB,CACjD,EAOMC,GAAiBh+B,GAAQ,CAC7B69B,GAAkB79B,EAAK,CAAC2a,EAAYzZ,IAAS,CAE3C,GAAI9C,GAAW4B,CAAG,GAAK,CAAC,YAAa,SAAU,QAAQ,EAAE,QAAQkB,CAAI,IAAM,GACzE,MAAO,GAGT,MAAMxC,EAAQsB,EAAIkB,CAAI,EAEtB,GAAK9C,GAAWM,CAAK,EAIrB,IAFAic,EAAW,WAAa,GAEpB,aAAcA,EAAY,CAC5BA,EAAW,SAAW,GACtB,MACD,CAEIA,EAAW,MACdA,EAAW,IAAM,IAAM,CACrB,MAAM,MAAM,qCAAwCzZ,EAAO,GAAI,CACvE,GAEA,CAAG,CACH,EAEM+8B,GAAc,CAACC,EAAeC,IAAc,CAChD,MAAMn+B,EAAM,CAAA,EAENo+B,EAAU1gC,GAAQ,CACtBA,EAAI,QAAQgB,GAAS,CACnBsB,EAAItB,CAAK,EAAI,EACnB,CAAK,CACF,EAEDX,OAAAA,GAAQmgC,CAAa,EAAIE,EAAOF,CAAa,EAAIE,EAAO,OAAOF,CAAa,EAAE,MAAMC,CAAS,CAAC,EAEvFn+B,CACT,EAEMy2B,GAAO,IAAM,CAAE,EAEf4H,GAAiB,CAAC3/B,EAAO8O,KAC7B9O,EAAQ,CAACA,EACF,OAAO,SAASA,CAAK,EAAIA,EAAQ8O,GAGpC8wB,GAAQ,6BAERC,GAAQ,aAERC,GAAW,CACf,MAAAD,GACA,MAAAD,GACA,YAAaA,GAAQA,GAAM,YAAa,EAAGC,EAC7C,EAEME,GAAiB,CAAC91B,EAAO,GAAI+1B,EAAWF,GAAS,cAAgB,CACrE,IAAI3hC,EAAM,GACV,KAAM,CAAC,OAAA8hC,CAAM,EAAID,EACjB,KAAO/1B,KACL9L,GAAO6hC,EAAS,KAAK,OAAM,EAAKC,EAAO,CAAC,EAG1C,OAAO9hC,CACT,EASA,SAAS+hC,GAAoBpE,EAAO,CAClC,MAAO,CAAC,EAAEA,GAASp8B,GAAWo8B,EAAM,MAAM,GAAKA,EAAM,OAAO,WAAW,IAAM,YAAcA,EAAM,OAAO,QAAQ,EAClH,CAEA,MAAMqE,GAAgB7+B,GAAQ,CAC5B,MAAM8+B,EAAQ,IAAI,MAAM,EAAE,EAEpBC,EAAQ,CAACxxB,EAAQ,IAAM,CAE3B,GAAIhP,GAASgP,CAAM,EAAG,CACpB,GAAIuxB,EAAM,QAAQvxB,CAAM,GAAK,EAC3B,OAGF,GAAG,EAAE,WAAYA,GAAS,CACxBuxB,EAAM,CAAC,EAAIvxB,EACX,MAAM/H,EAASzH,GAAQwP,CAAM,EAAI,CAAA,EAAK,CAAA,EAEtC,OAAAiuB,GAAQjuB,EAAQ,CAAC7O,EAAOpB,IAAQ,CAC9B,MAAM0hC,EAAeD,EAAMrgC,EAAO,EAAI,CAAC,EACvC,CAACi8B,GAAYqE,CAAY,IAAMx5B,EAAOlI,CAAG,EAAI0hC,EACvD,CAAS,EAEDF,EAAM,CAAC,EAAI,OAEJt5B,CACR,CACF,CAED,OAAO+H,CACR,EAED,OAAOwxB,EAAM/+B,EAAK,CAAC,CACrB,EAEMi/B,GAAYxE,GAAW,eAAe,EAEtCyE,GAAc1E,GAClBA,IAAUj8B,GAASi8B,CAAK,GAAKp8B,GAAWo8B,CAAK,IAAMp8B,GAAWo8B,EAAM,IAAI,GAAKp8B,GAAWo8B,EAAM,KAAK,EAEtF2E,GAAA,CACf,QAAEphC,GACA,cAAA88B,GACA,SAAAD,GACA,WAAAS,GACA,kBAAAP,GACA,SAAAz8B,GACF,SAAE08B,GACA,UAAA/H,GACF,SAAEz0B,GACA,cAAAK,GACA,YAAA+7B,GACA,OAAAx8B,GACA,OAAA88B,GACA,OAAAC,GACA,SAAA0C,GACF,WAAEx/B,GACA,SAAAg9B,GACA,kBAAAG,GACA,aAAAyB,GACA,WAAA7B,GACA,QAAAK,GACF,MAAEK,GACA,OAAAr+B,GACA,KAAAsT,GACA,SAAAmrB,GACA,SAAAC,GACA,aAAAI,GACA,OAAA/B,GACA,WAAAE,GACA,SAAAkC,GACA,QAAAI,GACA,aAAAG,GACA,SAAAG,GACA,WAAAG,GACA,eAAA3/B,GACA,WAAYA,GACZ,kBAAAggC,GACA,cAAAG,GACA,YAAAC,GACA,YAAAR,GACF,KAAEhH,GACA,eAAA4H,GACA,QAAA3C,GACA,OAAQC,GACR,iBAAAC,GACA,SAAA4C,GACA,eAAAC,GACA,oBAAAG,GACA,aAAAC,GACA,UAAAI,GACA,WAAAC,EACF,ECnsBA,SAASE,GAAWC,EAASC,EAAMC,EAAQC,EAASC,EAAU,CAC5D,MAAM,KAAK,IAAI,EAEX,MAAM,kBACR,MAAM,kBAAkB,KAAM,KAAK,WAAW,EAE9C,KAAK,MAAS,IAAI,MAAK,EAAI,MAG7B,KAAK,QAAUJ,EACf,KAAK,KAAO,aACZC,IAAS,KAAK,KAAOA,GACrBC,IAAW,KAAK,OAASA,GACzBC,IAAY,KAAK,QAAUA,GAC3BC,IAAa,KAAK,SAAWA,EAC/B,CAEAC,GAAM,SAASN,GAAY,MAAO,CAChC,OAAQ,UAAkB,CACxB,MAAO,CAEL,QAAS,KAAK,QACd,KAAM,KAAK,KAEX,YAAa,KAAK,YAClB,OAAQ,KAAK,OAEb,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,MAAO,KAAK,MAEZ,OAAQM,GAAM,aAAa,KAAK,MAAM,EACtC,KAAM,KAAK,KACX,OAAQ,KAAK,UAAY,KAAK,SAAS,OAAS,KAAK,SAAS,OAAS,IAC7E,CACG,CACH,CAAC,EAED,MAAM1E,GAAYoE,GAAW,UACvB/C,GAAc,CAAA,EAEpB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,iBAEF,EAAE,QAAQiD,GAAQ,CAChBjD,GAAYiD,CAAI,EAAI,CAAC,MAAOA,CAAI,CAClC,CAAC,EAED,OAAO,iBAAiBF,GAAY/C,EAAW,EAC/C,OAAO,eAAerB,GAAW,eAAgB,CAAC,MAAO,EAAI,CAAC,EAG9DoE,GAAW,KAAO,CAAC5F,EAAO8F,EAAMC,EAAQC,EAASC,EAAUE,IAAgB,CACzE,MAAMC,EAAa,OAAO,OAAO5E,EAAS,EAE1C0E,OAAAA,GAAM,aAAalG,EAAOoG,EAAY,SAAgB5/B,EAAK,CACzD,OAAOA,IAAQ,MAAM,SACtB,EAAEwhB,GACMA,IAAS,cACjB,EAED4d,GAAW,KAAKQ,EAAYpG,EAAM,QAAS8F,EAAMC,EAAQC,EAASC,CAAQ,EAE1EG,EAAW,MAAQpG,EAEnBoG,EAAW,KAAOpG,EAAM,KAExBmG,GAAe,OAAO,OAAOC,EAAYD,CAAW,EAE7CC,CACT,EChGA,MAAAC,GAAe,KCaf,SAASC,GAAYtF,EAAO,CAC1B,OAAOkF,GAAM,cAAclF,CAAK,GAAKkF,GAAM,QAAQlF,CAAK,CAC1D,CASA,SAASuF,GAAeziC,EAAK,CAC3B,OAAOoiC,GAAM,SAASpiC,EAAK,IAAI,EAAIA,EAAI,MAAM,EAAG,EAAE,EAAIA,CACxD,CAWA,SAAS0iC,GAAU3oB,EAAM/Z,EAAK2iC,EAAM,CAClC,OAAK5oB,EACEA,EAAK,OAAO/Z,CAAG,EAAE,IAAI,SAAc4iC,EAAOtiC,EAAG,CAElD,OAAAsiC,EAAQH,GAAeG,CAAK,EACrB,CAACD,GAAQriC,EAAI,IAAMsiC,EAAQ,IAAMA,CACzC,CAAA,EAAE,KAAKD,EAAO,IAAM,EAAE,EALL3iC,CAMpB,CASA,SAAS6iC,GAAYziC,EAAK,CACxB,OAAOgiC,GAAM,QAAQhiC,CAAG,GAAK,CAACA,EAAI,KAAKoiC,EAAW,CACpD,CAEA,MAAMM,GAAaV,GAAM,aAAaA,GAAO,CAAE,EAAE,KAAM,SAAgBle,EAAM,CAC3E,MAAO,WAAW,KAAKA,CAAI,CAC7B,CAAC,EAyBD,SAAS6e,GAAWrgC,EAAKsgC,EAAU1uB,EAAS,CAC1C,GAAI,CAAC8tB,GAAM,SAAS1/B,CAAG,EACrB,MAAM,IAAI,UAAU,0BAA0B,EAIhDsgC,EAAWA,GAAY,IAAyB,SAGhD1uB,EAAU8tB,GAAM,aAAa9tB,EAAS,CACpC,WAAY,GACZ,KAAM,GACN,QAAS,EACV,EAAE,GAAO,SAAiB2uB,EAAQhzB,EAAQ,CAEzC,MAAO,CAACmyB,GAAM,YAAYnyB,EAAOgzB,CAAM,CAAC,CAC5C,CAAG,EAED,MAAMC,EAAa5uB,EAAQ,WAErB6uB,EAAU7uB,EAAQ,SAAW8uB,EAC7BT,EAAOruB,EAAQ,KACf+uB,EAAU/uB,EAAQ,QAElBgvB,GADQhvB,EAAQ,MAAQ,OAAO,KAAS,KAAe,OACpC8tB,GAAM,oBAAoBY,CAAQ,EAE3D,GAAI,CAACZ,GAAM,WAAWe,CAAO,EAC3B,MAAM,IAAI,UAAU,4BAA4B,EAGlD,SAASI,EAAaniC,EAAO,CAC3B,GAAIA,IAAU,KAAM,MAAO,GAE3B,GAAIghC,GAAM,OAAOhhC,CAAK,EACpB,OAAOA,EAAM,cAGf,GAAI,CAACkiC,GAAWlB,GAAM,OAAOhhC,CAAK,EAChC,MAAM,IAAI0gC,GAAW,8CAA8C,EAGrE,OAAIM,GAAM,cAAchhC,CAAK,GAAKghC,GAAM,aAAahhC,CAAK,EACjDkiC,GAAW,OAAO,MAAS,WAAa,IAAI,KAAK,CAACliC,CAAK,CAAC,EAAI,OAAO,KAAKA,CAAK,EAG/EA,CACR,CAYD,SAASgiC,EAAehiC,EAAOpB,EAAK+Z,EAAM,CACxC,IAAI3Z,EAAMgB,EAEV,GAAIA,GAAS,CAAC2Y,GAAQ,OAAO3Y,GAAU,UACrC,GAAIghC,GAAM,SAASpiC,EAAK,IAAI,EAE1BA,EAAMkjC,EAAaljC,EAAMA,EAAI,MAAM,EAAG,EAAE,EAExCoB,EAAQ,KAAK,UAAUA,CAAK,UAE3BghC,GAAM,QAAQhhC,CAAK,GAAKyhC,GAAYzhC,CAAK,IACxCghC,GAAM,WAAWhhC,CAAK,GAAKghC,GAAM,SAASpiC,EAAK,IAAI,KAAOI,EAAMgiC,GAAM,QAAQhhC,CAAK,GAGrF,OAAApB,EAAMyiC,GAAeziC,CAAG,EAExBI,EAAI,QAAQ,SAAcC,EAAIkc,EAAO,CACnC,EAAE6lB,GAAM,YAAY/hC,CAAE,GAAKA,IAAO,OAAS2iC,EAAS,OAElDK,IAAY,GAAOX,GAAU,CAAC1iC,CAAG,EAAGuc,EAAOomB,CAAI,EAAKU,IAAY,KAAOrjC,EAAMA,EAAM,KACnFujC,EAAaljC,CAAE,CAC3B,CACA,CAAS,EACM,GAIX,OAAImiC,GAAYphC,CAAK,EACZ,IAGT4hC,EAAS,OAAON,GAAU3oB,EAAM/Z,EAAK2iC,CAAI,EAAGY,EAAaniC,CAAK,CAAC,EAExD,GACR,CAED,MAAMogC,EAAQ,CAAA,EAERgC,EAAiB,OAAO,OAAOV,GAAY,CAC/C,eAAAM,EACA,aAAAG,EACA,YAAAf,EACJ,CAAG,EAED,SAASiB,EAAMriC,EAAO2Y,EAAM,CAC1B,GAAIqoB,CAAAA,GAAM,YAAYhhC,CAAK,EAE3B,IAAIogC,EAAM,QAAQpgC,CAAK,IAAM,GAC3B,MAAM,MAAM,kCAAoC2Y,EAAK,KAAK,GAAG,CAAC,EAGhEynB,EAAM,KAAKpgC,CAAK,EAEhBghC,GAAM,QAAQhhC,EAAO,SAAcf,EAAIL,EAAK,EAC3B,EAAEoiC,GAAM,YAAY/hC,CAAE,GAAKA,IAAO,OAAS8iC,EAAQ,KAChEH,EAAU3iC,EAAI+hC,GAAM,SAASpiC,CAAG,EAAIA,EAAI,KAAM,EAAGA,EAAK+Z,EAAMypB,CACpE,KAEqB,IACbC,EAAMpjC,EAAI0Z,EAAOA,EAAK,OAAO/Z,CAAG,EAAI,CAACA,CAAG,CAAC,CAEjD,CAAK,EAEDwhC,EAAM,IAAG,EACV,CAED,GAAI,CAACY,GAAM,SAAS1/B,CAAG,EACrB,MAAM,IAAI,UAAU,wBAAwB,EAG9C,OAAA+gC,EAAM/gC,CAAG,EAEFsgC,CACT,CC5MA,SAASU,GAAOnkC,EAAK,CACnB,MAAMokC,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,IACX,EACE,OAAO,mBAAmBpkC,CAAG,EAAE,QAAQ,mBAAoB,SAAkBqkC,EAAO,CAClF,OAAOD,EAAQC,CAAK,CACxB,CAAG,CACH,CAUA,SAASC,GAAqBC,EAAQxvB,EAAS,CAC7C,KAAK,OAAS,GAEdwvB,GAAUf,GAAWe,EAAQ,KAAMxvB,CAAO,CAC5C,CAEA,MAAMopB,GAAYmG,GAAqB,UAEvCnG,GAAU,OAAS,SAAgB95B,EAAMxC,EAAO,CAC9C,KAAK,OAAO,KAAK,CAACwC,EAAMxC,CAAK,CAAC,CAChC,EAEAs8B,GAAU,SAAW,SAAkBqG,EAAS,CAC9C,MAAMC,EAAUD,EAAU,SAAS3iC,EAAO,CACxC,OAAO2iC,EAAQ,KAAK,KAAM3iC,EAAOsiC,EAAM,CACxC,EAAGA,GAEJ,OAAO,KAAK,OAAO,IAAI,SAAc5D,EAAM,CACzC,OAAOkE,EAAQlE,EAAK,CAAC,CAAC,EAAI,IAAMkE,EAAQlE,EAAK,CAAC,CAAC,CAChD,EAAE,EAAE,EAAE,KAAK,GAAG,CACjB,EC1CA,SAAS4D,GAAOhkC,EAAK,CACnB,OAAO,mBAAmBA,CAAG,EAC3B,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,OAAQ,GAAG,EACnB,QAAQ,QAAS,GAAG,EACpB,QAAQ,QAAS,GAAG,CACxB,CAWe,SAASukC,GAASC,EAAKJ,EAAQxvB,EAAS,CAErD,GAAI,CAACwvB,EACH,OAAOI,EAGT,MAAMF,EAAU1vB,GAAWA,EAAQ,QAAUovB,GAEvCS,EAAc7vB,GAAWA,EAAQ,UAEvC,IAAI8vB,EAUJ,GARID,EACFC,EAAmBD,EAAYL,EAAQxvB,CAAO,EAE9C8vB,EAAmBhC,GAAM,kBAAkB0B,CAAM,EAC/CA,EAAO,SAAU,EACjB,IAAID,GAAqBC,EAAQxvB,CAAO,EAAE,SAAS0vB,CAAO,EAG1DI,EAAkB,CACpB,MAAMC,EAAgBH,EAAI,QAAQ,GAAG,EAEjCG,IAAkB,KACpBH,EAAMA,EAAI,MAAM,EAAGG,CAAa,GAElCH,IAAQA,EAAI,QAAQ,GAAG,IAAM,GAAK,IAAM,KAAOE,CAChD,CAED,OAAOF,CACT,CC1DA,MAAMI,EAAmB,CACvB,aAAc,CACZ,KAAK,SAAW,EACjB,CAUD,IAAIC,EAAWC,EAAUlwB,EAAS,CAChC,YAAK,SAAS,KAAK,CACjB,UAAAiwB,EACA,SAAAC,EACA,YAAalwB,EAAUA,EAAQ,YAAc,GAC7C,QAASA,EAAUA,EAAQ,QAAU,IAC3C,CAAK,EACM,KAAK,SAAS,OAAS,CAC/B,CASD,MAAMzC,EAAI,CACJ,KAAK,SAASA,CAAE,IAClB,KAAK,SAASA,CAAE,EAAI,KAEvB,CAOD,OAAQ,CACF,KAAK,WACP,KAAK,SAAW,GAEnB,CAYD,QAAQnQ,EAAI,CACV0gC,GAAM,QAAQ,KAAK,SAAU,SAAwBviB,EAAG,CAClDA,IAAM,MACRne,EAAGme,CAAC,CAEZ,CAAK,CACF,CACH,CClEA,MAAe4kB,GAAA,CACb,kBAAmB,GACnB,kBAAmB,GACnB,oBAAqB,EACvB,ECHAC,GAAe,OAAO,gBAAoB,IAAc,gBAAkBb,GCD1Ec,GAAe,OAAO,SAAa,IAAc,SAAW,KCA5DC,GAAe,OAAO,KAAS,IAAc,KAAO,KCErCC,GAAA,CACb,UAAW,GACX,QAAS,CACX,gBAAIC,GACJ,SAAIC,GACJ,KAAIC,EACD,EACD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,MAAM,CAC5D,ECZMC,GAAgB,OAAO,OAAW,KAAe,OAAO,SAAa,IAmBrEC,IACHC,GACQF,IAAiB,CAAC,cAAe,eAAgB,IAAI,EAAE,QAAQE,CAAO,EAAI,GAChF,OAAO,UAAc,KAAe,UAAU,OAAO,EAWpDC,GAEF,OAAO,kBAAsB,KAE7B,gBAAgB,mBAChB,OAAO,KAAK,eAAkB,qLCnCnBC,GAAA,CACb,GAAGjD,GACH,GAAGiD,EACL,ECAe,SAASC,GAAiB5vB,EAAMpB,EAAS,CACtD,OAAOyuB,GAAWrtB,EAAM,IAAI2vB,GAAS,QAAQ,gBAAmB,OAAO,OAAO,CAC5E,QAAS,SAASjkC,EAAOpB,EAAK+Z,EAAMwrB,EAAS,CAC3C,OAAIF,GAAS,QAAUjD,GAAM,SAAShhC,CAAK,GACzC,KAAK,OAAOpB,EAAKoB,EAAM,SAAS,QAAQ,CAAC,EAClC,IAGFmkC,EAAQ,eAAe,MAAM,KAAM,SAAS,CACpD,CACL,EAAKjxB,CAAO,CAAC,CACb,CCNA,SAASkxB,GAAc5hC,EAAM,CAK3B,OAAOw+B,GAAM,SAAS,gBAAiBx+B,CAAI,EAAE,IAAIggC,GACxCA,EAAM,CAAC,IAAM,KAAO,GAAKA,EAAM,CAAC,GAAKA,EAAM,CAAC,CACpD,CACH,CASA,SAAS6B,GAAcrlC,EAAK,CAC1B,MAAMsC,EAAM,CAAA,EACN6T,EAAO,OAAO,KAAKnW,CAAG,EAC5B,IAAIE,EACJ,MAAM0uB,EAAMzY,EAAK,OACjB,IAAIvW,EACJ,IAAKM,EAAI,EAAGA,EAAI0uB,EAAK1uB,IACnBN,EAAMuW,EAAKjW,CAAC,EACZoC,EAAI1C,CAAG,EAAII,EAAIJ,CAAG,EAEpB,OAAO0C,CACT,CASA,SAASgjC,GAAe1C,EAAU,CAChC,SAAS2C,EAAU5rB,EAAM3Y,EAAO8G,EAAQqU,EAAO,CAC7C,IAAI3Y,EAAOmW,EAAKwC,GAAO,EAEvB,GAAI3Y,IAAS,YAAa,MAAO,GAEjC,MAAMgiC,EAAe,OAAO,SAAS,CAAChiC,CAAI,EACpCiiC,EAAStpB,GAASxC,EAAK,OAG7B,OAFAnW,EAAO,CAACA,GAAQw+B,GAAM,QAAQl6B,CAAM,EAAIA,EAAO,OAAStE,EAEpDiiC,GACEzD,GAAM,WAAWl6B,EAAQtE,CAAI,EAC/BsE,EAAOtE,CAAI,EAAI,CAACsE,EAAOtE,CAAI,EAAGxC,CAAK,EAEnC8G,EAAOtE,CAAI,EAAIxC,EAGV,CAACwkC,KAGN,CAAC19B,EAAOtE,CAAI,GAAK,CAACw+B,GAAM,SAASl6B,EAAOtE,CAAI,CAAC,KAC/CsE,EAAOtE,CAAI,EAAI,IAGF+hC,EAAU5rB,EAAM3Y,EAAO8G,EAAOtE,CAAI,EAAG2Y,CAAK,GAE3C6lB,GAAM,QAAQl6B,EAAOtE,CAAI,CAAC,IACtCsE,EAAOtE,CAAI,EAAI6hC,GAAcv9B,EAAOtE,CAAI,CAAC,GAGpC,CAACgiC,EACT,CAED,GAAIxD,GAAM,WAAWY,CAAQ,GAAKZ,GAAM,WAAWY,EAAS,OAAO,EAAG,CACpE,MAAMtgC,EAAM,CAAA,EAEZ0/B,OAAAA,GAAM,aAAaY,EAAU,CAACp/B,EAAMxC,IAAU,CAC5CukC,EAAUH,GAAc5hC,CAAI,EAAGxC,EAAOsB,EAAK,CAAC,CAClD,CAAK,EAEMA,CACR,CAED,OAAO,IACT,CCxEA,SAASojC,GAAgB12B,EAAU22B,EAAQhC,EAAS,CAClD,GAAI3B,GAAM,SAAShzB,CAAQ,EACzB,GAAI,CACF,OAAC22B,GAAU,KAAK,OAAO32B,CAAQ,EACxBgzB,GAAM,KAAKhzB,CAAQ,CAC3B,OAAQujB,EAAG,CACV,GAAIA,EAAE,OAAS,cACb,MAAMA,CAET,CAGH,OAAQoR,GAAW,KAAK,WAAW30B,CAAQ,CAC7C,CAEA,MAAM42B,GAAW,CAEf,aAAcvB,GAEd,QAAS,CAAC,MAAO,MAAM,EAEvB,iBAAkB,CAAC,SAA0B/uB,EAAMuwB,EAAS,CAC1D,MAAMC,EAAcD,EAAQ,eAAc,GAAM,GAC1CE,EAAqBD,EAAY,QAAQ,kBAAkB,EAAI,GAC/DE,EAAkBhE,GAAM,SAAS1sB,CAAI,EAQ3C,GANI0wB,GAAmBhE,GAAM,WAAW1sB,CAAI,IAC1CA,EAAO,IAAI,SAASA,CAAI,GAGP0sB,GAAM,WAAW1sB,CAAI,EAGtC,OAAOywB,EAAqB,KAAK,UAAUT,GAAehwB,CAAI,CAAC,EAAIA,EAGrE,GAAI0sB,GAAM,cAAc1sB,CAAI,GAC1B0sB,GAAM,SAAS1sB,CAAI,GACnB0sB,GAAM,SAAS1sB,CAAI,GACnB0sB,GAAM,OAAO1sB,CAAI,GACjB0sB,GAAM,OAAO1sB,CAAI,EAEjB,OAAOA,EAET,GAAI0sB,GAAM,kBAAkB1sB,CAAI,EAC9B,OAAOA,EAAK,OAEd,GAAI0sB,GAAM,kBAAkB1sB,CAAI,EAC9B,OAAAuwB,EAAQ,eAAe,kDAAmD,EAAK,EACxEvwB,EAAK,WAGd,IAAImoB,EAEJ,GAAIuI,EAAiB,CACnB,GAAIF,EAAY,QAAQ,mCAAmC,EAAI,GAC7D,OAAOZ,GAAiB5vB,EAAM,KAAK,cAAc,EAAE,SAAQ,EAG7D,IAAKmoB,EAAauE,GAAM,WAAW1sB,CAAI,IAAMwwB,EAAY,QAAQ,qBAAqB,EAAI,GAAI,CAC5F,MAAMG,EAAY,KAAK,KAAO,KAAK,IAAI,SAEvC,OAAOtD,GACLlF,EAAa,CAAC,UAAWnoB,CAAI,EAAIA,EACjC2wB,GAAa,IAAIA,EACjB,KAAK,cACf,CACO,CACF,CAED,OAAID,GAAmBD,GACrBF,EAAQ,eAAe,mBAAoB,EAAK,EACzCH,GAAgBpwB,CAAI,GAGtBA,CACX,CAAG,EAED,kBAAmB,CAAC,SAA2BA,EAAM,CACnD,MAAM4wB,EAAe,KAAK,cAAgBN,GAAS,aAC7CO,EAAoBD,GAAgBA,EAAa,kBACjDE,EAAgB,KAAK,eAAiB,OAE5C,GAAI9wB,GAAQ0sB,GAAM,SAAS1sB,CAAI,IAAO6wB,GAAqB,CAAC,KAAK,cAAiBC,GAAgB,CAEhG,MAAMC,EAAoB,EADAH,GAAgBA,EAAa,oBACPE,EAEhD,GAAI,CACF,OAAO,KAAK,MAAM9wB,CAAI,CACvB,OAAQid,EAAG,CACV,GAAI8T,EACF,MAAI9T,EAAE,OAAS,cACPmP,GAAW,KAAKnP,EAAGmP,GAAW,iBAAkB,KAAM,KAAM,KAAK,QAAQ,EAE3EnP,CAET,CACF,CAED,OAAOjd,CACX,CAAG,EAMD,QAAS,EAET,eAAgB,aAChB,eAAgB,eAEhB,iBAAkB,GAClB,cAAe,GAEf,IAAK,CACH,SAAU2vB,GAAS,QAAQ,SAC3B,KAAMA,GAAS,QAAQ,IACxB,EAED,eAAgB,SAAwBqB,EAAQ,CAC9C,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAED,QAAS,CACP,OAAQ,CACN,OAAU,oCACV,eAAgB,MACjB,CACF,CACH,EAEAtE,GAAM,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,OAAO,EAAIp2B,GAAW,CAC3Eg6B,GAAS,QAAQh6B,CAAM,EAAI,EAC7B,CAAC,ECnJD,MAAM26B,GAAoBvE,GAAM,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,YAC5B,CAAC,EAgBDwE,GAAeC,GAAc,CAC3B,MAAMC,EAAS,CAAA,EACf,IAAI9mC,EACAN,EACA,EAEJ,OAAAmnC,GAAcA,EAAW,MAAM;AAAA,CAAI,EAAE,QAAQ,SAAgBE,EAAM,CACjE,EAAIA,EAAK,QAAQ,GAAG,EACpB/mC,EAAM+mC,EAAK,UAAU,EAAG,CAAC,EAAE,KAAI,EAAG,cAClCrnC,EAAMqnC,EAAK,UAAU,EAAI,CAAC,EAAE,OAExB,GAAC/mC,GAAQ8mC,EAAO9mC,CAAG,GAAK2mC,GAAkB3mC,CAAG,KAI7CA,IAAQ,aACN8mC,EAAO9mC,CAAG,EACZ8mC,EAAO9mC,CAAG,EAAE,KAAKN,CAAG,EAEpBonC,EAAO9mC,CAAG,EAAI,CAACN,CAAG,EAGpBonC,EAAO9mC,CAAG,EAAI8mC,EAAO9mC,CAAG,EAAI8mC,EAAO9mC,CAAG,EAAI,KAAON,EAAMA,EAE7D,CAAG,EAEMonC,CACT,ECjDME,GAAa,OAAO,WAAW,EAErC,SAASC,GAAgBC,EAAQ,CAC/B,OAAOA,GAAU,OAAOA,CAAM,EAAE,KAAI,EAAG,aACzC,CAEA,SAASC,GAAe/lC,EAAO,CAC7B,OAAIA,IAAU,IAASA,GAAS,KACvBA,EAGFghC,GAAM,QAAQhhC,CAAK,EAAIA,EAAM,IAAI+lC,EAAc,EAAI,OAAO/lC,CAAK,CACxE,CAEA,SAASgmC,GAAY7nC,EAAK,CACxB,MAAM8nC,EAAS,OAAO,OAAO,IAAI,EAC3BC,EAAW,mCACjB,IAAI1D,EAEJ,KAAQA,EAAQ0D,EAAS,KAAK/nC,CAAG,GAC/B8nC,EAAOzD,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAG5B,OAAOyD,CACT,CAEA,MAAME,GAAqBhoC,GAAQ,iCAAiC,KAAKA,EAAI,KAAI,CAAE,EAEnF,SAASioC,GAAiBhmB,EAASpgB,EAAO8lC,EAAQ/H,EAAQsI,EAAoB,CAC5E,GAAIrF,GAAM,WAAWjD,CAAM,EACzB,OAAOA,EAAO,KAAK,KAAM/9B,EAAO8lC,CAAM,EAOxC,GAJIO,IACFrmC,EAAQ8lC,GAGN,EAAC9E,GAAM,SAAShhC,CAAK,EAEzB,IAAIghC,GAAM,SAASjD,CAAM,EACvB,OAAO/9B,EAAM,QAAQ+9B,CAAM,IAAM,GAGnC,GAAIiD,GAAM,SAASjD,CAAM,EACvB,OAAOA,EAAO,KAAK/9B,CAAK,EAE5B,CAEA,SAASsmC,GAAaR,EAAQ,CAC5B,OAAOA,EAAO,KAAM,EACjB,YAAW,EAAG,QAAQ,kBAAmB,CAACS,EAAGC,EAAMroC,IAC3CqoC,EAAK,YAAa,EAAGroC,CAC7B,CACL,CAEA,SAASsoC,GAAenlC,EAAKwkC,EAAQ,CACnC,MAAMY,EAAe1F,GAAM,YAAY,IAAM8E,CAAM,EAEnD,CAAC,MAAO,MAAO,KAAK,EAAE,QAAQa,GAAc,CAC1C,OAAO,eAAerlC,EAAKqlC,EAAaD,EAAc,CACpD,MAAO,SAASE,EAAMC,EAAMC,EAAM,CAChC,OAAO,KAAKH,CAAU,EAAE,KAAK,KAAMb,EAAQc,EAAMC,EAAMC,CAAI,CAC5D,EACD,aAAc,EACpB,CAAK,CACL,CAAG,CACH,CAEA,MAAMC,EAAa,CACjB,YAAYlC,EAAS,CACnBA,GAAW,KAAK,IAAIA,CAAO,CAC5B,CAED,IAAIiB,EAAQkB,EAAgBC,EAAS,CACnC,MAAM55B,EAAO,KAEb,SAAS65B,EAAUC,EAAQC,EAASC,EAAU,CAC5C,MAAMC,EAAUzB,GAAgBuB,CAAO,EAEvC,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,wCAAwC,EAG1D,MAAM1oC,EAAMoiC,GAAM,QAAQ3zB,EAAMi6B,CAAO,GAEpC,CAAC1oC,GAAOyO,EAAKzO,CAAG,IAAM,QAAayoC,IAAa,IAASA,IAAa,QAAah6B,EAAKzO,CAAG,IAAM,MAClGyO,EAAKzO,GAAOwoC,CAAO,EAAIrB,GAAeoB,CAAM,EAE/C,CAED,MAAMI,EAAa,CAAC1C,EAASwC,IAC3BrG,GAAM,QAAQ6D,EAAS,CAACsC,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,CAAQ,CAAC,EAElF,OAAIrG,GAAM,cAAc8E,CAAM,GAAKA,aAAkB,KAAK,YACxDyB,EAAWzB,EAAQkB,CAAc,EACzBhG,GAAM,SAAS8E,CAAM,IAAMA,EAASA,EAAO,SAAW,CAACK,GAAkBL,CAAM,EACvFyB,EAAW/B,GAAaM,CAAM,EAAGkB,CAAc,EAE/ClB,GAAU,MAAQoB,EAAUF,EAAgBlB,EAAQmB,CAAO,EAGtD,IACR,CAED,IAAInB,EAAQnB,EAAQ,CAGlB,GAFAmB,EAASD,GAAgBC,CAAM,EAE3BA,EAAQ,CACV,MAAMlnC,EAAMoiC,GAAM,QAAQ,KAAM8E,CAAM,EAEtC,GAAIlnC,EAAK,CACP,MAAMoB,EAAQ,KAAKpB,CAAG,EAEtB,GAAI,CAAC+lC,EACH,OAAO3kC,EAGT,GAAI2kC,IAAW,GACb,OAAOqB,GAAYhmC,CAAK,EAG1B,GAAIghC,GAAM,WAAW2D,CAAM,EACzB,OAAOA,EAAO,KAAK,KAAM3kC,EAAOpB,CAAG,EAGrC,GAAIoiC,GAAM,SAAS2D,CAAM,EACvB,OAAOA,EAAO,KAAK3kC,CAAK,EAG1B,MAAM,IAAI,UAAU,wCAAwC,CAC7D,CACF,CACF,CAED,IAAI8lC,EAAQ0B,EAAS,CAGnB,GAFA1B,EAASD,GAAgBC,CAAM,EAE3BA,EAAQ,CACV,MAAMlnC,EAAMoiC,GAAM,QAAQ,KAAM8E,CAAM,EAEtC,MAAO,CAAC,EAAElnC,GAAO,KAAKA,CAAG,IAAM,SAAc,CAAC4oC,GAAWpB,GAAiB,KAAM,KAAKxnC,CAAG,EAAGA,EAAK4oC,CAAO,GACxG,CAED,MAAO,EACR,CAED,OAAO1B,EAAQ0B,EAAS,CACtB,MAAMn6B,EAAO,KACb,IAAIo6B,EAAU,GAEd,SAASC,EAAaN,EAAS,CAG7B,GAFAA,EAAUvB,GAAgBuB,CAAO,EAE7BA,EAAS,CACX,MAAMxoC,EAAMoiC,GAAM,QAAQ3zB,EAAM+5B,CAAO,EAEnCxoC,IAAQ,CAAC4oC,GAAWpB,GAAiB/4B,EAAMA,EAAKzO,CAAG,EAAGA,EAAK4oC,CAAO,KACpE,OAAOn6B,EAAKzO,CAAG,EAEf6oC,EAAU,GAEb,CACF,CAED,OAAIzG,GAAM,QAAQ8E,CAAM,EACtBA,EAAO,QAAQ4B,CAAY,EAE3BA,EAAa5B,CAAM,EAGd2B,CACR,CAED,MAAMD,EAAS,CACb,MAAMryB,EAAO,OAAO,KAAK,IAAI,EAC7B,IAAIjW,EAAIiW,EAAK,OACTsyB,EAAU,GAEd,KAAOvoC,KAAK,CACV,MAAMN,EAAMuW,EAAKjW,CAAC,GACf,CAACsoC,GAAWpB,GAAiB,KAAM,KAAKxnC,CAAG,EAAGA,EAAK4oC,EAAS,EAAI,KACjE,OAAO,KAAK5oC,CAAG,EACf6oC,EAAU,GAEb,CAED,OAAOA,CACR,CAED,UAAUE,EAAQ,CAChB,MAAMt6B,EAAO,KACPw3B,EAAU,CAAA,EAEhB7D,OAAAA,GAAM,QAAQ,KAAM,CAAChhC,EAAO8lC,IAAW,CACrC,MAAMlnC,EAAMoiC,GAAM,QAAQ6D,EAASiB,CAAM,EAEzC,GAAIlnC,EAAK,CACPyO,EAAKzO,CAAG,EAAImnC,GAAe/lC,CAAK,EAChC,OAAOqN,EAAKy4B,CAAM,EAClB,MACD,CAED,MAAM/jC,EAAa4lC,EAASrB,GAAaR,CAAM,EAAI,OAAOA,CAAM,EAAE,OAE9D/jC,IAAe+jC,GACjB,OAAOz4B,EAAKy4B,CAAM,EAGpBz4B,EAAKtL,CAAU,EAAIgkC,GAAe/lC,CAAK,EAEvC6kC,EAAQ9iC,CAAU,EAAI,EAC5B,CAAK,EAEM,IACR,CAED,UAAU6lC,EAAS,CACjB,OAAO,KAAK,YAAY,OAAO,KAAM,GAAGA,CAAO,CAChD,CAED,OAAOC,EAAW,CAChB,MAAMvmC,EAAM,OAAO,OAAO,IAAI,EAE9B0/B,OAAAA,GAAM,QAAQ,KAAM,CAAChhC,EAAO8lC,IAAW,CACrC9lC,GAAS,MAAQA,IAAU,KAAUsB,EAAIwkC,CAAM,EAAI+B,GAAa7G,GAAM,QAAQhhC,CAAK,EAAIA,EAAM,KAAK,IAAI,EAAIA,EAChH,CAAK,EAEMsB,CACR,CAED,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,OAAO,QAAQ,KAAK,OAAQ,CAAA,EAAE,OAAO,QAAQ,GACrD,CAED,UAAW,CACT,OAAO,OAAO,QAAQ,KAAK,OAAQ,CAAA,EAAE,IAAI,CAAC,CAACwkC,EAAQ9lC,CAAK,IAAM8lC,EAAS,KAAO9lC,CAAK,EAAE,KAAK;AAAA,CAAI,CAC/F,CAED,IAAK,OAAO,WAAW,GAAI,CACzB,MAAO,cACR,CAED,OAAO,KAAK87B,EAAO,CACjB,OAAOA,aAAiB,KAAOA,EAAQ,IAAI,KAAKA,CAAK,CACtD,CAED,OAAO,OAAOgM,KAAUF,EAAS,CAC/B,MAAMniC,EAAW,IAAI,KAAKqiC,CAAK,EAE/B,OAAAF,EAAQ,QAAS9gC,GAAWrB,EAAS,IAAIqB,CAAM,CAAC,EAEzCrB,CACR,CAED,OAAO,SAASqgC,EAAQ,CAKtB,MAAMiC,GAJY,KAAKnC,EAAU,EAAK,KAAKA,EAAU,EAAI,CACvD,UAAW,CAAE,CACnB,GAEgC,UACtBtJ,EAAY,KAAK,UAEvB,SAAS0L,EAAeZ,EAAS,CAC/B,MAAME,EAAUzB,GAAgBuB,CAAO,EAElCW,EAAUT,CAAO,IACpBb,GAAenK,EAAW8K,CAAO,EACjCW,EAAUT,CAAO,EAAI,GAExB,CAEDtG,OAAAA,GAAM,QAAQ8E,CAAM,EAAIA,EAAO,QAAQkC,CAAc,EAAIA,EAAelC,CAAM,EAEvE,IACR,CACH,CAEAiB,GAAa,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,eAAe,CAAC,EAGpH/F,GAAM,kBAAkB+F,GAAa,UAAW,CAAC,CAAC,MAAA/mC,CAAK,EAAGpB,IAAQ,CAChE,IAAIqpC,EAASrpC,EAAI,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,EAC/C,MAAO,CACL,IAAK,IAAMoB,EACX,IAAIkoC,EAAa,CACf,KAAKD,CAAM,EAAIC,CAChB,CACF,CACH,CAAC,EAEDlH,GAAM,cAAc+F,EAAY,ECzRjB,SAASoB,GAAchnC,EAAK4/B,EAAU,CACnD,MAAMF,EAAS,MAAQ+D,GACjBxkB,EAAU2gB,GAAYF,EACtBgE,EAAUkC,GAAa,KAAK3mB,EAAQ,OAAO,EACjD,IAAI9L,EAAO8L,EAAQ,KAEnB4gB,OAAAA,GAAM,QAAQ7/B,EAAK,SAAmBb,EAAI,CACxCgU,EAAOhU,EAAG,KAAKugC,EAAQvsB,EAAMuwB,EAAQ,UAAS,EAAI9D,EAAWA,EAAS,OAAS,MAAS,CAC5F,CAAG,EAED8D,EAAQ,UAAS,EAEVvwB,CACT,CCzBe,SAAS8zB,GAASpoC,EAAO,CACtC,MAAO,CAAC,EAAEA,GAASA,EAAM,WAC3B,CCUA,SAASqoC,GAAc1H,EAASE,EAAQC,EAAS,CAE/CJ,GAAW,KAAK,KAAMC,GAAkB,WAAsBD,GAAW,aAAcG,EAAQC,CAAO,EACtG,KAAK,KAAO,eACd,CAEAE,GAAM,SAASqH,GAAe3H,GAAY,CACxC,WAAY,EACd,CAAC,ECTc,SAAS4H,GAAOC,EAASC,EAAQzH,EAAU,CACxD,MAAM0H,EAAiB1H,EAAS,OAAO,eACnC,CAACA,EAAS,QAAU,CAAC0H,GAAkBA,EAAe1H,EAAS,MAAM,EACvEwH,EAAQxH,CAAQ,EAEhByH,EAAO,IAAI9H,GACT,mCAAqCK,EAAS,OAC9C,CAACL,GAAW,gBAAiBA,GAAW,gBAAgB,EAAE,KAAK,MAAMK,EAAS,OAAS,GAAG,EAAI,CAAC,EAC/FA,EAAS,OACTA,EAAS,QACTA,CACN,CAAK,CAEL,CCvBA,MAAe2H,GAAAzE,GAAS,sBAGtB,CACE,MAAMzhC,EAAMxC,EAAO2oC,EAAShwB,EAAMiwB,EAAQC,EAAQ,CAChD,MAAMC,EAAS,CAACtmC,EAAO,IAAM,mBAAmBxC,CAAK,CAAC,EAEtDghC,GAAM,SAAS2H,CAAO,GAAKG,EAAO,KAAK,WAAa,IAAI,KAAKH,CAAO,EAAE,YAAa,CAAA,EAEnF3H,GAAM,SAASroB,CAAI,GAAKmwB,EAAO,KAAK,QAAUnwB,CAAI,EAElDqoB,GAAM,SAAS4H,CAAM,GAAKE,EAAO,KAAK,UAAYF,CAAM,EAExDC,IAAW,IAAQC,EAAO,KAAK,QAAQ,EAEvC,SAAS,OAASA,EAAO,KAAK,IAAI,CACnC,EAED,KAAKtmC,EAAM,CACT,MAAMggC,EAAQ,SAAS,OAAO,MAAM,IAAI,OAAO,aAAehgC,EAAO,WAAW,CAAC,EACjF,OAAQggC,EAAQ,mBAAmBA,EAAM,CAAC,CAAC,EAAI,IAChD,EAED,OAAOhgC,EAAM,CACX,KAAK,MAAMA,EAAM,GAAI,KAAK,IAAG,EAAK,KAAQ,CAC3C,CACF,EAKD,CACE,OAAQ,CAAE,EACV,MAAO,CACL,OAAO,IACR,EACD,QAAS,CAAE,CACZ,EC/BY,SAASumC,GAAcjG,EAAK,CAIzC,MAAO,8BAA8B,KAAKA,CAAG,CAC/C,CCJe,SAASkG,GAAYC,EAASC,EAAa,CACxD,OAAOA,EACHD,EAAQ,QAAQ,SAAU,EAAE,EAAI,IAAMC,EAAY,QAAQ,OAAQ,EAAE,EACpED,CACN,CCCe,SAASE,GAAcF,EAASG,EAAc,CAC3D,OAAIH,GAAW,CAACF,GAAcK,CAAY,EACjCJ,GAAYC,EAASG,CAAY,EAEnCA,CACT,CCfA,MAAeC,GAAApF,GAAS,sBAIrB,UAA8B,CAC7B,MAAMqF,EAAO,kBAAkB,KAAK,UAAU,SAAS,EACjDC,EAAiB,SAAS,cAAc,GAAG,EACjD,IAAIC,EAQJ,SAASC,EAAW3G,EAAK,CACvB,IAAI4G,EAAO5G,EAEX,OAAIwG,IAEFC,EAAe,aAAa,OAAQG,CAAI,EACxCA,EAAOH,EAAe,MAGxBA,EAAe,aAAa,OAAQG,CAAI,EAGjC,CACL,KAAMH,EAAe,KACrB,SAAUA,EAAe,SAAWA,EAAe,SAAS,QAAQ,KAAM,EAAE,EAAI,GAChF,KAAMA,EAAe,KACrB,OAAQA,EAAe,OAASA,EAAe,OAAO,QAAQ,MAAO,EAAE,EAAI,GAC3E,KAAMA,EAAe,KAAOA,EAAe,KAAK,QAAQ,KAAM,EAAE,EAAI,GACpE,SAAUA,EAAe,SACzB,KAAMA,EAAe,KACrB,SAAWA,EAAe,SAAS,OAAO,CAAC,IAAM,IAC/CA,EAAe,SACf,IAAMA,EAAe,QAC/B,CACK,CAED,OAAAC,EAAYC,EAAW,OAAO,SAAS,IAAI,EAQpC,SAAyBE,EAAY,CAC1C,MAAMjE,EAAU1E,GAAM,SAAS2I,CAAU,EAAKF,EAAWE,CAAU,EAAIA,EACvE,OAAQjE,EAAO,WAAa8D,EAAU,UAClC9D,EAAO,OAAS8D,EAAU,IACpC,CACA,EAAM,EAGH,UAAiC,CAChC,OAAO,UAA2B,CAChC,MAAO,EACb,CACA,EAAM,EChES,SAASI,GAAc9G,EAAK,CACzC,MAAMN,EAAQ,4BAA4B,KAAKM,CAAG,EAClD,OAAON,GAASA,EAAM,CAAC,GAAK,EAC9B,CCGA,SAASqH,GAAYC,EAAcC,EAAK,CACtCD,EAAeA,GAAgB,GAC/B,MAAME,EAAQ,IAAI,MAAMF,CAAY,EAC9BG,EAAa,IAAI,MAAMH,CAAY,EACzC,IAAII,EAAO,EACPC,EAAO,EACPC,EAEJ,OAAAL,EAAMA,IAAQ,OAAYA,EAAM,IAEzB,SAAcM,EAAa,CAChC,MAAMC,EAAM,KAAK,MAEXC,EAAYN,EAAWE,CAAI,EAE5BC,IACHA,EAAgBE,GAGlBN,EAAME,CAAI,EAAIG,EACdJ,EAAWC,CAAI,EAAII,EAEnB,IAAIprC,EAAIirC,EACJK,EAAa,EAEjB,KAAOtrC,IAAMgrC,GACXM,GAAcR,EAAM9qC,GAAG,EACvBA,EAAIA,EAAI4qC,EASV,GANAI,GAAQA,EAAO,GAAKJ,EAEhBI,IAASC,IACXA,GAAQA,EAAO,GAAKL,GAGlBQ,EAAMF,EAAgBL,EACxB,OAGF,MAAMU,EAASF,GAAaD,EAAMC,EAElC,OAAOE,EAAS,KAAK,MAAMD,EAAa,IAAOC,CAAM,EAAI,MAC7D,CACA,CCpCA,SAASC,GAAqBC,EAAUC,EAAkB,CACxD,IAAIC,EAAgB,EACpB,MAAMC,EAAejB,GAAY,GAAI,GAAG,EAExC,OAAOtY,GAAK,CACV,MAAMwZ,EAASxZ,EAAE,OACXyZ,EAAQzZ,EAAE,iBAAmBA,EAAE,MAAQ,OACvC0Z,EAAgBF,EAASF,EACzBK,EAAOJ,EAAaG,CAAa,EACjCE,EAAUJ,GAAUC,EAE1BH,EAAgBE,EAEhB,MAAMz2B,EAAO,CACX,OAAAy2B,EACA,MAAAC,EACA,SAAUA,EAASD,EAASC,EAAS,OACrC,MAAOC,EACP,KAAMC,GAAc,OACpB,UAAWA,GAAQF,GAASG,GAAWH,EAAQD,GAAUG,EAAO,OAChE,MAAO3Z,CACb,EAEIjd,EAAKs2B,EAAmB,WAAa,QAAQ,EAAI,GAEjDD,EAASr2B,CAAI,CACjB,CACA,CAEA,MAAM82B,GAAwB,OAAO,eAAmB,IAExDC,GAAeD,IAAyB,SAAUvK,EAAQ,CACxD,OAAO,IAAI,QAAQ,SAA4B0H,EAASC,EAAQ,CAC9D,IAAI8C,EAAczK,EAAO,KACzB,MAAM0K,EAAiBxE,GAAa,KAAKlG,EAAO,OAAO,EAAE,YACzD,GAAI,CAAC,aAAA2K,EAAc,cAAAC,CAAa,EAAI5K,EAChC6K,EACJ,SAASzgC,GAAO,CACV41B,EAAO,aACTA,EAAO,YAAY,YAAY6K,CAAU,EAGvC7K,EAAO,QACTA,EAAO,OAAO,oBAAoB,QAAS6K,CAAU,CAExD,CAED,IAAI5G,EAEJ,GAAI9D,GAAM,WAAWsK,CAAW,GAC9B,GAAIrH,GAAS,uBAAyBA,GAAS,+BAC7CsH,EAAe,eAAe,EAAK,WACzBzG,EAAcyG,EAAe,eAAc,KAAQ,GAAO,CAEpE,KAAM,CAACxkC,EAAM,GAAGk/B,CAAM,EAAInB,EAAcA,EAAY,MAAM,GAAG,EAAE,IAAItD,GAASA,EAAM,KAAI,CAAE,EAAE,OAAO,OAAO,EAAI,GAC5G+J,EAAe,eAAe,CAACxkC,GAAQ,sBAAuB,GAAGk/B,CAAM,EAAE,KAAK,IAAI,CAAC,CACpF,EAGH,IAAInF,EAAU,IAAI,eAGlB,GAAID,EAAO,KAAM,CACf,MAAM8K,EAAW9K,EAAO,KAAK,UAAY,GACnC+K,EAAW/K,EAAO,KAAK,SAAW,SAAS,mBAAmBA,EAAO,KAAK,QAAQ,CAAC,EAAI,GAC7F0K,EAAe,IAAI,gBAAiB,SAAW,KAAKI,EAAW,IAAMC,CAAQ,CAAC,CAC/E,CAED,MAAMC,EAAW1C,GAActI,EAAO,QAASA,EAAO,GAAG,EAEzDC,EAAQ,KAAKD,EAAO,OAAO,YAAa,EAAEgC,GAASgJ,EAAUhL,EAAO,OAAQA,EAAO,gBAAgB,EAAG,EAAI,EAG1GC,EAAQ,QAAUD,EAAO,QAEzB,SAASiL,GAAY,CACnB,GAAI,CAAChL,EACH,OAGF,MAAMiL,EAAkBhF,GAAa,KACnC,0BAA2BjG,GAAWA,EAAQ,sBAAuB,CAC7E,EAGYC,EAAW,CACf,KAHmB,CAACyK,GAAgBA,IAAiB,QAAUA,IAAiB,OAChF1K,EAAQ,aAAeA,EAAQ,SAG/B,OAAQA,EAAQ,OAChB,WAAYA,EAAQ,WACpB,QAASiL,EACT,OAAAlL,EACA,QAAAC,CACR,EAEMwH,GAAO,SAAkBtoC,EAAO,CAC9BuoC,EAAQvoC,CAAK,EACbiL,GACR,EAAS,SAAiBgE,EAAK,CACvBu5B,EAAOv5B,CAAG,EACVhE,GACD,EAAE81B,CAAQ,EAGXD,EAAU,IACX,CAmED,GAjEI,cAAeA,EAEjBA,EAAQ,UAAYgL,EAGpBhL,EAAQ,mBAAqB,UAAsB,CAC7C,CAACA,GAAWA,EAAQ,aAAe,GAQnCA,EAAQ,SAAW,GAAK,EAAEA,EAAQ,aAAeA,EAAQ,YAAY,QAAQ,OAAO,IAAM,IAK9F,WAAWgL,CAAS,CAC5B,EAIIhL,EAAQ,QAAU,UAAuB,CAClCA,IAIL0H,EAAO,IAAI9H,GAAW,kBAAmBA,GAAW,aAAcG,EAAQC,CAAO,CAAC,EAGlFA,EAAU,KAChB,EAGIA,EAAQ,QAAU,UAAuB,CAGvC0H,EAAO,IAAI9H,GAAW,gBAAiBA,GAAW,YAAaG,EAAQC,CAAO,CAAC,EAG/EA,EAAU,IAChB,EAGIA,EAAQ,UAAY,UAAyB,CAC3C,IAAIkL,EAAsBnL,EAAO,QAAU,cAAgBA,EAAO,QAAU,cAAgB,mBAC5F,MAAMqE,EAAerE,EAAO,cAAgBwC,GACxCxC,EAAO,sBACTmL,EAAsBnL,EAAO,qBAE/B2H,EAAO,IAAI9H,GACTsL,EACA9G,EAAa,oBAAsBxE,GAAW,UAAYA,GAAW,aACrEG,EACAC,CAAO,CAAC,EAGVA,EAAU,IAChB,EAKOmD,GAAS,wBACVwH,GAAiBzK,GAAM,WAAWyK,CAAa,IAAMA,EAAgBA,EAAc5K,CAAM,GAErF4K,GAAkBA,IAAkB,IAASpC,GAAgBwC,CAAQ,GAAI,CAE3E,MAAMI,EAAYpL,EAAO,gBAAkBA,EAAO,gBAAkB6H,GAAQ,KAAK7H,EAAO,cAAc,EAElGoL,GACFV,EAAe,IAAI1K,EAAO,eAAgBoL,CAAS,CAEtD,CAIHX,IAAgB,QAAaC,EAAe,eAAe,IAAI,EAG3D,qBAAsBzK,GACxBE,GAAM,QAAQuK,EAAe,OAAQ,EAAE,SAA0BjtC,EAAKM,EAAK,CACzEkiC,EAAQ,iBAAiBliC,EAAKN,CAAG,CACzC,CAAO,EAIE0iC,GAAM,YAAYH,EAAO,eAAe,IAC3CC,EAAQ,gBAAkB,CAAC,CAACD,EAAO,iBAIjC2K,GAAgBA,IAAiB,SACnC1K,EAAQ,aAAeD,EAAO,cAI5B,OAAOA,EAAO,oBAAuB,YACvCC,EAAQ,iBAAiB,WAAY4J,GAAqB7J,EAAO,mBAAoB,EAAI,CAAC,EAIxF,OAAOA,EAAO,kBAAqB,YAAcC,EAAQ,QAC3DA,EAAQ,OAAO,iBAAiB,WAAY4J,GAAqB7J,EAAO,gBAAgB,CAAC,GAGvFA,EAAO,aAAeA,EAAO,UAG/B6K,EAAaQ,GAAU,CAChBpL,IAGL0H,EAAO,CAAC0D,GAAUA,EAAO,KAAO,IAAI7D,GAAc,KAAMxH,EAAQC,CAAO,EAAIoL,CAAM,EACjFpL,EAAQ,MAAK,EACbA,EAAU,KAClB,EAEMD,EAAO,aAAeA,EAAO,YAAY,UAAU6K,CAAU,EACzD7K,EAAO,SACTA,EAAO,OAAO,QAAU6K,EAAY,EAAG7K,EAAO,OAAO,iBAAiB,QAAS6K,CAAU,IAI7F,MAAMS,EAAWvC,GAAciC,CAAQ,EAEvC,GAAIM,GAAYlI,GAAS,UAAU,QAAQkI,CAAQ,IAAM,GAAI,CAC3D3D,EAAO,IAAI9H,GAAW,wBAA0ByL,EAAW,IAAKzL,GAAW,gBAAiBG,CAAM,CAAC,EACnG,MACD,CAIDC,EAAQ,KAAKwK,GAAe,IAAI,CACpC,CAAG,CACH,EC9PMc,GAAgB,CACpB,KAAMjL,GACN,IAAKkK,EACP,EAEArK,GAAM,QAAQoL,GAAe,CAAC9rC,EAAIN,IAAU,CAC1C,GAAIM,EAAI,CACN,GAAI,CACF,OAAO,eAAeA,EAAI,OAAQ,CAAC,MAAAN,CAAK,CAAC,CAC1C,MAAW,CAEX,CACD,OAAO,eAAeM,EAAI,cAAe,CAAC,MAAAN,CAAK,CAAC,CACjD,CACH,CAAC,EAED,MAAMqsC,GAAgBC,GAAW,KAAKA,CAAM,GAEtCC,GAAoBC,GAAYxL,GAAM,WAAWwL,CAAO,GAAKA,IAAY,MAAQA,IAAY,GAEpFC,GAAA,CACb,WAAaC,GAAa,CACxBA,EAAW1L,GAAM,QAAQ0L,CAAQ,EAAIA,EAAW,CAACA,CAAQ,EAEzD,KAAM,CAAC,OAAAzM,CAAM,EAAIyM,EACjB,IAAIC,EACAH,EAEJ,MAAMI,EAAkB,CAAA,EAExB,QAAS1tC,EAAI,EAAGA,EAAI+gC,EAAQ/gC,IAAK,CAC/BytC,EAAgBD,EAASxtC,CAAC,EAC1B,IAAIuR,EAIJ,GAFA+7B,EAAUG,EAEN,CAACJ,GAAiBI,CAAa,IACjCH,EAAUJ,IAAe37B,EAAK,OAAOk8B,CAAa,GAAG,YAAW,CAAE,EAE9DH,IAAY,QACd,MAAM,IAAI9L,GAAW,oBAAoBjwB,CAAE,GAAG,EAIlD,GAAI+7B,EACF,MAGFI,EAAgBn8B,GAAM,IAAMvR,CAAC,EAAIstC,CAClC,CAED,GAAI,CAACA,EAAS,CAEZ,MAAMK,EAAU,OAAO,QAAQD,CAAe,EAC3C,IAAI,CAAC,CAACn8B,EAAIgL,CAAK,IAAM,WAAWhL,CAAE,KAChCgL,IAAU,GAAQ,sCAAwC,gCACrE,EAEM,IAAIzD,EAAIioB,EACL4M,EAAQ,OAAS,EAAI;AAAA,EAAcA,EAAQ,IAAIR,EAAY,EAAE,KAAK;AAAA,CAAI,EAAI,IAAMA,GAAaQ,EAAQ,CAAC,CAAC,EACxG,0BAEF,MAAM,IAAInM,GACR,wDAA0D1oB,EAC1D,iBACR,CACK,CAED,OAAOw0B,CACR,EACD,SAAUJ,EACZ,EC5DA,SAASU,GAA6BjM,EAAQ,CAK5C,GAJIA,EAAO,aACTA,EAAO,YAAY,mBAGjBA,EAAO,QAAUA,EAAO,OAAO,QACjC,MAAM,IAAIwH,GAAc,KAAMxH,CAAM,CAExC,CASe,SAASkM,GAAgBlM,EAAQ,CAC9C,OAAAiM,GAA6BjM,CAAM,EAEnCA,EAAO,QAAUkG,GAAa,KAAKlG,EAAO,OAAO,EAGjDA,EAAO,KAAOsH,GAAc,KAC1BtH,EACAA,EAAO,gBACX,EAEM,CAAC,OAAQ,MAAO,OAAO,EAAE,QAAQA,EAAO,MAAM,IAAM,IACtDA,EAAO,QAAQ,eAAe,oCAAqC,EAAK,EAG1D6L,GAAS,WAAW7L,EAAO,SAAW+D,GAAS,OAAO,EAEvD/D,CAAM,EAAE,KAAK,SAA6BE,EAAU,CACjE,OAAA+L,GAA6BjM,CAAM,EAGnCE,EAAS,KAAOoH,GAAc,KAC5BtH,EACAA,EAAO,kBACPE,CACN,EAEIA,EAAS,QAAUgG,GAAa,KAAKhG,EAAS,OAAO,EAE9CA,CACX,EAAK,SAA4BuL,EAAQ,CACrC,OAAKlE,GAASkE,CAAM,IAClBQ,GAA6BjM,CAAM,EAG/ByL,GAAUA,EAAO,WACnBA,EAAO,SAAS,KAAOnE,GAAc,KACnCtH,EACAA,EAAO,kBACPyL,EAAO,QACjB,EACQA,EAAO,SAAS,QAAUvF,GAAa,KAAKuF,EAAO,SAAS,OAAO,IAIhE,QAAQ,OAAOA,CAAM,CAChC,CAAG,CACH,CC3EA,MAAMU,GAAmBlR,GAAUA,aAAiBiL,GAAe,CAAE,GAAGjL,CAAO,EAAGA,EAWnE,SAASmR,GAAYC,EAASC,EAAS,CAEpDA,EAAUA,GAAW,GACrB,MAAMtM,EAAS,CAAA,EAEf,SAASuM,EAAetmC,EAAQ+H,EAAQuuB,EAAU,CAChD,OAAI4D,GAAM,cAAcl6B,CAAM,GAAKk6B,GAAM,cAAcnyB,CAAM,EACpDmyB,GAAM,MAAM,KAAK,CAAC,SAAA5D,CAAQ,EAAGt2B,EAAQ+H,CAAM,EACzCmyB,GAAM,cAAcnyB,CAAM,EAC5BmyB,GAAM,MAAM,CAAE,EAAEnyB,CAAM,EACpBmyB,GAAM,QAAQnyB,CAAM,EACtBA,EAAO,QAETA,CACR,CAGD,SAASw+B,EAAoBxqC,EAAGC,EAAGs6B,EAAU,CAC3C,GAAK4D,GAAM,YAAYl+B,CAAC,GAEjB,GAAI,CAACk+B,GAAM,YAAYn+B,CAAC,EAC7B,OAAOuqC,EAAe,OAAWvqC,EAAGu6B,CAAQ,MAF5C,QAAOgQ,EAAevqC,EAAGC,EAAGs6B,CAAQ,CAIvC,CAGD,SAASkQ,EAAiBzqC,EAAGC,EAAG,CAC9B,GAAI,CAACk+B,GAAM,YAAYl+B,CAAC,EACtB,OAAOsqC,EAAe,OAAWtqC,CAAC,CAErC,CAGD,SAASyqC,EAAiB1qC,EAAGC,EAAG,CAC9B,GAAKk+B,GAAM,YAAYl+B,CAAC,GAEjB,GAAI,CAACk+B,GAAM,YAAYn+B,CAAC,EAC7B,OAAOuqC,EAAe,OAAWvqC,CAAC,MAFlC,QAAOuqC,EAAe,OAAWtqC,CAAC,CAIrC,CAGD,SAAS0qC,EAAgB3qC,EAAGC,EAAGggB,EAAM,CACnC,GAAIA,KAAQqqB,EACV,OAAOC,EAAevqC,EAAGC,CAAC,EACrB,GAAIggB,KAAQoqB,EACjB,OAAOE,EAAe,OAAWvqC,CAAC,CAErC,CAED,MAAM4qC,EAAW,CACf,IAAKH,EACL,OAAQA,EACR,KAAMA,EACN,QAASC,EACT,iBAAkBA,EAClB,kBAAmBA,EACnB,iBAAkBA,EAClB,QAASA,EACT,eAAgBA,EAChB,gBAAiBA,EACjB,cAAeA,EACf,QAASA,EACT,aAAcA,EACd,eAAgBA,EAChB,eAAgBA,EAChB,iBAAkBA,EAClB,mBAAoBA,EACpB,WAAYA,EACZ,iBAAkBA,EAClB,cAAeA,EACf,eAAgBA,EAChB,UAAWA,EACX,UAAWA,EACX,WAAYA,EACZ,YAAaA,EACb,WAAYA,EACZ,iBAAkBA,EAClB,eAAgBC,EAChB,QAAS,CAAC3qC,EAAGC,IAAMuqC,EAAoBL,GAAgBnqC,CAAC,EAAGmqC,GAAgBlqC,CAAC,EAAG,EAAI,CACvF,EAEEk+B,OAAAA,GAAM,QAAQ,OAAO,KAAK,OAAO,OAAO,GAAIkM,EAASC,CAAO,CAAC,EAAG,SAA4BrqB,EAAM,CAChG,MAAMqa,EAAQsQ,EAAS3qB,CAAI,GAAKuqB,EAC1BK,EAAcvQ,EAAM+P,EAAQpqB,CAAI,EAAGqqB,EAAQrqB,CAAI,EAAGA,CAAI,EAC3Dke,GAAM,YAAY0M,CAAW,GAAKvQ,IAAUqQ,IAAqB3M,EAAO/d,CAAI,EAAI4qB,EACrF,CAAG,EAEM7M,CACT,CCzGO,MAAM8M,GAAU,QCKjBC,GAAa,CAAA,EAGnB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,QAAQ,EAAE,QAAQ,CAAC7mC,EAAM7H,IAAM,CACnF0uC,GAAW7mC,CAAI,EAAI,SAAmB+0B,EAAO,CAC3C,OAAO,OAAOA,IAAU/0B,GAAQ,KAAO7H,EAAI,EAAI,KAAO,KAAO6H,CACjE,CACA,CAAC,EAED,MAAM8mC,GAAqB,CAAA,EAW3BD,GAAW,aAAe,SAAsBE,EAAWttB,EAASmgB,EAAS,CAC3E,SAASoN,EAAchwB,EAAKiwB,EAAM,CAChC,MAAO,WAAaL,GAAU,0BAA6B5vB,EAAM,IAAOiwB,GAAQrN,EAAU,KAAOA,EAAU,GAC5G,CAGD,MAAO,CAAC3gC,EAAO+d,EAAKkwB,IAAS,CAC3B,GAAIH,IAAc,GAChB,MAAM,IAAIpN,GACRqN,EAAchwB,EAAK,qBAAuByC,EAAU,OAASA,EAAU,GAAG,EAC1EkgB,GAAW,cACnB,EAGI,OAAIlgB,GAAW,CAACqtB,GAAmB9vB,CAAG,IACpC8vB,GAAmB9vB,CAAG,EAAI,GAE1B,QAAQ,KACNgwB,EACEhwB,EACA,+BAAiCyC,EAAU,yCAC5C,CACT,GAGWstB,EAAYA,EAAU9tC,EAAO+d,EAAKkwB,CAAI,EAAI,EACrD,CACA,EAYA,SAASC,GAAch7B,EAASi7B,EAAQC,EAAc,CACpD,GAAI,OAAOl7B,GAAY,SACrB,MAAM,IAAIwtB,GAAW,4BAA6BA,GAAW,oBAAoB,EAEnF,MAAMvrB,EAAO,OAAO,KAAKjC,CAAO,EAChC,IAAI,EAAIiC,EAAK,OACb,KAAO,KAAM,GAAG,CACd,MAAM4I,EAAM5I,EAAK,CAAC,EACZ24B,EAAYK,EAAOpwB,CAAG,EAC5B,GAAI+vB,EAAW,CACb,MAAM9tC,EAAQkT,EAAQ6K,CAAG,EACnB7U,EAASlJ,IAAU,QAAa8tC,EAAU9tC,EAAO+d,EAAK7K,CAAO,EACnE,GAAIhK,IAAW,GACb,MAAM,IAAIw3B,GAAW,UAAY3iB,EAAM,YAAc7U,EAAQw3B,GAAW,oBAAoB,EAE9F,QACD,CACD,GAAI0N,IAAiB,GACnB,MAAM,IAAI1N,GAAW,kBAAoB3iB,EAAK2iB,GAAW,cAAc,CAE1E,CACH,CAEA,MAAeoN,GAAA,CACb,cAAAI,GACF,WAAEN,EACF,EC/EMA,GAAaE,GAAU,WAS7B,MAAMO,EAAM,CACV,YAAYC,EAAgB,CAC1B,KAAK,SAAWA,EAChB,KAAK,aAAe,CAClB,QAAS,IAAIpL,GACb,SAAU,IAAIA,EACpB,CACG,CAUD,MAAM,QAAQqL,EAAa1N,EAAQ,CACjC,GAAI,CACF,OAAO,MAAM,KAAK,SAAS0N,EAAa1N,CAAM,CAC/C,OAAQ5xB,EAAK,CACZ,GAAIA,aAAe,MAAO,CACxB,IAAIu/B,EAEJ,MAAM,kBAAoB,MAAM,kBAAkBA,EAAQ,CAAE,CAAA,EAAKA,EAAQ,IAAI,MAG7E,MAAMpO,EAAQoO,EAAM,MAAQA,EAAM,MAAM,QAAQ,QAAS,EAAE,EAAI,GAE1Dv/B,EAAI,MAGEmxB,GAAS,CAAC,OAAOnxB,EAAI,KAAK,EAAE,SAASmxB,EAAM,QAAQ,YAAa,EAAE,CAAC,IAC5EnxB,EAAI,OAAS;AAAA,EAAOmxB,GAHpBnxB,EAAI,MAAQmxB,CAKf,CAED,MAAMnxB,CACP,CACF,CAED,SAASs/B,EAAa1N,EAAQ,CAGxB,OAAO0N,GAAgB,UACzB1N,EAASA,GAAU,GACnBA,EAAO,IAAM0N,GAEb1N,EAAS0N,GAAe,GAG1B1N,EAASoM,GAAY,KAAK,SAAUpM,CAAM,EAE1C,KAAM,CAAC,aAAAqE,EAAc,iBAAAuJ,EAAkB,QAAA5J,CAAO,EAAIhE,EAE9CqE,IAAiB,QACnB4I,GAAU,cAAc5I,EAAc,CACpC,kBAAmB0I,GAAW,aAAaA,GAAW,OAAO,EAC7D,kBAAmBA,GAAW,aAAaA,GAAW,OAAO,EAC7D,oBAAqBA,GAAW,aAAaA,GAAW,OAAO,CAChE,EAAE,EAAK,EAGNa,GAAoB,OAClBzN,GAAM,WAAWyN,CAAgB,EACnC5N,EAAO,iBAAmB,CACxB,UAAW4N,CACZ,EAEDX,GAAU,cAAcW,EAAkB,CACxC,OAAQb,GAAW,SACnB,UAAWA,GAAW,QACvB,EAAE,EAAI,GAKX/M,EAAO,QAAUA,EAAO,QAAU,KAAK,SAAS,QAAU,OAAO,cAGjE,IAAI6N,EAAiB7J,GAAW7D,GAAM,MACpC6D,EAAQ,OACRA,EAAQhE,EAAO,MAAM,CAC3B,EAEIgE,GAAW7D,GAAM,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,QAAQ,EACzDp2B,GAAW,CACV,OAAOi6B,EAAQj6B,CAAM,CACtB,CACP,EAEIi2B,EAAO,QAAUkG,GAAa,OAAO2H,EAAgB7J,CAAO,EAG5D,MAAM8J,EAA0B,CAAA,EAChC,IAAIC,EAAiC,GACrC,KAAK,aAAa,QAAQ,QAAQ,SAAoCC,EAAa,CAC7E,OAAOA,EAAY,SAAY,YAAcA,EAAY,QAAQhO,CAAM,IAAM,KAIjF+N,EAAiCA,GAAkCC,EAAY,YAE/EF,EAAwB,QAAQE,EAAY,UAAWA,EAAY,QAAQ,EACjF,CAAK,EAED,MAAMC,EAA2B,CAAA,EACjC,KAAK,aAAa,SAAS,QAAQ,SAAkCD,EAAa,CAChFC,EAAyB,KAAKD,EAAY,UAAWA,EAAY,QAAQ,CAC/E,CAAK,EAED,IAAIE,EACA7vC,EAAI,EACJ0uB,EAEJ,GAAI,CAACghB,EAAgC,CACnC,MAAMI,EAAQ,CAACjC,GAAgB,KAAK,IAAI,EAAG,MAAS,EAOpD,IANAiC,EAAM,QAAQ,MAAMA,EAAOL,CAAuB,EAClDK,EAAM,KAAK,MAAMA,EAAOF,CAAwB,EAChDlhB,EAAMohB,EAAM,OAEZD,EAAU,QAAQ,QAAQlO,CAAM,EAEzB3hC,EAAI0uB,GACTmhB,EAAUA,EAAQ,KAAKC,EAAM9vC,GAAG,EAAG8vC,EAAM9vC,GAAG,CAAC,EAG/C,OAAO6vC,CACR,CAEDnhB,EAAM+gB,EAAwB,OAE9B,IAAIM,EAAYpO,EAIhB,IAFA3hC,EAAI,EAEGA,EAAI0uB,GAAK,CACd,MAAMshB,EAAcP,EAAwBzvC,GAAG,EACzCiwC,EAAaR,EAAwBzvC,GAAG,EAC9C,GAAI,CACF+vC,EAAYC,EAAYD,CAAS,CAClC,OAAQnU,EAAO,CACdqU,EAAW,KAAK,KAAMrU,CAAK,EAC3B,KACD,CACF,CAED,GAAI,CACFiU,EAAUhC,GAAgB,KAAK,KAAMkC,CAAS,CAC/C,OAAQnU,EAAO,CACd,OAAO,QAAQ,OAAOA,CAAK,CAC5B,CAKD,IAHA57B,EAAI,EACJ0uB,EAAMkhB,EAAyB,OAExB5vC,EAAI0uB,GACTmhB,EAAUA,EAAQ,KAAKD,EAAyB5vC,GAAG,EAAG4vC,EAAyB5vC,GAAG,CAAC,EAGrF,OAAO6vC,CACR,CAED,OAAOlO,EAAQ,CACbA,EAASoM,GAAY,KAAK,SAAUpM,CAAM,EAC1C,MAAMgL,EAAW1C,GAActI,EAAO,QAASA,EAAO,GAAG,EACzD,OAAOgC,GAASgJ,EAAUhL,EAAO,OAAQA,EAAO,gBAAgB,CACjE,CACH,CAGAG,GAAM,QAAQ,CAAC,SAAU,MAAO,OAAQ,SAAS,EAAG,SAA6Bp2B,EAAQ,CAEvFyjC,GAAM,UAAUzjC,CAAM,EAAI,SAASk4B,EAAKjC,EAAQ,CAC9C,OAAO,KAAK,QAAQoM,GAAYpM,GAAU,CAAA,EAAI,CAC5C,OAAAj2B,EACA,IAAAk4B,EACA,MAAOjC,GAAU,CAAA,GAAI,IACtB,CAAA,CAAC,CACN,CACA,CAAC,EAEDG,GAAM,QAAQ,CAAC,OAAQ,MAAO,OAAO,EAAG,SAA+Bp2B,EAAQ,CAG7E,SAASwkC,EAAmBC,EAAQ,CAClC,OAAO,SAAoBvM,EAAKxuB,EAAMusB,EAAQ,CAC5C,OAAO,KAAK,QAAQoM,GAAYpM,GAAU,CAAA,EAAI,CAC5C,OAAAj2B,EACA,QAASykC,EAAS,CAChB,eAAgB,qBAC1B,EAAY,CAAE,EACN,IAAAvM,EACA,KAAAxuB,CACD,CAAA,CAAC,CACR,CACG,CAED+5B,GAAM,UAAUzjC,CAAM,EAAIwkC,EAAkB,EAE5Cf,GAAM,UAAUzjC,EAAS,MAAM,EAAIwkC,EAAmB,EAAI,CAC5D,CAAC,ECnND,MAAME,EAAY,CAChB,YAAYC,EAAU,CACpB,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,UAAU,8BAA8B,EAGpD,IAAIC,EAEJ,KAAK,QAAU,IAAI,QAAQ,SAAyBjH,EAAS,CAC3DiH,EAAiBjH,CACvB,CAAK,EAED,MAAM/G,EAAQ,KAGd,KAAK,QAAQ,KAAK0K,GAAU,CAC1B,GAAI,CAAC1K,EAAM,WAAY,OAEvB,IAAItiC,EAAIsiC,EAAM,WAAW,OAEzB,KAAOtiC,KAAM,GACXsiC,EAAM,WAAWtiC,CAAC,EAAEgtC,CAAM,EAE5B1K,EAAM,WAAa,IACzB,CAAK,EAGD,KAAK,QAAQ,KAAOiO,GAAe,CACjC,IAAIC,EAEJ,MAAMX,EAAU,IAAI,QAAQxG,GAAW,CACrC/G,EAAM,UAAU+G,CAAO,EACvBmH,EAAWnH,CACnB,CAAO,EAAE,KAAKkH,CAAW,EAEnB,OAAAV,EAAQ,OAAS,UAAkB,CACjCvN,EAAM,YAAYkO,CAAQ,CAClC,EAEaX,CACb,EAEIQ,EAAS,SAAgB5O,EAASE,EAAQC,EAAS,CAC7CU,EAAM,SAKVA,EAAM,OAAS,IAAI6G,GAAc1H,EAASE,EAAQC,CAAO,EACzD0O,EAAehO,EAAM,MAAM,EACjC,CAAK,CACF,CAKD,kBAAmB,CACjB,GAAI,KAAK,OACP,MAAM,KAAK,MAEd,CAMD,UAAUmJ,EAAU,CAClB,GAAI,KAAK,OAAQ,CACfA,EAAS,KAAK,MAAM,EACpB,MACD,CAEG,KAAK,WACP,KAAK,WAAW,KAAKA,CAAQ,EAE7B,KAAK,WAAa,CAACA,CAAQ,CAE9B,CAMD,YAAYA,EAAU,CACpB,GAAI,CAAC,KAAK,WACR,OAEF,MAAMxvB,EAAQ,KAAK,WAAW,QAAQwvB,CAAQ,EAC1CxvB,IAAU,IACZ,KAAK,WAAW,OAAOA,EAAO,CAAC,CAElC,CAMD,OAAO,QAAS,CACd,IAAI+wB,EAIJ,MAAO,CACL,MAJY,IAAIoD,GAAY,SAAkB3uC,EAAG,CACjDurC,EAASvrC,CACf,CAAK,EAGC,OAAAurC,CACN,CACG,CACH,CC/Fe,SAASyD,GAAOnlC,EAAU,CACvC,OAAO,SAAcxL,EAAK,CACxB,OAAOwL,EAAS,MAAM,KAAMxL,CAAG,CACnC,CACA,CChBe,SAAS4wC,GAAaC,EAAS,CAC5C,OAAO7O,GAAM,SAAS6O,CAAO,GAAMA,EAAQ,eAAiB,EAC9D,CCbA,MAAMC,GAAiB,CACrB,SAAU,IACV,mBAAoB,IACpB,WAAY,IACZ,WAAY,IACZ,GAAI,IACJ,QAAS,IACT,SAAU,IACV,4BAA6B,IAC7B,UAAW,IACX,aAAc,IACd,eAAgB,IAChB,YAAa,IACb,gBAAiB,IACjB,OAAQ,IACR,gBAAiB,IACjB,iBAAkB,IAClB,MAAO,IACP,SAAU,IACV,YAAa,IACb,SAAU,IACV,OAAQ,IACR,kBAAmB,IACnB,kBAAmB,IACnB,WAAY,IACZ,aAAc,IACd,gBAAiB,IACjB,UAAW,IACX,SAAU,IACV,iBAAkB,IAClB,cAAe,IACf,4BAA6B,IAC7B,eAAgB,IAChB,SAAU,IACV,KAAM,IACN,eAAgB,IAChB,mBAAoB,IACpB,gBAAiB,IACjB,WAAY,IACZ,qBAAsB,IACtB,oBAAqB,IACrB,kBAAmB,IACnB,UAAW,IACX,mBAAoB,IACpB,oBAAqB,IACrB,OAAQ,IACR,iBAAkB,IAClB,SAAU,IACV,gBAAiB,IACjB,qBAAsB,IACtB,gBAAiB,IACjB,4BAA6B,IAC7B,2BAA4B,IAC5B,oBAAqB,IACrB,eAAgB,IAChB,WAAY,IACZ,mBAAoB,IACpB,eAAgB,IAChB,wBAAyB,IACzB,sBAAuB,IACvB,oBAAqB,IACrB,aAAc,IACd,YAAa,IACb,8BAA+B,GACjC,EAEA,OAAO,QAAQA,EAAc,EAAE,QAAQ,CAAC,CAAClxC,EAAKoB,CAAK,IAAM,CACvD8vC,GAAe9vC,CAAK,EAAIpB,CAC1B,CAAC,ECzCD,SAASmxC,GAAeC,EAAe,CACrC,MAAM5vB,EAAU,IAAIiuB,GAAM2B,CAAa,EACjChhC,EAAW0sB,GAAK2S,GAAM,UAAU,QAASjuB,CAAO,EAGtD4gB,OAAAA,GAAM,OAAOhyB,EAAUq/B,GAAM,UAAWjuB,EAAS,CAAC,WAAY,EAAI,CAAC,EAGnE4gB,GAAM,OAAOhyB,EAAUoR,EAAS,KAAM,CAAC,WAAY,EAAI,CAAC,EAGxDpR,EAAS,OAAS,SAAgBs/B,EAAgB,CAChD,OAAOyB,GAAe9C,GAAY+C,EAAe1B,CAAc,CAAC,CACpE,EAESt/B,CACT,CAGA,MAAMihC,GAAQF,GAAenL,EAAQ,EAGrCqL,GAAM,MAAQ5B,GAGd4B,GAAM,cAAgB5H,GACtB4H,GAAM,YAAcX,GACpBW,GAAM,SAAW7H,GACjB6H,GAAM,QAAUtC,GAChBsC,GAAM,WAAatO,GAGnBsO,GAAM,WAAavP,GAGnBuP,GAAM,OAASA,GAAM,cAGrBA,GAAM,IAAM,SAAaC,EAAU,CACjC,OAAO,QAAQ,IAAIA,CAAQ,CAC7B,EAEAD,GAAM,OAASN,GAGfM,GAAM,aAAeL,GAGrBK,GAAM,YAAchD,GAEpBgD,GAAM,aAAelJ,GAErBkJ,GAAM,WAAanU,GAASwI,GAAetD,GAAM,WAAWlF,CAAK,EAAI,IAAI,SAASA,CAAK,EAAIA,CAAK,EAEhGmU,GAAM,WAAavD,GAAS,WAE5BuD,GAAM,eAAiBH,GAEvBG,GAAM,QAAUA,GC7EH,MAAAE,GAAY/U,GAAY,OAAQ,IAAM,CAC/C,MAAMgV,EAASxnC,GAAS,CACpB,OAAQ,CAAC,CAAA,CACZ,EAEKynC,EAAcznC,GAAS,CACzB,gBAAiB,OACjB,uBAAwB,OACxB,gCAAiC,SACjC,SAAU,OACV,kBAAmB,UACnB,yBAA0B,OAC1B,YAAa,OACb,qBAAsB,UACtB,eAAgB,OAChB,0BAA2B,OAC3B,4BAA6B,MAAA,CAChC,EAEK0nC,EAAgB1nC,GAAS,CAC3B,gBAAiB,OACjB,uBAAwB,OACxB,kBAAmB,CAAC,EACpB,qBAAsB,CAAC,EACvB,MAAO,CAAC,CAAA,CACX,EAED,SAAS2nC,EAAQC,EAAe,CAC5B,GAAIA,EAAe,CACT,MAAAC,EAAQC,GAAWL,CAAW,EACpCJ,GAAM,KAAK,SAAUQ,CAAK,EACrB,KAAK,SAAU1P,EAAU,CACtBqP,EAAO,OAAS,KAAK,MAAMrP,EAAS,IAAI,CAAA,CAC3C,CAAA,KACF,CACG,MAAA0P,EAAQC,GAAW,KAAK,aAAa,EAC3CT,GAAM,KAAK,kBAAmBQ,CAAK,EAC9B,KAAK,SAAU1P,EAAU,CACtBqP,EAAO,OAAS,KAAK,MAAMrP,EAAS,IAAI,CAAA,CAC3C,CACT,CACJ,CAEA,SAAS4P,GAAuB,CACrB,MAAA,CACH,OAAQ,GACR,UAAW,SACX,kBAAmB,GACnB,WAAY,CAAC,EAAG,GAAG,CAAA,CAE3B,CAEA,SAASC,GAAqB,CAC1B,KAAK,cAAc,kBAAkB,KAAKD,EAAsB,CAAA,CACpE,CAEA,SAASE,GAAwB,CAC7B,KAAK,cAAc,qBAAqB,KAAKF,EAAsB,CAAA,CACvE,CAEA,SAASG,GAAU,CACV,KAAA,cAAc,MAAM,KAAK,CAC1B,KAAM,GACN,OAAQ,GACR,eAAgB,EAChB,KAAM,CAAA,CACT,CACL,CAEA,SAASC,EAAsB51B,EAAO,CAClC,KAAK,cAAc,kBAAkB,OAAOA,EAAO,CAAC,CACxD,CAEA,SAAS61B,EAAyB71B,EAAO,CACrC,KAAK,cAAc,qBAAqB,OAAOA,EAAO,CAAC,CAC3D,CAEA,SAAS81B,EAAW91B,EAAO,CACvB,KAAK,cAAc,MAAM,OAAOA,EAAO,CAAC,CAC5C,CAEA,SAAS+1B,GAAmB,CAExB,aAAa,QAAQ,gBAAiB,KAAK,UAAU,KAAK,aAAa,CAAC,CAC5E,CAEA,SAASC,GAAsB,CAE3B,IAAI78B,EAAO,KAAK,MAAM,aAAa,QAAQ,eAAe,CAAC,EACxDA,IACC,KAAK,cAAgBA,EAE7B,CAEA,SAAS88B,GAAY,CAcjB,KAAK,cAAgB,CACjB,gBAAiB,OACjB,uBAAwB,OACxB,kBAAmB,CAAC,EACpB,qBAAsB,CAAC,EACvB,MAAO,CAAC,CAAA,CAEhB,CAEO,MAAA,CACH,YAAAf,EACA,cAAAC,EACA,OAAAF,EACA,QAAAG,EACA,mBAAAK,EACA,sBAAAC,EACA,sBAAAE,EACA,yBAAAC,EACA,WAAAC,EACA,QAAAH,EACA,iBAAAI,EACA,oBAAAC,EACA,UAAAC,CAAA,CAER,CAAC,EAED,SAASC,GAAYC,EAAK,CACtB,OAAO,SAASA,EAAI,QAAQ,KAAM,EAAE,CAAC,CACzC,CAEA,SAASZ,GAAWp8B,EAAM,CACtB,MAAMm8B,EAAQ,CAAA,EACH,UAAA7xC,KAAOkJ,GAAMwM,CAAI,EACxB,GAAIxM,GAAMwM,CAAI,EAAE1V,CAAG,EACf,GAAIA,GAAO,mBAAqBA,GAAO,YAAcA,GAAO,cACxD6xC,EAAM7xC,CAAG,EAAIyyC,GAAYvpC,GAAMwM,CAAI,EAAE1V,CAAG,CAAC,UAClCA,GAAO,qBAAuBA,GAAO,uBAAwB,CAC9D6xC,EAAA7xC,CAAG,EAAI,GACb,UAAWM,KAAK4I,GAAMwM,CAAI,EAAE1V,CAAG,EAAG,CACxB,MAAA2yC,EAASF,GAAYvpC,GAAMwM,CAAI,EAAE1V,CAAG,EAAEM,CAAC,EAAE,MAAM,EAC/CuxC,EAAA7xC,CAAG,EAAE,KAAK,CACZ,OAAA2yC,EACA,UAAWj9B,EAAK1V,CAAG,EAAEM,CAAC,EAAE,UACxB,kBAAmBoV,EAAK1V,CAAG,EAAEM,CAAC,EAAE,kBAChC,WAAYoV,EAAK1V,CAAG,EAAEM,CAAC,EAAE,UAAA,CAC5B,CACL,CAAA,SACON,GAAO,QAAS,CACjB6xC,EAAA7xC,CAAG,EAAI,GACb,UAAWM,KAAK4I,GAAMwM,CAAI,EAAE1V,CAAG,EAAG,CACxB,MAAA2yC,EAASF,GAAYvpC,GAAMwM,CAAI,EAAE1V,CAAG,EAAEM,CAAC,EAAE,MAAM,EAC/CuxC,EAAA7xC,CAAG,EAAE,KAAK,CACZ,KAAM0V,EAAK1V,CAAG,EAAEM,CAAC,EAAE,KACnB,OAAAqyC,EACA,eAAgBj9B,EAAK1V,CAAG,EAAEM,CAAC,EAAE,eAC7B,KAAMoV,EAAK1V,CAAG,EAAEM,CAAC,EAAE,IAAA,CACtB,CACL,CAAA,MAGAuxC,EAAM7xC,CAAG,EAAIkJ,GAAMwM,CAAI,EAAE1V,CAAG,OAIhC6xC,EAAM7xC,CAAG,EAAI,EAGd,OAAA6xC,CACX,mJCrLA,MAAMz+B,EAAQw/B,EAKR3/B,EAAO4/B,EASb,SAASC,EAAUngB,EAAG,CAClB,IAAIvxB,EAAQuxB,EAAE,OAAO,MACjBogB,EAAQpgB,EAAE,OAAO,eACrB,GAAIvf,EAAM,eAAe,qBAAsB,CAC3C,IAAI4/B,EAAY,SAAS5xC,EAAM,QAAQ,KAAM,EAAE,CAAC,EAC5C4xC,GAAa,IACT,MAAMA,CAAS,EACfA,EAAY,IAEZA,EAAY,KAAK,aAAa,OAAO,EAAE,OAAOA,CAAS,EACvD//B,EAAK,oBAAqB+/B,CAAS,EAC/BA,GAAa5xC,IACT4xC,EAAU,OAAS5xC,EAAM,SACzB2xC,EAAQC,EAAU,OAAS5xC,EAAM,OAAS2xC,GAE9CrhC,GAAS,IAAM,CAAEihB,EAAE,OAAO,aAAeA,EAAE,OAAO,eAAiBogB,CAAM,CAAE,IAI1F,CACL,+2CClCA,MAAMxY,EAAQgX,GAAS,o8DCHvB;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,SAAS0B,GAAMhuC,EAAG,CAChB,OAAOA,EAAI,GAAM,CACnB,CACA,MAAMiuC,GAAM,CAACjuC,EAAGO,EAAGqa,IAAM,KAAK,IAAI,KAAK,IAAI5a,EAAG4a,CAAC,EAAGra,CAAC,EACnD,SAAS2tC,GAAIluC,EAAG,CACd,OAAOiuC,GAAID,GAAMhuC,EAAI,IAAI,EAAG,EAAG,GAAG,CACpC,CAIA,SAASmuC,GAAInuC,EAAG,CACd,OAAOiuC,GAAID,GAAMhuC,EAAI,GAAG,EAAG,EAAG,GAAG,CACnC,CACA,SAASouC,GAAIpuC,EAAG,CACd,OAAOiuC,GAAID,GAAMhuC,EAAI,IAAI,EAAI,IAAK,EAAG,CAAC,CACxC,CACA,SAASquC,GAAIruC,EAAG,CACd,OAAOiuC,GAAID,GAAMhuC,EAAI,GAAG,EAAG,EAAG,GAAG,CACnC,CAEA,MAAMsuC,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAE,EACvJC,GAAM,CAAC,GAAG,kBAAkB,EAC5BC,GAAKvvC,GAAKsvC,GAAItvC,EAAI,EAAG,EACrBwvC,GAAKxvC,GAAKsvC,IAAKtvC,EAAI,MAAS,CAAC,EAAIsvC,GAAItvC,EAAI,EAAG,EAC5CyvC,GAAKzvC,IAAOA,EAAI,MAAS,KAAQA,EAAI,IACrC0vC,GAAU3uC,GAAK0uC,GAAG1uC,EAAE,CAAC,GAAK0uC,GAAG1uC,EAAE,CAAC,GAAK0uC,GAAG1uC,EAAE,CAAC,GAAK0uC,GAAG1uC,EAAE,CAAC,EAC5D,SAAS4uC,GAASt0C,EAAK,CACrB,IAAIyvB,EAAMzvB,EAAI,OACVkE,EACJ,OAAIlE,EAAI,CAAC,IAAM,MACTyvB,IAAQ,GAAKA,IAAQ,EACvBvrB,EAAM,CACJ,EAAG,IAAM8vC,GAAMh0C,EAAI,CAAC,CAAC,EAAI,GACzB,EAAG,IAAMg0C,GAAMh0C,EAAI,CAAC,CAAC,EAAI,GACzB,EAAG,IAAMg0C,GAAMh0C,EAAI,CAAC,CAAC,EAAI,GACzB,EAAGyvB,IAAQ,EAAIukB,GAAMh0C,EAAI,CAAC,CAAC,EAAI,GAAK,GAC5C,GACeyvB,IAAQ,GAAKA,IAAQ,KAC9BvrB,EAAM,CACJ,EAAG8vC,GAAMh0C,EAAI,CAAC,CAAC,GAAK,EAAIg0C,GAAMh0C,EAAI,CAAC,CAAC,EACpC,EAAGg0C,GAAMh0C,EAAI,CAAC,CAAC,GAAK,EAAIg0C,GAAMh0C,EAAI,CAAC,CAAC,EACpC,EAAGg0C,GAAMh0C,EAAI,CAAC,CAAC,GAAK,EAAIg0C,GAAMh0C,EAAI,CAAC,CAAC,EACpC,EAAGyvB,IAAQ,EAAKukB,GAAMh0C,EAAI,CAAC,CAAC,GAAK,EAAIg0C,GAAMh0C,EAAI,CAAC,CAAC,EAAK,GAC9D,IAGSkE,CACT,CACA,MAAMqwC,GAAQ,CAAC7vC,EAAG8vC,IAAM9vC,EAAI,IAAM8vC,EAAE9vC,CAAC,EAAI,GACzC,SAAS+vC,GAAU/uC,EAAG,CACpB,IAAI8uC,EAAIH,GAAQ3uC,CAAC,EAAIwuC,GAAKC,GAC1B,OAAOzuC,EACH,IAAM8uC,EAAE9uC,EAAE,CAAC,EAAI8uC,EAAE9uC,EAAE,CAAC,EAAI8uC,EAAE9uC,EAAE,CAAC,EAAI6uC,GAAM7uC,EAAE,EAAG8uC,CAAC,EAC7C,MACN,CAEA,MAAME,GAAS,+GACf,SAASC,GAASr0B,EAAGzG,EAAG5T,EAAG,CACzB,MAAMvB,EAAImV,EAAI,KAAK,IAAI5T,EAAG,EAAIA,CAAC,EACzBuuC,EAAI,CAAClxC,EAAGsxC,GAAKtxC,EAAIgd,EAAI,IAAM,KAAOra,EAAIvB,EAAI,KAAK,IAAI,KAAK,IAAIkwC,EAAI,EAAG,EAAIA,EAAG,CAAC,EAAG,EAAE,EACtF,MAAO,CAACJ,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAC1B,CACA,SAASK,GAASv0B,EAAGzG,EAAGnU,EAAG,CACzB,MAAM8uC,EAAI,CAAClxC,EAAGsxC,GAAKtxC,EAAIgd,EAAI,IAAM,IAAM5a,EAAIA,EAAImU,EAAI,KAAK,IAAI,KAAK,IAAI+6B,EAAG,EAAIA,EAAG,CAAC,EAAG,CAAC,EACpF,MAAO,CAACJ,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,CAC1B,CACA,SAASM,GAASx0B,EAAG8nB,EAAGzjC,EAAG,CACzB,MAAMowC,EAAMJ,GAASr0B,EAAG,EAAG,EAAG,EAC9B,IAAI,EAMJ,IALI8nB,EAAIzjC,EAAI,IACV,EAAI,GAAKyjC,EAAIzjC,GACbyjC,GAAK,EACLzjC,GAAK,GAEF,EAAI,EAAG,EAAI,EAAG,IACjBowC,EAAI,CAAC,GAAK,EAAI3M,EAAIzjC,EAClBowC,EAAI,CAAC,GAAK3M,EAEZ,OAAO2M,CACT,CACA,SAASC,GAAStlC,EAAG+iB,EAAG9tB,EAAGswC,EAAGC,EAAK,CACjC,OAAIxlC,IAAMwlC,GACCziB,EAAI9tB,GAAKswC,GAAMxiB,EAAI9tB,EAAI,EAAI,GAElC8tB,IAAMyiB,GACAvwC,EAAI+K,GAAKulC,EAAI,GAEfvlC,EAAI+iB,GAAKwiB,EAAI,CACvB,CACA,SAASE,GAAQzvC,EAAG,CAElB,MAAM,EAAIA,EAAE,EAAI,IACV+sB,EAAI/sB,EAAE,EAAI,IACVf,EAAIe,EAAE,EAAI,IACVwvC,EAAM,KAAK,IAAI,EAAGziB,EAAG9tB,CAAC,EACtBinC,EAAM,KAAK,IAAI,EAAGnZ,EAAG9tB,CAAC,EACtBsB,GAAKivC,EAAMtJ,GAAO,EACxB,IAAItrB,EAAGzG,EAAGo7B,EACV,OAAIC,IAAQtJ,IACVqJ,EAAIC,EAAMtJ,EACV/xB,EAAI5T,EAAI,GAAMgvC,GAAK,EAAIC,EAAMtJ,GAAOqJ,GAAKC,EAAMtJ,GAC/CtrB,EAAI00B,GAAS,EAAGviB,EAAG9tB,EAAGswC,EAAGC,CAAG,EAC5B50B,EAAIA,EAAI,GAAK,IAER,CAACA,EAAI,EAAGzG,GAAK,EAAG5T,CAAC,CAC1B,CACA,SAASmvC,GAAMZ,EAAG9vC,EAAGC,EAAGnC,EAAG,CACzB,OACE,MAAM,QAAQkC,CAAC,EACX8vC,EAAE9vC,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAClB8vC,EAAE9vC,EAAGC,EAAGnC,CAAC,GACb,IAAIqxC,EAAG,CACX,CACA,SAASwB,GAAQ/0B,EAAGzG,EAAG5T,EAAG,CACxB,OAAOmvC,GAAMT,GAAUr0B,EAAGzG,EAAG5T,CAAC,CAChC,CACA,SAASqvC,GAAQh1B,EAAG8nB,EAAGzjC,EAAG,CACxB,OAAOywC,GAAMN,GAAUx0B,EAAG8nB,EAAGzjC,CAAC,CAChC,CACA,SAAS4wC,GAAQj1B,EAAGzG,EAAGnU,EAAG,CACxB,OAAO0vC,GAAMP,GAAUv0B,EAAGzG,EAAGnU,CAAC,CAChC,CACA,SAAS8vC,GAAIl1B,EAAG,CACd,OAAQA,EAAI,IAAM,KAAO,GAC3B,CACA,SAASm1B,GAASz1C,EAAK,CACrB,MAAM6gB,EAAI6zB,GAAO,KAAK10C,CAAG,EACzB,IAAI0E,EAAI,IACJgB,EACJ,GAAI,CAACmb,EACH,OAEEA,EAAE,CAAC,IAAMnb,IACXhB,EAAImc,EAAE,CAAC,EAAI+yB,GAAI,CAAC/yB,EAAE,CAAC,CAAC,EAAIgzB,GAAI,CAAChzB,EAAE,CAAC,CAAC,GAEnC,MAAMP,EAAIk1B,GAAI,CAAC30B,EAAE,CAAC,CAAC,EACbggB,EAAK,CAAChgB,EAAE,CAAC,EAAI,IACbigB,EAAK,CAACjgB,EAAE,CAAC,EAAI,IACnB,OAAIA,EAAE,CAAC,IAAM,MACXnb,EAAI4vC,GAAQh1B,EAAGugB,EAAIC,CAAE,EACZjgB,EAAE,CAAC,IAAM,MAClBnb,EAAI6vC,GAAQj1B,EAAGugB,EAAIC,CAAE,EAErBp7B,EAAI2vC,GAAQ/0B,EAAGugB,EAAIC,CAAE,EAEhB,CACL,EAAGp7B,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGhB,CACP,CACA,CACA,SAASgxC,GAAOhwC,EAAGiwC,EAAK,CACtB,IAAIr1B,EAAI60B,GAAQzvC,CAAC,EACjB4a,EAAE,CAAC,EAAIk1B,GAAIl1B,EAAE,CAAC,EAAIq1B,CAAG,EACrBr1B,EAAI+0B,GAAQ/0B,CAAC,EACb5a,EAAE,EAAI4a,EAAE,CAAC,EACT5a,EAAE,EAAI4a,EAAE,CAAC,EACT5a,EAAE,EAAI4a,EAAE,CAAC,CACX,CACA,SAASs1B,GAAUlwC,EAAG,CACpB,GAAI,CAACA,EACH,OAEF,MAAMhB,EAAIywC,GAAQzvC,CAAC,EACb4a,EAAI5b,EAAE,CAAC,EACPmV,EAAIk6B,GAAIrvC,EAAE,CAAC,CAAC,EACZuB,EAAI8tC,GAAIrvC,EAAE,CAAC,CAAC,EAClB,OAAOgB,EAAE,EAAI,IACT,QAAQ4a,CAAC,KAAKzG,CAAC,MAAM5T,CAAC,MAAM6tC,GAAIpuC,EAAE,CAAC,CAAC,IACpC,OAAO4a,CAAC,KAAKzG,CAAC,MAAM5T,CAAC,IAC3B,CAEA,MAAM4vC,GAAM,CACV,EAAG,OACH,EAAG,QACH,EAAG,KACH,EAAG,MACH,EAAG,KACH,EAAG,SACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,QACH,EAAG,KACH,EAAG,WACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,QACH,EAAG,KACH,EAAG,KACH,EAAG,OACH,EAAG,KACH,EAAG,QACH,EAAG,IACL,EACMC,GAAU,CACd,OAAQ,SACR,YAAa,SACb,KAAM,OACN,UAAW,SACX,KAAM,SACN,MAAO,SACP,OAAQ,SACR,MAAO,IACP,aAAc,SACd,GAAI,KACJ,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,SAAU,SACV,QAAS,SACT,IAAK,SACL,YAAa,SACb,QAAS,SACT,QAAS,SACT,KAAM,OACN,IAAK,KACL,MAAO,OACP,QAAS,SACT,KAAM,SACN,KAAM,OACN,KAAM,SACN,OAAQ,SACR,QAAS,SACT,SAAU,SACV,OAAQ,SACR,MAAO,SACP,IAAK,SACL,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,MAAO,SACP,MAAO,SACP,IAAK,OACL,OAAQ,SACR,OAAQ,SACR,SAAU,OACV,OAAQ,SACR,OAAQ,SACR,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,OAAQ,SACR,QAAS,SACT,UAAW,SACX,IAAK,SACL,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,IAAK,SACL,QAAS,SACT,OAAQ,SACR,QAAS,SACT,MAAO,SACP,KAAM,SACN,MAAO,SACP,OAAQ,SACR,UAAW,SACX,QAAS,SACT,WAAY,SACZ,IAAK,SACL,KAAM,SACN,MAAO,SACP,UAAW,SACX,KAAM,SACN,KAAM,SACN,KAAM,SACN,KAAM,SACN,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,MAAO,SACP,MAAO,SACP,QAAS,SACT,IAAK,SACL,KAAM,OACN,QAAS,SACT,IAAK,SACL,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,IAAK,KACL,MAAO,SACP,OAAQ,SACR,OAAQ,SACR,KAAM,SACN,UAAW,OACX,IAAK,SACL,SAAU,SACV,WAAY,SACZ,QAAS,SACT,SAAU,SACV,QAAS,SACT,WAAY,SACZ,KAAM,KACN,OAAQ,SACR,KAAM,SACN,QAAS,SACT,MAAO,SACP,QAAS,SACT,KAAM,SACN,UAAW,SACX,OAAQ,SACR,MAAO,SACP,WAAY,SACZ,UAAW,SACX,QAAS,SACT,KAAM,SACN,IAAK,SACL,KAAM,SACN,QAAS,SACT,MAAO,SACP,YAAa,SACb,GAAI,SACJ,SAAU,SACV,MAAO,SACP,UAAW,SACX,MAAO,SACP,UAAW,SACX,MAAO,SACP,QAAS,SACT,MAAO,SACP,OAAQ,SACR,MAAO,SACP,IAAK,SACL,KAAM,SACN,KAAM,SACN,KAAM,SACN,SAAU,OACV,OAAQ,SACR,IAAK,SACL,IAAK,OACL,MAAO,SACP,OAAQ,SACR,GAAI,SACJ,MAAO,SACP,IAAK,SACL,KAAM,SACN,UAAW,SACX,GAAI,SACJ,MAAO,QACT,EACA,SAASC,IAAS,CAChB,MAAMC,EAAW,CAAA,EACXh/B,EAAO,OAAO,KAAK8+B,EAAO,EAC1BG,EAAQ,OAAO,KAAKJ,EAAG,EAC7B,IAAI90C,EAAG4sB,EAAGinB,EAAGsB,EAAIC,EACjB,IAAKp1C,EAAI,EAAGA,EAAIiW,EAAK,OAAQjW,IAAK,CAEhC,IADAm1C,EAAKC,EAAKn/B,EAAKjW,CAAC,EACX4sB,EAAI,EAAGA,EAAIsoB,EAAM,OAAQtoB,IAC5BinB,EAAIqB,EAAMtoB,CAAC,EACXwoB,EAAKA,EAAG,QAAQvB,EAAGiB,GAAIjB,CAAC,CAAC,EAE3BA,EAAI,SAASkB,GAAQI,CAAE,EAAG,EAAE,EAC5BF,EAASG,CAAE,EAAI,CAACvB,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAMA,EAAI,GAAI,CACxD,CACD,OAAOoB,CACT,CAEA,IAAII,GACJ,SAASC,GAAUr2C,EAAK,CACjBo2C,KACHA,GAAQL,GAAM,EACdK,GAAM,YAAc,CAAC,EAAG,EAAG,EAAG,CAAC,GAEjC,MAAM1xC,EAAI0xC,GAAMp2C,EAAI,YAAa,CAAA,EACjC,OAAO0E,GAAK,CACV,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,CAAC,EACN,EAAGA,EAAE,SAAW,EAAIA,EAAE,CAAC,EAAI,GAC/B,CACA,CAEA,MAAM4xC,GAAS,uGACf,SAASC,GAASv2C,EAAK,CACrB,MAAM6gB,EAAIy1B,GAAO,KAAKt2C,CAAG,EACzB,IAAI0E,EAAI,IACJgL,EAAG+iB,EAAG9tB,EACV,GAAKkc,EAGL,IAAIA,EAAE,CAAC,IAAMnR,EAAG,CACd,MAAMhK,EAAI,CAACmb,EAAE,CAAC,EACdnc,EAAImc,EAAE,CAAC,EAAI+yB,GAAIluC,CAAC,EAAIiuC,GAAIjuC,EAAI,IAAK,EAAG,GAAG,CACxC,CACD,OAAAgK,EAAI,CAACmR,EAAE,CAAC,EACR4R,EAAI,CAAC5R,EAAE,CAAC,EACRlc,EAAI,CAACkc,EAAE,CAAC,EACRnR,EAAI,KAAOmR,EAAE,CAAC,EAAI+yB,GAAIlkC,CAAC,EAAIikC,GAAIjkC,EAAG,EAAG,GAAG,GACxC+iB,EAAI,KAAO5R,EAAE,CAAC,EAAI+yB,GAAInhB,CAAC,EAAIkhB,GAAIlhB,EAAG,EAAG,GAAG,GACxC9tB,EAAI,KAAOkc,EAAE,CAAC,EAAI+yB,GAAIjvC,CAAC,EAAIgvC,GAAIhvC,EAAG,EAAG,GAAG,GACjC,CACL,EAAG+K,EACH,EAAG+iB,EACH,EAAG9tB,EACH,EAAGD,CACP,EACA,CACA,SAAS8xC,GAAU9wC,EAAG,CACpB,OAAOA,IACLA,EAAE,EAAI,IACF,QAAQA,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAKouC,GAAIpuC,EAAE,CAAC,CAAC,IACxC,OAAOA,EAAE,CAAC,KAAKA,EAAE,CAAC,KAAKA,EAAE,CAAC,IAElC,CAEA,MAAMqb,GAAKrb,GAAKA,GAAK,SAAYA,EAAI,MAAQ,KAAK,IAAIA,EAAG,EAAM,GAAG,EAAI,MAAQ,KACxEsb,GAAOtb,GAAKA,GAAK,OAAUA,EAAI,MAAQ,KAAK,KAAKA,EAAI,MAAS,MAAO,GAAG,EAC9E,SAAS+wC,GAAYC,EAAMC,EAAMxxB,EAAG,CAClC,MAAMzV,EAAIsR,GAAK8yB,GAAI4C,EAAK,CAAC,CAAC,EACpBjkB,EAAIzR,GAAK8yB,GAAI4C,EAAK,CAAC,CAAC,EACpB/xC,EAAIqc,GAAK8yB,GAAI4C,EAAK,CAAC,CAAC,EAC1B,MAAO,CACL,EAAG7C,GAAI9yB,GAAGrR,EAAIyV,GAAKnE,GAAK8yB,GAAI6C,EAAK,CAAC,CAAC,EAAIjnC,EAAE,CAAC,EAC1C,EAAGmkC,GAAI9yB,GAAG0R,EAAItN,GAAKnE,GAAK8yB,GAAI6C,EAAK,CAAC,CAAC,EAAIlkB,EAAE,CAAC,EAC1C,EAAGohB,GAAI9yB,GAAGpc,EAAIwgB,GAAKnE,GAAK8yB,GAAI6C,EAAK,CAAC,CAAC,EAAIhyC,EAAE,CAAC,EAC1C,EAAG+xC,EAAK,EAAIvxB,GAAKwxB,EAAK,EAAID,EAAK,EACnC,CACA,CAEA,SAASE,GAAOlxC,EAAG3E,EAAG81C,EAAO,CAC3B,GAAInxC,EAAG,CACL,IAAIvB,EAAMgxC,GAAQzvC,CAAC,EACnBvB,EAAIpD,CAAC,EAAI,KAAK,IAAI,EAAG,KAAK,IAAIoD,EAAIpD,CAAC,EAAIoD,EAAIpD,CAAC,EAAI81C,EAAO91C,IAAM,EAAI,IAAM,CAAC,CAAC,EACzEoD,EAAMkxC,GAAQlxC,CAAG,EACjBuB,EAAE,EAAIvB,EAAI,CAAC,EACXuB,EAAE,EAAIvB,EAAI,CAAC,EACXuB,EAAE,EAAIvB,EAAI,CAAC,CACZ,CACH,CACA,SAAS2yC,GAAMpxC,EAAGqxC,EAAO,CACvB,OAAOrxC,GAAI,OAAO,OAAOqxC,GAAS,GAAIrxC,CAAC,CACzC,CACA,SAASsxC,GAAW1E,EAAO,CACzB,IAAI5sC,EAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG,EACjC,OAAI,MAAM,QAAQ4sC,CAAK,EACjBA,EAAM,QAAU,IAClB5sC,EAAI,CAAC,EAAG4sC,EAAM,CAAC,EAAG,EAAGA,EAAM,CAAC,EAAG,EAAGA,EAAM,CAAC,EAAG,EAAG,GAAG,EAC9CA,EAAM,OAAS,IACjB5sC,EAAE,EAAImuC,GAAIvB,EAAM,CAAC,CAAC,KAItB5sC,EAAIoxC,GAAMxE,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,CAAC,EACzC5sC,EAAE,EAAImuC,GAAInuC,EAAE,CAAC,GAERA,CACT,CACA,SAASuxC,GAAcj3C,EAAK,CAC1B,OAAIA,EAAI,OAAO,CAAC,IAAM,IACbu2C,GAASv2C,CAAG,EAEdy1C,GAASz1C,CAAG,CACrB,CACA,MAAMk3C,EAAM,CACV,YAAY5E,EAAO,CACjB,GAAIA,aAAiB4E,GACnB,OAAO5E,EAET,MAAM1pC,EAAO,OAAO0pC,EACpB,IAAI5sC,EACAkD,IAAS,SACXlD,EAAIsxC,GAAW1E,CAAK,EACX1pC,IAAS,WAClBlD,EAAI4uC,GAAShC,CAAK,GAAK+D,GAAU/D,CAAK,GAAK2E,GAAc3E,CAAK,GAEhE,KAAK,KAAO5sC,EACZ,KAAK,OAAS,CAAC,CAACA,CACjB,CACD,IAAI,OAAQ,CACV,OAAO,KAAK,MACb,CACD,IAAI,KAAM,CACR,IAAIA,EAAIoxC,GAAM,KAAK,IAAI,EACvB,OAAIpxC,IACFA,EAAE,EAAIouC,GAAIpuC,EAAE,CAAC,GAERA,CACR,CACD,IAAI,IAAIvC,EAAK,CACX,KAAK,KAAO6zC,GAAW7zC,CAAG,CAC3B,CACD,WAAY,CACV,OAAO,KAAK,OAASqzC,GAAU,KAAK,IAAI,EAAI,MAC7C,CACD,WAAY,CACV,OAAO,KAAK,OAAS/B,GAAU,KAAK,IAAI,EAAI,MAC7C,CACD,WAAY,CACV,OAAO,KAAK,OAASmB,GAAU,KAAK,IAAI,EAAI,MAC7C,CACD,IAAIuB,EAAOC,EAAQ,CACjB,GAAID,EAAO,CACT,MAAMxqB,EAAK,KAAK,IACVE,EAAKsqB,EAAM,IACjB,IAAIE,EACJ,MAAMjlC,EAAIglC,IAAWC,EAAK,GAAMD,EAC1BhP,EAAI,EAAIh2B,EAAI,EACZ1N,EAAIioB,EAAG,EAAIE,EAAG,EACdyqB,IAAOlP,EAAI1jC,IAAM,GAAK0jC,GAAKA,EAAI1jC,IAAM,EAAI0jC,EAAI1jC,IAAM,GAAK,EAC9D2yC,EAAK,EAAIC,EACT3qB,EAAG,EAAI,IAAO2qB,EAAK3qB,EAAG,EAAI0qB,EAAKxqB,EAAG,EAAI,GACtCF,EAAG,EAAI,IAAO2qB,EAAK3qB,EAAG,EAAI0qB,EAAKxqB,EAAG,EAAI,GACtCF,EAAG,EAAI,IAAO2qB,EAAK3qB,EAAG,EAAI0qB,EAAKxqB,EAAG,EAAI,GACtCF,EAAG,EAAIva,EAAIua,EAAG,GAAK,EAAIva,GAAKya,EAAG,EAC/B,KAAK,IAAMF,CACZ,CACD,OAAO,IACR,CACD,YAAYwqB,EAAOhyB,EAAG,CACpB,OAAIgyB,IACF,KAAK,KAAOV,GAAY,KAAK,KAAMU,EAAM,KAAMhyB,CAAC,GAE3C,IACR,CACD,OAAQ,CACN,OAAO,IAAI+xB,GAAM,KAAK,GAAG,CAC1B,CACD,MAAMxyC,EAAG,CACP,YAAK,KAAK,EAAImvC,GAAInvC,CAAC,EACZ,IACR,CACD,QAAQmyC,EAAO,CACb,MAAM9B,EAAM,KAAK,KACjB,OAAAA,EAAI,GAAK,EAAI8B,EACN,IACR,CACD,WAAY,CACV,MAAM9B,EAAM,KAAK,KACX50C,EAAMuzC,GAAMqB,EAAI,EAAI,GAAMA,EAAI,EAAI,IAAOA,EAAI,EAAI,GAAI,EAC3D,OAAAA,EAAI,EAAIA,EAAI,EAAIA,EAAI,EAAI50C,EACjB,IACR,CACD,QAAQ02C,EAAO,CACb,MAAM9B,EAAM,KAAK,KACjB,OAAAA,EAAI,GAAK,EAAI8B,EACN,IACR,CACD,QAAS,CACP,MAAMnxC,EAAI,KAAK,KACf,OAAAA,EAAE,EAAI,IAAMA,EAAE,EACdA,EAAE,EAAI,IAAMA,EAAE,EACdA,EAAE,EAAI,IAAMA,EAAE,EACP,IACR,CACD,QAAQmxC,EAAO,CACb,OAAAD,GAAO,KAAK,KAAM,EAAGC,CAAK,EACnB,IACR,CACD,OAAOA,EAAO,CACZ,OAAAD,GAAO,KAAK,KAAM,EAAG,CAACC,CAAK,EACpB,IACR,CACD,SAASA,EAAO,CACd,OAAAD,GAAO,KAAK,KAAM,EAAGC,CAAK,EACnB,IACR,CACD,WAAWA,EAAO,CAChB,OAAAD,GAAO,KAAK,KAAM,EAAG,CAACC,CAAK,EACpB,IACR,CACD,OAAOlB,EAAK,CACV,OAAAD,GAAO,KAAK,KAAMC,CAAG,EACd,IACR,CACH,CCtkBA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYI,SAAS/b,IAAO,CACR,CAGR,MAAMtH,IAAO,IAAI,CACjB,IAAIhgB,EAAK,EACT,MAAO,IAAIA,GACf,KAKI,SAASilC,GAAc11C,EAAO,CAC9B,OAAOA,IAAU,MAAQ,OAAOA,EAAU,GAC9C,CAKI,SAASX,GAAQW,EAAO,CACxB,GAAI,MAAM,SAAW,MAAM,QAAQA,CAAK,EACpC,MAAO,GAEX,MAAM+G,EAAO,OAAO,UAAU,SAAS,KAAK/G,CAAK,EACjD,OAAI+G,EAAK,MAAM,EAAG,CAAC,IAAM,WAAaA,EAAK,MAAM,EAAE,IAAM,QAI7D,CAKI,SAASlH,GAASG,EAAO,CACzB,OAAOA,IAAU,MAAQ,OAAO,UAAU,SAAS,KAAKA,CAAK,IAAM,iBACvE,CAII,SAAS21C,GAAe31C,EAAO,CAC/B,OAAQ,OAAOA,GAAU,UAAYA,aAAiB,SAAW,SAAS,CAACA,CAAK,CACpF,CAKI,SAAS41C,GAAgB51C,EAAO8O,EAAc,CAC9C,OAAO6mC,GAAe31C,CAAK,EAAIA,EAAQ8O,CAC3C,CAKI,SAAS+mC,GAAe71C,EAAO8O,EAAc,CAC7C,OAAO,OAAO9O,EAAU,IAAc8O,EAAe9O,CACzD,CAEA,MAAM81C,GAAc,CAAC91C,EAAO+1C,IAAY,OAAO/1C,GAAU,UAAYA,EAAM,SAAS,GAAG,EAAI,WAAWA,CAAK,EAAI,IAAM+1C,EAAY,CAAC/1C,EAO9H,SAASwK,GAASlK,EAAIuH,EAAM4C,EAAS,CACrC,GAAInK,GAAM,OAAOA,EAAG,MAAS,WACzB,OAAOA,EAAG,MAAMmK,EAAS5C,CAAI,CAErC,CACA,SAASmuC,GAAKC,EAAU31C,EAAImK,EAASyrC,EAAS,CAC1C,IAAI,EAAGtoB,EAAKzY,EACZ,GAAI9V,GAAQ42C,CAAQ,EAOZ,IANJroB,EAAMqoB,EAAS,OAMP,EAAI,EAAG,EAAIroB,EAAK,IAChBttB,EAAG,KAAKmK,EAASwrC,EAAS,CAAC,EAAG,CAAC,UAGhCp2C,GAASo2C,CAAQ,EAGxB,IAFA9gC,EAAO,OAAO,KAAK8gC,CAAQ,EAC3BroB,EAAMzY,EAAK,OACP,EAAI,EAAG,EAAIyY,EAAK,IAChBttB,EAAG,KAAKmK,EAASwrC,EAAS9gC,EAAK,CAAC,CAAC,EAAGA,EAAK,CAAC,CAAC,CAGvD,CAMI,SAASghC,GAAeC,EAAIC,EAAI,CAChC,IAAIn3C,EAAGo3C,EAAMC,EAAIC,EACjB,GAAI,CAACJ,GAAM,CAACC,GAAMD,EAAG,SAAWC,EAAG,OAC/B,MAAO,GAEX,IAAIn3C,EAAI,EAAGo3C,EAAOF,EAAG,OAAQl3C,EAAIo3C,EAAM,EAAEp3C,EAGrC,GAFAq3C,EAAKH,EAAGl3C,CAAC,EACTs3C,EAAKH,EAAGn3C,CAAC,EACLq3C,EAAG,eAAiBC,EAAG,cAAgBD,EAAG,QAAUC,EAAG,MACvD,MAAO,GAGf,MAAO,EACX,CAII,SAASvB,GAAMpmC,EAAQ,CACvB,GAAIxP,GAAQwP,CAAM,EACd,OAAOA,EAAO,IAAIomC,EAAK,EAE3B,GAAIp1C,GAASgP,CAAM,EAAG,CAClB,MAAM/H,EAAS,OAAO,OAAO,IAAI,EAC3BqO,EAAO,OAAO,KAAKtG,CAAM,EACzB4nC,EAAOthC,EAAK,OAClB,IAAI49B,EAAI,EACR,KAAMA,EAAI0D,EAAM,EAAE1D,EACdjsC,EAAOqO,EAAK49B,CAAC,CAAC,EAAIkC,GAAMpmC,EAAOsG,EAAK49B,CAAC,CAAC,CAAC,EAE3C,OAAOjsC,CACV,CACD,OAAO+H,CACX,CACA,SAAS6nC,GAAW93C,EAAK,CACrB,MAAO,CACH,YACA,YACA,aACH,EAAC,QAAQA,CAAG,IAAM,EACvB,CAKI,SAAS+3C,GAAQ/3C,EAAKkI,EAAQ+H,EAAQqE,EAAS,CAC/C,GAAI,CAACwjC,GAAW93C,CAAG,EACf,OAEJ,MAAMg4C,EAAO9vC,EAAOlI,CAAG,EACjBi4C,EAAOhoC,EAAOjQ,CAAG,EACnBiB,GAAS+2C,CAAI,GAAK/2C,GAASg3C,CAAI,EAE/B1Z,GAAMyZ,EAAMC,EAAM3jC,CAAO,EAEzBpM,EAAOlI,CAAG,EAAIq2C,GAAM4B,CAAI,CAEhC,CACA,SAAS1Z,GAAMr2B,EAAQ+H,EAAQqE,EAAS,CACpC,MAAM4jC,EAAUz3C,GAAQwP,CAAM,EAAIA,EAAS,CACvCA,CACR,EACUynC,EAAOQ,EAAQ,OACrB,GAAI,CAACj3C,GAASiH,CAAM,EAChB,OAAOA,EAEXoM,EAAUA,GAAW,GACrB,MAAM6jC,EAAS7jC,EAAQ,QAAUyjC,GACjC,IAAI78B,EACJ,QAAQ5a,EAAI,EAAGA,EAAIo3C,EAAM,EAAEp3C,EAAE,CAEzB,GADA4a,EAAUg9B,EAAQ53C,CAAC,EACf,CAACW,GAASia,CAAO,EACjB,SAEJ,MAAM3E,EAAO,OAAO,KAAK2E,CAAO,EAChC,QAAQi5B,EAAI,EAAG0D,EAAOthC,EAAK,OAAQ49B,EAAI0D,EAAM,EAAE1D,EAC3CgE,EAAO5hC,EAAK49B,CAAC,EAAGjsC,EAAQgT,EAAS5G,CAAO,CAE/C,CACD,OAAOpM,CACX,CACA,SAASkwC,GAAQlwC,EAAQ+H,EAAQ,CAE7B,OAAOsuB,GAAMr2B,EAAQ+H,EAAQ,CACzB,OAAQooC,EAChB,CAAK,CACL,CAII,SAASA,GAAUr4C,EAAKkI,EAAQ+H,EAAQ,CACxC,GAAI,CAAC6nC,GAAW93C,CAAG,EACf,OAEJ,MAAMg4C,EAAO9vC,EAAOlI,CAAG,EACjBi4C,EAAOhoC,EAAOjQ,CAAG,EACnBiB,GAAS+2C,CAAI,GAAK/2C,GAASg3C,CAAI,EAC/BG,GAAQJ,EAAMC,CAAI,EACV,OAAO,UAAU,eAAe,KAAK/vC,EAAQlI,CAAG,IACxDkI,EAAOlI,CAAG,EAAIq2C,GAAM4B,CAAI,EAEhC,CASA,MAAMK,GAAe,CAEjB,GAAKrzC,GAAIA,EAET,EAAI6zB,GAAIA,EAAE,EACV,EAAIA,GAAIA,EAAE,CACd,EAGI,SAASyf,GAAUv4C,EAAK,CACxB,MAAMw4C,EAAQx4C,EAAI,MAAM,GAAG,EACrBuW,EAAO,CAAA,EACb,IAAI7S,EAAM,GACV,UAAW+0C,KAAQD,EACf90C,GAAO+0C,EACH/0C,EAAI,SAAS,IAAI,EACjBA,EAAMA,EAAI,MAAM,EAAG,EAAE,EAAI,KAEzB6S,EAAK,KAAK7S,CAAG,EACbA,EAAM,IAGd,OAAO6S,CACX,CACA,SAASmiC,GAAgB14C,EAAK,CAC1B,MAAMuW,EAAOgiC,GAAUv4C,CAAG,EAC1B,OAAQ0C,GAAM,CACV,UAAWyxC,KAAK59B,EAAK,CACjB,GAAI49B,IAAM,GACN,MAEJzxC,EAAMA,GAAOA,EAAIyxC,CAAC,CACrB,CACD,OAAOzxC,CACf,CACA,CACA,SAASi2C,GAAiBj2C,EAAK1C,EAAK,CAEhC,OADiBs4C,GAAat4C,CAAG,IAAMs4C,GAAat4C,CAAG,EAAI04C,GAAgB14C,CAAG,IAC9D0C,CAAG,CACvB,CAGI,SAASk2C,GAAYr5C,EAAK,CAC1B,OAAOA,EAAI,OAAO,CAAC,EAAE,YAAW,EAAKA,EAAI,MAAM,CAAC,CACpD,CACA,MAAMs5C,GAAWz3C,GAAQ,OAAOA,EAAU,IACpCN,GAAcM,GAAQ,OAAOA,GAAU,WAEvC03C,GAAY,CAAC70C,EAAGC,IAAI,CACtB,GAAID,EAAE,OAASC,EAAE,KACb,MAAO,GAEX,UAAWhB,KAAQe,EACf,GAAI,CAACC,EAAE,IAAIhB,CAAI,EACX,MAAO,GAGf,MAAO,EACX,EAII,SAAS61C,GAAc,EAAG,CAC1B,OAAO,EAAE,OAAS,WAAa,EAAE,OAAS,SAAW,EAAE,OAAS,aACpE,CAKI,MAAMC,GAAK,KAAK,GACdC,GAAM,EAAID,GACVE,GAAQD,GAAMD,GACdG,GAAW,OAAO,kBAClBC,GAAcJ,GAAK,IACnBK,GAAUL,GAAK,EACfM,GAAaN,GAAK,EAClBO,GAAgBP,GAAK,EAAI,EACzBQ,GAAQ,KAAK,MACbC,GAAO,KAAK,KAClB,SAASC,GAAaC,EAAGC,EAAGC,EAAS,CACjC,OAAO,KAAK,IAAIF,EAAIC,CAAC,EAAIC,CAC7B,CAGI,SAASC,GAAQC,EAAO,CACxB,MAAMC,EAAe,KAAK,MAAMD,CAAK,EACrCA,EAAQL,GAAaK,EAAOC,EAAcD,EAAQ,GAAI,EAAIC,EAAeD,EACzE,MAAME,EAAY,KAAK,IAAI,GAAI,KAAK,MAAMT,GAAMO,CAAK,CAAC,CAAC,EACjDG,EAAWH,EAAQE,EAEzB,OADqBC,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,IAC3DD,CAC1B,CAII,SAASE,GAAW/4C,EAAO,CAC3B,MAAMkJ,EAAS,CAAA,EACT8vC,EAAO,KAAK,KAAKh5C,CAAK,EAC5B,IAAId,EACJ,IAAIA,EAAI,EAAGA,EAAI85C,EAAM95C,IACbc,EAAQd,IAAM,IACdgK,EAAO,KAAKhK,CAAC,EACbgK,EAAO,KAAKlJ,EAAQd,CAAC,GAG7B,OAAI85C,KAAUA,EAAO,IACjB9vC,EAAO,KAAK8vC,CAAI,EAEpB9vC,EAAO,KAAK,CAACrG,EAAGC,IAAID,EAAIC,CAAC,EAAE,MACpBoG,CACX,CACA,SAASmzB,GAAS56B,EAAG,CACjB,MAAO,CAAC,MAAM,WAAWA,CAAC,CAAC,GAAK,SAASA,CAAC,CAC9C,CACA,SAASw3C,GAAYV,EAAGE,EAAS,CAC7B,MAAMS,EAAU,KAAK,MAAMX,CAAC,EAC5B,OAAOW,EAAUT,GAAWF,GAAKW,EAAUT,GAAWF,CAC1D,CAGI,SAASY,GAAmBC,EAAOtyC,EAAQuyC,EAAU,CACrD,IAAIn6C,EAAGo3C,EAAMt2C,EACb,IAAId,EAAI,EAAGo3C,EAAO8C,EAAM,OAAQl6C,EAAIo3C,EAAMp3C,IACtCc,EAAQo5C,EAAMl6C,CAAC,EAAEm6C,CAAQ,EACpB,MAAMr5C,CAAK,IACZ8G,EAAO,IAAM,KAAK,IAAIA,EAAO,IAAK9G,CAAK,EACvC8G,EAAO,IAAM,KAAK,IAAIA,EAAO,IAAK9G,CAAK,EAGnD,CACA,SAASs5C,GAAUC,EAAS,CACxB,OAAOA,GAAW3B,GAAK,IAC3B,CACA,SAAS4B,GAAUC,EAAS,CACxB,OAAOA,GAAW,IAAM7B,GAC5B,CAOI,SAAS8B,GAAenB,EAAG,CAC3B,GAAI,CAAC5C,GAAe4C,CAAC,EACjB,OAEJ,IAAIhnB,EAAI,EACJhhB,EAAI,EACR,KAAM,KAAK,MAAMgoC,EAAIhnB,CAAC,EAAIA,IAAMgnB,GAC5BhnB,GAAK,GACLhhB,IAEJ,OAAOA,CACX,CAEA,SAASopC,GAAkBC,EAAaC,EAAY,CAChD,MAAMC,EAAsBD,EAAW,EAAID,EAAY,EACjDG,EAAsBF,EAAW,EAAID,EAAY,EACjDI,EAA2B,KAAK,KAAKF,EAAsBA,EAAsBC,EAAsBA,CAAmB,EAChI,IAAIE,EAAQ,KAAK,MAAMF,EAAqBD,CAAmB,EAC/D,OAAIG,EAAQ,IAAOrC,KACfqC,GAASpC,IAEN,CACH,MAAAoC,EACA,SAAUD,CAClB,CACA,CACA,SAASE,GAAsBC,EAAKC,EAAK,CACrC,OAAO,KAAK,KAAK,KAAK,IAAIA,EAAI,EAAID,EAAI,EAAG,CAAC,EAAI,KAAK,IAAIC,EAAI,EAAID,EAAI,EAAG,CAAC,CAAC,CAC5E,CAII,SAASE,GAAWx3C,EAAGC,EAAG,CAC1B,OAAQD,EAAIC,EAAIg1C,IAASD,GAAMD,EACnC,CAII,SAAS0C,GAAgBz3C,EAAG,CAC5B,OAAQA,EAAIg1C,GAAMA,IAAOA,EAC7B,CAGI,SAAS0C,GAAcN,EAAOvpC,EAAOC,EAAK6pC,EAAuB,CACjE,MAAM33C,EAAIy3C,GAAgBL,CAAK,EACzB,EAAIK,GAAgB5pC,CAAK,EACzB6gB,EAAI+oB,GAAgB3pC,CAAG,EACvB8pC,EAAeH,GAAgB,EAAIz3C,CAAC,EACpC63C,EAAaJ,GAAgB/oB,EAAI1uB,CAAC,EAClC83C,EAAeL,GAAgBz3C,EAAI,CAAC,EACpC+3C,EAAaN,GAAgBz3C,EAAI0uB,CAAC,EACxC,OAAO1uB,IAAM,GAAKA,IAAM0uB,GAAKipB,GAAyB,IAAMjpB,GAAKkpB,EAAeC,GAAcC,EAAeC,CACjH,CAOI,SAASC,GAAY76C,EAAO+pC,EAAKsJ,EAAK,CACtC,OAAO,KAAK,IAAItJ,EAAK,KAAK,IAAIsJ,EAAKrzC,CAAK,CAAC,CAC7C,CAII,SAAS86C,GAAY96C,EAAO,CAC5B,OAAO66C,GAAY76C,EAAO,OAAQ,KAAK,CAC3C,CAOI,SAAS+6C,GAAW/6C,EAAO0Q,EAAOC,EAAK8nC,EAAU,KAAM,CACvD,OAAOz4C,GAAS,KAAK,IAAI0Q,EAAOC,CAAG,EAAI8nC,GAAWz4C,GAAS,KAAK,IAAI0Q,EAAOC,CAAG,EAAI8nC,CACtF,CAEA,SAASuC,GAAQC,EAAOj7C,EAAOk7C,EAAK,CAChCA,EAAMA,IAAS//B,GAAQ8/B,EAAM9/B,CAAK,EAAInb,GACtC,IAAIm7C,EAAKF,EAAM,OAAS,EACpBG,EAAK,EACLC,EACJ,KAAMF,EAAKC,EAAK,GACZC,EAAMD,EAAKD,GAAM,EACbD,EAAIG,CAAG,EACPD,EAAKC,EAELF,EAAKE,EAGb,MAAO,CACH,GAAAD,EACA,GAAAD,CACR,CACA,CAQI,MAAMG,GAAe,CAACL,EAAOr8C,EAAKoB,EAAOqE,IAAO22C,GAAQC,EAAOj7C,EAAOqE,EAAQ8W,GAAQ,CAClF,MAAMogC,EAAKN,EAAM9/B,CAAK,EAAEvc,CAAG,EAC3B,OAAO28C,EAAKv7C,GAASu7C,IAAOv7C,GAASi7C,EAAM9/B,EAAQ,CAAC,EAAEvc,CAAG,IAAMoB,CACvE,EAASmb,GAAQ8/B,EAAM9/B,CAAK,EAAEvc,CAAG,EAAIoB,CAAK,EAOhCw7C,GAAgB,CAACP,EAAOr8C,EAAKoB,IAAQg7C,GAAQC,EAAOj7C,EAAQmb,GAAQ8/B,EAAM9/B,CAAK,EAAEvc,CAAG,GAAKoB,CAAK,EAOpG,SAASy7C,GAAersC,EAAQ26B,EAAKsJ,EAAK,CAC1C,IAAI3iC,EAAQ,EACRC,EAAMvB,EAAO,OACjB,KAAMsB,EAAQC,GAAOvB,EAAOsB,CAAK,EAAIq5B,GACjCr5B,IAEJ,KAAMC,EAAMD,GAAStB,EAAOuB,EAAM,CAAC,EAAI0iC,GACnC1iC,IAEJ,OAAOD,EAAQ,GAAKC,EAAMvB,EAAO,OAASA,EAAO,MAAMsB,EAAOC,CAAG,EAAIvB,CACzE,CACA,MAAMssC,GAAc,CAChB,OACA,MACA,QACA,SACA,SACJ,EACA,SAASC,GAAkBvC,EAAOzO,EAAU,CACxC,GAAIyO,EAAM,SAAU,CAChBA,EAAM,SAAS,UAAU,KAAKzO,CAAQ,EACtC,MACH,CACD,OAAO,eAAeyO,EAAO,WAAY,CACrC,aAAc,GACd,WAAY,GACZ,MAAO,CACH,UAAW,CACPzO,CACH,CACJ,CACT,CAAK,EACD+Q,GAAY,QAAS98C,GAAM,CACvB,MAAMgM,EAAS,UAAY4sC,GAAY54C,CAAG,EACpC8f,EAAO06B,EAAMx6C,CAAG,EACtB,OAAO,eAAew6C,EAAOx6C,EAAK,CAC9B,aAAc,GACd,WAAY,GACZ,SAAUiJ,EAAM,CACZ,MAAMhG,EAAM6c,EAAK,MAAM,KAAM7W,CAAI,EACjC,OAAAuxC,EAAM,SAAS,UAAU,QAAS7xC,GAAS,CACnC,OAAOA,EAAOqD,CAAM,GAAM,YAC1BrD,EAAOqD,CAAM,EAAE,GAAG/C,CAAI,CAE9C,CAAiB,EACMhG,CACV,CACb,CAAS,CACT,CAAK,CACL,CACA,SAAS+5C,GAAoBxC,EAAOzO,EAAU,CAC1C,MAAMkR,EAAOzC,EAAM,SACnB,GAAI,CAACyC,EACD,OAEJ,MAAMC,EAAYD,EAAK,UACjB1gC,EAAQ2gC,EAAU,QAAQnR,CAAQ,EACpCxvB,IAAU,IACV2gC,EAAU,OAAO3gC,EAAO,CAAC,EAEzB,EAAA2gC,EAAU,OAAS,KAGvBJ,GAAY,QAAS98C,GAAM,CACvB,OAAOw6C,EAAMx6C,CAAG,CACxB,CAAK,EACD,OAAOw6C,EAAM,SACjB,CAGI,SAAS2C,GAAaC,EAAO,CAC7B,MAAM39C,EAAM,IAAI,IAAI29C,CAAK,EACzB,OAAI39C,EAAI,OAAS29C,EAAM,OACZA,EAEJ,MAAM,KAAK39C,CAAG,CACzB,CAOG,MAAM49C,GAAmB,UAAW,CACnC,OAAI,OAAO,OAAW,IACX,SAASzxC,EAAU,CACtB,OAAOA,EAAQ,CAC3B,EAEW,OAAO,qBAClB,IAII,SAAS0xC,GAAU57C,EAAImK,EAAS,CAChC,IAAI0xC,EAAY,CAAA,EACZC,EAAU,GACd,OAAO,YAAYv0C,EAAM,CAErBs0C,EAAYt0C,EACPu0C,IACDA,EAAU,GACVH,GAAiB,KAAK,OAAQ,IAAI,CAC9BG,EAAU,GACV97C,EAAG,MAAMmK,EAAS0xC,CAAS,CAC3C,CAAa,EAEb,CACA,CAGI,SAASE,GAAS/7C,EAAIg8C,EAAO,CAC7B,IAAIC,EACJ,OAAO,YAAY10C,EAAM,CACrB,OAAIy0C,GACA,aAAaC,CAAO,EACpBA,EAAU,WAAWj8C,EAAIg8C,EAAOz0C,CAAI,GAEpCvH,EAAG,MAAM,KAAMuH,CAAI,EAEhBy0C,CACf,CACA,CAII,MAAME,GAAsBC,GAAQA,IAAU,QAAU,OAASA,IAAU,MAAQ,QAAU,SAIvFC,GAAiB,CAACD,EAAO/rC,EAAOC,IAAM8rC,IAAU,QAAU/rC,EAAQ+rC,IAAU,MAAQ9rC,GAAOD,EAAQC,GAAO,EAWhH,SAASgsC,GAAiCC,EAAMC,EAAQC,EAAoB,CAC5E,MAAMC,EAAaF,EAAO,OAC1B,IAAInsC,EAAQ,EACRssC,EAAQD,EACZ,GAAIH,EAAK,QAAS,CACd,KAAM,CAAE,OAAAK,EAAS,QAAAC,CAAU,EAAGN,EACxBO,EAAOF,EAAO,KACd,CAAE,IAAAlT,EAAM,IAAAsJ,EAAM,WAAA+J,EAAa,WAAAC,GAAgBJ,EAAO,gBACpDG,IACA1sC,EAAQmqC,GAAY,KAAK,IACzBS,GAAa4B,EAASC,EAAMpT,CAAG,EAAE,GACjC+S,EAAqBC,EAAazB,GAAauB,EAAQM,EAAMF,EAAO,iBAAiBlT,CAAG,CAAC,EAAE,EAAE,EAAG,EAAGgT,EAAa,CAAC,GAEjHM,EACAL,EAAQnC,GAAY,KAAK,IACzBS,GAAa4B,EAASD,EAAO,KAAM5J,EAAK,EAAI,EAAE,GAAK,EACnDyJ,EAAqB,EAAIxB,GAAauB,EAAQM,EAAMF,EAAO,iBAAiB5J,CAAG,EAAG,EAAI,EAAE,GAAK,CAAC,EAAG3iC,EAAOqsC,CAAU,EAAIrsC,EAEtHssC,EAAQD,EAAarsC,CAE5B,CACD,MAAO,CACH,MAAAA,EACA,MAAAssC,CACR,CACA,CAMI,SAASM,GAAoBV,EAAM,CACnC,KAAM,CAAE,OAAAW,EAAS,OAAAC,EAAS,aAAAC,CAAY,EAAMb,EACtCc,EAAY,CACd,KAAMH,EAAO,IACb,KAAMA,EAAO,IACb,KAAMC,EAAO,IACb,KAAMA,EAAO,GACrB,EACI,GAAI,CAACC,EACD,OAAAb,EAAK,aAAec,EACb,GAEX,MAAMC,EAAUF,EAAa,OAASF,EAAO,KAAOE,EAAa,OAASF,EAAO,KAAOE,EAAa,OAASD,EAAO,KAAOC,EAAa,OAASD,EAAO,IACzJ,cAAO,OAAOC,EAAcC,CAAS,EAC9BC,CACX,CAEA,MAAMC,GAAUt6B,GAAIA,IAAM,GAAKA,IAAM,EAC/Bu6B,GAAY,CAACv6B,EAAGtL,EAAGzH,IAAI,EAAE,KAAK,IAAI,EAAG,IAAM+S,GAAK,EAAE,EAAI,KAAK,KAAKA,EAAItL,GAAK6/B,GAAMtnC,CAAC,GAChFutC,GAAa,CAACx6B,EAAGtL,EAAGzH,IAAI,KAAK,IAAI,EAAG,IAAM+S,CAAC,EAAI,KAAK,KAAKA,EAAItL,GAAK6/B,GAAMtnC,CAAC,EAAI,EAKzEwtC,GAAU,CAChB,OAASz6B,GAAIA,EACb,WAAaA,GAAIA,EAAIA,EACrB,YAAcA,GAAI,CAACA,GAAKA,EAAI,GAC5B,cAAgBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAI,KAAQ,EAAEA,GAAKA,EAAI,GAAK,GAC3E,YAAcA,GAAIA,EAAIA,EAAIA,EAC1B,aAAeA,IAAKA,GAAK,GAAKA,EAAIA,EAAI,EACtC,eAAiBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAI,KAAQA,GAAK,GAAKA,EAAIA,EAAI,GAClF,YAAcA,GAAIA,EAAIA,EAAIA,EAAIA,EAC9B,aAAeA,GAAI,GAAGA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC5C,eAAiBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAIA,EAAI,MAASA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC3F,YAAcA,GAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAClC,aAAeA,IAAKA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAC9C,eAAiBA,IAAKA,GAAK,IAAO,EAAI,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAClG,WAAaA,GAAI,CAAC,KAAK,IAAIA,EAAI20B,EAAO,EAAI,EAC1C,YAAc30B,GAAI,KAAK,IAAIA,EAAI20B,EAAO,EACtC,cAAgB30B,GAAI,KAAQ,KAAK,IAAIs0B,GAAKt0B,CAAC,EAAI,GAC/C,WAAaA,GAAIA,IAAM,EAAI,EAAI,KAAK,IAAI,EAAG,IAAMA,EAAI,EAAE,EACvD,YAAcA,GAAIA,IAAM,EAAI,EAAI,CAAC,KAAK,IAAI,EAAG,IAAMA,CAAC,EAAI,EACxD,cAAgBA,GAAIs6B,GAAOt6B,CAAC,EAAIA,EAAIA,EAAI,GAAM,GAAM,KAAK,IAAI,EAAG,IAAMA,EAAI,EAAI,EAAE,EAAI,IAAO,CAAC,KAAK,IAAI,EAAG,KAAOA,EAAI,EAAI,EAAE,EAAI,GAC7H,WAAaA,GAAIA,GAAK,EAAIA,EAAI,EAAE,KAAK,KAAK,EAAIA,EAAIA,CAAC,EAAI,GACvD,YAAcA,GAAI,KAAK,KAAK,GAAKA,GAAK,GAAKA,CAAC,EAC5C,cAAgBA,IAAKA,GAAK,IAAO,EAAI,KAAQ,KAAK,KAAK,EAAIA,EAAIA,CAAC,EAAI,GAAK,IAAO,KAAK,KAAK,GAAKA,GAAK,GAAKA,CAAC,EAAI,GAC9G,cAAgBA,GAAIs6B,GAAOt6B,CAAC,EAAIA,EAAIu6B,GAAUv6B,EAAG,KAAO,EAAG,EAC3D,eAAiBA,GAAIs6B,GAAOt6B,CAAC,EAAIA,EAAIw6B,GAAWx6B,EAAG,KAAO,EAAG,EAC7D,iBAAkBA,EAAG,CAGjB,OAAOs6B,GAAOt6B,CAAC,EAAIA,EAAIA,EAAI,GAAM,GAAMu6B,GAAUv6B,EAAI,EAAG,MAAG,GAAC,EAAI,GAAM,GAAMw6B,GAAWx6B,EAAI,EAAI,EAAG,MAAG,GAAC,CACzG,EACD,WAAYA,EAAG,CAEX,OAAOA,EAAIA,IAAM,QAAI,GAAKA,EAAI,QACjC,EACD,YAAaA,EAAG,CAEZ,OAAQA,GAAK,GAAKA,IAAM,QAAI,GAAKA,EAAI,SAAK,CAC7C,EACD,cAAeA,EAAG,CACd,IAAItL,EAAI,QACR,OAAKsL,GAAK,IAAO,EACN,IAAOA,EAAIA,KAAOtL,GAAK,OAAS,GAAKsL,EAAItL,IAE7C,KAAQsL,GAAK,GAAKA,KAAOtL,GAAK,OAAS,GAAKsL,EAAItL,GAAK,EAC/D,EACD,aAAesL,GAAI,EAAIy6B,GAAQ,cAAc,EAAIz6B,CAAC,EAClD,cAAeA,EAAG,CAGd,OAAIA,EAAI,EAAI,KACD,OAAIA,EAAIA,EAEfA,EAAI,EAAI,KACD,QAAKA,GAAK,IAAM,MAAKA,EAAI,IAEhCA,EAAI,IAAM,KACH,QAAKA,GAAK,KAAO,MAAKA,EAAI,MAE9B,QAAKA,GAAK,MAAQ,MAAKA,EAAI,OACrC,EACD,gBAAkBA,GAAIA,EAAI,GAAMy6B,GAAQ,aAAaz6B,EAAI,CAAC,EAAI,GAAMy6B,GAAQ,cAAcz6B,EAAI,EAAI,CAAC,EAAI,GAAM,EACjH,EAEA,SAAS06B,GAAoBh+C,EAAO,CAChC,GAAIA,GAAS,OAAOA,GAAU,SAAU,CACpC,MAAM+G,EAAO/G,EAAM,WACnB,OAAO+G,IAAS,0BAA4BA,IAAS,yBACxD,CACD,MAAO,EACX,CACA,SAASuuC,GAAMt1C,EAAO,CAClB,OAAOg+C,GAAoBh+C,CAAK,EAAIA,EAAQ,IAAIq1C,GAAMr1C,CAAK,CAC/D,CACA,SAASi+C,GAAcj+C,EAAO,CAC1B,OAAOg+C,GAAoBh+C,CAAK,EAAIA,EAAQ,IAAIq1C,GAAMr1C,CAAK,EAAE,SAAS,EAAG,EAAE,OAAO,EAAG,EAAE,UAAS,CACpG,CAEA,MAAMk+C,GAAU,CACZ,IACA,IACA,cACA,SACA,SACJ,EACMC,GAAS,CACX,QACA,cACA,iBACJ,EACA,SAASC,GAAwBxZ,EAAU,CACvCA,EAAS,IAAI,YAAa,CACtB,MAAO,OACP,SAAU,IACV,OAAQ,eACR,GAAI,OACJ,KAAM,OACN,KAAM,OACN,GAAI,OACJ,KAAM,MACd,CAAK,EACDA,EAAS,SAAS,YAAa,CAC3B,UAAW,GACX,WAAY,GACZ,YAAcpiC,GAAOA,IAAS,cAAgBA,IAAS,cAAgBA,IAAS,IACxF,CAAK,EACDoiC,EAAS,IAAI,aAAc,CACvB,OAAQ,CACJ,KAAM,QACN,WAAYuZ,EACf,EACD,QAAS,CACL,KAAM,SACN,WAAYD,EACf,CACT,CAAK,EACDtZ,EAAS,SAAS,aAAc,CAC5B,UAAW,WACnB,CAAK,EACDA,EAAS,IAAI,cAAe,CACxB,OAAQ,CACJ,UAAW,CACP,SAAU,GACb,CACJ,EACD,OAAQ,CACJ,UAAW,CACP,SAAU,CACb,CACJ,EACD,KAAM,CACF,WAAY,CACR,OAAQ,CACJ,KAAM,aACT,EACD,QAAS,CACL,KAAM,UACN,SAAU,CACb,CACJ,CACJ,EACD,KAAM,CACF,WAAY,CACR,OAAQ,CACJ,GAAI,aACP,EACD,QAAS,CACL,KAAM,UACN,OAAQ,SACR,GAAK/gC,GAAIA,EAAI,CAChB,CACJ,CACJ,CACT,CAAK,CACL,CAEA,SAASw6C,GAAqBzZ,EAAU,CACpCA,EAAS,IAAI,SAAU,CACnB,YAAa,GACb,QAAS,CACL,IAAK,EACL,MAAO,EACP,OAAQ,EACR,KAAM,CACT,CACT,CAAK,CACL,CAEA,MAAM0Z,GAAY,IAAI,IACtB,SAASC,GAAgBC,EAAQtrC,EAAS,CACtCA,EAAUA,GAAW,GACrB,MAAMyjB,EAAW6nB,EAAS,KAAK,UAAUtrC,CAAO,EAChD,IAAIurC,EAAYH,GAAU,IAAI3nB,CAAQ,EACtC,OAAK8nB,IACDA,EAAY,IAAI,KAAK,aAAaD,EAAQtrC,CAAO,EACjDorC,GAAU,IAAI3nB,EAAU8nB,CAAS,GAE9BA,CACX,CACA,SAASC,GAAapN,EAAKkN,EAAQtrC,EAAS,CACxC,OAAOqrC,GAAgBC,EAAQtrC,CAAO,EAAE,OAAOo+B,CAAG,CACtD,CAEA,MAAMqN,GAAa,CAClB,OAAQ3+C,EAAO,CACR,OAAOX,GAAQW,CAAK,EAAKA,EAAQ,GAAKA,CACzC,EACJ,QAAS4+C,EAAWzjC,EAAO0jC,EAAO,CAC3B,GAAID,IAAc,EACd,MAAO,IAEX,MAAMJ,EAAS,KAAK,MAAM,QAAQ,OAClC,IAAIM,EACAC,EAAQH,EACZ,GAAIC,EAAM,OAAS,EAAG,CAClB,MAAMG,EAAU,KAAK,IAAI,KAAK,IAAIH,EAAM,CAAC,EAAE,KAAK,EAAG,KAAK,IAAIA,EAAMA,EAAM,OAAS,CAAC,EAAE,KAAK,CAAC,GACtFG,EAAU,MAAQA,EAAU,QAC5BF,EAAW,cAEfC,EAAQE,GAAeL,EAAWC,CAAK,CAC1C,CACD,MAAMK,EAAW9G,GAAM,KAAK,IAAI2G,CAAK,CAAC,EAChCI,EAAa,MAAMD,CAAQ,EAAI,EAAI,KAAK,IAAI,KAAK,IAAI,GAAK,KAAK,MAAMA,CAAQ,EAAG,EAAE,EAAG,CAAC,EACtFhsC,EAAU,CACZ,SAAA4rC,EACA,sBAAuBK,EACvB,sBAAuBA,CACnC,EACQ,cAAO,OAAOjsC,EAAS,KAAK,QAAQ,MAAM,MAAM,EACzCwrC,GAAaE,EAAWJ,EAAQtrC,CAAO,CACjD,EACJ,YAAa0rC,EAAWzjC,EAAO0jC,EAAO,CAC/B,GAAID,IAAc,EACd,MAAO,IAEX,MAAMQ,EAASP,EAAM1jC,CAAK,EAAE,aAAeyjC,EAAY,KAAK,IAAI,GAAI,KAAK,MAAMxG,GAAMwG,CAAS,CAAC,CAAC,EAChG,MAAI,CACA,EACA,EACA,EACA,EACA,GACA,EACZ,EAAU,SAASQ,CAAM,GAAKjkC,EAAQ,GAAM0jC,EAAM,OAC/BF,GAAW,QAAQ,KAAK,KAAMC,EAAWzjC,EAAO0jC,CAAK,EAEzD,EACV,CACL,EACA,SAASI,GAAeL,EAAWC,EAAO,CACtC,IAAIE,EAAQF,EAAM,OAAS,EAAIA,EAAM,CAAC,EAAE,MAAQA,EAAM,CAAC,EAAE,MAAQA,EAAM,CAAC,EAAE,MAAQA,EAAM,CAAC,EAAE,MAC3F,OAAI,KAAK,IAAIE,CAAK,GAAK,GAAKH,IAAc,KAAK,MAAMA,CAAS,IAC1DG,EAAQH,EAAY,KAAK,MAAMA,CAAS,GAErCG,CACX,CACC,IAAIM,GAAQ,CACT,WAAAV,EACJ,EAEA,SAASW,GAAmB1a,EAAU,CAClCA,EAAS,IAAI,QAAS,CAClB,QAAS,GACT,OAAQ,GACR,QAAS,GACT,YAAa,GACpB,OAAQ,QACD,KAAM,GACb,MAAO,EACA,KAAM,CACF,QAAS,GACT,UAAW,EACX,gBAAiB,GACjB,UAAW,GACX,WAAY,EACZ,UAAW,CAAC2a,EAAMrsC,IAAUA,EAAQ,UACpC,UAAW,CAACqsC,EAAMrsC,IAAUA,EAAQ,MACpC,OAAQ,EACX,EACD,OAAQ,CACJ,QAAS,GACT,KAAM,CAAE,EACR,WAAY,EACZ,MAAO,CACV,EACD,MAAO,CACH,QAAS,GACT,KAAM,GACN,QAAS,CACL,IAAK,EACL,OAAQ,CACX,CACJ,EACD,MAAO,CACH,YAAa,EACb,YAAa,GACb,OAAQ,GACR,gBAAiB,EACjB,gBAAiB,GACjB,QAAS,EACT,QAAS,GACT,SAAU,GACV,gBAAiB,EACjB,YAAa,EACb,SAAUmsC,GAAM,WAAW,OAC3B,MAAO,CAAE,EACT,MAAO,CAAE,EACT,MAAO,SACP,WAAY,OACZ,kBAAmB,GACnB,cAAe,4BACf,gBAAiB,CACpB,CACT,CAAK,EACDza,EAAS,MAAM,cAAe,QAAS,GAAI,OAAO,EAClDA,EAAS,MAAM,aAAc,QAAS,GAAI,aAAa,EACvDA,EAAS,MAAM,eAAgB,QAAS,GAAI,aAAa,EACzDA,EAAS,MAAM,cAAe,QAAS,GAAI,OAAO,EAClDA,EAAS,SAAS,QAAS,CACvB,UAAW,GACX,YAAcpiC,GAAO,CAACA,EAAK,WAAW,QAAQ,GAAK,CAACA,EAAK,WAAW,OAAO,GAAKA,IAAS,YAAcA,IAAS,SAChH,WAAaA,GAAOA,IAAS,cAAgBA,IAAS,kBAAoBA,IAAS,MAC3F,CAAK,EACDoiC,EAAS,SAAS,SAAU,CACxB,UAAW,OACnB,CAAK,EACDA,EAAS,SAAS,cAAe,CAC7B,YAAcpiC,GAAOA,IAAS,mBAAqBA,IAAS,WAC5D,WAAaA,GAAOA,IAAS,iBACrC,CAAK,CACL,CAEA,MAAMg9C,GAAY,OAAO,OAAO,IAAI,EAC9B7hB,GAAc,OAAO,OAAO,IAAI,EACrC,SAAS8hB,GAAW/sB,EAAM9zB,EAAK,CAC5B,GAAI,CAACA,EACD,OAAO8zB,EAEX,MAAMvd,EAAOvW,EAAI,MAAM,GAAG,EAC1B,QAAQM,EAAI,EAAGuC,EAAI0T,EAAK,OAAQjW,EAAIuC,EAAG,EAAEvC,EAAE,CACvC,MAAM6zC,EAAI59B,EAAKjW,CAAC,EAChBwzB,EAAOA,EAAKqgB,CAAC,IAAMrgB,EAAKqgB,CAAC,EAAI,OAAO,OAAO,IAAI,EAClD,CACD,OAAOrgB,CACX,CACA,SAASr0B,GAAI6W,EAAMzQ,EAAO2K,EAAQ,CAC9B,OAAI,OAAO3K,GAAU,SACV04B,GAAMsiB,GAAWvqC,EAAMzQ,CAAK,EAAG2K,CAAM,EAEzC+tB,GAAMsiB,GAAWvqC,EAAM,EAAE,EAAGzQ,CAAK,CAC5C,CACC,MAAMi7C,EAAS,CACZ,YAAYC,EAAcC,EAAU,CAChC,KAAK,UAAY,OACjB,KAAK,gBAAkB,kBACvB,KAAK,YAAc,kBACnB,KAAK,MAAQ,OACb,KAAK,SAAW,GAChB,KAAK,iBAAoBx/B,GAAUA,EAAQ,MAAM,SAAS,sBAC1D,KAAK,SAAW,GAChB,KAAK,OAAS,CACV,YACA,WACA,QACA,aACA,WACZ,EACQ,KAAK,KAAO,CACR,OAAQ,qDACR,KAAM,GACN,MAAO,SACP,WAAY,IACZ,OAAQ,IACpB,EACQ,KAAK,MAAQ,GACb,KAAK,qBAAuB,CAAC5M,EAAKN,IAAU+qC,GAAc/qC,EAAQ,eAAe,EACjF,KAAK,iBAAmB,CAACM,EAAKN,IAAU+qC,GAAc/qC,EAAQ,WAAW,EACzE,KAAK,WAAa,CAACM,EAAKN,IAAU+qC,GAAc/qC,EAAQ,KAAK,EAC7D,KAAK,UAAY,IACjB,KAAK,YAAc,CACf,KAAM,UACN,UAAW,GACX,iBAAkB,EAC9B,EACQ,KAAK,oBAAsB,GAC3B,KAAK,QAAU,KACf,KAAK,QAAU,KACf,KAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,WAAa,GAClB,KAAK,MAAQ,OACb,KAAK,OAAS,GACd,KAAK,SAAW,GAChB,KAAK,wBAA0B,GAC/B,KAAK,SAASysC,CAAY,EAC1B,KAAK,MAAMC,CAAS,CACvB,CACJ,IAAIn7C,EAAO2K,EAAQ,CACZ,OAAO/Q,GAAI,KAAMoG,EAAO2K,CAAM,CACjC,CACJ,IAAI3K,EAAO,CACJ,OAAOg7C,GAAW,KAAMh7C,CAAK,CAChC,CACJ,SAASA,EAAO2K,EAAQ,CACjB,OAAO/Q,GAAIs/B,GAAal5B,EAAO2K,CAAM,CACxC,CACD,SAAS3K,EAAO2K,EAAQ,CACpB,OAAO/Q,GAAImhD,GAAW/6C,EAAO2K,CAAM,CACtC,CACJ,MAAM3K,EAAOjC,EAAMq9C,EAAaC,EAAY,CACrC,MAAMC,EAAcN,GAAW,KAAMh7C,CAAK,EACpCu7C,EAAoBP,GAAW,KAAMI,CAAW,EAChDI,EAAc,IAAMz9C,EAC1B,OAAO,iBAAiBu9C,EAAa,CACjC,CAACE,CAAW,EAAG,CACX,MAAOF,EAAYv9C,CAAI,EACvB,SAAU,EACb,EACD,CAACA,CAAI,EAAG,CACJ,WAAY,GACZ,KAAO,CACH,MAAM09C,EAAQ,KAAKD,CAAW,EACxBn5C,EAASk5C,EAAkBF,CAAU,EAC3C,OAAIjgD,GAASqgD,CAAK,EACP,OAAO,OAAO,CAAE,EAAEp5C,EAAQo5C,CAAK,EAEnCrK,GAAeqK,EAAOp5C,CAAM,CACtC,EACD,IAAK9G,EAAO,CACR,KAAKigD,CAAW,EAAIjgD,CACvB,CACJ,CACb,CAAS,CACJ,CACD,MAAMmgD,EAAU,CACZA,EAAS,QAASC,GAAQA,EAAM,IAAI,CAAC,CACxC,CACL,CACA,IAAIxb,GAA2B,IAAI8a,GAAS,CACxC,YAAcl9C,GAAO,CAACA,EAAK,WAAW,IAAI,EAC1C,WAAaA,GAAOA,IAAS,SAC7B,MAAO,CACH,UAAW,aACd,EACD,YAAa,CACT,YAAa,GACb,WAAY,EACf,CACL,EAAG,CACC47C,GACAC,GACAiB,EACJ,CAAC,EAOG,SAASe,GAAaC,EAAM,CAC5B,MAAI,CAACA,GAAQ5K,GAAc4K,EAAK,IAAI,GAAK5K,GAAc4K,EAAK,MAAM,EACvD,MAEHA,EAAK,MAAQA,EAAK,MAAQ,IAAM,KAAOA,EAAK,OAASA,EAAK,OAAS,IAAM,IAAMA,EAAK,KAAO,MAAQA,EAAK,MACpH,CAGI,SAASC,GAAa/sC,EAAKc,EAAMksC,EAAIC,EAASC,EAAQ,CACtD,IAAIC,EAAYrsC,EAAKosC,CAAM,EAC3B,OAAKC,IACDA,EAAYrsC,EAAKosC,CAAM,EAAIltC,EAAI,YAAYktC,CAAM,EAAE,MACnDF,EAAG,KAAKE,CAAM,GAEdC,EAAYF,IACZA,EAAUE,GAEPF,CACX,CAIA,SAASG,GAAaptC,EAAK8sC,EAAMO,EAAetgD,EAAO,CACnDA,EAAQA,GAAS,GACjB,IAAI+T,EAAO/T,EAAM,KAAOA,EAAM,MAAQ,CAAA,EAClCigD,EAAKjgD,EAAM,eAAiBA,EAAM,gBAAkB,CAAA,EACpDA,EAAM,OAAS+/C,IACfhsC,EAAO/T,EAAM,KAAO,GACpBigD,EAAKjgD,EAAM,eAAiB,GAC5BA,EAAM,KAAO+/C,GAEjB9sC,EAAI,KAAI,EACRA,EAAI,KAAO8sC,EACX,IAAIG,EAAU,EACd,MAAMnK,EAAOuK,EAAc,OAC3B,IAAI3hD,EAAG4sB,EAAGg1B,EAAMhlB,EAAOilB,EACvB,IAAI7hD,EAAI,EAAGA,EAAIo3C,EAAMp3C,IAGjB,GAFA48B,EAAQ+kB,EAAc3hD,CAAC,EAEI48B,GAAU,MAAQ,CAACz8B,GAAQy8B,CAAK,EACvD2kB,EAAUF,GAAa/sC,EAAKc,EAAMksC,EAAIC,EAAS3kB,CAAK,UAC7Cz8B,GAAQy8B,CAAK,EAGpB,IAAIhQ,EAAI,EAAGg1B,EAAOhlB,EAAM,OAAQhQ,EAAIg1B,EAAMh1B,IACtCi1B,EAAcjlB,EAAMhQ,CAAC,EAEYi1B,GAAgB,MAAQ,CAAC1hD,GAAQ0hD,CAAW,IACzEN,EAAUF,GAAa/sC,EAAKc,EAAMksC,EAAIC,EAASM,CAAW,GAK1EvtC,EAAI,QAAO,EACX,MAAMwtC,EAAQR,EAAG,OAAS,EAC1B,GAAIQ,EAAQH,EAAc,OAAQ,CAC9B,IAAI3hD,EAAI,EAAGA,EAAI8hD,EAAO9hD,IAClB,OAAOoV,EAAKksC,EAAGthD,CAAC,CAAC,EAErBshD,EAAG,OAAO,EAAGQ,CAAK,CACrB,CACD,OAAOP,CACX,CAQI,SAASQ,GAAYC,EAAOC,EAAOC,EAAO,CAC1C,MAAMC,EAAmBH,EAAM,wBACzBI,EAAYF,IAAU,EAAI,KAAK,IAAIA,EAAQ,EAAG,EAAG,EAAI,EAC3D,OAAO,KAAK,OAAOD,EAAQG,GAAaD,CAAgB,EAAIA,EAAmBC,CACnF,CAGI,SAASC,GAAYC,EAAQhuC,EAAK,CAClCA,EAAMA,GAAOguC,EAAO,WAAW,IAAI,EACnChuC,EAAI,KAAI,EAGRA,EAAI,eAAc,EAClBA,EAAI,UAAU,EAAG,EAAGguC,EAAO,MAAOA,EAAO,MAAM,EAC/ChuC,EAAI,QAAO,CACf,CACA,SAASiuC,GAAUjuC,EAAKN,EAASqlC,EAAGC,EAAG,CAEnCkJ,GAAgBluC,EAAKN,EAASqlC,EAAGC,CAAO,CAC5C,CAEA,SAASkJ,GAAgBluC,EAAKN,EAASqlC,EAAGC,EAAGjS,EAAG,CAC5C,IAAIx/B,EAAM46C,EAASC,EAAS33C,EAAM43C,EAAcT,EAAOU,EAAUC,EACjE,MAAMzyB,EAAQpc,EAAQ,WAChB8uC,EAAW9uC,EAAQ,SACnB+uC,EAAS/uC,EAAQ,OACvB,IAAIgvC,GAAOF,GAAY,GAAKhK,GAC5B,GAAI1oB,GAAS,OAAOA,GAAU,WAC1BvoB,EAAOuoB,EAAM,WACTvoB,IAAS,6BAA+BA,IAAS,8BAA8B,CAC/EyM,EAAI,KAAI,EACRA,EAAI,UAAU+kC,EAAGC,CAAC,EAClBhlC,EAAI,OAAO0uC,CAAG,EACd1uC,EAAI,UAAU8b,EAAO,CAACA,EAAM,MAAQ,EAAG,CAACA,EAAM,OAAS,EAAGA,EAAM,MAAOA,EAAM,MAAM,EACnF9b,EAAI,QAAO,EACX,MACH,CAEL,GAAI,QAAMyuC,CAAM,GAAKA,GAAU,GAI/B,QADAzuC,EAAI,UAAS,EACN8b,EAAK,CAER,QAIQ9b,EAAI,IAAI+kC,EAAGC,EAAGyJ,EAAQ,EAAGpK,EAAG,EAEhCrkC,EAAI,UAAS,EACb,MACJ,IAAK,WACD4tC,EAAoBa,EACpBzuC,EAAI,OAAO+kC,EAAI,KAAK,IAAI2J,CAAG,EAAId,EAAO5I,EAAI,KAAK,IAAI0J,CAAG,EAAID,CAAM,EAChEC,GAAO/J,GACP3kC,EAAI,OAAO+kC,EAAI,KAAK,IAAI2J,CAAG,EAAId,EAAO5I,EAAI,KAAK,IAAI0J,CAAG,EAAID,CAAM,EAChEC,GAAO/J,GACP3kC,EAAI,OAAO+kC,EAAI,KAAK,IAAI2J,CAAG,EAAId,EAAO5I,EAAI,KAAK,IAAI0J,CAAG,EAAID,CAAM,EAChEzuC,EAAI,UAAS,EACb,MACJ,IAAK,cAQDquC,EAAeI,EAAS,KACxBh4C,EAAOg4C,EAASJ,EAChBF,EAAU,KAAK,IAAIO,EAAMhK,EAAU,EAAIjuC,EACvC63C,EAAW,KAAK,IAAII,EAAMhK,EAAU,EAAgCjuC,EACpE23C,EAAU,KAAK,IAAIM,EAAMhK,EAAU,EAAIjuC,EACvC83C,EAAW,KAAK,IAAIG,EAAMhK,EAAU,EAAgCjuC,EACpEuJ,EAAI,IAAI+kC,EAAIuJ,EAAUtJ,EAAIoJ,EAASC,EAAcK,EAAMtK,GAAIsK,EAAMjK,EAAO,EACxEzkC,EAAI,IAAI+kC,EAAIwJ,EAAUvJ,EAAImJ,EAASE,EAAcK,EAAMjK,GAASiK,CAAG,EACnE1uC,EAAI,IAAI+kC,EAAIuJ,EAAUtJ,EAAIoJ,EAASC,EAAcK,EAAKA,EAAMjK,EAAO,EACnEzkC,EAAI,IAAI+kC,EAAIwJ,EAAUvJ,EAAImJ,EAASE,EAAcK,EAAMjK,GAASiK,EAAMtK,EAAE,EACxEpkC,EAAI,UAAS,EACb,MACJ,IAAK,OACD,GAAI,CAACwuC,EAAU,CACX/3C,EAAO,KAAK,QAAUg4C,EACtBb,EAAoBn3C,EACpBuJ,EAAI,KAAK+kC,EAAI6I,EAAO5I,EAAIvuC,EAAM,EAAIm3C,EAAO,EAAIn3C,CAAI,EACjD,KACH,CACDi4C,GAAOhK,GACS,IAAK,UACrB4J,EAAW,KAAK,IAAII,CAAG,EAAiBD,EACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,EAAiBD,EACxCzuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpCnuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpCnuC,EAAI,UAAS,EACb,MACJ,IAAK,WACD0uC,GAAOhK,GACS,IAAK,QACrB4J,EAAW,KAAK,IAAII,CAAG,EAAiBD,EACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,EAAiBD,EACxCzuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpCnuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpC,MACJ,IAAK,OACDG,EAAW,KAAK,IAAII,CAAG,EAAiBD,EACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,EAAiBD,EACxCzuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpCnuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpCO,GAAOhK,GACP4J,EAAW,KAAK,IAAII,CAAG,EAAiBD,EACxCN,EAAU,KAAK,IAAIO,CAAG,EAAID,EAC1BL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BF,EAAW,KAAK,IAAIG,CAAG,EAAiBD,EACxCzuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIuJ,EAAUtJ,EAAIoJ,CAAO,EACpCpuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpCnuC,EAAI,OAAO+kC,EAAIwJ,EAAUvJ,EAAImJ,CAAO,EACpC,MACJ,IAAK,OACDA,EAAsB,KAAK,IAAIO,CAAG,EAAID,EACtCL,EAAU,KAAK,IAAIM,CAAG,EAAID,EAC1BzuC,EAAI,OAAO+kC,EAAIoJ,EAASnJ,EAAIoJ,CAAO,EACnCpuC,EAAI,OAAO+kC,EAAIoJ,EAASnJ,EAAIoJ,CAAO,EACnC,MACJ,IAAK,OACDpuC,EAAI,OAAO+kC,EAAGC,CAAC,EACfhlC,EAAI,OAAO+kC,EAAI,KAAK,IAAI2J,CAAG,EAAiBD,EAASzJ,EAAI,KAAK,IAAI0J,CAAG,EAAID,CAAM,EAC/E,MACJ,IAAK,GACDzuC,EAAI,UAAS,EACb,KACP,CACDA,EAAI,KAAI,EACJN,EAAQ,YAAc,GACtBM,EAAI,OAAM,EAElB,CAOI,SAAS2uC,GAAeC,EAAOC,EAAMC,EAAQ,CAC7C,OAAAA,EAASA,GAAU,GACZ,CAACD,GAAQD,GAASA,EAAM,EAAIC,EAAK,KAAOC,GAAUF,EAAM,EAAIC,EAAK,MAAQC,GAAUF,EAAM,EAAIC,EAAK,IAAMC,GAAUF,EAAM,EAAIC,EAAK,OAASC,CACrJ,CACA,SAASC,GAAS/uC,EAAK6uC,EAAM,CACzB7uC,EAAI,KAAI,EACRA,EAAI,UAAS,EACbA,EAAI,KAAK6uC,EAAK,KAAMA,EAAK,IAAKA,EAAK,MAAQA,EAAK,KAAMA,EAAK,OAASA,EAAK,GAAG,EAC5E7uC,EAAI,KAAI,CACZ,CACA,SAASgvC,GAAWhvC,EAAK,CACrBA,EAAI,QAAO,CACf,CAGI,SAASivC,GAAejvC,EAAKkvC,EAAU57C,EAAQ67C,EAAMC,EAAM,CAC3D,GAAI,CAACF,EACD,OAAOlvC,EAAI,OAAO1M,EAAO,EAAGA,EAAO,CAAC,EAExC,GAAI87C,IAAS,SAAU,CACnB,MAAMC,GAAYH,EAAS,EAAI57C,EAAO,GAAK,EAC3C0M,EAAI,OAAOqvC,EAAUH,EAAS,CAAC,EAC/BlvC,EAAI,OAAOqvC,EAAU/7C,EAAO,CAAC,CAChC,MAAU87C,IAAS,SAAY,CAAC,CAACD,EAC9BnvC,EAAI,OAAOkvC,EAAS,EAAG57C,EAAO,CAAC,EAE/B0M,EAAI,OAAO1M,EAAO,EAAG47C,EAAS,CAAC,EAEnClvC,EAAI,OAAO1M,EAAO,EAAGA,EAAO,CAAC,CACjC,CAGI,SAASg8C,GAAetvC,EAAKkvC,EAAU57C,EAAQ67C,EAAM,CACrD,GAAI,CAACD,EACD,OAAOlvC,EAAI,OAAO1M,EAAO,EAAGA,EAAO,CAAC,EAExC0M,EAAI,cAAcmvC,EAAOD,EAAS,KAAOA,EAAS,KAAMC,EAAOD,EAAS,KAAOA,EAAS,KAAMC,EAAO77C,EAAO,KAAOA,EAAO,KAAM67C,EAAO77C,EAAO,KAAOA,EAAO,KAAMA,EAAO,EAAGA,EAAO,CAAC,CACxL,CACA,SAASi8C,GAAcvvC,EAAKy6B,EAAM,CAC1BA,EAAK,aACLz6B,EAAI,UAAUy6B,EAAK,YAAY,CAAC,EAAGA,EAAK,YAAY,CAAC,CAAC,EAErDyH,GAAczH,EAAK,QAAQ,GAC5Bz6B,EAAI,OAAOy6B,EAAK,QAAQ,EAExBA,EAAK,QACLz6B,EAAI,UAAYy6B,EAAK,OAErBA,EAAK,YACLz6B,EAAI,UAAYy6B,EAAK,WAErBA,EAAK,eACLz6B,EAAI,aAAey6B,EAAK,aAEhC,CACA,SAAS+U,GAAaxvC,EAAK+kC,EAAGC,EAAG7S,EAAMsI,EAAM,CACzC,GAAIA,EAAK,eAAiBA,EAAK,UAAW,CAOtC,MAAMgV,EAAUzvC,EAAI,YAAYmyB,CAAI,EAC9Bud,EAAO3K,EAAI0K,EAAQ,sBACnBE,EAAQ5K,EAAI0K,EAAQ,uBACpBG,EAAM5K,EAAIyK,EAAQ,wBAClBI,EAAS7K,EAAIyK,EAAQ,yBACrBK,EAAcrV,EAAK,eAAiBmV,EAAMC,GAAU,EAAIA,EAC9D7vC,EAAI,YAAcA,EAAI,UACtBA,EAAI,UAAS,EACbA,EAAI,UAAYy6B,EAAK,iBAAmB,EACxCz6B,EAAI,OAAO0vC,EAAMI,CAAW,EAC5B9vC,EAAI,OAAO2vC,EAAOG,CAAW,EAC7B9vC,EAAI,OAAM,CACb,CACL,CACA,SAAS+vC,GAAa/vC,EAAKy6B,EAAM,CAC7B,MAAMuV,EAAWhwC,EAAI,UACrBA,EAAI,UAAYy6B,EAAK,MACrBz6B,EAAI,SAASy6B,EAAK,KAAMA,EAAK,IAAKA,EAAK,MAAOA,EAAK,MAAM,EACzDz6B,EAAI,UAAYgwC,CACpB,CAGI,SAASC,GAAWjwC,EAAKqc,EAAM0oB,EAAGC,EAAG8H,EAAMrS,EAAO,GAAI,CACtD,MAAMyV,EAAQrkD,GAAQwwB,CAAI,EAAIA,EAAO,CACjCA,CACR,EACU8zB,EAAS1V,EAAK,YAAc,GAAKA,EAAK,cAAgB,GAC5D,IAAI/uC,EAAGymC,EAIP,IAHAnyB,EAAI,KAAI,EACRA,EAAI,KAAO8sC,EAAK,OAChByC,GAAcvvC,EAAKy6B,CAAI,EACnB/uC,EAAI,EAAGA,EAAIwkD,EAAM,OAAQ,EAAExkD,EAC3BymC,EAAO+d,EAAMxkD,CAAC,EACV+uC,EAAK,UACLsV,GAAa/vC,EAAKy6B,EAAK,QAAQ,EAE/B0V,IACI1V,EAAK,cACLz6B,EAAI,YAAcy6B,EAAK,aAEtByH,GAAczH,EAAK,WAAW,IAC/Bz6B,EAAI,UAAYy6B,EAAK,aAEzBz6B,EAAI,WAAWmyB,EAAM4S,EAAGC,EAAGvK,EAAK,QAAQ,GAE5Cz6B,EAAI,SAASmyB,EAAM4S,EAAGC,EAAGvK,EAAK,QAAQ,EACtC+U,GAAaxvC,EAAK+kC,EAAGC,EAAG7S,EAAMsI,CAAI,EAClCuK,GAAK,OAAO8H,EAAK,UAAU,EAE/B9sC,EAAI,QAAO,CACf,CAKI,SAASowC,GAAmBpwC,EAAKqwC,EAAM,CACvC,KAAM,CAAE,EAAAtL,EAAI,EAAAC,EAAI,EAAAjS,EAAI,EAAA9nB,EAAI,OAAAwjC,CAAS,EAAG4B,EAEpCrwC,EAAI,IAAI+kC,EAAI0J,EAAO,QAASzJ,EAAIyJ,EAAO,QAASA,EAAO,QAAS,IAAMrK,GAAIA,GAAI,EAAI,EAElFpkC,EAAI,OAAO+kC,EAAGC,EAAI/5B,EAAIwjC,EAAO,UAAU,EAEvCzuC,EAAI,IAAI+kC,EAAI0J,EAAO,WAAYzJ,EAAI/5B,EAAIwjC,EAAO,WAAYA,EAAO,WAAYrK,GAAIK,GAAS,EAAI,EAE9FzkC,EAAI,OAAO+kC,EAAIhS,EAAI0b,EAAO,YAAazJ,EAAI/5B,CAAC,EAE5CjL,EAAI,IAAI+kC,EAAIhS,EAAI0b,EAAO,YAAazJ,EAAI/5B,EAAIwjC,EAAO,YAAaA,EAAO,YAAahK,GAAS,EAAG,EAAI,EAEpGzkC,EAAI,OAAO+kC,EAAIhS,EAAGiS,EAAIyJ,EAAO,QAAQ,EAErCzuC,EAAI,IAAI+kC,EAAIhS,EAAI0b,EAAO,SAAUzJ,EAAIyJ,EAAO,SAAUA,EAAO,SAAU,EAAG,CAAChK,GAAS,EAAI,EAExFzkC,EAAI,OAAO+kC,EAAI0J,EAAO,QAASzJ,CAAC,CACpC,CAEA,MAAMsL,GAAc,uCACdC,GAAa,wEAWf,SAASC,GAAahkD,EAAOiK,EAAM,CACnC,MAAM40B,GAAW,GAAK7+B,GAAO,MAAM8jD,EAAW,EAC9C,GAAI,CAACjlB,GAAWA,EAAQ,CAAC,IAAM,SAC3B,OAAO50B,EAAO,IAGlB,OADAjK,EAAQ,CAAC6+B,EAAQ,CAAC,EACXA,EAAQ,CAAC,EAAC,CACb,IAAK,KACD,OAAO7+B,EACX,IAAK,IACDA,GAAS,IACT,KACP,CACD,OAAOiK,EAAOjK,CAClB,CACA,MAAMikD,GAAgBpgD,GAAI,CAACA,GAAK,EAChC,SAASqgD,GAAkBlkD,EAAOgS,EAAO,CACrC,MAAM3P,EAAM,CAAA,EACN8hD,EAAWtkD,GAASmS,CAAK,EACzBmD,EAAOgvC,EAAW,OAAO,KAAKnyC,CAAK,EAAIA,EACvCoyC,EAAOvkD,GAASG,CAAK,EAAImkD,EAAYrhC,GAAO+yB,GAAe71C,EAAM8iB,CAAI,EAAG9iB,EAAMgS,EAAM8Q,CAAI,CAAC,CAAC,EAAKA,GAAO9iB,EAAM8iB,CAAI,EAAI,IAAI9iB,EAC9H,UAAW8iB,KAAQ3N,EACf9S,EAAIygB,CAAI,EAAImhC,GAAaG,EAAKthC,CAAI,CAAC,EAEvC,OAAOzgB,CACX,CAQI,SAASgiD,GAAOrkD,EAAO,CACvB,OAAOkkD,GAAkBlkD,EAAO,CAC5B,IAAK,IACL,MAAO,IACP,OAAQ,IACR,KAAM,GACd,CAAK,CACL,CAOI,SAASskD,GAActkD,EAAO,CAC9B,OAAOkkD,GAAkBlkD,EAAO,CAC5B,UACA,WACA,aACA,aACR,CAAK,CACL,CAQI,SAASukD,GAAUvkD,EAAO,CAC1B,MAAMsB,EAAM+iD,GAAOrkD,CAAK,EACxB,OAAAsB,EAAI,MAAQA,EAAI,KAAOA,EAAI,MAC3BA,EAAI,OAASA,EAAI,IAAMA,EAAI,OACpBA,CACX,CAOI,SAASkjD,GAAOtxC,EAASuxC,EAAU,CACnCvxC,EAAUA,GAAW,GACrBuxC,EAAWA,GAAY7f,GAAS,KAChC,IAAI36B,EAAO4rC,GAAe3iC,EAAQ,KAAMuxC,EAAS,IAAI,EACjD,OAAOx6C,GAAS,WAChBA,EAAO,SAASA,EAAM,EAAE,GAE5B,IAAIqlB,EAAQumB,GAAe3iC,EAAQ,MAAOuxC,EAAS,KAAK,EACpDn1B,GAAS,EAAE,GAAKA,GAAO,MAAMy0B,EAAU,IACvC,QAAQ,KAAK,kCAAoCz0B,EAAQ,GAAG,EAC5DA,EAAQ,QAEZ,MAAMgxB,EAAO,CACT,OAAQzK,GAAe3iC,EAAQ,OAAQuxC,EAAS,MAAM,EACtD,WAAYT,GAAanO,GAAe3iC,EAAQ,WAAYuxC,EAAS,UAAU,EAAGx6C,CAAI,EACtF,KAAAA,EACA,MAAAqlB,EACA,OAAQumB,GAAe3iC,EAAQ,OAAQuxC,EAAS,MAAM,EACtD,OAAQ,EAChB,EACI,OAAAnE,EAAK,OAASD,GAAaC,CAAI,EACxBA,CACX,CAWI,SAAS/X,GAAQmc,EAAQtkC,EAASjF,EAAOwpC,EAAM,CAE/C,IAAI,EAAGrO,EAAMt2C,EACb,IAAI,EAAI,EAAGs2C,EAAOoO,EAAO,OAAQ,EAAIpO,EAAM,EAAE,EAEzC,GADAt2C,EAAQ0kD,EAAO,CAAC,EACZ1kD,IAAU,QAWVA,IAAU,OAIV,OAAOA,CAGnB,CAMI,SAAS4kD,GAAUC,EAAQC,EAAOC,EAAa,CAC/C,KAAM,CAAE,IAAAhb,EAAM,IAAAsJ,CAAM,EAAGwR,EACjBG,EAASlP,GAAYgP,GAAQzR,EAAMtJ,GAAO,CAAC,EAC3Ckb,EAAW,CAACjlD,EAAOkK,IAAM66C,GAAe/kD,IAAU,EAAI,EAAIA,EAAQkK,EACxE,MAAO,CACH,IAAK+6C,EAASlb,EAAK,CAAC,KAAK,IAAIib,CAAM,CAAC,EACpC,IAAKC,EAAS5R,EAAK2R,CAAM,CACjC,CACA,CACA,SAASE,GAAcC,EAAe/kC,EAAS,CAC3C,OAAO,OAAO,OAAO,OAAO,OAAO+kC,CAAa,EAAG/kC,CAAO,CAC9D,CAWI,SAASglC,GAAgBC,EAAQpxB,EAAW,CAC5C,EACJ,EAAGqxB,EAAYb,EAAUc,EAAY,IAAIF,EAAO,CAAC,EAAG,CAChD,MAAMG,EAAkBF,GAAcD,EAClC,OAAOZ,EAAa,MACpBA,EAAW/U,GAAS,YAAa2V,CAAM,GAE3C,MAAM9kD,EAAQ,CACV,CAAC,OAAO,WAAW,EAAG,SACtB,WAAY,GACZ,QAAS8kD,EACT,YAAaG,EACb,UAAWf,EACX,WAAYc,EACZ,SAAW9gD,GAAQ2gD,GAAgB,CAC3B3gD,EACA,GAAG4gD,CACnB,EAAepxB,EAAUuxB,EAAiBf,CAAQ,CAClD,EACI,OAAO,IAAI,MAAMlkD,EAAO,CAGpB,eAAgBuG,EAAQgc,EAAM,CAC1B,cAAOhc,EAAOgc,CAAI,EAClB,OAAOhc,EAAO,MACd,OAAOu+C,EAAO,CAAC,EAAEviC,CAAI,EACd,EACV,EAGD,IAAKhc,EAAQgc,EAAM,CACf,OAAO2iC,GAAQ3+C,EAAQgc,EAAM,IAAI4iC,GAAqB5iC,EAAMmR,EAAUoxB,EAAQv+C,CAAM,CAAC,CACxF,EAID,yBAA0BA,EAAQgc,EAAM,CACpC,OAAO,QAAQ,yBAAyBhc,EAAO,QAAQ,CAAC,EAAGgc,CAAI,CAClE,EAGD,gBAAkB,CACd,OAAO,QAAQ,eAAeuiC,EAAO,CAAC,CAAC,CAC1C,EAGD,IAAKv+C,EAAQgc,EAAM,CACf,OAAO6iC,GAAqB7+C,CAAM,EAAE,SAASgc,CAAI,CACpD,EAGD,QAAShc,EAAQ,CACb,OAAO6+C,GAAqB7+C,CAAM,CACrC,EAGD,IAAKA,EAAQgc,EAAM9iB,EAAO,CACtB,MAAM4lD,EAAU9+C,EAAO,WAAaA,EAAO,SAAWy+C,EAAS,GAC/D,OAAAz+C,EAAOgc,CAAI,EAAI8iC,EAAQ9iC,CAAI,EAAI9iB,EAC/B,OAAO8G,EAAO,MACP,EACV,CACT,CAAK,CACL,CAQI,SAAS++C,GAAel5C,EAAOyT,EAAS0lC,EAAUC,EAAoB,CACtE,MAAMxlD,EAAQ,CACV,WAAY,GACZ,OAAQoM,EACR,SAAUyT,EACV,UAAW0lC,EACX,OAAQ,IAAI,IACZ,aAAcnG,GAAahzC,EAAOo5C,CAAkB,EACpD,WAAavyC,GAAMqyC,GAAel5C,EAAO6G,EAAKsyC,EAAUC,CAAkB,EAC1E,SAAWthD,GAAQohD,GAAel5C,EAAM,SAASlI,CAAK,EAAG2b,EAAS0lC,EAAUC,CAAkB,CACtG,EACI,OAAO,IAAI,MAAMxlD,EAAO,CAGpB,eAAgBuG,EAAQgc,EAAM,CAC1B,cAAOhc,EAAOgc,CAAI,EAClB,OAAOnW,EAAMmW,CAAI,EACV,EACV,EAGD,IAAKhc,EAAQgc,EAAM5a,EAAU,CACzB,OAAOu9C,GAAQ3+C,EAAQgc,EAAM,IAAIkjC,GAAoBl/C,EAAQgc,EAAM5a,CAAQ,CAAC,CAC/E,EAID,yBAA0BpB,EAAQgc,EAAM,CACpC,OAAOhc,EAAO,aAAa,QAAU,QAAQ,IAAI6F,EAAOmW,CAAI,EAAI,CAC5D,WAAY,GACZ,aAAc,EACjB,EAAG,OAAY,QAAQ,yBAAyBnW,EAAOmW,CAAI,CAC/D,EAGD,gBAAkB,CACd,OAAO,QAAQ,eAAenW,CAAK,CACtC,EAGD,IAAK7F,EAAQgc,EAAM,CACf,OAAO,QAAQ,IAAInW,EAAOmW,CAAI,CACjC,EAGD,SAAW,CACP,OAAO,QAAQ,QAAQnW,CAAK,CAC/B,EAGD,IAAK7F,EAAQgc,EAAM9iB,EAAO,CACtB,OAAA2M,EAAMmW,CAAI,EAAI9iB,EACd,OAAO8G,EAAOgc,CAAI,EACX,EACV,CACT,CAAK,CACL,CAGI,SAAS68B,GAAahzC,EAAOi4B,EAAW,CACxC,WAAY,GACZ,UAAW,EACf,EAAG,CACC,KAAM,CAAE,YAAAqhB,EAAarhB,EAAS,WAAa,WAAAshB,EAAYthB,EAAS,UAAY,SAAAuhB,EAAUvhB,EAAS,OAAO,EAAMj4B,EAC5G,MAAO,CACH,QAASw5C,EACT,WAAYF,EACZ,UAAWC,EACX,aAAcxmD,GAAWumD,CAAW,EAAIA,EAAc,IAAIA,EAC1D,YAAavmD,GAAWwmD,CAAU,EAAIA,EAAa,IAAIA,CAC/D,CACA,CACA,MAAME,GAAU,CAACC,EAAQ7jD,IAAO6jD,EAASA,EAAS7O,GAAYh1C,CAAI,EAAIA,EAChE8jD,GAAmB,CAACxjC,EAAM9iB,IAAQH,GAASG,CAAK,GAAK8iB,IAAS,aAAe,OAAO,eAAe9iB,CAAK,IAAM,MAAQA,EAAM,cAAgB,QAClJ,SAASylD,GAAQ3+C,EAAQgc,EAAMylB,EAAS,CACpC,GAAI,OAAO,UAAU,eAAe,KAAKzhC,EAAQgc,CAAI,EACjD,OAAOhc,EAAOgc,CAAI,EAEtB,MAAM9iB,EAAQuoC,IAEd,OAAAzhC,EAAOgc,CAAI,EAAI9iB,EACRA,CACX,CACA,SAASgmD,GAAoBl/C,EAAQgc,EAAM5a,EAAU,CACjD,KAAM,CAAE,OAAAq+C,EAAS,SAAAC,EAAW,UAAAC,EAAY,aAAc9oB,CAAc,EAAG72B,EACvE,IAAI9G,EAAQumD,EAAOzjC,CAAI,EAEvB,OAAIpjB,GAAWM,CAAK,GAAK29B,EAAY,aAAa7a,CAAI,IAClD9iB,EAAQ0mD,GAAmB5jC,EAAM9iB,EAAO8G,EAAQoB,CAAQ,GAExD7I,GAAQW,CAAK,GAAKA,EAAM,SACxBA,EAAQ2mD,GAAc7jC,EAAM9iB,EAAO8G,EAAQ62B,EAAY,WAAW,GAElE2oB,GAAiBxjC,EAAM9iB,CAAK,IAE5BA,EAAQ6lD,GAAe7lD,EAAOwmD,EAAUC,GAAaA,EAAU3jC,CAAI,EAAG6a,CAAW,GAE9E39B,CACX,CACA,SAAS0mD,GAAmB5jC,EAAMyT,EAAUzvB,EAAQoB,EAAU,CAC1D,KAAM,CAAE,OAAAq+C,EAAS,SAAAC,EAAW,UAAAC,EAAY,OAAAG,CAAM,EAAM9/C,EACpD,GAAI8/C,EAAO,IAAI9jC,CAAI,EACf,MAAM,IAAI,MAAM,uBAAyB,MAAM,KAAK8jC,CAAM,EAAE,KAAK,IAAI,EAAI,KAAO9jC,CAAI,EAExF8jC,EAAO,IAAI9jC,CAAI,EACf,IAAI9iB,EAAQu2B,EAASiwB,EAAUC,GAAav+C,CAAQ,EACpD,OAAA0+C,EAAO,OAAO9jC,CAAI,EACdwjC,GAAiBxjC,EAAM9iB,CAAK,IAE5BA,EAAQ6mD,GAAkBN,EAAO,QAASA,EAAQzjC,EAAM9iB,CAAK,GAE1DA,CACX,CACA,SAAS2mD,GAAc7jC,EAAM9iB,EAAO8G,EAAQggD,EAAa,CACrD,KAAM,CAAE,OAAAP,EAAS,SAAAC,EAAW,UAAAC,EAAY,aAAc9oB,CAAc,EAAG72B,EACvE,GAAI,OAAO0/C,EAAS,MAAU,KAAeM,EAAYhkC,CAAI,EACzD,OAAO9iB,EAAMwmD,EAAS,MAAQxmD,EAAM,MAAM,EACvC,GAAIH,GAASG,EAAM,CAAC,CAAC,EAAG,CAE3B,MAAMhB,EAAMgB,EACNqlD,EAASkB,EAAO,QAAQ,OAAQvuC,GAAIA,IAAMhZ,CAAG,EACnDgB,EAAQ,CAAA,EACR,UAAW8B,KAAQ9C,EAAI,CACnB,MAAM+nD,EAAWF,GAAkBxB,EAAQkB,EAAQzjC,EAAMhhB,CAAI,EAC7D9B,EAAM,KAAK6lD,GAAekB,EAAUP,EAAUC,GAAaA,EAAU3jC,CAAI,EAAG6a,CAAW,CAAC,CAC3F,CACJ,CACD,OAAO39B,CACX,CACA,SAASgnD,GAAgBvC,EAAU3hC,EAAM9iB,EAAO,CAC5C,OAAON,GAAW+kD,CAAQ,EAAIA,EAAS3hC,EAAM9iB,CAAK,EAAIykD,CAC1D,CACA,MAAMwC,GAAW,CAACroD,EAAK2X,IAAS3X,IAAQ,GAAO2X,EAAS,OAAO3X,GAAQ,SAAW24C,GAAiBhhC,EAAQ3X,CAAG,EAAI,OAClH,SAASsoD,GAAU7oD,EAAK8oD,EAAcvoD,EAAKwoD,EAAgBpnD,EAAO,CAC9D,UAAWuW,KAAU4wC,EAAa,CAC9B,MAAM1iD,EAAQwiD,GAASroD,EAAK2X,CAAM,EAClC,GAAI9R,EAAO,CACPpG,EAAI,IAAIoG,CAAK,EACb,MAAMggD,EAAWuC,GAAgBviD,EAAM,UAAW7F,EAAKoB,CAAK,EAC5D,GAAI,OAAOykD,EAAa,KAAeA,IAAa7lD,GAAO6lD,IAAa2C,EAGpE,OAAO3C,CAEvB,SAAmBhgD,IAAU,IAAS,OAAO2iD,EAAmB,KAAexoD,IAAQwoD,EAG3E,OAAO,IAEd,CACD,MAAO,EACX,CACA,SAASP,GAAkBM,EAAcJ,EAAUjkC,EAAM9iB,EAAO,CAC5D,MAAMslD,EAAayB,EAAS,YACtBtC,EAAWuC,GAAgBD,EAAS,UAAWjkC,EAAM9iB,CAAK,EAC1DqnD,EAAY,CACd,GAAGF,EACH,GAAG7B,CACX,EACUjnD,EAAM,IAAI,IAChBA,EAAI,IAAI2B,CAAK,EACb,IAAIpB,EAAM0oD,GAAiBjpD,EAAKgpD,EAAWvkC,EAAM2hC,GAAY3hC,EAAM9iB,CAAK,EAIxE,OAHIpB,IAAQ,MAGR,OAAO6lD,EAAa,KAAeA,IAAa3hC,IAChDlkB,EAAM0oD,GAAiBjpD,EAAKgpD,EAAW5C,EAAU7lD,EAAKoB,CAAK,EACvDpB,IAAQ,MACD,GAGRwmD,GAAgB,MAAM,KAAK/mD,CAAG,EAAG,CACpC,EACR,EAAOinD,EAAYb,EAAU,IAAI8C,GAAaR,EAAUjkC,EAAM9iB,CAAK,CAAC,CACpE,CACA,SAASsnD,GAAiBjpD,EAAKgpD,EAAWzoD,EAAK6lD,EAAU3iD,EAAM,CAC3D,KAAMlD,GACFA,EAAMsoD,GAAU7oD,EAAKgpD,EAAWzoD,EAAK6lD,EAAU3iD,CAAI,EAEvD,OAAOlD,CACX,CACA,SAAS2oD,GAAaR,EAAUjkC,EAAM9iB,EAAO,CACzC,MAAMuW,EAASwwC,EAAS,aAClBjkC,KAAQvM,IACVA,EAAOuM,CAAI,EAAI,IAEnB,MAAMhc,EAASyP,EAAOuM,CAAI,EAC1B,OAAIzjB,GAAQyH,CAAM,GAAKjH,GAASG,CAAK,EAE1BA,EAEJ8G,GAAU,CAAA,CACrB,CACA,SAAS4+C,GAAqB5iC,EAAMmR,EAAUoxB,EAAQ14C,EAAO,CACzD,IAAI3M,EACJ,UAAWqmD,KAAUpyB,EAEjB,GADAj0B,EAAQ0vC,GAAS0W,GAAQC,EAAQvjC,CAAI,EAAGuiC,CAAM,EAC1C,OAAOrlD,EAAU,IACjB,OAAOsmD,GAAiBxjC,EAAM9iB,CAAK,EAAI6mD,GAAkBxB,EAAQ14C,EAAOmW,EAAM9iB,CAAK,EAAIA,CAGnG,CACA,SAAS0vC,GAAS9wC,EAAKymD,EAAQ,CAC3B,UAAW5gD,KAAS4gD,EAAO,CACvB,GAAI,CAAC5gD,EACD,SAEJ,MAAMzE,EAAQyE,EAAM7F,CAAG,EACvB,GAAI,OAAOoB,EAAU,IACjB,OAAOA,CAEd,CACL,CACA,SAAS2lD,GAAqB7+C,EAAQ,CAClC,IAAIqO,EAAOrO,EAAO,MAClB,OAAKqO,IACDA,EAAOrO,EAAO,MAAQ0gD,GAAyB1gD,EAAO,OAAO,GAE1DqO,CACX,CACA,SAASqyC,GAAyBnC,EAAQ,CACtC,MAAMhnD,EAAM,IAAI,IAChB,UAAWoG,KAAS4gD,EAChB,UAAWzmD,KAAO,OAAO,KAAK6F,CAAK,EAAE,OAAQsuC,GAAI,CAACA,EAAE,WAAW,GAAG,CAAC,EAC/D10C,EAAI,IAAIO,CAAG,EAGnB,OAAO,MAAM,KAAKP,CAAG,CACzB,CAgBA,MAAMopD,GAAU,OAAO,SAAW,MAC5BC,GAAW,CAAC7K,EAAQ39C,IAAIA,EAAI29C,EAAO,QAAU,CAACA,EAAO39C,CAAC,EAAE,MAAQ29C,EAAO39C,CAAC,EACxEyoD,GAAgBC,GAAYA,IAAc,IAAM,IAAM,IAC5D,SAASC,GAAYC,EAAYC,EAAaC,EAAY1kC,EAAG,CAIzD,MAAMo/B,EAAWoF,EAAW,KAAOC,EAAcD,EAC3ChuC,EAAUiuC,EACV1gC,EAAO2gC,EAAW,KAAOD,EAAcC,EACvCC,EAAM/N,GAAsBpgC,EAAS4oC,CAAQ,EAC7CwF,EAAMhO,GAAsB7yB,EAAMvN,CAAO,EAC/C,IAAIquC,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GAEvBC,EAAM,MAAMA,CAAG,EAAI,EAAIA,EACvBC,EAAM,MAAMA,CAAG,EAAI,EAAIA,EACvB,MAAMC,EAAK/kC,EAAI6kC,EACTG,EAAKhlC,EAAI8kC,EACf,MAAO,CACH,SAAU,CACN,EAAGtuC,EAAQ,EAAIuuC,GAAMhhC,EAAK,EAAIq7B,EAAS,GACvC,EAAG5oC,EAAQ,EAAIuuC,GAAMhhC,EAAK,EAAIq7B,EAAS,EAC1C,EACD,KAAM,CACF,EAAG5oC,EAAQ,EAAIwuC,GAAMjhC,EAAK,EAAIq7B,EAAS,GACvC,EAAG5oC,EAAQ,EAAIwuC,GAAMjhC,EAAK,EAAIq7B,EAAS,EAC1C,CACT,CACA,CAGI,SAAS6F,GAAe1L,EAAQ2L,EAAQC,EAAI,CAC5C,MAAMC,EAAY7L,EAAO,OACzB,IAAI8L,EAAQC,EAAOC,EAAMC,EAAkBC,EACvCC,EAAatB,GAAS7K,EAAQ,CAAC,EACnC,QAAQ39C,EAAI,EAAGA,EAAIwpD,EAAY,EAAG,EAAExpD,EAGhC,GAFA6pD,EAAeC,EACfA,EAAatB,GAAS7K,EAAQ39C,EAAI,CAAC,EAC/B,GAAC6pD,GAAgB,CAACC,GAGtB,IAAI1Q,GAAakQ,EAAOtpD,CAAC,EAAG,EAAGuoD,EAAO,EAAG,CACrCgB,EAAGvpD,CAAC,EAAIupD,EAAGvpD,EAAI,CAAC,EAAI,EACpB,QACH,CACDypD,EAASF,EAAGvpD,CAAC,EAAIspD,EAAOtpD,CAAC,EACzB0pD,EAAQH,EAAGvpD,EAAI,CAAC,EAAIspD,EAAOtpD,CAAC,EAC5B4pD,EAAmB,KAAK,IAAIH,EAAQ,CAAC,EAAI,KAAK,IAAIC,EAAO,CAAC,EACtD,EAAAE,GAAoB,KAGxBD,EAAO,EAAI,KAAK,KAAKC,CAAgB,EACrCL,EAAGvpD,CAAC,EAAIypD,EAASE,EAAOL,EAAOtpD,CAAC,EAChCupD,EAAGvpD,EAAI,CAAC,EAAI0pD,EAAQC,EAAOL,EAAOtpD,CAAC,GAE3C,CACA,SAAS+pD,GAAgBpM,EAAQ4L,EAAIb,EAAY,IAAK,CAClD,MAAMsB,EAAYvB,GAAaC,CAAS,EAClCc,EAAY7L,EAAO,OACzB,IAAIkC,EAAOoK,EAAaJ,EACpBC,EAAatB,GAAS7K,EAAQ,CAAC,EACnC,QAAQ39C,EAAI,EAAGA,EAAIwpD,EAAW,EAAExpD,EAAE,CAI9B,GAHAiqD,EAAcJ,EACdA,EAAeC,EACfA,EAAatB,GAAS7K,EAAQ39C,EAAI,CAAC,EAC/B,CAAC6pD,EACD,SAEJ,MAAMK,EAASL,EAAanB,CAAS,EAC/ByB,EAASN,EAAaG,CAAS,EACjCC,IACApK,GAASqK,EAASD,EAAYvB,CAAS,GAAK,EAC5CmB,EAAa,MAAMnB,CAAS,EAAE,EAAIwB,EAASrK,EAC3CgK,EAAa,MAAMG,CAAS,EAAE,EAAIG,EAAStK,EAAQ0J,EAAGvpD,CAAC,GAEvD8pD,IACAjK,GAASiK,EAAWpB,CAAS,EAAIwB,GAAU,EAC3CL,EAAa,MAAMnB,CAAS,EAAE,EAAIwB,EAASrK,EAC3CgK,EAAa,MAAMG,CAAS,EAAE,EAAIG,EAAStK,EAAQ0J,EAAGvpD,CAAC,EAE9D,CACL,CAMI,SAASoqD,GAAoBzM,EAAQ+K,EAAY,IAAK,CACtD,MAAMsB,EAAYvB,GAAaC,CAAS,EAClCc,EAAY7L,EAAO,OACnB2L,EAAS,MAAME,CAAS,EAAE,KAAK,CAAC,EAChCD,EAAK,MAAMC,CAAS,EAE1B,IAAIxpD,EAAGiqD,EAAaJ,EAChBC,EAAatB,GAAS7K,EAAQ,CAAC,EACnC,IAAI39C,EAAI,EAAGA,EAAIwpD,EAAW,EAAExpD,EAIxB,GAHAiqD,EAAcJ,EACdA,EAAeC,EACfA,EAAatB,GAAS7K,EAAQ39C,EAAI,CAAC,EAC/B,EAAC6pD,EAGL,IAAIC,EAAY,CACZ,MAAMO,EAAaP,EAAWpB,CAAS,EAAImB,EAAanB,CAAS,EAEjEY,EAAOtpD,CAAC,EAAIqqD,IAAe,GAAKP,EAAWE,CAAS,EAAIH,EAAaG,CAAS,GAAKK,EAAa,CACnG,CACDd,EAAGvpD,CAAC,EAAKiqD,EAA2BH,EAA6B3Q,GAAKmQ,EAAOtpD,EAAI,CAAC,CAAC,IAAMm5C,GAAKmQ,EAAOtpD,CAAC,CAAC,EAAI,GAAKspD,EAAOtpD,EAAI,CAAC,EAAIspD,EAAOtpD,CAAC,GAAK,EAA5FspD,EAAOtpD,EAAI,CAAC,EAAtCspD,EAAOtpD,CAAC,EAEnCqpD,GAAe1L,EAAQ2L,EAAQC,CAAE,EACjCQ,GAAgBpM,EAAQ4L,EAAIb,CAAS,CACzC,CACA,SAAS4B,GAAgBC,EAAI1f,EAAKsJ,EAAK,CACnC,OAAO,KAAK,IAAI,KAAK,IAAIoW,EAAIpW,CAAG,EAAGtJ,CAAG,CAC1C,CACA,SAAS2f,GAAgB7M,EAAQwF,EAAM,CACnC,IAAInjD,EAAGo3C,EAAM8L,EAAOuH,EAAQC,EACxBC,EAAa1H,GAAetF,EAAO,CAAC,EAAGwF,CAAI,EAC/C,IAAInjD,EAAI,EAAGo3C,EAAOuG,EAAO,OAAQ39C,EAAIo3C,EAAM,EAAEp3C,EACzC0qD,EAAaD,EACbA,EAASE,EACTA,EAAa3qD,EAAIo3C,EAAO,GAAK6L,GAAetF,EAAO39C,EAAI,CAAC,EAAGmjD,CAAI,EAC1DsH,IAGLvH,EAAQvF,EAAO39C,CAAC,EACZ0qD,IACAxH,EAAM,KAAOoH,GAAgBpH,EAAM,KAAMC,EAAK,KAAMA,EAAK,KAAK,EAC9DD,EAAM,KAAOoH,GAAgBpH,EAAM,KAAMC,EAAK,IAAKA,EAAK,MAAM,GAE9DwH,IACAzH,EAAM,KAAOoH,GAAgBpH,EAAM,KAAMC,EAAK,KAAMA,EAAK,KAAK,EAC9DD,EAAM,KAAOoH,GAAgBpH,EAAM,KAAMC,EAAK,IAAKA,EAAK,MAAM,GAG1E,CAGI,SAASyH,GAA2BjN,EAAQ3pC,EAASmvC,EAAM0H,EAAMnC,EAAW,CAC5E,IAAI1oD,EAAGo3C,EAAM8L,EAAO4H,EAKpB,GAHI92C,EAAQ,WACR2pC,EAASA,EAAO,OAAQ4M,GAAK,CAACA,EAAG,IAAI,GAErCv2C,EAAQ,yBAA2B,WACnCo2C,GAAoBzM,EAAQ+K,CAAS,MAClC,CACH,IAAIt0C,EAAOy2C,EAAOlN,EAAOA,EAAO,OAAS,CAAC,EAAIA,EAAO,CAAC,EACtD,IAAI39C,EAAI,EAAGo3C,EAAOuG,EAAO,OAAQ39C,EAAIo3C,EAAM,EAAEp3C,EACzCkjD,EAAQvF,EAAO39C,CAAC,EAChB8qD,EAAgBnC,GAAYv0C,EAAM8uC,EAAOvF,EAAO,KAAK,IAAI39C,EAAI,EAAGo3C,GAAQyT,EAAO,EAAI,EAAE,EAAIzT,CAAI,EAAGpjC,EAAQ,OAAO,EAC/GkvC,EAAM,KAAO4H,EAAc,SAAS,EACpC5H,EAAM,KAAO4H,EAAc,SAAS,EACpC5H,EAAM,KAAO4H,EAAc,KAAK,EAChC5H,EAAM,KAAO4H,EAAc,KAAK,EAChC12C,EAAO8uC,CAEd,CACGlvC,EAAQ,iBACRw2C,GAAgB7M,EAAQwF,CAAI,CAEpC,CAUI,SAAS4H,IAAkB,CAC3B,OAAO,OAAO,OAAW,KAAe,OAAO,SAAa,GAChE,CAGI,SAASC,GAAeC,EAAS,CACjC,IAAI5zC,EAAS4zC,EAAQ,WACrB,OAAI5zC,GAAUA,EAAO,SAAQ,IAAO,wBAChCA,EAASA,EAAO,MAEbA,CACX,CAII,SAAS6zC,GAAcC,EAAY33B,EAAM43B,EAAgB,CACzD,IAAIC,EACJ,OAAI,OAAOF,GAAe,UACtBE,EAAgB,SAASF,EAAY,EAAE,EACnCA,EAAW,QAAQ,GAAG,IAAM,KAE5BE,EAAgBA,EAAgB,IAAM73B,EAAK,WAAW43B,CAAc,IAGxEC,EAAgBF,EAEbE,CACX,CACA,MAAMC,GAAoBC,GAAUA,EAAQ,cAAc,YAAY,iBAAiBA,EAAS,IAAI,EACpG,SAASC,GAASzrD,EAAIo6C,EAAU,CAC5B,OAAOmR,GAAiBvrD,CAAE,EAAE,iBAAiBo6C,CAAQ,CACzD,CACA,MAAMsR,GAAY,CACd,MACA,QACA,SACA,MACJ,EACA,SAASC,GAAmBC,EAAQv7B,EAAOw7B,EAAQ,CAC/C,MAAM5hD,EAAS,CAAA,EACf4hD,EAASA,EAAS,IAAMA,EAAS,GACjC,QAAQ,EAAI,EAAG,EAAI,EAAG,IAAI,CACtB,MAAMC,EAAMJ,GAAU,CAAC,EACvBzhD,EAAO6hD,CAAG,EAAI,WAAWF,EAAOv7B,EAAQ,IAAMy7B,EAAMD,CAAM,CAAC,GAAK,CACnE,CACD,OAAA5hD,EAAO,MAAQA,EAAO,KAAOA,EAAO,MACpCA,EAAO,OAASA,EAAO,IAAMA,EAAO,OAC7BA,CACX,CACA,MAAM8hD,GAAe,CAACzS,EAAGC,EAAG1xC,KAAUyxC,EAAI,GAAKC,EAAI,KAAO,CAAC1xC,GAAU,CAACA,EAAO,YAKzE,SAASmkD,GAAkB,EAAGzJ,EAAQ,CACtC,MAAM0J,EAAU,EAAE,QACZr8C,EAASq8C,GAAWA,EAAQ,OAASA,EAAQ,CAAC,EAAI,EAClD,CAAE,QAAAC,EAAU,QAAAC,CAAU,EAAGv8C,EAC/B,IAAIw8C,EAAM,GACN9S,EAAGC,EACP,GAAIwS,GAAaG,EAASC,EAAS,EAAE,MAAM,EACvC7S,EAAI4S,EACJ3S,EAAI4S,MACD,CACH,MAAMvH,EAAOrC,EAAO,wBACpBjJ,EAAI1pC,EAAO,QAAUg1C,EAAK,KAC1BrL,EAAI3pC,EAAO,QAAUg1C,EAAK,IAC1BwH,EAAM,EACT,CACD,MAAO,CACH,EAAA9S,EACA,EAAAC,EACA,IAAA6S,CACR,CACA,CAMI,SAASC,GAAoBx5C,EAAOovC,EAAO,CAC3C,GAAI,WAAYpvC,EACZ,OAAOA,EAEX,KAAM,CAAE,OAAA0vC,EAAS,wBAAA+J,CAA0B,EAAGrK,EACxC5xB,EAAQk7B,GAAiBhJ,CAAM,EAC/BgK,EAAYl8B,EAAM,YAAc,aAChCm8B,EAAWb,GAAmBt7B,EAAO,SAAS,EAC9Co8B,EAAUd,GAAmBt7B,EAAO,SAAU,OAAO,EACrD,CAAE,EAAAipB,EAAI,EAAAC,EAAI,IAAA6S,CAAM,EAAGJ,GAAkBn5C,EAAO0vC,CAAM,EAClDG,EAAU8J,EAAS,MAAQJ,GAAOK,EAAQ,MAC1C9J,EAAU6J,EAAS,KAAOJ,GAAOK,EAAQ,KAC/C,GAAI,CAAE,MAAAtK,EAAQ,OAAAuK,CAAS,EAAGzK,EAC1B,OAAIsK,IACApK,GAASqK,EAAS,MAAQC,EAAQ,MAClCC,GAAUF,EAAS,OAASC,EAAQ,QAEjC,CACH,EAAG,KAAK,OAAOnT,EAAIoJ,GAAWP,EAAQI,EAAO,MAAQ+J,CAAuB,EAC5E,EAAG,KAAK,OAAO/S,EAAIoJ,GAAW+J,EAASnK,EAAO,OAAS+J,CAAuB,CACtF,CACA,CACA,SAASK,GAAiBpK,EAAQJ,EAAOuK,EAAQ,CAC7C,IAAIE,EAAUC,EACd,GAAI1K,IAAU,QAAauK,IAAW,OAAW,CAC7C,MAAMzlC,EAAYgkC,GAAe1I,CAAM,EACvC,GAAI,CAACt7B,EACDk7B,EAAQI,EAAO,YACfmK,EAASnK,EAAO,iBACb,CACH,MAAMqC,EAAO39B,EAAU,wBACjB6lC,EAAiBvB,GAAiBtkC,CAAS,EAC3C8lC,EAAkBpB,GAAmBmB,EAAgB,SAAU,OAAO,EACtEE,EAAmBrB,GAAmBmB,EAAgB,SAAS,EACrE3K,EAAQyC,EAAK,MAAQoI,EAAiB,MAAQD,EAAgB,MAC9DL,EAAS9H,EAAK,OAASoI,EAAiB,OAASD,EAAgB,OACjEH,EAAWzB,GAAc2B,EAAe,SAAU7lC,EAAW,aAAa,EAC1E4lC,EAAY1B,GAAc2B,EAAe,UAAW7lC,EAAW,cAAc,CAChF,CACJ,CACD,MAAO,CACH,MAAAk7B,EACA,OAAAuK,EACA,SAAUE,GAAY9T,GACtB,UAAW+T,GAAa/T,EAChC,CACA,CACA,MAAMmU,GAAUroD,GAAI,KAAK,MAAMA,EAAI,EAAE,EAAI,GAEzC,SAASsoD,GAAe3K,EAAQ4K,EAASC,EAAUC,EAAa,CAC5D,MAAMh9B,EAAQk7B,GAAiBhJ,CAAM,EAC/B+K,EAAU3B,GAAmBt7B,EAAO,QAAQ,EAC5Cu8B,EAAWzB,GAAc96B,EAAM,SAAUkyB,EAAQ,aAAa,GAAKzJ,GACnE+T,EAAY1B,GAAc96B,EAAM,UAAWkyB,EAAQ,cAAc,GAAKzJ,GACtEyU,EAAgBZ,GAAiBpK,EAAQ4K,EAASC,CAAQ,EAChE,GAAI,CAAE,MAAAjL,EAAQ,OAAAuK,CAAS,EAAGa,EAC1B,GAAIl9B,EAAM,YAAc,cAAe,CACnC,MAAMo8B,EAAUd,GAAmBt7B,EAAO,SAAU,OAAO,EACrDm8B,EAAWb,GAAmBt7B,EAAO,SAAS,EACpD8xB,GAASqK,EAAS,MAAQC,EAAQ,MAClCC,GAAUF,EAAS,OAASC,EAAQ,MACvC,CACD,OAAAtK,EAAQ,KAAK,IAAI,EAAGA,EAAQmL,EAAQ,KAAK,EACzCZ,EAAS,KAAK,IAAI,EAAGW,EAAclL,EAAQkL,EAAcX,EAASY,EAAQ,MAAM,EAChFnL,EAAQ8K,GAAO,KAAK,IAAI9K,EAAOyK,EAAUW,EAAc,QAAQ,CAAC,EAChEb,EAASO,GAAO,KAAK,IAAIP,EAAQG,EAAWU,EAAc,SAAS,CAAC,EAChEpL,GAAS,CAACuK,IAGVA,EAASO,GAAO9K,EAAQ,CAAC,IAENgL,IAAY,QAAaC,IAAa,SACvCC,GAAeE,EAAc,QAAUb,EAASa,EAAc,SAChFb,EAASa,EAAc,OACvBpL,EAAQ8K,GAAO,KAAK,MAAMP,EAASW,CAAW,CAAC,GAE5C,CACH,MAAAlL,EACA,OAAAuK,CACR,CACA,CAMI,SAASc,GAAYvL,EAAOwL,EAAYC,EAAY,CACpD,MAAMC,EAAaF,GAAc,EAC3BG,EAAe,KAAK,MAAM3L,EAAM,OAAS0L,CAAU,EACnDE,EAAc,KAAK,MAAM5L,EAAM,MAAQ0L,CAAU,EACvD1L,EAAM,OAAS,KAAK,MAAMA,EAAM,MAAM,EACtCA,EAAM,MAAQ,KAAK,MAAMA,EAAM,KAAK,EACpC,MAAMM,EAASN,EAAM,OAQrB,OAJIM,EAAO,QAAUmL,GAAc,CAACnL,EAAO,MAAM,QAAU,CAACA,EAAO,MAAM,SACrEA,EAAO,MAAM,OAAS,GAAGN,EAAM,MAAM,KACrCM,EAAO,MAAM,MAAQ,GAAGN,EAAM,KAAK,MAEnCA,EAAM,0BAA4B0L,GAAcpL,EAAO,SAAWqL,GAAgBrL,EAAO,QAAUsL,GACnG5L,EAAM,wBAA0B0L,EAChCpL,EAAO,OAASqL,EAChBrL,EAAO,MAAQsL,EACf5L,EAAM,IAAI,aAAa0L,EAAY,EAAG,EAAGA,EAAY,EAAG,CAAC,EAClD,IAEJ,EACX,CAKI,MAAMG,GAA+B,UAAW,CAChD,IAAIC,EAAmB,GACvB,GAAI,CACA,MAAM95C,EAAU,CACZ,IAAI,SAAW,CACX,OAAA85C,EAAmB,GACZ,EACV,CACb,EACY/C,GAAe,IACf,OAAO,iBAAiB,OAAQ,KAAM/2C,CAAO,EAC7C,OAAO,oBAAoB,OAAQ,KAAMA,CAAO,EAEvD,MAAW,CAEX,CACD,OAAO85C,CACX,IASI,SAASC,GAAaxC,EAASpR,EAAU,CACzC,MAAMr5C,EAAQ0qD,GAASD,EAASpR,CAAQ,EAClCxa,EAAU7+B,GAASA,EAAM,MAAM,mBAAmB,EACxD,OAAO6+B,EAAU,CAACA,EAAQ,CAAC,EAAI,MACnC,CAII,SAASquB,GAAaluB,EAAIC,EAAI3b,EAAGs/B,EAAM,CACvC,MAAO,CACH,EAAG5jB,EAAG,EAAI1b,GAAK2b,EAAG,EAAID,EAAG,GACzB,EAAGA,EAAG,EAAI1b,GAAK2b,EAAG,EAAID,EAAG,EACjC,CACA,CAGI,SAASmuB,GAAsBnuB,EAAIC,EAAI3b,EAAGs/B,EAAM,CAChD,MAAO,CACH,EAAG5jB,EAAG,EAAI1b,GAAK2b,EAAG,EAAID,EAAG,GACzB,EAAG4jB,IAAS,SAAWt/B,EAAI,GAAM0b,EAAG,EAAIC,EAAG,EAAI2jB,IAAS,QAAUt/B,EAAI,EAAI0b,EAAG,EAAIC,EAAG,EAAI3b,EAAI,EAAI2b,EAAG,EAAID,EAAG,CAClH,CACA,CAGI,SAASouB,GAAqBpuB,EAAIC,EAAI3b,EAAGs/B,EAAM,CAC/C,MAAMyK,EAAM,CACR,EAAGruB,EAAG,KACN,EAAGA,EAAG,IACd,EACUsuB,EAAM,CACR,EAAGruB,EAAG,KACN,EAAGA,EAAG,IACd,EACU,EAAIiuB,GAAaluB,EAAIquB,EAAK/pC,CAAC,EAC3BxgB,EAAIoqD,GAAaG,EAAKC,EAAKhqC,CAAC,EAC5B3iB,EAAIusD,GAAaI,EAAKruB,EAAI3b,CAAC,EAC3B8vB,EAAI8Z,GAAa,EAAGpqD,EAAGwgB,CAAC,EACxBiO,EAAI27B,GAAapqD,EAAGnC,EAAG2iB,CAAC,EAC9B,OAAO4pC,GAAa9Z,EAAG7hB,EAAGjO,CAAC,CAC/B,CAEA,MAAMiqC,GAAwB,SAASC,EAAOpM,EAAO,CACjD,MAAO,CACH,EAAG7I,EAAG,CACF,OAAOiV,EAAQA,EAAQpM,EAAQ7I,CAClC,EACD,SAAUhS,EAAG,CACT6a,EAAQ7a,CACX,EACD,UAAWkW,EAAO,CACd,OAAIA,IAAU,SACHA,EAEJA,IAAU,QAAU,OAAS,OACvC,EACD,MAAOlE,EAAGv4C,EAAO,CACb,OAAOu4C,EAAIv4C,CACd,EACD,WAAYu4C,EAAGkV,EAAW,CACtB,OAAOlV,EAAIkV,CACd,CACT,CACA,EACMC,GAAwB,UAAW,CACrC,MAAO,CACH,EAAGnV,EAAG,CACF,OAAOA,CACV,EACD,SAAUhS,EAAG,CAAE,EACf,UAAWkW,EAAO,CACd,OAAOA,CACV,EACD,MAAOlE,EAAGv4C,EAAO,CACb,OAAOu4C,EAAIv4C,CACd,EACD,WAAYu4C,EAAGoV,EAAY,CACvB,OAAOpV,CACV,CACT,CACA,EACA,SAASqV,GAAcC,EAAKL,EAAOpM,EAAO,CACtC,OAAOyM,EAAMN,GAAsBC,EAAOpM,CAAK,EAAIsM,GAAqB,CAC5E,CACA,SAASI,GAAsBt6C,EAAKu6C,EAAW,CAC3C,IAAIz+B,EAAO0+B,GACPD,IAAc,OAASA,IAAc,SACrCz+B,EAAQ9b,EAAI,OAAO,MACnBw6C,EAAW,CACP1+B,EAAM,iBAAiB,WAAW,EAClCA,EAAM,oBAAoB,WAAW,CACjD,EACQA,EAAM,YAAY,YAAay+B,EAAW,WAAW,EACrDv6C,EAAI,kBAAoBw6C,EAEhC,CACA,SAASC,GAAqBz6C,EAAKw6C,EAAU,CACrCA,IAAa,SACb,OAAOx6C,EAAI,kBACXA,EAAI,OAAO,MAAM,YAAY,YAAaw6C,EAAS,CAAC,EAAGA,EAAS,CAAC,CAAC,EAE1E,CAEA,SAASE,GAAW7U,EAAU,CAC1B,OAAIA,IAAa,QACN,CACH,QAASkB,GACT,QAASF,GACT,UAAWC,EACvB,EAEW,CACH,QAASS,GACT,QAAS,CAACl4C,EAAGC,IAAID,EAAIC,EACrB,UAAYy1C,GAAIA,CACxB,CACA,CACA,SAAS4V,GAAiB,CAAE,MAAAz9C,EAAQ,IAAAC,EAAM,MAAAqsC,EAAQ,KAAA+M,EAAO,MAAAz6B,GAAU,CAC/D,MAAO,CACH,MAAO5e,EAAQssC,EACf,IAAKrsC,EAAMqsC,EACX,KAAM+M,IAASp5C,EAAMD,EAAQ,GAAKssC,IAAU,EAC5C,MAAA1tB,CACR,CACA,CACA,SAAS8+B,GAAWC,EAASxR,EAAQyR,EAAQ,CACzC,KAAM,CAAE,SAAAjV,EAAW,MAAOkV,EAAa,IAAKC,CAAW,EAAGF,EACpD,CAAE,QAAAG,EAAU,UAAAC,CAAY,EAAGR,GAAW7U,CAAQ,EAC9C2D,EAAQH,EAAO,OACrB,GAAI,CAAE,MAAAnsC,EAAQ,IAAAC,EAAM,KAAAo5C,CAAI,EAAMsE,EAC1BnvD,EAAGo3C,EACP,GAAIyT,EAAM,CAGN,IAFAr5C,GAASssC,EACTrsC,GAAOqsC,EACH99C,EAAI,EAAGo3C,EAAO0G,EAAO99C,EAAIo3C,GACpBmY,EAAQC,EAAU7R,EAAOnsC,EAAQssC,CAAK,EAAE3D,CAAQ,CAAC,EAAGkV,EAAYC,CAAQ,EAD9C,EAAEtvD,EAIjCwR,IACAC,IAEJD,GAASssC,EACTrsC,GAAOqsC,CACV,CACD,OAAIrsC,EAAMD,IACNC,GAAOqsC,GAEJ,CACH,MAAAtsC,EACA,IAAAC,EACA,KAAAo5C,EACA,MAAOsE,EAAQ,KACvB,CACA,CACC,SAASM,GAAcN,EAASxR,EAAQyR,EAAQ,CAC7C,GAAI,CAACA,EACD,MAAO,CACHD,CACZ,EAEI,KAAM,CAAE,SAAAhV,EAAW,MAAOkV,EAAa,IAAKC,CAAW,EAAGF,EACpDtR,EAAQH,EAAO,OACf,CAAE,QAAA+R,EAAU,QAAAH,EAAU,UAAAC,CAAS,EAAMR,GAAW7U,CAAQ,EACxD,CAAE,MAAA3oC,EAAQ,IAAAC,EAAM,KAAAo5C,EAAO,MAAAz6B,GAAW8+B,GAAWC,EAASxR,EAAQyR,CAAM,EACpEplD,EAAS,CAAA,EACf,IAAI2lD,EAAS,GACTC,EAAW,KACX9uD,EAAOoiD,EAAOvtB,EAClB,MAAMk6B,EAAgB,IAAIN,EAAQF,EAAY15B,EAAW70B,CAAK,GAAK4uD,EAAQL,EAAY15B,CAAS,IAAM,EAChGm6B,EAAc,IAAIJ,EAAQJ,EAAUxuD,CAAK,IAAM,GAAKyuD,EAAQD,EAAU35B,EAAW70B,CAAK,EACtFivD,EAAc,IAAIJ,GAAUE,IAC5BG,EAAa,IAAI,CAACL,GAAUG,EAAW,EAC7C,QAAQ9vD,EAAIwR,EAAO4C,EAAO5C,EAAOxR,GAAKyR,EAAK,EAAEzR,EACzCkjD,EAAQvF,EAAO39C,EAAI89C,CAAK,EACpB,CAAAoF,EAAM,OAGVpiD,EAAQ0uD,EAAUtM,EAAM/I,CAAQ,CAAC,EAC7Br5C,IAAU60B,IAGdg6B,EAASJ,EAAQzuD,EAAOuuD,EAAYC,CAAQ,EACxCM,IAAa,MAAQG,MACrBH,EAAWF,EAAQ5uD,EAAOuuD,CAAU,IAAM,EAAIrvD,EAAIoU,GAElDw7C,IAAa,MAAQI,MACrBhmD,EAAO,KAAKilD,GAAiB,CACzB,MAAOW,EACP,IAAK5vD,EACL,KAAA6qD,EACA,MAAA/M,EACA,MAAA1tB,CACH,CAAA,CAAC,EACFw/B,EAAW,MAEfx7C,EAAOpU,EACP21B,EAAY70B,IAEhB,OAAI8uD,IAAa,MACb5lD,EAAO,KAAKilD,GAAiB,CACzB,MAAOW,EACP,IAAAn+C,EACA,KAAAo5C,EACA,MAAA/M,EACA,MAAA1tB,CACH,CAAA,CAAC,EAECpmB,CACX,CACC,SAASimD,GAAexpB,EAAM2oB,EAAQ,CACnC,MAAMplD,EAAS,CAAA,EACT0P,EAAW+sB,EAAK,SACtB,QAAQ,EAAI,EAAG,EAAI/sB,EAAS,OAAQ,IAAI,CACpC,MAAMw2C,EAAMT,GAAc/1C,EAAS,CAAC,EAAG+sB,EAAK,OAAQ2oB,CAAM,EACtDc,EAAI,QACJlmD,EAAO,KAAK,GAAGkmD,CAAG,CAEzB,CACD,OAAOlmD,CACX,CACC,SAASmmD,GAAgBxS,EAAQG,EAAO+M,EAAMuF,EAAU,CACrD,IAAI5+C,EAAQ,EACRC,EAAMqsC,EAAQ,EAClB,GAAI+M,GAAQ,CAACuF,EACT,KAAM5+C,EAAQssC,GAAS,CAACH,EAAOnsC,CAAK,EAAE,MAClCA,IAGR,KAAMA,EAAQssC,GAASH,EAAOnsC,CAAK,EAAE,MACjCA,IAMJ,IAJAA,GAASssC,EACL+M,IACAp5C,GAAOD,GAELC,EAAMD,GAASmsC,EAAOlsC,EAAMqsC,CAAK,EAAE,MACrCrsC,IAEJ,OAAAA,GAAOqsC,EACA,CACH,MAAAtsC,EACA,IAAAC,CACR,CACA,CACC,SAAS4+C,GAAc1S,EAAQnsC,EAAO2iC,EAAK0W,EAAM,CAC9C,MAAM/M,EAAQH,EAAO,OACf3zC,EAAS,CAAA,EACf,IAAI7E,EAAOqM,EACP4C,EAAOupC,EAAOnsC,CAAK,EACnBC,EACJ,IAAIA,EAAMD,EAAQ,EAAGC,GAAO0iC,EAAK,EAAE1iC,EAAI,CACnC,MAAMpB,EAAMstC,EAAOlsC,EAAMqsC,CAAK,EAC1BztC,EAAI,MAAQA,EAAI,KACX+D,EAAK,OACNy2C,EAAO,GACP7gD,EAAO,KAAK,CACR,MAAOwH,EAAQssC,EACf,KAAMrsC,EAAM,GAAKqsC,EACjB,KAAA+M,CACpB,CAAiB,EACDr5C,EAAQrM,EAAOkL,EAAI,KAAOoB,EAAM,OAGpCtM,EAAOsM,EACH2C,EAAK,OACL5C,EAAQC,IAGhB2C,EAAO/D,CACV,CACD,OAAIlL,IAAS,MACT6E,EAAO,KAAK,CACR,MAAOwH,EAAQssC,EACf,IAAK34C,EAAO24C,EACZ,KAAA+M,CACZ,CAAS,EAEE7gD,CACX,CACC,SAASsmD,GAAiB7pB,EAAM8pB,EAAgB,CAC7C,MAAM5S,EAASlX,EAAK,OACd2pB,EAAW3pB,EAAK,QAAQ,SACxBqX,EAAQH,EAAO,OACrB,GAAI,CAACG,EACD,MAAO,GAEX,MAAM+M,EAAO,CAAC,CAACpkB,EAAK,MACd,CAAE,MAAAj1B,EAAQ,IAAAC,GAAS0+C,GAAgBxS,EAAQG,EAAO+M,EAAMuF,CAAQ,EACtE,GAAIA,IAAa,GACb,OAAOI,GAAc/pB,EAAM,CACvB,CACI,MAAAj1B,EACA,IAAAC,EACA,KAAAo5C,CACH,CACb,EAAWlN,EAAQ4S,CAAc,EAE7B,MAAMpc,EAAM1iC,EAAMD,EAAQC,EAAMqsC,EAAQrsC,EAClCg/C,EAAe,CAAC,CAAChqB,EAAK,WAAaj1B,IAAU,GAAKC,IAAQqsC,EAAQ,EACxE,OAAO0S,GAAc/pB,EAAM4pB,GAAc1S,EAAQnsC,EAAO2iC,EAAKsc,CAAY,EAAG9S,EAAQ4S,CAAc,CACtG,CACC,SAASC,GAAc/pB,EAAM/sB,EAAUikC,EAAQ4S,EAAgB,CAC5D,MAAI,CAACA,GAAkB,CAACA,EAAe,YAAc,CAAC5S,EAC3CjkC,EAEJg3C,GAAgBjqB,EAAM/sB,EAAUikC,EAAQ4S,CAAc,CACjE,CACC,SAASG,GAAgBjqB,EAAM/sB,EAAUikC,EAAQ4S,EAAgB,CAC9D,MAAMI,EAAelqB,EAAK,OAAO,WAAU,EACrCmqB,EAAYC,GAAUpqB,EAAK,OAAO,EAClC,CAAE,cAAeqqB,EAAe,QAAS,CAAE,SAAAV,CAAQ,CAAM,EAAG3pB,EAC5DqX,EAAQH,EAAO,OACf3zC,EAAS,CAAA,EACf,IAAIyqB,EAAYm8B,EACZp/C,EAAQkI,EAAS,CAAC,EAAE,MACpB1Z,EAAIwR,EACR,SAASu/C,EAASj4C,EAAGuZ,EAAGntB,EAAG8rD,EAAI,CAC3B,MAAMh3C,EAAMo2C,EAAW,GAAK,EAC5B,GAAIt3C,IAAMuZ,EAIV,KADAvZ,GAAKglC,EACCH,EAAO7kC,EAAIglC,CAAK,EAAE,MACpBhlC,GAAKkB,EAET,KAAM2jC,EAAOtrB,EAAIyrB,CAAK,EAAE,MACpBzrB,GAAKrY,EAELlB,EAAIglC,IAAUzrB,EAAIyrB,IAClB9zC,EAAO,KAAK,CACR,MAAO8O,EAAIglC,EACX,IAAKzrB,EAAIyrB,EACT,KAAM54C,EACN,MAAO8rD,CACvB,CAAa,EACDv8B,EAAYu8B,EACZx/C,EAAQ6gB,EAAIyrB,GAEnB,CACD,UAAWqR,KAAWz1C,EAAS,CAC3BlI,EAAQ4+C,EAAW5+C,EAAQ29C,EAAQ,MACnC,IAAI/6C,EAAOupC,EAAOnsC,EAAQssC,CAAK,EAC3B1tB,EACJ,IAAIpwB,EAAIwR,EAAQ,EAAGxR,GAAKmvD,EAAQ,IAAKnvD,IAAI,CACrC,MAAMuqD,EAAK5M,EAAO39C,EAAI89C,CAAK,EAC3B1tB,EAAQygC,GAAUN,EAAe,WAAWvK,GAAc2K,EAAc,CACpE,KAAM,UACN,GAAIv8C,EACJ,GAAIm2C,EACJ,aAAcvqD,EAAI,GAAK89C,EACvB,YAAa99C,EAAI89C,EACjB,aAAAgT,CACH,CAAA,CAAC,CAAC,EACCG,GAAa7gC,EAAOqE,CAAS,GAC7Bs8B,EAASv/C,EAAOxR,EAAI,EAAGmvD,EAAQ,KAAM16B,CAAS,EAElDrgB,EAAOm2C,EACP91B,EAAYrE,CACf,CACG5e,EAAQxR,EAAI,GACZ+wD,EAASv/C,EAAOxR,EAAI,EAAGmvD,EAAQ,KAAM16B,CAAS,CAErD,CACD,OAAOzqB,CACX,CACA,SAAS6mD,GAAU78C,EAAS,CACxB,MAAO,CACH,gBAAiBA,EAAQ,gBACzB,eAAgBA,EAAQ,eACxB,WAAYA,EAAQ,WACpB,iBAAkBA,EAAQ,iBAC1B,gBAAiBA,EAAQ,gBACzB,YAAaA,EAAQ,YACrB,YAAaA,EAAQ,WAC7B,CACA,CACA,SAASi9C,GAAa7gC,EAAOqE,EAAW,CACpC,GAAI,CAACA,EACD,MAAO,GAEX,MAAMpzB,EAAQ,CAAA,EACRiD,EAAW,SAAS5E,EAAKoB,EAAO,CAClC,OAAKg+C,GAAoBh+C,CAAK,GAGzBO,EAAM,SAASP,CAAK,GACrBO,EAAM,KAAKP,CAAK,EAEbO,EAAM,QAAQP,CAAK,GALfA,CAMnB,EACI,OAAO,KAAK,UAAUsvB,EAAO9rB,CAAQ,IAAM,KAAK,UAAUmwB,EAAWnwB,CAAQ,CACjF,CCtrFA;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAM4sD,EAAS,CACX,aAAa,CACT,KAAK,SAAW,KAChB,KAAK,QAAU,IAAI,IACnB,KAAK,SAAW,GAChB,KAAK,UAAY,MACpB,CACJ,QAAQlP,EAAOmP,EAAOC,EAAMvpD,EAAM,CAC3B,MAAMwpD,EAAYF,EAAM,UAAUtpD,CAAI,EAChCypD,EAAWH,EAAM,SACvBE,EAAU,QAASjwD,GAAKA,EAAG,CACnB,MAAA4gD,EACA,QAASmP,EAAM,QACf,SAAAG,EACA,YAAa,KAAK,IAAIF,EAAOD,EAAM,MAAOG,CAAQ,CACrD,CAAA,CAAC,CACT,CACJ,UAAW,CACA,KAAK,WAGT,KAAK,SAAW,GAChB,KAAK,SAAWvU,GAAiB,KAAK,OAAQ,IAAI,CAC9C,KAAK,QAAO,EACZ,KAAK,SAAW,KACZ,KAAK,UACL,KAAK,SAAQ,CAE7B,CAAS,EACJ,CACJ,QAAQqU,EAAO,KAAK,MAAO,CACpB,IAAIG,EAAY,EAChB,KAAK,QAAQ,QAAQ,CAACJ,EAAOnP,IAAQ,CACjC,GAAI,CAACmP,EAAM,SAAW,CAACA,EAAM,MAAM,OAC/B,OAEJ,MAAMrU,EAAQqU,EAAM,MACpB,IAAInxD,EAAI88C,EAAM,OAAS,EACnB0U,EAAO,GACP5uD,EACJ,KAAM5C,GAAK,EAAG,EAAEA,EACZ4C,EAAOk6C,EAAM98C,CAAC,EACV4C,EAAK,SACDA,EAAK,OAASuuD,EAAM,WACpBA,EAAM,SAAWvuD,EAAK,QAE1BA,EAAK,KAAKwuD,CAAI,EACdI,EAAO,KAEP1U,EAAM98C,CAAC,EAAI88C,EAAMA,EAAM,OAAS,CAAC,EACjCA,EAAM,IAAG,GAGb0U,IACAxP,EAAM,KAAI,EACV,KAAK,QAAQA,EAAOmP,EAAOC,EAAM,UAAU,GAE1CtU,EAAM,SACPqU,EAAM,QAAU,GAChB,KAAK,QAAQnP,EAAOmP,EAAOC,EAAM,UAAU,EAC3CD,EAAM,QAAU,IAEpBI,GAAazU,EAAM,MAC/B,CAAS,EACD,KAAK,UAAYsU,EACbG,IAAc,IACd,KAAK,SAAW,GAEvB,CACJ,UAAUvP,EAAO,CACV,MAAMyP,EAAS,KAAK,QACpB,IAAIN,EAAQM,EAAO,IAAIzP,CAAK,EAC5B,OAAKmP,IACDA,EAAQ,CACJ,QAAS,GACT,QAAS,GACT,MAAO,CAAE,EACT,UAAW,CACP,SAAU,CAAE,EACZ,SAAU,CAAE,CACf,CACjB,EACYM,EAAO,IAAIzP,EAAOmP,CAAK,GAEpBA,CACV,CACJ,OAAOnP,EAAOpvC,EAAOR,EAAI,CAClB,KAAK,UAAU4vC,CAAK,EAAE,UAAUpvC,CAAK,EAAE,KAAKR,CAAE,CACjD,CACJ,IAAI4vC,EAAOlF,EAAO,CACP,CAACA,GAAS,CAACA,EAAM,QAGrB,KAAK,UAAUkF,CAAK,EAAE,MAAM,KAAK,GAAGlF,CAAK,CAC5C,CACJ,IAAIkF,EAAO,CACJ,OAAO,KAAK,UAAUA,CAAK,EAAE,MAAM,OAAS,CAC/C,CACJ,MAAMA,EAAO,CACN,MAAMmP,EAAQ,KAAK,QAAQ,IAAInP,CAAK,EAC/BmP,IAGLA,EAAM,QAAU,GAChBA,EAAM,MAAQ,KAAK,MACnBA,EAAM,SAAWA,EAAM,MAAM,OAAO,CAACO,EAAKrhD,IAAM,KAAK,IAAIqhD,EAAKrhD,EAAI,SAAS,EAAG,CAAC,EAC/E,KAAK,SAAQ,EAChB,CACD,QAAQ2xC,EAAO,CACX,GAAI,CAAC,KAAK,SACN,MAAO,GAEX,MAAMmP,EAAQ,KAAK,QAAQ,IAAInP,CAAK,EACpC,MAAI,GAACmP,GAAS,CAACA,EAAM,SAAW,CAACA,EAAM,MAAM,OAIhD,CACJ,KAAKnP,EAAO,CACL,MAAMmP,EAAQ,KAAK,QAAQ,IAAInP,CAAK,EACpC,GAAI,CAACmP,GAAS,CAACA,EAAM,MAAM,OACvB,OAEJ,MAAMrU,EAAQqU,EAAM,MACpB,IAAI,EAAIrU,EAAM,OAAS,EACvB,KAAM,GAAK,EAAG,EAAE,EACZA,EAAM,CAAC,EAAE,SAEbqU,EAAM,MAAQ,GACd,KAAK,QAAQnP,EAAOmP,EAAO,KAAK,IAAG,EAAI,UAAU,CACpD,CACJ,OAAOnP,EAAO,CACP,OAAO,KAAK,QAAQ,OAAOA,CAAK,CACnC,CACL,CACA,IAAI2P,GAA2B,IAAIT,GAEnC,MAAMU,GAAc,cACdC,GAAgB,CAClB,QAAS5xC,EAAMD,EAAI8xC,EAAQ,CACvB,OAAOA,EAAS,GAAM9xC,EAAKC,CAC9B,EACJ,MAAOA,EAAMD,EAAI8xC,EAAQ,CAClB,MAAMC,EAAK3b,GAAMn2B,GAAQ2xC,EAAW,EAC9BhmC,EAAKmmC,EAAG,OAAS3b,GAAMp2B,GAAM4xC,EAAW,EAC9C,OAAOhmC,GAAMA,EAAG,MAAQA,EAAG,IAAImmC,EAAID,CAAM,EAAE,UAAW,EAAG9xC,CAC5D,EACD,OAAQC,EAAMD,EAAI8xC,EAAQ,CACtB,OAAO7xC,GAAQD,EAAKC,GAAQ6xC,CAC/B,CACL,EACA,MAAME,EAAU,CACZ,YAAYC,EAAKrqD,EAAQgc,EAAM5D,EAAG,CAC9B,MAAMkyC,EAAetqD,EAAOgc,CAAI,EAChC5D,EAAKqpB,GAAQ,CACT4oB,EAAI,GACJjyC,EACAkyC,EACAD,EAAI,IAChB,CAAS,EACD,MAAMhyC,EAAOopB,GAAQ,CACjB4oB,EAAI,KACJC,EACAlyC,CACZ,CAAS,EACD,KAAK,QAAU,GACf,KAAK,IAAMiyC,EAAI,IAAMJ,GAAcI,EAAI,MAAQ,OAAOhyC,CAAI,EAC1D,KAAK,QAAU4+B,GAAQoT,EAAI,MAAM,GAAKpT,GAAQ,OAC9C,KAAK,OAAS,KAAK,MAAM,KAAK,IAAK,GAAIoT,EAAI,OAAS,EAAE,EACtD,KAAK,UAAY,KAAK,OAAS,KAAK,MAAMA,EAAI,QAAQ,EACtD,KAAK,MAAQ,CAAC,CAACA,EAAI,KACnB,KAAK,QAAUrqD,EACf,KAAK,MAAQgc,EACb,KAAK,MAAQ3D,EACb,KAAK,IAAMD,EACX,KAAK,UAAY,MACpB,CACD,QAAS,CACL,OAAO,KAAK,OACf,CACD,OAAOiyC,EAAKjyC,EAAIoxC,EAAM,CAClB,GAAI,KAAK,QAAS,CACd,KAAK,QAAQ,EAAK,EAClB,MAAMc,EAAe,KAAK,QAAQ,KAAK,KAAK,EACtCC,EAAUf,EAAO,KAAK,OACtBlR,EAAS,KAAK,UAAYiS,EAChC,KAAK,OAASf,EACd,KAAK,UAAY,KAAK,MAAM,KAAK,IAAIlR,EAAQ+R,EAAI,QAAQ,CAAC,EAC1D,KAAK,QAAUE,EACf,KAAK,MAAQ,CAAC,CAACF,EAAI,KACnB,KAAK,IAAM5oB,GAAQ,CACf4oB,EAAI,GACJjyC,EACAkyC,EACAD,EAAI,IACpB,CAAa,EACD,KAAK,MAAQ5oB,GAAQ,CACjB4oB,EAAI,KACJC,EACAlyC,CAChB,CAAa,CACJ,CACJ,CACD,QAAS,CACD,KAAK,UACL,KAAK,KAAK,KAAK,IAAK,CAAA,EACpB,KAAK,QAAU,GACf,KAAK,QAAQ,EAAK,EAEzB,CACD,KAAKoxC,EAAM,CACP,MAAMe,EAAUf,EAAO,KAAK,OACtBgB,EAAW,KAAK,UAChBxuC,EAAO,KAAK,MACZ3D,EAAO,KAAK,MACZ4qC,EAAO,KAAK,MACZ7qC,EAAK,KAAK,IAChB,IAAI8xC,EAEJ,GADA,KAAK,QAAU7xC,IAASD,IAAO6qC,GAAQsH,EAAUC,GAC7C,CAAC,KAAK,QAAS,CACf,KAAK,QAAQxuC,CAAI,EAAI5D,EACrB,KAAK,QAAQ,EAAI,EACjB,MACH,CACD,GAAImyC,EAAU,EAAG,CACb,KAAK,QAAQvuC,CAAI,EAAI3D,EACrB,MACH,CACD6xC,EAASK,EAAUC,EAAW,EAC9BN,EAASjH,GAAQiH,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAAS,KAAK,QAAQ,KAAK,IAAI,EAAG,KAAK,IAAI,EAAGA,CAAM,CAAC,CAAC,EACtD,KAAK,QAAQluC,CAAI,EAAI,KAAK,IAAI3D,EAAMD,EAAI8xC,CAAM,CACjD,CACD,MAAO,CACH,MAAM9gB,EAAW,KAAK,YAAc,KAAK,UAAY,CAAA,GACrD,OAAO,IAAI,QAAQ,CAACruC,EAAK0vD,IAAM,CAC3BrhB,EAAS,KAAK,CACV,IAAAruC,EACA,IAAA0vD,CAChB,CAAa,CACb,CAAS,CACJ,CACD,QAAQxyC,EAAU,CACd,MAAMnU,EAASmU,EAAW,MAAQ,MAC5BmxB,EAAW,KAAK,WAAa,GACnC,QAAQ,EAAI,EAAG,EAAIA,EAAS,OAAQ,IAChCA,EAAS,CAAC,EAAEtlC,CAAM,GAEzB,CACL,CAEA,MAAM4mD,EAAW,CACb,YAAYtQ,EAAOrgB,EAAO,CACtB,KAAK,OAASqgB,EACd,KAAK,YAAc,IAAI,IACvB,KAAK,UAAUrgB,CAAM,CACxB,CACD,UAAUA,EAAQ,CACd,GAAI,CAAChhC,GAASghC,CAAM,EAChB,OAEJ,MAAM4wB,EAAmB,OAAO,KAAK7sB,GAAS,SAAS,EACjD8sB,EAAgB,KAAK,YAC3B,OAAO,oBAAoB7wB,CAAM,EAAE,QAASjiC,GAAM,CAC9C,MAAMuyD,EAAMtwB,EAAOjiC,CAAG,EACtB,GAAI,CAACiB,GAASsxD,CAAG,EACb,OAEJ,MAAMpyC,EAAW,CAAA,EACjB,UAAW8iB,KAAU4vB,EACjB1yC,EAAS8iB,CAAM,EAAIsvB,EAAItvB,CAAM,GAEhCxiC,GAAQ8xD,EAAI,UAAU,GAAKA,EAAI,YAAc,CAC1CvyD,CAChB,GAAe,QAASkkB,GAAO,EACXA,IAASlkB,GAAO,CAAC8yD,EAAc,IAAI5uC,CAAI,IACvC4uC,EAAc,IAAI5uC,EAAM/D,CAAQ,CAEpD,CAAa,CACb,CAAS,CACJ,CACJ,gBAAgBjY,EAAQsI,EAAQ,CACzB,MAAMuiD,EAAaviD,EAAO,QACpB8D,EAAU0+C,GAAqB9qD,EAAQ6qD,CAAU,EACvD,GAAI,CAACz+C,EACD,MAAO,GAEX,MAAM2+C,EAAa,KAAK,kBAAkB3+C,EAASy+C,CAAU,EAC7D,OAAIA,EAAW,SACXG,GAAShrD,EAAO,QAAQ,YAAa6qD,CAAU,EAAE,KAAK,IAAI,CACtD7qD,EAAO,QAAU6qD,CACjC,EAAe,IAAI,CACnB,CAAa,EAEEE,CACV,CACJ,kBAAkB/qD,EAAQsI,EAAQ,CAC3B,MAAMsiD,EAAgB,KAAK,YACrBG,EAAa,CAAA,EACbE,EAAUjrD,EAAO,cAAgBA,EAAO,YAAc,CAAA,GACtDkL,EAAQ,OAAO,KAAK5C,CAAM,EAC1BkhD,EAAO,KAAK,MAClB,IAAIpxD,EACJ,IAAIA,EAAI8S,EAAM,OAAS,EAAG9S,GAAK,EAAG,EAAEA,EAAE,CAClC,MAAM4jB,EAAO9Q,EAAM9S,CAAC,EACpB,GAAI4jB,EAAK,OAAO,CAAC,IAAM,IACnB,SAEJ,GAAIA,IAAS,UAAW,CACpB+uC,EAAW,KAAK,GAAG,KAAK,gBAAgB/qD,EAAQsI,CAAM,CAAC,EACvD,QACH,CACD,MAAMpP,EAAQoP,EAAO0T,CAAI,EACzB,IAAIkvC,EAAYD,EAAQjvC,CAAI,EAC5B,MAAMquC,EAAMO,EAAc,IAAI5uC,CAAI,EAClC,GAAIkvC,EACA,GAAIb,GAAOa,EAAU,SAAU,CAC3BA,EAAU,OAAOb,EAAKnxD,EAAOswD,CAAI,EACjC,QACpB,MACoB0B,EAAU,OAAM,EAGxB,GAAI,CAACb,GAAO,CAACA,EAAI,SAAU,CACvBrqD,EAAOgc,CAAI,EAAI9iB,EACf,QACH,CACD+xD,EAAQjvC,CAAI,EAAIkvC,EAAY,IAAId,GAAUC,EAAKrqD,EAAQgc,EAAM9iB,CAAK,EAClE6xD,EAAW,KAAKG,CAAS,CAC5B,CACD,OAAOH,CACV,CACJ,OAAO/qD,EAAQsI,EAAQ,CAChB,GAAI,KAAK,YAAY,OAAS,EAAG,CAC7B,OAAO,OAAOtI,EAAQsI,CAAM,EAC5B,MACH,CACD,MAAMyiD,EAAa,KAAK,kBAAkB/qD,EAAQsI,CAAM,EACxD,GAAIyiD,EAAW,OACX,OAAAhB,GAAS,IAAI,KAAK,OAAQgB,CAAU,EAC7B,EAEd,CACL,CACA,SAASC,GAASD,EAAYI,EAAY,CACtC,MAAMF,EAAU,CAAA,EACV58C,EAAO,OAAO,KAAK88C,CAAU,EACnC,QAAQ,EAAI,EAAG,EAAI98C,EAAK,OAAQ,IAAI,CAChC,MAAM+8C,EAAOL,EAAW18C,EAAK,CAAC,CAAC,EAC3B+8C,GAAQA,EAAK,UACbH,EAAQ,KAAKG,EAAK,KAAM,CAAA,CAE/B,CACD,OAAO,QAAQ,IAAIH,CAAO,CAC9B,CACA,SAASH,GAAqB9qD,EAAQ6qD,EAAY,CAC9C,GAAI,CAACA,EACD,OAEJ,IAAIz+C,EAAUpM,EAAO,QACrB,GAAI,CAACoM,EAAS,CACVpM,EAAO,QAAU6qD,EACjB,MACH,CACD,OAAIz+C,EAAQ,UACRpM,EAAO,QAAUoM,EAAU,OAAO,OAAO,CAAE,EAAEA,EAAS,CAClD,QAAS,GACT,YAAa,CAAE,CAC3B,CAAS,GAEEA,CACX,CAEA,SAASi/C,GAAUC,EAAOC,EAAiB,CACvC,MAAMpkB,EAAOmkB,GAASA,EAAM,SAAW,CAAA,EACjClc,EAAUjI,EAAK,QACflE,EAAMkE,EAAK,MAAQ,OAAYokB,EAAkB,EACjDhf,EAAMpF,EAAK,MAAQ,OAAYokB,EAAkB,EACvD,MAAO,CACH,MAAOnc,EAAU7C,EAAMtJ,EACvB,IAAKmM,EAAUnM,EAAMsJ,CAC7B,CACA,CACA,SAASif,GAAY/U,EAAQC,EAAQ6U,EAAiB,CAClD,GAAIA,IAAoB,GACpB,MAAO,GAEX,MAAM9Z,EAAI4Z,GAAU5U,EAAQ8U,CAAe,EACrC7Z,EAAI2Z,GAAU3U,EAAQ6U,CAAe,EAC3C,MAAO,CACH,IAAK7Z,EAAE,IACP,MAAOD,EAAE,IACT,OAAQC,EAAE,MACV,KAAMD,EAAE,KAChB,CACA,CACA,SAASga,GAAOvyD,EAAO,CACnB,IAAI,EAAG,EAAG8C,EAAGsB,EACb,OAAIvE,GAASG,CAAK,GACd,EAAIA,EAAM,IACV,EAAIA,EAAM,MACV8C,EAAI9C,EAAM,OACVoE,EAAIpE,EAAM,MAEV,EAAI,EAAI8C,EAAIsB,EAAIpE,EAEb,CACH,IAAK,EACL,MAAO,EACP,OAAQ8C,EACR,KAAMsB,EACN,SAAUpE,IAAU,EAC5B,CACA,CACA,SAASwyD,GAAwBtR,EAAOuR,EAAe,CACnD,MAAMt9C,EAAO,CAAA,EACPu9C,EAAWxR,EAAM,uBAAuBuR,CAAa,EAC3D,IAAI,EAAGnc,EACP,IAAI,EAAI,EAAGA,EAAOoc,EAAS,OAAQ,EAAIpc,EAAM,EAAE,EAC3CnhC,EAAK,KAAKu9C,EAAS,CAAC,EAAE,KAAK,EAE/B,OAAOv9C,CACX,CACA,SAASw9C,GAAWvyB,EAAOpgC,EAAO4yD,EAAS1/C,EAAU,CAAA,EAAI,CACrD,MAAMiC,EAAOirB,EAAM,KACbyyB,EAAa3/C,EAAQ,OAAS,SACpC,IAAIhU,EAAGo3C,EAAM0Z,EAAc8C,EAC3B,GAAI9yD,IAAU,KAGd,KAAId,EAAI,EAAGo3C,EAAOnhC,EAAK,OAAQjW,EAAIo3C,EAAM,EAAEp3C,EAAE,CAEzC,GADA8wD,EAAe,CAAC76C,EAAKjW,CAAC,EAClB8wD,IAAiB4C,EAAS,CAC1B,GAAI1/C,EAAQ,IACR,SAEJ,KACH,CACD4/C,EAAa1yB,EAAM,OAAO4vB,CAAY,EAClCra,GAAemd,CAAU,IAAMD,GAAc7yD,IAAU,GAAKq4C,GAAKr4C,CAAK,IAAMq4C,GAAKya,CAAU,KAC3F9yD,GAAS8yD,EAEhB,CACD,OAAO9yD,EACX,CACA,SAAS+yD,GAAyBz+C,EAAM,CACpC,MAAMa,EAAO,OAAO,KAAKb,CAAI,EACvB0+C,EAAQ,IAAI,MAAM79C,EAAK,MAAM,EACnC,IAAIjW,EAAGo3C,EAAM13C,EACb,IAAIM,EAAI,EAAGo3C,EAAOnhC,EAAK,OAAQjW,EAAIo3C,EAAM,EAAEp3C,EACvCN,EAAMuW,EAAKjW,CAAC,EACZ8zD,EAAM9zD,CAAC,EAAI,CACP,EAAGN,EACH,EAAG0V,EAAK1V,CAAG,CACvB,EAEI,OAAOo0D,CACX,CACA,SAASC,GAAUb,EAAOxV,EAAM,CAC5B,MAAMsW,EAAUd,GAASA,EAAM,QAAQ,QACvC,OAAOc,GAAWA,IAAY,QAAatW,EAAK,QAAU,MAC9D,CACA,SAASuW,GAAYC,EAAYC,EAAYzW,EAAM,CAC/C,MAAO,GAAGwW,EAAW,EAAE,IAAIC,EAAW,EAAE,IAAIzW,EAAK,OAASA,EAAK,IAAI,EACvE,CACA,SAAS0W,GAAclB,EAAO,CAC1B,KAAM,CAAE,IAAAroB,EAAM,IAAAsJ,EAAM,WAAA+J,EAAa,WAAAC,GAAgB+U,EAAM,gBACvD,MAAO,CACH,IAAKhV,EAAarT,EAAM,OAAO,kBAC/B,IAAKsT,EAAahK,EAAM,OAAO,iBACvC,CACA,CACA,SAASkgB,GAAiBC,EAAQC,EAAUC,EAAY,CACpD,MAAMC,EAAWH,EAAOC,CAAQ,IAAMD,EAAOC,CAAQ,EAAI,CAAA,GACzD,OAAOE,EAASD,CAAU,IAAMC,EAASD,CAAU,EAAI,CAAA,EAC3D,CACA,SAASE,GAAoBxzB,EAAOyzB,EAAQC,EAAU/sD,EAAM,CACxD,UAAW61C,KAAQiX,EAAO,wBAAwB9sD,CAAI,EAAE,UAAU,CAC9D,MAAM/G,EAAQogC,EAAMwc,EAAK,KAAK,EAC9B,GAAIkX,GAAY9zD,EAAQ,GAAK,CAAC8zD,GAAY9zD,EAAQ,EAC9C,OAAO48C,EAAK,KAEnB,CACD,OAAO,IACX,CACA,SAASmX,GAAaC,EAAYtuB,EAAQ,CACtC,KAAM,CAAE,MAAAwb,EAAQ,YAAatE,CAAI,EAAMoX,EACjCR,EAAStS,EAAM,UAAYA,EAAM,QAAU,CAAA,GAC3C,CAAE,OAAAjE,EAAS,OAAA4W,EAAS,MAAO7D,CAAY,EAAMpT,EAC7CqX,EAAQhX,EAAO,KACfiX,EAAQL,EAAO,KACfj1D,EAAMu0D,GAAYlW,EAAQ4W,EAAQjX,CAAI,EACtCtG,EAAO5Q,EAAO,OACpB,IAAItF,EACJ,QAAQlhC,EAAI,EAAGA,EAAIo3C,EAAM,EAAEp3C,EAAE,CACzB,MAAM4C,EAAO4jC,EAAOxmC,CAAC,EACf,CAAE,CAAC+0D,CAAK,EAAG94C,EAAQ,CAAC+4C,CAAK,EAAGl0D,CAAQ,EAAG8B,EACvCqyD,EAAaryD,EAAK,UAAYA,EAAK,QAAU,CAAA,GACnDs+B,EAAQ+zB,EAAWD,CAAK,EAAIX,GAAiBC,EAAQ50D,EAAKuc,CAAK,EAC/DilB,EAAM4vB,CAAY,EAAIhwD,EACtBogC,EAAM,KAAOwzB,GAAoBxzB,EAAOyzB,EAAQ,GAAMjX,EAAK,IAAI,EAC/Dxc,EAAM,QAAUwzB,GAAoBxzB,EAAOyzB,EAAQ,GAAOjX,EAAK,IAAI,EACnE,MAAMwX,EAAeh0B,EAAM,gBAAkBA,EAAM,cAAgB,CAAA,GACnEg0B,EAAapE,CAAY,EAAIhwD,CAChC,CACL,CACA,SAASq0D,GAAgBnT,EAAO/D,EAAM,CAClC,MAAMmX,EAASpT,EAAM,OACrB,OAAO,OAAO,KAAKoT,CAAM,EAAE,OAAQ11D,GAAM01D,EAAO11D,CAAG,EAAE,OAASu+C,CAAI,EAAE,MAAK,CAC7E,CACA,SAASoX,GAAqBh+C,EAAQ4E,EAAO,CACzC,OAAO+pC,GAAc3uC,EAAQ,CACzB,OAAQ,GACR,QAAS,OACT,aAAc4E,EACd,MAAAA,EACA,KAAM,UACN,KAAM,SACd,CAAK,CACL,CACA,SAASq5C,GAAkBj+C,EAAQ4E,EAAOsvC,EAAS,CAC/C,OAAOvF,GAAc3uC,EAAQ,CACzB,OAAQ,GACR,UAAW4E,EACX,OAAQ,OACR,IAAK,OACL,QAAAsvC,EACA,MAAAtvC,EACA,KAAM,UACN,KAAM,MACd,CAAK,CACL,CACA,SAASs5C,GAAY7X,EAAMZ,EAAO,CAC9B,MAAMgU,EAAepT,EAAK,WAAW,MAC/BO,EAAOP,EAAK,QAAUA,EAAK,OAAO,KACxC,GAAKO,EAGL,CAAAnB,EAAQA,GAASY,EAAK,QACtB,UAAWlX,KAAUsW,EAAM,CACvB,MAAMwX,EAAS9tB,EAAO,QACtB,GAAI,CAAC8tB,GAAUA,EAAOrW,CAAI,IAAM,QAAaqW,EAAOrW,CAAI,EAAE6S,CAAY,IAAM,OACxE,OAEJ,OAAOwD,EAAOrW,CAAI,EAAE6S,CAAY,EAC5BwD,EAAOrW,CAAI,EAAE,gBAAkB,QAAaqW,EAAOrW,CAAI,EAAE,cAAc6S,CAAY,IAAM,QACzF,OAAOwD,EAAOrW,CAAI,EAAE,cAAc6S,CAAY,CAErD,EACL,CACA,MAAM0E,GAAsB9R,GAAOA,IAAS,SAAWA,IAAS,OAC1D+R,GAAmB,CAAC/hD,EAAQgiD,IAASA,EAAShiD,EAAS,OAAO,OAAO,GAAIA,CAAM,EAC/EiiD,GAAc,CAACC,EAAUlY,EAAMsE,IAAQ4T,GAAY,CAAClY,EAAK,QAAUA,EAAK,UAAY,CAClF,KAAM4V,GAAwBtR,EAAO,EAAI,EACzC,OAAQ,IAChB,EACA,MAAM6T,EAAkB,CAIvB,YAAY7T,EAAO8O,EAAa,CACzB,KAAK,MAAQ9O,EACb,KAAK,KAAOA,EAAM,IAClB,KAAK,MAAQ8O,EACb,KAAK,gBAAkB,GACvB,KAAK,YAAc,KAAK,UACxB,KAAK,MAAQ,KAAK,YAAY,KAC9B,KAAK,QAAU,OACd,KAAK,SAAW,GACjB,KAAK,MAAQ,OACb,KAAK,YAAc,OACnB,KAAK,eAAiB,OACtB,KAAK,WAAa,OAClB,KAAK,WAAa,OAClB,KAAK,oBAAsB,GAC3B,KAAK,mBAAqB,GAC1B,KAAK,SAAW,OAChB,KAAK,UAAY,GACjB,KAAK,mBAAqB,WAAW,mBACrC,KAAK,gBAAkB,WAAW,gBAClC,KAAK,WAAU,CAClB,CACD,YAAa,CACT,MAAMpT,EAAO,KAAK,YAClB,KAAK,UAAS,EACd,KAAK,WAAU,EACfA,EAAK,SAAWqW,GAAUrW,EAAK,OAAQA,CAAI,EAC3C,KAAK,YAAW,EACZ,KAAK,QAAQ,MAAQ,CAAC,KAAK,MAAM,gBAAgB,QAAQ,GACzD,QAAQ,KAAK,oKAAoK,CAExL,CACD,YAAYoT,EAAc,CAClB,KAAK,QAAUA,GACfyE,GAAY,KAAK,WAAW,EAEhC,KAAK,MAAQzE,CAChB,CACD,YAAa,CACT,MAAM9O,EAAQ,KAAK,MACbtE,EAAO,KAAK,YACZoY,EAAU,KAAK,aACfC,EAAW,CAAC9X,EAAM5E,EAAGC,EAAG3qC,IAAIsvC,IAAS,IAAM5E,EAAI4E,IAAS,IAAMtvC,EAAI2qC,EAClE0c,EAAMtY,EAAK,QAAU/G,GAAemf,EAAQ,QAASX,GAAgBnT,EAAO,GAAG,CAAC,EAChFiU,EAAMvY,EAAK,QAAU/G,GAAemf,EAAQ,QAASX,GAAgBnT,EAAO,GAAG,CAAC,EAChFkU,EAAMxY,EAAK,QAAU/G,GAAemf,EAAQ,QAASX,GAAgBnT,EAAO,GAAG,CAAC,EAChF0G,EAAYhL,EAAK,UACjByY,EAAMzY,EAAK,QAAUqY,EAASrN,EAAWsN,EAAKC,EAAKC,CAAG,EACtDE,EAAM1Y,EAAK,QAAUqY,EAASrN,EAAWuN,EAAKD,EAAKE,CAAG,EAC5DxY,EAAK,OAAS,KAAK,cAAcsY,CAAG,EACpCtY,EAAK,OAAS,KAAK,cAAcuY,CAAG,EACpCvY,EAAK,OAAS,KAAK,cAAcwY,CAAG,EACpCxY,EAAK,OAAS,KAAK,cAAcyY,CAAG,EACpCzY,EAAK,OAAS,KAAK,cAAc0Y,CAAG,CACvC,CACD,YAAa,CACT,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,KAAK,CAC7C,CACD,SAAU,CACN,OAAO,KAAK,MAAM,eAAe,KAAK,KAAK,CAC9C,CACJ,cAAcC,EAAS,CAChB,OAAO,KAAK,MAAM,OAAOA,CAAO,CACnC,CACJ,eAAenD,EAAO,CACf,MAAMxV,EAAO,KAAK,YAClB,OAAOwV,IAAUxV,EAAK,OAASA,EAAK,OAASA,EAAK,MACrD,CACD,OAAQ,CACJ,KAAK,QAAQ,OAAO,CACvB,CACJ,UAAW,CACJ,MAAMA,EAAO,KAAK,YACd,KAAK,OACLhB,GAAoB,KAAK,MAAO,IAAI,EAEpCgB,EAAK,UACL6X,GAAY7X,CAAI,CAEvB,CACJ,YAAa,CACN,MAAMoY,EAAU,KAAK,aACf1gD,EAAO0gD,EAAQ,OAASA,EAAQ,KAAO,CAAA,GACvCQ,EAAQ,KAAK,MACnB,GAAI31D,GAASyU,CAAI,EACb,KAAK,MAAQy+C,GAAyBz+C,CAAI,UACnCkhD,IAAUlhD,EAAM,CACvB,GAAIkhD,EAAO,CACP5Z,GAAoB4Z,EAAO,IAAI,EAC/B,MAAM5Y,EAAO,KAAK,YAClB6X,GAAY7X,CAAI,EAChBA,EAAK,QAAU,EAClB,CACGtoC,GAAQ,OAAO,aAAaA,CAAI,GAChCqnC,GAAkBrnC,EAAM,IAAI,EAEhC,KAAK,UAAY,GACjB,KAAK,MAAQA,CAChB,CACJ,CACD,aAAc,CACV,MAAMsoC,EAAO,KAAK,YAClB,KAAK,WAAU,EACX,KAAK,qBACLA,EAAK,QAAU,IAAI,KAAK,mBAE/B,CACD,sBAAsB6Y,EAAkB,CACpC,MAAM7Y,EAAO,KAAK,YACZoY,EAAU,KAAK,aACrB,IAAIU,EAAe,GACnB,KAAK,WAAU,EACf,MAAMC,EAAa/Y,EAAK,SACxBA,EAAK,SAAWqW,GAAUrW,EAAK,OAAQA,CAAI,EACvCA,EAAK,QAAUoY,EAAQ,QACvBU,EAAe,GACfjB,GAAY7X,CAAI,EAChBA,EAAK,MAAQoY,EAAQ,OAEzB,KAAK,gBAAgBS,CAAgB,GACjCC,GAAgBC,IAAe/Y,EAAK,WACpCmX,GAAa,KAAMnX,EAAK,OAAO,CAEtC,CACJ,WAAY,CACL,MAAM/b,EAAS,KAAK,MAAM,OACpB+0B,EAAY/0B,EAAO,iBAAiB,KAAK,KAAK,EAC9CwkB,EAASxkB,EAAO,gBAAgB,KAAK,aAAc+0B,EAAW,EAAI,EACxE,KAAK,QAAU/0B,EAAO,eAAewkB,EAAQ,KAAK,WAAU,CAAE,EAC9D,KAAK,SAAW,KAAK,QAAQ,QAC7B,KAAK,gBAAkB,EAC1B,CACJ,MAAM30C,EAAOssC,EAAO,CACb,KAAM,CAAE,YAAaJ,EAAO,MAAOtoC,CAAI,EAAM,KACvC,CAAE,OAAA2oC,EAAS,SAAA4Y,CAAW,EAAGjZ,EACzBqX,EAAQhX,EAAO,KACrB,IAAI6Y,EAASplD,IAAU,GAAKssC,IAAU1oC,EAAK,OAAS,GAAOsoC,EAAK,QAC5DtpC,EAAO5C,EAAQ,GAAKksC,EAAK,QAAQlsC,EAAQ,CAAC,EAC1CxR,EAAGqQ,EAAKm2B,EACZ,GAAI,KAAK,WAAa,GAClBkX,EAAK,QAAUtoC,EACfsoC,EAAK,QAAU,GACflX,EAASpxB,MACN,CACCjV,GAAQiV,EAAK5D,CAAK,CAAC,EACnBg1B,EAAS,KAAK,eAAekX,EAAMtoC,EAAM5D,EAAOssC,CAAK,EAC9Cn9C,GAASyU,EAAK5D,CAAK,CAAC,EAC3Bg1B,EAAS,KAAK,gBAAgBkX,EAAMtoC,EAAM5D,EAAOssC,CAAK,EAEtDtX,EAAS,KAAK,mBAAmBkX,EAAMtoC,EAAM5D,EAAOssC,CAAK,EAE7D,MAAM+Y,EAA6B,IAAIxmD,EAAI0kD,CAAK,IAAM,MAAQ3gD,GAAQ/D,EAAI0kD,CAAK,EAAI3gD,EAAK2gD,CAAK,EAC7F,IAAI/0D,EAAI,EAAGA,EAAI89C,EAAO,EAAE99C,EACpB09C,EAAK,QAAQ19C,EAAIwR,CAAK,EAAInB,EAAMm2B,EAAOxmC,CAAC,EACpC42D,IACIC,EAA0B,IAC1BD,EAAS,IAEbxiD,EAAO/D,GAGfqtC,EAAK,QAAUkZ,CAClB,CACGD,GACA9B,GAAa,KAAMruB,CAAM,CAEhC,CACJ,mBAAmBkX,EAAMtoC,EAAM5D,EAAOssC,EAAO,CACtC,KAAM,CAAE,OAAAC,EAAS,OAAA4W,CAAS,EAAGjX,EACvBqX,EAAQhX,EAAO,KACfiX,EAAQL,EAAO,KACfmC,EAAS/Y,EAAO,YAChBgZ,EAAchZ,IAAW4W,EACzBnuB,EAAS,IAAI,MAAMsX,CAAK,EAC9B,IAAI99C,EAAGo3C,EAAMn7B,EACb,IAAIjc,EAAI,EAAGo3C,EAAO0G,EAAO99C,EAAIo3C,EAAM,EAAEp3C,EACjCic,EAAQjc,EAAIwR,EACZg1B,EAAOxmC,CAAC,EAAI,CACR,CAAC+0D,CAAK,EAAGgC,GAAehZ,EAAO,MAAM+Y,EAAO76C,CAAK,EAAGA,CAAK,EACzD,CAAC+4C,CAAK,EAAGL,EAAO,MAAMv/C,EAAK6G,CAAK,EAAGA,CAAK,CACxD,EAEQ,OAAOuqB,CACV,CACJ,eAAekX,EAAMtoC,EAAM5D,EAAOssC,EAAO,CAClC,KAAM,CAAE,OAAAO,EAAS,OAAAC,CAAS,EAAGZ,EACvBlX,EAAS,IAAI,MAAMsX,CAAK,EAC9B,IAAI99C,EAAGo3C,EAAMn7B,EAAOrZ,EACpB,IAAI5C,EAAI,EAAGo3C,EAAO0G,EAAO99C,EAAIo3C,EAAM,EAAEp3C,EACjCic,EAAQjc,EAAIwR,EACZ5O,EAAOwS,EAAK6G,CAAK,EACjBuqB,EAAOxmC,CAAC,EAAI,CACR,EAAGq+C,EAAO,MAAMz7C,EAAK,CAAC,EAAGqZ,CAAK,EAC9B,EAAGqiC,EAAO,MAAM17C,EAAK,CAAC,EAAGqZ,CAAK,CAC9C,EAEQ,OAAOuqB,CACV,CACJ,gBAAgBkX,EAAMtoC,EAAM5D,EAAOssC,EAAO,CACnC,KAAM,CAAE,OAAAO,EAAS,OAAAC,CAAS,EAAGZ,EACvB,CAAE,SAAAsZ,EAAU,IAAM,SAAAC,EAAU,GAAM,EAAG,KAAK,SAC1CzwB,EAAS,IAAI,MAAMsX,CAAK,EAC9B,IAAI99C,EAAGo3C,EAAMn7B,EAAOrZ,EACpB,IAAI5C,EAAI,EAAGo3C,EAAO0G,EAAO99C,EAAIo3C,EAAM,EAAEp3C,EACjCic,EAAQjc,EAAIwR,EACZ5O,EAAOwS,EAAK6G,CAAK,EACjBuqB,EAAOxmC,CAAC,EAAI,CACR,EAAGq+C,EAAO,MAAMhG,GAAiBz1C,EAAMo0D,CAAQ,EAAG/6C,CAAK,EACvD,EAAGqiC,EAAO,MAAMjG,GAAiBz1C,EAAMq0D,CAAQ,EAAGh7C,CAAK,CACvE,EAEQ,OAAOuqB,CACV,CACJ,UAAUvqB,EAAO,CACV,OAAO,KAAK,YAAY,QAAQA,CAAK,CACxC,CACJ,eAAeA,EAAO,CACf,OAAO,KAAK,YAAY,KAAKA,CAAK,CACrC,CACJ,WAAWi3C,EAAO1sB,EAAQkd,EAAM,CACzB,MAAM1B,EAAQ,KAAK,MACbtE,EAAO,KAAK,YACZ58C,EAAQ0lC,EAAO0sB,EAAM,IAAI,EACzBhyB,EAAQ,CACV,KAAMoyB,GAAwBtR,EAAO,EAAI,EACzC,OAAQxb,EAAO,QAAQ0sB,EAAM,IAAI,EAAE,aAC/C,EACQ,OAAOO,GAAWvyB,EAAOpgC,EAAO48C,EAAK,MAAO,CACxC,KAAAgG,CACZ,CAAS,CACJ,CACJ,sBAAsBjK,EAAOyZ,EAAO1sB,EAAQtF,EAAO,CAC5C,MAAMg2B,EAAc1wB,EAAO0sB,EAAM,IAAI,EACrC,IAAIpyD,EAAQo2D,IAAgB,KAAO,IAAMA,EACzC,MAAMhnD,EAASgxB,GAASsF,EAAO,QAAQ0sB,EAAM,IAAI,EAC7ChyB,GAAShxB,IACTgxB,EAAM,OAAShxB,EACfpP,EAAQ2yD,GAAWvyB,EAAOg2B,EAAa,KAAK,YAAY,KAAK,GAEjEzd,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAK34C,CAAK,EACrC24C,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAK34C,CAAK,CACxC,CACJ,UAAUoyD,EAAO0C,EAAU,CACpB,MAAMlY,EAAO,KAAK,YACZM,EAAUN,EAAK,QACfkZ,EAASlZ,EAAK,SAAWwV,IAAUxV,EAAK,OACxCtG,EAAO4G,EAAQ,OACfmZ,EAAa,KAAK,eAAejE,CAAK,EACtChyB,EAAQy0B,GAAYC,EAAUlY,EAAM,KAAK,KAAK,EAC9CjE,EAAQ,CACV,IAAK,OAAO,kBACZ,IAAK,OAAO,iBACxB,EACc,CAAE,IAAK2d,EAAW,IAAKC,GAAcjD,GAAc+C,CAAU,EACnE,IAAIn3D,EAAGwmC,EACP,SAAS8wB,GAAQ,CACb9wB,EAASwX,EAAQh+C,CAAC,EAClB,MAAM4zD,EAAaptB,EAAO2wB,EAAW,IAAI,EACzC,MAAO,CAAC1gB,GAAejQ,EAAO0sB,EAAM,IAAI,CAAC,GAAKkE,EAAWxD,GAAcyD,EAAWzD,CACrF,CACD,IAAI5zD,EAAI,EAAGA,EAAIo3C,GACP,GAAAkgB,EAAK,IAGT,KAAK,sBAAsB7d,EAAOyZ,EAAO1sB,EAAQtF,CAAK,EAClD01B,IALa,EAAE52D,EACnB,CAQJ,GAAI42D,GACA,IAAI52D,EAAIo3C,EAAO,EAAGp3C,GAAK,EAAG,EAAEA,EACxB,GAAI,CAAAs3D,EAAK,EAGT,MAAK,sBAAsB7d,EAAOyZ,EAAO1sB,EAAQtF,CAAK,EACtD,OAGR,OAAOuY,CACV,CACD,mBAAmByZ,EAAO,CACtB,MAAM1sB,EAAS,KAAK,YAAY,QAC1Bt2B,EAAS,CAAA,EACf,IAAI,EAAGknC,EAAMt2C,EACb,IAAI,EAAI,EAAGs2C,EAAO5Q,EAAO,OAAQ,EAAI4Q,EAAM,EAAE,EACzCt2C,EAAQ0lC,EAAO,CAAC,EAAE0sB,EAAM,IAAI,EACxBzc,GAAe31C,CAAK,GACpBoP,EAAO,KAAKpP,CAAK,EAGzB,OAAOoP,CACV,CACJ,gBAAiB,CACV,MAAO,EACV,CACJ,iBAAiB+L,EAAO,CACjB,MAAMyhC,EAAO,KAAK,YACZK,EAASL,EAAK,OACdiX,EAASjX,EAAK,OACdlX,EAAS,KAAK,UAAUvqB,CAAK,EACnC,MAAO,CACH,MAAO8hC,EAAS,GAAKA,EAAO,iBAAiBvX,EAAOuX,EAAO,IAAI,CAAC,EAAI,GACpE,MAAO4W,EAAS,GAAKA,EAAO,iBAAiBnuB,EAAOmuB,EAAO,IAAI,CAAC,EAAI,EAChF,CACK,CACJ,QAAQjR,EAAM,CACP,MAAMhG,EAAO,KAAK,YAClB,KAAK,OAAOgG,GAAQ,SAAS,EAC7BhG,EAAK,MAAQ2V,GAAO1c,GAAe,KAAK,QAAQ,KAAMyc,GAAY1V,EAAK,OAAQA,EAAK,OAAQ,KAAK,eAAc,CAAE,CAAC,CAAC,CACtH,CACJ,OAAOgG,EAAM,CAAE,CACZ,MAAO,CACH,MAAMpvC,EAAM,KAAK,KACX0tC,EAAQ,KAAK,MACbtE,EAAO,KAAK,YACZ6Z,EAAW7Z,EAAK,MAAQ,GACxByF,EAAOnB,EAAM,UACbwV,EAAS,CAAA,EACThmD,EAAQ,KAAK,YAAc,EAC3BssC,EAAQ,KAAK,YAAcyZ,EAAS,OAAS/lD,EAC7CimD,EAA0B,KAAK,QAAQ,wBAC7C,IAAIz3D,EAIJ,IAHI09C,EAAK,SACLA,EAAK,QAAQ,KAAKppC,EAAK6uC,EAAM3xC,EAAOssC,CAAK,EAEzC99C,EAAIwR,EAAOxR,EAAIwR,EAAQssC,EAAO,EAAE99C,EAAE,CAClC,MAAMurD,EAAUgM,EAASv3D,CAAC,EACtBurD,EAAQ,SAGRA,EAAQ,QAAUkM,EAClBD,EAAO,KAAKjM,CAAO,EAEnBA,EAAQ,KAAKj3C,EAAK6uC,CAAI,EAE7B,CACD,IAAInjD,EAAI,EAAGA,EAAIw3D,EAAO,OAAQ,EAAEx3D,EAC5Bw3D,EAAOx3D,CAAC,EAAE,KAAKsU,EAAK6uC,CAAI,CAE/B,CACJ,SAASlnC,EAAOu7C,EAAQ,CACjB,MAAM9T,EAAO8T,EAAS,SAAW,UACjC,OAAOv7C,IAAU,QAAa,KAAK,YAAY,QAAU,KAAK,6BAA6BynC,CAAI,EAAI,KAAK,0BAA0BznC,GAAS,EAAGynC,CAAI,CACrJ,CACJ,WAAWznC,EAAOu7C,EAAQ9T,EAAM,CACzB,MAAMoS,EAAU,KAAK,aACrB,IAAI50C,EACJ,GAAIjF,GAAS,GAAKA,EAAQ,KAAK,YAAY,KAAK,OAAQ,CACpD,MAAMsvC,EAAU,KAAK,YAAY,KAAKtvC,CAAK,EAC3CiF,EAAUqqC,EAAQ,WAAaA,EAAQ,SAAW+J,GAAkB,KAAK,WAAY,EAAEr5C,EAAOsvC,CAAO,GACrGrqC,EAAQ,OAAS,KAAK,UAAUjF,CAAK,EACrCiF,EAAQ,IAAM40C,EAAQ,KAAK75C,CAAK,EAChCiF,EAAQ,MAAQA,EAAQ,UAAYjF,CAChD,MACYiF,EAAU,KAAK,WAAa,KAAK,SAAWm0C,GAAqB,KAAK,MAAM,WAAY,EAAE,KAAK,KAAK,GACpGn0C,EAAQ,QAAU40C,EAClB50C,EAAQ,MAAQA,EAAQ,aAAe,KAAK,MAEhD,OAAAA,EAAQ,OAAS,CAAC,CAACs2C,EACnBt2C,EAAQ,KAAOwiC,EACRxiC,CACV,CACJ,6BAA6BwiC,EAAM,CAC5B,OAAO,KAAK,uBAAuB,KAAK,mBAAmB,GAAIA,CAAI,CACtE,CACJ,0BAA0BznC,EAAOynC,EAAM,CAChC,OAAO,KAAK,uBAAuB,KAAK,gBAAgB,GAAIA,EAAMznC,CAAK,CAC1E,CACJ,uBAAuBy7C,EAAahU,EAAO,UAAWznC,EAAO,CACtD,MAAMu7C,EAAS9T,IAAS,SAClBriD,EAAQ,KAAK,gBACbo2B,EAAWigC,EAAc,IAAMhU,EAC/BhwC,EAASrS,EAAMo2B,CAAQ,EACvBkgC,EAAU,KAAK,qBAAuBpf,GAAQt8B,CAAK,EACzD,GAAIvI,EACA,OAAO+hD,GAAiB/hD,EAAQikD,CAAO,EAE3C,MAAMh2B,EAAS,KAAK,MAAM,OACpB+0B,EAAY/0B,EAAO,wBAAwB,KAAK,MAAO+1B,CAAW,EAClE3iC,EAAWyiC,EAAS,CACtB,GAAGE,CAAW,QACd,QACAA,EACA,EACZ,EAAY,CACAA,EACA,EACZ,EACcvR,EAASxkB,EAAO,gBAAgB,KAAK,WAAU,EAAI+0B,CAAS,EAC5DrhB,EAAQ,OAAO,KAAK3P,GAAS,SAASgyB,CAAW,CAAC,EAClDx2C,EAAU,IAAI,KAAK,WAAWjF,EAAOu7C,EAAQ9T,CAAI,EACjDxzC,EAASyxB,EAAO,oBAAoBwkB,EAAQ9Q,EAAOn0B,EAAS6T,CAAQ,EAC1E,OAAI7kB,EAAO,UACPA,EAAO,QAAUynD,EACjBt2D,EAAMo2B,CAAQ,EAAI,OAAO,OAAOg+B,GAAiBvlD,EAAQynD,CAAO,CAAC,GAE9DznD,CACV,CACJ,mBAAmB+L,EAAOuM,EAAYgvC,EAAQ,CACvC,MAAMxV,EAAQ,KAAK,MACb3gD,EAAQ,KAAK,gBACbo2B,EAAW,aAAajP,CAAU,GAClC9U,EAASrS,EAAMo2B,CAAQ,EAC7B,GAAI/jB,EACA,OAAOA,EAEX,IAAIM,EACJ,GAAIguC,EAAM,QAAQ,YAAc,GAAO,CACnC,MAAMrgB,EAAS,KAAK,MAAM,OACpB+0B,EAAY/0B,EAAO,0BAA0B,KAAK,MAAOnZ,CAAU,EACnE29B,EAASxkB,EAAO,gBAAgB,KAAK,WAAU,EAAI+0B,CAAS,EAClE1iD,EAAU2tB,EAAO,eAAewkB,EAAQ,KAAK,WAAWlqC,EAAOu7C,EAAQhvC,CAAU,CAAC,CACrF,CACD,MAAMmqC,EAAa,IAAIL,GAAWtQ,EAAOhuC,GAAWA,EAAQ,UAAU,EACtE,OAAIA,GAAWA,EAAQ,aACnB3S,EAAMo2B,CAAQ,EAAI,OAAO,OAAOk7B,CAAU,GAEvCA,CACV,CACJ,iBAAiB3+C,EAAS,CACnB,GAAKA,EAAQ,QAGb,OAAO,KAAK,iBAAmB,KAAK,eAAiB,OAAO,OAAO,CAAA,EAAIA,CAAO,EACjF,CACJ,eAAe0vC,EAAMkU,EAAe,CAC7B,MAAO,CAACA,GAAiBpC,GAAmB9R,CAAI,GAAK,KAAK,MAAM,mBACnE,CACJ,kBAAkBlyC,EAAOkyC,EAAM,CACxB,MAAMmU,EAAY,KAAK,0BAA0BrmD,EAAOkyC,CAAI,EACtDoU,EAA0B,KAAK,eAC/BF,EAAgB,KAAK,iBAAiBC,CAAS,EAC/CE,EAAiB,KAAK,eAAerU,EAAMkU,CAAa,GAAKA,IAAkBE,EACrF,YAAK,oBAAoBF,EAAelU,EAAMmU,CAAS,EAChD,CACH,cAAAD,EACA,eAAAG,CACZ,CACK,CACJ,cAAcxM,EAAStvC,EAAO82C,EAAYrP,EAAM,CACrC8R,GAAmB9R,CAAI,EACvB,OAAO,OAAO6H,EAASwH,CAAU,EAEjC,KAAK,mBAAmB92C,EAAOynC,CAAI,EAAE,OAAO6H,EAASwH,CAAU,CAEtE,CACJ,oBAAoB6E,EAAelU,EAAM+O,EAAY,CAC1CmF,GAAiB,CAACpC,GAAmB9R,CAAI,GACzC,KAAK,mBAAmB,OAAWA,CAAI,EAAE,OAAOkU,EAAenF,CAAU,CAEhF,CACJ,UAAUlH,EAAStvC,EAAOynC,EAAM8T,EAAQ,CACjCjM,EAAQ,OAASiM,EACjB,MAAMxjD,EAAU,KAAK,SAASiI,EAAOu7C,CAAM,EAC3C,KAAK,mBAAmBv7C,EAAOynC,EAAM8T,CAAM,EAAE,OAAOjM,EAAS,CACzD,QAAS,CAACiM,GAAU,KAAK,iBAAiBxjD,CAAO,GAAKA,CAClE,CAAS,CACJ,CACD,iBAAiBu3C,EAASuF,EAAc70C,EAAO,CAC3C,KAAK,UAAUsvC,EAAStvC,EAAO,SAAU,EAAK,CACjD,CACD,cAAcsvC,EAASuF,EAAc70C,EAAO,CACxC,KAAK,UAAUsvC,EAAStvC,EAAO,SAAU,EAAI,CAChD,CACJ,0BAA2B,CACpB,MAAMsvC,EAAU,KAAK,YAAY,QAC7BA,GACA,KAAK,UAAUA,EAAS,OAAW,SAAU,EAAK,CAEzD,CACJ,uBAAwB,CACjB,MAAMA,EAAU,KAAK,YAAY,QAC7BA,GACA,KAAK,UAAUA,EAAS,OAAW,SAAU,EAAI,CAExD,CACJ,gBAAgBgL,EAAkB,CAC3B,MAAMnhD,EAAO,KAAK,MACZmiD,EAAW,KAAK,YAAY,KAClC,SAAW,CAAC7rD,EAAQg8B,EAAMC,CAAI,IAAK,KAAK,UACpC,KAAKj8B,CAAM,EAAEg8B,EAAMC,CAAI,EAE3B,KAAK,UAAY,GACjB,MAAMqwB,EAAUT,EAAS,OACnBU,EAAU7iD,EAAK,OACf0oC,EAAQ,KAAK,IAAIma,EAASD,CAAO,EACnCla,GACA,KAAK,MAAM,EAAGA,CAAK,EAEnBma,EAAUD,EACV,KAAK,gBAAgBA,EAASC,EAAUD,EAASzB,CAAgB,EAC1D0B,EAAUD,GACjB,KAAK,gBAAgBC,EAASD,EAAUC,CAAO,CAEtD,CACJ,gBAAgBzmD,EAAOssC,EAAOyY,EAAmB,GAAM,CAChD,MAAM7Y,EAAO,KAAK,YACZtoC,EAAOsoC,EAAK,KACZjsC,EAAMD,EAAQssC,EACpB,IAAI99C,EACJ,MAAMutB,EAAQztB,GAAM,CAEhB,IADAA,EAAI,QAAUg+C,EACV99C,EAAIF,EAAI,OAAS,EAAGE,GAAKyR,EAAKzR,IAC9BF,EAAIE,CAAC,EAAIF,EAAIE,EAAI89C,CAAK,CAEtC,EAEQ,IADAvwB,EAAKnY,CAAI,EACLpV,EAAIwR,EAAOxR,EAAIyR,EAAK,EAAEzR,EACtBoV,EAAKpV,CAAC,EAAI,IAAI,KAAK,gBAEnB,KAAK,UACLutB,EAAKmwB,EAAK,OAAO,EAErB,KAAK,MAAMlsC,EAAOssC,CAAK,EACnByY,GACA,KAAK,eAAenhD,EAAM5D,EAAOssC,EAAO,OAAO,CAEtD,CACD,eAAeyN,EAAS/5C,EAAOssC,EAAO4F,EAAM,CAAE,CACjD,gBAAgBlyC,EAAOssC,EAAO,CACvB,MAAMJ,EAAO,KAAK,YAClB,GAAI,KAAK,SAAU,CACf,MAAMwa,EAAUxa,EAAK,QAAQ,OAAOlsC,EAAOssC,CAAK,EAC5CJ,EAAK,UACL6X,GAAY7X,EAAMwa,CAAO,CAEhC,CACDxa,EAAK,KAAK,OAAOlsC,EAAOssC,CAAK,CAChC,CACJ,MAAMn1C,EAAM,CACL,GAAI,KAAK,SACL,KAAK,UAAU,KAAKA,CAAI,MACrB,CACH,KAAM,CAAC+C,EAAQg8B,EAAMC,CAAI,EAAIh/B,EAC7B,KAAK+C,CAAM,EAAEg8B,EAAMC,CAAI,CAC1B,CACD,KAAK,MAAM,aAAa,KAAK,CACzB,KAAK,MACL,GAAGh/B,CACf,CAAS,CACJ,CACD,aAAc,CACV,MAAMm1C,EAAQ,UAAU,OACxB,KAAK,MAAM,CACP,kBACA,KAAK,WAAU,EAAG,KAAK,OAASA,EAChCA,CACZ,CAAS,CACJ,CACD,YAAa,CACT,KAAK,MAAM,CACP,kBACA,KAAK,YAAY,KAAK,OAAS,EAC/B,CACZ,CAAS,CACJ,CACD,cAAe,CACX,KAAK,MAAM,CACP,kBACA,EACA,CACZ,CAAS,CACJ,CACD,cAActsC,EAAOssC,EAAO,CACpBA,GACA,KAAK,MAAM,CACP,kBACAtsC,EACAssC,CAChB,CAAa,EAEL,MAAMqa,EAAW,UAAU,OAAS,EAChCA,GACA,KAAK,MAAM,CACP,kBACA3mD,EACA2mD,CAChB,CAAa,CAER,CACD,gBAAiB,CACb,KAAK,MAAM,CACP,kBACA,EACA,UAAU,MACtB,CAAS,CACJ,CACL,CA9kBCC,GADKvC,GACE,WAAW,CAAA,GAClBuC,GAFKvC,GAEE,qBAAqB,MAC5BuC,GAHKvC,GAGE,kBAAkB,MA8kB1B,SAASwC,GAAkBnF,EAAOrrD,EAAM,CACpC,GAAI,CAACqrD,EAAM,OAAO,KAAM,CACpB,MAAMoF,EAAepF,EAAM,wBAAwBrrD,CAAI,EACvD,IAAIqI,EAAS,CAAA,EACb,QAAQ,EAAI,EAAGknC,EAAOkhB,EAAa,OAAQ,EAAIlhB,EAAM,IACjDlnC,EAASA,EAAO,OAAOooD,EAAa,CAAC,EAAE,WAAW,mBAAmBpF,CAAK,CAAC,EAE/EA,EAAM,OAAO,KAAOrW,GAAa3sC,EAAO,KAAK,CAACvM,EAAGC,IAAID,EAAIC,CAAC,CAAC,CAC9D,CACD,OAAOsvD,EAAM,OAAO,IACxB,CACC,SAASqF,GAAqB7a,EAAM,CACjC,MAAMwV,EAAQxV,EAAK,OACbxtC,EAASmoD,GAAkBnF,EAAOxV,EAAK,IAAI,EACjD,IAAI7S,EAAMqoB,EAAM,QACZ,EAAG9b,EAAMohB,EAAMpkD,EACnB,MAAMqkD,EAAmB,IAAI,CACrBD,IAAS,OAASA,IAAS,SAG3BjgB,GAAQnkC,CAAI,IACZy2B,EAAM,KAAK,IAAIA,EAAK,KAAK,IAAI2tB,EAAOpkD,CAAI,GAAKy2B,CAAG,GAEpDz2B,EAAOokD,EACf,EACI,IAAI,EAAI,EAAGphB,EAAOlnC,EAAO,OAAQ,EAAIknC,EAAM,EAAE,EACzCohB,EAAOtF,EAAM,iBAAiBhjD,EAAO,CAAC,CAAC,EACvCuoD,IAGJ,IADArkD,EAAO,OACH,EAAI,EAAGgjC,EAAO8b,EAAM,MAAM,OAAQ,EAAI9b,EAAM,EAAE,EAC9CohB,EAAOtF,EAAM,gBAAgB,CAAC,EAC9BuF,IAEJ,OAAO5tB,CACX,CACC,SAAS6tB,GAAyBz8C,EAAO08C,EAAO3kD,EAAS4kD,EAAY,CAClE,MAAMC,EAAY7kD,EAAQ,aAC1B,IAAIjJ,EAAM+qC,EACV,OAAIU,GAAcqiB,CAAS,GACvB9tD,EAAO4tD,EAAM,IAAM3kD,EAAQ,mBAC3B8hC,EAAQ9hC,EAAQ,gBAEhBjJ,EAAO8tD,EAAYD,EACnB9iB,EAAQ,GAEL,CACH,MAAO/qC,EAAO6tD,EACd,MAAA9iB,EACA,MAAO6iB,EAAM,OAAO18C,CAAK,EAAIlR,EAAO,CAC5C,CACA,CACC,SAAS+tD,GAA0B78C,EAAO08C,EAAO3kD,EAAS4kD,EAAY,CACnE,MAAMG,EAASJ,EAAM,OACfH,EAAOO,EAAO98C,CAAK,EACzB,IAAI7H,EAAO6H,EAAQ,EAAI88C,EAAO98C,EAAQ,CAAC,EAAI,KACvCkM,EAAOlM,EAAQ88C,EAAO,OAAS,EAAIA,EAAO98C,EAAQ,CAAC,EAAI,KAC3D,MAAM+8C,EAAUhlD,EAAQ,mBACpBI,IAAS,OACTA,EAAOokD,GAAQrwC,IAAS,KAAOwwC,EAAM,IAAMA,EAAM,MAAQxwC,EAAOqwC,IAEhErwC,IAAS,OACTA,EAAOqwC,EAAOA,EAAOpkD,GAEzB,MAAM5C,EAAQgnD,GAAQA,EAAO,KAAK,IAAIpkD,EAAM+T,CAAI,GAAK,EAAI6wC,EAEzD,MAAO,CACH,MAFS,KAAK,IAAI7wC,EAAO/T,CAAI,EAAI,EAAI4kD,EAEvBJ,EACd,MAAO5kD,EAAQ,cACf,MAAAxC,CACR,CACA,CACA,SAASynD,GAAcC,EAAOt2D,EAAM+xD,EAAQ30D,EAAG,CAC3C,MAAMm5D,EAAaxE,EAAO,MAAMuE,EAAM,CAAC,EAAGl5D,CAAC,EACrCo5D,EAAWzE,EAAO,MAAMuE,EAAM,CAAC,EAAGl5D,CAAC,EACnC6qC,EAAM,KAAK,IAAIsuB,EAAYC,CAAQ,EACnCjlB,EAAM,KAAK,IAAIglB,EAAYC,CAAQ,EACzC,IAAIC,EAAWxuB,EACXyuB,EAASnlB,EACT,KAAK,IAAItJ,CAAG,EAAI,KAAK,IAAIsJ,CAAG,IAC5BklB,EAAWllB,EACXmlB,EAASzuB,GAEbjoC,EAAK+xD,EAAO,IAAI,EAAI2E,EACpB12D,EAAK,QAAU,CACX,SAAAy2D,EACA,OAAAC,EACA,MAAOH,EACP,IAAKC,EACL,IAAAvuB,EACA,IAAAsJ,CACR,CACA,CACA,SAASolB,GAAWL,EAAOt2D,EAAM+xD,EAAQ30D,EAAG,CACxC,OAAIG,GAAQ+4D,CAAK,EACbD,GAAcC,EAAOt2D,EAAM+xD,EAAQ30D,CAAC,EAEpC4C,EAAK+xD,EAAO,IAAI,EAAIA,EAAO,MAAMuE,EAAOl5D,CAAC,EAEtC4C,CACX,CACA,SAAS42D,GAAsB9b,EAAMtoC,EAAM5D,EAAOssC,EAAO,CACrD,MAAMC,EAASL,EAAK,OACdiX,EAASjX,EAAK,OACdoZ,EAAS/Y,EAAO,YAChBgZ,EAAchZ,IAAW4W,EACzBnuB,EAAS,CAAA,EACf,IAAIxmC,EAAGo3C,EAAMx0C,EAAMs2D,EACnB,IAAIl5D,EAAIwR,EAAO4lC,EAAO5lC,EAAQssC,EAAO99C,EAAIo3C,EAAM,EAAEp3C,EAC7Ck5D,EAAQ9jD,EAAKpV,CAAC,EACd4C,EAAO,CAAA,EACPA,EAAKm7C,EAAO,IAAI,EAAIgZ,GAAehZ,EAAO,MAAM+Y,EAAO92D,CAAC,EAAGA,CAAC,EAC5DwmC,EAAO,KAAK+yB,GAAWL,EAAOt2D,EAAM+xD,EAAQ30D,CAAC,CAAC,EAElD,OAAOwmC,CACX,CACA,SAASizB,GAAWC,EAAQ,CACxB,OAAOA,GAAUA,EAAO,WAAa,QAAaA,EAAO,SAAW,MACxE,CACA,SAASC,GAAQ5uD,EAAM4pD,EAAQiF,EAAY,CACvC,OAAI7uD,IAAS,EACFouC,GAAKpuC,CAAI,GAEZ4pD,EAAO,aAAc,EAAG,EAAI,KAAOA,EAAO,KAAOiF,EAAa,EAAI,GAC9E,CACA,SAASC,GAAY9G,EAAY,CAC7B,IAAI/b,EAASxlC,EAAOC,EAAKyyC,EAAKC,EAC9B,OAAI4O,EAAW,YACX/b,EAAU+b,EAAW,KAAOA,EAAW,EACvCvhD,EAAQ,OACRC,EAAM,UAENulC,EAAU+b,EAAW,KAAOA,EAAW,EACvCvhD,EAAQ,SACRC,EAAM,OAENulC,GACAkN,EAAM,MACNC,EAAS,UAETD,EAAM,QACNC,EAAS,OAEN,CACH,MAAA3yC,EACA,IAAAC,EACA,QAAAulC,EACA,IAAAkN,EACA,OAAAC,CACR,CACA,CACA,SAAS2V,GAAiB/G,EAAY/+C,EAASktB,EAAOjlB,EAAO,CACzD,IAAI89C,EAAO/lD,EAAQ,cACnB,MAAMrR,EAAM,CAAA,EACZ,GAAI,CAACo3D,EAAM,CACPhH,EAAW,cAAgBpwD,EAC3B,MACH,CACD,GAAIo3D,IAAS,GAAM,CACfhH,EAAW,cAAgB,CACvB,IAAK,GACL,MAAO,GACP,OAAQ,GACR,KAAM,EAClB,EACQ,MACH,CACD,KAAM,CAAE,MAAAvhD,EAAQ,IAAAC,EAAM,QAAAulC,EAAU,IAAAkN,EAAM,OAAAC,CAAS,EAAG0V,GAAY9G,CAAU,EACpEgH,IAAS,UAAY74B,IACrB6xB,EAAW,mBAAqB,IAC3B7xB,EAAM,MAAQ,KAAOjlB,EACtB89C,EAAO7V,GACChjB,EAAM,SAAW,KAAOjlB,EAChC89C,EAAO5V,GAEPxhD,EAAIq3D,GAAU7V,EAAQ3yC,EAAOC,EAAKulC,CAAO,CAAC,EAAI,GAC9C+iB,EAAO7V,IAGfvhD,EAAIq3D,GAAUD,EAAMvoD,EAAOC,EAAKulC,CAAO,CAAC,EAAI,GAC5C+b,EAAW,cAAgBpwD,CAC/B,CACA,SAASq3D,GAAUD,EAAMp2D,EAAGC,EAAGozC,EAAS,CACpC,OAAIA,GACA+iB,EAAOE,GAAKF,EAAMp2D,EAAGC,CAAC,EACtBm2D,EAAOG,GAASH,EAAMn2D,EAAGD,CAAC,GAE1Bo2D,EAAOG,GAASH,EAAMp2D,EAAGC,CAAC,EAEvBm2D,CACX,CACA,SAASE,GAAKE,EAAM7iB,EAAI8iB,EAAI,CACxB,OAAOD,IAAS7iB,EAAK8iB,EAAKD,IAASC,EAAK9iB,EAAK6iB,CACjD,CACA,SAASD,GAASv1D,EAAG6M,EAAOC,EAAK,CAC7B,OAAO9M,IAAM,QAAU6M,EAAQ7M,IAAM,MAAQ8M,EAAM9M,CACvD,CACA,SAAS01D,GAAiBtH,EAAY,CAAE,cAAAuH,CAAa,EAAKxkB,EAAO,CAC7Did,EAAW,cAAgBuH,IAAkB,OAASxkB,IAAU,EAAI,IAAO,EAAIwkB,CACnF,CACA,MAAMC,WAAsB1E,EAAkB,CAoC7C,mBAAmBnY,EAAMtoC,EAAM5D,EAAOssC,EAAO,CACtC,OAAO0b,GAAsB9b,EAAMtoC,EAAM5D,EAAOssC,CAAK,CACxD,CACJ,eAAeJ,EAAMtoC,EAAM5D,EAAOssC,EAAO,CAClC,OAAO0b,GAAsB9b,EAAMtoC,EAAM5D,EAAOssC,CAAK,CACxD,CACJ,gBAAgBJ,EAAMtoC,EAAM5D,EAAOssC,EAAO,CACnC,KAAM,CAAE,OAAAC,EAAS,OAAA4W,CAAS,EAAGjX,EACvB,CAAE,SAAAsZ,EAAU,IAAM,SAAAC,EAAU,GAAM,EAAG,KAAK,SAC1CuD,EAAWzc,EAAO,OAAS,IAAMiZ,EAAWC,EAC5CwD,EAAW9F,EAAO,OAAS,IAAMqC,EAAWC,EAC5CzwB,EAAS,CAAA,EACf,IAAIxmC,EAAGo3C,EAAMx0C,EAAMR,EACnB,IAAIpC,EAAIwR,EAAO4lC,EAAO5lC,EAAQssC,EAAO99C,EAAIo3C,EAAM,EAAEp3C,EAC7CoC,EAAMgT,EAAKpV,CAAC,EACZ4C,EAAO,CAAA,EACPA,EAAKm7C,EAAO,IAAI,EAAIA,EAAO,MAAM1F,GAAiBj2C,EAAKo4D,CAAQ,EAAGx6D,CAAC,EACnEwmC,EAAO,KAAK+yB,GAAWlhB,GAAiBj2C,EAAKq4D,CAAQ,EAAG73D,EAAM+xD,EAAQ30D,CAAC,CAAC,EAE5E,OAAOwmC,CACV,CACJ,sBAAsBiT,EAAOyZ,EAAO1sB,EAAQtF,EAAO,CAC5C,MAAM,sBAAsBuY,EAAOyZ,EAAO1sB,EAAQtF,CAAK,EACvD,MAAMw4B,EAASlzB,EAAO,QAClBkzB,GAAUxG,IAAU,KAAK,YAAY,SACrCzZ,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKigB,EAAO,GAAG,EAC1CjgB,EAAM,IAAM,KAAK,IAAIA,EAAM,IAAKigB,EAAO,GAAG,EAEjD,CACJ,gBAAiB,CACV,MAAO,EACV,CACJ,iBAAiBz9C,EAAO,CACjB,MAAMyhC,EAAO,KAAK,YACZ,CAAE,OAAAK,EAAS,OAAA4W,CAAS,EAAGjX,EACvBlX,EAAS,KAAK,UAAUvqB,CAAK,EAC7By9C,EAASlzB,EAAO,QAChB1lC,EAAQ24D,GAAWC,CAAM,EAAI,IAAMA,EAAO,MAAQ,KAAOA,EAAO,IAAM,IAAM,GAAK/E,EAAO,iBAAiBnuB,EAAOmuB,EAAO,IAAI,CAAC,EAClI,MAAO,CACH,MAAO,GAAK5W,EAAO,iBAAiBvX,EAAOuX,EAAO,IAAI,CAAC,EACvD,MAAAj9C,CACZ,CACK,CACD,YAAa,CACT,KAAK,oBAAsB,GAC3B,MAAM,WAAU,EAChB,MAAM48C,EAAO,KAAK,YAClBA,EAAK,MAAQ,KAAK,WAAU,EAAG,KAClC,CACD,OAAOgG,EAAM,CACT,MAAMhG,EAAO,KAAK,YAClB,KAAK,eAAeA,EAAK,KAAM,EAAGA,EAAK,KAAK,OAAQgG,CAAI,CAC3D,CACD,eAAegX,EAAMlpD,EAAOssC,EAAO4F,EAAM,CACrC,MAAMnqC,EAAQmqC,IAAS,QACjB,CAAE,MAAAznC,EAAQ,YAAa,CAAE,OAAA04C,CAAS,CAAA,EAAM,KACxCn1C,EAAOm1C,EAAO,eACdgG,EAAahG,EAAO,eACpBgE,EAAQ,KAAK,YACb,CAAE,cAAAf,EAAgB,eAAAG,CAAiB,EAAG,KAAK,kBAAkBvmD,EAAOkyC,CAAI,EAC9E,QAAQ1jD,EAAIwR,EAAOxR,EAAIwR,EAAQssC,EAAO99C,IAAI,CACtC,MAAMwmC,EAAS,KAAK,UAAUxmC,CAAC,EACzB46D,EAAUrhD,GAASi9B,GAAchQ,EAAOmuB,EAAO,IAAI,CAAC,EAAI,CAC1D,KAAAn1C,EACA,KAAMA,CACtB,EAAgB,KAAK,yBAAyBxf,CAAC,EAC7B66D,EAAU,KAAK,yBAAyB76D,EAAG24D,CAAK,EAChDz3B,GAASsF,EAAO,SAAW,CAAA,GAAImuB,EAAO,IAAI,EAC1C5B,EAAa,CACf,WAAA4H,EACA,KAAMC,EAAQ,KACd,mBAAoB,CAAC15B,GAASu4B,GAAWjzB,EAAO,OAAO,GAAKvqB,IAAUilB,EAAM,MAAQjlB,IAAUilB,EAAM,QACpG,EAAGy5B,EAAaC,EAAQ,KAAOC,EAAQ,OACvC,EAAGF,EAAaE,EAAQ,OAASD,EAAQ,KACzC,OAAQD,EAAaE,EAAQ,KAAO,KAAK,IAAID,EAAQ,IAAI,EACzD,MAAOD,EAAa,KAAK,IAAIC,EAAQ,IAAI,EAAIC,EAAQ,IACrE,EACgB9C,IACAhF,EAAW,QAAU6E,GAAiB,KAAK,0BAA0B53D,EAAG06D,EAAK16D,CAAC,EAAE,OAAS,SAAW0jD,CAAI,GAE5G,MAAM1vC,EAAU++C,EAAW,SAAW2H,EAAK16D,CAAC,EAAE,QAC9C85D,GAAiB/G,EAAY/+C,EAASktB,EAAOjlB,CAAK,EAClDo+C,GAAiBtH,EAAY/+C,EAAS2kD,EAAM,KAAK,EACjD,KAAK,cAAc+B,EAAK16D,CAAC,EAAGA,EAAG+yD,EAAYrP,CAAI,CAClD,CACJ,CACJ,WAAWv+C,EAAM21D,EAAW,CACrB,KAAM,CAAE,OAAA/c,CAAM,EAAM,KAAK,YACnByV,EAAWzV,EAAO,wBAAwB,KAAK,KAAK,EAAE,OAAQL,GAAOA,EAAK,WAAW,QAAQ,OAAO,EACpGsW,EAAUjW,EAAO,QAAQ,QACzBuW,EAAS,CAAA,EACTyG,EAAYrd,GAAO,CACrB,MAAMlX,EAASkX,EAAK,WAAW,UAAUod,CAAS,EAC5C17D,EAAMonC,GAAUA,EAAOkX,EAAK,OAAO,IAAI,EAC7C,GAAIlH,GAAcp3C,CAAG,GAAK,MAAMA,CAAG,EAC/B,MAAO,EAEvB,EACQ,UAAWs+C,KAAQ8V,EACf,GAAI,EAAAsH,IAAc,QAAaC,EAASrd,CAAI,MAGxCsW,IAAY,IAASM,EAAO,QAAQ5W,EAAK,KAAK,IAAM,IAAMsW,IAAY,QAAatW,EAAK,QAAU,SAClG4W,EAAO,KAAK5W,EAAK,KAAK,EAEtBA,EAAK,QAAUv4C,GACf,MAGR,OAAKmvD,EAAO,QACRA,EAAO,KAAK,MAAS,EAElBA,CACV,CACJ,eAAer4C,EAAO,CACf,OAAO,KAAK,WAAW,OAAWA,CAAK,EAAE,MAC5C,CACJ,eAAe60C,EAAcxtD,EAAMw3D,EAAW,CACvC,MAAMxG,EAAS,KAAK,WAAWxD,EAAcgK,CAAS,EAChD7+C,EAAQ3Y,IAAS,OAAYgxD,EAAO,QAAQhxD,CAAI,EAAI,GAC1D,OAAO2Y,IAAU,GAAKq4C,EAAO,OAAS,EAAIr4C,CAC7C,CACJ,WAAY,CACL,MAAM8yB,EAAO,KAAK,QACZ2O,EAAO,KAAK,YACZK,EAASL,EAAK,OACdqb,EAAS,CAAA,EACf,IAAI/4D,EAAGo3C,EACP,IAAIp3C,EAAI,EAAGo3C,EAAOsG,EAAK,KAAK,OAAQ19C,EAAIo3C,EAAM,EAAEp3C,EAC5C+4D,EAAO,KAAKhb,EAAO,iBAAiB,KAAK,UAAU/9C,CAAC,EAAE+9C,EAAO,IAAI,EAAG/9C,CAAC,CAAC,EAE1E,MAAMg7D,EAAejsB,EAAK,aAE1B,MAAO,CACH,IAFQisB,GAAgBzC,GAAqB7a,CAAI,EAGjD,OAAAqb,EACA,MAAOhb,EAAO,YACd,IAAKA,EAAO,UACZ,WAAY,KAAK,eAAgB,EACjC,MAAOA,EACP,QAAShP,EAAK,QACd,MAAOisB,EAAe,EAAIjsB,EAAK,mBAAqBA,EAAK,aACrE,CACK,CACJ,yBAAyB9yB,EAAO,CACzB,KAAM,CAAE,YAAa,CAAE,OAAA04C,EAAS,SAAAgC,EAAW,MAAO7F,CAAY,EAAM,QAAS,CAAE,KAAMmK,EAAY,aAAAC,CAAe,CAAA,EAAM,KAChHtB,EAAaqB,GAAa,EAC1Bz0B,EAAS,KAAK,UAAUvqB,CAAK,EAC7By9C,EAASlzB,EAAO,QAChB20B,EAAW1B,GAAWC,CAAM,EAClC,IAAI54D,EAAQ0lC,EAAOmuB,EAAO,IAAI,EAC1BnjD,EAAQ,EACRuvB,EAAS41B,EAAW,KAAK,WAAWhC,EAAQnuB,EAAQmwB,CAAQ,EAAI71D,EAChEkqC,EAAMjgC,EACNg2B,IAAWjgC,IACX0Q,EAAQuvB,EAASjgC,EACjBigC,EAASjgC,GAETq6D,IACAr6D,EAAQ44D,EAAO,SACf34B,EAAS24B,EAAO,OAASA,EAAO,SAC5B54D,IAAU,GAAKq4C,GAAKr4C,CAAK,IAAMq4C,GAAKugB,EAAO,MAAM,IACjDloD,EAAQ,GAEZA,GAAS1Q,GAEb,MAAMq4D,EAAa,CAAC3iB,GAAcykB,CAAS,GAAK,CAACE,EAAWF,EAAYzpD,EACxE,IAAIgO,EAAOm1C,EAAO,iBAAiBwE,CAAU,EAO7C,GANI,KAAK,MAAM,kBAAkBl9C,CAAK,EAClC+uB,EAAO2pB,EAAO,iBAAiBnjD,EAAQuvB,CAAM,EAE7CiK,EAAOxrB,EAEXzU,EAAOigC,EAAOxrB,EACV,KAAK,IAAIzU,CAAI,EAAImwD,EAAc,CAC/BnwD,EAAO4uD,GAAQ5uD,EAAM4pD,EAAQiF,CAAU,EAAIsB,EACvCp6D,IAAU84D,IACVp6C,GAAQzU,EAAO,GAEnB,MAAMqwD,EAAazG,EAAO,mBAAmB,CAAC,EACxC0G,EAAW1G,EAAO,mBAAmB,CAAC,EACtC9pB,EAAM,KAAK,IAAIuwB,EAAYC,CAAQ,EACnClnB,EAAM,KAAK,IAAIinB,EAAYC,CAAQ,EACzC77C,EAAO,KAAK,IAAI,KAAK,IAAIA,EAAM20B,CAAG,EAAGtJ,CAAG,EACxCG,EAAOxrB,EAAOzU,EACV4rD,GAAY,CAACwE,IACb30B,EAAO,QAAQmuB,EAAO,IAAI,EAAE,cAAc7D,CAAY,EAAI6D,EAAO,iBAAiB3pB,CAAI,EAAI2pB,EAAO,iBAAiBn1C,CAAI,EAE7H,CACD,GAAIA,IAASm1C,EAAO,iBAAiBiF,CAAU,EAAG,CAC9C,MAAM0B,EAAWniB,GAAKpuC,CAAI,EAAI4pD,EAAO,qBAAqBiF,CAAU,EAAI,EACxEp6C,GAAQ87C,EACRvwD,GAAQuwD,CACX,CACD,MAAO,CACH,KAAAvwD,EACA,KAAAyU,EACA,KAAAwrB,EACA,OAAQA,EAAOjgC,EAAO,CAClC,CACK,CACJ,yBAAyBkR,EAAO08C,EAAO,CAChC,MAAMzF,EAAQyF,EAAM,MACd3kD,EAAU,KAAK,QACf+mD,EAAW/mD,EAAQ,SACnBunD,EAAkB5kB,GAAe3iC,EAAQ,gBAAiB,GAAQ,EACxE,IAAIwnD,EAAQzwD,EACZ,GAAI4tD,EAAM,QAAS,CACf,MAAMC,EAAamC,EAAW,KAAK,eAAe9+C,CAAK,EAAI08C,EAAM,WAC3Dlf,EAAQzlC,EAAQ,eAAiB,OAAS8kD,GAA0B78C,EAAO08C,EAAO3kD,EAAS4kD,CAAU,EAAIF,GAAyBz8C,EAAO08C,EAAO3kD,EAAS4kD,CAAU,EACnK6C,EAAa,KAAK,eAAe,KAAK,MAAO,KAAK,YAAY,MAAOV,EAAW9+C,EAAQ,MAAS,EACvGu/C,EAAS/hB,EAAM,MAAQA,EAAM,MAAQgiB,EAAahiB,EAAM,MAAQ,EAChE1uC,EAAO,KAAK,IAAIwwD,EAAiB9hB,EAAM,MAAQA,EAAM,KAAK,CACtE,MACY+hB,EAAStI,EAAM,iBAAiB,KAAK,UAAUj3C,CAAK,EAAEi3C,EAAM,IAAI,EAAGj3C,CAAK,EACxElR,EAAO,KAAK,IAAIwwD,EAAiB5C,EAAM,IAAMA,EAAM,KAAK,EAE5D,MAAO,CACH,KAAM6C,EAASzwD,EAAO,EACtB,KAAMywD,EAASzwD,EAAO,EACtB,OAAAywD,EACA,KAAAzwD,CACZ,CACK,CACD,MAAO,CACH,MAAM2yC,EAAO,KAAK,YACZiX,EAASjX,EAAK,OACdge,EAAQhe,EAAK,KACbtG,EAAOskB,EAAM,OACnB,IAAI17D,EAAI,EACR,KAAMA,EAAIo3C,EAAM,EAAEp3C,EACV,KAAK,UAAUA,CAAC,EAAE20D,EAAO,IAAI,IAAM,MACnC+G,EAAM17D,CAAC,EAAE,KAAK,KAAK,IAAI,CAGlC,CACL,CA/QIo4D,GADEmC,GACK,KAAK,OACfnC,GAFKmC,GAEE,WAAW,CACX,mBAAoB,GACpB,gBAAiB,MACjB,mBAAoB,GACpB,cAAe,GACf,QAAS,GACT,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,OACA,QACA,QACH,CACJ,CACJ,CACT,GACCnC,GArBKmC,GAqBE,YAAY,CACZ,OAAQ,CACJ,QAAS,CACL,KAAM,WACN,OAAQ,GACR,KAAM,CACF,OAAQ,EACX,CACJ,EACD,QAAS,CACL,KAAM,SACN,YAAa,EAChB,CACJ,CACT,GAgpBA,MAAMoB,WAAuB9F,EAAkB,CAkB3C,YAAa,CACT,KAAK,oBAAsB,GAC3B,KAAK,mBAAqB,GAC1B,MAAM,WAAU,CACnB,CACD,OAAOnS,EAAM,CACT,MAAMhG,EAAO,KAAK,YACZ,CAAE,QAASjX,EAAO,KAAMkX,EAAS,GAAK,SAAAie,CAAW,EAAGle,EACpDE,EAAqB,KAAK,MAAM,oBACtC,GAAI,CAAE,MAAApsC,EAAQ,MAAAssC,CAAQ,EAAGL,GAAiCC,EAAMC,EAAQC,CAAkB,EAC1F,KAAK,WAAapsC,EAClB,KAAK,WAAassC,EACdM,GAAoBV,CAAI,IACxBlsC,EAAQ,EACRssC,EAAQH,EAAO,QAEnBlX,EAAK,OAAS,KAAK,MACnBA,EAAK,cAAgB,KAAK,MAC1BA,EAAK,WAAa,CAAC,CAACm1B,EAAS,WAC7Bn1B,EAAK,OAASkX,EACd,MAAM3pC,EAAU,KAAK,6BAA6B0vC,CAAI,EACjD,KAAK,QAAQ,WACd1vC,EAAQ,YAAc,GAE1BA,EAAQ,QAAU,KAAK,QAAQ,QAC/B,KAAK,cAAcyyB,EAAM,OAAW,CAChC,SAAU,CAACmX,EACX,QAAA5pC,CACH,EAAE0vC,CAAI,EACP,KAAK,eAAe/F,EAAQnsC,EAAOssC,EAAO4F,CAAI,CACjD,CACD,eAAe/F,EAAQnsC,EAAOssC,EAAO4F,EAAM,CACvC,MAAMnqC,EAAQmqC,IAAS,QACjB,CAAE,OAAA3F,EAAS,OAAA4W,EAAS,SAAAgC,EAAW,SAAAiF,CAAW,EAAG,KAAK,YAClD,CAAE,cAAAhE,EAAgB,eAAAG,CAAiB,EAAG,KAAK,kBAAkBvmD,EAAOkyC,CAAI,EACxEqR,EAAQhX,EAAO,KACfiX,EAAQL,EAAO,KACf,CAAE,SAAAvE,EAAW,QAAAjB,GAAa,KAAK,QAC/B0M,EAAe1+B,GAASizB,CAAQ,EAAIA,EAAW,OAAO,kBACtD0L,EAAe,KAAK,MAAM,qBAAuBviD,GAASmqC,IAAS,OACnEjyC,EAAMD,EAAQssC,EACdie,EAAcpe,EAAO,OAC3B,IAAIqe,EAAaxqD,EAAQ,GAAK,KAAK,UAAUA,EAAQ,CAAC,EACtD,QAAQxR,EAAI,EAAGA,EAAI+7D,EAAa,EAAE/7D,EAAE,CAChC,MAAMkjD,EAAQvF,EAAO39C,CAAC,EAChB+yD,EAAa+I,EAAe5Y,EAAQ,GAC1C,GAAIljD,EAAIwR,GAASxR,GAAKyR,EAAK,CACvBshD,EAAW,KAAO,GAClB,QACH,CACD,MAAMvsB,EAAS,KAAK,UAAUxmC,CAAC,EACzBi8D,EAAWzlB,GAAchQ,EAAOwuB,CAAK,CAAC,EACtC9K,EAAS6I,EAAWgC,CAAK,EAAIhX,EAAO,iBAAiBvX,EAAOuuB,CAAK,EAAG/0D,CAAC,EACrEmqD,EAAS4I,EAAWiC,CAAK,EAAIz7C,GAAS0iD,EAAWtH,EAAO,aAAc,EAAGA,EAAO,iBAAiBgC,EAAW,KAAK,WAAWhC,EAAQnuB,EAAQmwB,CAAQ,EAAInwB,EAAOwuB,CAAK,EAAGh1D,CAAC,EAC9K+yD,EAAW,KAAO,MAAM7I,CAAM,GAAK,MAAMC,CAAM,GAAK8R,EACpDlJ,EAAW,KAAO/yD,EAAI,GAAK,KAAK,IAAIwmC,EAAOuuB,CAAK,EAAIiH,EAAWjH,CAAK,CAAC,EAAI8G,EACrE1M,IACA4D,EAAW,OAASvsB,EACpBusB,EAAW,IAAM6I,EAAS,KAAK57D,CAAC,GAEhC+3D,IACAhF,EAAW,QAAU6E,GAAiB,KAAK,0BAA0B53D,EAAGkjD,EAAM,OAAS,SAAWQ,CAAI,GAErGoY,GACD,KAAK,cAAc5Y,EAAOljD,EAAG+yD,EAAYrP,CAAI,EAEjDsY,EAAax1B,CAChB,CACJ,CACJ,gBAAiB,CACV,MAAMkX,EAAO,KAAK,YACZoY,EAAUpY,EAAK,QACfwe,EAASpG,EAAQ,SAAWA,EAAQ,QAAQ,aAAe,EAC3D1gD,EAAOsoC,EAAK,MAAQ,GAC1B,GAAI,CAACtoC,EAAK,OACN,OAAO8mD,EAEX,MAAMtT,EAAaxzC,EAAK,CAAC,EAAE,KAAK,KAAK,0BAA0B,CAAC,CAAC,EAC3D+mD,EAAY/mD,EAAKA,EAAK,OAAS,CAAC,EAAE,KAAK,KAAK,0BAA0BA,EAAK,OAAS,CAAC,CAAC,EAC5F,OAAO,KAAK,IAAI8mD,EAAQtT,EAAYuT,CAAS,EAAI,CACpD,CACD,MAAO,CACH,MAAMze,EAAO,KAAK,YAClBA,EAAK,QAAQ,oBAAoB,KAAK,MAAM,UAAWA,EAAK,OAAO,IAAI,EACvE,MAAM,KAAI,CACb,CACL,CAvGI0a,GADEuD,GACK,KAAK,QACfvD,GAFKuD,GAEE,WAAW,CACX,mBAAoB,OACpB,gBAAiB,QACjB,SAAU,GACV,SAAU,EAClB,GACCvD,GARKuD,GAQE,YAAY,CACZ,OAAQ,CACJ,QAAS,CACL,KAAM,UACT,EACD,QAAS,CACL,KAAM,QACT,CACJ,CACT,GAmfI,SAASS,IAAW,CACpB,MAAM,IAAI,MAAM,iFAAiF,CACrG,CAMI,MAAMC,EAAgB,CActB,YAAYroD,EAAQ,CADpBokD,GAAA,gBAEI,KAAK,QAAUpkD,GAAW,EAC7B,CANC,OAAO,SAASsoD,EAAS,CACvB,OAAO,OAAOD,GAAgB,UAAWC,CAAO,CACnD,CAMD,MAAO,CAAE,CACT,SAAU,CACN,OAAOF,GAAQ,CAClB,CACD,OAAQ,CACJ,OAAOA,GAAQ,CAClB,CACD,QAAS,CACL,OAAOA,GAAQ,CAClB,CACD,KAAM,CACF,OAAOA,GAAQ,CAClB,CACD,MAAO,CACH,OAAOA,GAAQ,CAClB,CACD,SAAU,CACN,OAAOA,GAAQ,CAClB,CACD,OAAQ,CACJ,OAAOA,GAAQ,CAClB,CACL,CACA,IAAI5uB,GAAW,CACX,MAAO6uB,EACX,EAEA,SAASE,GAAaC,EAASve,EAAMn9C,EAAO27D,EAAW,CACnD,KAAM,CAAE,WAAA3H,EAAa,KAAA1/C,EAAO,QAAAsnD,CAAO,EAAMF,EACnCze,EAAS+W,EAAW,YAAY,OACtC,GAAI/W,GAAUE,IAASF,EAAO,MAAQE,IAAS,KAAOye,GAAWtnD,EAAK,OAAQ,CAC1E,MAAMunD,EAAe5e,EAAO,eAAiBzB,GAAgBF,GAC7D,GAAKqgB,GAEE,GAAI3H,EAAW,eAAgB,CAClC,MAAM/0D,EAAKqV,EAAK,CAAC,EACXqkC,EAAQ,OAAO15C,EAAG,UAAa,YAAcA,EAAG,SAASk+C,CAAI,EACnE,GAAIxE,EAAO,CACP,MAAMjoC,EAAQmrD,EAAavnD,EAAM6oC,EAAMn9C,EAAQ24C,CAAK,EAC9ChoC,EAAMkrD,EAAavnD,EAAM6oC,EAAMn9C,EAAQ24C,CAAK,EAClD,MAAO,CACH,GAAIjoC,EAAM,GACV,GAAIC,EAAI,EAC5B,CACa,CACJ,MAZG,QAAOkrD,EAAavnD,EAAM6oC,EAAMn9C,CAAK,CAa5C,CACD,MAAO,CACH,GAAI,EACJ,GAAIsU,EAAK,OAAS,CAC1B,CACA,CACC,SAASwnD,GAAyB5a,EAAO/D,EAAMhf,EAAU7rB,EAASqpD,EAAW,CAC1E,MAAMjJ,EAAWxR,EAAM,+BACjBlhD,EAAQm+B,EAASgf,CAAI,EAC3B,QAAQj+C,EAAI,EAAGo3C,EAAOoc,EAAS,OAAQxzD,EAAIo3C,EAAM,EAAEp3C,EAAE,CACjD,KAAM,CAAE,MAAAic,EAAQ,KAAA7G,CAAO,EAAGo+C,EAASxzD,CAAC,EAC9B,CAAE,GAAAk8C,EAAK,GAAAD,CAAK,EAAGsgB,GAAa/I,EAASxzD,CAAC,EAAGi+C,EAAMn9C,EAAO27D,CAAS,EACrE,QAAQ7vC,EAAIsvB,EAAItvB,GAAKqvB,EAAI,EAAErvB,EAAE,CACzB,MAAM2+B,EAAUn2C,EAAKwX,CAAC,EACjB2+B,EAAQ,MACTn4C,EAAQm4C,EAAStvC,EAAO2Q,CAAC,CAEhC,CACJ,CACL,CACC,SAASiwC,GAAyB5e,EAAM,CACrC,MAAM6e,EAAO7e,EAAK,QAAQ,GAAG,IAAM,GAC7B8e,EAAO9e,EAAK,QAAQ,GAAG,IAAM,GACnC,OAAO,SAAShD,EAAKC,EAAK,CACtB,MAAM8hB,EAASF,EAAO,KAAK,IAAI7hB,EAAI,EAAIC,EAAI,CAAC,EAAI,EAC1C+hB,EAASF,EAAO,KAAK,IAAI9hB,EAAI,EAAIC,EAAI,CAAC,EAAI,EAChD,OAAO,KAAK,KAAK,KAAK,IAAI8hB,EAAQ,CAAC,EAAI,KAAK,IAAIC,EAAQ,CAAC,CAAC,CAClE,CACA,CACC,SAASC,GAAkBlb,EAAO/iB,EAAUgf,EAAMkf,EAAkBC,EAAkB,CACnF,MAAMtgB,EAAQ,CAAA,EACd,MAAI,CAACsgB,GAAoB,CAACpb,EAAM,cAAc/iB,CAAQ,GAetD29B,GAAyB5a,EAAO/D,EAAMhf,EAZf,SAASssB,EAASuF,EAAc70C,EAAO,CACtD,CAACmhD,GAAoB,CAACna,GAAesI,EAASvJ,EAAM,UAAW,CAAC,GAGhEuJ,EAAQ,QAAQtsB,EAAS,EAAGA,EAAS,EAAGk+B,CAAgB,GACxDrgB,EAAM,KAAK,CACP,QAAAyO,EACA,aAAAuF,EACA,MAAA70C,CAChB,CAAa,CAEb,EACoE,EAAI,EAC7D6gC,CACX,CACC,SAASugB,GAAsBrb,EAAO/iB,EAAUgf,EAAMkf,EAAkB,CACrE,IAAIrgB,EAAQ,CAAA,EACZ,SAASwgB,EAAe/R,EAASuF,EAAc70C,EAAO,CAClD,KAAM,CAAE,WAAAshD,EAAa,SAAAC,GAAcjS,EAAQ,SAAS,CAChD,aACA,UACH,EAAE4R,CAAgB,EACb,CAAE,MAAApiB,CAAK,EAAMN,GAAkB8Q,EAAS,CAC1C,EAAGtsB,EAAS,EACZ,EAAGA,EAAS,CACxB,CAAS,EACGoc,GAAcN,EAAOwiB,EAAYC,CAAQ,GACzC1gB,EAAM,KAAK,CACP,QAAAyO,EACA,aAAAuF,EACA,MAAA70C,CAChB,CAAa,CAER,CACD,OAAA2gD,GAAyB5a,EAAO/D,EAAMhf,EAAUq+B,CAAc,EACvDxgB,CACX,CACC,SAAS2gB,GAAyBzb,EAAO/iB,EAAUgf,EAAMwe,EAAWU,EAAkBC,EAAkB,CACrG,IAAItgB,EAAQ,CAAA,EACZ,MAAM4gB,EAAiBb,GAAyB5e,CAAI,EACpD,IAAI0f,EAAc,OAAO,kBACzB,SAASL,EAAe/R,EAASuF,EAAc70C,EAAO,CAClD,MAAMgwB,EAAUsf,EAAQ,QAAQtsB,EAAS,EAAGA,EAAS,EAAGk+B,CAAgB,EACxE,GAAIV,GAAa,CAACxwB,EACd,OAEJ,MAAMuvB,EAASjQ,EAAQ,eAAe4R,CAAgB,EAEtD,GAAI,EADgB,CAAC,CAACC,GAAoBpb,EAAM,cAAcwZ,CAAM,IAChD,CAACvvB,EACjB,OAEJ,MAAM2xB,EAAWF,EAAez+B,EAAUu8B,CAAM,EAC5CoC,EAAWD,GACX7gB,EAAQ,CACJ,CACI,QAAAyO,EACA,aAAAuF,EACA,MAAA70C,CACH,CACjB,EACY0hD,EAAcC,GACPA,IAAaD,GACpB7gB,EAAM,KAAK,CACP,QAAAyO,EACA,aAAAuF,EACA,MAAA70C,CAChB,CAAa,CAER,CACD,OAAA2gD,GAAyB5a,EAAO/D,EAAMhf,EAAUq+B,CAAc,EACvDxgB,CACX,CACC,SAAS+gB,GAAgB7b,EAAO/iB,EAAUgf,EAAMwe,EAAWU,EAAkBC,EAAkB,CAC5F,MAAI,CAACA,GAAoB,CAACpb,EAAM,cAAc/iB,CAAQ,EAC3C,GAEJgf,IAAS,KAAO,CAACwe,EAAYY,GAAsBrb,EAAO/iB,EAAUgf,EAAMkf,CAAgB,EAAIM,GAAyBzb,EAAO/iB,EAAUgf,EAAMwe,EAAWU,EAAkBC,CAAgB,CACtM,CACC,SAASU,GAAa9b,EAAO/iB,EAAUgf,EAAMwe,EAAWU,EAAkB,CACvE,MAAMrgB,EAAQ,CAAA,EACRihB,EAAc9f,IAAS,IAAM,WAAa,WAChD,IAAI+f,EAAiB,GAWrB,OAVApB,GAAyB5a,EAAO/D,EAAMhf,EAAU,CAACssB,EAASuF,EAAc70C,IAAQ,CACxEsvC,EAAQwS,CAAW,EAAE9+B,EAASgf,CAAI,EAAGkf,CAAgB,IACrDrgB,EAAM,KAAK,CACP,QAAAyO,EACA,aAAAuF,EACA,MAAA70C,CAChB,CAAa,EACD+hD,EAAiBA,GAAkBzS,EAAQ,QAAQtsB,EAAS,EAAGA,EAAS,EAAGk+B,CAAgB,EAEvG,CAAK,EACGV,GAAa,CAACuB,EACP,GAEJlhB,CACX,CACC,IAAImhB,GAAc,CACf,yBAAArB,GACA,MAAO,CACV,MAAO5a,EAAO3vB,EAAGre,EAASmpD,EAAkB,CACjC,MAAMl+B,EAAWmtB,GAAoB/5B,EAAG2vB,CAAK,EACvC/D,EAAOjqC,EAAQ,MAAQ,IACvBopD,EAAmBppD,EAAQ,kBAAoB,GAC/C8oC,EAAQ9oC,EAAQ,UAAYkpD,GAAkBlb,EAAO/iB,EAAUgf,EAAMkf,EAAkBC,CAAgB,EAAIS,GAAgB7b,EAAO/iB,EAAUgf,EAAM,GAAOkf,EAAkBC,CAAgB,EAC3L7F,EAAW,CAAA,EACjB,OAAKza,EAAM,QAGXkF,EAAM,6BAA4B,EAAG,QAAStE,GAAO,CACjD,MAAMzhC,EAAQ6gC,EAAM,CAAC,EAAE,MACjByO,EAAU7N,EAAK,KAAKzhC,CAAK,EAC3BsvC,GAAW,CAACA,EAAQ,MACpBgM,EAAS,KAAK,CACV,QAAAhM,EACA,aAAc7N,EAAK,MACnB,MAAAzhC,CACxB,CAAqB,CAErB,CAAa,EACMs7C,GAbI,EAcd,EACR,QAASvV,EAAO3vB,EAAGre,EAASmpD,EAAkB,CACnC,MAAMl+B,EAAWmtB,GAAoB/5B,EAAG2vB,CAAK,EACvC/D,EAAOjqC,EAAQ,MAAQ,KACvBopD,EAAmBppD,EAAQ,kBAAoB,GACrD,IAAI8oC,EAAQ9oC,EAAQ,UAAYkpD,GAAkBlb,EAAO/iB,EAAUgf,EAAMkf,EAAkBC,CAAgB,EAAIS,GAAgB7b,EAAO/iB,EAAUgf,EAAM,GAAOkf,EAAkBC,CAAgB,EAC/L,GAAItgB,EAAM,OAAS,EAAG,CAClB,MAAMgU,EAAehU,EAAM,CAAC,EAAE,aACxB1nC,EAAO4sC,EAAM,eAAe8O,CAAY,EAAE,KAChDhU,EAAQ,CAAA,EACR,QAAQ98C,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAC9B88C,EAAM,KAAK,CACP,QAAS1nC,EAAKpV,CAAC,EACf,aAAA8wD,EACA,MAAO9wD,CAC/B,CAAqB,CAER,CACD,OAAO88C,CACV,EACR,MAAOkF,EAAO3vB,EAAGre,EAASmpD,EAAkB,CACjC,MAAMl+B,EAAWmtB,GAAoB/5B,EAAG2vB,CAAK,EACvC/D,EAAOjqC,EAAQ,MAAQ,KACvBopD,EAAmBppD,EAAQ,kBAAoB,GACrD,OAAOkpD,GAAkBlb,EAAO/iB,EAAUgf,EAAMkf,EAAkBC,CAAgB,CACrF,EACR,QAASpb,EAAO3vB,EAAGre,EAASmpD,EAAkB,CACnC,MAAMl+B,EAAWmtB,GAAoB/5B,EAAG2vB,CAAK,EACvC/D,EAAOjqC,EAAQ,MAAQ,KACvBopD,EAAmBppD,EAAQ,kBAAoB,GACrD,OAAO6pD,GAAgB7b,EAAO/iB,EAAUgf,EAAMjqC,EAAQ,UAAWmpD,EAAkBC,CAAgB,CACtG,EACR,EAAGpb,EAAO3vB,EAAGre,EAASmpD,EAAkB,CAC7B,MAAMl+B,EAAWmtB,GAAoB/5B,EAAG2vB,CAAK,EAC7C,OAAO8b,GAAa9b,EAAO/iB,EAAU,IAAKjrB,EAAQ,UAAWmpD,CAAgB,CAChF,EACR,EAAGnb,EAAO3vB,EAAGre,EAASmpD,EAAkB,CAC7B,MAAMl+B,EAAWmtB,GAAoB/5B,EAAG2vB,CAAK,EAC7C,OAAO8b,GAAa9b,EAAO/iB,EAAU,IAAKjrB,EAAQ,UAAWmpD,CAAgB,CAChF,CACJ,CACL,EAEA,MAAMe,GAAmB,CACrB,OACA,MACA,QACA,QACJ,EACA,SAASC,GAAiBjkB,EAAOjb,EAAU,CACvC,OAAOib,EAAM,OAAQv1C,GAAIA,EAAE,MAAQs6B,CAAQ,CAC/C,CACA,SAASm/B,GAA4BlkB,EAAO+D,EAAM,CAC9C,OAAO/D,EAAM,OAAQv1C,GAAIu5D,GAAiB,QAAQv5D,EAAE,GAAG,IAAM,IAAMA,EAAE,IAAI,OAASs5C,CAAI,CAC1F,CACA,SAASogB,GAAankB,EAAOlD,EAAS,CAClC,OAAOkD,EAAM,KAAK,CAACv2C,EAAGC,IAAI,CACtB,MAAMyzC,EAAKL,EAAUpzC,EAAID,EACnB2zC,EAAKN,EAAUrzC,EAAIC,EACzB,OAAOyzC,EAAG,SAAWC,EAAG,OAASD,EAAG,MAAQC,EAAG,MAAQD,EAAG,OAASC,EAAG,MAC9E,CAAK,CACL,CACA,SAASgnB,GAAUC,EAAO,CACtB,MAAMC,EAAc,CAAA,EACpB,IAAIx+D,EAAGo3C,EAAM+U,EAAKN,EAAK3qB,EAAOu9B,EAC9B,IAAIz+D,EAAI,EAAGo3C,GAAQmnB,GAAS,IAAI,OAAQv+D,EAAIo3C,EAAM,EAAEp3C,EAChDmsD,EAAMoS,EAAMv+D,CAAC,EACZ,CAAE,SAAU6rD,EAAM,QAAS,CAAE,MAAA3qB,EAAQ,YAAAu9B,EAAa,EAAO,EAAGtS,EAC7DqS,EAAY,KAAK,CACb,MAAOx+D,EACP,IAAAmsD,EACA,IAAAN,EACA,WAAYM,EAAI,aAAc,EAC9B,OAAQA,EAAI,OACZ,MAAOjrB,GAAS2qB,EAAM3qB,EACtB,YAAAu9B,CACZ,CAAS,EAEL,OAAOD,CACX,CACA,SAASE,GAAYC,EAAS,CAC1B,MAAMrK,EAAS,CAAA,EACf,UAAW3pD,KAAQg0D,EAAQ,CACvB,KAAM,CAAE,MAAAz9B,EAAQ,IAAA2qB,EAAM,YAAA4S,CAAW,EAAM9zD,EACvC,GAAI,CAACu2B,GAAS,CAACg9B,GAAiB,SAASrS,CAAG,EACxC,SAEJ,MAAMnE,EAAS4M,EAAOpzB,CAAK,IAAMozB,EAAOpzB,CAAK,EAAI,CAC7C,MAAO,EACP,OAAQ,EACR,OAAQ,EACR,KAAM,CAClB,GACQwmB,EAAO,QACPA,EAAO,QAAU+W,CACpB,CACD,OAAOnK,CACX,CACC,SAASsK,GAAcD,EAASn7B,EAAQ,CACrC,MAAM8wB,EAASoK,GAAYC,CAAO,EAC5B,CAAE,aAAAE,EAAe,cAAAC,CAAgB,EAAGt7B,EAC1C,IAAIxjC,EAAGo3C,EAAM2nB,EACb,IAAI/+D,EAAI,EAAGo3C,EAAOunB,EAAQ,OAAQ3+D,EAAIo3C,EAAM,EAAEp3C,EAAE,CAC5C++D,EAASJ,EAAQ3+D,CAAC,EAClB,KAAM,CAAE,SAAAg/D,CAAQ,EAAMD,EAAO,IACvB79B,EAAQozB,EAAOyK,EAAO,KAAK,EAC3BjN,EAAS5wB,GAAS69B,EAAO,YAAc79B,EAAM,OAC/C69B,EAAO,YACPA,EAAO,MAAQjN,EAASA,EAAS+M,EAAeG,GAAYx7B,EAAO,eACnEu7B,EAAO,OAASD,IAEhBC,EAAO,MAAQF,EACfE,EAAO,OAASjN,EAASA,EAASgN,EAAgBE,GAAYx7B,EAAO,gBAE5E,CACD,OAAO8wB,CACX,CACA,SAAS2K,GAAiBV,EAAO,CAC7B,MAAMC,EAAcF,GAAUC,CAAK,EAC7BS,EAAWX,GAAaG,EAAY,OAAQ7zD,GAAOA,EAAK,IAAI,QAAQ,EAAG,EAAI,EAC3Eq5C,EAAOqa,GAAaF,GAAiBK,EAAa,MAAM,EAAG,EAAI,EAC/Dva,EAAQoa,GAAaF,GAAiBK,EAAa,OAAO,CAAC,EAC3Dta,EAAMma,GAAaF,GAAiBK,EAAa,KAAK,EAAG,EAAI,EAC7Dra,EAASka,GAAaF,GAAiBK,EAAa,QAAQ,CAAC,EAC7DU,EAAmBd,GAA4BI,EAAa,GAAG,EAC/DW,EAAiBf,GAA4BI,EAAa,GAAG,EACnE,MAAO,CACH,SAAAQ,EACA,WAAYhb,EAAK,OAAOE,CAAG,EAC3B,eAAgBD,EAAM,OAAOkb,CAAc,EAAE,OAAOhb,CAAM,EAAE,OAAO+a,CAAgB,EACnF,UAAWf,GAAiBK,EAAa,WAAW,EACpD,SAAUxa,EAAK,OAAOC,CAAK,EAAE,OAAOkb,CAAc,EAClD,WAAYjb,EAAI,OAAOC,CAAM,EAAE,OAAO+a,CAAgB,CAC9D,CACA,CACA,SAASE,GAAeC,EAAYC,EAAW37D,EAAGC,EAAG,CACjD,OAAO,KAAK,IAAIy7D,EAAW17D,CAAC,EAAG27D,EAAU37D,CAAC,CAAC,EAAI,KAAK,IAAI07D,EAAWz7D,CAAC,EAAG07D,EAAU17D,CAAC,CAAC,CACvF,CACA,SAAS27D,GAAiBF,EAAYG,EAAY,CAC9CH,EAAW,IAAM,KAAK,IAAIA,EAAW,IAAKG,EAAW,GAAG,EACxDH,EAAW,KAAO,KAAK,IAAIA,EAAW,KAAMG,EAAW,IAAI,EAC3DH,EAAW,OAAS,KAAK,IAAIA,EAAW,OAAQG,EAAW,MAAM,EACjEH,EAAW,MAAQ,KAAK,IAAIA,EAAW,MAAOG,EAAW,KAAK,CAClE,CACA,SAASC,GAAWH,EAAW97B,EAAQu7B,EAAQzK,EAAQ,CACnD,KAAM,CAAE,IAAAzI,EAAM,IAAAM,CAAM,EAAG4S,EACjBM,EAAaC,EAAU,WAC7B,GAAI,CAAC3+D,GAASkrD,CAAG,EAAG,CACZkT,EAAO,OACPO,EAAUzT,CAAG,GAAKkT,EAAO,MAE7B,MAAM79B,EAAQozB,EAAOyK,EAAO,KAAK,GAAK,CAClC,KAAM,EACN,MAAO,CACnB,EACQ79B,EAAM,KAAO,KAAK,IAAIA,EAAM,KAAM69B,EAAO,WAAa5S,EAAI,OAASA,EAAI,KAAK,EAC5E4S,EAAO,KAAO79B,EAAM,KAAOA,EAAM,MACjCo+B,EAAUzT,CAAG,GAAKkT,EAAO,IAC5B,CACG5S,EAAI,YACJoT,GAAiBF,EAAYlT,EAAI,WAAY,CAAA,EAEjD,MAAMuT,EAAW,KAAK,IAAI,EAAGl8B,EAAO,WAAa47B,GAAeC,EAAYC,EAAW,OAAQ,OAAO,CAAC,EACjGK,EAAY,KAAK,IAAI,EAAGn8B,EAAO,YAAc47B,GAAeC,EAAYC,EAAW,MAAO,QAAQ,CAAC,EACnGM,EAAeF,IAAaJ,EAAU,EACtCO,EAAgBF,IAAcL,EAAU,EAC9C,OAAAA,EAAU,EAAII,EACdJ,EAAU,EAAIK,EACPZ,EAAO,WAAa,CACvB,KAAMa,EACN,MAAOC,CACf,EAAQ,CACA,KAAMA,EACN,MAAOD,CACf,CACA,CACA,SAASE,GAAiBR,EAAW,CACjC,MAAMD,EAAaC,EAAU,WAC7B,SAASS,EAAUlU,EAAK,CACpB,MAAM/F,EAAS,KAAK,IAAIuZ,EAAWxT,CAAG,EAAIyT,EAAUzT,CAAG,EAAG,CAAC,EAC3D,OAAAyT,EAAUzT,CAAG,GAAK/F,EACXA,CACV,CACDwZ,EAAU,GAAKS,EAAU,KAAK,EAC9BT,EAAU,GAAKS,EAAU,MAAM,EAC/BA,EAAU,OAAO,EACjBA,EAAU,QAAQ,CACtB,CACA,SAASC,GAAWrF,EAAY2E,EAAW,CACvC,MAAMD,EAAaC,EAAU,WAC7B,SAASW,EAAmBxU,EAAW,CACnC,MAAMrI,EAAS,CACX,KAAM,EACN,IAAK,EACL,MAAO,EACP,OAAQ,CACpB,EACQ,OAAAqI,EAAU,QAASI,GAAM,CACrBzI,EAAOyI,CAAG,EAAI,KAAK,IAAIyT,EAAUzT,CAAG,EAAGwT,EAAWxT,CAAG,CAAC,CAClE,CAAS,EACMzI,CACV,CACD,OAAoB6c,EAAbtF,EAAgC,CACnC,OACA,OACH,EAAuB,CACpB,MACA,QACR,CAHK,CAIL,CACA,SAASuF,GAAS3B,EAAOe,EAAW97B,EAAQ8wB,EAAQ,CAChD,MAAM6L,EAAa,CAAA,EACnB,IAAIngE,EAAGo3C,EAAM2nB,EAAQ5S,EAAKiU,EAAO3hB,EACjC,IAAIz+C,EAAI,EAAGo3C,EAAOmnB,EAAM,OAAQ6B,EAAQ,EAAGpgE,EAAIo3C,EAAM,EAAEp3C,EAAE,CACrD++D,EAASR,EAAMv+D,CAAC,EAChBmsD,EAAM4S,EAAO,IACb5S,EAAI,OAAO4S,EAAO,OAASO,EAAU,EAAGP,EAAO,QAAUO,EAAU,EAAGU,GAAWjB,EAAO,WAAYO,CAAS,CAAC,EAC9G,KAAM,CAAE,KAAAe,EAAO,MAAAC,GAAWb,GAAWH,EAAW97B,EAAQu7B,EAAQzK,CAAM,EACtE8L,GAASC,GAAQF,EAAW,OAC5B1hB,EAAUA,GAAW6hB,EAChBnU,EAAI,UACLgU,EAAW,KAAKpB,CAAM,CAE7B,CACD,OAAOqB,GAASF,GAASC,EAAYb,EAAW97B,EAAQ8wB,CAAM,GAAK7V,CACvE,CACA,SAAS8hB,GAAWpU,EAAKnI,EAAME,EAAKhC,EAAOuK,EAAQ,CAC/CN,EAAI,IAAMjI,EACViI,EAAI,KAAOnI,EACXmI,EAAI,MAAQnI,EAAO9B,EACnBiK,EAAI,OAASjI,EAAMuI,EACnBN,EAAI,MAAQjK,EACZiK,EAAI,OAASM,CACjB,CACA,SAAS+T,GAAWjC,EAAOe,EAAW97B,EAAQ8wB,EAAQ,CAClD,MAAMmM,EAAcj9B,EAAO,QAC3B,GAAI,CAAE,EAAA6V,EAAI,EAAAC,CAAI,EAAGgmB,EACjB,UAAWP,KAAUR,EAAM,CACvB,MAAMpS,EAAM4S,EAAO,IACb79B,EAAQozB,EAAOyK,EAAO,KAAK,GAAK,CAClC,MAAO,EACP,OAAQ,EACR,OAAQ,CACpB,EACc1oB,EAAS0oB,EAAO,YAAc79B,EAAM,QAAU,EACpD,GAAI69B,EAAO,WAAY,CACnB,MAAM7c,EAAQod,EAAU,EAAIjpB,EACtBoW,EAASvrB,EAAM,MAAQirB,EAAI,OAC7B5T,GAAQrX,EAAM,KAAK,IACnBoY,EAAIpY,EAAM,OAEVirB,EAAI,SACJoU,GAAWpU,EAAKsU,EAAY,KAAMnnB,EAAG9V,EAAO,WAAai9B,EAAY,MAAQA,EAAY,KAAMhU,CAAM,EAErG8T,GAAWpU,EAAKmT,EAAU,KAAOp+B,EAAM,OAAQoY,EAAG4I,EAAOuK,CAAM,EAEnEvrB,EAAM,MAAQoY,EACdpY,EAAM,QAAUghB,EAChB5I,EAAI6S,EAAI,MACpB,KAAe,CACH,MAAMM,EAAS6S,EAAU,EAAIjpB,EACvB6L,EAAQhhB,EAAM,MAAQirB,EAAI,MAC5B5T,GAAQrX,EAAM,KAAK,IACnBmY,EAAInY,EAAM,OAEVirB,EAAI,SACJoU,GAAWpU,EAAK9S,EAAGonB,EAAY,IAAKve,EAAO1e,EAAO,YAAci9B,EAAY,OAASA,EAAY,GAAG,EAEpGF,GAAWpU,EAAK9S,EAAGimB,EAAU,IAAMp+B,EAAM,OAAQghB,EAAOuK,CAAM,EAElEvrB,EAAM,MAAQmY,EACdnY,EAAM,QAAUurB,EAChBpT,EAAI8S,EAAI,KACX,CACJ,CACDmT,EAAU,EAAIjmB,EACdimB,EAAU,EAAIhmB,CAClB,CACA,IAAIqlB,GAAU,CACb,OAAQ3c,EAAOp/C,EAAM,CACTo/C,EAAM,QACPA,EAAM,MAAQ,IAElBp/C,EAAK,SAAWA,EAAK,UAAY,GACjCA,EAAK,SAAWA,EAAK,UAAY,MACjCA,EAAK,OAASA,EAAK,QAAU,EAC7BA,EAAK,QAAUA,EAAK,SAAW,UAAW,CACtC,MAAO,CACH,CACI,EAAG,EACH,KAAM08D,EAAW,CACb18D,EAAK,KAAK08D,CAAS,CACtB,CACJ,CACjB,CACA,EACQtd,EAAM,MAAM,KAAKp/C,CAAI,CACxB,EACJ,UAAWo/C,EAAO0e,EAAY,CACvB,MAAMzkD,EAAQ+lC,EAAM,MAAQA,EAAM,MAAM,QAAQ0e,CAAU,EAAI,GAC1DzkD,IAAU,IACV+lC,EAAM,MAAM,OAAO/lC,EAAO,CAAC,CAElC,EACJ,UAAW+lC,EAAOp/C,EAAMoR,EAAS,CAC1BpR,EAAK,SAAWoR,EAAQ,SACxBpR,EAAK,SAAWoR,EAAQ,SACxBpR,EAAK,OAASoR,EAAQ,MACzB,EACJ,OAAQguC,EAAOE,EAAOuK,EAAQkU,EAAY,CACnC,GAAI,CAAC3e,EACD,OAEJ,MAAM4e,EAAUvb,GAAUrD,EAAM,QAAQ,OAAO,OAAO,EAChD6e,EAAiB,KAAK,IAAI3e,EAAQ0e,EAAQ,MAAO,CAAC,EAClDE,EAAkB,KAAK,IAAIrU,EAASmU,EAAQ,OAAQ,CAAC,EACrDrC,EAAQU,GAAiBjd,EAAM,KAAK,EACpC+e,EAAgBxC,EAAM,SACtByC,EAAkBzC,EAAM,WAC9BznB,GAAKkL,EAAM,MAAQmK,GAAM,CACjB,OAAOA,EAAI,cAAiB,YAC5BA,EAAI,aAAY,CAEhC,CAAS,EACD,MAAM8U,EAA0BF,EAAc,OAAO,CAACj1B,EAAOnhC,IAAOA,EAAK,IAAI,SAAWA,EAAK,IAAI,QAAQ,UAAY,GAAQmhC,EAAQA,EAAQ,EAAG,CAAC,GAAK,EAChJtI,EAAS,OAAO,OAAO,CACzB,WAAY0e,EACZ,YAAauK,EACb,QAAAmU,EACA,eAAAC,EACA,gBAAAC,EACA,aAAcD,EAAiB,EAAII,EACnC,cAAeH,EAAkB,CAC7C,CAAS,EACKzB,EAAa,OAAO,OAAO,CAAE,EAAEuB,CAAO,EAC5CrB,GAAiBF,EAAYha,GAAUsb,CAAU,CAAC,EAClD,MAAMrB,EAAY,OAAO,OAAO,CAC5B,WAAAD,EACA,EAAGwB,EACH,EAAGC,EACH,EAAGF,EAAQ,KACX,EAAGA,EAAQ,GACd,EAAEA,CAAO,EACJtM,EAASsK,GAAcmC,EAAc,OAAOC,CAAe,EAAGx9B,CAAM,EAC1E08B,GAAS3B,EAAM,SAAUe,EAAW97B,EAAQ8wB,CAAM,EAClD4L,GAASa,EAAezB,EAAW97B,EAAQ8wB,CAAM,EAC7C4L,GAASc,EAAiB1B,EAAW97B,EAAQ8wB,CAAM,GACnD4L,GAASa,EAAezB,EAAW97B,EAAQ8wB,CAAM,EAErDwL,GAAiBR,CAAS,EAC1BkB,GAAWjC,EAAM,WAAYe,EAAW97B,EAAQ8wB,CAAM,EACtDgL,EAAU,GAAKA,EAAU,EACzBA,EAAU,GAAKA,EAAU,EACzBkB,GAAWjC,EAAM,eAAgBe,EAAW97B,EAAQ8wB,CAAM,EAC1DtS,EAAM,UAAY,CACd,KAAMsd,EAAU,KAChB,IAAKA,EAAU,IACf,MAAOA,EAAU,KAAOA,EAAU,EAClC,OAAQA,EAAU,IAAMA,EAAU,EAClC,OAAQA,EAAU,EAClB,MAAOA,EAAU,CAC7B,EACQxoB,GAAKynB,EAAM,UAAYQ,GAAS,CAC5B,MAAM5S,EAAM4S,EAAO,IACnB,OAAO,OAAO5S,EAAKnK,EAAM,SAAS,EAClCmK,EAAI,OAAOmT,EAAU,EAAGA,EAAU,EAAG,CACjC,KAAM,EACN,IAAK,EACL,MAAO,EACP,OAAQ,CACxB,CAAa,CACb,CAAS,CACJ,CACL,EAEA,MAAM4B,EAAa,CAClB,eAAe5e,EAAQ8K,EAAa,CAAE,CACtC,eAAelsC,EAAS,CACjB,MAAO,EACV,CACJ,iBAAiB8gC,EAAOn6C,EAAM4jC,EAAU,CAAE,CAC1C,oBAAoBuW,EAAOn6C,EAAM4jC,EAAU,CAAE,CAC7C,qBAAsB,CACf,MAAO,EACV,CACJ,eAAe8f,EAASrJ,EAAOuK,EAAQW,EAAa,CAC7C,OAAAlL,EAAQ,KAAK,IAAI,EAAGA,GAASqJ,EAAQ,KAAK,EAC1CkB,EAASA,GAAUlB,EAAQ,OACpB,CACH,MAAArJ,EACA,OAAQ,KAAK,IAAI,EAAGkL,EAAc,KAAK,MAAMlL,EAAQkL,CAAW,EAAIX,CAAM,CACtF,CACK,CACJ,WAAWnK,EAAQ,CACZ,MAAO,EACV,CACJ,aAAa3gB,EAAQ,CACjB,CACL,CAEA,MAAMw/B,WAAsBD,EAAa,CACrC,eAAet+D,EAAM,CACjB,OAAOA,GAAQA,EAAK,YAAcA,EAAK,WAAW,IAAI,GAAK,IAC9D,CACD,aAAa++B,EAAQ,CACjBA,EAAO,QAAQ,UAAY,EAC9B,CACL,CAEA,MAAMy/B,GAAc,WACbC,GAAc,CACjB,WAAY,YACZ,UAAW,YACX,SAAU,UACV,aAAc,aACd,YAAa,YACb,YAAa,YACb,UAAW,UACX,aAAc,WACd,WAAY,UAChB,EACMC,GAAiBxgE,GAAQA,IAAU,MAAQA,IAAU,GAC1D,SAASygE,GAAWjf,EAAQ8K,EAAa,CACtC,MAAMh9B,EAAQkyB,EAAO,MACfkf,EAAelf,EAAO,aAAa,QAAQ,EAC3Cmf,EAAcnf,EAAO,aAAa,OAAO,EAc/C,GAbAA,EAAO8e,EAAW,EAAI,CAClB,QAAS,CACL,OAAQI,EACR,MAAOC,EACP,MAAO,CACH,QAASrxC,EAAM,QACf,OAAQA,EAAM,OACd,MAAOA,EAAM,KAChB,CACJ,CACT,EACIA,EAAM,QAAUA,EAAM,SAAW,QACjCA,EAAM,UAAYA,EAAM,WAAa,aACjCkxC,GAAcG,CAAW,EAAG,CAC5B,MAAMC,EAAe3T,GAAazL,EAAQ,OAAO,EAC7Cof,IAAiB,SACjBpf,EAAO,MAAQof,EAEtB,CACD,GAAIJ,GAAcE,CAAY,EAC1B,GAAIlf,EAAO,MAAM,SAAW,GACxBA,EAAO,OAASA,EAAO,OAAS8K,GAAe,OAC5C,CACH,MAAMuU,EAAgB5T,GAAazL,EAAQ,QAAQ,EAC/Cqf,IAAkB,SAClBrf,EAAO,OAASqf,EAEvB,CAEL,OAAOrf,CACX,CACA,MAAMsf,GAAuB/T,GAA+B,CACxD,QAAS,EACb,EAAI,GACJ,SAASgU,GAAYruC,EAAM3rB,EAAM4jC,EAAU,CACnCjY,GACAA,EAAK,iBAAiB3rB,EAAM4jC,EAAUm2B,EAAoB,CAElE,CACA,SAASE,GAAe9f,EAAOn6C,EAAM4jC,EAAU,CACvCuW,GAASA,EAAM,QACfA,EAAM,OAAO,oBAAoBn6C,EAAM4jC,EAAUm2B,EAAoB,CAE7E,CACA,SAASG,GAAgBnvD,EAAOovC,EAAO,CACnC,MAAMn6C,EAAOw5D,GAAYzuD,EAAM,IAAI,GAAKA,EAAM,KACxC,CAAE,EAAAymC,EAAI,EAAAC,CAAC,EAAM8S,GAAoBx5C,EAAOovC,CAAK,EACnD,MAAO,CACH,KAAAn6C,EACA,MAAAm6C,EACA,OAAQpvC,EACR,EAAGymC,IAAM,OAAYA,EAAI,KACzB,EAAGC,IAAM,OAAYA,EAAI,IACjC,CACA,CACA,SAAS0oB,GAAiBC,EAAU3f,EAAQ,CACxC,UAAW9uB,KAAQyuC,EACf,GAAIzuC,IAAS8uB,GAAU9uB,EAAK,SAAS8uB,CAAM,EACvC,MAAO,EAGnB,CACA,SAAS4f,GAAqBlgB,EAAOn6C,EAAM4jC,EAAU,CACjD,MAAM6W,EAASN,EAAM,OACfmgB,EAAW,IAAI,iBAAkB39D,GAAU,CAC7C,IAAIoB,EAAU,GACd,UAAWszD,KAAS10D,EAChBoB,EAAUA,GAAWo8D,GAAiB9I,EAAM,WAAY5W,CAAM,EAC9D18C,EAAUA,GAAW,CAACo8D,GAAiB9I,EAAM,aAAc5W,CAAM,EAEjE18C,GACA6lC,GAEZ,CAAK,EACD,OAAA02B,EAAS,QAAQ,SAAU,CACvB,UAAW,GACX,QAAS,EACjB,CAAK,EACMA,CACX,CACA,SAASC,GAAqBpgB,EAAOn6C,EAAM4jC,EAAU,CACjD,MAAM6W,EAASN,EAAM,OACfmgB,EAAW,IAAI,iBAAkB39D,GAAU,CAC7C,IAAIoB,EAAU,GACd,UAAWszD,KAAS10D,EAChBoB,EAAUA,GAAWo8D,GAAiB9I,EAAM,aAAc5W,CAAM,EAChE18C,EAAUA,GAAW,CAACo8D,GAAiB9I,EAAM,WAAY5W,CAAM,EAE/D18C,GACA6lC,GAEZ,CAAK,EACD,OAAA02B,EAAS,QAAQ,SAAU,CACvB,UAAW,GACX,QAAS,EACjB,CAAK,EACMA,CACX,CACA,MAAME,GAAqB,IAAI,IAC/B,IAAIC,GAAsB,EAC1B,SAASC,IAAiB,CACtB,MAAMC,EAAM,OAAO,iBACfA,IAAQF,KAGZA,GAAsBE,EACtBH,GAAmB,QAAQ,CAACI,EAAQzgB,IAAQ,CACpCA,EAAM,0BAA4BwgB,GAClCC,GAEZ,CAAK,EACL,CACA,SAASC,GAA8B1gB,EAAOygB,EAAQ,CAC7CJ,GAAmB,MACpB,OAAO,iBAAiB,SAAUE,EAAc,EAEpDF,GAAmB,IAAIrgB,EAAOygB,CAAM,CACxC,CACA,SAASE,GAAgC3gB,EAAO,CAC5CqgB,GAAmB,OAAOrgB,CAAK,EAC1BqgB,GAAmB,MACpB,OAAO,oBAAoB,SAAUE,EAAc,CAE3D,CACA,SAASK,GAAqB5gB,EAAOn6C,EAAM4jC,EAAU,CACjD,MAAM6W,EAASN,EAAM,OACfh7B,EAAYs7B,GAAU0I,GAAe1I,CAAM,EACjD,GAAI,CAACt7B,EACD,OAEJ,MAAMy7C,EAASzlB,GAAU,CAACkF,EAAOuK,IAAS,CACtC,MAAMplB,EAAIrgB,EAAU,YACpBykB,EAASyW,EAAOuK,CAAM,EAClBplB,EAAIrgB,EAAU,aACdykB,GAEP,EAAE,MAAM,EACH02B,EAAW,IAAI,eAAgB39D,GAAU,CAC3C,MAAM00D,EAAQ10D,EAAQ,CAAC,EACjB09C,EAAQgX,EAAM,YAAY,MAC1BzM,EAASyM,EAAM,YAAY,OAC7BhX,IAAU,GAAKuK,IAAW,GAG9BgW,EAAOvgB,EAAOuK,CAAM,CAC5B,CAAK,EACD,OAAA0V,EAAS,QAAQn7C,CAAS,EAC1B07C,GAA8B1gB,EAAOygB,CAAM,EACpCN,CACX,CACA,SAASU,GAAgB7gB,EAAOn6C,EAAMs6D,EAAU,CACxCA,GACAA,EAAS,WAAU,EAEnBt6D,IAAS,UACT86D,GAAgC3gB,CAAK,CAE7C,CACA,SAAS8gB,GAAqB9gB,EAAOn6C,EAAM4jC,EAAU,CACjD,MAAM6W,EAASN,EAAM,OACfv0C,EAAQuvC,GAAWpqC,GAAQ,CACzBovC,EAAM,MAAQ,MACdvW,EAASs2B,GAAgBnvD,EAAOovC,CAAK,CAAC,CAE7C,EAAEA,CAAK,EACR,OAAA6f,GAAYvf,EAAQz6C,EAAM4F,CAAK,EACxBA,CACX,CACC,MAAMs1D,WAAoB7B,EAAa,CACvC,eAAe5e,EAAQ8K,EAAa,CAC7B,MAAMlsC,EAAUohC,GAAUA,EAAO,YAAcA,EAAO,WAAW,IAAI,EACrE,OAAIphC,GAAWA,EAAQ,SAAWohC,GAC9Bif,GAAWjf,EAAQ8K,CAAW,EACvBlsC,GAEJ,IACV,CACJ,eAAeA,EAAS,CACjB,MAAMohC,EAASphC,EAAQ,OACvB,GAAI,CAACohC,EAAO8e,EAAW,EACnB,MAAO,GAEX,MAAM4B,EAAU1gB,EAAO8e,EAAW,EAAE,QACpC,CACI,SACA,OACZ,EAAU,QAASx9C,GAAO,CACd,MAAM9iB,EAAQkiE,EAAQp/C,CAAI,EACtB4yB,GAAc11C,CAAK,EACnBwhD,EAAO,gBAAgB1+B,CAAI,EAE3B0+B,EAAO,aAAa1+B,EAAM9iB,CAAK,CAE/C,CAAS,EACD,MAAMsvB,EAAQ4yC,EAAQ,OAAS,GAC/B,cAAO,KAAK5yC,CAAK,EAAE,QAAS1wB,GAAM,CAC9B4iD,EAAO,MAAM5iD,CAAG,EAAI0wB,EAAM1wB,CAAG,CACzC,CAAS,EACD4iD,EAAO,MAAQA,EAAO,MACtB,OAAOA,EAAO8e,EAAW,EAClB,EACV,CACJ,iBAAiBpf,EAAOn6C,EAAM4jC,EAAU,CACjC,KAAK,oBAAoBuW,EAAOn6C,CAAI,EACpC,MAAMo7D,EAAUjhB,EAAM,WAAaA,EAAM,SAAW,CAAA,GAM9C5uC,EALW,CACb,OAAQ8uD,GACR,OAAQE,GACR,OAAQQ,EACpB,EACiC/6D,CAAI,GAAKi7D,GAClCG,EAAQp7D,CAAI,EAAIuL,EAAQ4uC,EAAOn6C,EAAM4jC,CAAQ,CAChD,CACJ,oBAAoBuW,EAAOn6C,EAAM,CAC1B,MAAMo7D,EAAUjhB,EAAM,WAAaA,EAAM,SAAW,CAAA,GAC9Cv0C,EAAQw1D,EAAQp7D,CAAI,EAC1B,GAAI,CAAC4F,EACD,QAEa,CACb,OAAQo1D,GACR,OAAQA,GACR,OAAQA,EACpB,EACiCh7D,CAAI,GAAKi6D,IAC1B9f,EAAOn6C,EAAM4F,CAAK,EAC1Bw1D,EAAQp7D,CAAI,EAAI,MACnB,CACD,qBAAsB,CAClB,OAAO,OAAO,gBACjB,CACJ,eAAey6C,EAAQJ,EAAOuK,EAAQW,EAAa,CAC5C,OAAOH,GAAe3K,EAAQJ,EAAOuK,EAAQW,CAAW,CAC3D,CACJ,WAAW9K,EAAQ,CACZ,MAAMt7B,EAAYgkC,GAAe1I,CAAM,EACvC,MAAO,CAAC,EAAEt7B,GAAaA,EAAU,YACpC,CACL,CAEA,SAASk8C,GAAgB5gB,EAAQ,CAC7B,MAAI,CAACyI,GAAe,GAAM,OAAO,gBAAoB,KAAezI,aAAkB,gBAC3E6e,GAEJ4B,EACX,QAEA,IAAAI,IAAAv+D,GAAA,KAAc,CAAd,cAGIwzD,GAAA,UACAA,GAAA,UACAA,GAAA,cAAS,IACTA,GAAA,gBACAA,GAAA,oBACA,gBAAgB+E,EAAkB,CAC9B,KAAM,CAAE,EAAA9jB,EAAI,EAAAC,GAAO,KAAK,SAAS,CAC7B,IACA,GACH,EAAE6jB,CAAgB,EACnB,MAAO,CACH,EAAA9jB,EACA,EAAAC,CACZ,CACK,CACD,UAAW,CACP,OAAOnc,GAAS,KAAK,CAAC,GAAKA,GAAS,KAAK,CAAC,CAC7C,CACD,SAASrqB,EAAOswD,EAAO,CACnB,MAAMjS,EAAQ,KAAK,YACnB,GAAI,CAACiS,GAAS,CAACjS,EAEX,OAAO,KAEX,MAAMhuD,EAAM,CAAA,EACZ,OAAA2P,EAAM,QAAS8Q,GAAO,CAClBzgB,EAAIygB,CAAI,EAAIutC,EAAMvtC,CAAI,GAAKutC,EAAMvtC,CAAI,EAAE,OAAQ,EAAGutC,EAAMvtC,CAAI,EAAE,IAAM,KAAKA,CAAI,CACzF,CAAS,EACMzgB,CACV,CACL,EAhCIi1D,GADJxzD,GACW,WAAW,CAAA,GAClBwzD,GAFJxzD,GAEW,iBAFXA,IAmCA,SAASy+D,GAASnQ,EAAOvT,EAAO,CAC5B,MAAM2jB,EAAWpQ,EAAM,QAAQ,MACzBqQ,EAAqBC,GAAkBtQ,CAAK,EAC5CuQ,EAAa,KAAK,IAAIH,EAAS,eAAiBC,EAAoBA,CAAkB,EACtFG,EAAeJ,EAAS,MAAM,QAAUK,GAAgBhkB,CAAK,EAAI,GACjEikB,EAAkBF,EAAa,OAC/B96B,EAAQ86B,EAAa,CAAC,EACtBv+D,EAAOu+D,EAAaE,EAAkB,CAAC,EACvCC,EAAW,CAAA,EACjB,GAAID,EAAkBH,EAClB,OAAAK,GAAWnkB,EAAOkkB,EAAUH,EAAcE,EAAkBH,CAAU,EAC/DI,EAEX,MAAME,EAAUC,GAAiBN,EAAc/jB,EAAO8jB,CAAU,EAChE,GAAIG,EAAkB,EAAG,CACrB,IAAI5jE,EAAGo3C,EACP,MAAM6sB,EAAkBL,EAAkB,EAAI,KAAK,OAAOz+D,EAAOyjC,IAAUg7B,EAAkB,EAAE,EAAI,KAEnG,IADAM,GAAKvkB,EAAOkkB,EAAUE,EAASvtB,GAAcytB,CAAe,EAAI,EAAIr7B,EAAQq7B,EAAiBr7B,CAAK,EAC9F5oC,EAAI,EAAGo3C,EAAOwsB,EAAkB,EAAG5jE,EAAIo3C,EAAMp3C,IAC7CkkE,GAAKvkB,EAAOkkB,EAAUE,EAASL,EAAa1jE,CAAC,EAAG0jE,EAAa1jE,EAAI,CAAC,CAAC,EAEvE,OAAAkkE,GAAKvkB,EAAOkkB,EAAUE,EAAS5+D,EAAMqxC,GAAcytB,CAAe,EAAItkB,EAAM,OAASx6C,EAAO8+D,CAAe,EACpGJ,CACV,CACD,OAAAK,GAAKvkB,EAAOkkB,EAAUE,CAAO,EACtBF,CACX,CACA,SAASL,GAAkBtQ,EAAO,CAC9B,MAAMiR,EAASjR,EAAM,QAAQ,OACvBkR,EAAalR,EAAM,YACnBmR,EAAWnR,EAAM,QAAUkR,GAAcD,EAAS,EAAI,GACtDG,EAAWpR,EAAM,WAAakR,EACpC,OAAO,KAAK,MAAM,KAAK,IAAIC,EAAUC,CAAQ,CAAC,CAClD,CACC,SAASN,GAAiBN,EAAc/jB,EAAO8jB,EAAY,CACxD,MAAMc,EAAmBC,GAAed,CAAY,EAC9CK,EAAUpkB,EAAM,OAAS8jB,EAC/B,GAAI,CAACc,EACD,OAAO,KAAK,IAAIR,EAAS,CAAC,EAE9B,MAAMU,EAAU5qB,GAAW0qB,CAAgB,EAC3C,QAAQvkE,EAAI,EAAGo3C,EAAOqtB,EAAQ,OAAS,EAAGzkE,EAAIo3C,EAAMp3C,IAAI,CACpD,MAAM8xD,EAAS2S,EAAQzkE,CAAC,EACxB,GAAI8xD,EAASiS,EACT,OAAOjS,CAEd,CACD,OAAO,KAAK,IAAIiS,EAAS,CAAC,CAC9B,CACC,SAASJ,GAAgBhkB,EAAO,CAC7B,MAAM31C,EAAS,CAAA,EACf,IAAIhK,EAAGo3C,EACP,IAAIp3C,EAAI,EAAGo3C,EAAOuI,EAAM,OAAQ3/C,EAAIo3C,EAAMp3C,IAClC2/C,EAAM3/C,CAAC,EAAE,OACTgK,EAAO,KAAKhK,CAAC,EAGrB,OAAOgK,CACX,CACC,SAAS85D,GAAWnkB,EAAOkkB,EAAUH,EAAcK,EAAS,CACzD,IAAIjmB,EAAQ,EACR31B,EAAOu7C,EAAa,CAAC,EACrB1jE,EAEJ,IADA+jE,EAAU,KAAK,KAAKA,CAAO,EACvB/jE,EAAI,EAAGA,EAAI2/C,EAAM,OAAQ3/C,IACrBA,IAAMmoB,IACN07C,EAAS,KAAKlkB,EAAM3/C,CAAC,CAAC,EACtB89C,IACA31B,EAAOu7C,EAAa5lB,EAAQimB,CAAO,EAG/C,CACC,SAASG,GAAKvkB,EAAOkkB,EAAUE,EAASW,EAAYC,EAAU,CAC3D,MAAMnzD,EAAQmlC,GAAe+tB,EAAY,CAAC,EACpCjzD,EAAM,KAAK,IAAIklC,GAAeguB,EAAUhlB,EAAM,MAAM,EAAGA,EAAM,MAAM,EACzE,IAAI7B,EAAQ,EACR/c,EAAQ/gC,EAAGmoB,EAOf,IANA47C,EAAU,KAAK,KAAKA,CAAO,EACvBY,IACA5jC,EAAS4jC,EAAWD,EACpBX,EAAUhjC,EAAS,KAAK,MAAMA,EAASgjC,CAAO,GAElD57C,EAAO3W,EACD2W,EAAO,GACT21B,IACA31B,EAAO,KAAK,MAAM3W,EAAQssC,EAAQimB,CAAO,EAE7C,IAAI/jE,EAAI,KAAK,IAAIwR,EAAO,CAAC,EAAGxR,EAAIyR,EAAKzR,IAC7BA,IAAMmoB,IACN07C,EAAS,KAAKlkB,EAAM3/C,CAAC,CAAC,EACtB89C,IACA31B,EAAO,KAAK,MAAM3W,EAAQssC,EAAQimB,CAAO,EAGrD,CACC,SAASS,GAAe1kE,EAAK,CAC1B,MAAM4uB,EAAM5uB,EAAI,OAChB,IAAIE,EAAG0S,EACP,GAAIgc,EAAM,EACN,MAAO,GAEX,IAAIhc,EAAO5S,EAAI,CAAC,EAAGE,EAAI,EAAGA,EAAI0uB,EAAK,EAAE1uB,EACjC,GAAIF,EAAIE,CAAC,EAAIF,EAAIE,EAAI,CAAC,IAAM0S,EACxB,MAAO,GAGf,OAAOA,CACX,CAEA,MAAMkyD,GAAgBrnB,GAAQA,IAAU,OAAS,QAAUA,IAAU,QAAU,OAASA,EAClFsnB,GAAiB,CAAC3R,EAAO6G,EAAMoK,IAASpK,IAAS,OAASA,IAAS,OAAS7G,EAAM6G,CAAI,EAAIoK,EAASjR,EAAM6G,CAAI,EAAIoK,EACjHW,GAAgB,CAACC,EAAaC,IAAgB,KAAK,IAAIA,GAAiBD,EAAaA,CAAW,EACrG,SAASE,GAAOnlE,EAAKolE,EAAU,CAC5B,MAAMl7D,EAAS,CAAA,EACTm7D,EAAYrlE,EAAI,OAASolE,EACzBx2C,EAAM5uB,EAAI,OAChB,IAAIE,EAAI,EACR,KAAMA,EAAI0uB,EAAK1uB,GAAKmlE,EAChBn7D,EAAO,KAAKlK,EAAI,KAAK,MAAME,CAAC,CAAC,CAAC,EAElC,OAAOgK,CACX,CACC,SAASo7D,GAAoBlS,EAAOj3C,EAAOopD,EAAiB,CACzD,MAAMtkC,EAASmyB,EAAM,MAAM,OACrBoS,EAAa,KAAK,IAAIrpD,EAAO8kB,EAAS,CAAC,EACvCvvB,EAAQ0hD,EAAM,YACdzhD,EAAMyhD,EAAM,UACZ3Z,EAAU,KAChB,IAAIgsB,EAAYrS,EAAM,gBAAgBoS,CAAU,EAC5CnB,EACJ,GAAI,EAAAkB,IACItkC,IAAW,EACXojC,EAAS,KAAK,IAAIoB,EAAY/zD,EAAOC,EAAM8zD,CAAS,EAC7CtpD,IAAU,EACjBkoD,GAAUjR,EAAM,gBAAgB,CAAC,EAAIqS,GAAa,EAElDpB,GAAUoB,EAAYrS,EAAM,gBAAgBoS,EAAa,CAAC,GAAK,EAEnEC,GAAaD,EAAarpD,EAAQkoD,EAAS,CAACA,EACxCoB,EAAY/zD,EAAQ+nC,GAAWgsB,EAAY9zD,EAAM8nC,IAIzD,OAAOgsB,CACX,CACC,SAASC,GAAeC,EAAQ1kC,EAAQ,CACrC+V,GAAK2uB,EAASpkE,GAAQ,CAClB,MAAMigD,EAAKjgD,EAAM,GACXygD,EAAQR,EAAG,OAAS,EAC1B,IAAIthD,EACJ,GAAI8hD,EAAQ/gB,EAAQ,CAChB,IAAI/gC,EAAI,EAAGA,EAAI8hD,EAAO,EAAE9hD,EACpB,OAAOqB,EAAM,KAAKigD,EAAGthD,CAAC,CAAC,EAE3BshD,EAAG,OAAO,EAAGQ,CAAK,CACrB,CACT,CAAK,CACL,CACC,SAAS4jB,GAAkB1xD,EAAS,CACjC,OAAOA,EAAQ,UAAYA,EAAQ,WAAa,CACpD,CACC,SAAS2xD,GAAe3xD,EAASuxC,EAAU,CACxC,GAAI,CAACvxC,EAAQ,QACT,MAAO,GAEX,MAAMotC,EAAOkE,GAAOtxC,EAAQ,KAAMuxC,CAAQ,EACpCqb,EAAUvb,GAAUrxC,EAAQ,OAAO,EAEzC,OADc7T,GAAQ6T,EAAQ,IAAI,EAAIA,EAAQ,KAAK,OAAS,GAC7CotC,EAAK,WAAawf,EAAQ,MAC7C,CACA,SAASgF,GAAmBvuD,EAAQ67C,EAAO,CACvC,OAAOlN,GAAc3uC,EAAQ,CACzB,MAAA67C,EACA,KAAM,OACd,CAAK,CACL,CACA,SAAS2S,GAAkBxuD,EAAQ4E,EAAO6pD,EAAM,CAC5C,OAAO9f,GAAc3uC,EAAQ,CACzB,KAAAyuD,EACA,MAAA7pD,EACA,KAAM,MACd,CAAK,CACL,CACA,SAAS8pD,GAAWxoB,EAAOte,EAAU+X,EAAS,CACzC,IAAI7zC,EAAMm6C,GAAmBC,CAAK,EACnC,OAAIvG,GAAW/X,IAAa,SAAW,CAAC+X,GAAW/X,IAAa,WAC5D97B,EAAMyhE,GAAazhE,CAAG,GAEnBA,CACX,CACA,SAAS6iE,GAAU9S,EAAOiR,EAAQllC,EAAUse,EAAO,CAC/C,KAAM,CAAE,IAAA2G,EAAM,KAAAF,EAAO,OAAAG,EAAS,MAAAF,EAAQ,MAAAjC,CAAQ,EAAGkR,EAC3C,CAAE,UAAAoM,EAAY,OAAAlK,CAAS,EAAGpT,EAChC,IAAIc,EAAW,EACX6J,EAAUsZ,EAAQC,EACtB,MAAMzZ,EAAStI,EAASD,EAClBhC,EAAQ+B,EAAQD,EACtB,GAAIkP,EAAM,eAAgB,CAEtB,GADA+S,EAASzoB,GAAeD,EAAOyG,EAAMC,CAAK,EACtCtjD,GAASs+B,CAAQ,EAAG,CACpB,MAAMknC,EAAiB,OAAO,KAAKlnC,CAAQ,EAAE,CAAC,EACxCn+B,EAAQm+B,EAASknC,CAAc,EACrCD,EAAS9Q,EAAO+Q,CAAc,EAAE,iBAAiBrlE,CAAK,EAAI2rD,EAAS0X,CAC/E,MAAmBllC,IAAa,SACpBinC,GAAU5G,EAAU,OAASA,EAAU,KAAO,EAAI7S,EAAS0X,EAE3D+B,EAASrB,GAAe3R,EAAOj0B,EAAUklC,CAAM,EAEnDxX,EAAW1I,EAAQD,CAC3B,KAAW,CACH,GAAIrjD,GAASs+B,CAAQ,EAAG,CACpB,MAAMknC,EAAiB,OAAO,KAAKlnC,CAAQ,EAAE,CAAC,EACxCn+B,EAAQm+B,EAASknC,CAAc,EACrCF,EAAS7Q,EAAO+Q,CAAc,EAAE,iBAAiBrlE,CAAK,EAAIohD,EAAQiiB,CAC9E,MAAmBllC,IAAa,SACpBgnC,GAAU3G,EAAU,KAAOA,EAAU,OAAS,EAAIpd,EAAQiiB,EAE1D8B,EAASpB,GAAe3R,EAAOj0B,EAAUklC,CAAM,EAEnD+B,EAAS1oB,GAAeD,EAAO4G,EAAQD,CAAG,EAC1CpB,EAAW7jB,IAAa,OAAS,CAAC8Z,GAAUA,EAC/C,CACD,MAAO,CACH,OAAAktB,EACA,OAAAC,EACA,SAAAvZ,EACA,SAAA7J,CACR,CACA,CACA,MAAMsjB,WAAcC,EAAQ,CACxB,YAAYpU,EAAI,CACZ,QACC,KAAK,GAAKA,EAAI,GACd,KAAK,KAAOA,EAAI,KAChB,KAAK,QAAU,OACf,KAAK,IAAMA,EAAI,IACf,KAAK,MAAQA,EAAI,MACjB,KAAK,IAAM,OACX,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,MAAQ,OACb,KAAK,OAAS,OACf,KAAK,SAAW,CACZ,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,CACpB,EACS,KAAK,SAAW,OAChB,KAAK,UAAY,OACjB,KAAK,WAAa,OAClB,KAAK,cAAgB,OACrB,KAAK,YAAc,OACnB,KAAK,aAAe,OACpB,KAAK,KAAO,OACZ,KAAK,cAAgB,OACtB,KAAK,IAAM,OACX,KAAK,IAAM,OACX,KAAK,OAAS,OACb,KAAK,MAAQ,GACb,KAAK,eAAiB,KACtB,KAAK,YAAc,KACnB,KAAK,YAAc,KACpB,KAAK,QAAU,EACf,KAAK,WAAa,EAClB,KAAK,kBAAoB,GACxB,KAAK,YAAc,OACnB,KAAK,UAAY,OAClB,KAAK,eAAiB,GACtB,KAAK,SAAW,OAChB,KAAK,SAAW,OAChB,KAAK,cAAgB,OACrB,KAAK,cAAgB,OACrB,KAAK,aAAe,EACpB,KAAK,aAAe,EACpB,KAAK,OAAS,GACd,KAAK,kBAAoB,GACzB,KAAK,SAAW,MACnB,CACJ,KAAKj+C,EAAS,CACP,KAAK,QAAUA,EAAQ,WAAW,KAAK,WAAU,CAAE,EACnD,KAAK,KAAOA,EAAQ,KACpB,KAAK,SAAW,KAAK,MAAMA,EAAQ,GAAG,EACtC,KAAK,SAAW,KAAK,MAAMA,EAAQ,GAAG,EACtC,KAAK,cAAgB,KAAK,MAAMA,EAAQ,YAAY,EACpD,KAAK,cAAgB,KAAK,MAAMA,EAAQ,YAAY,CACvD,CACJ,MAAMpG,EAAKqO,EAAO,CACX,OAAOrO,CACV,CACJ,eAAgB,CACT,GAAI,CAAE,SAAA04D,EAAW,SAAAC,EAAW,cAAAC,EAAgB,cAAAC,CAAa,EAAM,KAC/D,OAAAH,EAAW5vB,GAAgB4vB,EAAU,OAAO,iBAAiB,EAC7DC,EAAW7vB,GAAgB6vB,EAAU,OAAO,iBAAiB,EAC7DC,EAAgB9vB,GAAgB8vB,EAAe,OAAO,iBAAiB,EACvEC,EAAgB/vB,GAAgB+vB,EAAe,OAAO,iBAAiB,EAChE,CACH,IAAK/vB,GAAgB4vB,EAAUE,CAAa,EAC5C,IAAK9vB,GAAgB6vB,EAAUE,CAAa,EAC5C,WAAYhwB,GAAe6vB,CAAQ,EACnC,WAAY7vB,GAAe8vB,CAAQ,CAC/C,CACK,CACJ,UAAU3Q,EAAU,CACb,GAAI,CAAE,IAAA/qB,EAAM,IAAAsJ,EAAM,WAAA+J,EAAa,WAAAC,GAAgB,KAAK,gBAChD1E,EACJ,GAAIyE,GAAcC,EACd,MAAO,CACH,IAAAtT,EACA,IAAAsJ,CAChB,EAEQ,MAAMuyB,EAAQ,KAAK,0BACnB,QAAQ1mE,EAAI,EAAGo3C,EAAOsvB,EAAM,OAAQ1mE,EAAIo3C,EAAM,EAAEp3C,EAC5Cy5C,EAAQitB,EAAM1mE,CAAC,EAAE,WAAW,UAAU,KAAM41D,CAAQ,EAC/C1X,IACDrT,EAAM,KAAK,IAAIA,EAAK4O,EAAM,GAAG,GAE5B0E,IACDhK,EAAM,KAAK,IAAIA,EAAKsF,EAAM,GAAG,GAGrC,OAAA5O,EAAMsT,GAActT,EAAMsJ,EAAMA,EAAMtJ,EACtCsJ,EAAM+J,GAAcrT,EAAMsJ,EAAMtJ,EAAMsJ,EAC/B,CACH,IAAKuC,GAAgB7L,EAAK6L,GAAgBvC,EAAKtJ,CAAG,CAAC,EACnD,IAAK6L,GAAgBvC,EAAKuC,GAAgB7L,EAAKsJ,CAAG,CAAC,CAC/D,CACK,CACJ,YAAa,CACN,MAAO,CACH,KAAM,KAAK,aAAe,EAC1B,IAAK,KAAK,YAAc,EACxB,MAAO,KAAK,cAAgB,EAC5B,OAAQ,KAAK,eAAiB,CAC1C,CACK,CACJ,UAAW,CACJ,OAAO,KAAK,KACf,CACJ,WAAY,CACL,MAAM/+B,EAAO,KAAK,MAAM,KACxB,OAAO,KAAK,QAAQ,SAAW,KAAK,aAAY,EAAKA,EAAK,QAAUA,EAAK,UAAYA,EAAK,QAAU,CAAA,CACvG,CACJ,cAAckqD,EAAY,KAAK,MAAM,UAAW,CAEzC,OADc,KAAK,cAAgB,KAAK,YAAc,KAAK,mBAAmBA,CAAS,EAE1F,CACD,cAAe,CACX,KAAK,OAAS,GACd,KAAK,kBAAoB,EAC5B,CACD,cAAe,CACXh0D,GAAS,KAAK,QAAQ,aAAc,CAChC,IACZ,CAAS,CACJ,CACJ,OAAOqhD,EAAUC,EAAWS,EAAS,CAC9B,KAAM,CAAE,YAAAxH,EAAc,MAAAD,EAAQ,MAAO0d,CAAW,EAAG,KAAK,QAClDqD,EAAarD,EAAS,WAC5B,KAAK,aAAY,EACjB,KAAK,SAAW3W,EAChB,KAAK,UAAYC,EACjB,KAAK,SAAWS,EAAU,OAAO,OAAO,CACpC,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,CACX,EAAEA,CAAO,EACV,KAAK,MAAQ,KACb,KAAK,YAAc,KACnB,KAAK,eAAiB,KACtB,KAAK,YAAc,KACnB,KAAK,oBAAmB,EACxB,KAAK,cAAa,EAClB,KAAK,mBAAkB,EACvB,KAAK,WAAa,KAAK,aAAc,EAAG,KAAK,MAAQA,EAAQ,KAAOA,EAAQ,MAAQ,KAAK,OAASA,EAAQ,IAAMA,EAAQ,OACnH,KAAK,oBACN,KAAK,iBAAgB,EACrB,KAAK,oBAAmB,EACxB,KAAK,gBAAe,EACpB,KAAK,OAAS3H,GAAU,KAAME,EAAOC,CAAW,EAChD,KAAK,kBAAoB,IAE7B,KAAK,iBAAgB,EACrB,KAAK,MAAQ,KAAK,WAAU,GAAM,CAAA,EAClC,KAAK,gBAAe,EACpB,MAAM+gB,EAAkBD,EAAa,KAAK,MAAM,OAChD,KAAK,sBAAsBC,EAAkB3B,GAAO,KAAK,MAAO0B,CAAU,EAAI,KAAK,KAAK,EACxF,KAAK,UAAS,EACd,KAAK,6BAA4B,EACjC,KAAK,uBAAsB,EAC3B,KAAK,4BAA2B,EAC5BrD,EAAS,UAAYA,EAAS,UAAYA,EAAS,SAAW,UAC9D,KAAK,MAAQD,GAAS,KAAM,KAAK,KAAK,EACtC,KAAK,YAAc,KACnB,KAAK,cAAa,GAElBuD,GACA,KAAK,sBAAsB,KAAK,KAAK,EAEzC,KAAK,UAAS,EACd,KAAK,IAAG,EACR,KAAK,SAAQ,EACb,KAAK,YAAW,CACnB,CACJ,WAAY,CACL,IAAIC,EAAgB,KAAK,QAAQ,QAC7BzL,EAAYC,EACZ,KAAK,gBACLD,EAAa,KAAK,KAClBC,EAAW,KAAK,QAEhBD,EAAa,KAAK,IAClBC,EAAW,KAAK,OAChBwL,EAAgB,CAACA,GAErB,KAAK,YAAczL,EACnB,KAAK,UAAYC,EACjB,KAAK,eAAiBwL,EACtB,KAAK,QAAUxL,EAAWD,EAC1B,KAAK,eAAiB,KAAK,QAAQ,aACtC,CACD,aAAc,CACV9vD,GAAS,KAAK,QAAQ,YAAa,CAC/B,IACZ,CAAS,CACJ,CACD,qBAAsB,CAClBA,GAAS,KAAK,QAAQ,oBAAqB,CACvC,IACZ,CAAS,CACJ,CACD,eAAgB,CACR,KAAK,gBACL,KAAK,MAAQ,KAAK,SAClB,KAAK,KAAO,EACZ,KAAK,MAAQ,KAAK,QAElB,KAAK,OAAS,KAAK,UACnB,KAAK,IAAM,EACX,KAAK,OAAS,KAAK,QAEvB,KAAK,YAAc,EACnB,KAAK,WAAa,EAClB,KAAK,aAAe,EACpB,KAAK,cAAgB,CACxB,CACD,oBAAqB,CACjBA,GAAS,KAAK,QAAQ,mBAAoB,CACtC,IACZ,CAAS,CACJ,CACD,WAAWhI,EAAM,CACb,KAAK,MAAM,cAAcA,EAAM,KAAK,WAAU,CAAE,EAChDgI,GAAS,KAAK,QAAQhI,CAAI,EAAG,CACzB,IACZ,CAAS,CACJ,CACD,kBAAmB,CACf,KAAK,WAAW,kBAAkB,CACrC,CACD,qBAAsB,CAAE,CACxB,iBAAkB,CACd,KAAK,WAAW,iBAAiB,CACpC,CACD,kBAAmB,CACf,KAAK,WAAW,kBAAkB,CACrC,CACJ,YAAa,CACN,MAAO,EACV,CACD,iBAAkB,CACd,KAAK,WAAW,iBAAiB,CACpC,CACD,6BAA8B,CAC1BgI,GAAS,KAAK,QAAQ,4BAA6B,CAC/C,IACZ,CAAS,CACJ,CACJ,mBAAmBq0C,EAAO,CACnB,MAAM2jB,EAAW,KAAK,QAAQ,MAC9B,IAAItjE,EAAGo3C,EAAM0uB,EACb,IAAI9lE,EAAI,EAAGo3C,EAAOuI,EAAM,OAAQ3/C,EAAIo3C,EAAMp3C,IACtC8lE,EAAOnmB,EAAM3/C,CAAC,EACd8lE,EAAK,MAAQx6D,GAASg4D,EAAS,SAAU,CACrCwC,EAAK,MACL9lE,EACA2/C,CACH,EAAE,IAAI,CAEd,CACD,4BAA6B,CACzBr0C,GAAS,KAAK,QAAQ,2BAA4B,CAC9C,IACZ,CAAS,CACJ,CACD,8BAA+B,CAC3BA,GAAS,KAAK,QAAQ,6BAA8B,CAChD,IACZ,CAAS,CACJ,CACD,wBAAyB,CACrB,MAAM0I,EAAU,KAAK,QACfsvD,EAAWtvD,EAAQ,MACnB8yD,EAAWhC,GAAc,KAAK,MAAM,OAAQ9wD,EAAQ,MAAM,aAAa,EACvE+yD,EAAczD,EAAS,aAAe,EACtC0D,EAAc1D,EAAS,YAC7B,IAAI2D,EAAgBF,EAChBG,EAAWta,EAAWua,EAC1B,GAAI,CAAC,KAAK,cAAgB,CAAC7D,EAAS,SAAWyD,GAAeC,GAAeF,GAAY,GAAK,CAAC,KAAK,aAAY,EAAI,CAChH,KAAK,cAAgBC,EACrB,MACH,CACD,MAAMK,EAAa,KAAK,iBAClBC,EAAgBD,EAAW,OAAO,MAClCE,EAAiBF,EAAW,QAAQ,OACpCza,EAAWhR,GAAY,KAAK,MAAM,MAAQ0rB,EAAe,EAAG,KAAK,QAAQ,EAC/EH,EAAYlzD,EAAQ,OAAS,KAAK,SAAW8yD,EAAWna,GAAYma,EAAW,GAC3EO,EAAgB,EAAIH,IACpBA,EAAYva,GAAYma,GAAY9yD,EAAQ,OAAS,GAAM,IAC3D44C,EAAY,KAAK,UAAY8Y,GAAkB1xD,EAAQ,IAAI,EAAIsvD,EAAS,QAAUqC,GAAe3xD,EAAQ,MAAO,KAAK,MAAM,QAAQ,IAAI,EACvImzD,EAAmB,KAAK,KAAKE,EAAgBA,EAAgBC,EAAiBA,CAAc,EAC5FL,EAAgB3sB,GAAU,KAAK,IAAI,KAAK,KAAKqB,IAAayrB,EAAW,QAAQ,OAAS,GAAKF,EAAW,GAAI,CAAC,CAAC,EAAG,KAAK,KAAKvrB,GAAYiR,EAAYua,EAAkB,GAAI,CAAC,CAAC,EAAI,KAAK,KAAKxrB,GAAY2rB,EAAiBH,EAAkB,GAAI,CAAC,CAAC,CAAC,CAAC,EAC9OF,EAAgB,KAAK,IAAIF,EAAa,KAAK,IAAIC,EAAaC,CAAa,CAAC,GAE9E,KAAK,cAAgBA,CACxB,CACD,6BAA8B,CAC1B37D,GAAS,KAAK,QAAQ,4BAA6B,CAC/C,IACZ,CAAS,CACJ,CACD,eAAgB,CAAE,CAClB,WAAY,CACRA,GAAS,KAAK,QAAQ,UAAW,CAC7B,IACZ,CAAS,CACJ,CACD,KAAM,CACF,MAAMi8D,EAAU,CACZ,MAAO,EACP,OAAQ,CACpB,EACc,CAAE,MAAAvlB,EAAQ,QAAS,CAAE,MAAOshB,EAAW,MAAOkE,EAAY,KAAMC,CAAW,CAAA,EAAM,KACjFC,EAAU,KAAK,aACfC,EAAe,KAAK,eAC1B,GAAID,EAAS,CACT,MAAME,EAAcjC,GAAe6B,EAAWxlB,EAAM,QAAQ,IAAI,EAQhE,GAPI2lB,GACAJ,EAAQ,MAAQ,KAAK,SACrBA,EAAQ,OAAS7B,GAAkB+B,CAAQ,EAAIG,IAE/CL,EAAQ,OAAS,KAAK,UACtBA,EAAQ,MAAQ7B,GAAkB+B,CAAQ,EAAIG,GAE9CtE,EAAS,SAAW,KAAK,MAAM,OAAQ,CACvC,KAAM,CAAE,MAAA16B,EAAQ,KAAAzjC,EAAO,OAAA0iE,EAAS,QAAAC,GAAa,KAAK,iBAC5CC,EAAczE,EAAS,QAAU,EACjC0E,EAAe5tB,GAAU,KAAK,aAAa,EAC3C6tB,EAAM,KAAK,IAAID,CAAY,EAC3BE,EAAM,KAAK,IAAIF,CAAY,EACjC,GAAIL,EAAc,CACd,MAAMQ,EAAc7E,EAAS,OAAS,EAAI4E,EAAML,EAAO,MAAQI,EAAMH,EAAQ,OAC7EP,EAAQ,OAAS,KAAK,IAAI,KAAK,UAAWA,EAAQ,OAASY,EAAcJ,CAAW,CACxG,KAAuB,CACH,MAAMK,EAAa9E,EAAS,OAAS,EAAI2E,EAAMJ,EAAO,MAAQK,EAAMJ,EAAQ,OAC5EP,EAAQ,MAAQ,KAAK,IAAI,KAAK,SAAUA,EAAQ,MAAQa,EAAaL,CAAW,CACnF,CACD,KAAK,kBAAkBn/B,EAAOzjC,EAAM+iE,EAAKD,CAAG,CAC/C,CACJ,CACD,KAAK,eAAc,EACfN,GACA,KAAK,MAAQ,KAAK,QAAU3lB,EAAM,MAAQ,KAAK,SAAS,KAAO,KAAK,SAAS,MAC7E,KAAK,OAASulB,EAAQ,SAEtB,KAAK,MAAQA,EAAQ,MACrB,KAAK,OAAS,KAAK,QAAUvlB,EAAM,OAAS,KAAK,SAAS,IAAM,KAAK,SAAS,OAErF,CACD,kBAAkBpZ,EAAOzjC,EAAM+iE,EAAKD,EAAK,CACrC,KAAM,CAAE,MAAO,CAAE,MAAA1qB,EAAQ,QAAAqjB,CAAU,EAAG,SAAA3hC,CAAW,EAAG,KAAK,QACnDopC,EAAY,KAAK,gBAAkB,EACnCC,EAAmBrpC,IAAa,OAAS,KAAK,OAAS,IAC7D,GAAI,KAAK,eAAgB,CACrB,MAAMspC,EAAa,KAAK,gBAAgB,CAAC,EAAI,KAAK,KAC5CC,EAAc,KAAK,MAAQ,KAAK,gBAAgB,KAAK,MAAM,OAAS,CAAC,EAC3E,IAAIC,EAAc,EACdC,EAAe,EACfL,EACIC,GACAG,EAAcR,EAAMr/B,EAAM,MAC1B8/B,EAAeR,EAAM/iE,EAAK,SAE1BsjE,EAAcP,EAAMt/B,EAAM,OAC1B8/B,EAAeT,EAAM9iE,EAAK,OAEvBo4C,IAAU,QACjBmrB,EAAevjE,EAAK,MACbo4C,IAAU,MACjBkrB,EAAc7/B,EAAM,MACb2U,IAAU,UACjBkrB,EAAc7/B,EAAM,MAAQ,EAC5B8/B,EAAevjE,EAAK,MAAQ,GAEhC,KAAK,YAAc,KAAK,KAAKsjE,EAAcF,EAAa3H,GAAW,KAAK,OAAS,KAAK,MAAQ2H,GAAa,CAAC,EAC5G,KAAK,aAAe,KAAK,KAAKG,EAAeF,EAAc5H,GAAW,KAAK,OAAS,KAAK,MAAQ4H,GAAc,CAAC,CAC5H,KAAe,CACH,IAAIG,EAAaxjE,EAAK,OAAS,EAC3ByjE,EAAgBhgC,EAAM,OAAS,EAC/B2U,IAAU,SACVorB,EAAa,EACbC,EAAgBhgC,EAAM,QACf2U,IAAU,QACjBorB,EAAaxjE,EAAK,OAClByjE,EAAgB,GAEpB,KAAK,WAAaD,EAAa/H,EAC/B,KAAK,cAAgBgI,EAAgBhI,CACxC,CACJ,CACJ,gBAAiB,CACN,KAAK,WACL,KAAK,SAAS,KAAO,KAAK,IAAI,KAAK,YAAa,KAAK,SAAS,IAAI,EAClE,KAAK,SAAS,IAAM,KAAK,IAAI,KAAK,WAAY,KAAK,SAAS,GAAG,EAC/D,KAAK,SAAS,MAAQ,KAAK,IAAI,KAAK,aAAc,KAAK,SAAS,KAAK,EACrE,KAAK,SAAS,OAAS,KAAK,IAAI,KAAK,cAAe,KAAK,SAAS,MAAM,EAE/E,CACD,UAAW,CACPt1D,GAAS,KAAK,QAAQ,SAAU,CAC5B,IACZ,CAAS,CACJ,CACJ,cAAe,CACR,KAAM,CAAE,KAAA2yC,EAAO,SAAAhf,GAAc,KAAK,QAClC,OAAOA,IAAa,OAASA,IAAa,UAAYgf,IAAS,GAClE,CACJ,YAAa,CACN,OAAO,KAAK,QAAQ,QACvB,CACJ,sBAAsB0B,EAAO,CACtB,KAAK,4BAA2B,EAChC,KAAK,mBAAmBA,CAAK,EAC7B,IAAI3/C,EAAGo3C,EACP,IAAIp3C,EAAI,EAAGo3C,EAAOuI,EAAM,OAAQ3/C,EAAIo3C,EAAMp3C,IAClCw2C,GAAcmJ,EAAM3/C,CAAC,EAAE,KAAK,IAC5B2/C,EAAM,OAAO3/C,EAAG,CAAC,EACjBo3C,IACAp3C,KAGR,KAAK,2BAA0B,CAClC,CACJ,gBAAiB,CACV,IAAIonE,EAAa,KAAK,YACtB,GAAI,CAACA,EAAY,CACb,MAAMT,EAAa,KAAK,QAAQ,MAAM,WACtC,IAAIhnB,EAAQ,KAAK,MACbgnB,EAAahnB,EAAM,SACnBA,EAAQslB,GAAOtlB,EAAOgnB,CAAU,GAEpC,KAAK,YAAcS,EAAa,KAAK,mBAAmBznB,EAAOA,EAAM,OAAQ,KAAK,QAAQ,MAAM,aAAa,CAChH,CACD,OAAOynB,CACV,CACJ,mBAAmBznB,EAAO5e,EAAQikC,EAAe,CAC1C,KAAM,CAAE,IAAA1wD,EAAM,kBAAmBmxD,CAAM,EAAM,KACvCoD,EAAS,CAAA,EACTC,EAAU,CAAA,EACV3D,EAAY,KAAK,MAAMpkC,EAAS+jC,GAAc/jC,EAAQikC,CAAa,CAAC,EAC1E,IAAI+D,EAAkB,EAClBC,EAAmB,EACnBhpE,EAAG4sB,EAAGg1B,EAAMqnB,EAAOC,EAAUC,EAAY9nE,EAAO+nE,EAAYlnB,EAAOuK,EAAQ4c,EAC/E,IAAIrpE,EAAI,EAAGA,EAAI+gC,EAAQ/gC,GAAKmlE,EAAU,CAUlC,GATA8D,EAAQtpB,EAAM3/C,CAAC,EAAE,MACjBkpE,EAAW,KAAK,wBAAwBlpE,CAAC,EACzCsU,EAAI,KAAO60D,EAAaD,EAAS,OACjC7nE,EAAQokE,EAAO0D,CAAU,EAAI1D,EAAO0D,CAAU,GAAK,CAC/C,KAAM,CAAE,EACR,GAAI,CAAE,CACtB,EACYC,EAAaF,EAAS,WACtBhnB,EAAQuK,EAAS,EACb,CAACjW,GAAcyyB,CAAK,GAAK,CAAC9oE,GAAQ8oE,CAAK,EACvC/mB,EAAQb,GAAa/sC,EAAKjT,EAAM,KAAMA,EAAM,GAAI6gD,EAAO+mB,CAAK,EAC5Dxc,EAAS2c,UACFjpE,GAAQ8oE,CAAK,EACpB,IAAIr8C,EAAI,EAAGg1B,EAAOqnB,EAAM,OAAQr8C,EAAIg1B,EAAM,EAAEh1B,EACxCy8C,EAAeJ,EAAMr8C,CAAC,EAClB,CAAC4pB,GAAc6yB,CAAW,GAAK,CAAClpE,GAAQkpE,CAAW,IACnDnnB,EAAQb,GAAa/sC,EAAKjT,EAAM,KAAMA,EAAM,GAAI6gD,EAAOmnB,CAAW,EAClE5c,GAAU2c,GAItBP,EAAO,KAAK3mB,CAAK,EACjB4mB,EAAQ,KAAKrc,CAAM,EACnBsc,EAAkB,KAAK,IAAI7mB,EAAO6mB,CAAe,EACjDC,EAAmB,KAAK,IAAIvc,EAAQuc,CAAgB,CACvD,CACDxD,GAAeC,EAAQ1kC,CAAM,EAC7B,MAAM8mC,EAASgB,EAAO,QAAQE,CAAe,EACvCjB,EAAUgB,EAAQ,QAAQE,CAAgB,EAC1CM,EAAWrwC,IAAO,CAChB,MAAO4vC,EAAO5vC,CAAG,GAAK,EACtB,OAAQ6vC,EAAQ7vC,CAAG,GAAK,CACxC,GACQ,MAAO,CACH,MAAOqwC,EAAQ,CAAC,EAChB,KAAMA,EAAQvoC,EAAS,CAAC,EACxB,OAAQuoC,EAAQzB,CAAM,EACtB,QAASyB,EAAQxB,CAAO,EACxB,OAAAe,EACA,QAAAC,CACZ,CACK,CACJ,iBAAiBhoE,EAAO,CACjB,OAAOA,CACV,CACJ,iBAAiBA,EAAOmb,EAAO,CACxB,MAAO,IACV,CACJ,iBAAiBgmC,EAAO,CAAE,CAC1B,gBAAgBhmC,EAAO,CAChB,MAAM0jC,EAAQ,KAAK,MACnB,OAAI1jC,EAAQ,GAAKA,EAAQ0jC,EAAM,OAAS,EAC7B,KAEJ,KAAK,iBAAiBA,EAAM1jC,CAAK,EAAE,KAAK,CAClD,CACJ,mBAAmBstD,EAAS,CACjB,KAAK,iBACLA,EAAU,EAAIA,GAElB,MAAMtnB,EAAQ,KAAK,YAAcsnB,EAAU,KAAK,QAChD,OAAO3tB,GAAY,KAAK,eAAiBmG,GAAY,KAAK,MAAOE,EAAO,CAAC,EAAIA,CAAK,CACrF,CACJ,mBAAmBA,EAAO,CACnB,MAAMsnB,GAAWtnB,EAAQ,KAAK,aAAe,KAAK,QAClD,OAAO,KAAK,eAAiB,EAAIsnB,EAAUA,CAC9C,CACJ,cAAe,CACR,OAAO,KAAK,iBAAiB,KAAK,aAAc,CAAA,CACnD,CACJ,cAAe,CACR,KAAM,CAAE,IAAA1+B,EAAM,IAAAsJ,CAAM,EAAG,KACvB,OAAOtJ,EAAM,GAAKsJ,EAAM,EAAIA,EAAMtJ,EAAM,GAAKsJ,EAAM,EAAItJ,EAAM,CAChE,CACJ,WAAW5uB,EAAO,CACX,MAAM0jC,EAAQ,KAAK,OAAS,GAC5B,GAAI1jC,GAAS,GAAKA,EAAQ0jC,EAAM,OAAQ,CACpC,MAAMmmB,EAAOnmB,EAAM1jC,CAAK,EACxB,OAAO6pD,EAAK,WAAaA,EAAK,SAAWD,GAAkB,KAAK,WAAY,EAAE5pD,EAAO6pD,CAAI,EAC5F,CACD,OAAO,KAAK,WAAa,KAAK,SAAWF,GAAmB,KAAK,MAAM,aAAc,IAAI,EAC5F,CACJ,WAAY,CACL,MAAM4D,EAAc,KAAK,QAAQ,MAC3BC,EAAMrvB,GAAU,KAAK,aAAa,EAClC6tB,EAAM,KAAK,IAAI,KAAK,IAAIwB,CAAG,CAAC,EAC5BvB,EAAM,KAAK,IAAI,KAAK,IAAIuB,CAAG,CAAC,EAC5BrC,EAAa,KAAK,iBAClBxG,EAAU4I,EAAY,iBAAmB,EACzCniC,EAAI+/B,EAAaA,EAAW,OAAO,MAAQxG,EAAU,EACrDrhD,EAAI6nD,EAAaA,EAAW,QAAQ,OAASxG,EAAU,EAC7D,OAAO,KAAK,aAAY,EAAKrhD,EAAI0oD,EAAM5gC,EAAI6gC,EAAM7gC,EAAI4gC,EAAM1oD,EAAI2oD,EAAM3oD,EAAI2oD,EAAM7gC,EAAI4gC,EAAM1oD,EAAI0oD,EAAM5gC,EAAI6gC,CAC1G,CACJ,YAAa,CACN,MAAMR,EAAU,KAAK,QAAQ,QAC7B,OAAIA,IAAY,OACL,CAAC,CAACA,EAEN,KAAK,0BAA0B,OAAS,CAClD,CACJ,sBAAsBpI,EAAW,CAC1B,MAAMrhB,EAAO,KAAK,KACZ+D,EAAQ,KAAK,MACbhuC,EAAU,KAAK,QACf,CAAE,KAAA01D,EAAO,SAAAzqC,EAAW,OAAAi9B,CAAM,EAAMloD,EAChCmwD,EAASuF,EAAK,OACd/B,EAAe,KAAK,eAEpB5C,EADQ,KAAK,MACO,QAAUZ,EAAS,EAAI,GAC3CwF,EAAKjE,GAAkBgE,CAAI,EAC3B5sB,EAAQ,CAAA,EACR8sB,EAAa1N,EAAO,WAAW,KAAK,WAAY,CAAA,EAChD2N,EAAYD,EAAW,QAAUA,EAAW,MAAQ,EACpDE,EAAgBD,EAAY,EAC5BE,EAAmB,SAAS9nB,GAAO,CACrC,OAAOF,GAAYC,EAAOC,GAAO4nB,CAAS,CACtD,EACQ,IAAIG,EAAahqE,EAAGulE,EAAW0E,EAC3BC,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAIC,EAAIC,GACpC,GAAIxrC,IAAa,MACb+qC,EAAcD,EAAiB,KAAK,MAAM,EAC1CI,EAAM,KAAK,OAASR,EACpBU,EAAML,EAAcF,EACpBS,EAAKR,EAAiBzK,EAAU,GAAG,EAAIwK,EACvCW,GAAKnL,EAAU,eACRrgC,IAAa,SACpB+qC,EAAcD,EAAiB,KAAK,GAAG,EACvCQ,EAAKjL,EAAU,IACfmL,GAAKV,EAAiBzK,EAAU,MAAM,EAAIwK,EAC1CK,EAAMH,EAAcF,EACpBO,EAAM,KAAK,IAAMV,UACV1qC,IAAa,OACpB+qC,EAAcD,EAAiB,KAAK,KAAK,EACzCG,EAAM,KAAK,MAAQP,EACnBS,EAAMJ,EAAcF,EACpBQ,EAAKP,EAAiBzK,EAAU,IAAI,EAAIwK,EACxCU,EAAKlL,EAAU,cACRrgC,IAAa,QACpB+qC,EAAcD,EAAiB,KAAK,IAAI,EACxCO,EAAKhL,EAAU,KACfkL,EAAKT,EAAiBzK,EAAU,KAAK,EAAIwK,EACzCI,EAAMF,EAAcF,EACpBM,EAAM,KAAK,KAAOT,UACX1rB,IAAS,IAAK,CACrB,GAAIhf,IAAa,SACb+qC,EAAcD,GAAkBzK,EAAU,IAAMA,EAAU,QAAU,EAAI,EAAG,UACpE3+D,GAASs+B,CAAQ,EAAG,CAC3B,MAAMknC,GAAiB,OAAO,KAAKlnC,CAAQ,EAAE,CAAC,EACxCn+B,GAAQm+B,EAASknC,EAAc,EACrC6D,EAAcD,EAAiB,KAAK,MAAM,OAAO5D,EAAc,EAAE,iBAAiBrlE,EAAK,CAAC,CAC3F,CACDypE,EAAKjL,EAAU,IACfmL,GAAKnL,EAAU,OACf6K,EAAMH,EAAcF,EACpBO,EAAMF,EAAMR,CACxB,SAAmB1rB,IAAS,IAAK,CACrB,GAAIhf,IAAa,SACb+qC,EAAcD,GAAkBzK,EAAU,KAAOA,EAAU,OAAS,CAAC,UAC9D3+D,GAASs+B,CAAQ,EAAG,CAC3B,MAAMknC,GAAiB,OAAO,KAAKlnC,CAAQ,EAAE,CAAC,EACxCn+B,GAAQm+B,EAASknC,EAAc,EACrC6D,EAAcD,EAAiB,KAAK,MAAM,OAAO5D,EAAc,EAAE,iBAAiBrlE,EAAK,CAAC,CAC3F,CACDopE,EAAMF,EAAcF,EACpBM,EAAMF,EAAMP,EACZW,EAAKhL,EAAU,KACfkL,EAAKlL,EAAU,KAClB,CACD,MAAMoL,GAAQ/zB,GAAe3iC,EAAQ,MAAM,cAAe+wD,CAAW,EAC/D4F,GAAO,KAAK,IAAI,EAAG,KAAK,KAAK5F,EAAc2F,EAAK,CAAC,EACvD,IAAI1qE,EAAI,EAAGA,EAAI+kE,EAAa/kE,GAAK2qE,GAAK,CAClC,MAAMzpD,GAAU,KAAK,WAAWlhB,CAAC,EAC3B4qE,GAAclB,EAAK,WAAWxoD,EAAO,EACrC2pD,GAAoB3O,EAAO,WAAWh7C,EAAO,EAC7C4pD,GAAYF,GAAY,UACxBG,GAAYH,GAAY,MACxBI,GAAaH,GAAkB,MAAQ,GACvCI,EAAmBJ,GAAkB,WACrC3D,EAAY0D,GAAY,UACxBM,EAAYN,GAAY,UACxBO,EAAiBP,GAAY,gBAAkB,GAC/CQ,EAAuBR,GAAY,qBACzCrF,EAAYH,GAAoB,KAAMplE,EAAGmkE,CAAM,EAC3CoB,IAAc,SAGlB0E,EAAmBloB,GAAYC,EAAOujB,EAAWuF,EAAS,EACtDnD,EACAuC,EAAME,EAAME,EAAKE,EAAKP,EAEtBE,EAAME,EAAME,EAAKE,GAAKR,EAE1BntB,EAAM,KAAK,CACP,IAAAotB,EACA,IAAAC,EACA,IAAAC,EACA,IAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAAC,GACA,MAAOK,GACP,MAAOC,GACP,WAAAC,GACA,iBAAAC,EACA,UAAA/D,EACA,UAAAgE,EACA,eAAAC,EACA,qBAAAC,CAChB,CAAa,EACJ,CACD,YAAK,aAAerG,EACpB,KAAK,aAAeiF,EACbltB,CACV,CACJ,mBAAmBwiB,EAAW,CACvB,MAAMrhB,EAAO,KAAK,KACZjqC,EAAU,KAAK,QACf,CAAE,SAAAirB,EAAW,MAAOuqC,CAAW,EAAMx1D,EACrC2zD,EAAe,KAAK,eACpBhoB,EAAQ,KAAK,MACb,CAAE,MAAApC,EAAQ,WAAA8tB,EAAa,QAAAzK,EAAU,OAAA0K,CAAM,EAAM9B,EAC7CG,EAAKjE,GAAkB1xD,EAAQ,IAAI,EACnCu3D,EAAiB5B,EAAK/I,EACtB4K,EAAkBF,EAAS,CAAC1K,EAAU2K,EACtCzoB,EAAW,CAAC1I,GAAU,KAAK,aAAa,EACxC0C,EAAQ,CAAA,EACd,IAAI98C,EAAGo3C,EAAM0uB,EAAMmD,EAAO5vB,EAAGC,EAAGmyB,EAAWxpB,EAAOb,EAAMgoB,EAAYsC,EAAWC,EAC3EC,GAAe,SACnB,GAAI3sC,IAAa,MACbqa,EAAI,KAAK,OAASkyB,EAClBC,EAAY,KAAK,kCACVxsC,IAAa,SACpBqa,EAAI,KAAK,IAAMkyB,EACfC,EAAY,KAAK,kCACVxsC,IAAa,OAAQ,CAC5B,MAAM97B,GAAM,KAAK,wBAAwBwmE,CAAE,EAC3C8B,EAAYtoE,GAAI,UAChBk2C,EAAIl2C,GAAI,CACpB,SAAmB87B,IAAa,QAAS,CAC7B,MAAM97B,GAAM,KAAK,wBAAwBwmE,CAAE,EAC3C8B,EAAYtoE,GAAI,UAChBk2C,EAAIl2C,GAAI,CACpB,SAAmB86C,IAAS,IAAK,CACrB,GAAIhf,IAAa,SACbqa,GAAKgmB,EAAU,IAAMA,EAAU,QAAU,EAAIiM,UACtC5qE,GAASs+B,CAAQ,EAAG,CAC3B,MAAMknC,GAAiB,OAAO,KAAKlnC,CAAQ,EAAE,CAAC,EACxCn+B,GAAQm+B,EAASknC,EAAc,EACrC7sB,EAAI,KAAK,MAAM,OAAO6sB,EAAc,EAAE,iBAAiBrlE,EAAK,EAAIyqE,CACnE,CACDE,EAAY,KAAK,yBAC7B,SAAmBxtB,IAAS,IAAK,CACrB,GAAIhf,IAAa,SACboa,GAAKimB,EAAU,KAAOA,EAAU,OAAS,EAAIiM,UACtC5qE,GAASs+B,CAAQ,EAAG,CAC3B,MAAMknC,GAAiB,OAAO,KAAKlnC,CAAQ,EAAE,CAAC,EACxCn+B,GAAQm+B,EAASknC,EAAc,EACrC9sB,EAAI,KAAK,MAAM,OAAO8sB,EAAc,EAAE,iBAAiBrlE,EAAK,CAC/D,CACD2qE,EAAY,KAAK,wBAAwB9B,CAAE,EAAE,SAChD,CACG1rB,IAAS,MACLV,IAAU,QACVquB,GAAe,MACRruB,IAAU,QACjBquB,GAAe,WAGvB,MAAMxE,GAAa,KAAK,iBACxB,IAAIpnE,EAAI,EAAGo3C,EAAOuI,EAAM,OAAQ3/C,EAAIo3C,EAAM,EAAEp3C,EAAE,CAC1C8lE,EAAOnmB,EAAM3/C,CAAC,EACdipE,EAAQnD,EAAK,MACb,MAAM8E,GAAcpB,EAAY,WAAW,KAAK,WAAWxpE,CAAC,CAAC,EAC7DiiD,EAAQ,KAAK,gBAAgBjiD,CAAC,EAAIwpE,EAAY,YAC9CpoB,EAAO,KAAK,wBAAwBphD,CAAC,EACrCopE,EAAahoB,EAAK,WAClBsqB,EAAYvrE,GAAQ8oE,CAAK,EAAIA,EAAM,OAAS,EAC5C,MAAM4C,GAAYH,EAAY,EACxBt1B,GAAQw0B,GAAY,MACpBkB,GAAclB,GAAY,gBAC1BmB,GAAcnB,GAAY,gBAChC,IAAIoB,GAAgBP,EAChB9D,GACAtuB,EAAI4I,EACAwpB,IAAc,UACVzrE,IAAMo3C,EAAO,EACb40B,GAAiB,KAAK,QAAQ,QAAoB,OAAV,QACjChsE,IAAM,EACbgsE,GAAiB,KAAK,QAAQ,QAAmB,QAAT,OAExCA,GAAgB,UAGpB/sC,IAAa,MACTosC,IAAe,QAAUvoB,IAAa,EACtC6oB,EAAa,CAACD,EAAYtC,EAAaA,EAAa,EAC7CiC,IAAe,SACtBM,EAAa,CAACvE,GAAW,QAAQ,OAAS,EAAIyE,GAAYzC,EAAaA,EAEvEuC,EAAa,CAACvE,GAAW,QAAQ,OAASgC,EAAa,EAGvDiC,IAAe,QAAUvoB,IAAa,EACtC6oB,EAAavC,EAAa,EACnBiC,IAAe,SACtBM,EAAavE,GAAW,QAAQ,OAAS,EAAIyE,GAAYzC,EAEzDuC,EAAavE,GAAW,QAAQ,OAASsE,EAAYtC,EAGzDkC,IACAK,GAAc,IAEd7oB,IAAa,GAAK,CAAC8nB,GAAY,oBAC/BvxB,GAAK+vB,EAAa,EAAI,KAAK,IAAItmB,CAAQ,KAG3CxJ,EAAI2I,EACJ0pB,GAAc,EAAID,GAAatC,EAAa,GAEhD,IAAI6C,GACJ,GAAIrB,GAAY,kBAAmB,CAC/B,MAAMsB,EAAe7mB,GAAUulB,GAAY,eAAe,EACpDne,EAAS2a,GAAW,QAAQpnE,CAAC,EAC7BkiD,EAAQklB,GAAW,OAAOpnE,CAAC,EACjC,IAAIkkD,EAAMynB,EAAaO,EAAa,IAChCloB,EAAO,EAAIkoB,EAAa,KAC5B,OAAON,GAAY,CACf,IAAK,SACD1nB,GAAOuI,EAAS,EAChB,MACJ,IAAK,SACDvI,GAAOuI,EACP,KACP,CACD,OAAOgf,EAAS,CACZ,IAAK,SACDznB,GAAQ9B,EAAQ,EAChB,MACJ,IAAK,QACD8B,GAAQ9B,EACR,MACJ,IAAK,QACGliD,IAAMo3C,EAAO,EACb4M,GAAQ9B,EACDliD,EAAI,IACXgkD,GAAQ9B,EAAQ,GAEpB,KACP,CACD+pB,GAAW,CACP,KAAAjoB,EACA,IAAAE,EACA,MAAOhC,EAAQgqB,EAAa,MAC5B,OAAQzf,EAASyf,EAAa,OAC9B,MAAOtB,GAAY,aACvC,CACa,CACD9tB,EAAM,KAAK,CACP,MAAAmsB,EACA,KAAA7nB,EACA,WAAAuqB,EACA,QAAS,CACL,SAAA7oB,EACA,MAAA1M,GACA,YAAA01B,GACA,YAAAC,GACA,UAAWC,GACX,aAAAJ,GACA,YAAa,CACTvyB,EACAC,CACH,EACD,SAAA2yB,EACH,CACjB,CAAa,CACJ,CACD,OAAOnvB,CACV,CACD,yBAA0B,CACtB,KAAM,CAAE,SAAA7d,EAAW,MAAA0gB,GAAW,KAAK,QAEnC,GADiB,CAACvF,GAAU,KAAK,aAAa,EAE1C,OAAOnb,IAAa,MAAQ,OAAS,QAEzC,IAAIse,EAAQ,SACZ,OAAIoC,EAAM,QAAU,QAChBpC,EAAQ,OACDoC,EAAM,QAAU,MACvBpC,EAAQ,QACDoC,EAAM,QAAU,UACvBpC,EAAQ,SAELA,CACV,CACD,wBAAwBosB,EAAI,CACxB,KAAM,CAAE,SAAA1qC,EAAW,MAAO,CAAE,WAAAosC,EAAa,OAAAC,EAAS,QAAA1K,CAAU,CAAA,EAAM,KAAK,QACjEwG,EAAa,KAAK,iBAClBmE,EAAiB5B,EAAK/I,EACtBiH,EAAST,EAAW,OAAO,MACjC,IAAIqE,EACApyB,EACJ,OAAIpa,IAAa,OACTqsC,GACAjyB,EAAI,KAAK,MAAQunB,EACbyK,IAAe,OACfI,EAAY,OACLJ,IAAe,UACtBI,EAAY,SACZpyB,GAAKwuB,EAAS,IAEd4D,EAAY,QACZpyB,GAAKwuB,KAGTxuB,EAAI,KAAK,MAAQkyB,EACbF,IAAe,OACfI,EAAY,QACLJ,IAAe,UACtBI,EAAY,SACZpyB,GAAKwuB,EAAS,IAEd4D,EAAY,OACZpyB,EAAI,KAAK,OAGVpa,IAAa,QAChBqsC,GACAjyB,EAAI,KAAK,KAAOunB,EACZyK,IAAe,OACfI,EAAY,QACLJ,IAAe,UACtBI,EAAY,SACZpyB,GAAKwuB,EAAS,IAEd4D,EAAY,OACZpyB,GAAKwuB,KAGTxuB,EAAI,KAAK,KAAOkyB,EACZF,IAAe,OACfI,EAAY,OACLJ,IAAe,UACtBI,EAAY,SACZpyB,GAAKwuB,EAAS,IAEd4D,EAAY,QACZpyB,EAAI,KAAK,QAIjBoyB,EAAY,QAET,CACH,UAAAA,EACA,EAAApyB,CACZ,CACK,CACJ,mBAAoB,CACb,GAAI,KAAK,QAAQ,MAAM,OACnB,OAEJ,MAAM2I,EAAQ,KAAK,MACb/iB,EAAW,KAAK,QAAQ,SAC9B,GAAIA,IAAa,QAAUA,IAAa,QACpC,MAAO,CACH,IAAK,EACL,KAAM,KAAK,KACX,OAAQ+iB,EAAM,OACd,MAAO,KAAK,KAC5B,EAEQ,GAAI/iB,IAAa,OAASA,IAAa,SACnC,MAAO,CACH,IAAK,KAAK,IACV,KAAM,EACN,OAAQ,KAAK,OACb,MAAO+iB,EAAM,KAC7B,CAEK,CACJ,gBAAiB,CACV,KAAM,CAAE,IAAA1tC,EAAM,QAAS,CAAE,gBAAA63D,CAAkB,EAAG,KAAAnoB,EAAO,IAAAE,EAAM,MAAAhC,EAAQ,OAAAuK,CAAS,EAAG,KAC3E0f,IACA73D,EAAI,KAAI,EACRA,EAAI,UAAY63D,EAChB73D,EAAI,SAAS0vC,EAAME,EAAKhC,EAAOuK,CAAM,EACrCn4C,EAAI,QAAO,EAElB,CACD,qBAAqBxT,EAAO,CACxB,MAAM4oE,EAAO,KAAK,QAAQ,KAC1B,GAAI,CAAC,KAAK,WAAY,GAAI,CAACA,EAAK,QAC5B,MAAO,GAGX,MAAMztD,EADQ,KAAK,MACC,UAAWmI,GAAIA,EAAE,QAAUtjB,CAAK,EACpD,OAAImb,GAAS,EACIytD,EAAK,WAAW,KAAK,WAAWztD,CAAK,CAAC,EACvC,UAET,CACV,CACJ,SAASqjD,EAAW,CACb,MAAMoK,EAAO,KAAK,QAAQ,KACpBp1D,EAAM,KAAK,IACXwoC,EAAQ,KAAK,iBAAmB,KAAK,eAAiB,KAAK,sBAAsBwiB,CAAS,GAChG,IAAIt/D,EAAGo3C,EACP,MAAMg1B,EAAW,CAACtsC,EAAIC,EAAI3P,IAAQ,CAC1B,CAACA,EAAM,OAAS,CAACA,EAAM,QAG3B9b,EAAI,KAAI,EACRA,EAAI,UAAY8b,EAAM,MACtB9b,EAAI,YAAc8b,EAAM,MACxB9b,EAAI,YAAY8b,EAAM,YAAc,CAAE,CAAA,EACtC9b,EAAI,eAAiB8b,EAAM,iBAC3B9b,EAAI,UAAS,EACbA,EAAI,OAAOwrB,EAAG,EAAGA,EAAG,CAAC,EACrBxrB,EAAI,OAAOyrB,EAAG,EAAGA,EAAG,CAAC,EACrBzrB,EAAI,OAAM,EACVA,EAAI,QAAO,EACvB,EACQ,GAAIo1D,EAAK,QACL,IAAI1pE,EAAI,EAAGo3C,EAAO0F,EAAM,OAAQ98C,EAAIo3C,EAAM,EAAEp3C,EAAE,CAC1C,MAAM4C,EAAOk6C,EAAM98C,CAAC,EAChB0pE,EAAK,iBACL0C,EAAS,CACL,EAAGxpE,EAAK,GACR,EAAGA,EAAK,EAChC,EAAuB,CACC,EAAGA,EAAK,GACR,EAAGA,EAAK,EACX,EAAEA,CAAI,EAEP8mE,EAAK,WACL0C,EAAS,CACL,EAAGxpE,EAAK,IACR,EAAGA,EAAK,GAChC,EAAuB,CACC,EAAGA,EAAK,IACR,EAAGA,EAAK,GAChC,EAAuB,CACC,MAAOA,EAAK,UACZ,MAAOA,EAAK,UACZ,WAAYA,EAAK,eACjB,iBAAkBA,EAAK,oBAC/C,CAAqB,CAER,CAER,CACJ,YAAa,CACN,KAAM,CAAE,MAAAo/C,EAAQ,IAAA1tC,EAAM,QAAS,CAAE,OAAA4nD,EAAS,KAAAwN,CAAI,CAAM,EAAG,KACjDE,EAAa1N,EAAO,WAAW,KAAK,WAAY,CAAA,EAChD2N,EAAY3N,EAAO,QAAU0N,EAAW,MAAQ,EACtD,GAAI,CAACC,EACD,OAEJ,MAAMwC,EAAgB3C,EAAK,WAAW,KAAK,WAAW,CAAC,CAAC,EAAE,UACpDM,EAAc,KAAK,aACzB,IAAIM,EAAIE,EAAID,EAAIE,EACZ,KAAK,gBACLH,EAAKvoB,GAAYC,EAAO,KAAK,KAAM6nB,CAAS,EAAIA,EAAY,EAC5DW,EAAKzoB,GAAYC,EAAO,KAAK,MAAOqqB,CAAa,EAAIA,EAAgB,EACrE9B,EAAKE,EAAKT,IAEVO,EAAKxoB,GAAYC,EAAO,KAAK,IAAK6nB,CAAS,EAAIA,EAAY,EAC3DY,EAAK1oB,GAAYC,EAAO,KAAK,OAAQqqB,CAAa,EAAIA,EAAgB,EACtE/B,EAAKE,EAAKR,GAEd11D,EAAI,KAAI,EACRA,EAAI,UAAYs1D,EAAW,MAC3Bt1D,EAAI,YAAcs1D,EAAW,MAC7Bt1D,EAAI,UAAS,EACbA,EAAI,OAAOg2D,EAAIC,CAAE,EACjBj2D,EAAI,OAAOk2D,EAAIC,CAAE,EACjBn2D,EAAI,OAAM,EACVA,EAAI,QAAO,CACd,CACJ,WAAWgrD,EAAW,CAEf,GAAI,CADgB,KAAK,QAAQ,MAChB,QACb,OAEJ,MAAMhrD,EAAM,KAAK,IACX6uC,EAAO,KAAK,oBACdA,GACAE,GAAS/uC,EAAK6uC,CAAI,EAEtB,MAAMrG,EAAQ,KAAK,cAAcwiB,CAAS,EAC1C,UAAW18D,KAAQk6C,EAAM,CACrB,MAAMwvB,EAAoB1pE,EAAK,QACzBsmE,EAAWtmE,EAAK,KAChBqmE,EAAQrmE,EAAK,MACb02C,EAAI12C,EAAK,WACf2hD,GAAWjwC,EAAK20D,EAAO,EAAG3vB,EAAG4vB,EAAUoD,CAAiB,CAC3D,CACGnpB,GACAG,GAAWhvC,CAAG,CAErB,CACJ,WAAY,CACL,KAAM,CAAE,IAAAA,EAAM,QAAS,CAAE,SAAA2qB,EAAW,MAAAstC,EAAQ,QAAAv1B,CAAO,CAAM,EAAG,KAC5D,GAAI,CAACu1B,EAAM,QACP,OAEJ,MAAMnrB,EAAOkE,GAAOinB,EAAM,IAAI,EACxB3L,EAAUvb,GAAUknB,EAAM,OAAO,EACjChvB,EAAQgvB,EAAM,MACpB,IAAIpI,EAAS/iB,EAAK,WAAa,EAC3BniB,IAAa,UAAYA,IAAa,UAAYt+B,GAASs+B,CAAQ,GACnEklC,GAAUvD,EAAQ,OACdzgE,GAAQosE,EAAM,IAAI,IAClBpI,GAAU/iB,EAAK,YAAcmrB,EAAM,KAAK,OAAS,KAGrDpI,GAAUvD,EAAQ,IAEtB,KAAM,CAAE,OAAAqF,EAAS,OAAAC,EAAS,SAAAvZ,EAAW,SAAA7J,CAAQ,EAAMkjB,GAAU,KAAM7B,EAAQllC,EAAUse,CAAK,EAC1FgH,GAAWjwC,EAAKi4D,EAAM,KAAM,EAAG,EAAGnrB,EAAM,CACpC,MAAOmrB,EAAM,MACb,SAAA5f,EACA,SAAA7J,EACA,UAAWijB,GAAWxoB,EAAOte,EAAU+X,CAAO,EAC9C,aAAc,SACd,YAAa,CACTivB,EACAC,CACH,CACb,CAAS,CACJ,CACD,KAAK5G,EAAW,CACP,KAAK,eAGV,KAAK,eAAc,EACnB,KAAK,SAASA,CAAS,EACvB,KAAK,WAAU,EACf,KAAK,UAAS,EACd,KAAK,WAAWA,CAAS,EAC5B,CACJ,SAAU,CACH,MAAMvwB,EAAO,KAAK,QACZy9B,EAAKz9B,EAAK,OAASA,EAAK,MAAM,GAAK,EACnC09B,EAAK91B,GAAe5H,EAAK,MAAQA,EAAK,KAAK,EAAG,EAAE,EAChD29B,EAAK/1B,GAAe5H,EAAK,QAAUA,EAAK,OAAO,EAAG,CAAC,EACzD,MAAI,CAAC,KAAK,cAAgB,KAAK,OAASq3B,GAAM,UAAU,KAC7C,CACH,CACI,EAAGoG,EACH,KAAOlN,GAAY,CACf,KAAK,KAAKA,CAAS,CACtB,CACJ,CACjB,EAEe,CACH,CACI,EAAGmN,EACH,KAAOnN,GAAY,CACf,KAAK,eAAc,EACnB,KAAK,SAASA,CAAS,EACvB,KAAK,UAAS,CACjB,CACJ,EACD,CACI,EAAGoN,EACH,KAAM,IAAI,CACN,KAAK,WAAU,CAClB,CACJ,EACD,CACI,EAAGF,EACH,KAAOlN,GAAY,CACf,KAAK,WAAWA,CAAS,CAC5B,CACJ,CACb,CACK,CACJ,wBAAwBz3D,EAAM,CACvB,MAAM6+D,EAAQ,KAAK,MAAM,6BAA4B,EAC/CiG,EAAS,KAAK,KAAO,SACrB3iE,EAAS,CAAA,EACf,IAAIhK,EAAGo3C,EACP,IAAIp3C,EAAI,EAAGo3C,EAAOsvB,EAAM,OAAQ1mE,EAAIo3C,EAAM,EAAEp3C,EAAE,CAC1C,MAAM09C,EAAOgpB,EAAM1mE,CAAC,EAChB09C,EAAKivB,CAAM,IAAM,KAAK,KAAO,CAAC9kE,GAAQ61C,EAAK,OAAS71C,IACpDmC,EAAO,KAAK0zC,CAAI,CAEvB,CACD,OAAO1zC,CACV,CACJ,wBAAwBiS,EAAO,CACxB,MAAM8yB,EAAO,KAAK,QAAQ,MAAM,WAAW,KAAK,WAAW9yB,CAAK,CAAC,EACjE,OAAOqpC,GAAOvW,EAAK,IAAI,CAC1B,CACJ,YAAa,CACN,MAAM69B,EAAW,KAAK,wBAAwB,CAAC,EAAE,WACjD,OAAQ,KAAK,eAAiB,KAAK,MAAQ,KAAK,QAAUA,CAC7D,CACL,CAEA,MAAMC,EAAc,CAChB,YAAYhlE,EAAMtC,EAAOunE,EAAS,CAC9B,KAAK,KAAOjlE,EACZ,KAAK,MAAQtC,EACb,KAAK,SAAWunE,EAChB,KAAK,MAAQ,OAAO,OAAO,IAAI,CAClC,CACD,UAAUjlE,EAAM,CACZ,OAAO,OAAO,UAAU,cAAc,KAAK,KAAK,KAAK,UAAWA,EAAK,SAAS,CACjF,CACJ,SAASjF,EAAM,CACR,MAAMozC,EAAQ,OAAO,eAAepzC,CAAI,EACxC,IAAImqE,EACAC,GAAkBh3B,CAAK,IACvB+2B,EAAc,KAAK,SAAS/2B,CAAK,GAErC,MAAM8G,EAAQ,KAAK,MACbvrC,EAAK3O,EAAK,GACV2C,EAAQ,KAAK,MAAQ,IAAMgM,EACjC,GAAI,CAACA,EACD,MAAM,IAAI,MAAM,2BAA6B3O,CAAI,EAErD,OAAI2O,KAAMurC,IAGVA,EAAMvrC,CAAE,EAAI3O,EACZqqE,GAAiBrqE,EAAM2C,EAAOwnE,CAAW,EACrC,KAAK,UACLrnC,GAAS,SAAS9iC,EAAK,GAAIA,EAAK,SAAS,GAEtC2C,CACV,CACJ,IAAIgM,EAAI,CACD,OAAO,KAAK,MAAMA,CAAE,CACvB,CACJ,WAAW3O,EAAM,CACV,MAAMk6C,EAAQ,KAAK,MACbvrC,EAAK3O,EAAK,GACV2C,EAAQ,KAAK,MACfgM,KAAMurC,GACN,OAAOA,EAAMvrC,CAAE,EAEfhM,GAASgM,KAAMm0B,GAASngC,CAAK,IAC7B,OAAOmgC,GAASngC,CAAK,EAAEgM,CAAE,EACrB,KAAK,UACL,OAAO+uC,GAAU/uC,CAAE,EAG9B,CACL,CACA,SAAS07D,GAAiBrqE,EAAM2C,EAAOwnE,EAAa,CAChD,MAAMG,EAAejvC,GAAM,OAAO,OAAO,IAAI,EAAG,CAC5C8uC,EAAcrnC,GAAS,IAAIqnC,CAAW,EAAI,CAAE,EAC5CrnC,GAAS,IAAIngC,CAAK,EAClB3C,EAAK,QACb,CAAK,EACD8iC,GAAS,IAAIngC,EAAO2nE,CAAY,EAC5BtqE,EAAK,eACLuqE,GAAc5nE,EAAO3C,EAAK,aAAa,EAEvCA,EAAK,aACL8iC,GAAS,SAASngC,EAAO3C,EAAK,WAAW,CAEjD,CACA,SAASuqE,GAAc5nE,EAAO6nE,EAAQ,CAClC,OAAO,KAAKA,CAAM,EAAE,QAASjzB,GAAW,CACpC,MAAMkzB,EAAgBlzB,EAAS,MAAM,GAAG,EAClCmzB,EAAaD,EAAc,MAC3BE,EAAc,CAChBhoE,CACH,EAAC,OAAO8nE,CAAa,EAAE,KAAK,GAAG,EAC1Bn1B,EAAQk1B,EAAOjzB,CAAQ,EAAE,MAAM,GAAG,EAClCyG,EAAa1I,EAAM,MACnByI,EAAczI,EAAM,KAAK,GAAG,EAClCxS,GAAS,MAAM6nC,EAAaD,EAAY3sB,EAAaC,CAAU,CACvE,CAAK,CACL,CACA,SAASosB,GAAkBh3B,EAAO,CAC9B,MAAO,OAAQA,GAAS,aAAcA,CAC1C,CAEA,MAAMw3B,EAAS,CACX,aAAa,CACT,KAAK,YAAc,IAAIX,GAAchX,GAAmB,WAAY,EAAI,EACxE,KAAK,SAAW,IAAIgX,GAAcxG,GAAS,UAAU,EACrD,KAAK,QAAU,IAAIwG,GAAc,OAAQ,SAAS,EAClD,KAAK,OAAS,IAAIA,GAAczG,GAAO,QAAQ,EAC/C,KAAK,iBAAmB,CACpB,KAAK,YACL,KAAK,OACL,KAAK,QACjB,CACK,CACJ,OAAOz9D,EAAM,CACN,KAAK,MAAM,WAAYA,CAAI,CAC9B,CACD,UAAUA,EAAM,CACZ,KAAK,MAAM,aAAcA,CAAI,CAChC,CACJ,kBAAkBA,EAAM,CACjB,KAAK,MAAM,WAAYA,EAAM,KAAK,WAAW,CAChD,CACJ,eAAeA,EAAM,CACd,KAAK,MAAM,WAAYA,EAAM,KAAK,QAAQ,CAC7C,CACJ,cAAcA,EAAM,CACb,KAAK,MAAM,WAAYA,EAAM,KAAK,OAAO,CAC5C,CACJ,aAAaA,EAAM,CACZ,KAAK,MAAM,WAAYA,EAAM,KAAK,MAAM,CAC3C,CACJ,cAAc4I,EAAI,CACX,OAAO,KAAK,KAAKA,EAAI,KAAK,YAAa,YAAY,CACtD,CACJ,WAAWA,EAAI,CACR,OAAO,KAAK,KAAKA,EAAI,KAAK,SAAU,SAAS,CAChD,CACJ,UAAUA,EAAI,CACP,OAAO,KAAK,KAAKA,EAAI,KAAK,QAAS,QAAQ,CAC9C,CACJ,SAASA,EAAI,CACN,OAAO,KAAK,KAAKA,EAAI,KAAK,OAAQ,OAAO,CAC5C,CACJ,qBAAqB5I,EAAM,CACpB,KAAK,MAAM,aAAcA,EAAM,KAAK,WAAW,CAClD,CACJ,kBAAkBA,EAAM,CACjB,KAAK,MAAM,aAAcA,EAAM,KAAK,QAAQ,CAC/C,CACJ,iBAAiBA,EAAM,CAChB,KAAK,MAAM,aAAcA,EAAM,KAAK,OAAO,CAC9C,CACJ,gBAAgBA,EAAM,CACf,KAAK,MAAM,aAAcA,EAAM,KAAK,MAAM,CAC7C,CACJ,MAAM+C,EAAQ/C,EAAM8kE,EAAe,CAC5B,CACI,GAAG9kE,CACf,EAAU,QAASzG,GAAM,CACb,MAAMwrE,EAAMD,GAAiB,KAAK,oBAAoBvrE,CAAG,EACrDurE,GAAiBC,EAAI,UAAUxrE,CAAG,GAAKwrE,IAAQ,KAAK,SAAWxrE,EAAI,GACnE,KAAK,MAAMwJ,EAAQgiE,EAAKxrE,CAAG,EAE3B40C,GAAK50C,EAAMU,GAAO,CACd,MAAM+qE,EAAUF,GAAiB,KAAK,oBAAoB7qE,CAAI,EAC9D,KAAK,MAAM8I,EAAQiiE,EAAS/qE,CAAI,CACpD,CAAiB,CAEjB,CAAS,CACJ,CACJ,MAAM8I,EAAQkiE,EAAUj3D,EAAW,CAC5B,MAAMk3D,EAAcv1B,GAAY5sC,CAAM,EACtCJ,GAASqL,EAAU,SAAWk3D,CAAW,EAAG,CAAA,EAAIl3D,CAAS,EACzDi3D,EAASliE,CAAM,EAAEiL,CAAS,EAC1BrL,GAASqL,EAAU,QAAUk3D,CAAW,EAAG,CAAA,EAAIl3D,CAAS,CAC3D,CACJ,oBAAoB9O,EAAM,CACnB,QAAQ7H,EAAI,EAAGA,EAAI,KAAK,iBAAiB,OAAQA,IAAI,CACjD,MAAM0tE,EAAM,KAAK,iBAAiB1tE,CAAC,EACnC,GAAI0tE,EAAI,UAAU7lE,CAAI,EAClB,OAAO6lE,CAEd,CACD,OAAO,KAAK,OACf,CACJ,KAAKn8D,EAAIk8D,EAAe5lE,EAAM,CACvB,MAAMjF,EAAO6qE,EAAc,IAAIl8D,CAAE,EACjC,GAAI3O,IAAS,OACT,MAAM,IAAI,MAAM,IAAM2O,EAAK,yBAA2B1J,EAAO,GAAG,EAEpE,OAAOjF,CACV,CACL,CACA,IAAIgrE,GAA2B,IAAIJ,GAEnC,MAAMM,EAAc,CAChB,aAAa,CACT,KAAK,MAAQ,EAChB,CACJ,OAAO9rB,EAAO3nC,EAAM1R,EAAMk2B,EAAQ,CACvBxkB,IAAS,eACT,KAAK,MAAQ,KAAK,mBAAmB2nC,EAAO,EAAI,EAChD,KAAK,QAAQ,KAAK,MAAOA,EAAO,SAAS,GAE7C,MAAMvjB,EAAcI,EAAS,KAAK,aAAamjB,CAAK,EAAE,OAAOnjB,CAAM,EAAI,KAAK,aAAamjB,CAAK,EACxFh4C,EAAS,KAAK,QAAQy0B,EAAaujB,EAAO3nC,EAAM1R,CAAI,EAC1D,OAAI0R,IAAS,iBACT,KAAK,QAAQokB,EAAaujB,EAAO,MAAM,EACvC,KAAK,QAAQ,KAAK,MAAOA,EAAO,WAAW,GAExCh4C,CACV,CACJ,QAAQy0B,EAAaujB,EAAO3nC,EAAM1R,EAAM,CACjCA,EAAOA,GAAQ,GACf,UAAWoU,KAAc0hB,EAAY,CACjC,MAAMld,EAASxE,EAAW,OACpBrR,EAAS6V,EAAOlH,CAAI,EACpBmpB,EAAS,CACXwe,EACAr5C,EACAoU,EAAW,OAC3B,EACY,GAAIzR,GAASI,EAAQ83B,EAAQjiB,CAAM,IAAM,IAAS5Y,EAAK,WACnD,MAAO,EAEd,CACD,MAAO,EACV,CACD,YAAa,CACJ6tC,GAAc,KAAK,MAAM,IAC1B,KAAK,UAAY,KAAK,OACtB,KAAK,OAAS,OAErB,CACJ,aAAawL,EAAO,CACb,GAAI,KAAK,OACL,OAAO,KAAK,OAEhB,MAAMvjB,EAAc,KAAK,OAAS,KAAK,mBAAmBujB,CAAK,EAC/D,YAAK,oBAAoBA,CAAK,EACvBvjB,CACV,CACD,mBAAmBujB,EAAO+rB,EAAK,CAC3B,MAAMpsC,EAASqgB,GAASA,EAAM,OACxBhuC,EAAU2iC,GAAehV,EAAO,SAAWA,EAAO,QAAQ,QAAS,CAAA,CAAE,EACrEqsC,EAAUC,GAAWtsC,CAAM,EACjC,OAAO3tB,IAAY,IAAS,CAAC+5D,EAAM,CAAE,EAAGG,GAAkBlsB,EAAOgsB,EAASh6D,EAAS+5D,CAAG,CACzF,CACJ,oBAAoB/rB,EAAO,CACpB,MAAMmsB,EAAsB,KAAK,WAAa,GACxC1vC,EAAc,KAAK,OACnB/rB,EAAO,CAAC/O,EAAGC,IAAID,EAAE,OAAQ01C,GAAI,CAACz1C,EAAE,KAAM01C,GAAID,EAAE,OAAO,KAAOC,EAAE,OAAO,EAAE,CAAC,EAC5E,KAAK,QAAQ5mC,EAAKy7D,EAAqB1vC,CAAW,EAAGujB,EAAO,MAAM,EAClE,KAAK,QAAQtvC,EAAK+rB,EAAa0vC,CAAmB,EAAGnsB,EAAO,OAAO,CACtE,CACL,CACC,SAASisB,GAAWtsC,EAAQ,CACzB,MAAMysC,EAAW,CAAA,EACXJ,EAAU,CAAA,EACV/3D,EAAO,OAAO,KAAK23D,GAAS,QAAQ,KAAK,EAC/C,QAAQ5tE,EAAI,EAAGA,EAAIiW,EAAK,OAAQjW,IAC5BguE,EAAQ,KAAKJ,GAAS,UAAU33D,EAAKjW,CAAC,CAAC,CAAC,EAE5C,MAAMghD,EAAQrf,EAAO,SAAW,GAChC,QAAQ3hC,EAAI,EAAGA,EAAIghD,EAAM,OAAQhhD,IAAI,CACjC,MAAMuhB,EAASy/B,EAAMhhD,CAAC,EAClBguE,EAAQ,QAAQzsD,CAAM,IAAM,KAC5BysD,EAAQ,KAAKzsD,CAAM,EACnB6sD,EAAS7sD,EAAO,EAAE,EAAI,GAE7B,CACD,MAAO,CACH,QAAAysD,EACA,SAAAI,CACR,CACA,CACA,SAASC,GAAQr6D,EAAS+5D,EAAK,CAC3B,MAAI,CAACA,GAAO/5D,IAAY,GACb,KAEPA,IAAY,GACL,GAEJA,CACX,CACA,SAASk6D,GAAkBlsB,EAAO,CAAE,QAAAgsB,EAAU,SAAAI,CAAW,EAAEp6D,EAAS+5D,EAAK,CACrE,MAAM/jE,EAAS,CAAA,EACTkX,EAAU8gC,EAAM,aACtB,UAAWzgC,KAAUysD,EAAQ,CACzB,MAAMz8D,EAAKgQ,EAAO,GACZwtB,EAAOs/B,GAAQr6D,EAAQzC,CAAE,EAAGw8D,CAAG,EACjCh/B,IAAS,MAGb/kC,EAAO,KAAK,CACR,OAAAuX,EACA,QAAS+sD,GAAWtsB,EAAM,OAAQ,CAC9B,OAAAzgC,EACA,MAAO6sD,EAAS78D,CAAE,CAClC,EAAew9B,EAAM7tB,CAAO,CAC5B,CAAS,CACJ,CACD,OAAOlX,CACX,CACA,SAASskE,GAAW3sC,EAAQ,CAAE,OAAApgB,EAAS,MAAAy/B,CAAQ,EAAEjS,EAAM7tB,EAAS,CAC5D,MAAMjL,EAAO0rB,EAAO,gBAAgBpgB,CAAM,EACpC4kC,EAASxkB,EAAO,gBAAgBoN,EAAM94B,CAAI,EAChD,OAAI+qC,GAASz/B,EAAO,UAChB4kC,EAAO,KAAK5kC,EAAO,QAAQ,EAExBogB,EAAO,eAAewkB,EAAQjlC,EAAS,CAC1C,EACR,EAAO,CACC,WAAY,GACZ,UAAW,GACX,QAAS,EACjB,CAAK,CACL,CAEA,SAASqtD,GAAa1mE,EAAMmM,EAAS,CACjC,MAAMw6D,EAAkB9oC,GAAS,SAAS79B,CAAI,GAAK,CAAA,EAEnD,QADwBmM,EAAQ,UAAY,CAAA,GAAInM,CAAI,GAAK,IACnC,WAAamM,EAAQ,WAAaw6D,EAAgB,WAAa,GACzF,CACA,SAASC,GAA0Bl9D,EAAIm3C,EAAW,CAC9C,IAAIzK,EAAO1sC,EACX,OAAIA,IAAO,UACP0sC,EAAOyK,EACAn3C,IAAO,YACd0sC,EAAOyK,IAAc,IAAM,IAAM,KAE9BzK,CACX,CACA,SAASywB,GAA0BzwB,EAAMyK,EAAW,CAChD,OAAOzK,IAASyK,EAAY,UAAY,SAC5C,CACA,SAASimB,GAAcp9D,EAAI,CACvB,GAAIA,IAAO,KAAOA,IAAO,KAAOA,IAAO,IACnC,OAAOA,CAEf,CACA,SAASq9D,GAAiB3vC,EAAU,CAChC,GAAIA,IAAa,OAASA,IAAa,SACnC,MAAO,IAEX,GAAIA,IAAa,QAAUA,IAAa,QACpC,MAAO,GAEf,CACA,SAAS4vC,GAAct9D,KAAOu9D,EAAc,CACxC,GAAIH,GAAcp9D,CAAE,EAChB,OAAOA,EAEX,UAAWw9B,KAAQ+/B,EAAa,CAC5B,MAAM7wB,EAAOlP,EAAK,MAAQ6/B,GAAiB7/B,EAAK,QAAQ,GAAKx9B,EAAG,OAAS,GAAKo9D,GAAcp9D,EAAG,CAAC,EAAE,YAAW,CAAE,EAC/G,GAAI0sC,EACA,OAAOA,CAEd,CACD,MAAM,IAAI,MAAM,6BAA6B1sC,CAAE,qDAAqD,CACxG,CACA,SAASw9D,GAAmBx9D,EAAI0sC,EAAM6X,EAAS,CAC3C,GAAIA,EAAQ7X,EAAO,QAAQ,IAAM1sC,EAC7B,MAAO,CACH,KAAA0sC,CACZ,CAEA,CACA,SAAS+wB,GAAyBz9D,EAAIowB,EAAQ,CAC1C,GAAIA,EAAO,MAAQA,EAAO,KAAK,SAAU,CACrC,MAAMstC,EAAUttC,EAAO,KAAK,SAAS,OAAQuS,GAAIA,EAAE,UAAY3iC,GAAM2iC,EAAE,UAAY3iC,CAAE,EACrF,GAAI09D,EAAQ,OACR,OAAOF,GAAmBx9D,EAAI,IAAK09D,EAAQ,CAAC,CAAC,GAAKF,GAAmBx9D,EAAI,IAAK09D,EAAQ,CAAC,CAAC,CAE/F,CACD,MAAO,EACX,CACA,SAASC,GAAiBvtC,EAAQ3tB,EAAS,CACvC,MAAMm7D,EAAgB7uB,GAAU3e,EAAO,IAAI,GAAK,CAC5C,OAAQ,CAAE,CAClB,EACUytC,EAAep7D,EAAQ,QAAU,GACjCq7D,EAAiBd,GAAa5sC,EAAO,KAAM3tB,CAAO,EAClDohD,EAAS,OAAO,OAAO,IAAI,EACjC,cAAO,KAAKga,CAAY,EAAE,QAAS79D,GAAK,CACpC,MAAM+9D,EAAYF,EAAa79D,CAAE,EACjC,GAAI,CAAC5Q,GAAS2uE,CAAS,EACnB,OAAO,QAAQ,MAAM,0CAA0C/9D,CAAE,EAAE,EAEvE,GAAI+9D,EAAU,OACV,OAAO,QAAQ,KAAK,kDAAkD/9D,CAAE,EAAE,EAE9E,MAAM0sC,EAAO4wB,GAAct9D,EAAI+9D,EAAWN,GAAyBz9D,EAAIowB,CAAM,EAAG+D,GAAS,OAAO4pC,EAAU,IAAI,CAAC,EACzGC,EAAYb,GAA0BzwB,EAAMoxB,CAAc,EAC1DG,EAAsBL,EAAc,QAAU,GACpD/Z,EAAO7jD,CAAE,EAAIumC,GAAQ,OAAO,OAAO,IAAI,EAAG,CACtC,CACI,KAAAmG,CACH,EACDqxB,EACAE,EAAoBvxB,CAAI,EACxBuxB,EAAoBD,CAAS,CACzC,CAAS,CACT,CAAK,EACD5tC,EAAO,KAAK,SAAS,QAASm0B,GAAU,CACpC,MAAMjuD,EAAOiuD,EAAQ,MAAQn0B,EAAO,KAC9B+mB,EAAYoN,EAAQ,WAAayY,GAAa1mE,EAAMmM,CAAO,EAE3Dw7D,GADkBlvB,GAAUz4C,CAAI,GAAK,CAAA,GACC,QAAU,GACtD,OAAO,KAAK2nE,CAAmB,EAAE,QAASC,GAAY,CAClD,MAAMxxB,EAAOwwB,GAA0BgB,EAAW/mB,CAAS,EACrDn3C,EAAKukD,EAAQ7X,EAAO,QAAQ,GAAKA,EACvCmX,EAAO7jD,CAAE,EAAI6jD,EAAO7jD,CAAE,GAAK,OAAO,OAAO,IAAI,EAC7CumC,GAAQsd,EAAO7jD,CAAE,EAAG,CAChB,CACI,KAAA0sC,CACH,EACDmxB,EAAa79D,CAAE,EACfi+D,EAAoBC,CAAS,CAC7C,CAAa,CACb,CAAS,CACT,CAAK,EACD,OAAO,KAAKra,CAAM,EAAE,QAAS11D,GAAM,CAC/B,MAAMwzD,EAAQkC,EAAO11D,CAAG,EACxBo4C,GAAQob,EAAO,CACXxtB,GAAS,OAAOwtB,EAAM,IAAI,EAC1BxtB,GAAS,KACrB,CAAS,CACT,CAAK,EACM0vB,CACX,CACA,SAASsa,GAAY/tC,EAAQ,CACzB,MAAM3tB,EAAU2tB,EAAO,UAAYA,EAAO,QAAU,CAAA,GACpD3tB,EAAQ,QAAU2iC,GAAe3iC,EAAQ,QAAS,CAAE,CAAA,EACpDA,EAAQ,OAASk7D,GAAiBvtC,EAAQ3tB,CAAO,CACrD,CACA,SAAS27D,GAASv6D,EAAM,CACpB,OAAAA,EAAOA,GAAQ,GACfA,EAAK,SAAWA,EAAK,UAAY,CAAA,EACjCA,EAAK,OAASA,EAAK,QAAU,CAAA,EACtBA,CACX,CACA,SAASw6D,GAAWjuC,EAAQ,CACxB,OAAAA,EAASA,GAAU,GACnBA,EAAO,KAAOguC,GAAShuC,EAAO,IAAI,EAClC+tC,GAAY/tC,CAAM,EACXA,CACX,CACA,MAAMkuC,GAAW,IAAI,IACfC,GAAa,IAAI,IACvB,SAASC,GAAWt4C,EAAUu4C,EAAU,CACpC,IAAI/5D,EAAO45D,GAAS,IAAIp4C,CAAQ,EAChC,OAAKxhB,IACDA,EAAO+5D,EAAQ,EACfH,GAAS,IAAIp4C,EAAUxhB,CAAI,EAC3B65D,GAAW,IAAI75D,CAAI,GAEhBA,CACX,CACA,MAAMg6D,GAAa,CAAC9wE,EAAKiD,EAAK1C,IAAM,CAChC,MAAMqvC,EAAOsJ,GAAiBj2C,EAAK1C,CAAG,EAClCqvC,IAAS,QACT5vC,EAAI,IAAI4vC,CAAI,CAEpB,EACA,MAAMmhC,EAAO,CACT,YAAYvuC,EAAO,CACf,KAAK,QAAUiuC,GAAWjuC,CAAM,EAChC,KAAK,YAAc,IAAI,IACvB,KAAK,eAAiB,IAAI,GAC7B,CACD,IAAI,UAAW,CACX,OAAO,KAAK,QAAQ,QACvB,CACD,IAAI,MAAO,CACP,OAAO,KAAK,QAAQ,IACvB,CACD,IAAI,KAAK95B,EAAM,CACX,KAAK,QAAQ,KAAOA,CACvB,CACD,IAAI,MAAO,CACP,OAAO,KAAK,QAAQ,IACvB,CACD,IAAI,KAAKuN,EAAM,CACX,KAAK,QAAQ,KAAOu6D,GAASv6D,CAAI,CACpC,CACD,IAAI,SAAU,CACV,OAAO,KAAK,QAAQ,OACvB,CACD,IAAI,QAAQpB,EAAS,CACjB,KAAK,QAAQ,QAAUA,CAC1B,CACD,IAAI,SAAU,CACV,OAAO,KAAK,QAAQ,OACvB,CACD,QAAS,CACL,MAAM2tB,EAAS,KAAK,QACpB,KAAK,WAAU,EACf+tC,GAAY/tC,CAAM,CACrB,CACD,YAAa,CACT,KAAK,YAAY,QACjB,KAAK,eAAe,OACvB,CACJ,iBAAiBwuC,EAAa,CACvB,OAAOJ,GAAWI,EAAa,IAAI,CAC3B,CACI,YAAYA,CAAW,GACvB,EACH,CACjB,CAAa,CACR,CACJ,0BAA0BA,EAAa3nD,EAAY,CAC5C,OAAOunD,GAAW,GAAGI,CAAW,eAAe3nD,CAAU,GAAI,IAAI,CACzD,CACI,YAAY2nD,CAAW,gBAAgB3nD,CAAU,GACjD,eAAeA,CAAU,EAC5B,EACD,CACI,YAAY2nD,CAAW,GACvB,EACH,CACjB,CAAa,CACR,CACJ,wBAAwBA,EAAazY,EAAa,CAC3C,OAAOqY,GAAW,GAAGI,CAAW,IAAIzY,CAAW,GAAI,IAAI,CAC/C,CACI,YAAYyY,CAAW,aAAazY,CAAW,GAC/C,YAAYyY,CAAW,GACvB,YAAYzY,CAAW,GACvB,EACH,CACjB,CAAa,CACR,CACJ,gBAAgBn2C,EAAQ,CACjB,MAAMhQ,EAAKgQ,EAAO,GACZ1Z,EAAO,KAAK,KAClB,OAAOkoE,GAAW,GAAGloE,CAAI,WAAW0J,CAAE,GAAI,IAAI,CACtC,CACI,WAAWA,CAAE,GACb,GAAGgQ,EAAO,wBAA0B,CAAE,CACzC,CACjB,CAAa,CACR,CACJ,cAAc6uD,EAAWC,EAAY,CAC9B,MAAMC,EAAc,KAAK,YACzB,IAAIjvE,EAAQivE,EAAY,IAAIF,CAAS,EACrC,OAAI,CAAC/uE,GAASgvE,KACVhvE,EAAQ,IAAI,IACZivE,EAAY,IAAIF,EAAW/uE,CAAK,GAE7BA,CACV,CACJ,gBAAgB+uE,EAAWG,EAAUF,EAAY,CAC1C,KAAM,CAAE,QAAAr8D,EAAU,KAAAnM,CAAO,EAAG,KACtBxG,EAAQ,KAAK,cAAc+uE,EAAWC,CAAU,EAChD38D,EAASrS,EAAM,IAAIkvE,CAAQ,EACjC,GAAI78D,EACA,OAAOA,EAEX,MAAMyyC,EAAS,IAAI,IACnBoqB,EAAS,QAASt6D,GAAO,CACjBm6D,IACAjqB,EAAO,IAAIiqB,CAAS,EACpBn6D,EAAK,QAASvW,GAAMuwE,GAAW9pB,EAAQiqB,EAAW1wE,CAAG,CAAC,GAE1DuW,EAAK,QAASvW,GAAMuwE,GAAW9pB,EAAQnyC,EAAStU,CAAG,CAAC,EACpDuW,EAAK,QAASvW,GAAMuwE,GAAW9pB,EAAQ7F,GAAUz4C,CAAI,GAAK,GAAInI,CAAG,CAAC,EAClEuW,EAAK,QAASvW,GAAMuwE,GAAW9pB,EAAQzgB,GAAUhmC,CAAG,CAAC,EACrDuW,EAAK,QAASvW,GAAMuwE,GAAW9pB,EAAQ1nB,GAAa/+B,CAAG,CAAC,CACpE,CAAS,EACD,MAAMw6C,EAAQ,MAAM,KAAKiM,CAAM,EAC/B,OAAIjM,EAAM,SAAW,GACjBA,EAAM,KAAK,OAAO,OAAO,IAAI,CAAC,EAE9B41B,GAAW,IAAIS,CAAQ,GACvBlvE,EAAM,IAAIkvE,EAAUr2B,CAAK,EAEtBA,CACV,CACJ,mBAAoB,CACb,KAAM,CAAE,QAAAlmC,EAAU,KAAAnM,CAAO,EAAG,KAC5B,MAAO,CACHmM,EACAssC,GAAUz4C,CAAI,GAAK,CAAE,EACrB69B,GAAS,SAAS79B,CAAI,GAAK,CAAE,EAC7B,CACI,KAAAA,CACH,EACD69B,GACAjH,EACZ,CACK,CACJ,oBAAoB0nB,EAAQ9Q,EAAOn0B,EAAS6T,EAAW,CAChD,EACR,EAAO,CACC,MAAM/qB,EAAS,CACX,QAAS,EACrB,EACc,CAAE,SAAA69C,EAAW,YAAA2oB,GAAiBC,GAAY,KAAK,eAAgBtqB,EAAQpxB,CAAQ,EACrF,IAAI/gB,EAAU6zC,EACd,GAAI6oB,GAAY7oB,EAAUxS,CAAK,EAAG,CAC9BrrC,EAAO,QAAU,GACjBkX,EAAU1gB,GAAW0gB,CAAO,EAAIA,EAAO,EAAKA,EAC5C,MAAMyvD,EAAc,KAAK,eAAexqB,EAAQjlC,EAASsvD,CAAW,EACpEx8D,EAAU2yC,GAAekB,EAAU3mC,EAASyvD,CAAW,CAC1D,CACD,UAAW/sD,KAAQyxB,EACfrrC,EAAO4Z,CAAI,EAAI5P,EAAQ4P,CAAI,EAE/B,OAAO5Z,CACV,CACJ,eAAem8C,EAAQjlC,EAAS6T,EAAW,CACpC,EACH,EAAE8xB,EAAoB,CACnB,KAAM,CAAE,SAAAgB,CAAQ,EAAM4oB,GAAY,KAAK,eAAgBtqB,EAAQpxB,CAAQ,EACvE,OAAOp0B,GAASugB,CAAO,EAAIylC,GAAekB,EAAU3mC,EAAS,OAAW2lC,CAAkB,EAAIgB,CACjG,CACL,CACA,SAAS4oB,GAAYG,EAAezqB,EAAQpxB,EAAU,CAClD,IAAI1zB,EAAQuvE,EAAc,IAAIzqB,CAAM,EAC/B9kD,IACDA,EAAQ,IAAI,IACZuvE,EAAc,IAAIzqB,EAAQ9kD,CAAK,GAEnC,MAAMo2B,EAAW1C,EAAS,OAC1B,IAAIrhB,EAASrS,EAAM,IAAIo2B,CAAQ,EAC/B,OAAK/jB,IAEDA,EAAS,CACL,SAFawyC,GAAgBC,EAAQpxB,CAAQ,EAG7C,YAAaA,EAAS,OAAQ1jB,GAAI,CAACA,EAAE,YAAa,EAAC,SAAS,OAAO,CAAC,CAChF,EACQhQ,EAAM,IAAIo2B,EAAU/jB,CAAM,GAEvBA,CACX,CACA,MAAMm9D,GAAe/vE,GAAQH,GAASG,CAAK,GAAK,OAAO,oBAAoBA,CAAK,EAAE,KAAMpB,GAAMc,GAAWM,EAAMpB,CAAG,CAAC,CAAC,EACpH,SAASgxE,GAAYjjE,EAAO4nC,EAAO,CAC/B,KAAM,CAAE,aAAAy7B,EAAe,YAAAlpB,CAAc,EAAGnH,GAAahzC,CAAK,EAC1D,UAAWmW,KAAQyxB,EAAM,CACrB,MAAM07B,EAAaD,EAAaltD,CAAI,EAC9BotD,EAAYppB,EAAYhkC,CAAI,EAC5B9iB,GAASkwE,GAAaD,IAAetjE,EAAMmW,CAAI,EACrD,GAAImtD,IAAevwE,GAAWM,CAAK,GAAK+vE,GAAY/vE,CAAK,IAAMkwE,GAAa7wE,GAAQW,CAAK,EACrF,MAAO,EAEd,CACD,MAAO,EACX,CAEA,IAAIwgB,GAAU,QAEd,MAAM2vD,GAAkB,CACpB,MACA,SACA,OACA,QACA,WACJ,EACA,SAASC,GAAqBjyC,EAAUgf,EAAM,CAC1C,OAAOhf,IAAa,OAASA,IAAa,UAAYgyC,GAAgB,QAAQhyC,CAAQ,IAAM,IAAMgf,IAAS,GAC/G,CACA,SAASkzB,GAAcC,EAAI/kD,EAAI,CAC3B,OAAO,SAAS1oB,EAAGC,EAAG,CAClB,OAAOD,EAAEytE,CAAE,IAAMxtE,EAAEwtE,CAAE,EAAIztE,EAAE0oB,CAAE,EAAIzoB,EAAEyoB,CAAE,EAAI1oB,EAAEytE,CAAE,EAAIxtE,EAAEwtE,CAAE,CAC7D,CACA,CACA,SAASC,GAAqBnwD,EAAS,CACnC,MAAM8gC,EAAQ9gC,EAAQ,MAChBqxC,EAAmBvQ,EAAM,QAAQ,UACvCA,EAAM,cAAc,aAAa,EACjC12C,GAASinD,GAAoBA,EAAiB,WAAY,CACtDrxC,CACH,EAAE8gC,CAAK,CACZ,CACA,SAASsvB,GAAoBpwD,EAAS,CAClC,MAAM8gC,EAAQ9gC,EAAQ,MAChBqxC,EAAmBvQ,EAAM,QAAQ,UACvC12C,GAASinD,GAAoBA,EAAiB,WAAY,CACtDrxC,CACH,EAAE8gC,CAAK,CACZ,CACC,SAASuvB,GAAU3uE,EAAM,CACtB,OAAImoD,GAAiB,GAAI,OAAOnoD,GAAS,SACrCA,EAAO,SAAS,eAAeA,CAAI,EAC5BA,GAAQA,EAAK,SACpBA,EAAOA,EAAK,CAAC,GAEbA,GAAQA,EAAK,SACbA,EAAOA,EAAK,QAETA,CACX,CACA,MAAM4uE,GAAY,CAAA,EACZC,GAAY/xE,GAAM,CACpB,MAAM4iD,EAASivB,GAAU7xE,CAAG,EAC5B,OAAO,OAAO,OAAO8xE,EAAS,EAAE,OAAQ/vE,GAAIA,EAAE,SAAW6gD,CAAM,EAAE,IAAG,CACxE,EACA,SAASovB,GAAgBtvE,EAAKoP,EAAO+b,EAAM,CACvC,MAAMtX,EAAO,OAAO,KAAK7T,CAAG,EAC5B,UAAW1C,KAAOuW,EAAK,CACnB,MAAM07D,EAAS,CAACjyE,EAChB,GAAIiyE,GAAUngE,EAAO,CACjB,MAAM1Q,EAAQsB,EAAI1C,CAAG,EACrB,OAAO0C,EAAI1C,CAAG,GACV6tB,EAAO,GAAKokD,EAASngE,KACrBpP,EAAIuvE,EAASpkD,CAAI,EAAIzsB,EAE5B,CACJ,CACL,CACC,SAAS8wE,GAAmB,EAAGC,EAAWC,EAAaC,EAAS,CAC7D,MAAI,CAACD,GAAe,EAAE,OAAS,WACpB,KAEPC,EACOF,EAEJ,CACX,CACA,SAASG,GAAe9e,EAAOoM,EAAW2S,EAAO,CAC7C,OAAO/e,EAAM,QAAQ,KAAOA,EAAM+e,CAAK,EAAI3S,EAAU2S,CAAK,CAC9D,CACA,SAASC,GAAex0B,EAAM4hB,EAAW,CACrC,KAAM,CAAE,OAAAjhB,EAAS,OAAAC,CAAS,EAAGZ,EAC7B,OAAIW,GAAUC,EACH,CACH,KAAM0zB,GAAe3zB,EAAQihB,EAAW,MAAM,EAC9C,MAAO0S,GAAe3zB,EAAQihB,EAAW,OAAO,EAChD,IAAK0S,GAAe1zB,EAAQghB,EAAW,KAAK,EAC5C,OAAQ0S,GAAe1zB,EAAQghB,EAAW,QAAQ,CAC9D,EAEWA,CACX,CACA,MAAM6S,EAAM,CAOR,OAAO,YAAYr1B,EAAO,CACtB8wB,GAAS,IAAI,GAAG9wB,CAAK,EACrBs1B,IACH,CACD,OAAO,cAAct1B,EAAO,CACxB8wB,GAAS,OAAO,GAAG9wB,CAAK,EACxBs1B,IACH,CACD,YAAYxvE,EAAMyvE,EAAW,CACzB,MAAM1wC,EAAS,KAAK,OAAS,IAAIuuC,GAAOmC,CAAU,EAC5CC,EAAgBf,GAAU3uE,CAAI,EAC9B2vE,EAAgBd,GAASa,CAAa,EAC5C,GAAIC,EACA,MAAM,IAAI,MAAM,4CAA+CA,EAAc,GAAK,kDAA2DA,EAAc,OAAO,GAAK,kBAAmB,EAE9L,MAAMv+D,EAAU2tB,EAAO,eAAeA,EAAO,oBAAqB,KAAK,WAAU,CAAE,EACnF,KAAK,SAAW,IAAKA,EAAO,UAAYuhC,GAAgBoP,CAAa,GACrE,KAAK,SAAS,aAAa3wC,CAAM,EACjC,MAAMzgB,EAAU,KAAK,SAAS,eAAeoxD,EAAet+D,EAAQ,WAAW,EACzEsuC,EAASphC,GAAWA,EAAQ,OAC5BurC,EAASnK,GAAUA,EAAO,OAC1BJ,EAAQI,GAAUA,EAAO,MA6B/B,GA5BA,KAAK,GAAK/wB,KACV,KAAK,IAAMrQ,EACX,KAAK,OAASohC,EACd,KAAK,MAAQJ,EACb,KAAK,OAASuK,EACd,KAAK,SAAWz4C,EAChB,KAAK,aAAe,KAAK,YACzB,KAAK,QAAU,GACf,KAAK,UAAY,GACjB,KAAK,QAAU,OACf,KAAK,MAAQ,GACb,KAAK,wBAA0B,OAC/B,KAAK,UAAY,OACjB,KAAK,QAAU,GACf,KAAK,WAAa,OAClB,KAAK,WAAa,GACjB,KAAK,qBAAuB,OAC7B,KAAK,gBAAkB,GACvB,KAAK,OAAS,GACd,KAAK,SAAW,IAAI85D,GACpB,KAAK,SAAW,GAChB,KAAK,eAAiB,GACtB,KAAK,SAAW,GAChB,KAAK,oBAAsB,OAC3B,KAAK,SAAW,OAChB,KAAK,UAAY3wB,GAAUuG,GAAO,KAAK,OAAOA,CAAI,EAAG1vC,EAAQ,aAAe,CAAC,EAC7E,KAAK,aAAe,GACpBw9D,GAAU,KAAK,EAAE,EAAI,KACjB,CAACtwD,GAAW,CAACohC,EAAQ,CACrB,QAAQ,MAAM,mEAAmE,EACjF,MACH,CACDqP,GAAS,OAAO,KAAM,WAAY0f,EAAoB,EACtD1f,GAAS,OAAO,KAAM,WAAY2f,EAAmB,EACrD,KAAK,YAAW,EACZ,KAAK,UACL,KAAK,OAAM,CAElB,CACD,IAAI,aAAc,CACd,KAAM,CAAE,QAAS,CAAE,YAAAlkB,EAAc,oBAAAolB,CAAmB,EAAM,MAAAtwB,EAAQ,OAAAuK,EAAS,aAAAgmB,CAAe,EAAG,KAC7F,OAAKj8B,GAAc4W,CAAW,EAG1BolB,GAAuBC,EAChBA,EAEJhmB,EAASvK,EAAQuK,EAAS,KALtBW,CAMd,CACD,IAAI,MAAO,CACP,OAAO,KAAK,OAAO,IACtB,CACD,IAAI,KAAKh4C,EAAM,CACX,KAAK,OAAO,KAAOA,CACtB,CACD,IAAI,SAAU,CACV,OAAO,KAAK,QACf,CACD,IAAI,QAAQpB,EAAS,CACjB,KAAK,OAAO,QAAUA,CACzB,CACD,IAAI,UAAW,CACX,OAAO45D,EACV,CACJ,aAAc,CACP,YAAK,cAAc,YAAY,EAC3B,KAAK,QAAQ,WACb,KAAK,OAAM,EAEXrgB,GAAY,KAAM,KAAK,QAAQ,gBAAgB,EAEnD,KAAK,WAAU,EACf,KAAK,cAAc,WAAW,EACvB,IACV,CACD,OAAQ,CACJ,OAAAlL,GAAY,KAAK,OAAQ,KAAK,GAAG,EAC1B,IACV,CACD,MAAO,CACH,OAAAsP,GAAS,KAAK,IAAI,EACX,IACV,CACJ,OAAOzP,EAAOuK,EAAQ,CACVkF,GAAS,QAAQ,IAAI,EAGtB,KAAK,kBAAoB,CACrB,MAAAzP,EACA,OAAAuK,CAChB,EALY,KAAK,QAAQvK,EAAOuK,CAAM,CAOjC,CACD,QAAQvK,EAAOuK,EAAQ,CACnB,MAAMz4C,EAAU,KAAK,QACfsuC,EAAS,KAAK,OACd8K,EAAcp5C,EAAQ,qBAAuB,KAAK,YAClD0+D,EAAU,KAAK,SAAS,eAAepwB,EAAQJ,EAAOuK,EAAQW,CAAW,EACzEulB,EAAW3+D,EAAQ,kBAAoB,KAAK,SAAS,sBACrD0vC,EAAO,KAAK,MAAQ,SAAW,SACrC,KAAK,MAAQgvB,EAAQ,MACrB,KAAK,OAASA,EAAQ,OACtB,KAAK,aAAe,KAAK,YACpBnlB,GAAY,KAAMolB,EAAU,EAAI,IAGrC,KAAK,cAAc,SAAU,CACzB,KAAMD,CAClB,CAAS,EACDpnE,GAAS0I,EAAQ,SAAU,CACvB,KACA0+D,CACH,EAAE,IAAI,EACH,KAAK,UACD,KAAK,UAAUhvB,CAAI,GACnB,KAAK,OAAM,EAGtB,CACD,qBAAsB,CAElB,MAAMkvB,EADU,KAAK,QACS,QAAU,GACxC97B,GAAK87B,EAAe,CAACC,EAAalG,IAAS,CACvCkG,EAAY,GAAKlG,CAC7B,CAAS,CACJ,CACJ,qBAAsB,CACf,MAAM34D,EAAU,KAAK,QACf8+D,EAAY9+D,EAAQ,OACpBohD,EAAS,KAAK,OACdv3C,EAAU,OAAO,KAAKu3C,CAAM,EAAE,OAAO,CAAChzD,EAAKmP,KAC7CnP,EAAImP,CAAE,EAAI,GACHnP,GACR,CAAE,CAAA,EACL,IAAI06C,EAAQ,CAAA,EACRg2B,IACAh2B,EAAQA,EAAM,OAAO,OAAO,KAAKg2B,CAAS,EAAE,IAAKvhE,GAAK,CAClD,MAAMu9D,EAAegE,EAAUvhE,CAAE,EAC3B0sC,EAAO4wB,GAAct9D,EAAIu9D,CAAY,EACrCiE,EAAW90B,IAAS,IACpB0pB,EAAe1pB,IAAS,IAC9B,MAAO,CACH,QAAS6wB,EACT,UAAWiE,EAAW,YAAcpL,EAAe,SAAW,OAC9D,MAAOoL,EAAW,eAAiBpL,EAAe,WAAa,QACnF,CACa,CAAA,CAAC,GAEN7wB,GAAKgG,EAAQl6C,GAAO,CAChB,MAAMksE,EAAelsE,EAAK,QACpB2O,EAAKu9D,EAAa,GAClB7wB,EAAO4wB,GAAct9D,EAAIu9D,CAAY,EACrCkE,EAAYr8B,GAAem4B,EAAa,KAAMlsE,EAAK,KAAK,GAC1DksE,EAAa,WAAa,QAAaoC,GAAqBpC,EAAa,SAAU7wB,CAAI,IAAMizB,GAAqBtuE,EAAK,SAAS,KAChIksE,EAAa,SAAWlsE,EAAK,WAEjCib,EAAQtM,CAAE,EAAI,GACd,IAAI2hD,EAAQ,KACZ,GAAI3hD,KAAM6jD,GAAUA,EAAO7jD,CAAE,EAAE,OAASyhE,EACpC9f,EAAQkC,EAAO7jD,CAAE,MACd,CACH,MAAM0hE,EAAarF,GAAS,SAASoF,CAAS,EAC9C9f,EAAQ,IAAI+f,EAAW,CACnB,GAAA1hE,EACA,KAAMyhE,EACN,IAAK,KAAK,IACV,MAAO,IAC3B,CAAiB,EACD5d,EAAOlC,EAAM,EAAE,EAAIA,CACtB,CACDA,EAAM,KAAK4b,EAAc96D,CAAO,CAC5C,CAAS,EACD8iC,GAAKj5B,EAAS,CAACq1D,EAAY3hE,IAAK,CACvB2hE,GACD,OAAO9d,EAAO7jD,CAAE,CAEhC,CAAS,EACDulC,GAAKse,EAASlC,GAAQ,CAClByL,GAAQ,UAAU,KAAMzL,EAAOA,EAAM,OAAO,EAC5CyL,GAAQ,OAAO,KAAMzL,CAAK,CACtC,CAAS,CACJ,CACJ,iBAAkB,CACX,MAAMM,EAAW,KAAK,UAChByE,EAAU,KAAK,KAAK,SAAS,OAC7BD,EAAUxE,EAAS,OAEzB,GADAA,EAAS,KAAK,CAAC7vD,EAAGC,IAAID,EAAE,MAAQC,EAAE,KAAK,EACnCo0D,EAAUC,EAAS,CACnB,QAAQ,EAAIA,EAAS,EAAID,EAAS,EAAE,EAChC,KAAK,oBAAoB,CAAC,EAE9BxE,EAAS,OAAOyE,EAASD,EAAUC,CAAO,CAC7C,CACD,KAAK,gBAAkBzE,EAAS,MAAM,CAAC,EAAE,KAAK2d,GAAc,QAAS,OAAO,CAAC,CAChF,CACJ,6BAA8B,CACvB,KAAM,CAAE,UAAW3d,EAAW,KAAM,CAAE,SAAA2f,CAAQ,CAAM,EAAG,KACnD3f,EAAS,OAAS2f,EAAS,QAC3B,OAAO,KAAK,QAEhB3f,EAAS,QAAQ,CAAC9V,EAAMzhC,IAAQ,CACxBk3D,EAAS,OAAQ95B,GAAIA,IAAMqE,EAAK,QAAQ,EAAE,SAAW,GACrD,KAAK,oBAAoBzhC,CAAK,CAE9C,CAAS,CACJ,CACD,0BAA2B,CACvB,MAAMm3D,EAAiB,CAAA,EACjBD,EAAW,KAAK,KAAK,SAC3B,IAAInzE,EAAGo3C,EAEP,IADA,KAAK,4BAA2B,EAC5Bp3C,EAAI,EAAGo3C,EAAO+7B,EAAS,OAAQnzE,EAAIo3C,EAAMp3C,IAAI,CAC7C,MAAM81D,EAAUqd,EAASnzE,CAAC,EAC1B,IAAI09C,EAAO,KAAK,eAAe19C,CAAC,EAChC,MAAM6H,EAAOiuD,EAAQ,MAAQ,KAAK,OAAO,KAWzC,GAVIpY,EAAK,MAAQA,EAAK,OAAS71C,IAC3B,KAAK,oBAAoB7H,CAAC,EAC1B09C,EAAO,KAAK,eAAe19C,CAAC,GAEhC09C,EAAK,KAAO71C,EACZ61C,EAAK,UAAYoY,EAAQ,WAAayY,GAAa1mE,EAAM,KAAK,OAAO,EACrE61C,EAAK,MAAQoY,EAAQ,OAAS,EAC9BpY,EAAK,MAAQ19C,EACb09C,EAAK,MAAQ,GAAKoY,EAAQ,MAC1BpY,EAAK,QAAU,KAAK,iBAAiB19C,CAAC,EAClC09C,EAAK,WACLA,EAAK,WAAW,YAAY19C,CAAC,EAC7B09C,EAAK,WAAW,iBACb,CACH,MAAM21B,EAAkBzF,GAAS,cAAc/lE,CAAI,EAC7C,CAAE,mBAAAyrE,EAAqB,gBAAAC,CAAe,EAAM7tC,GAAS,SAAS79B,CAAI,EACxE,OAAO,OAAOwrE,EAAiB,CAC3B,gBAAiBzF,GAAS,WAAW2F,CAAe,EACpD,mBAAoBD,GAAsB1F,GAAS,WAAW0F,CAAkB,CACpG,CAAiB,EACD51B,EAAK,WAAa,IAAI21B,EAAgB,KAAMrzE,CAAC,EAC7CozE,EAAe,KAAK11B,EAAK,UAAU,CACtC,CACJ,CACD,YAAK,gBAAe,EACb01B,CACV,CACJ,gBAAiB,CACVt8B,GAAK,KAAK,KAAK,SAAU,CAACgf,EAAShF,IAAe,CAC9C,KAAK,eAAeA,CAAY,EAAE,WAAW,MAAK,CACrD,EAAE,IAAI,CACV,CACJ,OAAQ,CACD,KAAK,eAAc,EACnB,KAAK,cAAc,OAAO,CAC7B,CACD,OAAOpN,EAAM,CACT,MAAM/hB,EAAS,KAAK,OACpBA,EAAO,OAAM,EACb,MAAM3tB,EAAU,KAAK,SAAW2tB,EAAO,eAAeA,EAAO,kBAAmB,EAAE,KAAK,WAAY,CAAA,EAC7F6xC,EAAgB,KAAK,oBAAsB,CAACx/D,EAAQ,UAK1D,GAJA,KAAK,cAAa,EAClB,KAAK,oBAAmB,EACxB,KAAK,qBAAoB,EACzB,KAAK,SAAS,aACV,KAAK,cAAc,eAAgB,CACnC,KAAA0vC,EACA,WAAY,EACf,CAAA,IAAM,GACH,OAEJ,MAAM0vB,EAAiB,KAAK,2BAC5B,KAAK,cAAc,sBAAsB,EACzC,IAAIzS,EAAa,EACjB,QAAQ3gE,EAAI,EAAGo3C,EAAO,KAAK,KAAK,SAAS,OAAQp3C,EAAIo3C,EAAMp3C,IAAI,CAC3D,KAAM,CAAE,WAAA80D,CAAa,EAAG,KAAK,eAAe90D,CAAC,EACvCuZ,EAAQ,CAACi6D,GAAiBJ,EAAe,QAAQte,CAAU,IAAM,GACvEA,EAAW,sBAAsBv7C,CAAK,EACtConD,EAAa,KAAK,IAAI,CAAC7L,EAAW,eAAc,EAAI6L,CAAU,CACjE,CACDA,EAAa,KAAK,YAAc3sD,EAAQ,OAAO,YAAc2sD,EAAa,EAC1E,KAAK,cAAcA,CAAU,EACxB6S,GACD18B,GAAKs8B,EAAiBte,GAAa,CAC/BA,EAAW,MAAK,CAChC,CAAa,EAEL,KAAK,gBAAgBpR,CAAI,EACzB,KAAK,cAAc,cAAe,CAC9B,KAAAA,CACZ,CAAS,EACD,KAAK,QAAQ,KAAKytB,GAAc,IAAK,MAAM,CAAC,EAC5C,KAAM,CAAE,QAAAsC,EAAU,WAAAC,CAAa,EAAG,KAC9BA,EACA,KAAK,cAAcA,EAAY,EAAI,EAC5BD,EAAQ,QACf,KAAK,mBAAmBA,EAASA,EAAS,EAAI,EAElD,KAAK,OAAM,CACd,CACJ,eAAgB,CACT38B,GAAK,KAAK,OAASoc,GAAQ,CACvByL,GAAQ,UAAU,KAAMzL,CAAK,CACzC,CAAS,EACD,KAAK,oBAAmB,EACxB,KAAK,oBAAmB,CAC3B,CACJ,qBAAsB,CACf,MAAMl/C,EAAU,KAAK,QACf2/D,EAAiB,IAAI,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,EACrDC,EAAY,IAAI,IAAI5/D,EAAQ,MAAM,GACpC,CAACwkC,GAAUm7B,EAAgBC,CAAS,GAAK,CAAC,CAAC,KAAK,uBAAyB5/D,EAAQ,cACjF,KAAK,aAAY,EACjB,KAAK,WAAU,EAEtB,CACJ,sBAAuB,CAChB,KAAM,CAAE,eAAA6/D,CAAiB,EAAG,KACtBC,EAAU,KAAK,uBAAsB,GAAM,CAAA,EACjD,SAAW,CAAE,OAAApoE,EAAS,MAAA8F,EAAQ,MAAAssC,CAAK,IAAOg2B,EAAQ,CAC9C,MAAMvmD,EAAO7hB,IAAW,kBAAoB,CAACoyC,EAAQA,EACrD4zB,GAAgBmC,EAAgBriE,EAAO+b,CAAI,CAC9C,CACJ,CACJ,wBAAyB,CAClB,MAAMwmD,EAAe,KAAK,aAC1B,GAAI,CAACA,GAAgB,CAACA,EAAa,OAC/B,OAEJ,KAAK,aAAe,GACpB,MAAMC,EAAe,KAAK,KAAK,SAAS,OAClCC,EAAWh7C,GAAM,IAAI,IAAI86C,EAAa,OAAQtyE,GAAIA,EAAE,CAAC,IAAMw3B,CAAG,EAAE,IAAI,CAACx3B,EAAGzB,IAAIA,EAAI,IAAMyB,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAC5GyyE,EAAYD,EAAQ,CAAC,EAC3B,QAAQj0E,EAAI,EAAGA,EAAIg0E,EAAch0E,IAC7B,GAAI,CAACw4C,GAAU07B,EAAWD,EAAQj0E,CAAC,CAAC,EAChC,OAGR,OAAO,MAAM,KAAKk0E,CAAS,EAAE,IAAKzyE,GAAIA,EAAE,MAAM,GAAG,CAAC,EAAE,IAAKkC,IAAK,CACtD,OAAQA,EAAE,CAAC,EACX,MAAO,CAACA,EAAE,CAAC,EACX,MAAO,CAACA,EAAE,CAAC,CACd,EAAC,CACT,CACJ,cAAcg9D,EAAY,CACnB,GAAI,KAAK,cAAc,eAAgB,CACnC,WAAY,EACf,CAAA,IAAM,GACH,OAEJhC,GAAQ,OAAO,KAAM,KAAK,MAAO,KAAK,OAAQgC,CAAU,EACxD,MAAMxd,EAAO,KAAK,UACZgxB,EAAShxB,EAAK,OAAS,GAAKA,EAAK,QAAU,EACjD,KAAK,QAAU,GACfrM,GAAK,KAAK,MAAQqV,GAAM,CAChBgoB,GAAUhoB,EAAI,WAAa,cAG3BA,EAAI,WACJA,EAAI,UAAS,EAEjB,KAAK,QAAQ,KAAK,GAAGA,EAAI,QAAS,CAAA,EACrC,EAAE,IAAI,EACP,KAAK,QAAQ,QAAQ,CAACvpD,EAAMqZ,IAAQ,CAChCrZ,EAAK,KAAOqZ,CACxB,CAAS,EACD,KAAK,cAAc,aAAa,CACnC,CACJ,gBAAgBynC,EAAM,CACf,GAAI,KAAK,cAAc,uBAAwB,CAC3C,KAAAA,EACA,WAAY,EACf,CAAA,IAAM,GAGP,SAAQ1jD,EAAI,EAAGo3C,EAAO,KAAK,KAAK,SAAS,OAAQp3C,EAAIo3C,EAAM,EAAEp3C,EACzD,KAAK,eAAeA,CAAC,EAAE,WAAW,UAAS,EAE/C,QAAQA,EAAI,EAAGo3C,EAAO,KAAK,KAAK,SAAS,OAAQp3C,EAAIo3C,EAAM,EAAEp3C,EACzD,KAAK,eAAeA,EAAGQ,GAAWkjD,CAAI,EAAIA,EAAK,CAC3C,aAAc1jD,CAC9B,CAAa,EAAI0jD,CAAI,EAEb,KAAK,cAAc,sBAAuB,CACtC,KAAAA,CACZ,CAAS,EACJ,CACJ,eAAeznC,EAAOynC,EAAM,CACrB,MAAMhG,EAAO,KAAK,eAAezhC,CAAK,EAChCtT,EAAO,CACT,KAAA+0C,EACA,MAAAzhC,EACA,KAAAynC,EACA,WAAY,EACxB,EACY,KAAK,cAAc,sBAAuB/6C,CAAI,IAAM,KAGxD+0C,EAAK,WAAW,QAAQgG,CAAI,EAC5B/6C,EAAK,WAAa,GAClB,KAAK,cAAc,qBAAsBA,CAAI,EAChD,CACD,QAAS,CACD,KAAK,cAAc,eAAgB,CACnC,WAAY,EACf,CAAA,IAAM,KAGHgpD,GAAS,IAAI,IAAI,EACb,KAAK,UAAY,CAACA,GAAS,QAAQ,IAAI,GACvCA,GAAS,MAAM,IAAI,GAGvB,KAAK,KAAI,EACT0f,GAAqB,CACjB,MAAO,IACvB,CAAa,GAER,CACD,MAAO,CACH,IAAIrxE,EACJ,GAAI,KAAK,kBAAmB,CACxB,KAAM,CAAE,MAAAkiD,EAAQ,OAAAuK,GAAY,KAAK,kBACjC,KAAK,QAAQvK,EAAOuK,CAAM,EAC1B,KAAK,kBAAoB,IAC5B,CAKD,GAJA,KAAK,MAAK,EACN,KAAK,OAAS,GAAK,KAAK,QAAU,GAGlC,KAAK,cAAc,aAAc,CACjC,WAAY,EACf,CAAA,IAAM,GACH,OAEJ,MAAM2nB,EAAS,KAAK,QACpB,IAAIp0E,EAAI,EAAGA,EAAIo0E,EAAO,QAAUA,EAAOp0E,CAAC,EAAE,GAAK,EAAG,EAAEA,EAChDo0E,EAAOp0E,CAAC,EAAE,KAAK,KAAK,SAAS,EAGjC,IADA,KAAK,cAAa,EACZA,EAAIo0E,EAAO,OAAQ,EAAEp0E,EACvBo0E,EAAOp0E,CAAC,EAAE,KAAK,KAAK,SAAS,EAEjC,KAAK,cAAc,WAAW,CACjC,CACJ,uBAAuBuzD,EAAe,CAC/B,MAAMC,EAAW,KAAK,gBAChBxpD,EAAS,CAAA,EACf,IAAI,EAAGotC,EACP,IAAI,EAAI,EAAGA,EAAOoc,EAAS,OAAQ,EAAIpc,EAAM,EAAE,EAAE,CAC7C,MAAMsG,EAAO8V,EAAS,CAAC,GACnB,CAACD,GAAiB7V,EAAK,UACvB1zC,EAAO,KAAK0zC,CAAI,CAEvB,CACD,OAAO1zC,CACV,CACJ,8BAA+B,CACxB,OAAO,KAAK,uBAAuB,EAAI,CAC1C,CACJ,eAAgB,CACT,GAAI,KAAK,cAAc,qBAAsB,CACzC,WAAY,EACf,CAAA,IAAM,GACH,OAEJ,MAAMwpD,EAAW,KAAK,+BACtB,QAAQxzD,EAAIwzD,EAAS,OAAS,EAAGxzD,GAAK,EAAG,EAAEA,EACvC,KAAK,aAAawzD,EAASxzD,CAAC,CAAC,EAEjC,KAAK,cAAc,mBAAmB,CACzC,CACJ,aAAa09C,EAAM,CACZ,MAAMppC,EAAM,KAAK,IACX+/D,EAAO32B,EAAK,MACZ42B,EAAU,CAACD,EAAK,SAChBlxB,EAAO+uB,GAAex0B,EAAM,KAAK,SAAS,EAC1C/0C,EAAO,CACT,KAAA+0C,EACA,MAAOA,EAAK,MACZ,WAAY,EACxB,EACY,KAAK,cAAc,oBAAqB/0C,CAAI,IAAM,KAGlD2rE,GACAjxB,GAAS/uC,EAAK,CACV,KAAM+/D,EAAK,OAAS,GAAQ,EAAIlxB,EAAK,KAAOkxB,EAAK,KACjD,MAAOA,EAAK,QAAU,GAAQ,KAAK,MAAQlxB,EAAK,MAAQkxB,EAAK,MAC7D,IAAKA,EAAK,MAAQ,GAAQ,EAAIlxB,EAAK,IAAMkxB,EAAK,IAC9C,OAAQA,EAAK,SAAW,GAAQ,KAAK,OAASlxB,EAAK,OAASkxB,EAAK,MACjF,CAAa,EAEL32B,EAAK,WAAW,OACZ42B,GACAhxB,GAAWhvC,CAAG,EAElB3L,EAAK,WAAa,GAClB,KAAK,cAAc,mBAAoBA,CAAI,EAC9C,CACJ,cAAcu6C,EAAO,CACd,OAAOD,GAAeC,EAAO,KAAK,UAAW,KAAK,WAAW,CAChE,CACD,0BAA0B7wB,EAAGqxB,EAAM1vC,EAASmpD,EAAkB,CAC1D,MAAMzxD,EAASuyD,GAAY,MAAMva,CAAI,EACrC,OAAI,OAAOh4C,GAAW,WACXA,EAAO,KAAM2mB,EAAGre,EAASmpD,CAAgB,EAE7C,EACV,CACD,eAAerM,EAAc,CACzB,MAAMgF,EAAU,KAAK,KAAK,SAAShF,CAAY,EACzC0C,EAAW,KAAK,UACtB,IAAI9V,EAAO8V,EAAS,OAAQna,GAAIA,GAAKA,EAAE,WAAayc,CAAO,EAAE,IAAG,EAChE,OAAKpY,IACDA,EAAO,CACH,KAAM,KACN,KAAM,CAAE,EACR,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,QAAS,KACT,QAAS,KACT,MAAOoY,GAAWA,EAAQ,OAAS,EACnC,MAAOhF,EACP,SAAUgF,EACV,QAAS,CAAE,EACX,QAAS,EACzB,EACYtC,EAAS,KAAK9V,CAAI,GAEfA,CACV,CACD,YAAa,CACT,OAAO,KAAK,WAAa,KAAK,SAAWsI,GAAc,KAAM,CACzD,MAAO,KACP,KAAM,OACT,CAAA,EACJ,CACD,wBAAyB,CACrB,OAAO,KAAK,6BAA8B,EAAC,MAC9C,CACD,iBAAiB8K,EAAc,CAC3B,MAAMgF,EAAU,KAAK,KAAK,SAAShF,CAAY,EAC/C,GAAI,CAACgF,EACD,MAAO,GAEX,MAAMpY,EAAO,KAAK,eAAeoT,CAAY,EAC7C,OAAO,OAAOpT,EAAK,QAAW,UAAY,CAACA,EAAK,OAAS,CAACoY,EAAQ,MACrE,CACD,qBAAqBhF,EAAcyjB,EAAS,CACxC,MAAM72B,EAAO,KAAK,eAAeoT,CAAY,EAC7CpT,EAAK,OAAS,CAAC62B,CAClB,CACD,qBAAqBt4D,EAAO,CACxB,KAAK,eAAeA,CAAK,EAAI,CAAC,KAAK,eAAeA,CAAK,CAC1D,CACD,kBAAkBA,EAAO,CACrB,MAAO,CAAC,KAAK,eAAeA,CAAK,CACpC,CACJ,kBAAkB60C,EAAcgK,EAAWyZ,EAAS,CAC7C,MAAM7wB,EAAO6wB,EAAU,OAAS,OAC1B72B,EAAO,KAAK,eAAeoT,CAAY,EACvCK,EAAQzT,EAAK,WAAW,mBAAmB,OAAWgG,CAAI,EAC5DnL,GAAQuiB,CAAS,GACjBpd,EAAK,KAAKod,CAAS,EAAE,OAAS,CAACyZ,EAC/B,KAAK,OAAM,IAEX,KAAK,qBAAqBzjB,EAAcyjB,CAAO,EAC/CpjB,EAAM,OAAOzT,EAAM,CACf,QAAA62B,CAChB,CAAa,EACD,KAAK,OAAQjgE,GAAMA,EAAI,eAAiBw8C,EAAepN,EAAO,MAAS,EAE9E,CACD,KAAKoN,EAAcgK,EAAW,CAC1B,KAAK,kBAAkBhK,EAAcgK,EAAW,EAAK,CACxD,CACD,KAAKhK,EAAcgK,EAAW,CAC1B,KAAK,kBAAkBhK,EAAcgK,EAAW,EAAI,CACvD,CACJ,oBAAoBhK,EAAc,CAC3B,MAAMpT,EAAO,KAAK,UAAUoT,CAAY,EACpCpT,GAAQA,EAAK,YACbA,EAAK,WAAW,WAEpB,OAAO,KAAK,UAAUoT,CAAY,CACrC,CACD,OAAQ,CACJ,IAAI9wD,EAAGo3C,EAGP,IAFA,KAAK,KAAI,EACTua,GAAS,OAAO,IAAI,EAChB3xD,EAAI,EAAGo3C,EAAO,KAAK,KAAK,SAAS,OAAQp3C,EAAIo3C,EAAM,EAAEp3C,EACrD,KAAK,oBAAoBA,CAAC,CAEjC,CACD,SAAU,CACN,KAAK,cAAc,eAAe,EAClC,KAAM,CAAE,OAAAsiD,EAAS,IAAAhuC,CAAM,EAAG,KAC1B,KAAK,MAAK,EACV,KAAK,OAAO,aACRguC,IACA,KAAK,aAAY,EACjBD,GAAYC,EAAQhuC,CAAG,EACvB,KAAK,SAAS,eAAeA,CAAG,EAChC,KAAK,OAAS,KACd,KAAK,IAAM,MAEf,OAAOk9D,GAAU,KAAK,EAAE,EACxB,KAAK,cAAc,cAAc,CACpC,CACD,iBAAiB7oE,EAAM,CACnB,OAAO,KAAK,OAAO,UAAU,GAAGA,CAAI,CACvC,CACJ,YAAa,CACN,KAAK,eAAc,EACf,KAAK,QAAQ,WACb,KAAK,qBAAoB,EAEzB,KAAK,SAAW,EAEvB,CACJ,gBAAiB,CACV,MAAMi0C,EAAY,KAAK,WACjB7X,EAAW,KAAK,SAChByvC,EAAO,CAAC3sE,EAAM4jC,IAAW,CAC3B1G,EAAS,iBAAiB,KAAMl9B,EAAM4jC,CAAQ,EAC9CmR,EAAU/0C,CAAI,EAAI4jC,CAC9B,EACcA,EAAW,CAACpZ,EAAGgnB,EAAGC,IAAI,CACxBjnB,EAAE,QAAUgnB,EACZhnB,EAAE,QAAUinB,EACZ,KAAK,cAAcjnB,CAAC,CAChC,EACQykB,GAAK,KAAK,QAAQ,OAASjvC,GAAO2sE,EAAK3sE,EAAM4jC,CAAQ,CAAC,CACzD,CACJ,sBAAuB,CACX,KAAK,uBACN,KAAK,qBAAuB,IAEhC,MAAMmR,EAAY,KAAK,qBACjB7X,EAAW,KAAK,SAChByvC,EAAO,CAAC3sE,EAAM4jC,IAAW,CAC3B1G,EAAS,iBAAiB,KAAMl9B,EAAM4jC,CAAQ,EAC9CmR,EAAU/0C,CAAI,EAAI4jC,CAC9B,EACcgpC,EAAU,CAAC5sE,EAAM4jC,IAAW,CAC1BmR,EAAU/0C,CAAI,IACdk9B,EAAS,oBAAoB,KAAMl9B,EAAM4jC,CAAQ,EACjD,OAAOmR,EAAU/0C,CAAI,EAErC,EACc4jC,EAAW,CAACyW,EAAOuK,IAAS,CAC1B,KAAK,QACL,KAAK,OAAOvK,EAAOuK,CAAM,CAEzC,EACQ,IAAI1nD,EACJ,MAAM2vE,EAAW,IAAI,CACjBD,EAAQ,SAAUC,CAAQ,EAC1B,KAAK,SAAW,GAChB,KAAK,OAAM,EACXF,EAAK,SAAU/oC,CAAQ,EACvB+oC,EAAK,SAAUzvE,CAAQ,CACnC,EACQA,EAAW,IAAI,CACX,KAAK,SAAW,GAChB0vE,EAAQ,SAAUhpC,CAAQ,EAC1B,KAAK,MAAK,EACV,KAAK,QAAQ,EAAG,CAAC,EACjB+oC,EAAK,SAAUE,CAAQ,CACnC,EACY3vC,EAAS,WAAW,KAAK,MAAM,EAC/B2vC,IAEA3vE,GAEP,CACJ,cAAe,CACR+xC,GAAK,KAAK,WAAY,CAACrL,EAAU5jC,IAAO,CACpC,KAAK,SAAS,oBAAoB,KAAMA,EAAM4jC,CAAQ,CAClE,CAAS,EACD,KAAK,WAAa,GAClBqL,GAAK,KAAK,qBAAsB,CAACrL,EAAU5jC,IAAO,CAC9C,KAAK,SAAS,oBAAoB,KAAMA,EAAM4jC,CAAQ,CAClE,CAAS,EACD,KAAK,qBAAuB,MAC/B,CACD,iBAAiBqR,EAAO4G,EAAMixB,EAAS,CACnC,MAAMxtB,EAASwtB,EAAU,MAAQ,SACjC,IAAIj3B,EAAM96C,EAAM5C,EAAGo3C,EAKnB,IAJIsM,IAAS,YACThG,EAAO,KAAK,eAAeZ,EAAM,CAAC,EAAE,YAAY,EAChDY,EAAK,WAAW,IAAMyJ,EAAS,mBAAmB,EAAC,GAEnDnnD,EAAI,EAAGo3C,EAAO0F,EAAM,OAAQ98C,EAAIo3C,EAAM,EAAEp3C,EAAE,CAC1C4C,EAAOk6C,EAAM98C,CAAC,EACd,MAAM80D,EAAalyD,GAAQ,KAAK,eAAeA,EAAK,YAAY,EAAE,WAC9DkyD,GACAA,EAAW3N,EAAS,YAAY,EAAEvkD,EAAK,QAASA,EAAK,aAAcA,EAAK,KAAK,CAEpF,CACJ,CACJ,mBAAoB,CACb,OAAO,KAAK,SAAW,EAC1B,CACJ,kBAAkBgyE,EAAgB,CAC3B,MAAMC,EAAa,KAAK,SAAW,GAC7Brd,EAASod,EAAe,IAAI,CAAC,CAAE,aAAA9jB,EAAe,MAAA70C,KAAW,CAC3D,MAAMyhC,EAAO,KAAK,eAAeoT,CAAY,EAC7C,GAAI,CAACpT,EACD,MAAM,IAAI,MAAM,6BAA+BoT,CAAY,EAE/D,MAAO,CACH,aAAAA,EACA,QAASpT,EAAK,KAAKzhC,CAAK,EACxB,MAAAA,CAChB,CACA,CAAS,EACe,CAACg7B,GAAeugB,EAAQqd,CAAU,IAE9C,KAAK,QAAUrd,EACf,KAAK,WAAa,KAClB,KAAK,mBAAmBA,EAAQqd,CAAU,EAEjD,CACJ,cAAcx6D,EAAM1R,EAAMk2B,EAAQ,CAC3B,OAAO,KAAK,SAAS,OAAO,KAAMxkB,EAAM1R,EAAMk2B,CAAM,CACvD,CACJ,gBAAgBi2C,EAAU,CACnB,OAAO,KAAK,SAAS,OAAO,OAAQzjE,GAAIA,EAAE,OAAO,KAAOyjE,CAAQ,EAAE,SAAW,CAChF,CACJ,mBAAmBtd,EAAQqd,EAAYE,EAAQ,CACxC,MAAMC,EAAe,KAAK,QAAQ,MAC5BtiE,EAAO,CAAC/O,EAAGC,IAAID,EAAE,OAAQ01C,GAAI,CAACz1C,EAAE,KAAM01C,GAAID,EAAE,eAAiBC,EAAE,cAAgBD,EAAE,QAAUC,EAAE,KAAK,CAAC,EACnGv7B,EAAcrL,EAAKmiE,EAAYrd,CAAM,EACrC15C,EAAYi3D,EAASvd,EAAS9kD,EAAK8kD,EAAQqd,CAAU,EACvD92D,EAAY,QACZ,KAAK,iBAAiBA,EAAai3D,EAAa,KAAM,EAAK,EAE3Dl3D,EAAU,QAAUk3D,EAAa,MACjC,KAAK,iBAAiBl3D,EAAWk3D,EAAa,KAAM,EAAI,CAE/D,CACJ,cAAc3iD,EAAG0iD,EAAQ,CAClB,MAAMpsE,EAAO,CACT,MAAO0pB,EACP,OAAA0iD,EACA,WAAY,GACZ,YAAa,KAAK,cAAc1iD,CAAC,CAC7C,EACc4iD,EAAe1zD,IAAUA,EAAO,QAAQ,QAAU,KAAK,QAAQ,QAAQ,SAAS8Q,EAAE,OAAO,IAAI,EACnG,GAAI,KAAK,cAAc,cAAe1pB,EAAMssE,CAAW,IAAM,GACzD,OAEJ,MAAMx2B,EAAU,KAAK,aAAapsB,EAAG0iD,EAAQpsE,EAAK,WAAW,EAC7D,OAAAA,EAAK,WAAa,GAClB,KAAK,cAAc,aAAcA,EAAMssE,CAAW,GAC9Cx2B,GAAW91C,EAAK,UAChB,KAAK,OAAM,EAER,IACV,CACJ,aAAa0pB,EAAG0iD,EAAQjD,EAAa,CAC9B,KAAM,CAAE,QAAS+C,EAAa,CAAE,EAAG,QAAA7gE,CAAO,EAAM,KAC1CmpD,EAAmB4X,EACnBvd,EAAS,KAAK,mBAAmBnlC,EAAGwiD,EAAY/C,EAAa3U,CAAgB,EAC7E4U,EAAUt5B,GAAcpmB,CAAC,EACzBw/C,EAAYD,GAAmBv/C,EAAG,KAAK,WAAYy/C,EAAaC,CAAO,EACzED,IACA,KAAK,WAAa,KAClBxmE,GAAS0I,EAAQ,QAAS,CACtBqe,EACAmlC,EACA,IACH,EAAE,IAAI,EACHua,GACAzmE,GAAS0I,EAAQ,QAAS,CACtBqe,EACAmlC,EACA,IACH,EAAE,IAAI,GAGf,MAAM/Y,EAAU,CAACxH,GAAeugB,EAAQqd,CAAU,EAClD,OAAIp2B,GAAWs2B,KACX,KAAK,QAAUvd,EACf,KAAK,mBAAmBA,EAAQqd,EAAYE,CAAM,GAEtD,KAAK,WAAalD,EACXpzB,CACV,CACJ,mBAAmBpsB,EAAGwiD,EAAY/C,EAAa3U,EAAkB,CAC1D,GAAI9qC,EAAE,OAAS,WACX,MAAO,GAEX,GAAI,CAACy/C,EACD,OAAO+C,EAEX,MAAMG,EAAe,KAAK,QAAQ,MAClC,OAAO,KAAK,0BAA0B3iD,EAAG2iD,EAAa,KAAMA,EAAc7X,CAAgB,CAC7F,CACL,CAzzBI/E,GADE+Z,GACK,WAAWzsC,IAClB0yB,GAFE+Z,GAEK,YAAYX,IACnBpZ,GAHE+Z,GAGK,YAAY7xB,IACnB8X,GAJE+Z,GAIK,WAAWvE,IAClBxV,GALE+Z,GAKK,UAAU7wD,IACjB82C,GANE+Z,GAMK,WAAWV,IAqzBtB,SAASW,IAAoB,CACzB,OAAOt7B,GAAKq7B,GAAM,UAAYnwB,GAAQA,EAAM,SAAS,WAAU,CAAE,CACrE,CAiTA,SAASttB,GAASpgB,EAAKN,EAASoc,EAAQpc,EAAS,CAC7CM,EAAI,QAAUqiC,GAAevmB,EAAM,eAAgBpc,EAAQ,cAAc,EACzEM,EAAI,YAAYqiC,GAAevmB,EAAM,WAAYpc,EAAQ,UAAU,CAAC,EACpEM,EAAI,eAAiBqiC,GAAevmB,EAAM,iBAAkBpc,EAAQ,gBAAgB,EACpFM,EAAI,SAAWqiC,GAAevmB,EAAM,gBAAiBpc,EAAQ,eAAe,EAC5EM,EAAI,UAAYqiC,GAAevmB,EAAM,YAAapc,EAAQ,WAAW,EACrEM,EAAI,YAAcqiC,GAAevmB,EAAM,YAAapc,EAAQ,WAAW,CAC3E,CACA,SAASkhE,GAAO5gE,EAAKkvC,EAAU57C,EAAQ,CACnC0M,EAAI,OAAO1M,EAAO,EAAGA,EAAO,CAAC,CACjC,CACC,SAASutE,GAAcnhE,EAAS,CAC7B,OAAIA,EAAQ,QACDuvC,GAEPvvC,EAAQ,SAAWA,EAAQ,yBAA2B,WAC/C4vC,GAEJsxB,EACX,CACA,SAASE,GAASz3B,EAAQwR,EAAS3rB,EAAS,CAAA,EAAI,CAC5C,MAAMsa,EAAQH,EAAO,OACf,CAAE,MAAO03B,EAAc,EAAI,IAAKC,EAAYx3B,EAAQ,CAAI,EAAGta,EAC3D,CAAE,MAAO+xC,EAAe,IAAKC,CAAU,EAAMrmB,EAC7C39C,EAAQ,KAAK,IAAI6jE,EAAaE,CAAY,EAC1C9jE,EAAM,KAAK,IAAI6jE,EAAWE,CAAU,EACpCC,EAAUJ,EAAcE,GAAgBD,EAAYC,GAAgBF,EAAcG,GAAcF,EAAYE,EAClH,MAAO,CACH,MAAA13B,EACA,MAAAtsC,EACA,KAAM29C,EAAQ,KACd,KAAM19C,EAAMD,GAAS,CAACikE,EAAU33B,EAAQrsC,EAAMD,EAAQC,EAAMD,CACpE,CACA,CACC,SAASkkE,GAAYphE,EAAKmyB,EAAM0oB,EAAS3rB,EAAQ,CAC9C,KAAM,CAAE,OAAAma,EAAS,QAAA3pC,CAAU,EAAGyyB,EACxB,CAAE,MAAAqX,EAAQ,MAAAtsC,EAAQ,KAAAq5C,EAAO,KAAAzT,GAAUg+B,GAASz3B,EAAQwR,EAAS3rB,CAAM,EACnEmyC,EAAaR,GAAcnhE,CAAO,EACxC,GAAI,CAAE,KAAAuZ,EAAM,GAAO,QAAAypB,CAAO,EAAMxT,GAAU,CAAA,EACtCxjC,EAAGkjD,EAAO9uC,EACd,IAAIpU,EAAI,EAAGA,GAAKo3C,EAAM,EAAEp3C,EACpBkjD,EAAQvF,GAAQnsC,GAASwlC,EAAUI,EAAOp3C,EAAIA,IAAM89C,CAAK,EACrD,CAAAoF,EAAM,OAEC31B,GACPjZ,EAAI,OAAO4uC,EAAM,EAAGA,EAAM,CAAC,EAC3B31B,EAAO,IAEPooD,EAAWrhE,EAAKF,EAAM8uC,EAAOlM,EAAShjC,EAAQ,OAAO,EAEzDI,EAAO8uC,GAEX,OAAI2H,IACA3H,EAAQvF,GAAQnsC,GAASwlC,EAAUI,EAAO,IAAM0G,CAAK,EACrD63B,EAAWrhE,EAAKF,EAAM8uC,EAAOlM,EAAShjC,EAAQ,OAAO,GAElD,CAAC,CAAC62C,CACb,CACC,SAAS+qB,GAAgBthE,EAAKmyB,EAAM0oB,EAAS3rB,EAAQ,CAClD,MAAMma,EAASlX,EAAK,OACd,CAAE,MAAAqX,EAAQ,MAAAtsC,EAAQ,KAAA4lC,CAAI,EAAMg+B,GAASz3B,EAAQwR,EAAS3rB,CAAM,EAC5D,CAAE,KAAAjW,EAAM,GAAO,QAAAypB,CAAO,EAAMxT,GAAU,CAAA,EAC5C,IAAIqyC,EAAO,EACPC,EAAS,EACT91E,EAAGkjD,EAAO6yB,EAAOC,EAAMC,EAAMC,EACjC,MAAMC,EAAcl6D,IAASzK,GAASwlC,EAAUI,EAAOn7B,EAAQA,IAAU6hC,EACnEs4B,EAAQ,IAAI,CACVJ,IAASC,IACT3hE,EAAI,OAAOuhE,EAAMI,CAAI,EACrB3hE,EAAI,OAAOuhE,EAAMG,CAAI,EACrB1hE,EAAI,OAAOuhE,EAAMK,CAAK,EAElC,EAKI,IAJI3oD,IACA21B,EAAQvF,EAAOw4B,EAAW,CAAC,CAAC,EAC5B7hE,EAAI,OAAO4uC,EAAM,EAAGA,EAAM,CAAC,GAE3BljD,EAAI,EAAGA,GAAKo3C,EAAM,EAAEp3C,EAAE,CAEtB,GADAkjD,EAAQvF,EAAOw4B,EAAWn2E,CAAC,CAAC,EACxBkjD,EAAM,KACN,SAEJ,MAAM7J,EAAI6J,EAAM,EACV5J,EAAI4J,EAAM,EACVmzB,EAASh9B,EAAI,EACfg9B,IAAWN,GACPz8B,EAAI08B,EACJA,EAAO18B,EACAA,EAAI28B,IACXA,EAAO38B,GAEXu8B,GAAQC,EAASD,EAAOx8B,GAAK,EAAEy8B,IAE/BM,IACA9hE,EAAI,OAAO+kC,EAAGC,CAAC,EACfy8B,EAAQM,EACRP,EAAS,EACTE,EAAOC,EAAO38B,GAElB48B,EAAQ58B,CACX,CACD88B,GACJ,CACC,SAASE,GAAkB7vC,EAAM,CAC9B,MAAMsI,EAAOtI,EAAK,QACZukC,EAAaj8B,EAAK,YAAcA,EAAK,WAAW,OAEtD,MADoB,CAACtI,EAAK,YAAc,CAACA,EAAK,OAAS,CAACsI,EAAK,SAAWA,EAAK,yBAA2B,YAAc,CAACA,EAAK,SAAW,CAACi8B,EACnH4K,GAAkBF,EAC3C,CACC,SAASa,GAAwBviE,EAAS,CACvC,OAAIA,EAAQ,QACDi6C,GAEPj6C,EAAQ,SAAWA,EAAQ,yBAA2B,WAC/Ck6C,GAEJF,EACX,CACA,SAASwoB,GAAoBliE,EAAKmyB,EAAMj1B,EAAOssC,EAAO,CAClD,IAAIrkC,EAAOgtB,EAAK,MACXhtB,IACDA,EAAOgtB,EAAK,MAAQ,IAAI,OACpBA,EAAK,KAAKhtB,EAAMjI,EAAOssC,CAAK,GAC5BrkC,EAAK,UAAS,GAGtBib,GAASpgB,EAAKmyB,EAAK,OAAO,EAC1BnyB,EAAI,OAAOmF,CAAI,CACnB,CACA,SAASg9D,GAAiBniE,EAAKmyB,EAAMj1B,EAAOssC,EAAO,CAC/C,KAAM,CAAE,SAAApkC,EAAW,QAAA1F,CAAU,EAAGyyB,EAC1BiwC,EAAgBJ,GAAkB7vC,CAAI,EAC5C,UAAW0oB,KAAWz1C,EAClBgb,GAASpgB,EAAKN,EAASm7C,EAAQ,KAAK,EACpC76C,EAAI,UAAS,EACToiE,EAAcpiE,EAAKmyB,EAAM0oB,EAAS,CAClC,MAAA39C,EACA,IAAKA,EAAQssC,EAAQ,CACjC,CAAS,GACGxpC,EAAI,UAAS,EAEjBA,EAAI,OAAM,CAElB,CACA,MAAMqiE,GAAY,OAAO,QAAW,WACpC,SAASnlB,GAAKl9C,EAAKmyB,EAAMj1B,EAAOssC,EAAO,CAC/B64B,IAAa,CAAClwC,EAAK,QAAQ,QAC3B+vC,GAAoBliE,EAAKmyB,EAAMj1B,EAAOssC,CAAK,EAE3C24B,GAAiBniE,EAAKmyB,EAAMj1B,EAAOssC,CAAK,CAEhD,CACA,MAAM84B,WAAoBvQ,EAAQ,CAuB9B,YAAYpU,EAAI,CACZ,QACA,KAAK,SAAW,GAChB,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,UAAY,OACjB,KAAK,MAAQ,OACb,KAAK,QAAU,OACf,KAAK,UAAY,OACjB,KAAK,WAAa,GAClB,KAAK,eAAiB,GACtB,KAAK,cAAgB,OACjBA,GACA,OAAO,OAAO,KAAMA,CAAG,CAE9B,CACD,oBAAoBqN,EAAW5W,EAAW,CACtC,MAAM10C,EAAU,KAAK,QACrB,IAAKA,EAAQ,SAAWA,EAAQ,yBAA2B,aAAe,CAACA,EAAQ,SAAW,CAAC,KAAK,eAAgB,CAChH,MAAM62C,EAAO72C,EAAQ,SAAW,KAAK,MAAQ,KAAK,UAClD42C,GAA2B,KAAK,QAAS52C,EAASsrD,EAAWzU,EAAMnC,CAAS,EAC5E,KAAK,eAAiB,EACzB,CACJ,CACD,IAAI,OAAO/K,EAAQ,CACf,KAAK,QAAUA,EACf,OAAO,KAAK,UACZ,OAAO,KAAK,MACZ,KAAK,eAAiB,EACzB,CACD,IAAI,QAAS,CACT,OAAO,KAAK,OACf,CACD,IAAI,UAAW,CACX,OAAO,KAAK,YAAc,KAAK,UAAY2S,GAAiB,KAAM,KAAK,QAAQ,OAAO,EACzF,CACJ,OAAQ,CACD,MAAM52C,EAAW,KAAK,SAChBikC,EAAS,KAAK,OACpB,OAAOjkC,EAAS,QAAUikC,EAAOjkC,EAAS,CAAC,EAAE,KAAK,CACrD,CACJ,MAAO,CACA,MAAMA,EAAW,KAAK,SAChBikC,EAAS,KAAK,OACdG,EAAQpkC,EAAS,OACvB,OAAOokC,GAASH,EAAOjkC,EAASokC,EAAQ,CAAC,EAAE,GAAG,CACjD,CACJ,YAAYoF,EAAO/I,EAAU,CACtB,MAAMnmC,EAAU,KAAK,QACflT,EAAQoiD,EAAM/I,CAAQ,EACtBwD,EAAS,KAAK,OACdjkC,EAAWu2C,GAAe,KAAM,CAClC,SAAA9V,EACA,MAAOr5C,EACP,IAAKA,CACjB,CAAS,EACD,GAAI,CAAC4Y,EAAS,OACV,OAEJ,MAAM1P,EAAS,CAAA,EACT6sE,EAAeN,GAAwBviE,CAAO,EACpD,IAAIhU,EAAGo3C,EACP,IAAIp3C,EAAI,EAAGo3C,EAAO19B,EAAS,OAAQ1Z,EAAIo3C,EAAM,EAAEp3C,EAAE,CAC7C,KAAM,CAAE,MAAAwR,EAAQ,IAAAC,CAAM,EAAGiI,EAAS1Z,CAAC,EAC7B8/B,EAAK6d,EAAOnsC,CAAK,EACjBuuB,EAAK4d,EAAOlsC,CAAG,EACrB,GAAIquB,IAAOC,EAAI,CACX/1B,EAAO,KAAK81B,CAAE,EACd,QACH,CACD,MAAM1b,EAAI,KAAK,KAAKtjB,EAAQg/B,EAAGqa,CAAQ,IAAMpa,EAAGoa,CAAQ,EAAIra,EAAGqa,CAAQ,EAAE,EACnE28B,EAAeD,EAAa/2C,EAAIC,EAAI3b,EAAGpQ,EAAQ,OAAO,EAC5D8iE,EAAa38B,CAAQ,EAAI+I,EAAM/I,CAAQ,EACvCnwC,EAAO,KAAK8sE,CAAY,CAC3B,CACD,OAAO9sE,EAAO,SAAW,EAAIA,EAAO,CAAC,EAAIA,CAC5C,CACJ,YAAYsK,EAAK66C,EAAS3rB,EAAQ,CAE3B,OADsB8yC,GAAkB,IAAI,EACvBhiE,EAAK,KAAM66C,EAAS3rB,CAAM,CAClD,CACJ,KAAKlvB,EAAK9C,EAAOssC,EAAO,CACjB,MAAMpkC,EAAW,KAAK,SAChBg9D,EAAgBJ,GAAkB,IAAI,EAC5C,IAAIzrB,EAAO,KAAK,MAChBr5C,EAAQA,GAAS,EACjBssC,EAAQA,GAAS,KAAK,OAAO,OAAStsC,EACtC,UAAW29C,KAAWz1C,EAClBmxC,GAAQ6rB,EAAcpiE,EAAK,KAAM66C,EAAS,CACtC,MAAA39C,EACA,IAAKA,EAAQssC,EAAQ,CACrC,CAAa,EAEL,MAAO,CAAC,CAAC+M,CACZ,CACJ,KAAKv2C,EAAKgrD,EAAW9tD,EAAOssC,EAAO,CAC5B,MAAM9pC,EAAU,KAAK,SAAW,IACjB,KAAK,QAAU,IACnB,QAAUA,EAAQ,cACzBM,EAAI,KAAI,EACRk9C,GAAKl9C,EAAK,KAAM9C,EAAOssC,CAAK,EAC5BxpC,EAAI,QAAO,GAEX,KAAK,WACL,KAAK,eAAiB,GACtB,KAAK,MAAQ,OAEpB,CACL,CAnII8jD,GADEwe,GACK,KAAK,QACfxe,GAFKwe,GAEE,WAAW,CACX,eAAgB,OAChB,WAAY,CAAE,EACd,iBAAkB,EAClB,gBAAiB,QACjB,YAAa,EACb,gBAAiB,GACjB,uBAAwB,UACxB,KAAM,GACN,SAAU,GACV,QAAS,GACT,QAAS,CACjB,GACCxe,GAfKwe,GAeE,gBAAgB,CAChB,gBAAiB,kBACjB,YAAa,aACrB,GACIxe,GAnBEwe,GAmBK,cAAc,CACjB,YAAa,GACb,WAAatzE,GAAOA,IAAS,cAAgBA,IAAS,MAC9D,GAgHA,SAASyzE,GAAUh3E,EAAI8rD,EAAK5N,EAAMkf,EAAkB,CAChD,MAAMnpD,EAAUjU,EAAG,QACb,CAAE,CAACk+C,CAAI,EAAGn9C,CAAK,EAAMf,EAAG,SAAS,CACnCk+C,CACH,EAAEkf,CAAgB,EACnB,OAAO,KAAK,IAAItR,EAAM/qD,CAAK,EAAIkT,EAAQ,OAASA,EAAQ,SAC5D,CACA,MAAMgjE,WAAqB3Q,EAAQ,CAsB/B,YAAYpU,EAAI,CACZ,QArBJmG,GAAA,eACAA,GAAA,aACAA,GAAA,aAoBI,KAAK,QAAU,OACf,KAAK,OAAS,OACd,KAAK,KAAO,OACZ,KAAK,KAAO,OACRnG,GACA,OAAO,OAAO,KAAMA,CAAG,CAE9B,CACD,QAAQglB,EAAQC,EAAQ/Z,EAAkB,CACtC,MAAMnpD,EAAU,KAAK,QACf,CAAE,EAAAqlC,EAAI,EAAAC,GAAO,KAAK,SAAS,CAC7B,IACA,GACH,EAAE6jB,CAAgB,EACnB,OAAO,KAAK,IAAI8Z,EAAS59B,EAAG,CAAC,EAAI,KAAK,IAAI69B,EAAS59B,EAAG,CAAC,EAAI,KAAK,IAAItlC,EAAQ,UAAYA,EAAQ,OAAQ,CAAC,CAC5G,CACD,SAASijE,EAAQ9Z,EAAkB,CAC/B,OAAO4Z,GAAU,KAAME,EAAQ,IAAK9Z,CAAgB,CACvD,CACD,SAAS+Z,EAAQ/Z,EAAkB,CAC/B,OAAO4Z,GAAU,KAAMG,EAAQ,IAAK/Z,CAAgB,CACvD,CACD,eAAeA,EAAkB,CAC7B,KAAM,CAAE,EAAA9jB,EAAI,EAAAC,GAAO,KAAK,SAAS,CAC7B,IACA,GACH,EAAE6jB,CAAgB,EACnB,MAAO,CACH,EAAA9jB,EACA,EAAAC,CACZ,CACK,CACD,KAAKtlC,EAAS,CACVA,EAAUA,GAAW,KAAK,SAAW,CAAA,EACrC,IAAI+uC,EAAS/uC,EAAQ,QAAU,EAC/B+uC,EAAS,KAAK,IAAIA,EAAQA,GAAU/uC,EAAQ,aAAe,CAAC,EAC5D,MAAMmjE,EAAcp0B,GAAU/uC,EAAQ,aAAe,EACrD,OAAQ+uC,EAASo0B,GAAe,CACnC,CACD,KAAK7iE,EAAK6uC,EAAM,CACZ,MAAMnvC,EAAU,KAAK,QACjB,KAAK,MAAQA,EAAQ,OAAS,IAAO,CAACivC,GAAe,KAAME,EAAM,KAAK,KAAKnvC,CAAO,EAAI,CAAC,IAG3FM,EAAI,YAAcN,EAAQ,YAC1BM,EAAI,UAAYN,EAAQ,YACxBM,EAAI,UAAYN,EAAQ,gBACxBuuC,GAAUjuC,EAAKN,EAAS,KAAK,EAAG,KAAK,CAAC,EACzC,CACD,UAAW,CACP,MAAMA,EAAU,KAAK,SAAW,GAEhC,OAAOA,EAAQ,OAASA,EAAQ,SACnC,CACL,CA7EIokD,GADE4e,GACK,KAAK,SAMV5e,GAPA4e,GAOO,WAAW,CAChB,YAAa,EACb,UAAW,EACX,iBAAkB,EAClB,YAAa,EACb,WAAY,SACZ,OAAQ,EACR,SAAU,CAClB,GAGM5e,GAlBA4e,GAkBO,gBAAgB,CACrB,gBAAiB,kBACjB,YAAa,aACrB,GA2DA,SAASI,GAAaC,EAAKla,EAAkB,CACzC,KAAM,CAAE,EAAA9jB,EAAI,EAAAC,EAAI,KAAA95B,EAAO,MAAA0iC,EAAQ,OAAAuK,CAAS,EAAI4qB,EAAI,SAAS,CACrD,IACA,IACA,OACA,QACA,QACH,EAAEla,CAAgB,EACnB,IAAInZ,EAAMC,EAAOC,EAAKC,EAAQmzB,EAC9B,OAAID,EAAI,YACJC,EAAO7qB,EAAS,EAChBzI,EAAO,KAAK,IAAI3K,EAAG75B,CAAI,EACvBykC,EAAQ,KAAK,IAAI5K,EAAG75B,CAAI,EACxB0kC,EAAM5K,EAAIg+B,EACVnzB,EAAS7K,EAAIg+B,IAEbA,EAAOp1B,EAAQ,EACf8B,EAAO3K,EAAIi+B,EACXrzB,EAAQ5K,EAAIi+B,EACZpzB,EAAM,KAAK,IAAI5K,EAAG95B,CAAI,EACtB2kC,EAAS,KAAK,IAAI7K,EAAG95B,CAAI,GAEtB,CACH,KAAAwkC,EACA,IAAAE,EACA,MAAAD,EACA,OAAAE,CACR,CACA,CACA,SAASozB,GAAYrT,EAAMpjE,EAAO+pC,EAAKsJ,EAAK,CACxC,OAAO+vB,EAAO,EAAIvoB,GAAY76C,EAAO+pC,EAAKsJ,CAAG,CACjD,CACA,SAASqjC,GAAiBH,EAAKI,EAAMC,EAAM,CACvC,MAAM52E,EAAQu2E,EAAI,QAAQ,YACpBnT,EAAOmT,EAAI,cACX7+C,EAAI2sB,GAAOrkD,CAAK,EACtB,MAAO,CACH,EAAGy2E,GAAYrT,EAAK,IAAK1rC,EAAE,IAAK,EAAGk/C,CAAI,EACvC,EAAGH,GAAYrT,EAAK,MAAO1rC,EAAE,MAAO,EAAGi/C,CAAI,EAC3C,EAAGF,GAAYrT,EAAK,OAAQ1rC,EAAE,OAAQ,EAAGk/C,CAAI,EAC7C,EAAGH,GAAYrT,EAAK,KAAM1rC,EAAE,KAAM,EAAGi/C,CAAI,CACjD,CACA,CACA,SAASE,GAAkBN,EAAKI,EAAMC,EAAM,CACxC,KAAM,CAAE,mBAAAE,CAAkB,EAAMP,EAAI,SAAS,CACzC,oBACR,CAAK,EACKv2E,EAAQu2E,EAAI,QAAQ,aACpB7+C,EAAI4sB,GAActkD,CAAK,EACvB+2E,EAAO,KAAK,IAAIJ,EAAMC,CAAI,EAC1BxT,EAAOmT,EAAI,cACXS,EAAeF,GAAsBj3E,GAASG,CAAK,EACzD,MAAO,CACH,QAASy2E,GAAY,CAACO,GAAgB5T,EAAK,KAAOA,EAAK,KAAM1rC,EAAE,QAAS,EAAGq/C,CAAI,EAC/E,SAAUN,GAAY,CAACO,GAAgB5T,EAAK,KAAOA,EAAK,MAAO1rC,EAAE,SAAU,EAAGq/C,CAAI,EAClF,WAAYN,GAAY,CAACO,GAAgB5T,EAAK,QAAUA,EAAK,KAAM1rC,EAAE,WAAY,EAAGq/C,CAAI,EACxF,YAAaN,GAAY,CAACO,GAAgB5T,EAAK,QAAUA,EAAK,MAAO1rC,EAAE,YAAa,EAAGq/C,CAAI,CACnG,CACA,CACA,SAASE,GAAcV,EAAK,CACxB,MAAMjoB,EAASgoB,GAAaC,CAAG,EACzBn1B,EAAQkN,EAAO,MAAQA,EAAO,KAC9B3C,EAAS2C,EAAO,OAASA,EAAO,IAChC8M,EAASsb,GAAiBH,EAAKn1B,EAAQ,EAAGuK,EAAS,CAAC,EACpD1J,EAAS40B,GAAkBN,EAAKn1B,EAAQ,EAAGuK,EAAS,CAAC,EAC3D,MAAO,CACH,MAAO,CACH,EAAG2C,EAAO,KACV,EAAGA,EAAO,IACV,EAAGlN,EACH,EAAGuK,EACH,OAAA1J,CACH,EACD,MAAO,CACH,EAAGqM,EAAO,KAAO8M,EAAO,EACxB,EAAG9M,EAAO,IAAM8M,EAAO,EACvB,EAAGha,EAAQga,EAAO,EAAIA,EAAO,EAC7B,EAAGzP,EAASyP,EAAO,EAAIA,EAAO,EAC9B,OAAQ,CACJ,QAAS,KAAK,IAAI,EAAGnZ,EAAO,QAAU,KAAK,IAAImZ,EAAO,EAAGA,EAAO,CAAC,CAAC,EAClE,SAAU,KAAK,IAAI,EAAGnZ,EAAO,SAAW,KAAK,IAAImZ,EAAO,EAAGA,EAAO,CAAC,CAAC,EACpE,WAAY,KAAK,IAAI,EAAGnZ,EAAO,WAAa,KAAK,IAAImZ,EAAO,EAAGA,EAAO,CAAC,CAAC,EACxE,YAAa,KAAK,IAAI,EAAGnZ,EAAO,YAAc,KAAK,IAAImZ,EAAO,EAAGA,EAAO,CAAC,CAAC,CAC7E,CACJ,CACT,CACA,CACA,SAASjwB,GAAQorC,EAAKh+B,EAAGC,EAAG6jB,EAAkB,CAC1C,MAAM6a,EAAQ3+B,IAAM,KACd4+B,EAAQ3+B,IAAM,KAEd8V,EAASioB,GAAO,EADLW,GAASC,IACSb,GAAaC,EAAKla,CAAgB,EACrE,OAAO/N,IAAW4oB,GAASn8B,GAAWxC,EAAG+V,EAAO,KAAMA,EAAO,KAAK,KAAO6oB,GAASp8B,GAAWvC,EAAG8V,EAAO,IAAKA,EAAO,MAAM,EAC7H,CACA,SAAS8oB,GAAUn1B,EAAQ,CACvB,OAAOA,EAAO,SAAWA,EAAO,UAAYA,EAAO,YAAcA,EAAO,WAC5E,CACC,SAASo1B,GAAkB7jE,EAAKqwC,EAAM,CACnCrwC,EAAI,KAAKqwC,EAAK,EAAGA,EAAK,EAAGA,EAAK,EAAGA,EAAK,CAAC,CAC3C,CACA,SAASyzB,GAAYzzB,EAAMtS,EAAQgmC,EAAU,CAAA,EAAI,CAC7C,MAAMh/B,EAAIsL,EAAK,IAAM0zB,EAAQ,EAAI,CAAChmC,EAAS,EACrCiH,EAAIqL,EAAK,IAAM0zB,EAAQ,EAAI,CAAChmC,EAAS,EACrChL,GAAKsd,EAAK,EAAIA,EAAK,IAAM0zB,EAAQ,EAAIA,EAAQ,EAAIhmC,EAAS,GAAKgH,EAC/D95B,GAAKolC,EAAK,EAAIA,EAAK,IAAM0zB,EAAQ,EAAIA,EAAQ,EAAIhmC,EAAS,GAAKiH,EACrE,MAAO,CACH,EAAGqL,EAAK,EAAItL,EACZ,EAAGsL,EAAK,EAAIrL,EACZ,EAAGqL,EAAK,EAAItd,EACZ,EAAGsd,EAAK,EAAIplC,EACZ,OAAQolC,EAAK,MACrB,CACA,CACA,MAAM2zB,WAAmBjS,EAAQ,CAa7B,YAAYpU,EAAI,CACZ,QACA,KAAK,QAAU,OACf,KAAK,WAAa,OAClB,KAAK,KAAO,OACZ,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,cAAgB,OACjBA,GACA,OAAO,OAAO,KAAMA,CAAG,CAE9B,CACD,KAAK39C,EAAK,CACN,KAAM,CAAE,cAAAgmD,EAAgB,QAAS,CAAE,YAAAie,EAAc,gBAAApM,CAAe,CAAM,EAAG,KACnE,CAAE,MAAAqM,EAAQ,MAAAC,CAAQ,EAAGV,GAAc,IAAI,EACvCW,EAAcR,GAAUO,EAAM,MAAM,EAAI/zB,GAAqByzB,GACnE7jE,EAAI,KAAI,GACJmkE,EAAM,IAAMD,EAAM,GAAKC,EAAM,IAAMD,EAAM,KACzClkE,EAAI,UAAS,EACbokE,EAAYpkE,EAAK8jE,GAAYK,EAAOne,EAAeke,CAAK,CAAC,EACzDlkE,EAAI,KAAI,EACRokE,EAAYpkE,EAAK8jE,GAAYI,EAAO,CAACle,EAAeme,CAAK,CAAC,EAC1DnkE,EAAI,UAAYikE,EAChBjkE,EAAI,KAAK,SAAS,GAEtBA,EAAI,UAAS,EACbokE,EAAYpkE,EAAK8jE,GAAYI,EAAOle,CAAa,CAAC,EAClDhmD,EAAI,UAAY63D,EAChB73D,EAAI,KAAI,EACRA,EAAI,QAAO,CACd,CACD,QAAQ2iE,EAAQC,EAAQ/Z,EAAkB,CACtC,OAAOlxB,GAAQ,KAAMgrC,EAAQC,EAAQ/Z,CAAgB,CACxD,CACD,SAAS8Z,EAAQ9Z,EAAkB,CAC/B,OAAOlxB,GAAQ,KAAMgrC,EAAQ,KAAM9Z,CAAgB,CACtD,CACD,SAAS+Z,EAAQ/Z,EAAkB,CAC/B,OAAOlxB,GAAQ,KAAM,KAAMirC,EAAQ/Z,CAAgB,CACtD,CACD,eAAeA,EAAkB,CAC7B,KAAM,CAAE,EAAA9jB,EAAI,EAAAC,EAAI,KAAA95B,EAAO,WAAAm7C,CAAa,EAAI,KAAK,SAAS,CAClD,IACA,IACA,OACA,YACH,EAAEwC,CAAgB,EACnB,MAAO,CACH,EAAGxC,GAActhB,EAAI75B,GAAQ,EAAI65B,EACjC,EAAGshB,EAAarhB,GAAKA,EAAI95B,GAAQ,CAC7C,CACK,CACD,SAASy+B,EAAM,CACX,OAAOA,IAAS,IAAM,KAAK,MAAQ,EAAI,KAAK,OAAS,CACxD,CACL,CAnEIma,GADEkgB,GACK,KAAK,OACflgB,GAFKkgB,GAEE,WAAW,CACX,cAAe,QACf,YAAa,EACb,aAAc,EACd,cAAe,OACf,WAAY,MACpB,GACClgB,GATKkgB,GASE,gBAAgB,CAChB,gBAAiB,kBACjB,YAAa,aACrB,GA0nDA,MAAMK,GAAc,CACnB,QAAS77B,EAAO,CACT,GAAI,CAACA,EAAM,OACP,MAAO,GAEX,IAAI98C,EAAG0uB,EACHkqD,EAAO,IAAI,IACXt/B,EAAI,EACJwE,EAAQ,EACZ,IAAI99C,EAAI,EAAG0uB,EAAMouB,EAAM,OAAQ98C,EAAI0uB,EAAK,EAAE1uB,EAAE,CACxC,MAAMD,EAAK+8C,EAAM98C,CAAC,EAAE,QACpB,GAAID,GAAMA,EAAG,WAAY,CACrB,MAAM8rD,EAAM9rD,EAAG,kBACf64E,EAAK,IAAI/sB,EAAI,CAAC,EACdvS,GAAKuS,EAAI,EACT,EAAE/N,CACL,CACJ,CAID,MAAO,CACH,EAJa,CACb,GAAG86B,CACf,EAAU,OAAO,CAACj1E,EAAGC,IAAID,EAAIC,CAAC,EAAIg1E,EAAK,KAG3B,EAAGt/B,EAAIwE,CACnB,CACK,EACJ,QAAShB,EAAO+7B,EAAe,CACxB,GAAI,CAAC/7B,EAAM,OACP,MAAO,GAEX,IAAIzD,EAAIw/B,EAAc,EAClBv/B,EAAIu/B,EAAc,EAClBlb,EAAc,OAAO,kBACrB39D,EAAG0uB,EAAKoqD,EACZ,IAAI94E,EAAI,EAAG0uB,EAAMouB,EAAM,OAAQ98C,EAAI0uB,EAAK,EAAE1uB,EAAE,CACxC,MAAMD,EAAK+8C,EAAM98C,CAAC,EAAE,QACpB,GAAID,GAAMA,EAAG,WAAY,CACrB,MAAMy7D,EAASz7D,EAAG,iBACZm0C,EAAI8G,GAAsB69B,EAAerd,CAAM,EACjDtnB,EAAIypB,IACJA,EAAczpB,EACd4kC,EAAiB/4E,EAExB,CACJ,CACD,GAAI+4E,EAAgB,CAChB,MAAMC,EAAKD,EAAe,kBAC1Bz/B,EAAI0/B,EAAG,EACPz/B,EAAIy/B,EAAG,CACV,CACD,MAAO,CACH,EAAA1/B,EACA,EAAAC,CACZ,CACK,CACL,EACA,SAAS0/B,GAAax5D,EAAMy5D,EAAQ,CAChC,OAAIA,IACI94E,GAAQ84E,CAAM,EACd,MAAM,UAAU,KAAK,MAAMz5D,EAAMy5D,CAAM,EAEvCz5D,EAAK,KAAKy5D,CAAM,GAGjBz5D,CACX,CACC,SAAS05D,GAAcj6E,EAAK,CACzB,OAAK,OAAOA,GAAQ,UAAYA,aAAe,SAAWA,EAAI,QAAQ;AAAA,CAAI,EAAI,GACnEA,EAAI,MAAM;AAAA,CAAI,EAElBA,CACX,CACC,SAASk6E,GAAkBn3B,EAAOp/C,EAAM,CACrC,KAAM,CAAE,QAAA2oD,EAAU,aAAAuF,EAAe,MAAA70C,CAAK,EAAMrZ,EACtCkyD,EAAa9S,EAAM,eAAe8O,CAAY,EAAE,WAChD,CAAE,MAAAmY,EAAQ,MAAAnoE,CAAK,EAAMg0D,EAAW,iBAAiB74C,CAAK,EAC5D,MAAO,CACH,MAAA+lC,EACA,MAAAinB,EACA,OAAQnU,EAAW,UAAU74C,CAAK,EAClC,IAAK+lC,EAAM,KAAK,SAAS8O,CAAY,EAAE,KAAK70C,CAAK,EACjD,eAAgBnb,EAChB,QAASg0D,EAAW,WAAY,EAChC,UAAW74C,EACX,aAAA60C,EACA,QAAAvF,CACR,CACA,CACC,SAAS6tB,GAAeC,EAASrlE,EAAS,CACvC,MAAMM,EAAM+kE,EAAQ,MAAM,IACpB,CAAE,KAAAC,EAAO,OAAAC,EAAS,MAAAhN,CAAK,EAAM8M,EAC7B,CAAE,SAAAG,EAAW,UAAAC,CAAY,EAAGzlE,EAC5B0lE,EAAWp0B,GAAOtxC,EAAQ,QAAQ,EAClC2lE,EAAYr0B,GAAOtxC,EAAQ,SAAS,EACpC4lE,EAAat0B,GAAOtxC,EAAQ,UAAU,EACtC6lE,EAAiBtN,EAAM,OACvBuN,EAAkBP,EAAO,OACzBQ,EAAoBT,EAAK,OACzB1Y,EAAUvb,GAAUrxC,EAAQ,OAAO,EACzC,IAAIy4C,EAASmU,EAAQ,OACjB1e,EAAQ,EACR83B,EAAqBV,EAAK,OAAO,CAACx7B,EAAOm8B,IAAWn8B,EAAQm8B,EAAS,OAAO,OAASA,EAAS,MAAM,OAASA,EAAS,MAAM,OAAQ,CAAC,EAKzI,GAJAD,GAAsBX,EAAQ,WAAW,OAASA,EAAQ,UAAU,OAChEQ,IACAptB,GAAUotB,EAAiBF,EAAU,YAAcE,EAAiB,GAAK7lE,EAAQ,aAAeA,EAAQ,mBAExGgmE,EAAoB,CACpB,MAAME,EAAiBlmE,EAAQ,cAAgB,KAAK,IAAIylE,EAAWC,EAAS,UAAU,EAAIA,EAAS,WACnGjtB,GAAUstB,EAAoBG,GAAkBF,EAAqBD,GAAqBL,EAAS,YAAcM,EAAqB,GAAKhmE,EAAQ,WACtJ,CACG8lE,IACArtB,GAAUz4C,EAAQ,gBAAkB8lE,EAAkBF,EAAW,YAAcE,EAAkB,GAAK9lE,EAAQ,eAElH,IAAImmE,EAAe,EACnB,MAAMC,EAAe,SAAS3zC,EAAM,CAChCyb,EAAQ,KAAK,IAAIA,EAAO5tC,EAAI,YAAYmyB,CAAI,EAAE,MAAQ0zC,CAAY,CAC1E,EACI,OAAA7lE,EAAI,KAAI,EACRA,EAAI,KAAOqlE,EAAU,OACrB7iC,GAAKuiC,EAAQ,MAAOe,CAAY,EAChC9lE,EAAI,KAAOolE,EAAS,OACpB5iC,GAAKuiC,EAAQ,WAAW,OAAOA,EAAQ,SAAS,EAAGe,CAAY,EAC/DD,EAAenmE,EAAQ,cAAgBwlE,EAAW,EAAIxlE,EAAQ,WAAa,EAC3E8iC,GAAKwiC,EAAOW,GAAW,CACnBnjC,GAAKmjC,EAAS,OAAQG,CAAY,EAClCtjC,GAAKmjC,EAAS,MAAOG,CAAY,EACjCtjC,GAAKmjC,EAAS,MAAOG,CAAY,CACzC,CAAK,EACDD,EAAe,EACf7lE,EAAI,KAAOslE,EAAW,OACtB9iC,GAAKuiC,EAAQ,OAAQe,CAAY,EACjC9lE,EAAI,QAAO,EACX4tC,GAAS0e,EAAQ,MACV,CACH,MAAA1e,EACA,OAAAuK,CACR,CACA,CACA,SAAS4tB,GAAgBr4B,EAAOj3C,EAAM,CAClC,KAAM,CAAE,EAAAuuC,EAAI,OAAAmT,CAAS,EAAG1hD,EACxB,OAAIuuC,EAAImT,EAAS,EACN,MACAnT,EAAI0I,EAAM,OAASyK,EAAS,EAC5B,SAEJ,QACX,CACA,SAAS6tB,GAAoBC,EAAQv4B,EAAOhuC,EAASjJ,EAAM,CACvD,KAAM,CAAE,EAAAsuC,EAAI,MAAA6I,CAAQ,EAAGn3C,EACjB0nC,EAAQz+B,EAAQ,UAAYA,EAAQ,aAI1C,GAHIumE,IAAW,QAAUlhC,EAAI6I,EAAQzP,EAAQuP,EAAM,OAG/Cu4B,IAAW,SAAWlhC,EAAI6I,EAAQzP,EAAQ,EAC1C,MAAO,EAEf,CACA,SAAS+nC,GAAgBx4B,EAAOhuC,EAASjJ,EAAM0vE,EAAQ,CACnD,KAAM,CAAE,EAAAphC,EAAI,MAAA6I,CAAQ,EAAGn3C,EACjB,CAAE,MAAO2vE,EAAa,UAAW,CAAE,KAAA12B,EAAO,MAAAC,CAAK,CAAM,EAAGjC,EAC9D,IAAIu4B,EAAS,SACb,OAAIE,IAAW,SACXF,EAASlhC,IAAM2K,EAAOC,GAAS,EAAI,OAAS,QACrC5K,GAAK6I,EAAQ,EACpBq4B,EAAS,OACFlhC,GAAKqhC,EAAax4B,EAAQ,IACjCq4B,EAAS,SAETD,GAAoBC,EAAQv4B,EAAOhuC,EAASjJ,CAAI,IAChDwvE,EAAS,UAENA,CACX,CACC,SAASI,GAAmB34B,EAAOhuC,EAASjJ,EAAM,CAC/C,MAAM0vE,EAAS1vE,EAAK,QAAUiJ,EAAQ,QAAUqmE,GAAgBr4B,EAAOj3C,CAAI,EAC3E,MAAO,CACH,OAAQA,EAAK,QAAUiJ,EAAQ,QAAUwmE,GAAgBx4B,EAAOhuC,EAASjJ,EAAM0vE,CAAM,EACrF,OAAAA,CACR,CACA,CACA,SAASG,GAAO7vE,EAAMwvE,EAAQ,CAC1B,GAAI,CAAE,EAAAlhC,EAAI,MAAA6I,CAAQ,EAAGn3C,EACrB,OAAIwvE,IAAW,QACXlhC,GAAK6I,EACEq4B,IAAW,WAClBlhC,GAAK6I,EAAQ,GAEV7I,CACX,CACA,SAASwhC,GAAO9vE,EAAM0vE,EAAQK,EAAgB,CAC1C,GAAI,CAAE,EAAAxhC,EAAI,OAAAmT,CAAS,EAAG1hD,EACtB,OAAI0vE,IAAW,MACXnhC,GAAKwhC,EACEL,IAAW,SAClBnhC,GAAKmT,EAASquB,EAEdxhC,GAAKmT,EAAS,EAEXnT,CACX,CACC,SAASyhC,GAAmB/mE,EAASjJ,EAAMiwE,EAAWh5B,EAAO,CAC1D,KAAM,CAAE,UAAAi5B,EAAY,aAAAC,EAAe,aAAAv4B,CAAY,EAAM3uC,EAC/C,CAAE,OAAAumE,EAAS,OAAAE,CAAS,EAAGO,EACvBF,EAAiBG,EAAYC,EAC7B,CAAE,QAAAC,EAAU,SAAAC,EAAW,WAAAC,EAAa,YAAAC,GAAiBl2B,GAAczC,CAAY,EACrF,IAAItJ,EAAIuhC,GAAO7vE,EAAMwvE,CAAM,EAC3B,MAAMjhC,EAAIuhC,GAAO9vE,EAAM0vE,EAAQK,CAAc,EAC7C,OAAIL,IAAW,SACPF,IAAW,OACXlhC,GAAKyhC,EACEP,IAAW,UAClBlhC,GAAKyhC,GAEFP,IAAW,OAClBlhC,GAAK,KAAK,IAAI8hC,EAASE,CAAU,EAAIJ,EAC9BV,IAAW,UAClBlhC,GAAK,KAAK,IAAI+hC,EAAUE,CAAW,EAAIL,GAEpC,CACH,EAAGt/B,GAAYtC,EAAG,EAAG2I,EAAM,MAAQj3C,EAAK,KAAK,EAC7C,EAAG4wC,GAAYrC,EAAG,EAAG0I,EAAM,OAASj3C,EAAK,MAAM,CACvD,CACA,CACA,SAASwwE,GAAYlC,EAAS97B,EAAOvpC,EAAS,CAC1C,MAAM4sD,EAAUvb,GAAUrxC,EAAQ,OAAO,EACzC,OAAOupC,IAAU,SAAW87B,EAAQ,EAAIA,EAAQ,MAAQ,EAAI97B,IAAU,QAAU87B,EAAQ,EAAIA,EAAQ,MAAQzY,EAAQ,MAAQyY,EAAQ,EAAIzY,EAAQ,IACpJ,CACC,SAAS4a,GAAwBlwE,EAAU,CACxC,OAAO0tE,GAAa,CAAE,EAAEE,GAAc5tE,CAAQ,CAAC,CACnD,CACA,SAASmwE,GAAqBpkE,EAAQgiE,EAASqC,EAAc,CACzD,OAAO11B,GAAc3uC,EAAQ,CACzB,QAAAgiE,EACA,aAAAqC,EACA,KAAM,SACd,CAAK,CACL,CACA,SAASC,GAAkBtqB,EAAWnwC,EAAS,CAC3C,MAAM4rD,EAAW5rD,GAAWA,EAAQ,SAAWA,EAAQ,QAAQ,SAAWA,EAAQ,QAAQ,QAAQ,UAClG,OAAO4rD,EAAWzb,EAAU,SAASyb,CAAQ,EAAIzb,CACrD,CACA,MAAMuqB,GAAmB,CACrB,YAAa/iD,GACb,MAAO6iD,EAAc,CACjB,GAAIA,EAAa,OAAS,EAAG,CACzB,MAAM94E,EAAO84E,EAAa,CAAC,EACrB5kB,EAASl0D,EAAK,MAAM,KAAK,OACzBi5E,EAAa/kB,EAASA,EAAO,OAAS,EAC5C,GAAI,MAAQ,KAAK,SAAW,KAAK,QAAQ,OAAS,UAC9C,OAAOl0D,EAAK,QAAQ,OAAS,GAC1B,GAAIA,EAAK,MACZ,OAAOA,EAAK,MACT,GAAIi5E,EAAa,GAAKj5E,EAAK,UAAYi5E,EAC1C,OAAO/kB,EAAOl0D,EAAK,SAAS,CAEnC,CACD,MAAO,EACV,EACD,WAAYi2B,GACZ,WAAYA,GACZ,YAAaA,GACb,MAAOijD,EAAa,CAChB,GAAI,MAAQ,KAAK,SAAW,KAAK,QAAQ,OAAS,UAC9C,OAAOA,EAAY,MAAQ,KAAOA,EAAY,gBAAkBA,EAAY,eAEhF,IAAI7S,EAAQ6S,EAAY,QAAQ,OAAS,GACrC7S,IACAA,GAAS,MAEb,MAAMnoE,EAAQg7E,EAAY,eAC1B,OAAKtlC,GAAc11C,CAAK,IACpBmoE,GAASnoE,GAENmoE,CACV,EACD,WAAY6S,EAAa,CAErB,MAAM9nE,EADO8nE,EAAY,MAAM,eAAeA,EAAY,YAAY,EACjD,WAAW,SAASA,EAAY,SAAS,EAC9D,MAAO,CACH,YAAa9nE,EAAQ,YACrB,gBAAiBA,EAAQ,gBACzB,YAAaA,EAAQ,YACrB,WAAYA,EAAQ,WACpB,iBAAkBA,EAAQ,iBAC1B,aAAc,CAC1B,CACK,EACD,gBAAkB,CACd,OAAO,KAAK,QAAQ,SACvB,EACD,gBAAiB8nE,EAAa,CAE1B,MAAM9nE,EADO8nE,EAAY,MAAM,eAAeA,EAAY,YAAY,EACjD,WAAW,SAASA,EAAY,SAAS,EAC9D,MAAO,CACH,WAAY9nE,EAAQ,WACpB,SAAUA,EAAQ,QAC9B,CACK,EACD,WAAY6kB,GACZ,UAAWA,GACX,aAAcA,GACd,OAAQA,GACR,YAAaA,EACjB,EACC,SAASkjD,GAA2B1qB,EAAW/tD,EAAMgR,EAAKpS,EAAK,CAC5D,MAAM8H,EAASqnD,EAAU/tD,CAAI,EAAE,KAAKgR,EAAKpS,CAAG,EAC5C,OAAI,OAAO8H,EAAW,IACX4xE,GAAiBt4E,CAAI,EAAE,KAAKgR,EAAKpS,CAAG,EAExC8H,CACX,CACA,MAAMgyE,WAAgB3V,EAAQ,CAE1B,YAAY1kC,EAAO,CACf,QACA,KAAK,QAAU,EACf,KAAK,QAAU,GACf,KAAK,eAAiB,OACtB,KAAK,MAAQ,OACb,KAAK,kBAAoB,OACzB,KAAK,cAAgB,GACrB,KAAK,YAAc,OACnB,KAAK,SAAW,OAChB,KAAK,MAAQA,EAAO,MACpB,KAAK,QAAUA,EAAO,QACtB,KAAK,WAAa,OAClB,KAAK,MAAQ,OACb,KAAK,WAAa,OAClB,KAAK,KAAO,OACZ,KAAK,UAAY,OACjB,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,EAAI,OACT,KAAK,EAAI,OACT,KAAK,OAAS,OACd,KAAK,MAAQ,OACb,KAAK,OAAS,OACd,KAAK,OAAS,OACd,KAAK,YAAc,OACnB,KAAK,iBAAmB,OACxB,KAAK,gBAAkB,MAC1B,CACD,WAAW3tB,EAAS,CAChB,KAAK,QAAUA,EACf,KAAK,kBAAoB,OACzB,KAAK,SAAW,MACnB,CACJ,oBAAqB,CACd,MAAMN,EAAS,KAAK,kBACpB,GAAIA,EACA,OAAOA,EAEX,MAAMsuC,EAAQ,KAAK,MACbhuC,EAAU,KAAK,QAAQ,WAAW,KAAK,WAAU,CAAE,EACnD+6B,EAAO/6B,EAAQ,SAAWguC,EAAM,QAAQ,WAAahuC,EAAQ,WAC7D2+C,EAAa,IAAIL,GAAW,KAAK,MAAOvjB,CAAI,EAClD,OAAIA,EAAK,aACL,KAAK,kBAAoB,OAAO,OAAO4jB,CAAU,GAE9CA,CACV,CACJ,YAAa,CACN,OAAO,KAAK,WAAa,KAAK,SAAW8oB,GAAqB,KAAK,MAAM,WAAU,EAAI,KAAM,KAAK,aAAa,EAClH,CACD,SAASv6D,EAASlN,EAAS,CACvB,KAAM,CAAE,UAAAq9C,CAAY,EAAGr9C,EACjBioE,EAAcF,GAA2B1qB,EAAW,cAAe,KAAMnwC,CAAO,EAChFqrD,EAAQwP,GAA2B1qB,EAAW,QAAS,KAAMnwC,CAAO,EACpEg7D,EAAaH,GAA2B1qB,EAAW,aAAc,KAAMnwC,CAAO,EACpF,IAAIsjC,EAAQ,CAAA,EACZ,OAAAA,EAAQw0B,GAAax0B,EAAO00B,GAAc+C,CAAW,CAAC,EACtDz3B,EAAQw0B,GAAax0B,EAAO00B,GAAc3M,CAAK,CAAC,EAChD/nB,EAAQw0B,GAAax0B,EAAO00B,GAAcgD,CAAU,CAAC,EAC9C13B,CACV,CACD,cAAck3B,EAAc1nE,EAAS,CACjC,OAAOwnE,GAAwBO,GAA2B/nE,EAAQ,UAAW,aAAc,KAAM0nE,CAAY,CAAC,CACjH,CACD,QAAQA,EAAc1nE,EAAS,CAC3B,KAAM,CAAE,UAAAq9C,CAAY,EAAGr9C,EACjBmoE,EAAY,CAAA,EAClB,OAAArlC,GAAK4kC,EAAex6D,GAAU,CAC1B,MAAM+4D,EAAW,CACb,OAAQ,CAAE,EACV,MAAO,CAAE,EACT,MAAO,CAAE,CACzB,EACkBmC,EAAST,GAAkBtqB,EAAWnwC,CAAO,EACnD83D,GAAaiB,EAAS,OAAQf,GAAc6C,GAA2BK,EAAQ,cAAe,KAAMl7D,CAAO,CAAC,CAAC,EAC7G83D,GAAaiB,EAAS,MAAO8B,GAA2BK,EAAQ,QAAS,KAAMl7D,CAAO,CAAC,EACvF83D,GAAaiB,EAAS,MAAOf,GAAc6C,GAA2BK,EAAQ,aAAc,KAAMl7D,CAAO,CAAC,CAAC,EAC3Gi7D,EAAU,KAAKlC,CAAQ,CACnC,CAAS,EACMkC,CACV,CACD,aAAaT,EAAc1nE,EAAS,CAChC,OAAOwnE,GAAwBO,GAA2B/nE,EAAQ,UAAW,YAAa,KAAM0nE,CAAY,CAAC,CAChH,CACD,UAAUA,EAAc1nE,EAAS,CAC7B,KAAM,CAAE,UAAAq9C,CAAY,EAAGr9C,EACjBqoE,EAAeN,GAA2B1qB,EAAW,eAAgB,KAAMqqB,CAAY,EACvFnC,EAASwC,GAA2B1qB,EAAW,SAAU,KAAMqqB,CAAY,EAC3EY,EAAcP,GAA2B1qB,EAAW,cAAe,KAAMqqB,CAAY,EAC3F,IAAIl3B,EAAQ,CAAA,EACZ,OAAAA,EAAQw0B,GAAax0B,EAAO00B,GAAcmD,CAAY,CAAC,EACvD73B,EAAQw0B,GAAax0B,EAAO00B,GAAcK,CAAM,CAAC,EACjD/0B,EAAQw0B,GAAax0B,EAAO00B,GAAcoD,CAAW,CAAC,EAC/C93B,CACV,CACJ,aAAaxwC,EAAS,CACf,MAAMwjD,EAAS,KAAK,QACdpiD,EAAO,KAAK,MAAM,KAClBmnE,EAAc,CAAA,EACdC,EAAmB,CAAA,EACnBC,EAAkB,CAAA,EACxB,IAAIf,EAAe,CAAA,EACf17E,EAAG0uB,EACP,IAAI1uB,EAAI,EAAG0uB,EAAM8oC,EAAO,OAAQx3D,EAAI0uB,EAAK,EAAE1uB,EACvC07E,EAAa,KAAKvC,GAAkB,KAAK,MAAO3hB,EAAOx3D,CAAC,CAAC,CAAC,EAE9D,OAAIgU,EAAQ,SACR0nE,EAAeA,EAAa,OAAO,CAACnwB,EAAStvC,EAAOi+B,IAAQlmC,EAAQ,OAAOu3C,EAAStvC,EAAOi+B,EAAO9kC,CAAI,CAAC,GAEvGpB,EAAQ,WACR0nE,EAAeA,EAAa,KAAK,CAAC/3E,EAAGC,IAAIoQ,EAAQ,SAASrQ,EAAGC,EAAGwR,CAAI,CAAC,GAEzE0hC,GAAK4kC,EAAex6D,GAAU,CAC1B,MAAMk7D,EAAST,GAAkB3nE,EAAQ,UAAWkN,CAAO,EAC3Dq7D,EAAY,KAAKR,GAA2BK,EAAQ,aAAc,KAAMl7D,CAAO,CAAC,EAChFs7D,EAAiB,KAAKT,GAA2BK,EAAQ,kBAAmB,KAAMl7D,CAAO,CAAC,EAC1Fu7D,EAAgB,KAAKV,GAA2BK,EAAQ,iBAAkB,KAAMl7D,CAAO,CAAC,CACpG,CAAS,EACD,KAAK,YAAcq7D,EACnB,KAAK,iBAAmBC,EACxB,KAAK,gBAAkBC,EACvB,KAAK,WAAaf,EACXA,CACV,CACD,OAAOj9B,EAASs2B,EAAQ,CACpB,MAAM/gE,EAAU,KAAK,QAAQ,WAAW,KAAK,WAAU,CAAE,EACnDwjD,EAAS,KAAK,QACpB,IAAIzE,EACA2oB,EAAe,CAAA,EACnB,GAAI,CAAClkB,EAAO,OACJ,KAAK,UAAY,IACjBzE,EAAa,CACT,QAAS,CAC7B,OAEe,CACH,MAAM9zB,EAAW05C,GAAY3kE,EAAQ,QAAQ,EAAE,KAAK,KAAMwjD,EAAQ,KAAK,cAAc,EACrFkkB,EAAe,KAAK,aAAa1nE,CAAO,EACxC,KAAK,MAAQ,KAAK,SAAS0nE,EAAc1nE,CAAO,EAChD,KAAK,WAAa,KAAK,cAAc0nE,EAAc1nE,CAAO,EAC1D,KAAK,KAAO,KAAK,QAAQ0nE,EAAc1nE,CAAO,EAC9C,KAAK,UAAY,KAAK,aAAa0nE,EAAc1nE,CAAO,EACxD,KAAK,OAAS,KAAK,UAAU0nE,EAAc1nE,CAAO,EAClD,MAAMjJ,EAAO,KAAK,MAAQquE,GAAe,KAAMplE,CAAO,EAChD0oE,EAAkB,OAAO,OAAO,CAAA,EAAIz9C,EAAUl0B,CAAI,EAClDiwE,EAAYL,GAAmB,KAAK,MAAO3mE,EAAS0oE,CAAe,EACnEC,EAAkB5B,GAAmB/mE,EAAS0oE,EAAiB1B,EAAW,KAAK,KAAK,EAC1F,KAAK,OAASA,EAAU,OACxB,KAAK,OAASA,EAAU,OACxBjoB,EAAa,CACT,QAAS,EACT,EAAG4pB,EAAgB,EACnB,EAAGA,EAAgB,EACnB,MAAO5xE,EAAK,MACZ,OAAQA,EAAK,OACb,OAAQk0B,EAAS,EACjB,OAAQA,EAAS,CACjC,CACS,CACD,KAAK,cAAgBy8C,EACrB,KAAK,SAAW,OACZ3oB,GACA,KAAK,mBAAoB,EAAC,OAAO,KAAMA,CAAU,EAEjDtU,GAAWzqC,EAAQ,UACnBA,EAAQ,SAAS,KAAK,KAAM,CACxB,MAAO,KAAK,MACZ,QAAS,KACT,OAAA+gE,CAChB,CAAa,CAER,CACD,UAAU6H,EAActoE,EAAKvJ,EAAMiJ,EAAS,CACxC,MAAM6oE,EAAgB,KAAK,iBAAiBD,EAAc7xE,EAAMiJ,CAAO,EACvEM,EAAI,OAAOuoE,EAAc,GAAIA,EAAc,EAAE,EAC7CvoE,EAAI,OAAOuoE,EAAc,GAAIA,EAAc,EAAE,EAC7CvoE,EAAI,OAAOuoE,EAAc,GAAIA,EAAc,EAAE,CAChD,CACD,iBAAiBD,EAAc7xE,EAAMiJ,EAAS,CAC1C,KAAM,CAAE,OAAAumE,EAAS,OAAAE,CAAS,EAAG,KACvB,CAAE,UAAAQ,EAAY,aAAAt4B,CAAe,EAAG3uC,EAChC,CAAE,QAAAmnE,EAAU,SAAAC,EAAW,WAAAC,EAAa,YAAAC,GAAiBl2B,GAAczC,CAAY,EAC/E,CAAE,EAAGm6B,EAAM,EAAGC,CAAG,EAAMH,EACvB,CAAE,MAAA16B,EAAQ,OAAAuK,CAAS,EAAG1hD,EAC5B,IAAIu/D,EAAIE,EAAIwS,EAAIzS,EAAIE,EAAIwS,EACxB,OAAIxC,IAAW,UACXhQ,EAAKsS,EAAMtwB,EAAS,EAChB8tB,IAAW,QACXjQ,EAAKwS,EACLtS,EAAKF,EAAK2Q,EACV1Q,EAAKE,EAAKwQ,EACVgC,EAAKxS,EAAKwQ,IAEV3Q,EAAKwS,EAAM56B,EACXsoB,EAAKF,EAAK2Q,EACV1Q,EAAKE,EAAKwQ,EACVgC,EAAKxS,EAAKwQ,GAEd+B,EAAK1S,IAEDiQ,IAAW,OACX/P,EAAKsS,EAAM,KAAK,IAAI3B,EAASE,CAAU,EAAIJ,EACpCV,IAAW,QAClB/P,EAAKsS,EAAM56B,EAAQ,KAAK,IAAIk5B,EAAUE,CAAW,EAAIL,EAErDzQ,EAAK,KAAK,OAEViQ,IAAW,OACXlQ,EAAKwS,EACLtS,EAAKF,EAAK0Q,EACV3Q,EAAKE,EAAKyQ,EACV+B,EAAKxS,EAAKyQ,IAEV1Q,EAAKwS,EAAMtwB,EACXge,EAAKF,EAAK0Q,EACV3Q,EAAKE,EAAKyQ,EACV+B,EAAKxS,EAAKyQ,GAEdgC,EAAK1S,GAEF,CACH,GAAAD,EACA,GAAAE,EACA,GAAAwS,EACA,GAAAzS,EACA,GAAAE,EACA,GAAAwS,CACZ,CACK,CACD,UAAU1yB,EAAIj2C,EAAKN,EAAS,CACxB,MAAMu4D,EAAQ,KAAK,MACbxrC,EAASwrC,EAAM,OACrB,IAAIoN,EAAWuD,EAAcl9E,EAC7B,GAAI+gC,EAAQ,CACR,MAAMo8C,EAAYzuB,GAAc16C,EAAQ,IAAK,KAAK,EAAG,KAAK,KAAK,EAQ/D,IAPAu2C,EAAG,EAAIgxB,GAAY,KAAMvnE,EAAQ,WAAYA,CAAO,EACpDM,EAAI,UAAY6oE,EAAU,UAAUnpE,EAAQ,UAAU,EACtDM,EAAI,aAAe,SACnBqlE,EAAYr0B,GAAOtxC,EAAQ,SAAS,EACpCkpE,EAAelpE,EAAQ,aACvBM,EAAI,UAAYN,EAAQ,WACxBM,EAAI,KAAOqlE,EAAU,OACjB35E,EAAI,EAAGA,EAAI+gC,EAAQ,EAAE/gC,EACrBsU,EAAI,SAASi4D,EAAMvsE,CAAC,EAAGm9E,EAAU,EAAE5yB,EAAG,CAAC,EAAGA,EAAG,EAAIovB,EAAU,WAAa,CAAC,EACzEpvB,EAAG,GAAKovB,EAAU,WAAauD,EAC3Bl9E,EAAI,IAAM+gC,IACVwpB,EAAG,GAAKv2C,EAAQ,kBAAoBkpE,EAG/C,CACJ,CACJ,cAAc5oE,EAAKi2C,EAAIvqD,EAAGm9E,EAAWnpE,EAAS,CACvC,MAAMopE,EAAa,KAAK,YAAYp9E,CAAC,EAC/Bq9E,EAAkB,KAAK,iBAAiBr9E,CAAC,EACzC,CAAE,UAAAy5E,EAAY,SAAAD,CAAW,EAAGxlE,EAC5B0lE,EAAWp0B,GAAOtxC,EAAQ,QAAQ,EAClCspE,EAAS/B,GAAY,KAAM,OAAQvnE,CAAO,EAC1CupE,EAAYJ,EAAU,EAAEG,CAAM,EAC9BE,EAAU/D,EAAYC,EAAS,YAAcA,EAAS,WAAaD,GAAa,EAAI,EACpFgE,EAASlzB,EAAG,EAAIizB,EACtB,GAAIxpE,EAAQ,cAAe,CACvB,MAAM0pE,EAAc,CAChB,OAAQ,KAAK,IAAIlE,EAAUC,CAAS,EAAI,EACxC,WAAY4D,EAAgB,WAC5B,SAAUA,EAAgB,SAC1B,YAAa,CAC7B,EACkBM,EAAUR,EAAU,WAAWI,EAAW/D,CAAQ,EAAIA,EAAW,EACjEoE,EAAUH,EAAShE,EAAY,EACrCnlE,EAAI,YAAcN,EAAQ,mBAC1BM,EAAI,UAAYN,EAAQ,mBACxBuuC,GAAUjuC,EAAKopE,EAAaC,EAASC,CAAO,EAC5CtpE,EAAI,YAAc8oE,EAAW,YAC7B9oE,EAAI,UAAY8oE,EAAW,gBAC3B76B,GAAUjuC,EAAKopE,EAAaC,EAASC,CAAO,CACxD,KAAe,CACHtpE,EAAI,UAAY3T,GAASy8E,EAAW,WAAW,EAAI,KAAK,IAAI,GAAG,OAAO,OAAOA,EAAW,WAAW,CAAC,EAAIA,EAAW,aAAe,EAClI9oE,EAAI,YAAc8oE,EAAW,YAC7B9oE,EAAI,YAAY8oE,EAAW,YAAc,CAAE,CAAA,EAC3C9oE,EAAI,eAAiB8oE,EAAW,kBAAoB,EACpD,MAAMS,EAASV,EAAU,WAAWI,EAAW/D,CAAQ,EACjDsE,EAASX,EAAU,WAAWA,EAAU,MAAMI,EAAW,CAAC,EAAG/D,EAAW,CAAC,EACzEuE,EAAe34B,GAAcg4B,EAAW,YAAY,EACtD,OAAO,OAAOW,CAAY,EAAE,KAAMp5E,GAAIA,IAAM,CAAC,GAC7C2P,EAAI,UAAS,EACbA,EAAI,UAAYN,EAAQ,mBACxB0wC,GAAmBpwC,EAAK,CACpB,EAAGupE,EACH,EAAGJ,EACH,EAAGjE,EACH,EAAGC,EACH,OAAQsE,CAC5B,CAAiB,EACDzpE,EAAI,KAAI,EACRA,EAAI,OAAM,EACVA,EAAI,UAAY8oE,EAAW,gBAC3B9oE,EAAI,UAAS,EACbowC,GAAmBpwC,EAAK,CACpB,EAAGwpE,EACH,EAAGL,EAAS,EACZ,EAAGjE,EAAW,EACd,EAAGC,EAAY,EACf,OAAQsE,CAC5B,CAAiB,EACDzpE,EAAI,KAAI,IAERA,EAAI,UAAYN,EAAQ,mBACxBM,EAAI,SAASupE,EAAQJ,EAAQjE,EAAUC,CAAS,EAChDnlE,EAAI,WAAWupE,EAAQJ,EAAQjE,EAAUC,CAAS,EAClDnlE,EAAI,UAAY8oE,EAAW,gBAC3B9oE,EAAI,SAASwpE,EAAQL,EAAS,EAAGjE,EAAW,EAAGC,EAAY,CAAC,EAEnE,CACDnlE,EAAI,UAAY,KAAK,gBAAgBtU,CAAC,CACzC,CACD,SAASuqD,EAAIj2C,EAAKN,EAAS,CACvB,KAAM,CAAE,KAAAslE,CAAO,EAAG,KACZ,CAAE,YAAA0E,EAAc,UAAAC,EAAY,cAAAC,EAAgB,UAAAzE,EAAY,SAAAD,EAAW,WAAAha,CAAa,EAAGxrD,EACnF0lE,EAAWp0B,GAAOtxC,EAAQ,QAAQ,EACxC,IAAIkmE,EAAiBR,EAAS,WAC1ByE,EAAe,EACnB,MAAMhB,EAAYzuB,GAAc16C,EAAQ,IAAK,KAAK,EAAG,KAAK,KAAK,EACzDoqE,EAAiB,SAAS33C,EAAM,CAClCnyB,EAAI,SAASmyB,EAAM02C,EAAU,EAAE5yB,EAAG,EAAI4zB,CAAY,EAAG5zB,EAAG,EAAI2vB,EAAiB,CAAC,EAC9E3vB,EAAG,GAAK2vB,EAAiB8D,CACrC,EACcK,EAA0BlB,EAAU,UAAUc,CAAS,EAC7D,IAAIhE,EAAUqE,EAAW95B,EAAOxkD,EAAG4sB,EAAGwqB,EAAMwK,EAQ5C,IAPAttC,EAAI,UAAY2pE,EAChB3pE,EAAI,aAAe,SACnBA,EAAI,KAAOolE,EAAS,OACpBnvB,EAAG,EAAIgxB,GAAY,KAAM8C,EAAyBrqE,CAAO,EACzDM,EAAI,UAAYN,EAAQ,UACxB8iC,GAAK,KAAK,WAAYsnC,CAAc,EACpCD,EAAeD,GAAiBG,IAA4B,QAAUJ,IAAc,SAAWzE,EAAW,EAAIha,EAAaga,EAAW,EAAIha,EAAa,EACnJx/D,EAAI,EAAGo3C,EAAOkiC,EAAK,OAAQt5E,EAAIo3C,EAAM,EAAEp3C,EAAE,CAUzC,IATAi6E,EAAWX,EAAKt5E,CAAC,EACjBs+E,EAAY,KAAK,gBAAgBt+E,CAAC,EAClCsU,EAAI,UAAYgqE,EAChBxnC,GAAKmjC,EAAS,OAAQmE,CAAc,EACpC55B,EAAQy1B,EAAS,MACbiE,GAAiB15B,EAAM,SACvB,KAAK,cAAclwC,EAAKi2C,EAAIvqD,EAAGm9E,EAAWnpE,CAAO,EACjDkmE,EAAiB,KAAK,IAAIR,EAAS,WAAYD,CAAS,GAExD7sD,EAAI,EAAGg1B,EAAO4C,EAAM,OAAQ53B,EAAIg1B,EAAM,EAAEh1B,EACxCwxD,EAAe55B,EAAM53B,CAAC,CAAC,EACvBstD,EAAiBR,EAAS,WAE9B5iC,GAAKmjC,EAAS,MAAOmE,CAAc,CACtC,CACDD,EAAe,EACfjE,EAAiBR,EAAS,WAC1B5iC,GAAK,KAAK,UAAWsnC,CAAc,EACnC7zB,EAAG,GAAKyzB,CACX,CACD,WAAWzzB,EAAIj2C,EAAKN,EAAS,CACzB,MAAMulE,EAAS,KAAK,OACdx4C,EAASw4C,EAAO,OACtB,IAAIK,EAAY55E,EAChB,GAAI+gC,EAAQ,CACR,MAAMo8C,EAAYzuB,GAAc16C,EAAQ,IAAK,KAAK,EAAG,KAAK,KAAK,EAQ/D,IAPAu2C,EAAG,EAAIgxB,GAAY,KAAMvnE,EAAQ,YAAaA,CAAO,EACrDu2C,EAAG,GAAKv2C,EAAQ,gBAChBM,EAAI,UAAY6oE,EAAU,UAAUnpE,EAAQ,WAAW,EACvDM,EAAI,aAAe,SACnBslE,EAAat0B,GAAOtxC,EAAQ,UAAU,EACtCM,EAAI,UAAYN,EAAQ,YACxBM,EAAI,KAAOslE,EAAW,OAClB55E,EAAI,EAAGA,EAAI+gC,EAAQ,EAAE/gC,EACrBsU,EAAI,SAASilE,EAAOv5E,CAAC,EAAGm9E,EAAU,EAAE5yB,EAAG,CAAC,EAAGA,EAAG,EAAIqvB,EAAW,WAAa,CAAC,EAC3ErvB,EAAG,GAAKqvB,EAAW,WAAa5lE,EAAQ,aAE/C,CACJ,CACD,eAAeu2C,EAAIj2C,EAAKiqE,EAAavqE,EAAS,CAC1C,KAAM,CAAE,OAAAumE,EAAS,OAAAE,CAAS,EAAG,KACvB,CAAE,EAAAphC,EAAI,EAAAC,CAAI,EAAGiR,EACb,CAAE,MAAArI,EAAQ,OAAAuK,CAAS,EAAG8xB,EACtB,CAAE,QAAApD,EAAU,SAAAC,EAAW,WAAAC,EAAa,YAAAC,CAAW,EAAMl2B,GAAcpxC,EAAQ,YAAY,EAC7FM,EAAI,UAAYN,EAAQ,gBACxBM,EAAI,YAAcN,EAAQ,YAC1BM,EAAI,UAAYN,EAAQ,YACxBM,EAAI,UAAS,EACbA,EAAI,OAAO+kC,EAAI8hC,EAAS7hC,CAAC,EACrBmhC,IAAW,OACX,KAAK,UAAUlwB,EAAIj2C,EAAKiqE,EAAavqE,CAAO,EAEhDM,EAAI,OAAO+kC,EAAI6I,EAAQk5B,EAAU9hC,CAAC,EAClChlC,EAAI,iBAAiB+kC,EAAI6I,EAAO5I,EAAGD,EAAI6I,EAAO5I,EAAI8hC,CAAQ,EACtDX,IAAW,UAAYF,IAAW,SAClC,KAAK,UAAUhwB,EAAIj2C,EAAKiqE,EAAavqE,CAAO,EAEhDM,EAAI,OAAO+kC,EAAI6I,EAAO5I,EAAImT,EAAS6uB,CAAW,EAC9ChnE,EAAI,iBAAiB+kC,EAAI6I,EAAO5I,EAAImT,EAAQpT,EAAI6I,EAAQo5B,EAAahiC,EAAImT,CAAM,EAC3EguB,IAAW,UACX,KAAK,UAAUlwB,EAAIj2C,EAAKiqE,EAAavqE,CAAO,EAEhDM,EAAI,OAAO+kC,EAAIgiC,EAAY/hC,EAAImT,CAAM,EACrCn4C,EAAI,iBAAiB+kC,EAAGC,EAAImT,EAAQpT,EAAGC,EAAImT,EAAS4uB,CAAU,EAC1DZ,IAAW,UAAYF,IAAW,QAClC,KAAK,UAAUhwB,EAAIj2C,EAAKiqE,EAAavqE,CAAO,EAEhDM,EAAI,OAAO+kC,EAAGC,EAAI6hC,CAAO,EACzB7mE,EAAI,iBAAiB+kC,EAAGC,EAAGD,EAAI8hC,EAAS7hC,CAAC,EACzChlC,EAAI,UAAS,EACbA,EAAI,KAAI,EACJN,EAAQ,YAAc,GACtBM,EAAI,OAAM,CAEjB,CACJ,uBAAuBN,EAAS,CACzB,MAAMguC,EAAQ,KAAK,MACbmP,EAAQ,KAAK,YACbqtB,EAAQrtB,GAASA,EAAM,EACvBstB,EAAQttB,GAASA,EAAM,EAC7B,GAAIqtB,GAASC,EAAO,CAChB,MAAMx/C,EAAW05C,GAAY3kE,EAAQ,QAAQ,EAAE,KAAK,KAAM,KAAK,QAAS,KAAK,cAAc,EAC3F,GAAI,CAACirB,EACD,OAEJ,MAAMl0B,EAAO,KAAK,MAAQquE,GAAe,KAAMplE,CAAO,EAChD0oE,EAAkB,OAAO,OAAO,CAAE,EAAEz9C,EAAU,KAAK,KAAK,EACxD+7C,EAAYL,GAAmB34B,EAAOhuC,EAAS0oE,CAAe,EAC9Dx5B,EAAQ63B,GAAmB/mE,EAAS0oE,EAAiB1B,EAAWh5B,CAAK,GACvEw8B,EAAM,MAAQt7B,EAAM,GAAKu7B,EAAM,MAAQv7B,EAAM,KAC7C,KAAK,OAAS83B,EAAU,OACxB,KAAK,OAASA,EAAU,OACxB,KAAK,MAAQjwE,EAAK,MAClB,KAAK,OAASA,EAAK,OACnB,KAAK,OAASk0B,EAAS,EACvB,KAAK,OAASA,EAAS,EACvB,KAAK,mBAAoB,EAAC,OAAO,KAAMikB,CAAK,EAEnD,CACJ,CACJ,aAAc,CACP,MAAO,CAAC,CAAC,KAAK,OACjB,CACD,KAAK5uC,EAAK,CACN,MAAMN,EAAU,KAAK,QAAQ,WAAW,KAAK,WAAU,CAAE,EACzD,IAAI0qE,EAAU,KAAK,QACnB,GAAI,CAACA,EACD,OAEJ,KAAK,uBAAuB1qE,CAAO,EACnC,MAAMuqE,EAAc,CAChB,MAAO,KAAK,MACZ,OAAQ,KAAK,MACzB,EACch0B,EAAK,CACP,EAAG,KAAK,EACR,EAAG,KAAK,CACpB,EACQm0B,EAAU,KAAK,IAAIA,CAAO,EAAI,KAAO,EAAIA,EACzC,MAAM9d,EAAUvb,GAAUrxC,EAAQ,OAAO,EACnC2qE,EAAoB,KAAK,MAAM,QAAU,KAAK,WAAW,QAAU,KAAK,KAAK,QAAU,KAAK,UAAU,QAAU,KAAK,OAAO,OAC9H3qE,EAAQ,SAAW2qE,IACnBrqE,EAAI,KAAI,EACRA,EAAI,YAAcoqE,EAClB,KAAK,eAAen0B,EAAIj2C,EAAKiqE,EAAavqE,CAAO,EACjD46C,GAAsBt6C,EAAKN,EAAQ,aAAa,EAChDu2C,EAAG,GAAKqW,EAAQ,IAChB,KAAK,UAAUrW,EAAIj2C,EAAKN,CAAO,EAC/B,KAAK,SAASu2C,EAAIj2C,EAAKN,CAAO,EAC9B,KAAK,WAAWu2C,EAAIj2C,EAAKN,CAAO,EAChC+6C,GAAqBz6C,EAAKN,EAAQ,aAAa,EAC/CM,EAAI,QAAO,EAElB,CACJ,mBAAoB,CACb,OAAO,KAAK,SAAW,EAC1B,CACJ,kBAAkBsgE,EAAgBiE,EAAe,CAC1C,MAAMhE,EAAa,KAAK,QAClBrd,EAASod,EAAe,IAAI,CAAC,CAAE,aAAA9jB,EAAe,MAAA70C,KAAW,CAC3D,MAAMyhC,EAAO,KAAK,MAAM,eAAeoT,CAAY,EACnD,GAAI,CAACpT,EACD,MAAM,IAAI,MAAM,kCAAoCoT,CAAY,EAEpE,MAAO,CACH,aAAAA,EACA,QAASpT,EAAK,KAAKzhC,CAAK,EACxB,MAAAA,CAChB,CACA,CAAS,EACKwiC,EAAU,CAACxH,GAAe49B,EAAYrd,CAAM,EAC5ConB,EAAkB,KAAK,iBAAiBpnB,EAAQqhB,CAAa,GAC/Dp6B,GAAWmgC,KACX,KAAK,QAAUpnB,EACf,KAAK,eAAiBqhB,EACtB,KAAK,oBAAsB,GAC3B,KAAK,OAAO,EAAI,EAEvB,CACJ,YAAYxmD,EAAG0iD,EAAQjD,EAAc,GAAM,CACpC,GAAIiD,GAAU,KAAK,oBACf,MAAO,GAEX,KAAK,oBAAsB,GAC3B,MAAM/gE,EAAU,KAAK,QACf6gE,EAAa,KAAK,SAAW,GAC7Brd,EAAS,KAAK,mBAAmBnlC,EAAGwiD,EAAYE,EAAQjD,CAAW,EACnE8M,EAAkB,KAAK,iBAAiBpnB,EAAQnlC,CAAC,EACjDosB,EAAUs2B,GAAU,CAAC99B,GAAeugB,EAAQqd,CAAU,GAAK+J,EACjE,OAAIngC,IACA,KAAK,QAAU+Y,GACXxjD,EAAQ,SAAWA,EAAQ,YAC3B,KAAK,eAAiB,CAClB,EAAGqe,EAAE,EACL,EAAGA,EAAE,CACzB,EACgB,KAAK,OAAO,GAAM0iD,CAAM,IAGzBt2B,CACV,CACJ,mBAAmBpsB,EAAGwiD,EAAYE,EAAQjD,EAAa,CAChD,MAAM99D,EAAU,KAAK,QACrB,GAAIqe,EAAE,OAAS,WACX,MAAO,GAEX,GAAI,CAACy/C,EACD,OAAO+C,EAAW,OAAQ70E,GAAI,KAAK,MAAM,KAAK,SAASA,EAAE,YAAY,GAAK,KAAK,MAAM,eAAeA,EAAE,YAAY,EAAE,WAAW,UAAUA,EAAE,KAAK,IAAM,MAAS,EAEnK,MAAMw3D,EAAS,KAAK,MAAM,0BAA0BnlC,EAAGre,EAAQ,KAAMA,EAAS+gE,CAAM,EACpF,OAAI/gE,EAAQ,SACRwjD,EAAO,QAAO,EAEXA,CACV,CACJ,iBAAiBA,EAAQnlC,EAAG,CACrB,KAAM,CAAE,OAAAwsD,EAAS,OAAAC,EAAS,QAAA9qE,CAAO,EAAM,KACjCirB,EAAW05C,GAAY3kE,EAAQ,QAAQ,EAAE,KAAK,KAAMwjD,EAAQnlC,CAAC,EACnE,OAAO4M,IAAa,KAAU4/C,IAAW5/C,EAAS,GAAK6/C,IAAW7/C,EAAS,EAC9E,CACL,CA3hBCm5B,GADK4jB,GACE,cAAcrD,IA4hBtB,IAAIoG,GAAiB,CACjB,GAAI,UACJ,SAAU/C,GACV,YAAArD,GACA,UAAW32B,EAAOg9B,EAAOhrE,EAAS,CAC1BA,IACAguC,EAAM,QAAU,IAAIg6B,GAAQ,CACxB,MAAAh6B,EACA,QAAAhuC,CAChB,CAAa,EAER,EACD,aAAcguC,EAAOg9B,EAAOhrE,EAAS,CAC7BguC,EAAM,SACNA,EAAM,QAAQ,WAAWhuC,CAAO,CAEvC,EACD,MAAOguC,EAAOg9B,EAAOhrE,EAAS,CACtBguC,EAAM,SACNA,EAAM,QAAQ,WAAWhuC,CAAO,CAEvC,EACD,UAAWguC,EAAO,CACd,MAAMq3B,EAAUr3B,EAAM,QACtB,GAAIq3B,GAAWA,EAAQ,cAAe,CAClC,MAAM1wE,EAAO,CACT,QAAA0wE,CAChB,EACY,GAAIr3B,EAAM,cAAc,oBAAqB,CACzC,GAAGr5C,EACH,WAAY,EACf,CAAA,IAAM,GACH,OAEJ0wE,EAAQ,KAAKr3B,EAAM,GAAG,EACtBA,EAAM,cAAc,mBAAoBr5C,CAAI,CAC/C,CACJ,EACD,WAAYq5C,EAAOr5C,EAAM,CACrB,GAAIq5C,EAAM,QAAS,CACf,MAAMmb,EAAmBx0D,EAAK,OAC1Bq5C,EAAM,QAAQ,YAAYr5C,EAAK,MAAOw0D,EAAkBx0D,EAAK,WAAW,IACxEA,EAAK,QAAU,GAEtB,CACJ,EACD,SAAU,CACN,QAAS,GACT,SAAU,KACV,SAAU,UACV,gBAAiB,kBACjB,WAAY,OACZ,UAAW,CACP,OAAQ,MACX,EACD,aAAc,EACd,kBAAmB,EACnB,WAAY,OACZ,UAAW,OACX,YAAa,EACb,SAAU,CAAE,EACZ,UAAW,OACX,YAAa,OACb,cAAe,EACf,gBAAiB,EACjB,WAAY,CACR,OAAQ,MACX,EACD,YAAa,OACb,QAAS,EACT,aAAc,EACd,UAAW,EACX,aAAc,EACd,UAAW,CAAC2L,EAAKy6B,IAAOA,EAAK,SAAS,KACtC,SAAU,CAACz6B,EAAKy6B,IAAOA,EAAK,SAAS,KACrC,mBAAoB,OACpB,cAAe,GACf,WAAY,EACZ,YAAa,gBACb,YAAa,EACb,UAAW,CACP,SAAU,IACV,OAAQ,cACX,EACD,WAAY,CACR,QAAS,CACL,KAAM,SACN,WAAY,CACR,IACA,IACA,QACA,SACA,SACA,QACH,CACJ,EACD,QAAS,CACL,OAAQ,SACR,SAAU,GACb,CACJ,EACD,UAAW6sC,EACd,EACD,cAAe,CACX,SAAU,OACV,WAAY,OACZ,UAAW,MACd,EACD,YAAa,CACT,YAAct4E,GAAOA,IAAS,UAAYA,IAAS,YAAcA,IAAS,WAC1E,WAAY,GACZ,UAAW,CACP,YAAa,GACb,WAAY,EACf,EACD,UAAW,CACP,UAAW,EACd,EACD,WAAY,CACR,UAAW,WACd,CACJ,EACD,uBAAwB,CACpB,aACH,CACL,EAaA,MAAM27E,GAAc,CAACnoB,EAAQlpD,EAAKqO,EAAOijE,KACjC,OAAOtxE,GAAQ,UACfqO,EAAQ66C,EAAO,KAAKlpD,CAAG,EAAI,EAC3BsxE,EAAY,QAAQ,CAChB,MAAAjjE,EACA,MAAOrO,CACnB,CAAS,GACM,MAAMA,CAAG,IAChBqO,EAAQ,MAELA,GAEX,SAASkjE,GAAeroB,EAAQlpD,EAAKqO,EAAOijE,EAAa,CACrD,MAAMt2C,EAAQkuB,EAAO,QAAQlpD,CAAG,EAChC,GAAIg7B,IAAU,GACV,OAAOq2C,GAAYnoB,EAAQlpD,EAAKqO,EAAOijE,CAAW,EAEtD,MAAM/5E,EAAO2xD,EAAO,YAAYlpD,CAAG,EACnC,OAAOg7B,IAAUzjC,EAAO8W,EAAQ2sB,CACpC,CACA,MAAM08B,GAAa,CAACrpD,EAAOk4B,IAAMl4B,IAAU,KAAO,KAAO0/B,GAAY,KAAK,MAAM1/B,CAAK,EAAG,EAAGk4B,CAAG,EAC9F,SAASirC,GAAkBt+E,EAAO,CAC9B,MAAMg2D,EAAS,KAAK,YACpB,OAAIh2D,GAAS,GAAKA,EAAQg2D,EAAO,OACtBA,EAAOh2D,CAAK,EAEhBA,CACX,CACA,MAAMu+E,WAAsBjZ,EAAM,CAO9B,YAAYnU,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,YAAc,OACpB,KAAK,YAAc,EACnB,KAAK,aAAe,EACvB,CACD,KAAK6c,EAAc,CACf,MAAMwQ,EAAQ,KAAK,aACnB,GAAIA,EAAM,OAAQ,CACd,MAAMxoB,EAAS,KAAK,YACpB,SAAW,CAAE,MAAA76C,EAAQ,MAAAgtD,CAAK,IAAOqW,EACzBxoB,EAAO76C,CAAK,IAAMgtD,GAClBnS,EAAO,OAAO76C,EAAO,CAAC,EAG9B,KAAK,aAAe,EACvB,CACD,MAAM,KAAK6yD,CAAY,CAC1B,CACD,MAAMlhE,EAAKqO,EAAO,CACd,GAAIu6B,GAAc5oC,CAAG,EACjB,OAAO,KAEX,MAAMkpD,EAAS,KAAK,YACpB,OAAA76C,EAAQ,SAASA,CAAK,GAAK66C,EAAO76C,CAAK,IAAMrO,EAAMqO,EAAQkjE,GAAeroB,EAAQlpD,EAAK+oC,GAAe16B,EAAOrO,CAAG,EAAG,KAAK,YAAY,EAC7H03D,GAAWrpD,EAAO66C,EAAO,OAAS,CAAC,CAC7C,CACD,qBAAsB,CAClB,KAAM,CAAE,WAAA5Y,EAAa,WAAAC,CAAa,EAAG,KAAK,cAAa,EACvD,GAAI,CAAE,IAAAtT,EAAM,IAAAsJ,CAAG,EAAM,KAAK,UAAU,EAAI,EACpC,KAAK,QAAQ,SAAW,UACnB+J,IACDrT,EAAM,GAELsT,IACDhK,EAAM,KAAK,YAAY,OAAS,IAGxC,KAAK,IAAMtJ,EACX,KAAK,IAAMsJ,CACd,CACD,YAAa,CACT,MAAMtJ,EAAM,KAAK,IACXsJ,EAAM,KAAK,IACXgwB,EAAS,KAAK,QAAQ,OACtBxkB,EAAQ,CAAA,EACd,IAAImX,EAAS,KAAK,YAClBA,EAASjsB,IAAQ,GAAKsJ,IAAQ2iB,EAAO,OAAS,EAAIA,EAASA,EAAO,MAAMjsB,EAAKsJ,EAAM,CAAC,EACpF,KAAK,YAAc,KAAK,IAAI2iB,EAAO,QAAUqN,EAAS,EAAI,GAAI,CAAC,EAC/D,KAAK,YAAc,KAAK,KAAOA,EAAS,GAAM,GAC9C,QAAQrjE,EAAQ+pC,EAAK/pC,GAASqzC,EAAKrzC,IAC/B6+C,EAAM,KAAK,CACP,MAAA7+C,CAChB,CAAa,EAEL,OAAO6+C,CACV,CACD,iBAAiB7+C,EAAO,CACpB,OAAOs+E,GAAkB,KAAK,KAAMt+E,CAAK,CAC5C,CACJ,WAAY,CACL,MAAM,UAAS,EACV,KAAK,iBACN,KAAK,eAAiB,CAAC,KAAK,eAEnC,CACD,iBAAiBA,EAAO,CACpB,OAAI,OAAOA,GAAU,WACjBA,EAAQ,KAAK,MAAMA,CAAK,GAErBA,IAAU,KAAO,IAAM,KAAK,oBAAoBA,EAAQ,KAAK,aAAe,KAAK,WAAW,CACtG,CACD,gBAAgBmb,EAAO,CACnB,MAAM0jC,EAAQ,KAAK,MACnB,OAAI1jC,EAAQ,GAAKA,EAAQ0jC,EAAM,OAAS,EAC7B,KAEJ,KAAK,iBAAiBA,EAAM1jC,CAAK,EAAE,KAAK,CAClD,CACD,iBAAiBgmC,EAAO,CACpB,OAAO,KAAK,MAAM,KAAK,YAAc,KAAK,mBAAmBA,CAAK,EAAI,KAAK,WAAW,CACzF,CACD,cAAe,CACX,OAAO,KAAK,MACf,CACL,CA3FImW,GADEinB,GACK,KAAK,YACfjnB,GAFKinB,GAEE,WAAW,CACX,MAAO,CACH,SAAUD,EACb,CACT,GAwFA,SAASG,GAAgBC,EAAmBC,EAAW,CACnD,MAAM9/B,EAAQ,CAAA,EAER,CAAE,OAAAyP,EAAS,KAAAub,EAAO,IAAA9/B,EAAM,IAAAsJ,EAAM,UAAAurC,EAAY,MAAA5hC,EAAQ,SAAA6hC,EAAW,UAAAC,EAAY,cAAAC,CAAa,EAAML,EAC5FM,EAAOnV,GAAQ,EACfoV,EAAYJ,EAAW,EACvB,CAAE,IAAKK,EAAO,IAAKC,CAAI,EAAMR,EAC7BvhC,EAAa,CAAC1H,GAAc3L,CAAG,EAC/BsT,EAAa,CAAC3H,GAAcrC,CAAG,EAC/B+rC,EAAe,CAAC1pC,GAAcsH,CAAK,EACnCqiC,GAAcF,EAAOD,IAASJ,EAAY,GAChD,IAAI7b,EAAUvqB,IAASymC,EAAOD,GAAQD,EAAYD,CAAI,EAAIA,EACtDhuB,EAAQsuB,EAASC,EAASC,EAC9B,GAAIvc,EAAU,OAAe,CAAC7lB,GAAc,CAACC,EACzC,MAAO,CACH,CACI,MAAO6hC,CACV,EACD,CACI,MAAOC,CACV,CACb,EAEIK,EAAY,KAAK,KAAKL,EAAOlc,CAAO,EAAI,KAAK,MAAMic,EAAOjc,CAAO,EAC7Duc,EAAYP,IACZhc,EAAUvqB,GAAQ8mC,EAAYvc,EAAUgc,EAAYD,CAAI,EAAIA,GAE3DtpC,GAAckpC,CAAS,IACxB5tB,EAAS,KAAK,IAAI,GAAI4tB,CAAS,EAC/B3b,EAAU,KAAK,KAAKA,EAAUjS,CAAM,EAAIA,GAExC1C,IAAW,SACXgxB,EAAU,KAAK,MAAMJ,EAAOjc,CAAO,EAAIA,EACvCsc,EAAU,KAAK,KAAKJ,EAAOlc,CAAO,EAAIA,IAEtCqc,EAAUJ,EACVK,EAAUJ,GAEV/hC,GAAcC,GAAcwsB,GAAQ5wB,IAAa5F,EAAMtJ,GAAO8/B,EAAM5G,EAAU,GAAI,GAClFuc,EAAY,KAAK,MAAM,KAAK,KAAKnsC,EAAMtJ,GAAOk5B,EAAS4b,CAAQ,CAAC,EAChE5b,GAAW5vB,EAAMtJ,GAAOy1C,EACxBF,EAAUv1C,EACVw1C,EAAUlsC,GACH+rC,GACPE,EAAUliC,EAAarT,EAAMu1C,EAC7BC,EAAUliC,EAAahK,EAAMksC,EAC7BC,EAAYxiC,EAAQ,EACpBimB,GAAWsc,EAAUD,GAAWE,IAEhCA,GAAaD,EAAUD,GAAWrc,EAC9B3qB,GAAaknC,EAAW,KAAK,MAAMA,CAAS,EAAGvc,EAAU,GAAI,EAC7Duc,EAAY,KAAK,MAAMA,CAAS,EAEhCA,EAAY,KAAK,KAAKA,CAAS,GAGvC,MAAMC,EAAgB,KAAK,IAAI/lC,GAAeupB,CAAO,EAAGvpB,GAAe4lC,CAAO,CAAC,EAC/EtuB,EAAS,KAAK,IAAI,GAAItb,GAAckpC,CAAS,EAAIa,EAAgBb,CAAS,EAC1EU,EAAU,KAAK,MAAMA,EAAUtuB,CAAM,EAAIA,EACzCuuB,EAAU,KAAK,MAAMA,EAAUvuB,CAAM,EAAIA,EACzC,IAAI,EAAI,EAgBR,IAfI5T,IACI2hC,GAAiBO,IAAYv1C,GAC7B8U,EAAM,KAAK,CACP,MAAO9U,CACvB,CAAa,EACGu1C,EAAUv1C,GACV,IAEAuO,GAAa,KAAK,OAAOgnC,EAAU,EAAIrc,GAAWjS,CAAM,EAAIA,EAAQjnB,EAAK21C,GAAkB31C,EAAKs1C,EAAYX,CAAiB,CAAC,GAC9H,KAEGY,EAAUv1C,GACjB,KAGF,EAAIy1C,EAAW,EAAE,EAAE,CACrB,MAAM5gC,EAAY,KAAK,OAAO0gC,EAAU,EAAIrc,GAAWjS,CAAM,EAAIA,EACjE,GAAI3T,GAAcuB,EAAYvL,EAC1B,MAEJwL,EAAM,KAAK,CACP,MAAOD,CACnB,CAAS,CACJ,CACD,OAAIvB,GAAc0hC,GAAiBQ,IAAYlsC,EACvCwL,EAAM,QAAUvG,GAAauG,EAAMA,EAAM,OAAS,CAAC,EAAE,MAAOxL,EAAKqsC,GAAkBrsC,EAAKgsC,EAAYX,CAAiB,CAAC,EACtH7/B,EAAMA,EAAM,OAAS,CAAC,EAAE,MAAQxL,EAEhCwL,EAAM,KAAK,CACP,MAAOxL,CACvB,CAAa,GAEE,CAACgK,GAAckiC,IAAYlsC,IAClCwL,EAAM,KAAK,CACP,MAAO0gC,CACnB,CAAS,EAEE1gC,CACX,CACA,SAAS6gC,GAAkB1/E,EAAOq/E,EAAY,CAAE,WAAAxlB,EAAa,YAAAoM,CAAW,EAAK,CACzE,MAAM/jB,EAAM5I,GAAU2sB,CAAW,EAC3BjxB,GAAS6kB,EAAa,KAAK,IAAI3X,CAAG,EAAI,KAAK,IAAIA,CAAG,IAAM,KACxDjiB,EAAS,IAAOo/C,GAAc,GAAKr/E,GAAO,OAChD,OAAO,KAAK,IAAIq/E,EAAarqC,EAAO/U,CAAM,CAC9C,CACA,MAAM0/C,WAAwBra,EAAM,CAChC,YAAYnU,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,MAAQ,OACb,KAAK,IAAM,OACX,KAAK,YAAc,OACnB,KAAK,UAAY,OAClB,KAAK,YAAc,CACtB,CACD,MAAMrkD,EAAKqO,EAAO,CAId,OAHIu6B,GAAc5oC,CAAG,IAGhB,OAAOA,GAAQ,UAAYA,aAAe,SAAW,CAAC,SAAS,CAACA,CAAG,EAC7D,KAEJ,CAACA,CACX,CACD,wBAAyB,CACrB,KAAM,CAAE,YAAAi4C,CAAW,EAAM,KAAK,QACxB,CAAE,WAAA3H,EAAa,WAAAC,CAAa,EAAG,KAAK,cAAa,EACvD,GAAI,CAAE,IAAAtT,EAAM,IAAAsJ,CAAM,EAAG,KACrB,MAAMusC,EAAU/7E,GAAIkmC,EAAMqT,EAAarT,EAAMlmC,EACvCg8E,EAAUh8E,GAAIwvC,EAAMgK,EAAahK,EAAMxvC,EAC7C,GAAIkhD,EAAa,CACb,MAAM+6B,EAAUznC,GAAKtO,CAAG,EAClBg2C,EAAU1nC,GAAKhF,CAAG,EACpBysC,EAAU,GAAKC,EAAU,EACzBF,EAAO,CAAC,EACDC,EAAU,GAAKC,EAAU,GAChCH,EAAO,CAAC,CAEf,CACD,GAAI71C,IAAQsJ,EAAK,CACb,IAAIgwB,EAAShwB,IAAQ,EAAI,EAAI,KAAK,IAAIA,EAAM,GAAI,EAChDwsC,EAAOxsC,EAAMgwB,CAAM,EACdte,GACD66B,EAAO71C,EAAMs5B,CAAM,CAE1B,CACD,KAAK,IAAMt5B,EACX,KAAK,IAAMsJ,CACd,CACD,cAAe,CACX,MAAMmvB,EAAW,KAAK,QAAQ,MAC9B,GAAI,CAAE,cAAA0B,EAAgB,SAAA8b,CAAW,EAAGxd,EAChCqc,EACJ,OAAImB,GACAnB,EAAW,KAAK,KAAK,KAAK,IAAMmB,CAAQ,EAAI,KAAK,MAAM,KAAK,IAAMA,CAAQ,EAAI,EAC1EnB,EAAW,MACX,QAAQ,KAAK,UAAU,KAAK,EAAE,oBAAoBmB,CAAQ,kCAAkCnB,CAAQ,2BAA2B,EAC/HA,EAAW,OAGfA,EAAW,KAAK,mBAChB3a,EAAgBA,GAAiB,IAEjCA,IACA2a,EAAW,KAAK,IAAI3a,EAAe2a,CAAQ,GAExCA,CACV,CACJ,kBAAmB,CACZ,OAAO,OAAO,iBACjB,CACD,YAAa,CACT,MAAM5wC,EAAO,KAAK,QACZu0B,EAAWv0B,EAAK,MACtB,IAAI4wC,EAAW,KAAK,eACpBA,EAAW,KAAK,IAAI,EAAGA,CAAQ,EAC/B,MAAMoB,EAA0B,CAC5B,SAAApB,EACA,OAAQ5wC,EAAK,OACb,IAAKA,EAAK,IACV,IAAKA,EAAK,IACV,UAAWu0B,EAAS,UACpB,KAAMA,EAAS,SACf,MAAOA,EAAS,MAChB,UAAW,KAAK,WAAY,EAC5B,WAAY,KAAK,aAAc,EAC/B,YAAaA,EAAS,aAAe,EACrC,cAAeA,EAAS,gBAAkB,EACtD,EACcmc,EAAY,KAAK,QAAU,KAC3B9/B,EAAQ4/B,GAAgBwB,EAAyBtB,CAAS,EAChE,OAAI1wC,EAAK,SAAW,SAChBkL,GAAmB0F,EAAO,KAAM,OAAO,EAEvC5Q,EAAK,SACL4Q,EAAM,QAAO,EACb,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,MAEhB,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEbA,CACV,CACJ,WAAY,CACL,MAAMA,EAAQ,KAAK,MACnB,IAAInuC,EAAQ,KAAK,IACbC,EAAM,KAAK,IAEf,GADA,MAAM,UAAS,EACX,KAAK,QAAQ,QAAUkuC,EAAM,OAAQ,CACrC,MAAMwkB,GAAU1yD,EAAMD,GAAS,KAAK,IAAImuC,EAAM,OAAS,EAAG,CAAC,EAAI,EAC/DnuC,GAAS2yD,EACT1yD,GAAO0yD,CACV,CACD,KAAK,YAAc3yD,EACnB,KAAK,UAAYC,EACjB,KAAK,YAAcA,EAAMD,CAC5B,CACD,iBAAiB1Q,EAAO,CACpB,OAAO0+C,GAAa1+C,EAAO,KAAK,MAAM,QAAQ,OAAQ,KAAK,QAAQ,MAAM,MAAM,CAClF,CACL,CAEA,MAAMkgF,WAAoBP,EAAgB,CAOtC,qBAAsB,CAClB,KAAM,CAAE,IAAA51C,EAAM,IAAAsJ,CAAG,EAAM,KAAK,UAAU,EAAI,EAC1C,KAAK,IAAMsC,GAAe5L,CAAG,EAAIA,EAAM,EACvC,KAAK,IAAM4L,GAAetC,CAAG,EAAIA,EAAM,EACvC,KAAK,uBAAsB,CAC9B,CACJ,kBAAmB,CACZ,MAAMwmB,EAAa,KAAK,eAClB55B,EAAS45B,EAAa,KAAK,MAAQ,KAAK,OACxCoM,EAAc3sB,GAAU,KAAK,QAAQ,MAAM,WAAW,EACtDtE,GAAS6kB,EAAa,KAAK,IAAIoM,CAAW,EAAI,KAAK,IAAIA,CAAW,IAAM,KACxEmC,EAAW,KAAK,wBAAwB,CAAC,EAC/C,OAAO,KAAK,KAAKnoC,EAAS,KAAK,IAAI,GAAImoC,EAAS,WAAapzB,CAAK,CAAC,CACtE,CACD,iBAAiBh1C,EAAO,CACpB,OAAOA,IAAU,KAAO,IAAM,KAAK,oBAAoBA,EAAQ,KAAK,aAAe,KAAK,WAAW,CACtG,CACD,iBAAiBmhD,EAAO,CACpB,OAAO,KAAK,YAAc,KAAK,mBAAmBA,CAAK,EAAI,KAAK,WACnE,CACL,CA1BImW,GADE4oB,GACK,KAAK,UACf5oB,GAFK4oB,GAEE,WAAW,CACX,MAAO,CACH,SAAU7gC,GAAM,WAAW,OAC9B,CACT,GAuBA,MAAM8gC,GAAct8E,GAAI,KAAK,MAAMu0C,GAAMv0C,CAAC,CAAC,EACrCu8E,GAAiB,CAACv8E,EAAGmb,IAAI,KAAK,IAAI,GAAImhE,GAAWt8E,CAAC,EAAImb,CAAC,EAC7D,SAASqhE,GAAQC,EAAS,CAEtB,OADeA,EAAU,KAAK,IAAI,GAAIH,GAAWG,CAAO,CAAC,IACvC,CACtB,CACA,SAASC,GAAMx2C,EAAKsJ,EAAKmtC,EAAU,CAC/B,MAAMC,EAAY,KAAK,IAAI,GAAID,CAAQ,EACjC9vE,EAAQ,KAAK,MAAMq5B,EAAM02C,CAAS,EAExC,OADY,KAAK,KAAKptC,EAAMotC,CAAS,EACxB/vE,CACjB,CACA,SAASgwE,GAAS32C,EAAKsJ,EAAK,CACxB,MAAMsF,EAAQtF,EAAMtJ,EACpB,IAAIy2C,EAAWL,GAAWxnC,CAAK,EAC/B,KAAM4nC,GAAMx2C,EAAKsJ,EAAKmtC,CAAQ,EAAI,IAC9BA,IAEJ,KAAMD,GAAMx2C,EAAKsJ,EAAKmtC,CAAQ,EAAI,IAC9BA,IAEJ,OAAO,KAAK,IAAIA,EAAUL,GAAWp2C,CAAG,CAAC,CAC7C,CACC,SAAS42C,GAAcjC,EAAmB,CAAE,IAAA30C,EAAM,IAAAsJ,CAAG,EAAK,CACvDtJ,EAAM6L,GAAgB8oC,EAAkB,IAAK30C,CAAG,EAChD,MAAM8U,EAAQ,CAAA,EACR+hC,EAAST,GAAWp2C,CAAG,EAC7B,IAAI82C,EAAMH,GAAS32C,EAAKsJ,CAAG,EACvBurC,EAAYiC,EAAM,EAAI,KAAK,IAAI,GAAI,KAAK,IAAIA,CAAG,CAAC,EAAI,EACxD,MAAMb,EAAW,KAAK,IAAI,GAAIa,CAAG,EAC3BniE,EAAOkiE,EAASC,EAAM,KAAK,IAAI,GAAID,CAAM,EAAI,EAC7ClwE,EAAQ,KAAK,OAAOq5B,EAAMrrB,GAAQkgE,CAAS,EAAIA,EAC/Cvb,EAAS,KAAK,OAAOt5B,EAAMrrB,GAAQshE,EAAW,EAAE,EAAIA,EAAW,GACrE,IAAIc,EAAc,KAAK,OAAOpwE,EAAQ2yD,GAAU,KAAK,IAAI,GAAIwd,CAAG,CAAC,EAC7D7gF,EAAQ41C,GAAgB8oC,EAAkB,IAAK,KAAK,OAAOhgE,EAAO2kD,EAASyd,EAAc,KAAK,IAAI,GAAID,CAAG,GAAKjC,CAAS,EAAIA,CAAS,EACxI,KAAM5+E,EAAQqzC,GACVwL,EAAM,KAAK,CACP,MAAA7+C,EACA,MAAOqgF,GAAQrgF,CAAK,EACpB,YAAA8gF,CACZ,CAAS,EACGA,GAAe,GACfA,EAAcA,EAAc,GAAK,GAAK,GAEtCA,IAEAA,GAAe,KACfD,IACAC,EAAc,EACdlC,EAAYiC,GAAO,EAAI,EAAIjC,GAE/B5+E,EAAQ,KAAK,OAAO0e,EAAO2kD,EAASyd,EAAc,KAAK,IAAI,GAAID,CAAG,GAAKjC,CAAS,EAAIA,EAExF,MAAMmC,EAAWnrC,GAAgB8oC,EAAkB,IAAK1+E,CAAK,EAC7D,OAAA6+C,EAAM,KAAK,CACP,MAAOkiC,EACP,MAAOV,GAAQU,CAAQ,EACvB,YAAAD,CACR,CAAK,EACMjiC,CACX,CACA,MAAMmiC,WAAyB1b,EAAM,CAUjC,YAAYnU,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,MAAQ,OACb,KAAK,IAAM,OACX,KAAK,YAAc,OACpB,KAAK,YAAc,CACtB,CACD,MAAMrkD,EAAKqO,EAAO,CACd,MAAMnb,EAAQ2/E,GAAgB,UAAU,MAAM,MAAM,KAAM,CACtD7yE,EACAqO,CACZ,CAAS,EACD,GAAInb,IAAU,EAAG,CACb,KAAK,MAAQ,GACb,MACH,CACD,OAAO21C,GAAe31C,CAAK,GAAKA,EAAQ,EAAIA,EAAQ,IACvD,CACD,qBAAsB,CAClB,KAAM,CAAE,IAAA+pC,EAAM,IAAAsJ,CAAG,EAAM,KAAK,UAAU,EAAI,EAC1C,KAAK,IAAMsC,GAAe5L,CAAG,EAAI,KAAK,IAAI,EAAGA,CAAG,EAAI,KACpD,KAAK,IAAM4L,GAAetC,CAAG,EAAI,KAAK,IAAI,EAAGA,CAAG,EAAI,KAChD,KAAK,QAAQ,cACb,KAAK,MAAQ,IAEb,KAAK,OAAS,KAAK,MAAQ,KAAK,eAAiB,CAACsC,GAAe,KAAK,QAAQ,IAC9E,KAAK,IAAM5L,IAAQq2C,GAAe,KAAK,IAAK,CAAC,EAAIA,GAAe,KAAK,IAAK,EAAE,EAAIA,GAAe,KAAK,IAAK,CAAC,GAE9G,KAAK,uBAAsB,CAC9B,CACD,wBAAyB,CACrB,KAAM,CAAE,WAAAhjC,EAAa,WAAAC,CAAa,EAAG,KAAK,cAAa,EACvD,IAAItT,EAAM,KAAK,IACXsJ,EAAM,KAAK,IACf,MAAMusC,EAAU/7E,GAAIkmC,EAAMqT,EAAarT,EAAMlmC,EACvCg8E,EAAUh8E,GAAIwvC,EAAMgK,EAAahK,EAAMxvC,EACzCkmC,IAAQsJ,IACJtJ,GAAO,GACP61C,EAAO,CAAC,EACRC,EAAO,EAAE,IAETD,EAAOQ,GAAer2C,EAAK,EAAE,CAAC,EAC9B81C,EAAOO,GAAe/sC,EAAK,CAAE,CAAC,IAGlCtJ,GAAO,GACP61C,EAAOQ,GAAe/sC,EAAK,EAAE,CAAC,EAE9BA,GAAO,GACPwsC,EAAOO,GAAer2C,EAAK,CAAE,CAAC,EAElC,KAAK,IAAMA,EACX,KAAK,IAAMsJ,CACd,CACD,YAAa,CACT,MAAMpF,EAAO,KAAK,QACZywC,EAAoB,CACtB,IAAK,KAAK,SACV,IAAK,KAAK,QACtB,EACc7/B,EAAQ8hC,GAAcjC,EAAmB,IAAI,EACnD,OAAIzwC,EAAK,SAAW,SAChBkL,GAAmB0F,EAAO,KAAM,OAAO,EAEvC5Q,EAAK,SACL4Q,EAAM,QAAO,EACb,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,MAEhB,KAAK,MAAQ,KAAK,IAClB,KAAK,IAAM,KAAK,KAEbA,CACV,CACJ,iBAAiB7+C,EAAO,CACjB,OAAOA,IAAU,OAAY,IAAM0+C,GAAa1+C,EAAO,KAAK,MAAM,QAAQ,OAAQ,KAAK,QAAQ,MAAM,MAAM,CAC9G,CACJ,WAAY,CACL,MAAM0Q,EAAQ,KAAK,IACnB,MAAM,UAAS,EACf,KAAK,YAAc0nC,GAAM1nC,CAAK,EAC9B,KAAK,YAAc0nC,GAAM,KAAK,GAAG,EAAIA,GAAM1nC,CAAK,CACnD,CACD,iBAAiB1Q,EAAO,CAIpB,OAHIA,IAAU,QAAaA,IAAU,KACjCA,EAAQ,KAAK,KAEbA,IAAU,MAAQ,MAAMA,CAAK,EACtB,IAEJ,KAAK,mBAAmBA,IAAU,KAAK,IAAM,GAAKo4C,GAAMp4C,CAAK,EAAI,KAAK,aAAe,KAAK,WAAW,CAC/G,CACD,iBAAiBmhD,EAAO,CACpB,MAAMsnB,EAAU,KAAK,mBAAmBtnB,CAAK,EAC7C,OAAO,KAAK,IAAI,GAAI,KAAK,YAAcsnB,EAAU,KAAK,WAAW,CACpE,CACL,CAzGInR,GADE0pB,GACK,KAAK,eACf1pB,GAFK0pB,GAEE,WAAW,CACX,MAAO,CACH,SAAU3hC,GAAM,WAAW,YAC3B,MAAO,CACH,QAAS,EACZ,CACJ,CACT,GAmGA,SAAS4hC,GAAsBhzC,EAAM,CACjC,MAAMu0B,EAAWv0B,EAAK,MACtB,GAAIu0B,EAAS,SAAWv0B,EAAK,QAAS,CAClC,MAAM6xB,EAAUvb,GAAUie,EAAS,eAAe,EAClD,OAAO3sB,GAAe2sB,EAAS,MAAQA,EAAS,KAAK,KAAM59B,GAAS,KAAK,IAAI,EAAIk7B,EAAQ,MAC5F,CACD,MAAO,EACX,CACA,SAASohB,GAAiB1tE,EAAK8sC,EAAM6nB,EAAO,CACxC,OAAAA,EAAQ9oE,GAAQ8oE,CAAK,EAAIA,EAAQ,CAC7BA,CACR,EACW,CACH,EAAGvnB,GAAaptC,EAAK8sC,EAAK,OAAQ6nB,CAAK,EACvC,EAAGA,EAAM,OAAS7nB,EAAK,UAC/B,CACA,CACA,SAAS6gC,GAAgBlnC,EAAO8Q,EAAK9gD,EAAM8/B,EAAKsJ,EAAK,CACjD,OAAI4G,IAAUlQ,GAAOkQ,IAAU5G,EACpB,CACH,MAAO0X,EAAM9gD,EAAO,EACpB,IAAK8gD,EAAM9gD,EAAO,CAC9B,EACegwC,EAAQlQ,GAAOkQ,EAAQ5G,EACvB,CACH,MAAO0X,EAAM9gD,EACb,IAAK8gD,CACjB,EAEW,CACH,MAAOA,EACP,IAAKA,EAAM9gD,CACnB,CACA,CACC,SAASm3E,GAAmBhvB,EAAO,CAChC,MAAMiH,EAAO,CACT,EAAGjH,EAAM,KAAOA,EAAM,SAAS,KAC/B,EAAGA,EAAM,MAAQA,EAAM,SAAS,MAChC,EAAGA,EAAM,IAAMA,EAAM,SAAS,IAC9B,EAAGA,EAAM,OAASA,EAAM,SAAS,MACzC,EACUivB,EAAS,OAAO,OAAO,CAAE,EAAEhoB,CAAI,EAC/BiN,EAAa,CAAA,EACbxG,EAAU,CAAA,EACVwhB,EAAalvB,EAAM,aAAa,OAChCmvB,EAAiBnvB,EAAM,QAAQ,YAC/BovB,EAAkBD,EAAe,kBAAoB3pC,GAAK0pC,EAAa,EAC7E,QAAQpiF,EAAI,EAAGA,EAAIoiF,EAAYpiF,IAAI,CAC/B,MAAM+uC,EAAOszC,EAAe,WAAWnvB,EAAM,qBAAqBlzD,CAAC,CAAC,EACpE4gE,EAAQ5gE,CAAC,EAAI+uC,EAAK,QAClB,MAAMwzC,EAAgBrvB,EAAM,iBAAiBlzD,EAAGkzD,EAAM,YAAc0N,EAAQ5gE,CAAC,EAAGsiF,CAAe,EACzFE,EAASl9B,GAAOvW,EAAK,IAAI,EACzB0zC,EAAWT,GAAiB9uB,EAAM,IAAKsvB,EAAQtvB,EAAM,aAAalzD,CAAC,CAAC,EAC1EonE,EAAWpnE,CAAC,EAAIyiF,EAChB,MAAMza,EAAe5sB,GAAgB8X,EAAM,cAAclzD,CAAC,EAAIsiF,CAAe,EACvEvnC,EAAQ,KAAK,MAAMT,GAAU0tB,CAAY,CAAC,EAC1C0a,EAAUT,GAAgBlnC,EAAOwnC,EAAc,EAAGE,EAAS,EAAG,EAAG,GAAG,EACpEE,EAAUV,GAAgBlnC,EAAOwnC,EAAc,EAAGE,EAAS,EAAG,GAAI,GAAG,EAC3EG,GAAaT,EAAQhoB,EAAM6N,EAAc0a,EAASC,CAAO,CAC5D,CACDzvB,EAAM,eAAeiH,EAAK,EAAIgoB,EAAO,EAAGA,EAAO,EAAIhoB,EAAK,EAAGA,EAAK,EAAIgoB,EAAO,EAAGA,EAAO,EAAIhoB,EAAK,CAAC,EAC/FjH,EAAM,iBAAmB2vB,GAAqB3vB,EAAOkU,EAAYxG,CAAO,CAC5E,CACA,SAASgiB,GAAaT,EAAQhoB,EAAMpf,EAAO2nC,EAASC,EAAS,CACzD,MAAMza,EAAM,KAAK,IAAI,KAAK,IAAIntB,CAAK,CAAC,EAC9BktB,EAAM,KAAK,IAAI,KAAK,IAAIltB,CAAK,CAAC,EACpC,IAAI1B,EAAI,EACJC,EAAI,EACJopC,EAAQ,MAAQvoB,EAAK,GACrB9gB,GAAK8gB,EAAK,EAAIuoB,EAAQ,OAASxa,EAC/Bia,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAGhoB,EAAK,EAAI9gB,CAAC,GACjCqpC,EAAQ,IAAMvoB,EAAK,IAC1B9gB,GAAKqpC,EAAQ,IAAMvoB,EAAK,GAAK+N,EAC7Bia,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAGhoB,EAAK,EAAI9gB,CAAC,GAExCspC,EAAQ,MAAQxoB,EAAK,GACrB7gB,GAAK6gB,EAAK,EAAIwoB,EAAQ,OAAS1a,EAC/Bka,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAGhoB,EAAK,EAAI7gB,CAAC,GACjCqpC,EAAQ,IAAMxoB,EAAK,IAC1B7gB,GAAKqpC,EAAQ,IAAMxoB,EAAK,GAAK8N,EAC7Bka,EAAO,EAAI,KAAK,IAAIA,EAAO,EAAGhoB,EAAK,EAAI7gB,CAAC,EAEhD,CACA,SAASwpC,GAAqB5vB,EAAOj3C,EAAO8mE,EAAU,CAClD,MAAMC,EAAgB9vB,EAAM,YACtB,CAAE,MAAA+vB,EAAQ,gBAAAX,EAAkB,QAAA1hB,EAAU,KAAA71D,CAAI,EAAMg4E,EAChDG,EAAqBhwB,EAAM,iBAAiBj3C,EAAO+mE,EAAgBC,EAAQriB,EAAS0hB,CAAe,EACnGvnC,EAAQ,KAAK,MAAMT,GAAUc,GAAgB8nC,EAAmB,MAAQnqC,EAAO,CAAC,CAAC,EACjFO,EAAI6pC,GAAUD,EAAmB,EAAGn4E,EAAK,EAAGgwC,CAAK,EACjD0wB,EAAY2X,GAAqBroC,CAAK,EACtCiJ,EAAOq/B,GAAiBH,EAAmB,EAAGn4E,EAAK,EAAG0gE,CAAS,EACrE,MAAO,CACH,QAAS,GACT,EAAGyX,EAAmB,EACtB,EAAA5pC,EACA,UAAAmyB,EACA,KAAAznB,EACA,IAAK1K,EACL,MAAO0K,EAAOj5C,EAAK,EACnB,OAAQuuC,EAAIvuC,EAAK,CACzB,CACA,CACA,SAASu4E,GAAgB1gF,EAAMugD,EAAM,CACjC,GAAI,CAACA,EACD,MAAO,GAEX,KAAM,CAAE,KAAAa,EAAO,IAAAE,EAAM,MAAAD,EAAQ,OAAAE,CAAM,EAAMvhD,EAczC,MAAO,EAbcqgD,GAAe,CAChC,EAAGe,EACH,EAAGE,CACX,EAAOf,CAAI,GAAKF,GAAe,CACvB,EAAGe,EACH,EAAGG,CACX,EAAOhB,CAAI,GAAKF,GAAe,CACvB,EAAGgB,EACH,EAAGC,CACX,EAAOf,CAAI,GAAKF,GAAe,CACvB,EAAGgB,EACH,EAAGE,CACN,EAAEhB,CAAI,EAEX,CACA,SAAS0/B,GAAqB3vB,EAAOkU,EAAYxG,EAAS,CACtD,MAAM9jB,EAAQ,CAAA,EACRslC,EAAalvB,EAAM,aAAa,OAChCnkB,EAAOmkB,EAAM,QACb,CAAE,kBAAAqwB,EAAoB,QAAA7b,GAAa34B,EAAK,YACxCg0C,EAAW,CACb,MAAOhB,GAAsBhzC,CAAI,EAAI,EACrC,gBAAiBw0C,EAAoB7qC,GAAK0pC,EAAa,CAC/D,EACI,IAAIj/B,EACJ,QAAQnjD,EAAI,EAAGA,EAAIoiF,EAAYpiF,IAAI,CAC/B+iF,EAAS,QAAUniB,EAAQ5gE,CAAC,EAC5B+iF,EAAS,KAAO3b,EAAWpnE,CAAC,EAC5B,MAAM4C,EAAOkgF,GAAqB5vB,EAAOlzD,EAAG+iF,CAAQ,EACpDjmC,EAAM,KAAKl6C,CAAI,EACX8kE,IAAY,SACZ9kE,EAAK,QAAU0gF,GAAgB1gF,EAAMugD,CAAI,EACrCvgD,EAAK,UACLugD,EAAOvgD,GAGlB,CACD,OAAOk6C,CACX,CACA,SAASsmC,GAAqBroC,EAAO,CACjC,OAAIA,IAAU,GAAKA,IAAU,IAClB,SACAA,EAAQ,IACR,OAEJ,OACX,CACA,SAASsoC,GAAiBhqC,EAAGhS,EAAGkW,EAAO,CACnC,OAAIA,IAAU,QACVlE,GAAKhS,EACEkW,IAAU,WACjBlE,GAAKhS,EAAI,GAENgS,CACX,CACA,SAAS8pC,GAAU7pC,EAAG/5B,EAAGw7B,EAAO,CAC5B,OAAIA,IAAU,IAAMA,IAAU,IAC1BzB,GAAK/5B,EAAI,GACFw7B,EAAQ,KAAOA,EAAQ,MAC9BzB,GAAK/5B,GAEF+5B,CACX,CACA,SAASkqC,GAAkBlvE,EAAKy6B,EAAMnsC,EAAM,CACxC,KAAM,CAAE,KAAAohD,EAAO,IAAAE,EAAM,MAAAD,EAAQ,OAAAE,CAAM,EAAMvhD,EACnC,CAAE,cAAA6gF,CAAgB,EAAG10C,EAC3B,GAAI,CAACyH,GAAcitC,CAAa,EAAG,CAC/B,MAAM1F,EAAe34B,GAAcrW,EAAK,YAAY,EAC9C6xB,EAAUvb,GAAUtW,EAAK,eAAe,EAC9Cz6B,EAAI,UAAYmvE,EAChB,MAAMC,EAAe1/B,EAAO4c,EAAQ,KAC9B+iB,EAAcz/B,EAAM0c,EAAQ,IAC5BgjB,EAAgB3/B,EAAQD,EAAO4c,EAAQ,MACvCijB,EAAiB1/B,EAASD,EAAM0c,EAAQ,OAC1C,OAAO,OAAOmd,CAAY,EAAE,KAAMp5E,GAAIA,IAAM,CAAC,GAC7C2P,EAAI,UAAS,EACbowC,GAAmBpwC,EAAK,CACpB,EAAGovE,EACH,EAAGC,EACH,EAAGC,EACH,EAAGC,EACH,OAAQ9F,CACxB,CAAa,EACDzpE,EAAI,KAAI,GAERA,EAAI,SAASovE,EAAcC,EAAaC,EAAeC,CAAc,CAE5E,CACL,CACA,SAASC,GAAgB5wB,EAAO2oB,EAAY,CACxC,KAAM,CAAE,IAAAvnE,EAAM,QAAS,CAAE,YAAAyvE,CAAc,CAAA,EAAM7wB,EAC7C,QAAQ,EAAI2oB,EAAa,EAAG,GAAK,EAAG,IAAI,CACpC,MAAMj5E,EAAOswD,EAAM,iBAAiB,CAAC,EACrC,GAAI,CAACtwD,EAAK,QACN,SAEJ,MAAMgoE,EAAcmZ,EAAY,WAAW7wB,EAAM,qBAAqB,CAAC,CAAC,EACxEswB,GAAkBlvE,EAAKs2D,EAAahoE,CAAI,EACxC,MAAM4/E,EAASl9B,GAAOslB,EAAY,IAAI,EAChC,CAAE,EAAAvxB,EAAI,EAAAC,EAAI,UAAAmyB,CAAS,EAAM7oE,EAC/B2hD,GAAWjwC,EAAK4+C,EAAM,aAAa,CAAC,EAAG7Z,EAAGC,EAAIkpC,EAAO,WAAa,EAAGA,EAAQ,CACzE,MAAO5X,EAAY,MACnB,UAAWa,EACX,aAAc,QAC1B,CAAS,CACJ,CACL,CACA,SAASuY,GAAe9wB,EAAOnQ,EAAQkhC,EAAUpI,EAAY,CACzD,KAAM,CAAE,IAAAvnE,CAAM,EAAG4+C,EACjB,GAAI+wB,EACA3vE,EAAI,IAAI4+C,EAAM,QAASA,EAAM,QAASnQ,EAAQ,EAAGpK,EAAG,MACjD,CACH,IAAI4pC,EAAgBrvB,EAAM,iBAAiB,EAAGnQ,CAAM,EACpDzuC,EAAI,OAAOiuE,EAAc,EAAGA,EAAc,CAAC,EAC3C,QAAQviF,EAAI,EAAGA,EAAI67E,EAAY77E,IAC3BuiF,EAAgBrvB,EAAM,iBAAiBlzD,EAAG+iD,CAAM,EAChDzuC,EAAI,OAAOiuE,EAAc,EAAGA,EAAc,CAAC,CAElD,CACL,CACA,SAAS2B,GAAehxB,EAAOixB,EAAcphC,EAAQ84B,EAAYjS,EAAY,CACzE,MAAMt1D,EAAM4+C,EAAM,IACZ+wB,EAAWE,EAAa,SACxB,CAAE,MAAA/tC,EAAQ,UAAA00B,CAAY,EAAGqZ,EAC3B,CAACF,GAAY,CAACpI,GAAc,CAACzlC,GAAS,CAAC00B,GAAa/nB,EAAS,IAGjEzuC,EAAI,KAAI,EACRA,EAAI,YAAc8hC,EAClB9hC,EAAI,UAAYw2D,EAChBx2D,EAAI,YAAYs1D,EAAW,IAAI,EAC/Bt1D,EAAI,eAAiBs1D,EAAW,WAChCt1D,EAAI,UAAS,EACb0vE,GAAe9wB,EAAOnQ,EAAQkhC,EAAUpI,CAAU,EAClDvnE,EAAI,UAAS,EACbA,EAAI,OAAM,EACVA,EAAI,QAAO,EACf,CACA,SAAS8vE,GAAwB/sE,EAAQ4E,EAAOgtD,EAAO,CACnD,OAAOjjB,GAAc3uC,EAAQ,CACzB,MAAA4xD,EACA,MAAAhtD,EACA,KAAM,YACd,CAAK,CACL,CACA,MAAMooE,WAA0B5D,EAAgB,CA4C5C,YAAYxuB,EAAI,CACZ,MAAMA,CAAG,EACR,KAAK,QAAU,OACf,KAAK,QAAU,OACf,KAAK,YAAc,OACnB,KAAK,aAAe,GACrB,KAAK,iBAAmB,EAC3B,CACD,eAAgB,CACZ,MAAM2O,EAAU,KAAK,SAAWvb,GAAU08B,GAAsB,KAAK,OAAO,EAAI,CAAC,EAC3E16C,EAAI,KAAK,MAAQ,KAAK,SAAWu5B,EAAQ,MACzCrhD,EAAI,KAAK,OAAS,KAAK,UAAYqhD,EAAQ,OACjD,KAAK,QAAU,KAAK,MAAM,KAAK,KAAOv5B,EAAI,EAAIu5B,EAAQ,IAAI,EAC1D,KAAK,QAAU,KAAK,MAAM,KAAK,IAAMrhD,EAAI,EAAIqhD,EAAQ,GAAG,EACxD,KAAK,YAAc,KAAK,MAAM,KAAK,IAAIv5B,EAAG9nB,CAAC,EAAI,CAAC,CACnD,CACD,qBAAsB,CAClB,KAAM,CAAE,IAAAsrB,EAAM,IAAAsJ,CAAG,EAAM,KAAK,UAAU,EAAK,EAC3C,KAAK,IAAMsC,GAAe5L,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,EACtD,KAAK,IAAM4L,GAAetC,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,EACtD,KAAK,uBAAsB,CAC9B,CACJ,kBAAmB,CACZ,OAAO,KAAK,KAAK,KAAK,YAAc4tC,GAAsB,KAAK,OAAO,CAAC,CAC1E,CACD,mBAAmBpiC,EAAO,CACtB8gC,GAAgB,UAAU,mBAAmB,KAAK,KAAM9gC,CAAK,EAC7D,KAAK,aAAe,KAAK,UAAW,EAAC,IAAI,CAAC7+C,EAAOmb,IAAQ,CACrD,MAAMgtD,EAAQ39D,GAAS,KAAK,QAAQ,YAAY,SAAU,CACtDxK,EACAmb,CACH,EAAE,IAAI,EACP,OAAOgtD,GAASA,IAAU,EAAIA,EAAQ,EAClD,CAAS,EAAE,OAAO,CAACtkE,EAAG3E,IAAI,KAAK,MAAM,kBAAkBA,CAAC,CAAC,CACpD,CACD,KAAM,CACF,MAAM+uC,EAAO,KAAK,QACdA,EAAK,SAAWA,EAAK,YAAY,QACjCmzC,GAAmB,IAAI,EAEvB,KAAK,eAAe,EAAG,EAAG,EAAG,CAAC,CAErC,CACD,eAAeoC,EAAcC,EAAeC,EAAaC,EAAgB,CACrE,KAAK,SAAW,KAAK,OAAOH,EAAeC,GAAiB,CAAC,EAC7D,KAAK,SAAW,KAAK,OAAOC,EAAcC,GAAkB,CAAC,EAC7D,KAAK,aAAe,KAAK,IAAI,KAAK,YAAc,EAAG,KAAK,IAAIH,EAAcC,EAAeC,EAAaC,CAAc,CAAC,CACxH,CACD,cAAcxoE,EAAO,CACjB,MAAMyoE,EAAkB/rC,IAAO,KAAK,aAAa,QAAU,GACrD4kB,EAAa,KAAK,QAAQ,YAAc,EAC9C,OAAOniB,GAAgBn/B,EAAQyoE,EAAkBtqC,GAAUmjB,CAAU,CAAC,CACzE,CACD,8BAA8Bz8D,EAAO,CACjC,GAAI01C,GAAc11C,CAAK,EACnB,MAAO,KAEX,MAAM6jF,EAAgB,KAAK,aAAe,KAAK,IAAM,KAAK,KAC1D,OAAI,KAAK,QAAQ,SACL,KAAK,IAAM7jF,GAAS6jF,GAExB7jF,EAAQ,KAAK,KAAO6jF,CAC/B,CACD,8BAA8B/mB,EAAU,CACpC,GAAIpnB,GAAconB,CAAQ,EACtB,MAAO,KAEX,MAAMgnB,EAAiBhnB,GAAY,KAAK,aAAe,KAAK,IAAM,KAAK,MACvE,OAAO,KAAK,QAAQ,QAAU,KAAK,IAAMgnB,EAAiB,KAAK,IAAMA,CACxE,CACD,qBAAqB3oE,EAAO,CACxB,MAAM8nE,EAAc,KAAK,cAAgB,GACzC,GAAI9nE,GAAS,GAAKA,EAAQ8nE,EAAY,OAAQ,CAC1C,MAAMc,EAAad,EAAY9nE,CAAK,EACpC,OAAOmoE,GAAwB,KAAK,WAAY,EAAEnoE,EAAO4oE,CAAU,CACtE,CACJ,CACD,iBAAiB5oE,EAAO6oE,EAAoBxC,EAAkB,EAAG,CAC7D,MAAMvnC,EAAQ,KAAK,cAAc9+B,CAAK,EAAI88B,GAAUupC,EACpD,MAAO,CACH,EAAG,KAAK,IAAIvnC,CAAK,EAAI+pC,EAAqB,KAAK,QAC/C,EAAG,KAAK,IAAI/pC,CAAK,EAAI+pC,EAAqB,KAAK,QAC/C,MAAA/pC,CACZ,CACK,CACD,yBAAyB9+B,EAAOnb,EAAO,CACnC,OAAO,KAAK,iBAAiBmb,EAAO,KAAK,8BAA8Bnb,CAAK,CAAC,CAChF,CACD,gBAAgBmb,EAAO,CACnB,OAAO,KAAK,yBAAyBA,GAAS,EAAG,KAAK,aAAY,CAAE,CACvE,CACD,sBAAsBA,EAAO,CACzB,KAAM,CAAE,KAAA+nC,EAAO,IAAAE,EAAM,MAAAD,EAAQ,OAAAE,CAAM,EAAM,KAAK,iBAAiBloC,CAAK,EACpE,MAAO,CACH,KAAA+nC,EACA,IAAAE,EACA,MAAAD,EACA,OAAAE,CACZ,CACK,CACJ,gBAAiB,CACV,KAAM,CAAE,gBAAAgoB,EAAkB,KAAM,CAAE,SAAA8X,CAAQ,CAAM,EAAG,KAAK,QACxD,GAAI9X,EAAiB,CACjB,MAAM73D,EAAM,KAAK,IACjBA,EAAI,KAAI,EACRA,EAAI,UAAS,EACb0vE,GAAe,KAAM,KAAK,8BAA8B,KAAK,SAAS,EAAGC,EAAU,KAAK,aAAa,MAAM,EAC3G3vE,EAAI,UAAS,EACbA,EAAI,UAAY63D,EAChB73D,EAAI,KAAI,EACRA,EAAI,QAAO,CACd,CACJ,CACJ,UAAW,CACJ,MAAMA,EAAM,KAAK,IACXy6B,EAAO,KAAK,QACZ,CAAE,WAAAg2C,EAAa,KAAArb,EAAO,OAAAxN,CAAM,EAAMntB,EAClC8sC,EAAa,KAAK,aAAa,OACrC,IAAI77E,EAAGmkE,EAAQllC,EAef,GAdI8P,EAAK,YAAY,SACjB+0C,GAAgB,KAAMjI,CAAU,EAEhCnS,EAAK,SACL,KAAK,MAAM,QAAQ,CAAC5D,EAAM7pD,IAAQ,CAC9B,GAAIA,IAAU,GAAKA,IAAU,GAAK,KAAK,IAAM,EAAG,CAC5CkoD,EAAS,KAAK,8BAA8B2B,EAAK,KAAK,EACtD,MAAM5kD,EAAU,KAAK,WAAWjF,CAAK,EAC/B2uD,EAAclB,EAAK,WAAWxoD,CAAO,EACrC2pD,EAAoB3O,EAAO,WAAWh7C,CAAO,EACnDgjE,GAAe,KAAMtZ,EAAazG,EAAQ0X,EAAYhR,CAAiB,CAC1E,CACjB,CAAa,EAEDka,EAAW,QAAS,CAEpB,IADAzwE,EAAI,KAAI,EACJtU,EAAI67E,EAAa,EAAG77E,GAAK,EAAGA,IAAI,CAChC,MAAM4qE,EAAcma,EAAW,WAAW,KAAK,qBAAqB/kF,CAAC,CAAC,EAChE,CAAE,MAAAo2C,EAAQ,UAAA00B,CAAY,EAAGF,EAC3B,CAACE,GAAa,CAAC10B,IAGnB9hC,EAAI,UAAYw2D,EAChBx2D,EAAI,YAAc8hC,EAClB9hC,EAAI,YAAYs2D,EAAY,UAAU,EACtCt2D,EAAI,eAAiBs2D,EAAY,iBACjCzG,EAAS,KAAK,8BAA8Bp1B,EAAK,MAAM,QAAU,KAAK,IAAM,KAAK,GAAG,EACpF9P,EAAW,KAAK,iBAAiBj/B,EAAGmkE,CAAM,EAC1C7vD,EAAI,UAAS,EACbA,EAAI,OAAO,KAAK,QAAS,KAAK,OAAO,EACrCA,EAAI,OAAO2qB,EAAS,EAAGA,EAAS,CAAC,EACjC3qB,EAAI,OAAM,EACb,CACDA,EAAI,QAAO,CACd,CACJ,CACJ,YAAa,CAAE,CACf,YAAa,CACN,MAAMA,EAAM,KAAK,IACXy6B,EAAO,KAAK,QACZu0B,EAAWv0B,EAAK,MACtB,GAAI,CAACu0B,EAAS,QACV,OAEJ,MAAM/F,EAAa,KAAK,cAAc,CAAC,EACvC,IAAI4G,EAAQjiB,EACZ5tC,EAAI,KAAI,EACRA,EAAI,UAAU,KAAK,QAAS,KAAK,OAAO,EACxCA,EAAI,OAAOipD,CAAU,EACrBjpD,EAAI,UAAY,SAChBA,EAAI,aAAe,SACnB,KAAK,MAAM,QAAQ,CAACwxD,EAAM7pD,IAAQ,CAC9B,GAAIA,IAAU,GAAK,KAAK,KAAO,GAAK,CAAC8yB,EAAK,QACtC,OAEJ,MAAM67B,EAActH,EAAS,WAAW,KAAK,WAAWrnD,CAAK,CAAC,EACxDitD,EAAW5jB,GAAOslB,EAAY,IAAI,EAExC,GADAzG,EAAS,KAAK,8BAA8B,KAAK,MAAMloD,CAAK,EAAE,KAAK,EAC/D2uD,EAAY,kBAAmB,CAC/Bt2D,EAAI,KAAO40D,EAAS,OACpBhnB,EAAQ5tC,EAAI,YAAYwxD,EAAK,KAAK,EAAE,MACpCxxD,EAAI,UAAYs2D,EAAY,cAC5B,MAAMhK,EAAUvb,GAAUulB,EAAY,eAAe,EACrDt2D,EAAI,SAAS,CAAC4tC,EAAQ,EAAI0e,EAAQ,KAAM,CAACuD,EAAS+E,EAAS,KAAO,EAAItI,EAAQ,IAAK1e,EAAQ0e,EAAQ,MAAOsI,EAAS,KAAOtI,EAAQ,MAAM,CAC3I,CACDrc,GAAWjwC,EAAKwxD,EAAK,MAAO,EAAG,CAAC3B,EAAQ+E,EAAU,CAC9C,MAAO0B,EAAY,MACnB,YAAaA,EAAY,gBACzB,YAAaA,EAAY,eACzC,CAAa,CACb,CAAS,EACDt2D,EAAI,QAAO,CACd,CACJ,WAAY,CAAE,CACf,CA5OI8jD,GADEisB,GACK,KAAK,gBACfjsB,GAFKisB,GAEE,WAAW,CACX,QAAS,GACT,QAAS,GACT,SAAU,YACV,WAAY,CACR,QAAS,GACT,UAAW,EACX,WAAY,CAAE,EACd,iBAAkB,CACrB,EACD,KAAM,CACF,SAAU,EACb,EACD,WAAY,EACZ,MAAO,CACH,kBAAmB,GACnB,SAAUlkC,GAAM,WAAW,OAC9B,EACD,YAAa,CACT,cAAe,OACf,gBAAiB,EACjB,QAAS,GACT,KAAM,CACF,KAAM,EACT,EACD,SAAU8oB,EAAO,CACb,OAAOA,CACV,EACD,QAAS,EACT,kBAAmB,EACtB,CACT,GACI7Q,GAlCEisB,GAkCK,gBAAgB,CACnB,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,OACvB,GACIjsB,GAvCEisB,GAuCK,cAAc,CACjB,WAAY,CACR,UAAW,MACd,CACT,GAoMA,MAAMW,GAAY,CACd,YAAa,CACT,OAAQ,GACR,KAAM,EACN,MAAO,GACV,EACD,OAAQ,CACJ,OAAQ,GACR,KAAM,IACN,MAAO,EACV,EACD,OAAQ,CACJ,OAAQ,GACR,KAAM,IACN,MAAO,EACV,EACD,KAAM,CACF,OAAQ,GACR,KAAM,KACN,MAAO,EACV,EACD,IAAK,CACD,OAAQ,GACR,KAAM,MACN,MAAO,EACV,EACD,KAAM,CACF,OAAQ,GACR,KAAM,OACN,MAAO,CACV,EACD,MAAO,CACH,OAAQ,GACR,KAAM,OACN,MAAO,EACV,EACD,QAAS,CACL,OAAQ,GACR,KAAM,OACN,MAAO,CACV,EACD,KAAM,CACF,OAAQ,GACR,KAAM,MACT,CACL,EACOC,GAAyB,OAAO,KAAKD,EAAS,EACpD,SAASE,GAAOvhF,EAAGC,EAAG,CACnB,OAAOD,EAAIC,CACf,CACC,SAASuhF,GAAMjyB,EAAO3hB,EAAO,CAC1B,GAAIiF,GAAcjF,CAAK,EACnB,OAAO,KAEX,MAAMjE,EAAU4lB,EAAM,SAChB,CAAE,OAAAztB,EAAS,MAAAkN,EAAQ,WAAAyyC,CAAU,EAAMlyB,EAAM,WAC/C,IAAIpyD,EAAQywC,EAOZ,OANI,OAAO9L,GAAW,aAClB3kC,EAAQ2kC,EAAO3kC,CAAK,GAEnB21C,GAAe31C,CAAK,IACrBA,EAAQ,OAAO2kC,GAAW,SAAW6H,EAAQ,MAAMxsC,EAAQ2kC,CAAM,EAAI6H,EAAQ,MAAMxsC,CAAK,GAExFA,IAAU,KACH,MAEP6xC,IACA7xC,EAAQ6xC,IAAU,SAAWxV,GAASioD,CAAU,GAAKA,IAAe,IAAQ93C,EAAQ,QAAQxsC,EAAO,UAAWskF,CAAU,EAAI93C,EAAQ,QAAQxsC,EAAO6xC,CAAK,GAErJ,CAAC7xC,EACZ,CACC,SAASukF,GAA0BC,EAASz6C,EAAKsJ,EAAKoxC,EAAU,CAC7D,MAAMnuC,EAAO6tC,GAAM,OACnB,QAAQjlF,EAAIilF,GAAM,QAAQK,CAAO,EAAGtlF,EAAIo3C,EAAO,EAAG,EAAEp3C,EAAE,CAClD,MAAMwlF,EAAWR,GAAUC,GAAMjlF,CAAC,CAAC,EAC7B8xD,EAAS0zB,EAAS,MAAQA,EAAS,MAAQ,OAAO,iBACxD,GAAIA,EAAS,QAAU,KAAK,MAAMrxC,EAAMtJ,IAAQinB,EAAS0zB,EAAS,KAAK,GAAKD,EACxE,OAAON,GAAMjlF,CAAC,CAErB,CACD,OAAOilF,GAAM7tC,EAAO,CAAC,CACzB,CACC,SAASquC,GAA2BvyB,EAAO4T,EAAUwe,EAASz6C,EAAKsJ,EAAK,CACrE,QAAQn0C,EAAIilF,GAAM,OAAS,EAAGjlF,GAAKilF,GAAM,QAAQK,CAAO,EAAGtlF,IAAI,CAC3D,MAAM8/E,EAAOmF,GAAMjlF,CAAC,EACpB,GAAIglF,GAAUlF,CAAI,EAAE,QAAU5sB,EAAM,SAAS,KAAK/e,EAAKtJ,EAAKi1C,CAAI,GAAKhZ,EAAW,EAC5E,OAAOgZ,CAEd,CACD,OAAOmF,GAAMK,EAAUL,GAAM,QAAQK,CAAO,EAAI,CAAC,CACrD,CACC,SAASI,GAAmB5F,EAAM,CAC/B,QAAQ9/E,EAAIilF,GAAM,QAAQnF,CAAI,EAAI,EAAG1oC,EAAO6tC,GAAM,OAAQjlF,EAAIo3C,EAAM,EAAEp3C,EAClE,GAAIglF,GAAUC,GAAMjlF,CAAC,CAAC,EAAE,OACpB,OAAOilF,GAAMjlF,CAAC,CAG1B,CACC,SAAS2lF,GAAQhmC,EAAOimC,EAAM76C,EAAY,CACvC,GAAI,CAACA,EACD4U,EAAMimC,CAAI,EAAI,WACP76C,EAAW,OAAQ,CAC1B,KAAM,CAAE,GAAAmR,EAAK,GAAAD,CAAE,EAAMH,GAAQ/Q,EAAY66C,CAAI,EACvCC,EAAY96C,EAAWmR,CAAE,GAAK0pC,EAAO76C,EAAWmR,CAAE,EAAInR,EAAWkR,CAAE,EACzE0D,EAAMkmC,CAAS,EAAI,EACtB,CACL,CACC,SAASC,GAAc5yB,EAAOvT,EAAO7K,EAAKixC,EAAW,CAClD,MAAMz4C,EAAU4lB,EAAM,SAChBtqB,EAAQ,CAAC0E,EAAQ,QAAQqS,EAAM,CAAC,EAAE,MAAOomC,CAAS,EAClD5gF,EAAOw6C,EAAMA,EAAM,OAAS,CAAC,EAAE,MACrC,IAAIqmC,EAAO/pE,EACX,IAAI+pE,EAAQp9C,EAAOo9C,GAAS7gF,EAAM6gF,EAAQ,CAAC14C,EAAQ,IAAI04C,EAAO,EAAGD,CAAS,EACtE9pE,EAAQ64B,EAAIkxC,CAAK,EACb/pE,GAAS,IACT0jC,EAAM1jC,CAAK,EAAE,MAAQ,IAG7B,OAAO0jC,CACX,CACC,SAASsmC,GAAoB/yB,EAAOhjD,EAAQ61E,EAAW,CACpD,MAAMpmC,EAAQ,CAAA,EACP7K,EAAM,CAAA,EACPsC,EAAOlnC,EAAO,OACpB,IAAIlQ,EAAGc,EACP,IAAId,EAAI,EAAGA,EAAIo3C,EAAM,EAAEp3C,EACnBc,EAAQoP,EAAOlQ,CAAC,EAChB80C,EAAIh0C,CAAK,EAAId,EACb2/C,EAAM,KAAK,CACP,MAAA7+C,EACA,MAAO,EACnB,CAAS,EAEL,OAAOs2C,IAAS,GAAK,CAAC2uC,EAAYpmC,EAAQmmC,GAAc5yB,EAAOvT,EAAO7K,EAAKixC,CAAS,CACxF,CACA,MAAMG,WAAkB9f,EAAM,CAqB7B,YAAYtzD,EAAM,CACX,MAAMA,CAAK,EACV,KAAK,OAAS,CACX,KAAM,CAAE,EACR,OAAQ,CAAE,EACV,IAAK,CAAE,CACnB,EACS,KAAK,MAAQ,MACb,KAAK,WAAa,OACnB,KAAK,SAAW,GAChB,KAAK,YAAc,GACnB,KAAK,WAAa,MACrB,CACD,KAAKggE,EAAW/jC,EAAO,GAAI,CACvB,MAAM62C,EAAO9S,EAAU,OAASA,EAAU,KAAO,CAAA,GAC1CxlC,EAAU,KAAK,SAAW,IAAIE,GAAS,MAAMslC,EAAU,SAAS,IAAI,EAC3ExlC,EAAQ,KAAKyB,CAAI,EACjB+I,GAAQ8tC,EAAK,eAAgBt4C,EAAQ,QAAS,CAAA,EAC9C,KAAK,WAAa,CACd,OAAQs4C,EAAK,OACb,MAAOA,EAAK,MACZ,WAAYA,EAAK,UAC7B,EACQ,MAAM,KAAK9S,CAAS,EACpB,KAAK,YAAc/jC,EAAK,UAC3B,CACJ,MAAMnhC,EAAKqO,EAAO,CACX,OAAIrO,IAAQ,OACD,KAEJu3E,GAAM,KAAMv3E,CAAG,CACzB,CACD,cAAe,CACX,MAAM,aAAY,EAClB,KAAK,OAAS,CACV,KAAM,CAAE,EACR,OAAQ,CAAE,EACV,IAAK,CAAE,CACnB,CACK,CACD,qBAAsB,CAClB,MAAMoG,EAAU,KAAK,QACfs5B,EAAU,KAAK,SACfwyC,EAAO9rE,EAAQ,KAAK,MAAQ,MAClC,GAAI,CAAE,IAAA62B,EAAM,IAAAsJ,EAAM,WAAA+J,EAAa,WAAAC,GAAgB,KAAK,gBAC3D,SAASgoC,EAAa/2B,EAAQ,CACf,CAAClR,GAAc,CAAC,MAAMkR,EAAO,GAAG,IAChCvkB,EAAM,KAAK,IAAIA,EAAKukB,EAAO,GAAG,GAE9B,CAACjR,GAAc,CAAC,MAAMiR,EAAO,GAAG,IAChCjb,EAAM,KAAK,IAAIA,EAAKib,EAAO,GAAG,EAErC,EACG,CAAClR,GAAc,CAACC,KAChBgoC,EAAa,KAAK,gBAAe,CAAE,GAC/BnyE,EAAQ,SAAW,SAAWA,EAAQ,MAAM,SAAW,WACvDmyE,EAAa,KAAK,UAAU,EAAK,CAAC,GAG1Ct7C,EAAM4L,GAAe5L,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,CAACyC,EAAQ,QAAQ,KAAK,IAAK,EAAEwyC,CAAI,EAClF3rC,EAAMsC,GAAetC,CAAG,GAAK,CAAC,MAAMA,CAAG,EAAIA,EAAM,CAAC7G,EAAQ,MAAM,KAAK,IAAG,EAAIwyC,CAAI,EAAI,EACpF,KAAK,IAAM,KAAK,IAAIj1C,EAAKsJ,EAAM,CAAC,EAChC,KAAK,IAAM,KAAK,IAAItJ,EAAM,EAAGsJ,CAAG,CACnC,CACJ,iBAAkB,CACX,MAAMr0C,EAAM,KAAK,qBACjB,IAAI+qC,EAAM,OAAO,kBACbsJ,EAAM,OAAO,kBACjB,OAAIr0C,EAAI,SACJ+qC,EAAM/qC,EAAI,CAAC,EACXq0C,EAAMr0C,EAAIA,EAAI,OAAS,CAAC,GAErB,CACH,IAAA+qC,EACA,IAAAsJ,CACZ,CACK,CACJ,YAAa,CACN,MAAMngC,EAAU,KAAK,QACfoyE,EAAWpyE,EAAQ,KACnBsvD,EAAWtvD,EAAQ,MACnB+2B,EAAau4B,EAAS,SAAW,SAAW,KAAK,mBAAoB,EAAG,KAAK,YAC/EtvD,EAAQ,SAAW,SAAW+2B,EAAW,SACzC,KAAK,IAAM,KAAK,UAAYA,EAAW,CAAC,EACxC,KAAK,IAAM,KAAK,UAAYA,EAAWA,EAAW,OAAS,CAAC,GAEhE,MAAMF,EAAM,KAAK,IACXsJ,EAAM,KAAK,IACXwL,EAAQpD,GAAexR,EAAYF,EAAKsJ,CAAG,EACjD,YAAK,MAAQiyC,EAAS,OAAS9iB,EAAS,SAAW+hB,GAA0Be,EAAS,QAAS,KAAK,IAAK,KAAK,IAAK,KAAK,kBAAkBv7C,CAAG,CAAC,EAAI46C,GAA2B,KAAM9lC,EAAM,OAAQymC,EAAS,QAAS,KAAK,IAAK,KAAK,GAAG,GACrO,KAAK,WAAa,CAAC9iB,EAAS,MAAM,SAAW,KAAK,QAAU,OAAS,OAAYoiB,GAAmB,KAAK,KAAK,EAC9G,KAAK,YAAY36C,CAAU,EACvB/2B,EAAQ,SACR2rC,EAAM,QAAO,EAEVsmC,GAAoB,KAAMtmC,EAAO,KAAK,UAAU,CAC1D,CACD,eAAgB,CACR,KAAK,QAAQ,qBACb,KAAK,YAAY,KAAK,MAAM,IAAKmmB,GAAO,CAACA,EAAK,KAAK,CAAC,CAE3D,CACJ,YAAY/6B,EAAa,GAAI,CACtB,IAAIv5B,EAAQ,EACRC,EAAM,EACNm3B,EAAOzjC,EACP,KAAK,QAAQ,QAAU4lC,EAAW,SAClCnC,EAAQ,KAAK,mBAAmBmC,EAAW,CAAC,CAAC,EACzCA,EAAW,SAAW,EACtBv5B,EAAQ,EAAIo3B,EAEZp3B,GAAS,KAAK,mBAAmBu5B,EAAW,CAAC,CAAC,EAAInC,GAAS,EAE/DzjC,EAAO,KAAK,mBAAmB4lC,EAAWA,EAAW,OAAS,CAAC,CAAC,EAC5DA,EAAW,SAAW,EACtBt5B,EAAMtM,EAENsM,GAAOtM,EAAO,KAAK,mBAAmB4lC,EAAWA,EAAW,OAAS,CAAC,CAAC,GAAK,GAGpF,MAAM2/B,EAAQ3/B,EAAW,OAAS,EAAI,GAAM,IAC5Cv5B,EAAQmqC,GAAYnqC,EAAO,EAAGk5D,CAAK,EACnCj5D,EAAMkqC,GAAYlqC,EAAK,EAAGi5D,CAAK,EAC/B,KAAK,SAAW,CACZ,MAAAl5D,EACA,IAAAC,EACA,OAAQ,GAAKD,EAAQ,EAAIC,EACrC,CACK,CACJ,WAAY,CACL,MAAM67B,EAAU,KAAK,SACfzC,EAAM,KAAK,IACXsJ,EAAM,KAAK,IACXngC,EAAU,KAAK,QACfoyE,EAAWpyE,EAAQ,KACnBqyE,EAAQD,EAAS,MAAQf,GAA0Be,EAAS,QAASv7C,EAAKsJ,EAAK,KAAK,kBAAkBtJ,CAAG,CAAC,EAC1Gi2C,EAAWnqC,GAAe3iC,EAAQ,MAAM,SAAU,CAAC,EACnDsyE,EAAUD,IAAU,OAASD,EAAS,WAAa,GACnDG,EAAappD,GAASmpD,CAAO,GAAKA,IAAY,GAC9C3mC,EAAQ,CAAA,EACd,IAAI/W,EAAQiC,EACR+6C,EAAM9nC,EAKV,GAJIyoC,IACA39C,EAAQ,CAAC0E,EAAQ,QAAQ1E,EAAO,UAAW09C,CAAO,GAEtD19C,EAAQ,CAAC0E,EAAQ,QAAQ1E,EAAO29C,EAAa,MAAQF,CAAK,EACtD/4C,EAAQ,KAAK6G,EAAKtJ,EAAKw7C,CAAK,EAAI,IAASvF,EACzC,MAAM,IAAI,MAAMj2C,EAAM,QAAUsJ,EAAM,uCAAyC2sC,EAAW,IAAMuF,CAAK,EAEzG,MAAMt7C,EAAa/2B,EAAQ,MAAM,SAAW,QAAU,KAAK,oBAC3D,IAAI4xE,EAAOh9C,EAAOkV,EAAQ,EAAG8nC,EAAOzxC,EAAKyxC,EAAO,CAACt4C,EAAQ,IAAIs4C,EAAM9E,EAAUuF,CAAK,EAAGvoC,IACjF6nC,GAAQhmC,EAAOimC,EAAM76C,CAAU,EAEnC,OAAI66C,IAASzxC,GAAOngC,EAAQ,SAAW,SAAW8pC,IAAU,IACxD6nC,GAAQhmC,EAAOimC,EAAM76C,CAAU,EAE5B,OAAO,KAAK4U,CAAK,EAAE,KAAKulC,EAAM,EAAE,IAAK7rC,GAAI,CAACA,CAAC,CACrD,CACJ,iBAAiBv4C,EAAO,CACjB,MAAMwsC,EAAU,KAAK,SACf84C,EAAW,KAAK,QAAQ,KAC9B,OAAIA,EAAS,cACF94C,EAAQ,OAAOxsC,EAAOslF,EAAS,aAAa,EAEhD94C,EAAQ,OAAOxsC,EAAOslF,EAAS,eAAe,QAAQ,CAChE,CACJ,OAAOtlF,EAAO2nC,EAAQ,CAEf,MAAM+9C,EADU,KAAK,QACG,KAAK,eACvB1G,EAAO,KAAK,MACZ2G,EAAMh+C,GAAU+9C,EAAQ1G,CAAI,EAClC,OAAO,KAAK,SAAS,OAAOh/E,EAAO2lF,CAAG,CACzC,CACJ,oBAAoBb,EAAM3pE,EAAO0jC,EAAOlX,EAAQ,CACzC,MAAMz0B,EAAU,KAAK,QACfurC,EAAYvrC,EAAQ,MAAM,SAChC,GAAIurC,EACA,OAAOj0C,GAASi0C,EAAW,CACvBqmC,EACA3pE,EACA0jC,CACH,EAAE,IAAI,EAEX,MAAM6mC,EAAUxyE,EAAQ,KAAK,eACvB8rE,EAAO,KAAK,MACZiG,EAAY,KAAK,WACjBW,EAAc5G,GAAQ0G,EAAQ1G,CAAI,EAClC6G,EAAcZ,GAAaS,EAAQT,CAAS,EAC5CjgB,EAAOnmB,EAAM1jC,CAAK,EAClB+pE,EAAQD,GAAaY,GAAe7gB,GAAQA,EAAK,MACvD,OAAO,KAAK,SAAS,OAAO8f,EAAMn9C,IAAWu9C,EAAQW,EAAcD,EAAY,CAClF,CACJ,mBAAmB/mC,EAAO,CACnB,IAAI3/C,EAAGo3C,EAAM0uB,EACb,IAAI9lE,EAAI,EAAGo3C,EAAOuI,EAAM,OAAQ3/C,EAAIo3C,EAAM,EAAEp3C,EACxC8lE,EAAOnmB,EAAM3/C,CAAC,EACd8lE,EAAK,MAAQ,KAAK,oBAAoBA,EAAK,MAAO9lE,EAAG2/C,CAAK,CAEjE,CACJ,mBAAmB7+C,EAAO,CACnB,OAAOA,IAAU,KAAO,KAAOA,EAAQ,KAAK,MAAQ,KAAK,IAAM,KAAK,IACvE,CACJ,iBAAiBA,EAAO,CACjB,MAAM8lF,EAAU,KAAK,SACf/6B,EAAM,KAAK,mBAAmB/qD,CAAK,EACzC,OAAO,KAAK,oBAAoB8lF,EAAQ,MAAQ/6B,GAAO+6B,EAAQ,MAAM,CACxE,CACJ,iBAAiB3kC,EAAO,CACjB,MAAM2kC,EAAU,KAAK,SACf/6B,EAAM,KAAK,mBAAmB5J,CAAK,EAAI2kC,EAAQ,OAASA,EAAQ,IACtE,OAAO,KAAK,IAAM/6B,GAAO,KAAK,IAAM,KAAK,IAC5C,CACJ,cAAcod,EAAO,CACd,MAAM4d,EAAY,KAAK,QAAQ,MACzBC,EAAiB,KAAK,IAAI,YAAY7d,CAAK,EAAE,MAC7CluB,EAAQX,GAAU,KAAK,aAAY,EAAKysC,EAAU,YAAcA,EAAU,WAAW,EACrFE,EAAc,KAAK,IAAIhsC,CAAK,EAC5BisC,EAAc,KAAK,IAAIjsC,CAAK,EAC5BksC,EAAe,KAAK,wBAAwB,CAAC,EAAE,KACrD,MAAO,CACH,EAAGH,EAAiBC,EAAcE,EAAeD,EACjD,EAAGF,EAAiBE,EAAcC,EAAeF,CAC7D,CACK,CACJ,kBAAkBG,EAAa,CACxB,MAAMd,EAAW,KAAK,QAAQ,KACxBe,EAAiBf,EAAS,eAC1B39C,EAAS0+C,EAAef,EAAS,IAAI,GAAKe,EAAe,YACzDC,EAAe,KAAK,oBAAoBF,EAAa,EAAGjB,GAAoB,KAAM,CACpFiB,CACH,EAAE,KAAK,UAAU,EAAGz+C,CAAM,EACrB19B,EAAO,KAAK,cAAcq8E,CAAY,EACtC7B,EAAW,KAAK,MAAM,KAAK,aAAc,EAAG,KAAK,MAAQx6E,EAAK,EAAI,KAAK,OAASA,EAAK,CAAC,EAAI,EAChG,OAAOw6E,EAAW,EAAIA,EAAW,CACpC,CACJ,mBAAoB,CACb,IAAIx6C,EAAa,KAAK,OAAO,MAAQ,CAAA,EACjC/qC,EAAGo3C,EACP,GAAIrM,EAAW,OACX,OAAOA,EAEX,MAAM27B,EAAQ,KAAK,0BACnB,GAAI,KAAK,aAAeA,EAAM,OAC1B,OAAO,KAAK,OAAO,KAAOA,EAAM,CAAC,EAAE,WAAW,mBAAmB,IAAI,EAEzE,IAAI1mE,EAAI,EAAGo3C,EAAOsvB,EAAM,OAAQ1mE,EAAIo3C,EAAM,EAAEp3C,EACxC+qC,EAAaA,EAAW,OAAO27B,EAAM1mE,CAAC,EAAE,WAAW,mBAAmB,IAAI,CAAC,EAE/E,OAAO,KAAK,OAAO,KAAO,KAAK,UAAU+qC,CAAU,CACtD,CACJ,oBAAqB,CACd,MAAMA,EAAa,KAAK,OAAO,QAAU,CAAA,EACzC,IAAI/qC,EAAGo3C,EACP,GAAIrM,EAAW,OACX,OAAOA,EAEX,MAAM+rB,EAAS,KAAK,YACpB,IAAI92D,EAAI,EAAGo3C,EAAO0f,EAAO,OAAQ92D,EAAIo3C,EAAM,EAAEp3C,EACzC+qC,EAAW,KAAKo6C,GAAM,KAAMruB,EAAO92D,CAAC,CAAC,CAAC,EAE1C,OAAO,KAAK,OAAO,OAAS,KAAK,YAAc+qC,EAAa,KAAK,UAAUA,CAAU,CACxF,CACJ,UAAU76B,EAAQ,CACX,OAAO2sC,GAAa3sC,EAAO,KAAKg1E,EAAM,CAAC,CAC1C,CACL,CA7RI9sB,GADE8tB,GACK,KAAK,QACf9tB,GAFK8tB,GAEE,WAAW,CAClB,OAAQ,OACD,SAAU,CAAE,EACZ,KAAM,CACF,OAAQ,GACR,KAAM,GACN,MAAO,GACP,WAAY,GACZ,QAAS,cACT,eAAgB,CAAE,CACrB,EACD,MAAO,CACd,OAAQ,OACG,SAAU,GACV,MAAO,CACH,QAAS,EACZ,CACJ,CACT,GA4QA,SAASxwC,GAAYqG,EAAO38C,EAAK43C,EAAS,CACtC,IAAIkF,EAAK,EACLD,EAAKF,EAAM,OAAS,EACpBsrC,EAAYC,EAAYC,EAAYC,EACpCxwC,GACI53C,GAAO28C,EAAMG,CAAE,EAAE,KAAO98C,GAAO28C,EAAME,CAAE,EAAE,MACxC,CAAE,GAAAC,EAAK,GAAAD,CAAK,EAAGG,GAAaL,EAAO,MAAO38C,CAAG,GAEjD,CAAE,IAAKioF,EAAa,KAAME,GAAgBxrC,EAAMG,CAAE,EAClD,CAAE,IAAKorC,EAAa,KAAME,GAAgBzrC,EAAME,CAAE,IAE/C78C,GAAO28C,EAAMG,CAAE,EAAE,MAAQ98C,GAAO28C,EAAME,CAAE,EAAE,OACzC,CAAE,GAAAC,EAAK,GAAAD,CAAK,EAAGG,GAAaL,EAAO,OAAQ38C,CAAG,GAElD,CAAE,KAAMioF,EAAa,IAAKE,GAAgBxrC,EAAMG,CAAE,EAClD,CAAE,KAAMorC,EAAa,IAAKE,GAAgBzrC,EAAME,CAAE,GAEvD,MAAMwrC,EAAOH,EAAaD,EAC1B,OAAOI,EAAOF,GAAcC,EAAaD,IAAenoF,EAAMioF,GAAcI,EAAOF,CACvF,CACA,MAAMG,WAAwBxB,EAAU,CAGvC,YAAYpzE,EAAM,CACX,MAAMA,CAAK,EACV,KAAK,OAAS,GACd,KAAK,QAAU,OACf,KAAK,YAAc,MACvB,CACJ,aAAc,CACP,MAAMi4B,EAAa,KAAK,yBAClBgR,EAAQ,KAAK,OAAS,KAAK,iBAAiBhR,CAAU,EAC5D,KAAK,QAAU2K,GAAYqG,EAAO,KAAK,GAAG,EAC1C,KAAK,YAAcrG,GAAYqG,EAAO,KAAK,GAAG,EAAI,KAAK,QACvD,MAAM,YAAYhR,CAAU,CAC/B,CACJ,iBAAiBA,EAAY,CACtB,KAAM,CAAE,IAAAF,EAAM,IAAAsJ,CAAM,EAAG,KACjB2I,EAAQ,CAAA,EACRf,EAAQ,CAAA,EACd,IAAI/7C,EAAGo3C,EAAMhjC,EAAMokD,EAAMrwC,EACzB,IAAInoB,EAAI,EAAGo3C,EAAOrM,EAAW,OAAQ/qC,EAAIo3C,EAAM,EAAEp3C,EAC7Cw4D,EAAOztB,EAAW/qC,CAAC,EACfw4D,GAAQ3tB,GAAO2tB,GAAQrkB,GACvB2I,EAAM,KAAK0b,CAAI,EAGvB,GAAI1b,EAAM,OAAS,EACf,MAAO,CACH,CACI,KAAMjS,EACN,IAAK,CACR,EACD,CACI,KAAMsJ,EACN,IAAK,CACR,CACjB,EAEQ,IAAIn0C,EAAI,EAAGo3C,EAAO0F,EAAM,OAAQ98C,EAAIo3C,EAAM,EAAEp3C,EACxCmoB,EAAO20B,EAAM98C,EAAI,CAAC,EAClBoU,EAAO0oC,EAAM98C,EAAI,CAAC,EAClBw4D,EAAO1b,EAAM98C,CAAC,EACV,KAAK,OAAOmoB,EAAO/T,GAAQ,CAAC,IAAMokD,GAClCzc,EAAM,KAAK,CACP,KAAMyc,EACN,IAAKx4D,GAAKo3C,EAAO,EACrC,CAAiB,EAGT,OAAO2E,CACV,CACJ,WAAY,CACL,MAAMlR,EAAM,KAAK,IACXsJ,EAAM,KAAK,IACjB,IAAIpJ,EAAa,MAAM,oBACvB,OAAI,CAACA,EAAW,SAASF,CAAG,GAAK,CAACE,EAAW,SACzCA,EAAW,OAAO,EAAG,EAAGF,CAAG,GAE3B,CAACE,EAAW,SAASoJ,CAAG,GAAKpJ,EAAW,SAAW,IACnDA,EAAW,KAAKoJ,CAAG,EAEhBpJ,EAAW,KAAK,CAACpnC,EAAGC,IAAID,EAAIC,CAAC,CACvC,CACJ,wBAAyB,CAClB,IAAImnC,EAAa,KAAK,OAAO,KAAO,CAAA,EACpC,GAAIA,EAAW,OACX,OAAOA,EAEX,MAAM31B,EAAO,KAAK,oBACZ6zD,EAAQ,KAAK,qBACnB,OAAI7zD,EAAK,QAAU6zD,EAAM,OACrBl+B,EAAa,KAAK,UAAU31B,EAAK,OAAO6zD,CAAK,CAAC,EAE9Cl+B,EAAa31B,EAAK,OAASA,EAAO6zD,EAEtCl+B,EAAa,KAAK,OAAO,IAAMA,EACxBA,CACV,CACJ,mBAAmBjqC,EAAO,CACnB,OAAQ40C,GAAY,KAAK,OAAQ50C,CAAK,EAAI,KAAK,SAAW,KAAK,WAClE,CACJ,iBAAiBmhD,EAAO,CACjB,MAAM2kC,EAAU,KAAK,SACfrd,EAAU,KAAK,mBAAmBtnB,CAAK,EAAI2kC,EAAQ,OAASA,EAAQ,IAC1E,OAAOlxC,GAAY,KAAK,OAAQ6zB,EAAU,KAAK,YAAc,KAAK,QAAS,EAAI,CAClF,CACL,CAtFInR,GADEsvB,GACK,KAAK,cACftvB,GAFKsvB,GAEE,WAAWxB,GAAU,6CCvlW7B,MAAMjsD,EAAQgX,GAAS,EAEvBkhC,GAAM,SAAS6O,GAAa3B,GAAe1jB,GAAgBpB,GAAeyc,GAAcJ,GAAa0B,GAAY0D,EAAO,EAGxH,MAAM2L,EAAW/4E,GAAI,IAAI,EACzB,IAAIg5E,EAAgB,KAGpB,OAAA9vE,GAAM,IAAMmiB,EAAM,OAAO,OAAS4tD,GAAY,CAC1C,GAAIA,EAAQ,OAAQ,CAEZD,GACAA,EAAc,QAAO,EAEzB,MAAME,EAAYD,EAAQ,IAAKE,IAAS,CACpC,KAAMA,EAAI,KACV,QAASA,EAAI,QACb,UAAWA,EAAI,UAClB,EAAC,EAGFH,EAAgB,IAAIzV,GAAMwV,EAAS,MAAM,WAAW,IAAI,EAAG,CACvD,KAAM,MACN,KAAM,CACF,OAAQG,EAAU,IAAK1yE,GAASA,EAAK,IAAI,EACzC,SAAU,CACN,CACI,MAAO,UACP,QAAS,iBACT,KAAM0yE,EAAU,IAAK1yE,GAASA,EAAK,OAAO,EAC1C,KAAM,OACN,YAAa,OACb,gBAAiB,aACpB,EACD,CACI,MAAO,aACP,QAAS,oBACT,KAAM0yE,EAAU,IAAK1yE,GAASA,EAAK,SAAS,EAC5C,KAAM,MACN,gBAAiB,OACpB,CACJ,CACJ,EACD,QAAS,CACL,oBAAqB,GACrB,WAAY,GACZ,OAAQ,CACJ,EAAG,CACC,YAAa,GACb,OAAQ,GACR,KAAM,CACF,QAAS,EACZ,EACD,MAAO,CACH,SAAU,GACV,cAAe,GACf,YAAa,EACb,YAAa,CAChB,EACD,MAAO,CACH,QAAS,GACT,KAAM,MACT,CACJ,EACD,EAAG,CACC,YAAa,GACb,QAAS,EACZ,EACD,iBAAkB,CACd,SAAU,OACV,MAAO,CACH,QAAS,GACT,KAAM,SACT,CACJ,EACD,oBAAqB,CACjB,SAAU,QACV,MAAO,CACH,QAAS,GACT,KAAM,YACT,CACJ,CACJ,EACD,QAAS,CACL,QAAS,CACL,QAAS,GACT,KAAM,UACN,UAAW,EACd,CACJ,CACJ,CACb,CAAS,CACJ,CACL,CAAC,mECnGD,6DAIA,IAAI4yE,GAAO,CAAA,EACXA,GAAK,QAAU,SACZ,IAA0BC,GAAe,KAExCC,GAAa,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAyB9FC,GAAW,SAASC,EAAe,CAAKF,GAAW,QAAQE,CAAE,GAAK,KAAYH,GAA0BG,EAAG,EAC/G,SAASC,IAAa,CAAEF,GAAS,IAAI,CAAI,CAEzC,IAAIG,GAAS,SAASF,EAAe,CAAyBD,GAASC,CAAE,GACzE,SAASG,IAAW,CAAED,GAAO,IAAI,EAAGD,GAAY,CAAG,CAuBnD,IAAIG,GAAW,SAAcnvC,EAAyB,CAAE,OAAO,OAAO,aAAaA,CAAC,GAChFovC,GAAW,SAAcpvC,EAAyB,CAAE,OAAO,OAAO,aAAaA,CAAC,GAEhFqvC,GAoBAC,GAAa,oEACjB,SAASC,GAAcr3C,EAAO,CAG5B,QAFI/Y,EAAI,GACJ5M,EAAK,EAAGE,EAAK,EAAG+8D,EAAK,EAAGv8D,EAAK,EAAGC,EAAK,EAAGu8D,EAAK,EAAGC,EAAK,EAChD/oF,EAAI,EAAGA,EAAIuxC,EAAM,QACxB3lB,EAAK2lB,EAAM,WAAWvxC,GAAG,EACzBssB,EAAKV,GAAM,EACXE,EAAKylB,EAAM,WAAWvxC,GAAG,EACzBusB,GAAMX,EAAK,IAAM,EAAIE,GAAM,EAC3B+8D,EAAKt3C,EAAM,WAAWvxC,GAAG,EACzB8oF,GAAMh9D,EAAK,KAAO,EAAI+8D,GAAM,EAC5BE,EAAKF,EAAK,GACN,MAAM/8D,CAAE,EACVg9D,EAAKC,EAAK,GACD,MAAMF,CAAE,IACjBE,EAAK,IAEPvwD,GAAKmwD,GAAW,OAAOr8D,CAAE,EAAIq8D,GAAW,OAAOp8D,CAAE,EAAIo8D,GAAW,OAAOG,CAAE,EAAIH,GAAW,OAAOI,CAAE,EAEnG,OAAOvwD,CACT,CACA,SAASwwD,GAAcz3C,EAAO,CAC5B,IAAI/Y,EAAI,GACJ5M,EAAK,EAAGE,EAAK,EAAG+8D,EAAK,EAAGv8D,EAAK,EAAGC,EAAK,EAAGu8D,EAAK,EAAGC,EAAK,EACzDx3C,EAAQA,EAAM,QAAQ,eAAgB,EAAE,EACxC,QAASvxC,EAAI,EAAGA,EAAIuxC,EAAM,QACxBjlB,EAAKq8D,GAAW,QAAQp3C,EAAM,OAAOvxC,GAAG,CAAC,EACzCusB,EAAKo8D,GAAW,QAAQp3C,EAAM,OAAOvxC,GAAG,CAAC,EACzC4rB,EAAKU,GAAM,EAAIC,GAAM,EACrBiM,GAAK,OAAO,aAAa5M,CAAE,EAC3Bk9D,EAAKH,GAAW,QAAQp3C,EAAM,OAAOvxC,GAAG,CAAC,EACzC8rB,GAAMS,EAAK,KAAO,EAAIu8D,GAAM,EACxBA,IAAO,KACTtwD,GAAK,OAAO,aAAa1M,CAAE,GAE7Bi9D,EAAKJ,GAAW,QAAQp3C,EAAM,OAAOvxC,GAAG,CAAC,EACzC6oF,GAAMC,EAAK,IAAM,EAAIC,EACjBA,IAAO,KACTvwD,GAAK,OAAO,aAAaqwD,CAAE,GAG/B,OAAOrwD,CACT,CACA,IAAIywD,GAAwB,UAAW,CAAE,OAAO,OAAO,OAAW,KAAe,OAAO,QAAY,KAAe,OAAO,QAAQ,SAAa,KAAe,CAAC,CAAC,QAAQ,SAAS,IAAK,IAElLC,GAA4B,UAAW,CAC1C,GAAG,OAAO,OAAW,IAAa,CACjC,IAAIC,EAAO,CAAC,OAAO,KACnB,GAAG,CAACA,EAAM,GAAI,CAAE,OAAO,KAAK,MAAO,MAAM,CAAI,MAAU,CAAEA,EAAO,EAAO,CACvE,OAAOA,EAAO,SAASC,EAAKC,EAAK,CAAE,OAAQA,EAAO,IAAI,OAAOD,EAAKC,CAAG,EAAI,IAAI,OAAOD,CAAG,CAAE,EAAK,OAAO,KAAK,KAAK,MAAM,CACrH,CACD,OAAO,UAAW,CAAA,CACnB,IAGA,SAASE,GAAY56D,EAAgB,CAEpC,OAAGu6D,GAAgB,OAAO,MAAQ,OAAO,MAAMv6D,CAAG,EAAI,IAAI,OAAOA,CAAG,EAC7D,OAAO,WAAc,IAAc,IAAI,WAAWA,CAAG,EAAI,IAAI,MAAMA,CAAG,CAE9E,CAEA,SAAS66D,GAAe76D,EAAgB,CAEvC,OAAGu6D,GAAgB,OAAO,YAAc,OAAO,YAAYv6D,CAAG,EAAI,IAAI,OAAOA,CAAG,EACzE,OAAO,WAAc,IAAc,IAAI,WAAWA,CAAG,EAAI,IAAI,MAAMA,CAAG,CAE9E,CAEA,IAAI86D,GAAM,SAAa1wE,EAAsB,CAC5C,OAAGmwE,GAAgBC,GAAYpwE,EAAG,QAAQ,EACnCA,EAAE,MAAM,EAAE,EAAE,IAAI,SAASugC,EAAwB,CAAE,OAAOA,EAAE,WAAW,CAAC,EAAI,GAAO,CAAA,CAC3F,EAEA,SAASowC,GAAK3wE,EAAsB,CACnC,GAAG,OAAO,YAAgB,IAAa,OAAO0wE,GAAI1wE,CAAC,EAEnD,QADIswE,EAAM,IAAI,YAAYtwE,EAAE,MAAM,EAAG4wE,EAAO,IAAI,WAAWN,CAAG,EACrDppF,EAAE,EAAGA,GAAG8Y,EAAE,OAAQ,EAAE9Y,EAAG0pF,EAAK1pF,CAAC,EAAI8Y,EAAE,WAAW9Y,CAAC,EAAI,IAC5D,OAAOopF,CACR,CAEA,SAASO,GAAIv0E,EAAyB,CACrC,GAAG,MAAM,QAAQA,CAAI,EAAG,OAAOA,EAAK,IAAI,SAAS3T,EAAG,CAAE,OAAO,OAAO,aAAaA,CAAC,CAAI,CAAA,EAAE,KAAK,EAAE,EACjE,QAA1B+2B,EAAsB,CAAA,EAAYx4B,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAGw4B,EAAEx4B,CAAC,EAAI,OAAO,aAAaoV,EAAKpV,CAAC,CAAC,EAAG,OAAOw4B,EAAE,KAAK,EAAE,CACzH,CAEA,SAASoxD,GAAIx0E,EAAuC,CACnD,GAAG,OAAO,WAAe,IAAa,MAAM,IAAI,MAAM,aAAa,EACnE,OAAO,IAAI,WAAWA,CAAI,CAC3B,CAWA,IAAIy0E,GAAUZ,GAAU,SAASa,EAAM,CAAE,OAAO,OAAO,OAAOA,EAAK,IAAI,SAASV,EAAK,CAAE,OAAO,OAAO,SAASA,CAAG,EAAIA,EAAMF,GAAYE,CAAG,CAAE,CAAE,CAAC,GAAO,SAASU,EAAM,CACpK,GAAG,OAAO,WAAe,IAAa,CACrC,IAAI9pF,EAAI,EAAG+pF,EAAS,EACpB,IAAI/pF,EAAI,EAAGA,EAAI8pF,EAAK,OAAQ,EAAE9pF,EAAG+pF,GAAUD,EAAK9pF,CAAC,EAAE,OACnD,IAAIw4B,EAAI,IAAI,WAAWuxD,CAAM,EACzBr7D,EAAM,EACV,IAAI1uB,EAAI,EAAG+pF,EAAS,EAAG/pF,EAAI8pF,EAAK,OAAQC,GAAUr7D,EAAK,EAAE1uB,EAExD,GADA0uB,EAAMo7D,EAAK9pF,CAAC,EAAE,OACX8pF,EAAK9pF,CAAC,YAAa,WAAYw4B,EAAE,IAAIsxD,EAAK9pF,CAAC,EAAG+pF,CAAM,MAClD,IAAG,OAAOD,EAAK9pF,CAAC,GAAK,SAAY,KAAM,MACvCw4B,EAAE,IAAI,IAAI,WAAWsxD,EAAK9pF,CAAC,CAAC,EAAG+pF,CAAM,EAE3C,OAAOvxD,CACP,CACD,MAAO,CAAE,EAAC,OAAO,MAAM,CAAA,EAAIsxD,EAAK,IAAI,SAASV,EAAK,CAAE,OAAO,MAAM,QAAQA,CAAG,EAAIA,EAAM,GAAG,MAAM,KAAKA,CAAG,CAAI,CAAA,CAAC,CAC7G,EAEA,SAASY,GAAWl5D,EAAoB,CAGvC,QAFIm5D,EAAM,CAAE,EAAEC,EAAO,EAAGC,EAAIr5D,EAAQ,OAAS,IACzC0H,EAAI8wD,GAAYx4D,EAAQ,OAAS,GAAG,EAChCs5D,EAAO,EAAGA,EAAOt5D,EAAQ,OAAQ,EAAEs5D,EAAM,CAChD,IAAI3oF,EAAIqvB,EAAQ,WAAWs5D,CAAI,EAC/B,GAAG3oF,EAAI,IAAM+2B,EAAE0xD,GAAM,EAAIzoF,UACjBA,EAAI,KACX+2B,EAAE0xD,GAAM,EAAK,IAAMzoF,GAAG,EAAG,GACzB+2B,EAAE0xD,GAAM,EAAK,IAAKzoF,EAAE,WACXA,GAAK,OAAUA,EAAI,MAAQ,CACpCA,GAAKA,EAAE,MAAM,GACb,IAAIyyC,EAAIpjB,EAAQ,WAAW,EAAEs5D,CAAI,EAAE,KACnC5xD,EAAE0xD,GAAM,EAAK,IAAMzoF,GAAG,EAAG,EACzB+2B,EAAE0xD,GAAM,EAAK,IAAMzoF,GAAG,EAAG,GACzB+2B,EAAE0xD,GAAM,EAAK,IAAMh2C,GAAG,EAAG,IAAMzyC,EAAE,IAAI,EACrC+2B,EAAE0xD,GAAM,EAAK,IAAKh2C,EAAE,EACvB,MACG1b,EAAE0xD,GAAM,EAAK,IAAMzoF,GAAG,GAAI,GAC1B+2B,EAAE0xD,GAAM,EAAK,IAAMzoF,GAAG,EAAG,GACzB+2B,EAAE0xD,GAAM,EAAK,IAAKzoF,EAAE,GAElByoF,EAAOC,IACTF,EAAI,KAAKzxD,EAAE,MAAM,EAAG0xD,CAAI,CAAC,EACzBA,EAAO,EACP1xD,EAAI8wD,GAAY,KAAK,EACrBa,EAAI,MAEL,CACD,OAAAF,EAAI,KAAKzxD,EAAE,MAAM,EAAG0xD,CAAI,CAAC,EAClBL,GAAQI,CAAG,CACnB,CAEA,IAAII,GAAO,UAAWC,GAAO,mBAqB7B,SAASC,GAAQlxC,EAAyB,CAA8B,QAAxB7gB,EAAI,GAAIx4B,EAAIq5C,EAAE,OAAO,EAASr5C,GAAG,GAAGw4B,GAAK6gB,EAAE,OAAOr5C,GAAG,EAAG,OAAOw4B,CAAI,CACnH,SAASgyD,GAAK7lF,EAAUuvC,EAAwB,CAAC,IAAI9vB,EAAE,GAAGzf,EAAG,OAAOyf,EAAE,QAAQ8vB,EAAE9vB,EAAEqmE,GAAK,IAAIv2C,EAAE9vB,EAAE,MAAM,EAAEA,CAAE,CACzG,SAASsmE,GAAK/lF,EAAUuvC,EAAwB,CAAC,IAAI9vB,EAAE,GAAGzf,EAAE,OAAOyf,EAAE,QAAQ8vB,EAAE9vB,EAAEqmE,GAAK,IAAIv2C,EAAE9vB,EAAE,MAAM,EAAEA,CAAE,CACxG,SAASumE,GAAMhmF,EAAUuvC,EAAwB,CAAC,IAAI9vB,EAAE,GAAGzf,EAAG,OAAOyf,EAAE,QAAQ8vB,EAAE9vB,EAAEA,EAAEqmE,GAAK,IAAIv2C,EAAE9vB,EAAE,MAAM,CAAE,CAC1G,SAASwmE,GAAOjmF,EAAUuvC,EAAwB,CAAC,IAAI9vB,EAAE,GAAG,KAAK,MAAMzf,CAAC,EAAG,OAAOyf,EAAE,QAAQ8vB,EAAE9vB,EAAEqmE,GAAK,IAAIv2C,EAAE9vB,EAAE,MAAM,EAAEA,CAAE,CACvH,SAASymE,GAAOlmF,EAAUuvC,EAAwB,CAAC,IAAI9vB,EAAE,GAAGzf,EAAG,OAAOyf,EAAE,QAAQ8vB,EAAE9vB,EAAEqmE,GAAK,IAAIv2C,EAAE9vB,EAAE,MAAM,EAAEA,CAAE,CAC3G,IAAI0mE,GAAqB,KAAK,IAAI,EAAE,EAAE,EACtC,SAASC,GAAMpmF,EAAUuvC,EAAwB,CAAC,GAAGvvC,EAAEmmF,IAAOnmF,EAAE,CAACmmF,GAAO,OAAOF,GAAOjmF,EAAEuvC,CAAC,EAAG,IAAIl0C,EAAI,KAAK,MAAM2E,CAAC,EAAG,OAAOkmF,GAAO7qF,EAAEk0C,CAAC,CAAI,CAExI,SAAS82C,GAAclyE,EAAc9Y,EAA2B,CAAE,OAAAA,EAAIA,GAAK,EAAU8Y,EAAE,QAAU,EAAI9Y,IAAM8Y,EAAE,WAAW9Y,CAAC,EAAE,MAAQ,MAAQ8Y,EAAE,WAAW9Y,EAAE,CAAC,EAAE,MAAQ,MAAQ8Y,EAAE,WAAW9Y,EAAE,CAAC,EAAE,MAAQ,MAAQ8Y,EAAE,WAAW9Y,EAAE,CAAC,EAAE,MAAQ,MAAQ8Y,EAAE,WAAW9Y,EAAE,CAAC,EAAE,MAAQ,MAAQ8Y,EAAE,WAAW9Y,EAAE,CAAC,EAAE,MAAQ,KAAO8Y,EAAE,WAAW9Y,EAAE,CAAC,EAAE,MAAQ,GAAM,CACpV,IAAIirF,GAAiC,CACpC,CAAC,MAAO,QAAQ,EAChB,CAAC,MAAO,QAAQ,EAChB,CAAC,MAAO,SAAS,EACjB,CAAC,MAAO,WAAW,EACnB,CAAC,MAAO,UAAU,EAClB,CAAC,MAAO,QAAQ,EAChB,CAAC,MAAO,UAAU,CACnB,EACIC,GAAmC,CACtC,CAAC,IAAK,MAAO,SAAS,EACtB,CAAC,IAAK,MAAO,UAAU,EACvB,CAAC,IAAK,MAAO,OAAO,EACpB,CAAC,IAAK,MAAO,OAAO,EACpB,CAAC,IAAK,MAAO,KAAK,EAClB,CAAC,IAAK,MAAO,MAAM,EACnB,CAAC,IAAK,MAAO,MAAM,EACnB,CAAC,IAAK,MAAO,QAAQ,EACrB,CAAC,IAAK,MAAO,WAAW,EACxB,CAAC,IAAK,MAAO,SAAS,EACtB,CAAC,IAAK,MAAO,UAAU,EACvB,CAAC,IAAK,MAAO,UAAU,CACxB,EACA,SAASC,GAAe/mE,EAAW,CAClC,OAAIA,IAAGA,EAAI,IACXA,EAAE,CAAC,EAAI,UACPA,EAAE,CAAC,EAAI,IACPA,EAAE,CAAC,EAAI,OACPA,EAAE,CAAC,EAAI,QACPA,EAAE,CAAC,EAAI,WACPA,EAAE,CAAC,EAAI,KACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,WACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,UACPA,EAAE,EAAE,EAAG,SACPA,EAAE,EAAE,EAAG,WACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,SACPA,EAAE,EAAE,EAAG,aACPA,EAAE,EAAE,EAAG,gBACPA,EAAE,EAAE,EAAG,OACPA,EAAE,EAAE,EAAG,UACPA,EAAE,EAAE,EAAG,cACPA,EAAE,EAAE,EAAG,iBACPA,EAAE,EAAE,EAAG,sBACPA,EAAE,EAAE,EAAG,sBACPA,EAAE,EAAE,EAAG,2BACPA,EAAE,EAAE,EAAG,QACPA,EAAE,EAAE,EAAG,YACPA,EAAE,EAAE,EAAG,SACPA,EAAE,EAAE,EAAG,WACPA,EAAE,EAAE,EAAG,IACPA,EAAE,EAAE,EAAG,2BACAA,CACR,CAEA,IAAIgnE,GAAY,CACf,EAAI,UACJ,EAAI,IACJ,EAAI,OACJ,EAAI,QACJ,EAAI,WACJ,EAAI,KACJ,GAAI,QACJ,GAAI,WACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,WACJ,GAAI,QACJ,GAAI,SACJ,GAAI,aACJ,GAAI,gBACJ,GAAI,OACJ,GAAI,UACJ,GAAI,cACJ,GAAI,iBACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,2BACJ,GAAI,QACJ,GAAI,YACJ,GAAI,SACJ,GAAI,WACJ,GAAI,IACJ,GAAI,0BACL,EAKIC,GAAkB,CACrB,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAI,GAE5B,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAE7B,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAEpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAK,EAAG,GAAK,EAAG,GAAK,EAAG,GAAK,EAE7B,GAAK,EAAG,GAAI,GACZ,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5B,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,GAAI,GAAI,GAAI,GAAI,GACpB,GAAI,CACL,EAIIC,GAAkB,CAErB,EAAI,4BACJ,GAAI,4BAGJ,EAAI,iCACJ,GAAI,iCAGJ,EAAI,kCACJ,GAAI,kCAGJ,EAAI,uCACJ,GAAI,uCAGJ,GAAI,8CAGJ,GAAI,uDAGJ,GAAI,sDAGJ,GAAI,8DACL,EAEA,SAASC,GAASlyC,EAAcmyC,EAAcC,EAAsC,CAMnF,QALIC,EAAMryC,EAAI,EAAI,GAAK,EACnBsyC,EAAItyC,EAAIqyC,EACRE,EAAM,EAAGC,EAAM,EAAGC,EAAI,EACtBC,EAAM,EAAGC,EAAM,EAAGC,EAAI,EACtBC,EAAI,KAAK,MAAMP,CAAC,EACdK,EAAMR,IACXU,EAAI,KAAK,MAAMP,CAAC,EAChBG,EAAII,EAAIL,EAAMD,EACdK,EAAIC,EAAIF,EAAMD,EACV,EAAAJ,EAAIO,EAAK,QACbP,EAAI,GAAKA,EAAIO,GACbN,EAAMC,EAAKA,EAAMC,EACjBC,EAAMC,EAAKA,EAAMC,EAGlB,GADGA,EAAIT,IAAQQ,EAAMR,GAAKS,EAAIF,EAAKD,EAAIF,IAAcK,EAAID,EAAKF,EAAID,IAC/D,CAACJ,EAAO,MAAO,CAAC,EAAGC,EAAMI,EAAGG,CAAC,EAChC,IAAIE,EAAI,KAAK,MAAMT,EAAMI,EAAEG,CAAC,EAC5B,MAAO,CAACE,EAAGT,EAAII,EAAIK,EAAEF,EAAGA,CAAC,CAC1B,CACA,SAASG,GAAoBznF,EAAaoqC,EAAcs9C,EAAiB,CACxE,GAAG1nF,EAAI,SAAWA,EAAI,EAAG,OAAO,KAChC,IAAIysD,EAAQzsD,EAAE,EAAIihF,EAAO,KAAK,MAAM,OAASjhF,EAAIysD,EAAK,EAAGk7B,EAAI,EACzDC,EAAK,CAAA,EACLtC,EAAI,CAAC,EAAE74B,EAAM,EAAEw0B,EAAM,EAAE,OAAOjhF,EAAEysD,GAAMw0B,EAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAO1E,GANG,KAAK,IAAIqE,EAAI,CAAC,EAAI,OAAMA,EAAI,EAAI,GAChCl7C,GAAQA,EAAK,WAAUqiB,GAAQ,MAC/B64B,EAAI,EAAI,QACVA,EAAI,EAAI,EACL,EAAErE,GAAQ,QAASqE,EAAI,EAAIrE,EAAO,EAAG,EAAEx0B,EAAM,EAAE64B,EAAI,IAEpD74B,IAAS,GAAKm7B,EAAOF,EAAK,CAAC,KAAK,GAAG,EAAE,EAAI,CAAC,KAAK,EAAE,EAAE,EAAGC,EAAI,UACrDl7B,IAAS,EAAIm7B,EAAOF,EAAK,CAAC,KAAK,EAAE,EAAE,EAAI,CAAC,KAAK,EAAE,CAAC,EAAGC,EAAI,MAC1D,CACDl7B,EAAO,IAAI,EAAEA,EAEhB,IAAIld,EAAI,IAAI,KAAK,KAAM,EAAG,CAAC,EAC3BA,EAAE,QAAQA,EAAE,QAAO,EAAKkd,EAAO,CAAC,EAChCm7B,EAAO,CAACr4C,EAAE,YAAW,EAAIA,EAAE,SAAU,EAAC,EAAEA,EAAE,QAAO,CAAE,EACnDo4C,EAAMp4C,EAAE,SACLkd,EAAO,KAAIk7B,GAAOA,EAAM,GAAK,GAC7BD,IAAIC,EAAME,GAAct4C,EAAGq4C,CAAI,EAClC,CACD,OAAAtC,EAAI,EAAIsC,EAAK,CAAC,EAAGtC,EAAI,EAAIsC,EAAK,CAAC,EAAGtC,EAAI,EAAIsC,EAAK,CAAC,EAChDtC,EAAI,EAAIrE,EAAO,GAAIA,EAAO,KAAK,MAAMA,EAAO,EAAE,EAC9CqE,EAAI,EAAIrE,EAAO,GAAIA,EAAO,KAAK,MAAMA,EAAO,EAAE,EAC9CqE,EAAI,EAAIrE,EACRqE,EAAI,EAAIqC,EACDrC,CACR,CACA,IAAIwC,GAA2B,IAAI,KAAK,KAAM,GAAI,GAAI,EAAG,EAAG,CAAC,EACzDC,GAA2BD,GAAY,UACvCE,GAA2B,IAAI,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,CAAC,EAC3D,SAASC,GAAcjoF,EAAYkoF,EAAkC,CACpE,IAAIC,EAAqBnoF,EAAE,UAC3B,OAAGkoF,EAAUC,GAAS,KAAK,GAAG,GAAG,GAAG,IAC5BnoF,GAAKgoF,KAAaG,GAAS,GAAG,GAAG,GAAG,MACpCA,GAASJ,IAA4B/nF,EAAE,kBAAmB,EAAgB8nF,GAAY,kBAAiB,GAAM,OAAW,GAAK,GAAK,GAAK,IAChJ,CAIA,SAASM,GAAkBv0D,EAAyB,CACnD,OAAQA,EAAE,QAAQ,GAAG,GAAK,GAAMA,EAAIA,EAAE,QAAQ,2BAA4B,IAAI,CAC/E,CAGA,SAASw0D,GAAkBx0D,EAAyB,CACnD,OAAGA,EAAE,QAAQ,GAAG,GAAK,GAAWA,EACzBA,EAAE,QAAQ,8BAA8B,KAAK,EAAE,QAAQ,eAAe,OAAO,CACrF,CAGA,SAASy0D,GAActoF,EAAyB,CAC/C,IAAI0iC,EAAK1iC,EAAE,EAAE,GAAG,GACZ6zB,EAAIu0D,GAAkBpoF,EAAE,QAAQ,EAAE,CAAC,EAChB,OADsB6zB,EAAE,QAAU6O,IACzD7O,EAAI7zB,EAAE,YAAY,EAAE,EAAM6zB,EAAE,QAAU6O,GAAU7O,EACzC7zB,EAAE,cAAc,CAAC,CACzB,CAGA,SAASuoF,GAAcvoF,EAAyB,CAC/C,IAAI6zB,EAAIu0D,GAAkBpoF,EAAE,QAAQ,EAAE,CAAC,EACvC,OAAQ6zB,EAAE,QAAU7zB,EAAE,EAAE,GAAG,KAAO6zB,IAAM,KAAOA,IAAM,KAAQ7zB,EAAE,YAAY,CAAC,EAAI6zB,CACjF,CAEA,SAAS20D,GAAgBxoF,EAAyB,CACjD,IAAIyoF,EAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAIzoF,CAAC,CAAC,EAAE,KAAK,MAAM,EAAG6zB,EAEvD,OAAG40D,GAAK,IAAMA,GAAK,GAAI50D,EAAI7zB,EAAE,YAAY,GAAGyoF,CAAC,EACrC,KAAK,IAAIA,CAAC,GAAK,EAAG50D,EAAIy0D,GAActoF,CAAC,EACrCyoF,IAAM,GAAI50D,EAAI7zB,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAC1C6zB,EAAI00D,GAAcvoF,CAAC,EAEjBooF,GAAkBC,GAAkBx0D,EAAE,YAAW,CAAE,CAAC,CAC5D,CAaA,SAAS60D,GAAY1oF,EAAWoqC,EAAc,CAC7C,OAAO,OAAOpqC,EAAC,CACd,IAAK,SAAU,OAAOA,EACtB,IAAK,UAAW,OAAOA,EAAI,OAAS,QACpC,IAAK,SAAU,OAAQA,EAAE,KAAOA,EAAIA,EAAE,SAAS,EAAE,EAAIwoF,GAAgBxoF,CAAC,EACtE,IAAK,YAAa,MAAO,GACzB,IAAK,SACJ,GAAGA,GAAK,KAAM,MAAO,GACrB,GAAGA,aAAa,KAAM,OAAO2oF,GAAW,GAAIV,GAAcjoF,EAAGoqC,GAAQA,EAAK,QAAQ,EAAGA,CAAI,CAC1F,CACD,MAAM,IAAI,MAAM,wCAA0CpqC,CAAC,CAC5D,CAEA,SAAS6nF,GAAcp7B,EAAe54B,EAAgC,CAEpEA,EAAE,CAAC,GAAK,IACR,IAAI8zD,EAAMl7B,EAAK,SACf,OAAGA,EAAO,KAAIk7B,GAAOA,EAAM,GAAK,GACzBA,CACT,CAEA,SAASiB,GAAe1lF,EAAiB4+E,EAAgBrnF,EAAKouF,EAA4B,CACzF,IAAIh1D,EAAE,GAAIi1D,EAAG,EAAGC,EAAG,EAAGp0C,EAAIl6C,EAAI,EAAG6qF,EAAK0D,EAAO,EAC7C,OAAO9lF,EAAI,CACV,IAAK,IACJyxC,EAAIl6C,EAAI,EAAI,IAEb,IAAK,KACL,OAAOqnF,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGwD,EAAM3wC,EAAI,IAAKq0C,EAAO,EAAG,MACzC,QAAS1D,EAAM3wC,EAAI,IAAOq0C,EAAO,EAAG,KACvC,CAAI,MACF,IAAK,KACL,OAAOlH,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGwD,EAAM7qF,EAAI,EAAGuuF,EAAOlH,EAAI,OAAQ,MAChD,IAAK,GAAG,OAAOyE,GAAO9rF,EAAI,EAAE,CAAC,EAAE,CAAC,EAChC,IAAK,GAAG,OAAO8rF,GAAO9rF,EAAI,EAAE,CAAC,EAAE,CAAC,EAChC,QAAS,OAAO8rF,GAAO9rF,EAAI,EAAE,CAAC,EAAE,CAAC,CACpC,CAAI,MACF,IAAK,KACL,OAAOqnF,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGwD,EAAM7qF,EAAI,EAAGuuF,EAAOlH,EAAI,OAAQ,MAChD,IAAK,GAAG,OAAOwE,GAAK7rF,EAAI,CAAC,EAAE,CAAC,EAC5B,QAAS,OAAO6rF,GAAK7rF,EAAI,CAAC,EAAE,CAAC,CAChC,CAAI,MACF,IAAK,KACL,OAAOqnF,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGwD,EAAM,GAAG7qF,EAAI,EAAE,IAAI,GAAIuuF,EAAOlH,EAAI,OAAQ,MAC1D,QAAS,KAAM,oBAAsBA,CACxC,CAAI,MACF,IAAK,IACL,OAAOA,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGwD,EAAM7qF,EAAI,EAAGuuF,EAAOlH,EAAI,OAAQ,MAChD,QAAS,KAAM,oBAAsBA,CACxC,CAAI,MACF,IAAK,IACL,OAAOA,EAAI,OAAM,CAChB,IAAK,GAAG,IAAK,GAAGwD,EAAM7qF,EAAI,EAAGuuF,EAAOlH,EAAI,OAAQ,MAChD,QAAS,KAAM,sBAAwBA,CAC1C,CAAI,MACF,IAAK,KACJ,GAAGA,GAAO,KAAOA,GAAO,MAAQA,GAAO,MAAQA,GAAO,OAASA,GAAO,OAAQ,KAAM,sBAAwBA,EAC5G,OAAGrnF,EAAI,IAAM,IAAMqnF,GAAO,KAAOA,GAAO,MAAc+D,GAAKprF,EAAI,EAAGqnF,EAAI,MAAM,GAEzE+G,GAAO,EAAGE,EAAKF,IAAQ,EAAI,IAAO,IAChCE,EAAKF,IAAQ,EAAI,GAAK,EAC3BC,EAAK,KAAK,MAAOC,GAAKtuF,EAAI,EAAIA,EAAI,EAAE,EACjCquF,GAAM,GAAGC,IAAID,EAAK,GAClBhH,IAAQ,IAAYgH,IAAO,EAAI,IAAM,GAAGA,EAAGC,GAC9Cl1D,EAAIgyD,GAAKiD,EAAG,EAAID,CAAG,EAChB/G,IAAQ,KAAajuD,EAAE,OAAO,EAAE,CAAC,EAC7B,IAAMA,EAAE,OAAO,EAAEiuD,EAAI,OAAO,CAAC,IACrC,IAAK,IACL,OAAOA,EAAG,CACT,IAAK,MAAO,IAAK,OAAQwD,EAAM7qF,EAAI,EAAE,GAAGA,EAAI,EAAG,MAC/C,IAAK,MAAO,IAAK,OAAQ6qF,GAAO7qF,EAAI,EAAE,GAAGA,EAAI,GAAG,GAAGA,EAAI,EAAG,MAC1D,IAAK,MAAO,IAAK,OAAQ6qF,IAAQ7qF,EAAI,EAAE,GAAGA,EAAI,GAAG,GAAGA,EAAI,GAAG,GAAG,KAAK,MAAMA,EAAI,EAAEA,EAAI,CAAC,EAAG,MACvF,QAAS,KAAM,uBAAyBqnF,CAC3C,CAAIkH,EAAOlH,EAAI,SAAW,EAAI,EAAI,EAAG,MACnC,IAAK,KACJwD,EAAM3wC,EAAGq0C,EAAO,EAAG,KACpB,CACD,IAAIC,EAASD,EAAO,EAAInD,GAAKP,EAAK0D,CAAI,EAAI,GAC1C,OAAOC,CACR,CAKA,SAASC,GAAS/0E,EAAyB,CAC1C,IAAIuuB,EAAI,EACR,GAAGvuB,EAAE,QAAUuuB,EAAG,OAAOvuB,EAEzB,QADI8T,EAAK9T,EAAE,OAASuuB,EAAI7O,EAAI1f,EAAE,OAAO,EAAE8T,CAAC,EAClCA,GAAG9T,EAAE,OAAQ8T,GAAGya,EAAG7O,IAAIA,EAAE,OAAS,EAAI,IAAM,IAAM1f,EAAE,OAAO8T,EAAEya,CAAC,EACpE,OAAO7O,CACR,CACA,IAAIs1D,GAAO,KACX,SAASC,GAAclmF,EAAiB4+E,EAAgBrnF,EAA0B,CACjF,IAAI4uF,EAAOvH,EAAI,QAAQqH,GAAK,EAAE,EAAGG,EAAMxH,EAAI,OAASuH,EAAK,OACzD,OAAOE,GAAUrmF,EAAMmmF,EAAM5uF,EAAM,KAAK,IAAI,GAAG,EAAE6uF,CAAG,CAAC,EAAIxD,GAAK,IAAIwD,CAAG,CACtE,CAEA,SAASE,GAAatmF,EAAiB4+E,EAAgBrnF,EAA0B,CAEhF,QADI65B,EAAMwtD,EAAI,OAAS,EACjBA,EAAI,WAAWxtD,EAAI,CAAC,IAAM,IAAI,EAAEA,EACtC,OAAOi1D,GAAUrmF,EAAM4+E,EAAI,OAAO,EAAExtD,CAAG,EAAG75B,EAAM,KAAK,IAAI,GAAG,GAAGqnF,EAAI,OAAOxtD,EAAI,CAAC,CAChF,CAEA,SAASm1D,GAAc3H,EAAgBrnF,EAA0B,CAChE,IAAIo5B,EACAS,EAAMwtD,EAAI,QAAQ,GAAG,EAAIA,EAAI,QAAQ,GAAG,EAAI,EAChD,GAAGA,EAAI,MAAM,aAAa,EAAG,CAC5B,GAAGrnF,GAAO,EAAG,MAAO,SACf,GAAGA,EAAM,EAAG,MAAO,IAAMgvF,GAAc3H,EAAK,CAACrnF,CAAG,EACrD,IAAIivF,EAAS5H,EAAI,QAAQ,GAAG,EAAM4H,IAAW,KAAIA,EAAO5H,EAAI,QAAQ,GAAG,GACvE,IAAI6H,EAAK,KAAK,MAAM,KAAK,IAAIlvF,CAAG,EAAE,KAAK,MAAM,EAAEivF,EAG/C,GAFGC,EAAK,IAAGA,GAAMD,GACjB71D,GAAKp5B,EAAI,KAAK,IAAI,GAAGkvF,CAAE,GAAG,YAAYr1D,EAAI,GAAGo1D,EAAOC,GAAID,CAAM,EAC3D71D,EAAE,QAAQ,GAAG,IAAM,GAAI,CACzB,IAAI+1D,EAAQ,KAAK,MAAM,KAAK,IAAInvF,CAAG,EAAE,KAAK,MAAM,EAGhD,IAFGo5B,EAAE,QAAQ,GAAG,IAAM,GAAIA,EAAIA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAAI,MAAQ+1D,EAAQ/1D,EAAE,OAAO81D,GACpF91D,GAAK,MAAQ+1D,EAAQD,GACpB91D,EAAE,OAAO,EAAE,CAAC,IAAM,MACvBA,EAAIA,EAAE,OAAO,CAAC,EAAIA,EAAE,OAAO,EAAE61D,CAAM,EAAI,IAAM71D,EAAE,OAAO,EAAE61D,CAAM,EAC9D71D,EAAIA,EAAE,QAAQ,aAAa,IAAI,EAAE,QAAQ,QAAQ,IAAI,EAEtDA,EAAIA,EAAE,QAAQ,MAAM,GAAG,CACvB,CACDA,EAAIA,EAAE,QAAQ,2BAA2B,SAASg2D,EAAGC,EAAGC,EAAGC,EAAI,CAAE,OAAOF,EAAKC,EAAKC,EAAG,OAAO,GAAGN,EAAOC,GAAID,CAAM,EAAI,IAAMM,EAAG,OAAOL,CAAE,EAAI,GAAM,CAAA,CAChJ,MAAM91D,EAAIp5B,EAAI,cAAc65B,CAAG,EAChC,OAAGwtD,EAAI,MAAM,QAAQ,GAAKjuD,EAAE,MAAM,UAAU,IAAGA,EAAIA,EAAE,OAAO,EAAEA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAOA,EAAE,OAAO,CAAC,GAClGiuD,EAAI,MAAM,KAAK,GAAKjuD,EAAE,MAAM,KAAK,IAAGA,EAAIA,EAAE,QAAQ,MAAM,GAAG,GACvDA,EAAE,QAAQ,IAAI,GAAG,CACzB,CACA,IAAIo2D,GAAQ,yBACZ,SAASC,GAAalgF,EAAqBmgF,EAAiB31C,EAA4B,CACvF,IAAI41C,EAAM,SAASpgF,EAAE,CAAC,EAAE,EAAE,EAAGqgF,EAAK,KAAK,MAAMF,EAAOC,CAAG,EAAGvvE,EAAO,KAAK,MAAMwvE,EAAGD,CAAG,EAC9EE,EAAOD,EAAKxvE,EAAKuvE,EAAMG,EAAMH,EACjC,OAAO51C,GAAQ35B,IAAS,EAAI,GAAK,GAAGA,GAAQ,KAAOyvE,IAAQ,EAAIxE,GAAK,IAAK97E,EAAE,CAAC,EAAE,OAAS,EAAIA,EAAE,CAAC,EAAE,MAAM,EAAI+7E,GAAKuE,EAAItgF,EAAE,CAAC,EAAE,MAAM,EAAIA,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAI67E,GAAK0E,EAAIvgF,EAAE,CAAC,EAAE,MAAM,EAC3K,CACA,SAASwgF,GAAaxgF,EAAqBmgF,EAAiB31C,EAA4B,CACvF,OAAOA,GAAQ21C,IAAS,EAAI,GAAK,GAAGA,GAAQrE,GAAK,IAAK97E,EAAE,CAAC,EAAE,OAAS,EAAIA,EAAE,CAAC,EAAE,MAAM,CACpF,CACA,IAAIygF,GAAO,iBACPC,GAAa,WACbC,GAAQ,sBACZ,SAASC,GAAMtwF,EAA2B,CAEzC,QADIu5B,EAAI,GAAIg3D,EACJxvF,EAAI,EAAGA,GAAKf,EAAI,OAAQ,EAAEe,EAAG,OAAQwvF,EAAGvwF,EAAI,WAAWe,CAAC,EAAC,CAChE,IAAK,IAAI,MACT,IAAK,IAAIw4B,GAAI,IAAK,MAClB,IAAK,IAAIA,GAAI,IAAK,MAClB,QAASA,GAAI,OAAO,aAAag3D,CAAE,CACnC,CACD,OAAOh3D,CACR,CACA,SAASi3D,GAAIrwF,EAAgB80C,EAAyB,CAAE,IAAIw7C,EAAK,KAAK,IAAI,GAAGx7C,CAAC,EAAG,MAAO,GAAI,KAAK,MAAM90C,EAAMswF,CAAE,EAAEA,CAAM,CACvH,SAASC,GAAIvwF,EAAgB80C,EAAyB,CACrD,IAAI07C,EAAQxwF,EAAM,KAAK,MAAMA,CAAG,EAAGswF,EAAK,KAAK,IAAI,GAAGx7C,CAAC,EACrD,OAAIA,GAAK,GAAK,KAAK,MAAM07C,EAAQF,CAAE,GAAG,OAAe,EAC9C,KAAK,MAAME,EAAQF,CAAE,CAC7B,CACA,SAASG,GAAMzwF,EAAgB80C,EAAyB,CACvD,OAAIA,GAAK,GAAK,KAAK,OAAO90C,EAAI,KAAK,MAAMA,CAAG,GAAG,KAAK,IAAI,GAAG80C,CAAC,CAAC,GAAG,OACxD,EAED,CACR,CACA,SAAS47C,GAAI1wF,EAA2B,CACvC,OAAGA,EAAM,YAAcA,EAAM,YAAoB,IAAIA,GAAO,EAAKA,EAAI,EAAMA,EAAI,EAAE,GAC1E,GAAG,KAAK,MAAMA,CAAG,CACzB,CACA,SAAS2wF,GAAcloF,EAAiB4+E,EAAgBrnF,EAA2B,CAClF,GAAGyI,EAAK,WAAW,CAAC,IAAM,IAAM,CAAC4+E,EAAI,MAAM4I,EAAU,EAAG,CACvD,IAAIW,EAAOvJ,EAAI,QAAQ,OAAO,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,KAAK,EAAE,EACnE,OAAGrnF,GAAO,EAAU2wF,GAAc,IAAKC,EAAM5wF,CAAG,EACzC,IAAM2wF,GAAc,IAAKC,EAAM,CAAC5wF,CAAG,EAAI,GAC9C,CACD,GAAGqnF,EAAI,WAAWA,EAAI,OAAS,CAAC,IAAM,GAAI,OAAO0H,GAAatmF,EAAM4+E,EAAKrnF,CAAG,EAC5E,GAAGqnF,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAOsH,GAAclmF,EAAM4+E,EAAKrnF,CAAG,EAC/D,GAAGqnF,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAO2H,GAAc3H,EAAKrnF,CAAG,EACzD,GAAGqnF,EAAI,WAAW,CAAC,IAAM,GAAI,MAAO,IAAIsJ,GAAcloF,EAAK4+E,EAAI,OAAOA,EAAI,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAErnF,CAAG,EACjG,IAAIo5B,EACA7pB,EAAsBshF,EAAIC,EAAIpB,EAAO,KAAK,IAAI1vF,CAAG,EAAG+5C,EAAO/5C,EAAM,EAAI,IAAM,GAC/E,GAAGqnF,EAAI,MAAM,OAAO,EAAG,OAAOttC,EAAO4xC,GAAM+D,EAAKrI,EAAI,MAAM,EAC1D,GAAGA,EAAI,MAAM,SAAS,EACrB,OAAAjuD,EAAIuyD,GAAM3rF,EAAI,CAAC,EAAMo5B,IAAM,MAAKA,EAAI,IAC7BA,EAAE,OAASiuD,EAAI,OAASjuD,EAAI+2D,GAAM9I,EAAI,OAAO,EAAEA,EAAI,OAAOjuD,EAAE,MAAM,CAAC,EAAIA,EAE/E,GAAI7pB,EAAI83E,EAAI,MAAMmI,EAAK,EAAI,OAAOC,GAAalgF,EAAGmgF,EAAM31C,CAAI,EAC5D,GAAGstC,EAAI,MAAM,QAAQ,EAAG,OAAOttC,EAAO4xC,GAAM+D,EAAKrI,EAAI,OAASA,EAAI,QAAQ,GAAG,CAAC,EAC9E,GAAI93E,EAAI83E,EAAI,MAAM2I,EAAI,EACrB,OAAA52D,EAAIi3D,GAAIrwF,EAAKuP,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,aAAa,MAAM4gF,GAAM5gF,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,IAAI4gF,GAAM5gF,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,WAAW,SAAS6/E,EAAIC,EAAI,CAAE,MAAO,IAAMA,EAAKhE,GAAK,IAAK8E,GAAa5gF,EAAe,CAAC,CAAC,EAAE,OAAO8/E,EAAG,MAAM,CAAE,CAAE,EAChNhI,EAAI,QAAQ,IAAI,IAAM,GAAKjuD,EAAIA,EAAE,QAAQ,OAAO,GAAG,EAG3D,GADAiuD,EAAMA,EAAI,QAAQ,YAAa,IAAI,EAC/B93E,EAAI83E,EAAI,MAAM,cAAc,EAC/B,OAAOttC,EAAOs2C,GAAIX,EAAMngF,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,kBAAkB,KAAK,EAAE,QAAQ,YAAY,KAAK,EAAE,QAAQ,OAAOA,EAAE,CAAC,EAAE,OAAO,KAAK,GAAG,EAErI,GAAIA,EAAI83E,EAAI,MAAM,mBAAmB,EAAI,OAAOttC,EAAO00C,GAAS9C,GAAM+D,EAAK,CAAC,CAAC,EAC7E,GAAIngF,EAAI83E,EAAI,MAAM,mBAAmB,EACpC,OAAOrnF,EAAM,EAAI,IAAM2wF,GAAcloF,EAAM4+E,EAAK,CAACrnF,CAAG,EAAIyuF,GAAS,IAAI,KAAK,MAAMzuF,CAAG,EAAIywF,GAAMzwF,EAAKuP,EAAE,CAAC,EAAE,MAAM,EAAE,EAAI,IAAM67E,GAAKmF,GAAIvwF,EAAKuP,EAAE,CAAC,EAAE,MAAM,EAAEA,EAAE,CAAC,EAAE,MAAM,EAEhK,GAAIA,EAAI83E,EAAI,MAAM,UAAU,EAAI,OAAOsJ,GAAcloF,EAAK4+E,EAAI,QAAQ,SAAS,EAAE,EAAErnF,CAAG,EACtF,GAAIuP,EAAI83E,EAAI,MAAM,yBAAyB,EAC1C,OAAAjuD,EAAI+xD,GAAQwF,GAAcloF,EAAM4+E,EAAI,QAAQ,SAAS,EAAE,EAAGrnF,CAAG,CAAC,EAC9D6wF,EAAK,EACE1F,GAAQA,GAAQ9D,EAAI,QAAQ,MAAM,EAAE,CAAC,EAAE,QAAQ,QAAQ,SAASptC,EAAE,CAAC,OAAO42C,EAAGz3D,EAAE,OAAOA,EAAE,OAAOy3D,GAAI,EAAE52C,IAAI,IAAI,IAAI,EAAG,CAAC,CAAC,EAE9H,GAAGotC,EAAI,MAAM6I,EAAK,EACjB,OAAA92D,EAAIu3D,GAAcloF,EAAM,aAAczI,CAAG,EAClC,IAAMo5B,EAAE,OAAO,EAAE,CAAC,EAAI,KAAOA,EAAE,OAAO,EAAG,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAEtE,IAAI23D,EAAK,GACT,GAAIxhF,EAAI83E,EAAI,MAAM,6BAA6B,EAC9C,OAAAwJ,EAAK,KAAK,IAAiBthF,EAAE,CAAC,EAAS,OAAO,CAAC,EAC/CuhF,EAAK3E,GAASuD,EAAM,KAAK,IAAI,GAAGmB,CAAE,EAAE,EAAG,EAAK,EAC5Cz3D,EAAI,GAAK2gB,EACTg3C,EAAKjC,GAAU,IAAkBv/E,EAAE,CAAC,EAAUuhF,EAAG,CAAC,CAAC,EAChDC,EAAG,OAAOA,EAAG,OAAO,CAAC,GAAK,MAAKA,EAAKA,EAAG,OAAO,EAAEA,EAAG,OAAO,CAAC,EAAI,KAClE33D,GAAK23D,EAAkBxhF,EAAE,CAAC,EAAW,IAAmBA,EAAE,CAAC,EAC3DwhF,EAAKxF,GAAMuF,EAAG,CAAC,EAAED,CAAE,EAChBE,EAAG,OAASxhF,EAAE,CAAC,EAAE,SAAQwhF,EAAKZ,GAAM5gF,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,EAAE,OAAOwhF,EAAG,MAAM,CAAC,EAAIA,GAC7E33D,GAAK23D,EACE33D,EAER,GAAI7pB,EAAI83E,EAAI,MAAM,+BAA+B,EAChD,OAAAwJ,EAAK,KAAK,IAAI,KAAK,IAAIthF,EAAE,CAAC,EAAE,OAAQA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAClDuhF,EAAK3E,GAASuD,EAAM,KAAK,IAAI,GAAGmB,CAAE,EAAE,EAAG,EAAI,EACpC92C,GAAQ+2C,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAI,GAAK,MAAQ,KAAOA,EAAG,CAAC,EAAIxF,GAAKwF,EAAG,CAAC,EAAED,CAAE,EAAIthF,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAIg8E,GAAMuF,EAAG,CAAC,EAAED,CAAE,EAAGxF,GAAK,IAAK,EAAEwF,EAAG,EAAIthF,EAAE,CAAC,EAAE,OAASA,EAAE,CAAC,EAAE,MAAM,GAE9J,GAAIA,EAAI83E,EAAI,MAAM,UAAU,EAE3B,OADAjuD,EAAIuyD,GAAM3rF,EAAK,CAAC,EACbqnF,EAAI,QAAUjuD,EAAE,OAAeA,EAC3B+2D,GAAM9I,EAAI,OAAO,EAAEA,EAAI,OAAOjuD,EAAE,MAAM,CAAC,EAAIA,EAEnD,GAAI7pB,EAAI83E,EAAI,MAAM,qBAAqB,EAAI,CAC1CjuD,EAAI,GAAKp5B,EAAI,QAAQ,KAAK,IAAIuP,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,YAAY,IAAI,EACvEshF,EAAKz3D,EAAE,QAAQ,GAAG,EAClB,IAAI43D,EAAO3J,EAAI,QAAQ,GAAG,EAAIwJ,EAAII,EAAO5J,EAAI,OAASjuD,EAAE,OAAS43D,EACjE,OAAOb,GAAM9I,EAAI,OAAO,EAAE2J,CAAI,EAAI53D,EAAIiuD,EAAI,OAAOA,EAAI,OAAO4J,CAAI,CAAC,CACjE,CACD,GAAI1hF,EAAI83E,EAAI,MAAM,oBAAoB,EACrC,OAAAwJ,EAAKN,GAAIvwF,EAAKuP,EAAE,CAAC,EAAE,MAAM,EAClBvP,EAAM,EAAI,IAAM2wF,GAAcloF,EAAM4+E,EAAK,CAACrnF,CAAG,EAAIyuF,GAASiC,GAAI1wF,CAAG,CAAC,EAAE,QAAQ,aAAa,KAAK,EAAE,QAAQ,QAAQ,SAASovF,EAAI,CAAE,MAAO,OAASA,EAAG,OAAS,EAAIhE,GAAK,EAAE,EAAEgE,EAAG,MAAM,EAAI,IAAMA,CAAG,CAAE,EAAI,IAAMhE,GAAKyF,EAAGthF,EAAE,CAAC,EAAE,MAAM,EAErO,OAAO83E,EAAG,CACT,IAAK,aAAc,OAAOsJ,GAAcloF,EAAM,WAAYzI,CAAG,EAC7D,IAAK,UACL,IAAK,SACL,IAAK,QAAS,IAAIi6C,EAAIw0C,GAAS9C,GAAM+D,EAAK,CAAC,CAAC,EAAG,OAAOz1C,IAAM,IAAMF,EAAOE,EAAI,GAC7E,IAAK,aAAc,OAAO02C,GAAcloF,EAAM,aAAazI,CAAG,EAAE,QAAQ,OAAO,GAAG,EAClF,IAAK,WAAY,OAAO2wF,GAAcloF,EAAM,WAAWzI,CAAG,EAAE,QAAQ,OAAO,GAAG,CAE9E,CACD,MAAM,IAAI,MAAM,uBAAyBqnF,EAAM,GAAG,CACnD,CACA,SAAS6J,GAAczoF,EAAiB4+E,EAAgBrnF,EAA0B,CAEjF,QADI65B,EAAMwtD,EAAI,OAAS,EACjBA,EAAI,WAAWxtD,EAAI,CAAC,IAAM,IAAI,EAAEA,EACtC,OAAOi1D,GAAUrmF,EAAM4+E,EAAI,OAAO,EAAExtD,CAAG,EAAG75B,EAAM,KAAK,IAAI,GAAG,GAAGqnF,EAAI,OAAOxtD,EAAI,CAAC,CAChF,CACA,SAASs3D,GAAe1oF,EAAiB4+E,EAAgBrnF,EAA0B,CAClF,IAAI4uF,EAAOvH,EAAI,QAAQqH,GAAK,EAAE,EAAGG,EAAMxH,EAAI,OAASuH,EAAK,OACzD,OAAOE,GAAUrmF,EAAMmmF,EAAM5uF,EAAM,KAAK,IAAI,GAAG,EAAE6uF,CAAG,CAAC,EAAIxD,GAAK,IAAIwD,CAAG,CACtE,CACA,SAASuC,GAAe/J,EAAgBrnF,EAA0B,CACjE,IAAIo5B,EACAS,EAAMwtD,EAAI,QAAQ,GAAG,EAAIA,EAAI,QAAQ,GAAG,EAAI,EAChD,GAAGA,EAAI,MAAM,aAAa,EAAG,CAC5B,GAAGrnF,GAAO,EAAG,MAAO,SACf,GAAGA,EAAM,EAAG,MAAO,IAAMoxF,GAAe/J,EAAK,CAACrnF,CAAG,EACtD,IAAIivF,EAAS5H,EAAI,QAAQ,GAAG,EAAM4H,IAAW,KAAIA,EAAO5H,EAAI,QAAQ,GAAG,GACvE,IAAI6H,EAAK,KAAK,MAAM,KAAK,IAAIlvF,CAAG,EAAE,KAAK,MAAM,EAAEivF,EAG/C,GAFGC,EAAK,IAAGA,GAAMD,GACjB71D,GAAKp5B,EAAI,KAAK,IAAI,GAAGkvF,CAAE,GAAG,YAAYr1D,EAAI,GAAGo1D,EAAOC,GAAID,CAAM,EAC3D,CAAC71D,EAAE,MAAM,MAAM,EAAG,CACpB,IAAI+1D,EAAQ,KAAK,MAAM,KAAK,IAAInvF,CAAG,EAAE,KAAK,MAAM,EAC7Co5B,EAAE,QAAQ,GAAG,IAAM,GAAIA,EAAIA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAAI,MAAQ+1D,EAAQ/1D,EAAE,OAAO81D,GACpF91D,GAAK,MAAQ+1D,EAAQD,GAC1B91D,EAAIA,EAAE,QAAQ,MAAM,GAAG,CACvB,CACDA,EAAIA,EAAE,QAAQ,2BAA2B,SAASg2D,EAAGC,EAAGC,EAAGC,EAAI,CAAE,OAAOF,EAAKC,EAAKC,EAAG,OAAO,GAAGN,EAAOC,GAAID,CAAM,EAAI,IAAMM,EAAG,OAAOL,CAAE,EAAI,GAAM,CAAA,CAChJ,MAAM91D,EAAIp5B,EAAI,cAAc65B,CAAG,EAChC,OAAGwtD,EAAI,MAAM,QAAQ,GAAKjuD,EAAE,MAAM,UAAU,IAAGA,EAAIA,EAAE,OAAO,EAAEA,EAAE,OAAO,CAAC,EAAI,IAAMA,EAAE,OAAOA,EAAE,OAAO,CAAC,GAClGiuD,EAAI,MAAM,KAAK,GAAKjuD,EAAE,MAAM,KAAK,IAAGA,EAAIA,EAAE,QAAQ,MAAM,GAAG,GACvDA,EAAE,QAAQ,IAAI,GAAG,CACzB,CACA,SAASi4D,GAAc5oF,EAAiB4+E,EAAgBrnF,EAA2B,CAClF,GAAGyI,EAAK,WAAW,CAAC,IAAM,IAAM,CAAC4+E,EAAI,MAAM4I,EAAU,EAAG,CACvD,IAAIW,EAAOvJ,EAAI,QAAQ,OAAO,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,KAAK,EAAE,EACnE,OAAGrnF,GAAO,EAAUqxF,GAAc,IAAKT,EAAM5wF,CAAG,EACzC,IAAMqxF,GAAc,IAAKT,EAAM,CAAC5wF,CAAG,EAAI,GAC9C,CACD,GAAGqnF,EAAI,WAAWA,EAAI,OAAS,CAAC,IAAM,GAAI,OAAO6J,GAAczoF,EAAM4+E,EAAKrnF,CAAG,EAC7E,GAAGqnF,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAO8J,GAAe1oF,EAAM4+E,EAAKrnF,CAAG,EAChE,GAAGqnF,EAAI,QAAQ,GAAG,IAAM,GAAI,OAAO+J,GAAe/J,EAAKrnF,CAAG,EAC1D,GAAGqnF,EAAI,WAAW,CAAC,IAAM,GAAI,MAAO,IAAIgK,GAAc5oF,EAAK4+E,EAAI,OAAOA,EAAI,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAErnF,CAAG,EACjG,IAAIo5B,EACA7pB,EAAsBshF,EAAIC,EAAIpB,EAAO,KAAK,IAAI1vF,CAAG,EAAG+5C,EAAO/5C,EAAM,EAAI,IAAM,GAC/E,GAAGqnF,EAAI,MAAM,OAAO,EAAG,OAAOttC,EAAOqxC,GAAKsE,EAAKrI,EAAI,MAAM,EACzD,GAAGA,EAAI,MAAM,SAAS,EACrB,OAAAjuD,EAAK,GAAGp5B,EAASA,IAAQ,IAAGo5B,EAAI,IACzBA,EAAE,OAASiuD,EAAI,OAASjuD,EAAI+2D,GAAM9I,EAAI,OAAO,EAAEA,EAAI,OAAOjuD,EAAE,MAAM,CAAC,EAAIA,EAE/E,GAAI7pB,EAAI83E,EAAI,MAAMmI,EAAK,EAAI,OAAOO,GAAaxgF,EAAGmgF,EAAM31C,CAAI,EAC5D,GAAGstC,EAAI,MAAM,QAAQ,EAAG,OAAOttC,EAAOqxC,GAAKsE,EAAKrI,EAAI,OAASA,EAAI,QAAQ,GAAG,CAAC,EAC7E,GAAI93E,EAAI83E,EAAI,MAAM2I,EAAI,EAErB,OAAA52D,GAAK,GAAGp5B,GAAK,QAAQ,aAAa,MAAMmwF,GAAM5gF,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,MAAM,IAAI4gF,GAAM5gF,EAAE,CAAC,CAAC,CAAC,EAClF6pB,EAAIA,EAAE,QAAQ,WAAW,SAASg2D,EAAIC,EAAI,CAEzC,MAAO,IAAMA,EAAKhE,GAAK,IAAK8E,GAAM5gF,EAAE,CAAC,CAAC,EAAE,OAAO8/E,EAAG,MAAM,CAAI,CAAA,EACtDhI,EAAI,QAAQ,IAAI,IAAM,GAAKjuD,EAAIA,EAAE,QAAQ,OAAO,GAAG,EAG3D,GADAiuD,EAAMA,EAAI,QAAQ,YAAa,IAAI,EAC/B93E,EAAI83E,EAAI,MAAM,cAAc,EAC/B,OAAOttC,GAAQ,GAAG21C,GAAM,QAAQ,kBAAkB,KAAK,EAAE,QAAQ,YAAY,KAAK,EAAE,QAAQ,OAAOngF,EAAE,CAAC,EAAE,OAAO,KAAK,GAAG,EAExH,GAAIA,EAAI83E,EAAI,MAAM,mBAAmB,EAAI,OAAOttC,EAAO00C,GAAU,GAAGiB,GACpE,GAAIngF,EAAI83E,EAAI,MAAM,mBAAmB,EACpC,OAAOrnF,EAAM,EAAI,IAAMqxF,GAAc5oF,EAAM4+E,EAAK,CAACrnF,CAAG,EAAIyuF,GAAU,GAAGzuF,CAAG,EAAK,IAAMqrF,GAAK,IAAI97E,EAAE,CAAC,EAAE,MAAM,EAExG,GAAIA,EAAI83E,EAAI,MAAM,UAAU,EAAI,OAAOgK,GAAc5oF,EAAK4+E,EAAI,QAAQ,SAAS,EAAE,EAAErnF,CAAG,EACtF,GAAIuP,EAAI83E,EAAI,MAAM,yBAAyB,EAC1C,OAAAjuD,EAAI+xD,GAAQkG,GAAc5oF,EAAM4+E,EAAI,QAAQ,SAAS,EAAE,EAAGrnF,CAAG,CAAC,EAC9D6wF,EAAK,EACE1F,GAAQA,GAAQ9D,EAAI,QAAQ,MAAM,EAAE,CAAC,EAAE,QAAQ,QAAQ,SAASptC,EAAE,CAAC,OAAO42C,EAAGz3D,EAAE,OAAOA,EAAE,OAAOy3D,GAAI,EAAE52C,IAAI,IAAI,IAAI,EAAG,CAAC,CAAC,EAE9H,GAAGotC,EAAI,MAAM6I,EAAK,EACjB,OAAA92D,EAAIi4D,GAAc5oF,EAAM,aAAczI,CAAG,EAClC,IAAMo5B,EAAE,OAAO,EAAE,CAAC,EAAI,KAAOA,EAAE,OAAO,EAAG,CAAC,EAAI,IAAMA,EAAE,OAAO,CAAC,EAEtE,IAAI23D,EAAK,GACT,GAAIxhF,EAAI83E,EAAI,MAAM,6BAA6B,EAC9C,OAAAwJ,EAAK,KAAK,IAAiBthF,EAAE,CAAC,EAAS,OAAO,CAAC,EAC/CuhF,EAAK3E,GAASuD,EAAM,KAAK,IAAI,GAAGmB,CAAE,EAAE,EAAG,EAAK,EAC5Cz3D,EAAI,GAAK2gB,EACTg3C,EAAKjC,GAAU,IAAkBv/E,EAAE,CAAC,EAAUuhF,EAAG,CAAC,CAAC,EAChDC,EAAG,OAAOA,EAAG,OAAO,CAAC,GAAK,MAAKA,EAAKA,EAAG,OAAO,EAAEA,EAAG,OAAO,CAAC,EAAI,KAClE33D,GAAK23D,EAAkBxhF,EAAE,CAAC,EAAW,IAAmBA,EAAE,CAAC,EAC3DwhF,EAAKxF,GAAMuF,EAAG,CAAC,EAAED,CAAE,EAChBE,EAAG,OAASxhF,EAAE,CAAC,EAAE,SAAQwhF,EAAKZ,GAAM5gF,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,EAAE,OAAOwhF,EAAG,MAAM,CAAC,EAAIA,GAC7E33D,GAAK23D,EACE33D,EAER,GAAI7pB,EAAI83E,EAAI,MAAM,+BAA+B,EAChD,OAAAwJ,EAAK,KAAK,IAAI,KAAK,IAAIthF,EAAE,CAAC,EAAE,OAAQA,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAClDuhF,EAAK3E,GAASuD,EAAM,KAAK,IAAI,GAAGmB,CAAE,EAAE,EAAG,EAAI,EACpC92C,GAAQ+2C,EAAG,CAAC,IAAIA,EAAG,CAAC,EAAI,GAAK,MAAQ,KAAOA,EAAG,CAAC,EAAIxF,GAAKwF,EAAG,CAAC,EAAED,CAAE,EAAIthF,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAIg8E,GAAMuF,EAAG,CAAC,EAAED,CAAE,EAAGxF,GAAK,IAAK,EAAEwF,EAAG,EAAIthF,EAAE,CAAC,EAAE,OAASA,EAAE,CAAC,EAAE,MAAM,GAE9J,GAAIA,EAAI83E,EAAI,MAAM,UAAU,EAE3B,OADAjuD,EAAI,GAAKp5B,EACNqnF,EAAI,QAAUjuD,EAAE,OAAeA,EAC3B+2D,GAAM9I,EAAI,OAAO,EAAEA,EAAI,OAAOjuD,EAAE,MAAM,CAAC,EAAIA,EAEnD,GAAI7pB,EAAI83E,EAAI,MAAM,oBAAoB,EAAI,CACzCjuD,EAAI,GAAKp5B,EAAI,QAAQ,KAAK,IAAIuP,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,YAAY,IAAI,EACvEshF,EAAKz3D,EAAE,QAAQ,GAAG,EAClB,IAAI43D,EAAO3J,EAAI,QAAQ,GAAG,EAAIwJ,EAAII,EAAO5J,EAAI,OAASjuD,EAAE,OAAS43D,EACjE,OAAOb,GAAM9I,EAAI,OAAO,EAAE2J,CAAI,EAAI53D,EAAIiuD,EAAI,OAAOA,EAAI,OAAO4J,CAAI,CAAC,CACjE,CACD,GAAI1hF,EAAI83E,EAAI,MAAM,oBAAoB,EACrC,OAAOrnF,EAAM,EAAI,IAAMqxF,GAAc5oF,EAAM4+E,EAAK,CAACrnF,CAAG,EAAIyuF,GAAS,GAAGzuF,CAAG,EAAE,QAAQ,aAAa,KAAK,EAAE,QAAQ,QAAQ,SAASovF,EAAI,CAAE,MAAO,OAASA,EAAG,OAAS,EAAIhE,GAAK,EAAE,EAAEgE,EAAG,MAAM,EAAI,IAAMA,CAAK,CAAA,EAAI,IAAMhE,GAAK,EAAE77E,EAAE,CAAC,EAAE,MAAM,EAElO,OAAO83E,EAAG,CACT,IAAK,UACL,IAAK,SACL,IAAK,QAAS,IAAIptC,EAAIw0C,GAAS,GAAGiB,CAAI,EAAG,OAAOz1C,IAAM,IAAMF,EAAOE,EAAI,GACvE,QACC,GAAGotC,EAAI,MAAM,WAAW,EAAG,OAAOgK,GAAc5oF,EAAM4+E,EAAI,MAAM,EAAEA,EAAI,YAAY,GAAG,CAAC,EAAGrnF,CAAG,EAAImwF,GAAM9I,EAAI,MAAMA,EAAI,YAAY,GAAG,CAAC,CAAC,CACtI,CACD,MAAM,IAAI,MAAM,uBAAyBA,EAAM,GAAG,CACnD,CACA,SAASyH,GAAUrmF,EAAiB4+E,EAAgBrnF,EAA2B,CAC9E,OAAQA,EAAI,KAAOA,EAAMqxF,GAAc5oF,EAAM4+E,EAAKrnF,CAAG,EAAI2wF,GAAcloF,EAAM4+E,EAAKrnF,CAAG,CACtF,CACA,SAASsxF,GAAcjK,EAAkC,CAGxD,QAFIwD,EAAwB,CAAA,EACxB0G,EAAS,GACL3wF,EAAI,EAAG4sB,EAAI,EAAG5sB,EAAIymF,EAAI,OAAQ,EAAEzmF,EAAG,OAAeymF,EAAI,WAAWzmF,CAAC,EAAC,CAC1E,IAAK,IACJ2wF,EAAS,CAACA,EAAQ,MACnB,IAAK,IAAI,IAAK,IAAI,IAAK,IACtB,EAAE3wF,EAAG,MACN,IAAK,IACJiqF,EAAIA,EAAI,MAAM,EAAIxD,EAAI,OAAO75D,EAAE5sB,EAAE4sB,CAAC,EAClCA,EAAI5sB,EAAE,CACP,CAED,GADAiqF,EAAIA,EAAI,MAAM,EAAIxD,EAAI,OAAO75D,CAAC,EAC3B+jE,IAAW,GAAM,MAAM,IAAI,MAAM,WAAalK,EAAM,wBAAwB,EAC/E,OAAOwD,CACR,CAEA,IAAI2G,GAAc,kCAClB,SAASC,GAAYpK,EAA4B,CAEhD,QADIzmF,EAAI,EAAeyB,EAAI,GAAI+2B,EAAI,GAC7Bx4B,EAAIymF,EAAI,QACb,OAAQhlF,EAAIglF,EAAI,OAAOzmF,CAAC,EAAC,CACxB,IAAK,IAAQgrF,GAAcvE,EAAKzmF,CAAC,IAAGA,GAAI,GAAGA,IAAK,MAChD,IAAK,IAAK,KAAaymF,EAAI,WAAW,EAAEzmF,CAAC,IAAO,IAAMA,EAAIymF,EAAI,QAAQ,CAAY,EAAEzmF,EAAG,MACvF,IAAK,KAAMA,GAAG,EAAG,MACjB,IAAK,IAAKA,GAAG,EAAG,MAChB,IAAK,IAAK,EAAEA,EAAG,MACf,IAAK,IAAK,IAAK,IACd,GAAGymF,EAAI,OAAOzmF,EAAE,CAAC,IAAM,KAAOymF,EAAI,OAAOzmF,EAAE,CAAC,IAAM,IAAK,MAAO,GAE/D,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAEvD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,GAC7E,IAAK,IAAK,IAAK,IAAK,IAAK,IAGxB,GAFGymF,EAAI,OAAOzmF,EAAG,CAAC,EAAE,YAAa,IAAK,OACnCymF,EAAI,OAAOzmF,EAAG,CAAC,EAAE,YAAa,IAAK,SACnCymF,EAAI,OAAOzmF,EAAG,CAAC,EAAE,YAAa,IAAK,QAAS,MAAO,GACtD,EAAEA,EAAG,MACN,IAAK,IAEJ,IADAw4B,EAAI/2B,EACEglF,EAAI,OAAOzmF,GAAG,IAAM,KAAOA,EAAIymF,EAAI,QAAQjuD,GAAKiuD,EAAI,OAAOzmF,CAAC,EAClE,GAAGw4B,EAAE,MAAMo4D,EAAW,EAAG,MAAO,GAChC,MACD,IAAK,IAEL,IAAK,IAAK,IAAK,IACd,KAAM5wF,EAAIymF,EAAI,SAAW,YAAY,QAAQhlF,EAAEglF,EAAI,OAAO,EAAEzmF,CAAC,CAAC,EAAI,IAAOyB,GAAG,MAAQglF,EAAI,OAAOzmF,EAAE,CAAC,GAAK,KAAO,KAAK,QAAQymF,EAAI,OAAOzmF,EAAE,CAAC,CAAC,EAAE,KAAK,CACjJ,MACD,IAAK,IAAK,KAAMymF,EAAI,OAAO,EAAEzmF,CAAC,IAAMyB,GAAE,CAAc,MACpD,IAAK,IAAK,EAAEzB,GAAMymF,EAAI,OAAOzmF,CAAC,GAAK,KAAOymF,EAAI,OAAOzmF,CAAC,GAAK,MAAK,EAAEA,EAAG,MACrE,IAAK,IAAK,IAAK,IAAK,EAAEA,EAAG,MACzB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACpF,KAAMA,EAAIymF,EAAI,QAAU,aAAa,QAAQA,EAAI,OAAO,EAAEzmF,CAAC,CAAC,EAAI,IAAG,CAAc,MAClF,IAAK,IAAK,EAAEA,EAAG,MACf,QAAS,EAAEA,EAAG,KACd,CAEF,MAAO,EACR,CAEA,SAAS8wF,GAASrK,EAAgB9hF,EAAWoqC,EAAcgiD,EAAiB,CAI3E,QAHI9G,EAAM,CAAE,EAAEzxD,EAAI,GAAIx4B,EAAI,EAAGyB,EAAI,GAAIuvF,EAAI,IAAKC,EAAIrkE,EAAG4iE,EACjD0B,EAAG,IAEDlxF,EAAIymF,EAAI,QACb,OAAQhlF,EAAIglF,EAAI,OAAOzmF,CAAC,EAAC,CACxB,IAAK,IACJ,GAAG,CAACgrF,GAAcvE,EAAKzmF,CAAC,EAAG,MAAM,IAAI,MAAM,0BAA4ByB,EAAI,OAAQglF,CAAG,EACtFwD,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE,SAAS,EAAGjqF,GAAG,EAAG,MAC/C,IAAK,IACJ,IAAIw4B,EAAE,IAAIg3D,EAAG/I,EAAI,WAAW,EAAEzmF,CAAC,KAAO,IAAMA,EAAIymF,EAAI,QAASjuD,GAAK,OAAO,aAAag3D,CAAE,EACxFvF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEzxD,CAAC,EAAG,EAAEx4B,EAAG,MACtC,IAAK,KAAM,IAAIqnC,EAAIo/C,EAAI,OAAO,EAAEzmF,CAAC,EAAGokB,EAAKijB,IAAM,KAAOA,IAAM,IAAOA,EAAI,IACtE4iD,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE7lE,EAAG,EAAEijB,CAAC,EAAG,EAAErnC,EAAG,MACpC,IAAK,IAAKiqF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE,GAAG,EAAGjqF,GAAG,EAAG,MAClD,IAAK,IACJiqF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEtlF,CAAC,EAAG,EAAE3E,EAAG,MACtC,IAAK,IAAK,IAAK,IACd,GAAGymF,EAAI,OAAOzmF,EAAE,CAAC,IAAM,KAAOymF,EAAI,OAAOzmF,EAAE,CAAC,IAAM,IAAK,CACtD,GAAGixF,GAAI,OAAQA,EAAG7E,GAAoBznF,EAAGoqC,EAAM03C,EAAI,OAAOzmF,EAAE,CAAC,IAAM,GAAG,EAAMixF,GAAI,MAAM,MAAO,GAC7FhH,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAExD,EAAI,OAAOzmF,EAAE,CAAC,CAAC,EAAGgxF,EAAMvvF,EAAGzB,GAAG,EAAG,KAC7D,CAEF,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtDyB,EAAIA,EAAE,cAEP,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAEhE,GADGkD,EAAI,GACJssF,GAAI,OAAQA,EAAG7E,GAAoBznF,EAAGoqC,CAAI,EAAMkiD,GAAI,MAAM,MAAO,GAC7D,IAAPz4D,EAAI/2B,EAAS,EAAEzB,EAAIymF,EAAI,QAAUA,EAAI,OAAOzmF,CAAC,EAAE,YAAW,IAAOyB,GAAG+2B,GAAG/2B,EACpEA,IAAM,KAAOuvF,EAAI,YAAW,IAAO,MAAKvvF,EAAI,KAC5CA,IAAM,MAAKA,EAAIyvF,GAClBjH,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAExoF,EAAG,EAAE+2B,CAAC,EAAGw4D,EAAMvvF,EAAG,MACxC,IAAK,IAAK,IAAK,IAAK,IAAK,IACxB,IAAI0qF,EAAE,CAAC,EAAE1qF,EAAG,EAAEA,CAAC,EAMf,GALGwvF,GAAI,OAAMA,EAAG7E,GAAoBznF,EAAGoqC,CAAI,GACxC03C,EAAI,OAAOzmF,EAAG,CAAC,EAAE,gBAAkB,OAAYixF,GAAI,OAAM9E,EAAE,EAAI8E,EAAG,GAAK,GAAK,IAAM,KAAK9E,EAAE,EAAI,IAAK+E,EAAG,IAAIlxF,GAAG,GACvGymF,EAAI,OAAOzmF,EAAE,CAAC,EAAE,YAAW,IAAO,SAAcixF,GAAI,OAAM9E,EAAE,EAAI8E,EAAG,GAAK,GAAK,KAAO,MAAM9E,EAAE,EAAI,IAAKnsF,GAAG,EAAGkxF,EAAG,KAC9GzK,EAAI,OAAOzmF,EAAE,CAAC,EAAE,YAAW,IAAO,SAAcixF,GAAI,OAAM9E,EAAE,EAAI8E,EAAG,GAAK,GAAK,KAAO,MAAM9E,EAAE,EAAI,IAAKnsF,GAAG,EAAGkxF,EAAG,MAC/G/E,EAAE,EAAI,IAAK,EAAEnsF,GACjBixF,GAAI,MAAQ9E,EAAE,IAAM,IAAK,MAAO,GACnClC,EAAIA,EAAI,MAAM,EAAIkC,EAAG6E,EAAMvvF,EAAG,MAC/B,IAAK,IAEJ,IADA+2B,EAAI/2B,EACEglF,EAAI,OAAOzmF,GAAG,IAAM,KAAOA,EAAIymF,EAAI,QAAQjuD,GAAKiuD,EAAI,OAAOzmF,CAAC,EAClE,GAAGw4B,EAAE,MAAM,EAAE,IAAM,IAAK,KAAM,4BAA8BA,EAAI,IAChE,GAAGA,EAAE,MAAMo4D,EAAW,EAAG,CACxB,GAAGK,GAAI,OAAQA,EAAG7E,GAAoBznF,EAAGoqC,CAAI,EAAMkiD,GAAI,MAAM,MAAO,GACpEhH,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEzxD,EAAE,YAAW,CAAE,EAC3Cw4D,EAAMx4D,EAAE,OAAO,CAAC,CAChB,MAASA,EAAE,QAAQ,GAAG,EAAI,KAC1BA,GAAKA,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,IACnCq4D,GAAYpK,CAAG,IAAGwD,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAI,EAAEzxD,CAAC,IAEnD,MAED,IAAK,IACJ,GAAGy4D,GAAM,KAAM,CACP,IAAPz4D,EAAI/2B,EAAS,EAAEzB,EAAIymF,EAAI,SAAWhlF,EAAEglF,EAAI,OAAOzmF,CAAC,KAAO,KAAKw4B,GAAK/2B,EACjEwoF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEzxD,CAAC,EAAG,KAChC,CAEF,IAAK,IAAK,IAAK,IACP,IAAPA,EAAI/2B,EAAS,EAAEzB,EAAIymF,EAAI,QAAU,YAAY,QAAQhlF,EAAEglF,EAAI,OAAOzmF,CAAC,CAAC,EAAI,IAAIw4B,GAAK/2B,EACjFwoF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEzxD,CAAC,EAAG,MACjC,IAAK,IACG,IAAPA,EAAI/2B,EAASglF,EAAI,OAAO,EAAEzmF,CAAC,IAAMyB,GAAG+2B,GAAG/2B,EACvCwoF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAExoF,EAAG,EAAE+2B,CAAC,EAAGw4D,EAAMvvF,EAAG,MACxC,IAAK,IAAK,EAAEzB,GAAMymF,EAAI,OAAOzmF,CAAC,GAAK,KAAOymF,EAAI,OAAOzmF,CAAC,GAAK,MAAK,EAAEA,EAAG,MACrE,IAAK,IAAK,IAAK,IAAKiqF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAG8G,IAAO,EAAE,IAAItvF,EAAI,EAAEA,CAAC,EAAG,EAAEzB,EAAG,MACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7E,IAAPw4B,EAAI/2B,EAASzB,EAAIymF,EAAI,QAAU,aAAa,QAAQA,EAAI,OAAO,EAAEzmF,CAAC,CAAC,EAAI,IAAIw4B,GAAGiuD,EAAI,OAAOzmF,CAAC,EAC1FiqF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAEzxD,CAAC,EAAG,MACjC,IAAK,IAAKyxD,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAExoF,EAAG,EAAEA,CAAC,EAAG,EAAEzB,EAAG,MAC7C,IAAK,IAAKiqF,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAE,GAAG,EAAG,EAAEjqF,EAAG,MACjD,QACC,GAAG,wCAAwC,QAAQyB,CAAC,IAAM,GAAI,MAAM,IAAI,MAAM,0BAA4BA,EAAI,OAASglF,CAAG,EAC1HwD,EAAIA,EAAI,MAAM,EAAI,CAAC,EAAE,IAAK,EAAExoF,CAAC,EAAG,EAAEzB,EAAG,KACtC,CAIF,IAAImxF,EAAK,EAAG3D,EAAM,EAAG4D,EACrB,IAAIpxF,EAAEiqF,EAAI,OAAO,EAAG+G,EAAI,IAAKhxF,GAAK,EAAG,EAAEA,EACtC,OAAOiqF,EAAIjqF,CAAC,EAAE,EAAC,CACd,IAAK,IAAK,IAAK,IAAKiqF,EAAIjqF,CAAC,EAAE,EAAIkxF,EAAIF,EAAI,IAAQG,EAAK,IAAGA,EAAK,GAAG,MAC/D,IAAK,KACAC,EAAInH,EAAIjqF,CAAC,EAAE,EAAE,MAAM,OAAO,KAAIwtF,EAAI,KAAK,IAAIA,EAAI4D,EAAI,CAAC,EAAE,OAAO,CAAC,GAC/DD,EAAK,IAAGA,EAAK,GAEjB,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAKH,EAAI/G,EAAIjqF,CAAC,EAAE,EAAG,MACtD,IAAK,IAAQgxF,IAAQ,MAAO/G,EAAIjqF,CAAC,EAAE,EAAI,IAAQmxF,EAAK,IAAGA,EAAK,IAAK,MACjE,IAAK,IACJ,MACD,IAAK,IACDA,EAAK,GAAKlH,EAAIjqF,CAAC,EAAE,EAAE,MAAM,MAAM,IAAGmxF,EAAK,GACvCA,EAAK,GAAKlH,EAAIjqF,CAAC,EAAE,EAAE,MAAM,MAAM,IAAGmxF,EAAK,GACvCA,EAAK,GAAKlH,EAAIjqF,CAAC,EAAE,EAAE,MAAM,MAAM,IAAGmxF,EAAK,EAC3C,CAGF,OAAOA,EAAE,CACR,IAAK,GAAG,MACR,IAAK,GAEDF,EAAG,GAAK,KAAOA,EAAG,EAAI,EAAG,EAAEA,EAAG,GAC9BA,EAAG,GAAM,KAAMA,EAAG,EAAI,EAAG,EAAEA,EAAG,GAC9BA,EAAG,GAAM,KAAMA,EAAG,EAAI,EAAG,EAAEA,EAAG,GACjC,MACD,IAAK,GAEDA,EAAG,GAAK,KAAOA,EAAG,EAAI,EAAG,EAAEA,EAAG,GAC9BA,EAAG,GAAM,KAAMA,EAAG,EAAI,EAAG,EAAEA,EAAG,GACjC,KACD,CAGD,IAAII,EAAO,GAAIC,EACf,IAAItxF,EAAE,EAAGA,EAAIiqF,EAAI,OAAQ,EAAEjqF,EAC1B,OAAOiqF,EAAIjqF,CAAC,EAAE,EAAC,CACd,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MACxC,IAAK,IAAKiqF,EAAIjqF,CAAC,EAAE,EAAI,GAAIiqF,EAAIjqF,CAAC,EAAE,EAAI,IAAK,MACzC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAE9FiqF,EAAIjqF,CAAC,EAAE,EAAIutF,GAAetD,EAAIjqF,CAAC,EAAE,EAAE,WAAW,CAAC,EAAGiqF,EAAIjqF,CAAC,EAAE,EAAGixF,EAAIzD,CAAG,EACnEvD,EAAIjqF,CAAC,EAAE,EAAI,IAAK,MACjB,IAAK,IAAK,IAAK,IAEd,IADAsxF,EAAKtxF,EAAE,EACDiqF,EAAIqH,CAAE,GAAK,QACf7vF,EAAEwoF,EAAIqH,CAAE,EAAE,KAAO,KAAO7vF,IAAM,MAC7BA,IAAM,KAAOA,IAAM,MAAQwoF,EAAIqH,EAAG,CAAC,GAAK,OAASrH,EAAIqH,EAAG,CAAC,EAAE,IAAM,KAAOrH,EAAIqH,EAAG,CAAC,EAAE,IAAM,KAAOrH,EAAIqH,EAAG,CAAC,EAAE,IAAM,MAChHrH,EAAIjqF,CAAC,EAAE,IAAM,MAAQyB,IAAM,KAAOA,IAAM,KAAOA,IAAM,MACrDA,IAAM,MAAQwoF,EAAIqH,CAAE,EAAE,IAAM,KAAOrH,EAAIqH,CAAE,EAAE,IAAM,KAAOrH,EAAIqH,EAAG,CAAC,GAAK,MAAQrH,EAAIqH,EAAG,CAAC,EAAE,GAAK,OAE7FrH,EAAIjqF,CAAC,EAAE,GAAKiqF,EAAIqH,CAAE,EAAE,EACpBrH,EAAIqH,CAAE,EAAI,CAAC,EAAE,GAAI,EAAE,GAAG,EAAG,EAAEA,EAE5BD,GAAQpH,EAAIjqF,CAAC,EAAE,EACfA,EAAIsxF,EAAG,EAAG,MACX,IAAK,IAAKrH,EAAIjqF,CAAC,EAAE,EAAI,IAAKiqF,EAAIjqF,CAAC,EAAE,EAAIqtF,GAAY1oF,EAAEoqC,CAAI,EAAG,KAC1D,CAEF,IAAIwiD,EAAK,GAAIC,EAAKC,EAClB,GAAGJ,EAAK,OAAS,EAAG,CAChBA,EAAK,WAAW,CAAC,GAAK,IACxBG,EAAO7sF,EAAE,GAAG0sF,EAAK,WAAW,CAAC,IAAM,GAAK,CAAC1sF,EAAIA,EAC7C8sF,EAAOvD,GAAU,IAAKmD,EAAMG,CAAG,IAE/BA,EAAO7sF,EAAE,GAAKosF,EAAO,EAAI,CAACpsF,EAAIA,EAC9B8sF,EAAOvD,GAAU,IAAKmD,EAAMG,CAAG,EAC5BA,EAAM,GAAKvH,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAE,GAAK,MACnCwH,EAAOA,EAAK,OAAO,CAAC,EACpBxH,EAAI,CAAC,EAAE,EAAI,IAAMA,EAAI,CAAC,EAAE,IAG1BqH,EAAGG,EAAK,OAAO,EACf,IAAIC,EAAQzH,EAAI,OAChB,IAAIjqF,EAAE,EAAGA,EAAIiqF,EAAI,OAAQ,EAAEjqF,EAAG,GAAGiqF,EAAIjqF,CAAC,GAAK,MAAQiqF,EAAIjqF,CAAC,EAAE,GAAK,KAAOiqF,EAAIjqF,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAI,GAAI,CAAE0xF,EAAQ1xF,EAAG,KAAQ,CACvH,IAAI2xF,EAAM1H,EAAI,OACd,GAAGyH,IAAUzH,EAAI,QAAUwH,EAAK,QAAQ,GAAG,IAAM,GAAI,CACpD,IAAIzxF,EAAEiqF,EAAI,OAAO,EAAGjqF,GAAI,EAAE,EAAEA,EACxBiqF,EAAIjqF,CAAC,GAAK,MAAQ,KAAK,QAAQiqF,EAAIjqF,CAAC,EAAE,CAAC,IAAM,KAC7CsxF,GAAIrH,EAAIjqF,CAAC,EAAE,EAAE,OAAO,GAAKsxF,GAAMrH,EAAIjqF,CAAC,EAAE,EAAE,OAAQiqF,EAAIjqF,CAAC,EAAE,EAAIyxF,EAAK,OAAOH,EAAG,EAAGrH,EAAIjqF,CAAC,EAAE,EAAE,MAAM,GACvFsxF,EAAK,EAAGrH,EAAIjqF,CAAC,EAAE,EAAI,IACpBiqF,EAAIjqF,CAAC,EAAE,EAAIyxF,EAAK,OAAO,EAAGH,EAAG,CAAC,EAAGA,EAAK,IAC7CrH,EAAIjqF,CAAC,EAAE,EAAI,IACX2xF,EAAQ3xF,GAENsxF,GAAI,GAAKK,EAAM1H,EAAI,SAAQA,EAAI0H,CAAK,EAAE,EAAIF,EAAK,OAAO,EAAEH,EAAG,CAAC,EAAIrH,EAAI0H,CAAK,EAAE,EAC9E,SACOD,IAAUzH,EAAI,QAAUwH,EAAK,QAAQ,GAAG,IAAM,GAAI,CAEzD,IADAH,EAAKG,EAAK,QAAQ,GAAG,EAAE,EACnBzxF,EAAE0xF,EAAO1xF,GAAI,EAAG,EAAEA,EACrB,GAAG,EAAAiqF,EAAIjqF,CAAC,GAAK,MAAQ,KAAK,QAAQiqF,EAAIjqF,CAAC,EAAE,CAAC,IAAM,IAGhD,KAFA4sB,EAAEq9D,EAAIjqF,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,IAAIA,IAAI0xF,EAAMzH,EAAIjqF,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAEiqF,EAAIjqF,CAAC,EAAE,EAAE,OAAO,EAC9EuxF,EAAKtH,EAAIjqF,CAAC,EAAE,EAAE,OAAO4sB,EAAE,CAAC,EAClBA,GAAG,EAAG,EAAEA,EACV0kE,GAAI,IAAMrH,EAAIjqF,CAAC,EAAE,EAAE,OAAO4sB,CAAC,IAAM,KAAOq9D,EAAIjqF,CAAC,EAAE,EAAE,OAAO4sB,CAAC,IAAM,OAAM2kE,EAAKE,EAAK,OAAOH,GAAI,EAAIC,GAElGtH,EAAIjqF,CAAC,EAAE,EAAIuxF,EACXtH,EAAIjqF,CAAC,EAAE,EAAI,IACX2xF,EAAQ3xF,EAIT,IAFGsxF,GAAI,GAAKK,EAAM1H,EAAI,SAAQA,EAAI0H,CAAK,EAAE,EAAIF,EAAK,OAAO,EAAEH,EAAG,CAAC,EAAIrH,EAAI0H,CAAK,EAAE,GAC9EL,EAAKG,EAAK,QAAQ,GAAG,EAAE,EACnBzxF,EAAE0xF,EAAO1xF,EAAEiqF,EAAI,OAAQ,EAAEjqF,EAC5B,GAAG,EAAAiqF,EAAIjqF,CAAC,GAAK,MAAS,MAAM,QAAQiqF,EAAIjqF,CAAC,EAAE,CAAC,IAAM,IAAMA,IAAM0xF,GAG9D,KAFA9kE,EAAEq9D,EAAIjqF,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,IAAIA,IAAI0xF,EAAMzH,EAAIjqF,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,EAC9DuxF,EAAKtH,EAAIjqF,CAAC,EAAE,EAAE,OAAO,EAAE4sB,CAAC,EAClBA,EAAEq9D,EAAIjqF,CAAC,EAAE,EAAE,OAAQ,EAAE4sB,EACvB0kE,EAAGG,EAAK,SAAQF,GAAME,EAAK,OAAOH,GAAI,GAE1CrH,EAAIjqF,CAAC,EAAE,EAAIuxF,EACXtH,EAAIjqF,CAAC,EAAE,EAAI,IACX2xF,EAAQ3xF,EAET,CACD,CACD,IAAIA,EAAE,EAAGA,EAAEiqF,EAAI,OAAQ,EAAEjqF,EAAMiqF,EAAIjqF,CAAC,GAAK,MAAQ,KAAK,QAAQiqF,EAAIjqF,CAAC,EAAE,CAAC,EAAE,KACvEwxF,EAAOT,EAAM,GAAKpsF,EAAI,GAAK3E,EAAE,GAAKiqF,EAAIjqF,EAAE,CAAC,EAAE,IAAM,IAAM,CAAC2E,EAAEA,EAC1DslF,EAAIjqF,CAAC,EAAE,EAAIkuF,GAAUjE,EAAIjqF,CAAC,EAAE,EAAGiqF,EAAIjqF,CAAC,EAAE,EAAGwxF,CAAG,EAC5CvH,EAAIjqF,CAAC,EAAE,EAAI,KAEZ,IAAI4xF,EAAS,GACb,IAAI5xF,EAAE,EAAGA,IAAMiqF,EAAI,OAAQ,EAAEjqF,EAAMiqF,EAAIjqF,CAAC,GAAK,OAAM4xF,GAAU3H,EAAIjqF,CAAC,EAAE,GACpE,OAAO4xF,CACR,CAEA,IAAIC,GAAW,wCACf,SAASC,GAAQntF,EAAGqqF,EAAI,CACvB,GAAGA,GAAM,KAAM,MAAO,GACtB,IAAI+C,EAAS,WAAW/C,EAAG,CAAC,CAAC,EAC7B,OAAOA,EAAG,CAAC,EAAC,CACX,IAAK,IAAM,GAAGrqF,GAAKotF,EAAQ,MAAO,GAAM,MACxC,IAAK,IAAM,GAAGptF,EAAKotF,EAAQ,MAAO,GAAM,MACxC,IAAK,IAAM,GAAGptF,EAAKotF,EAAQ,MAAO,GAAM,MACxC,IAAK,KAAM,GAAGptF,GAAKotF,EAAQ,MAAO,GAAM,MACxC,IAAK,KAAM,GAAGptF,GAAKotF,EAAQ,MAAO,GAAM,MACxC,IAAK,KAAM,GAAGptF,GAAKotF,EAAQ,MAAO,GAAM,KACxC,CACD,MAAO,EACR,CACA,SAASC,GAAWv+C,EAAc9uC,EAAW,CAC5C,IAAI8hF,EAAMiK,GAAcj9C,CAAC,EACrBvuC,EAAIuhF,EAAI,OAAQwL,EAAMxL,EAAIvhF,EAAE,CAAC,EAAE,QAAQ,GAAG,EAE9C,GADGA,EAAE,GAAK+sF,EAAI,IAAI,EAAE/sF,EACjBuhF,EAAI,OAAS,EAAG,MAAM,IAAI,MAAM,iCAAmCA,EAAI,KAAK,GAAG,EAAI,GAAG,EACzF,GAAG,OAAO9hF,GAAM,SAAU,MAAO,CAAC,EAAG8hF,EAAI,SAAW,GAAKwL,EAAI,GAAGxL,EAAIA,EAAI,OAAO,CAAC,EAAE,GAAG,EACrF,OAAOA,EAAI,OAAM,CAChB,IAAK,GAAGA,EAAMwL,EAAI,GAAK,CAAC,UAAW,UAAW,UAAWxL,EAAI,CAAC,CAAC,EAAI,CAACA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAG,GAAG,EAAG,MAClG,IAAK,GAAGA,EAAMwL,EAAI,GAAK,CAACxL,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAAI,CAACA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAG,GAAG,EAAG,MACzF,IAAK,GAAGA,EAAMwL,EAAI,GAAK,CAACxL,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,CAAC,EAAI,CAACA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAGA,EAAI,CAAC,EAAG,GAAG,EAAG,KAEzF,CACD,IAAIyJ,EAAKvrF,EAAI,EAAI8hF,EAAI,CAAC,EAAI9hF,EAAI,EAAI8hF,EAAI,CAAC,EAAIA,EAAI,CAAC,EAChD,GAAGA,EAAI,CAAC,EAAE,QAAQ,GAAG,IAAM,IAAMA,EAAI,CAAC,EAAE,QAAQ,GAAG,IAAM,GAAI,MAAO,CAACvhF,EAAGgrF,CAAE,EAC1E,GAAGzJ,EAAI,CAAC,EAAE,MAAM,SAAS,GAAK,MAAQA,EAAI,CAAC,EAAE,MAAM,SAAS,GAAK,KAAM,CACtE,IAAIyL,EAAKzL,EAAI,CAAC,EAAE,MAAMoL,EAAQ,EAC1BM,EAAK1L,EAAI,CAAC,EAAE,MAAMoL,EAAQ,EAC9B,OAAOC,GAAQntF,EAAGutF,CAAE,EAAI,CAAChtF,EAAGuhF,EAAI,CAAC,CAAC,EAAIqL,GAAQntF,EAAGwtF,CAAE,EAAI,CAACjtF,EAAGuhF,EAAI,CAAC,CAAC,EAAI,CAACvhF,EAAGuhF,EAAIyL,GAAM,MAAQC,GAAM,KAAO,EAAI,CAAC,CAAC,CAC9G,CACD,MAAO,CAACjtF,EAAGgrF,CAAE,CACd,CACA,SAAS5C,GAAW7G,EAAsB9hF,EAAU6zB,EAAY,CAC5DA,GAAK,OAAMA,EAAI,IAClB,IAAIw1D,EAAO,GACX,OAAO,OAAOvH,EAAG,CAChB,IAAK,SACDA,GAAO,UAAYjuD,EAAE,OAAQw1D,EAAOx1D,EAAE,OACpCw1D,EAAOvH,EACZ,MACD,IAAK,SACDA,GAAO,IAAMjuD,EAAE,OAAQw1D,EAAOx1D,EAAE,OAC9Bw1D,GAAQx1D,EAAE,OAAS,KAAQA,EAAE,MAAiB4yD,IAAW3E,CAAG,EAC9DuH,GAAQ,OAAMA,EAAQx1D,EAAE,OAASA,EAAE,MAAM6yD,GAAgB5E,CAAG,CAAC,GAAM2E,GAAUC,GAAgB5E,CAAG,CAAC,GACjGuH,GAAQ,OAAMA,EAAO1C,GAAgB7E,CAAG,GAAK,WAChD,KACD,CACD,GAAGuE,GAAcgD,EAAK,CAAC,EAAG,OAAOX,GAAY1oF,EAAG6zB,CAAC,EAC9C7zB,aAAa,OAAMA,EAAIioF,GAAcjoF,EAAG6zB,EAAE,QAAQ,GACrD,IAAIib,EAAIu+C,GAAWhE,EAAMrpF,CAAC,EAC1B,GAAGqmF,GAAcv3C,EAAE,CAAC,CAAC,EAAG,OAAO45C,GAAY1oF,EAAG6zB,CAAC,EAC/C,GAAG7zB,IAAM,GAAMA,EAAI,eAAgBA,IAAM,GAAOA,EAAI,gBAC5CA,IAAM,IAAMA,GAAK,KAAM,MAAO,GACtC,OAAOmsF,GAASr9C,EAAE,CAAC,EAAG9uC,EAAG6zB,EAAGib,EAAE,CAAC,CAAC,CACjC,CACA,SAAS2+C,GAAS3L,EAAgBxtD,EAA4B,CAC7D,GAAG,OAAOA,GAAO,SAAU,CAC1BA,EAAM,CAACA,GAAO,GAEd,QAAQj5B,EAAI,EAAGA,EAAI,IAAQ,EAAEA,EAAG,CAE/B,GAAGorF,GAAUprF,CAAC,GAAK,KAAW,CAAKi5B,EAAM,IAAGA,EAAMj5B,GAAG,QAAW,CAChE,GAAGorF,GAAUprF,CAAC,GAAKymF,EAAK,CAAExtD,EAAMj5B,EAAG,KAAQ,CAC3C,CAEEi5B,EAAM,IAAGA,EAAM,IAClB,CAED,OAAAmyD,GAAUnyD,CAAG,EAAIwtD,EACVxtD,CACR,CACA,SAASo5D,GAAeC,EAA2B,CAClD,QAAQtyF,EAAE,EAAGA,GAAG,IAAQ,EAAEA,EACtBsyF,EAAItyF,CAAC,IAAM,QAAWoyF,GAASE,EAAItyF,CAAC,EAAGA,CAAC,CAC7C,CAEA,SAASuyF,IAAW,CACnBnH,GAAYD,GAAc,CAC3B,CAqDA,IAAIqH,GAAc,mCAClB,SAASC,GAAaC,EAAqC,CAC1D,IAAIjM,EAAM,OAAOiM,GAAU,SAAWtH,GAAUsH,CAAM,EAAIA,EAC1D,OAAAjM,EAAMA,EAAI,QAAQ+L,GAAa,QAAQ,EAChC,IAAI,OAAO,IAAM/L,EAAM,GAAG,CAClC,CACA,SAASkM,GAAW1zF,EAAgByzF,EAAmBpvD,EAAoC,CAC1F,IAAIsvD,EAAI,GAAI9yE,EAAI,GAAIo0B,EAAI,GAAI2+C,EAAI,GAAIC,EAAI,GAAIC,EAAI,IAC/CL,EAAO,MAAMF,EAAW,GAAG,CAAE,GAAE,QAAQ,SAASjwF,EAAGvC,EAAG,CACtD,IAAI2E,EAAI,SAAS2+B,EAAMtjC,EAAE,CAAC,EAAG,EAAE,EAC/B,OAAOuC,EAAE,cAAc,OAAO,CAAC,EAAC,CAC/B,IAAK,IAAKqwF,EAAIjuF,EAAG,MAAO,IAAK,IAAKuvC,EAAIvvC,EAAG,MACzC,IAAK,IAAKkuF,EAAIluF,EAAG,MAAO,IAAK,IAAKouF,EAAIpuF,EAAG,MACzC,IAAK,IAAQkuF,GAAK,EAAGC,EAAInuF,EAAQmb,EAAInb,EAAG,KACxC,CACH,CAAE,EACEouF,GAAK,GAAKD,GAAK,IAAMhzE,GAAK,IAAKgzE,EAAIhzE,EAAGA,EAAI,IAC7C,IAAIkzE,GAAY,IAAMJ,GAAG,EAAEA,EAAG,IAAI,KAAI,EAAG,YAAa,IAAG,MAAM,EAAE,EAAI,KAAO,MAAQ9yE,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAAI,KAAO,MAAQo0B,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAC1I8+C,EAAQ,QAAU,IAAGA,EAAU,IAAMA,GACrCA,EAAQ,QAAU,IAAGA,EAAU,KAAOA,GACzC,IAAIC,GAAY,MAAQJ,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAAI,KAAO,MAAQC,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EAAI,KAAO,MAAQC,GAAG,EAAEA,EAAE,IAAI,MAAM,EAAE,EACvH,OAAGF,GAAK,IAAMC,GAAK,IAAMC,GAAK,GAAWC,EACtCJ,GAAK,IAAM9yE,GAAK,IAAMo0B,GAAK,GAAW++C,EAClCD,EAAU,IAAMC,CACxB,CA2CA,IAAIC,GAAsB,UAAW,CACrC,IAAIA,EAAQ,CAAA,EACZA,EAAM,QAAU,QAGhB,SAASC,GAA2B,CAGnC,QAFI1xF,EAAI,EAAGs6C,EAA0B,IAAI,MAAM,GAAG,EAE1Cx5C,EAAG,EAAGA,GAAK,IAAK,EAAEA,EACzBd,EAAIc,EACJd,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/CA,EAAMA,EAAE,EAAM,WAAcA,IAAM,EAAOA,IAAM,EAC/Cs6C,EAAMx5C,CAAC,EAAId,EAGZ,OAAO,OAAO,WAAe,IAAc,IAAI,WAAWs6C,CAAK,EAAIA,CACpE,CAEA,IAAIq3C,EAAKD,EAAgB,EACzB,SAASE,EAAmBC,EAAG,CAC9B,IAAI7xF,EAAI,EAAGkD,EAAI,EAAGpC,EAAI,EAAGw5C,EAA0B,OAAO,WAAe,IAAc,IAAI,WAAW,IAAI,EAAI,IAAI,MAAM,IAAI,EAE5H,IAAIx5C,EAAI,EAAGA,GAAK,IAAK,EAAEA,EAAGw5C,EAAMx5C,CAAC,EAAI+wF,EAAE/wF,CAAC,EACxC,IAAIA,EAAI,EAAGA,GAAK,IAAK,EAAEA,EAEtB,IADAoC,EAAI2uF,EAAE/wF,CAAC,EACHd,EAAI,IAAMc,EAAGd,EAAI,KAAMA,GAAK,IAAKkD,EAAIo3C,EAAMt6C,CAAC,EAAKkD,IAAM,EAAK2uF,EAAE3uF,EAAI,GAAI,EAE3E,IAAIslF,EAAM,CAAA,EACV,IAAI1nF,EAAI,EAAGA,GAAK,GAAI,EAAEA,EAAG0nF,EAAI1nF,EAAI,CAAC,EAAI,OAAO,WAAe,IAAcw5C,EAAM,SAASx5C,EAAI,IAAKA,EAAI,IAAM,GAAG,EAAIw5C,EAAM,MAAMx5C,EAAI,IAAKA,EAAI,IAAM,GAAG,EACrJ,OAAO0nF,CACR,CACA,IAAIsJ,EAAKF,EAAmBD,CAAE,EAC1BI,EAAKD,EAAG,CAAC,EAAIE,EAAKF,EAAG,CAAC,EAAIG,EAAKH,EAAG,CAAC,EAAII,EAAKJ,EAAG,CAAC,EAAIK,EAAKL,EAAG,CAAC,EAC7DM,EAAKN,EAAG,CAAC,EAAIO,EAAKP,EAAG,CAAC,EAAIQ,EAAKR,EAAG,CAAC,EAAIS,EAAKT,EAAG,CAAC,EAAIU,EAAKV,EAAG,CAAC,EAC7DW,EAAKX,EAAG,EAAE,EAAGY,EAAKZ,EAAG,EAAE,EAAGa,EAAKb,EAAG,EAAE,EAAGc,EAAKd,EAAG,EAAE,EAAGe,EAAKf,EAAG,EAAE,EAClE,SAASgB,EAAWC,EAAiBC,EAA4B,CAEhE,QADI,EAAIA,EAAsB,GACtBz0F,EAAI,EAAGmqF,EAAIqK,EAAK,OAAQx0F,EAAImqF,GAAI,EAAK,IAAI,EAAKiJ,GAAI,EAAEoB,EAAK,WAAWx0F,GAAG,GAAG,GAAI,EACtF,MAAO,CAAC,CACT,CAEA,SAAS00F,EAAU/I,EAAgC8I,EAA4B,CAE9E,QADI,EAAIA,EAAsB,GAAItK,EAAIwB,EAAE,OAAS,GAAI3rF,EAAI,EACnDA,EAAImqF,GAAI,EACbmK,EAAG3I,EAAE3rF,GAAG,EAAK,EAAI,GAAI,EACrBq0F,EAAG1I,EAAE3rF,GAAG,EAAM,GAAK,EAAK,GAAI,EAC5Bo0F,EAAGzI,EAAE3rF,GAAG,EAAM,GAAK,GAAM,GAAI,EAC7Bm0F,EAAGxI,EAAE3rF,GAAG,EAAK,IAAM,EAAG,EACtBk0F,EAAGvI,EAAE3rF,GAAG,CAAC,EAAIi0F,EAAGtI,EAAE3rF,GAAG,CAAC,EAAIg0F,EAAGrI,EAAE3rF,GAAG,CAAC,EAAI+zF,EAAGpI,EAAE3rF,GAAG,CAAC,EAChD8zF,EAAGnI,EAAE3rF,GAAG,CAAC,EAAI6zF,EAAGlI,EAAE3rF,GAAG,CAAC,EAAI4zF,EAAGjI,EAAE3rF,GAAG,CAAC,EAAI2zF,EAAGhI,EAAE3rF,GAAG,CAAC,EAChD0zF,EAAG/H,EAAE3rF,GAAG,CAAC,EAAIyzF,EAAG9H,EAAE3rF,GAAG,CAAC,EAAIwzF,EAAG7H,EAAE3rF,GAAG,CAAC,EAAIozF,EAAGzH,EAAE3rF,GAAG,CAAC,EAEjD,IADAmqF,GAAK,GACCnqF,EAAImqF,GAAG,EAAK,IAAI,EAAKiJ,GAAI,EAAEzH,EAAE3rF,GAAG,GAAG,GAAI,EAC7C,MAAO,CAAC,CACT,CAEA,SAAS20F,EAAU11F,EAAgBw1F,EAA4B,CAE9D,QADI,EAAIA,EAAO,GACPz0F,EAAI,EAAGmqF,EAAIlrF,EAAI,OAAQwC,EAAI,EAAGyyC,GAAI,EAAGl0C,EAAImqF,GAChD1oF,EAAIxC,EAAI,WAAWe,GAAG,EACnByB,EAAI,IACN,EAAK,IAAI,EAAK2xF,GAAI,EAAE3xF,GAAG,GAAI,EAClBA,EAAI,MACb,EAAK,IAAI,EAAK2xF,GAAI,GAAK,IAAM3xF,GAAG,EAAG,KAAM,GAAI,EAC7C,EAAK,IAAI,EAAK2xF,GAAI,GAAK,IAAK3xF,EAAE,KAAM,GAAI,GAC/BA,GAAK,OAAUA,EAAI,OAC5BA,GAAKA,EAAE,MAAM,GAAIyyC,GAAIj1C,EAAI,WAAWe,GAAG,EAAE,KACzC,EAAK,IAAI,EAAKozF,GAAI,GAAK,IAAM3xF,GAAG,EAAG,IAAK,GAAI,EAC5C,EAAK,IAAI,EAAK2xF,GAAI,GAAK,IAAM3xF,GAAG,EAAG,KAAM,GAAI,EAC7C,EAAK,IAAI,EAAK2xF,GAAI,GAAK,IAAMl/C,IAAG,EAAG,IAAMzyC,EAAE,IAAI,IAAK,GAAI,EACxD,EAAK,IAAI,EAAK2xF,GAAI,GAAK,IAAKl/C,GAAE,KAAM,GAAI,IAExC,EAAK,IAAI,EAAKk/C,GAAI,GAAK,IAAM3xF,GAAG,GAAI,KAAM,GAAI,EAC9C,EAAK,IAAI,EAAK2xF,GAAI,GAAK,IAAM3xF,GAAG,EAAG,KAAM,GAAI,EAC7C,EAAK,IAAI,EAAK2xF,GAAI,GAAK,IAAK3xF,EAAE,KAAM,GAAI,GAG1C,MAAO,CAAC,CACT,CACA,OAAAyxF,EAAM,MAAQE,EACdF,EAAM,KAAOqB,EACbrB,EAAM,IAAMwB,EACZxB,EAAM,IAAMyB,EACLzB,CACP,IAEI0B,GAAoB,UAAe,CACvC,IAAIC,EAAU,CAAA,EACdA,EAAQ,QAAU,QAElB,SAASC,EAAQ5vF,EAAcyJ,EAAyB,CAEvD,QADIw7E,EAAIjlF,EAAE,MAAM,GAAG,EAAG6vF,EAAIpmF,EAAE,MAAM,GAAG,EAC7B3O,EAAI,EAAGyB,EAAI,EAAGuzF,EAAI,KAAK,IAAI7K,EAAE,OAAQ4K,EAAE,MAAM,EAAG/0F,EAAIg1F,EAAG,EAAEh1F,EAAG,CACnE,GAAIyB,EAAI0oF,EAAEnqF,CAAC,EAAE,OAAS+0F,EAAE/0F,CAAC,EAAE,OAAS,OAAOyB,EAC3C,GAAG0oF,EAAEnqF,CAAC,GAAK+0F,EAAE/0F,CAAC,EAAG,OAAOmqF,EAAEnqF,CAAC,EAAI+0F,EAAE/0F,CAAC,EAAI,GAAK,CAC3C,CACD,OAAOmqF,EAAE,OAAS4K,EAAE,MACrB,CACA,SAASE,EAAQ5jF,EAAyB,CACzC,GAAGA,EAAE,OAAOA,EAAE,OAAS,CAAC,GAAK,IAAK,OAAQA,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAM,GAAMA,EAAI4jF,EAAQ5jF,EAAE,MAAM,EAAG,EAAE,CAAC,EACzG,IAAI5P,EAAI4P,EAAE,YAAY,GAAG,EACzB,OAAQ5P,IAAM,GAAM4P,EAAIA,EAAE,MAAM,EAAG5P,EAAE,CAAC,CACvC,CAEA,SAASyzF,EAAS7jF,EAAyB,CAC1C,GAAGA,EAAE,OAAOA,EAAE,OAAS,CAAC,GAAK,IAAK,OAAO6jF,EAAS7jF,EAAE,MAAM,EAAG,EAAE,CAAC,EAChE,IAAI5P,EAAI4P,EAAE,YAAY,GAAG,EACzB,OAAQ5P,IAAM,GAAM4P,EAAIA,EAAE,MAAM5P,EAAE,CAAC,CACpC,CASA,SAAS0zF,EAAe/L,EAAgBh4B,EAAsB,CAC1D,OAAOA,GAAS,WAAUA,EAAO,IAAI,KAAKA,CAAI,GACjD,IAAIgkC,EAAiBhkC,EAAK,WAC1BgkC,EAAMA,GAAO,EAAIhkC,EAAK,WAAU,EAChCgkC,EAAMA,GAAO,EAAKhkC,EAAK,WAAU,IAAK,EACtCg4B,EAAI,YAAY,EAAGgM,CAAG,EACtB,IAAIC,EAAkBjkC,EAAK,YAAa,EAAG,KAC3CikC,EAAMA,GAAO,EAAKjkC,EAAK,SAAQ,EAAG,EAClCikC,EAAMA,GAAO,EAAIjkC,EAAK,QAAO,EAC7Bg4B,EAAI,YAAY,EAAGiM,CAAG,CACvB,CAGA,SAASC,EAAelM,EAAyB,CAChD,IAAIgM,EAAMhM,EAAI,WAAW,CAAC,EAAI,MAC1BiM,EAAMjM,EAAI,WAAW,CAAC,EAAI,MAC1BhqF,EAAM,IAAI,KACV80C,EAAImhD,EAAM,GAAMA,KAAS,EAC7B,IAAIv1E,EAAIu1E,EAAM,GAAMA,KAAS,EAC7Bj2F,EAAI,gBAAgB,CAAC,EACrBA,EAAI,YAAYi2F,EAAM,IAAI,EAC1Bj2F,EAAI,SAAS0gB,EAAE,CAAC,EAChB1gB,EAAI,QAAQ80C,CAAC,EACb,IAAI6+C,EAAIqC,EAAM,GAAMA,KAAS,EAC7B,IAAItC,GAAIsC,EAAM,GAAM,OAAAA,KAAS,EAC7Bh2F,EAAI,SAASg2F,CAAG,EAChBh2F,EAAI,WAAW0zF,EAAC,EAChB1zF,EAAI,WAAW2zF,GAAG,CAAC,EACZ3zF,CACR,CACA,SAASm2F,EAAkBC,EAAyB,CACnDC,GAAUD,EAAM,CAAC,EAGjB,QAFIh9D,EAAW,CAAA,EACXk9D,EAAQ,EACNF,EAAK,GAAKA,EAAK,OAAS,GAAG,CAChC,IAAI3tF,EAAO2tF,EAAK,WAAW,CAAC,EACxBG,EAAKH,EAAK,WAAW,CAAC,EAAGI,EAAMJ,EAAK,EAAIG,EACxCtkF,EAAI,CAAA,EACR,OAAOxJ,EAAI,CAEV,IAAK,OACJ6tF,EAAQF,EAAK,WAAW,CAAC,EACtBE,EAAQ,IAAGrkF,EAAE,MAAQmkF,EAAK,WAAW,CAAC,GAEtCG,EAAK,IACJD,EAAQ,IAAGrkF,EAAE,MAAQmkF,EAAK,WAAW,CAAC,GACtCE,EAAQ,IAAGrkF,EAAE,MAAQmkF,EAAK,WAAW,CAAC,IAEvCnkF,EAAE,QAAOA,EAAE,GAAK,IAAI,KAAKA,EAAE,MAAM,GAAI,GAEzC,KACA,CACDmkF,EAAK,EAAII,EACTp9D,EAAE3wB,CAAI,EAAIwJ,CACV,CACD,OAAOmnB,CACR,CACA,IAAIq9D,EACJ,SAASC,GAAS,CAAE,OAAOD,IAAOA,EAAK,CAAA,EAAM,CAC7C,SAAS1Q,EAAM4Q,EAAmB/hF,EAA0C,CAC5E,GAAG+hF,EAAK,CAAC,GAAK,IAAQA,EAAK,CAAC,GAAK,GAAM,OAAOC,GAAUD,EAAM/hF,CAAO,EACrE,IAAI+hF,EAAK,CAAC,EAAI,KAAS,MAASA,EAAK,CAAC,EAAE,KAAS,IAAM,OAAOE,GAAUF,EAAM/hF,CAAO,EACrF,GAAG+hF,EAAK,OAAS,IAAK,MAAM,IAAI,MAAM,iBAAmBA,EAAK,OAAS,QAAQ,EAC/E,IAAIG,EAAO,EACPC,EAAM,IACNC,EAAO,EACPC,EAAgB,EAChBC,EAAY,EACZC,GAAgB,EAChBC,EAAc,EAEdC,EAA8B,CAAA,EAG9BjB,EAAyBO,EAAK,MAAM,EAAE,GAAG,EAC7CN,GAAUD,EAAM,CAAC,EAGjB,IAAIkB,GAAKC,EAAenB,CAAI,EAE5B,OADAU,EAAOQ,GAAG,CAAC,EACJR,EAAI,CACV,IAAK,GAAGC,EAAM,IAAK,MAAO,IAAK,GAAGA,EAAM,KAAM,MAC9C,IAAK,GAAG,GAAGO,GAAG,CAAC,GAAK,EAAG,OAAOV,GAAUD,EAAM/hF,CAAO,EAErD,QAAS,MAAM,IAAI,MAAM,sCAAwCkiF,CAAI,CACtE,CAGGC,IAAQ,MAAOX,EAAcO,EAAK,MAAM,EAAEI,CAAG,EAAeV,GAAUD,EAAM,EAAgB,GAE/F,IAAI5uD,GAAsBmvD,EAAK,MAAM,EAAEI,CAAG,EAE1CS,EAAapB,EAAMU,CAAI,EAGvB,IAAIW,GAAqBrB,EAAK,WAAW,EAAG,GAAG,EAC/C,GAAGU,IAAS,GAAKW,KAAY,EAAG,MAAM,IAAI,MAAM,uCAAyCA,EAAO,EAGhGrB,EAAK,GAAK,EAGVc,EAAYd,EAAK,WAAW,EAAG,GAAG,EAGlCA,EAAK,GAAK,EAGVA,EAAK,IAAI,WAAY,2BAA2B,EAGhDe,GAAgBf,EAAK,WAAW,EAAG,GAAG,EAGtCY,EAAOZ,EAAK,WAAW,EAAG,GAAG,EAG7BgB,EAAchB,EAAK,WAAW,EAAG,GAAG,EAGpCa,EAAgBb,EAAK,WAAW,EAAG,GAAG,EAGtC,QAAQrJ,GAAI,GAAIv/D,GAAI,EAAGA,GAAI,MAC1Bu/D,GAAIqJ,EAAK,WAAW,EAAG,GAAG,EACvB,EAAArJ,GAAE,IAF0B,EAAEv/D,GAGjC6pE,EAAU7pE,EAAC,EAAIu/D,GAIhB,IAAI2K,GAA8BC,EAAUhB,EAAMI,CAAG,EAErDa,EAAWR,EAAaH,EAAeS,GAASX,EAAKM,CAAS,EAG9D,IAAIQ,GAA6BC,EAAiBJ,GAASR,EAAWG,EAAWN,CAAG,EAEpFc,GAAYX,CAAS,EAAE,KAAO,aAC3BF,EAAO,GAAKG,KAAkBY,KAAYF,GAAYV,EAAa,EAAE,KAAO,YAC/EU,GAAYR,EAAU,CAAC,CAAC,EAAE,KAAO,OACjCQ,GAAY,UAAYR,EACxBQ,GAAY,IAAMd,EAGlB,IAAIiB,GAAqB,CAAE,EAAEC,GAA0B,CAAA,EAAIC,GAA6B,CAAE,EAAEC,GAA8B,GAC1HC,EAAelB,EAAWW,GAAaH,GAASO,GAAOjB,EAAMgB,GAAOE,GAAWf,EAAa,EAE5FkB,EAAiBH,GAAWC,GAAWF,EAAK,EAC5CA,GAAM,MAAK,EAEX,IAAI7+D,GAAI,CACP,UAAW8+D,GACX,UAAWC,EACZ,EAGA,OAAGvjF,GAAWA,EAAQ,MAAKwkB,GAAE,IAAM,CAAC,OAAQoO,GAAQ,QAASkwD,EAAO,GAC7Dt+D,EACP,CAGA,SAASm+D,EAAenB,EAAsC,CAC7D,GAAGA,EAAKA,EAAK,CAAC,GAAK,IAAQA,EAAKA,EAAK,EAAI,CAAC,GAAK,GAAM,MAAO,CAAC,EAAG,CAAC,EAEjEA,EAAK,IAAIkC,GAAkB,oBAAoB,EAI/ClC,EAAK,GAAK,GAGV,IAAIU,EAAkBV,EAAK,WAAW,EAAG,GAAG,EAE5C,MAAO,CAACA,EAAK,WAAW,EAAE,GAAG,EAAGU,CAAI,CACrC,CACA,SAASU,EAAapB,EAAiBU,EAA0B,CAChE,IAAIyB,EAAQ,EAOZ,OAHAnC,EAAK,GAAK,EAGFmC,EAAQnC,EAAK,WAAW,CAAC,EAAC,CACjC,IAAK,GAAM,GAAGU,GAAQ,EAAG,MAAM,IAAI,MAAM,gCAAkCyB,CAAK,EAAG,MACnF,IAAK,IAAM,GAAGzB,GAAQ,EAAG,MAAM,IAAI,MAAM,iCAAmCyB,CAAK,EAAG,MACpF,QAAS,MAAM,IAAI,MAAM,sCAAwCA,CAAK,CACtE,CAGDnC,EAAK,IAAI,OAAQ,qBAAqB,EAGtCA,EAAK,IAAI,eAAgB,YAAY,CACtC,CAGA,SAASuB,EAAUhB,EAAmBI,EAAoC,CAGzE,QAFIyB,EAAW,KAAK,KAAK7B,EAAK,OAAOI,CAAG,EAAE,EACtCW,EAA8B,CAAA,EAC1B92F,EAAE,EAAGA,EAAI43F,EAAU,EAAE53F,EAAG82F,EAAQ92F,EAAE,CAAC,EAAI+1F,EAAK,MAAM/1F,EAAEm2F,GAAKn2F,EAAE,GAAGm2F,CAAG,EACzE,OAAAW,EAAQc,EAAS,CAAC,EAAI7B,EAAK,MAAM6B,EAASzB,CAAG,EACtCW,CACR,CAGA,SAASW,EAAiBI,EAAqBC,EAAsBT,EAAkC,CAItG,QAHIr3F,EAAI,EAAGmqF,EAAI,EAAG4K,EAAI,EAAGgD,EAAI,EAAGnrE,GAAI,EAAGorE,EAAKX,EAAM,OAC9CY,EAAwB,CAAA,EAAI9L,EAAsB,GAEhDnsF,EAAIg4F,EAAI,EAAEh4F,EAAKi4F,EAAIj4F,CAAC,EAAEmsF,EAAEnsF,CAAC,EAAEA,EAAG83F,EAAG93F,CAAC,EAAEq3F,EAAMr3F,CAAC,EAEjD,KAAM4sB,GAAIu/D,EAAE,OAAQ,EAAEv/D,GACrB5sB,EAAImsF,EAAEv/D,EAAC,EACPu9D,EAAI0N,EAAG73F,CAAC,EAAE,EAAG+0F,EAAI8C,EAAG73F,CAAC,EAAE,EAAG+3F,EAAIF,EAAG73F,CAAC,EAAE,EACjCi4F,EAAIj4F,CAAC,IAAMA,IACVmqF,IAAM,IAAmB8N,EAAI9N,CAAC,IAAMA,IAAG8N,EAAIj4F,CAAC,EAAIi4F,EAAI9N,CAAC,GACrD4K,IAAM,IAAMkD,EAAIlD,CAAC,IAAMA,IAAGkD,EAAIj4F,CAAC,EAAIi4F,EAAIlD,CAAC,IAEzCgD,IAAM,KAAiBE,EAAIF,CAAC,EAAI/3F,GAChCmqF,IAAM,IAAMnqF,GAAKi4F,EAAIj4F,CAAC,IAAKi4F,EAAI9N,CAAC,EAAI8N,EAAIj4F,CAAC,EAAMmsF,EAAE,YAAYhC,CAAC,EAAIv9D,IAAGu/D,EAAE,KAAKhC,CAAC,GAC7E4K,IAAM,IAAM/0F,GAAKi4F,EAAIj4F,CAAC,IAAKi4F,EAAIlD,CAAC,EAAIkD,EAAIj4F,CAAC,EAAMmsF,EAAE,YAAY4I,CAAC,EAAInoE,IAAGu/D,EAAE,KAAK4I,CAAC,GAEjF,IAAI/0F,EAAE,EAAGA,EAAIg4F,EAAI,EAAEh4F,EAAMi4F,EAAIj4F,CAAC,IAAMA,IAChC+0F,IAAM,IAAmBkD,EAAIlD,CAAC,IAAMA,EAAGkD,EAAIj4F,CAAC,EAAIi4F,EAAIlD,CAAC,EAChD5K,IAAM,IAAM8N,EAAI9N,CAAC,IAAMA,IAAG8N,EAAIj4F,CAAC,EAAIi4F,EAAI9N,CAAC,IAGjD,IAAInqF,EAAE,EAAGA,EAAIg4F,EAAI,EAAEh4F,EAClB,GAAG63F,EAAG73F,CAAC,EAAE,OAAS,EAElB,IADA4sB,GAAI5sB,EACD4sB,IAAKqrE,EAAIrrE,EAAC,EAAG,GACfA,GAAIqrE,EAAIrrE,EAAC,EACTkrE,EAAG93F,CAAC,EAAI83F,EAAGlrE,EAAC,EAAI,IAAMkrE,EAAG93F,CAAC,QAClB4sB,KAAM,GAAYqrE,EAAIrrE,EAAC,IAAZ,IAAiBA,IAAKqrE,EAAIrrE,EAAC,GAC/CqrE,EAAIj4F,CAAC,EAAI,GAIV,IADA83F,EAAG,CAAC,GAAK,IACL93F,EAAE,EAAGA,EAAIg4F,EAAI,EAAEh4F,EACf63F,EAAG73F,CAAC,EAAE,OAAS,IAAgB83F,EAAG93F,CAAC,GAAK,IAE7C,CAEA,SAASk4F,EAAeh/B,EAAoBvoB,EAAsBwnD,EAA+B,CAKhG,QAJI3mF,EAAQ0nD,EAAM,MAAOnuD,EAAOmuD,EAAM,KAElC1gC,EAAI,CAAA,EACJS,EAAMznB,EACJ2mF,GAAQptF,EAAO,GAAKkuB,GAAO,GAChCT,EAAE,KAAKmY,EAAQ,MAAM1X,EAAMm/D,EAAMn/D,EAAMm/D,EAAOA,CAAI,CAAC,EACnDrtF,GAAQqtF,EACRn/D,EAAMo/D,GAAcF,EAAMl/D,EAAM,CAAC,EAElC,OAAGT,EAAE,SAAW,EAAW8/D,GAAQ,CAAC,EAC5BzO,GAAQrxD,CAAC,EAAE,MAAM,EAAG0gC,EAAM,IAAI,CACvC,CAIA,SAAS89B,EAAW/9D,EAAgBs/D,EAAgBzB,EAA6BX,EAAgBM,EAAoB,CACpH,IAAItK,EAAegL,GACnB,GAAGl+D,IAAQk+D,IACV,GAAGoB,IAAQ,EAAG,MAAM,IAAI,MAAM,mCAAmC,UACxDt/D,IAAQ,GAAiB,CAClC,IAAIu/D,EAAS1B,EAAQ79D,CAAG,EAAGnZ,IAAKq2E,IAAM,GAAG,EACzC,GAAG,CAACqC,EAAQ,OACZ,QAAQx4F,EAAI,EAAGA,EAAI8f,KACdqsE,EAAIkM,GAAcG,EAAOx4F,EAAE,CAAC,KAAOm3F,GADlB,EAAEn3F,EAEvBy2F,EAAU,KAAKtK,CAAC,EAEjB6K,EAAWqB,GAAcG,EAAOrC,EAAI,CAAC,EAAEoC,EAAM,EAAGzB,EAASX,EAAKM,CAAS,CACvE,CACF,CAGA,SAASgC,EAAgB3B,EAA6BtlF,EAAkBilF,EAA6BN,EAAgBuC,EAA0C,CAC9J,IAAItP,EAAwB,CAAA,EAAIuP,EAA2B,GACvDD,IAAMA,EAAO,IACjB,IAAIE,GAAUzC,EAAM,EAAGvpE,EAAI,EAAG0kE,EAAK,EACnC,IAAI1kE,EAAEpb,EAAOob,GAAG,GAAI,CACnB8rE,EAAK9rE,CAAC,EAAI,GACVw8D,EAAIA,EAAI,MAAM,EAAIx8D,EAClB+rE,EAAU,KAAK7B,EAAQlqE,CAAC,CAAC,EACzB,IAAIisE,EAAOpC,EAAU,KAAK,MAAM7pE,EAAE,EAAEupE,CAAG,CAAC,EAExC,GADA7E,EAAO1kE,EAAE,EAAKgsE,GACXzC,EAAM,EAAI7E,EAAI,MAAM,IAAI,MAAM,yBAA2B1kE,EAAI,MAAMupE,CAAG,EACzE,GAAG,CAACW,EAAQ+B,CAAI,EAAG,MACnBjsE,EAAIyrE,GAAcvB,EAAQ+B,CAAI,EAAGvH,CAAE,CACnC,CACD,MAAO,CAAC,MAAOlI,EAAK,KAAK0P,GAAW,CAACH,CAAS,CAAC,CAAC,CACjD,CAGA,SAASzB,EAAiBJ,EAA6BR,EAAsBG,EAA6BN,EAA+B,CACxI,IAAI4C,EAAKjC,EAAQ,OAAQG,EAA8B,CAAE,EACrDyB,EAA0B,CAAA,EAAItP,GAAwB,CAAA,EAAIuP,EAAgC,CAAA,EAC1FC,EAAUzC,EAAM,EAAGn2F,EAAE,EAAG4sB,GAAE,EAAGinB,GAAE,EAAGy9C,GAAG,EACzC,IAAItxF,EAAE,EAAGA,EAAI+4F,EAAI,EAAE/4F,EAGlB,GAFAopF,GAAO,CAAE,EACTv1C,GAAK7zC,EAAIs2F,EAAeziD,IAAKklD,IAAIllD,IAAGklD,GACjC,CAAAL,EAAK7kD,EAAC,EACT,CAAA8kD,EAAY,CAAA,EACZ,IAAIrmF,GAAO,CAAA,EACX,IAAIsa,GAAEinB,GAAGjnB,IAAG,GAAI,CACfta,GAAKsa,EAAC,EAAI,GACV8rE,EAAK9rE,EAAC,EAAI,GACVw8D,GAAIA,GAAI,MAAM,EAAIx8D,GAClB+rE,EAAU,KAAK7B,EAAQlqE,EAAC,CAAC,EACzB,IAAIisE,GAAkBpC,EAAU,KAAK,MAAM7pE,GAAE,EAAEupE,CAAG,CAAC,EAEnD,GADA7E,GAAO1kE,GAAE,EAAKgsE,EACXzC,EAAM,EAAI7E,GAAI,MAAM,IAAI,MAAM,yBAA2B1kE,GAAI,MAAMupE,CAAG,EAGzE,GAFG,CAACW,EAAQ+B,EAAI,IAChBjsE,GAAIyrE,GAAcvB,EAAQ+B,EAAI,EAAGvH,EAAE,EAChCh/E,GAAKsa,EAAC,GAAG,KACZ,CACDqqE,EAAYpjD,EAAC,EAAK,CAAC,MAAOu1C,GAAK,KAAK0P,GAAW,CAACH,CAAS,CAAC,CAAC,EAE5D,OAAO1B,CACR,CAGA,SAASO,EAAelB,EAAsBW,EAA4BH,EAA6BO,EAAyBjB,EAAMgB,EAAOE,EAAWa,GAAM,CAI7J,QAHIa,EAAgB,EAAGhB,EAAMX,EAAM,OAAO,EAAE,EACxCmB,EAASvB,EAAYX,CAAS,EAAE,KAChCt2F,GAAI,EAAGi5F,GAAU,EAAG31F,GAClBtD,GAAIw4F,EAAO,OAAQx4F,IAAI,IAAK,CACjC,IAAIw1F,GAAyBgD,EAAO,MAAMx4F,GAAGA,GAAE,GAAG,EAClDy1F,GAAUD,GAAM,EAAE,EAClByD,GAAUzD,GAAK,WAAW,CAAC,EAC3BlyF,GAAO41F,GAAU1D,GAAK,EAAEyD,GAAQjB,CAAE,EAClCX,EAAM,KAAK/zF,EAAI,EACf,IAAIk1B,GAAkB,CACrB,KAAOl1B,GACP,KAAOkyF,GAAK,WAAW,CAAC,EACxB,MAAOA,GAAK,WAAW,CAAC,EACxB,EAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,EAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,EAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,MAAOA,GAAK,WAAW,EAAE,EACzB,MAAOA,GAAK,WAAW,EAAG,GAAG,EAC7B,MAAO,EACP,KAAM,CACT,EACM2D,GAAmB3D,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EACpG2D,KAAU,IAAG3gE,GAAE,GAAK4gE,EAAU5D,GAAMA,GAAK,EAAE,CAAC,GAC/C,IAAI6D,GAAmB7D,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EAAIA,GAAK,WAAW,CAAC,EACpG6D,KAAU,IAAG7gE,GAAE,GAAK4gE,EAAU5D,GAAMA,GAAK,EAAE,CAAC,GAC/Ch9D,GAAE,MAAQg9D,GAAK,WAAW,EAAG,GAAG,EAChCh9D,GAAE,KAAOg9D,GAAK,WAAW,EAAG,GAAG,EAC5Bh9D,GAAE,KAAO,GAAKA,GAAE,MAAQ,IAAKA,GAAE,KAAOA,GAAE,KAAO,EAAGA,GAAE,MAAQ2+D,GAAY3+D,GAAE,KAAO,IACjFA,GAAE,OAAS,GACbwgE,EAAgBxgE,GAAE,MACf49D,EAAO,GAAK4C,IAAkB7B,KAAYF,EAAY+B,CAAa,EAAE,KAAO,gBAEtExgE,GAAE,MAAQ,MACnBA,GAAE,QAAU,MACTy+D,EAAYz+D,GAAE,KAAK,IAAM,SAAWy+D,EAAYz+D,GAAE,KAAK,EAAIigE,EAAgB3B,EAASt+D,GAAE,MAAOy+D,EAAY,UAAWA,EAAY,GAAG,GACtIA,EAAYz+D,GAAE,KAAK,EAAE,KAAOA,GAAE,KAC9BA,GAAE,QAAWy+D,EAAYz+D,GAAE,KAAK,EAAE,KAAK,MAAM,EAAEA,GAAE,IAAI,IAErDA,GAAE,QAAU,UACTA,GAAE,KAAO,EAAGA,GAAE,KAAO,EAChBwgE,IAAkB7B,IAAc3+D,GAAE,QAAU2+D,IAAcF,EAAY+B,CAAa,IAC1FxgE,GAAE,QAAU0/D,EAAe1/D,GAAGy+D,EAAY+B,CAAa,EAAE,MAAO/B,EAAYkB,EAAI,GAAG,CAAE,GAAE,IAAI,IAG1F3/D,GAAE,SAASi9D,GAAUj9D,GAAE,QAAS,CAAC,EACpC4+D,EAAM9zF,EAAI,EAAIk1B,GACd8+D,EAAU,KAAK9+D,EAAC,CAChB,CACF,CAEA,SAAS4gE,EAAU5D,EAA0BrxB,EAA4B,CACxE,OAAO,IAAI,MAAUm1B,GAAe9D,EAAKrxB,EAAO,CAAC,EAAE,IAAK,KAAK,IAAI,EAAE,EAAE,EAAEm1B,GAAe9D,EAAKrxB,CAAM,EAAE,IAAQ,aAAa,GAAI,CAC7H,CAEA,SAASo1B,EAAUrE,EAAqBlhF,EAAyB,CAChE,OAAA8hF,IACO3Q,EAAM0Q,EAAG,aAAaX,CAAQ,EAAGlhF,CAAO,CAChD,CAEA,SAASkxC,EAAKswC,EAA0BxhF,EAAyB,CAChE,IAAInM,EAAOmM,GAAWA,EAAQ,KAI9B,OAHInM,GACAohF,IAAW,OAAO,SAASuM,CAAI,IAAG3tF,EAAO,UAEtCA,GAAQ,SAAQ,CACtB,IAAK,OAA2F,OAAO0xF,EAAU/D,EAAMxhF,CAAO,EAC9H,IAAK,SAAiH,OAAOmxE,EAAMqE,GAAIR,GAAcwM,CAAI,CAAC,EAAGxhF,CAAO,EACpK,IAAK,SAAkG,OAAOmxE,EAAMqE,GAAIgM,CAAI,EAAGxhF,CAAO,CACtI,CACD,OAAOmxE,EAAkEqQ,EAAMxhF,CAAO,CACvF,CAEA,SAASwlF,EAASC,EAAsB1qD,EAAwB,CAC/D,IAAIvW,EAAIuW,GAAQ,CAAE,EAAE/4B,EAAOwiB,EAAE,MAAQ,aAGrC,GAFIihE,EAAI,YAAWA,EAAI,UAAY,CAAA,GAC/BA,EAAI,YAAWA,EAAI,UAAY,CAAA,GAChCA,EAAI,UAAU,SAAWA,EAAI,UAAU,OAAQ,MAAM,IAAI,MAAM,4BAA4B,EAC3FA,EAAI,UAAU,SAAW,IAC3BA,EAAI,UAAU,CAAC,EAAIzjF,EAAO,IAC1ByjF,EAAI,UAAU,CAAC,EAAK,CAAE,KAAMzjF,EAAM,KAAM,CAAC,GAEvCwiB,EAAE,QAAOihE,EAAI,UAAU,CAAC,EAAE,MAAQjhE,EAAE,OACvCkhE,EAASD,CAAG,CACb,CACA,SAASC,EAASD,EAA+B,CAChD,IAAIE,EAAK,WACT,GAAG,CAAA/E,GAAI,KAAK6E,EAAK,IAAME,CAAE,EACzB,KAAItoF,EAAIinF,GAAQ,CAAC,EAAGjnF,EAAE,CAAC,EAAI,GAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,GAAIA,EAAE,CAAC,EAAI,GACxDooF,EAAI,UAAU,KAAM,CAAE,KAAME,EAAI,KAAM,EAAG,QAAQtoF,EAAG,KAAK,EAAG,EAAE,GAAI,EAAE,GAAI,EAAE,EAAE,GAC5EooF,EAAI,UAAU,KAAKA,EAAI,UAAU,CAAC,EAAIE,CAAE,EACxCC,EAAYH,CAAG,EAChB,CACA,SAASG,EAAYH,EAAsBhmD,EAAyB,CACnE+lD,EAASC,CAAG,EAEZ,QADIn4C,EAAK,GAAOxoC,EAAI,GACZ9Y,EAAIy5F,EAAI,UAAU,OAAS,EAAGz5F,GAAK,EAAG,EAAEA,EAAG,CAClD,IAAI65F,EAAQJ,EAAI,UAAUz5F,CAAC,EAC3B,OAAO65F,EAAM,KAAI,CAChB,IAAK,GACD/gF,EAAGwoC,EAAK,IACJm4C,EAAI,UAAU,IAAK,EAAEA,EAAI,UAAU,IAAG,GAC7C,MACD,IAAK,GAAG,IAAK,GAAG,IAAK,GACpB3gF,EAAI,GACD,MAAM+gF,EAAM,EAAIA,EAAM,EAAIA,EAAM,CAAC,IAAGv4C,EAAK,IACzCu4C,EAAM,EAAI,IAAMA,EAAM,EAAI,IAAMA,EAAM,GAAKA,EAAM,IAAGv4C,EAAK,IAC5D,MACD,QAASA,EAAK,GAAM,KACpB,CACD,CACD,GAAG,GAACA,GAAM,CAAC7N,GAEX,KAAIrI,EAAM,IAAI,KAAK,KAAM,EAAG,EAAE,EAAGxe,GAAI,EAEjCktE,EAAY,OAAO,OAAS,OAAO,OAAO,IAAI,EAAI,GAClD1kF,EAAqC,CAAA,EACzC,IAAIpV,EAAI,EAAGA,EAAIy5F,EAAI,UAAU,OAAQ,EAAEz5F,EACtC85F,EAAUL,EAAI,UAAUz5F,CAAC,CAAC,EAAI,GAC3By5F,EAAI,UAAUz5F,CAAC,EAAE,OAAS,GAC7BoV,EAAK,KAAK,CAACqkF,EAAI,UAAUz5F,CAAC,EAAGy5F,EAAI,UAAUz5F,CAAC,CAAC,CAAC,EAE/C,IAAIA,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAG,CAChC,IAAIi4F,EAAMhD,EAAQ7/E,EAAKpV,CAAC,EAAE,CAAC,CAAC,EAC5B8Y,EAAIghF,EAAU7B,CAAG,EACbn/E,IACH1D,EAAK,KAAK,CAAC6iF,EAAM,CAChB,KAAM/C,EAAS+C,CAAG,EAAE,QAAQ,IAAI,EAAE,EAClC,KAAM,EACN,MAAO8B,GACP,GAAI3uD,EAAK,GAAIA,EACb,QAAS,IACT,CAAA,CAAU,EAEX0uD,EAAU7B,CAAG,EAAI,GAElB,CAID,IAFA7iF,EAAK,KAAK,SAASikC,GAAEC,GAAG,CAAE,OAAOw7C,EAAQz7C,GAAE,CAAC,EAAGC,GAAE,CAAC,CAAC,CAAI,CAAA,EACvDmgD,EAAI,UAAY,CAAE,EAAEA,EAAI,UAAY,CAAA,EAChCz5F,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAKy5F,EAAI,UAAUz5F,CAAC,EAAIoV,EAAKpV,CAAC,EAAE,CAAC,EAAGy5F,EAAI,UAAUz5F,CAAC,EAAIoV,EAAKpV,CAAC,EAAE,CAAC,EAC9F,IAAIA,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAG,CAChC,IAAIg6F,GAAMP,EAAI,UAAUz5F,CAAC,EACrB25F,GAAKF,EAAI,UAAUz5F,CAAC,EAOxB,GALAg6F,GAAI,KAAQ9E,EAASyE,EAAE,EAAE,QAAQ,IAAI,EAAE,EACvCK,GAAI,EAAIA,GAAI,EAAIA,GAAI,EAAI,EAAEA,GAAI,MAAQ,GACtCA,GAAI,KAAOA,GAAI,QAAUA,GAAI,QAAQ,OAAS,EAC9CA,GAAI,MAAQ,EACZA,GAAI,MAASA,GAAI,OAASD,GACvB/5F,IAAM,EACRg6F,GAAI,EAAI5kF,EAAK,OAAS,EAAI,EAAI,GAC9B4kF,GAAI,KAAO,EACXA,GAAI,KAAO,UACFL,GAAG,MAAM,EAAE,GAAK,IAAK,CAC9B,IAAI/sE,GAAE5sB,EAAE,EAAE4sB,GAAIxX,EAAK,QAAgB6/E,EAAQwE,EAAI,UAAU7sE,EAAC,CAAC,GAAG+sE,GAAnC,EAAE/sE,GAAG,CAEhC,IADAotE,GAAI,EAAIptE,IAAKxX,EAAK,OAAS,GAAKwX,GAC5BA,GAAE5sB,EAAE,EAAE4sB,GAAIxX,EAAK,QAAgB6/E,EAAQwE,EAAI,UAAU7sE,EAAC,CAAC,GAAGqoE,EAAQ0E,EAAE,EAA7C,EAAE/sE,GAAG,CAChCotE,GAAI,EAAIptE,IAAKxX,EAAK,OAAS,GAAKwX,GAChCotE,GAAI,KAAO,CACd,MACM/E,EAAQwE,EAAI,UAAUz5F,EAAE,CAAC,GAAG,EAAE,GAAKi1F,EAAQ0E,EAAE,IAAGK,GAAI,EAAIh6F,EAAI,GAC/Dg6F,GAAI,KAAO,CAEZ,EAEF,CAEA,SAASC,EAAOR,EAAsBzlF,EAA8C,CACnF,IAAIkmF,EAAQlmF,GAAW,GAEvB,GAAGkmF,EAAM,UAAY,MAAO,OAAOC,GAAUV,EAAKS,CAAK,EAEvD,OADAN,EAAYH,CAAG,EACRS,EAAM,SAAQ,CACpB,IAAK,MAAO,OAAOE,GAAUX,EAAKS,CAAK,CAEvC,CACD,IAAI/P,EAAK,SAASsP,GAAuC,CAExD,QADIY,GAAY,EAAGC,GAAW,EACtBt6F,GAAI,EAAGA,GAAIy5F,GAAI,UAAU,OAAQ,EAAEz5F,GAAG,CAC7C,IAAI+1F,GAAO0D,GAAI,UAAUz5F,EAAC,EAC1B,GAAI+1F,GAAK,QAET,KAAIhF,GAAOgF,GAAK,QAAQ,OACrBhF,GAAO,IACNA,GAAO,KAAQsJ,IAActJ,GAAO,IAAS,EAC3CuJ,IAAavJ,GAAO,KAAW,GAErC,CAOD,QANI8F,GAAW4C,GAAI,UAAU,OAAQ,GAAM,EACvCc,GAAYF,GAAY,GAAM,EAC9BG,GAAYH,GAAY,KAAS,EACjCI,GAAWF,GAAWD,GAAWzD,GAAU2D,GAC3CE,GAAWD,GAAW,KAAS,EAC/BE,GAAYD,IAAW,IAAM,EAAI,KAAK,MAAMA,GAAQ,KAAK,GAAI,EACzDD,GAAWC,GAAUC,GAAY,KAAS,EAAKD,IAASC,GAAY,EAAED,IAAW,IAAM,EAAI,KAAK,MAAMA,GAAQ,KAAK,GAAI,EAC/H,IAAIvQ,GAAK,CAAC,EAAGwQ,GAAWD,GAASF,GAAU3D,GAASyD,GAAUD,GAAW,CAAC,EAC1E,OAAAZ,GAAI,UAAU,CAAC,EAAE,KAAOY,IAAa,EACrClQ,GAAE,CAAC,GAAKsP,GAAI,UAAU,CAAC,EAAE,MAAMtP,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,IAAKA,GAAE,CAAC,EAAE,GAAM,GACpEA,EACP,EAAEsP,CAAG,EACFjhE,EAAI8/D,GAAQnO,EAAE,CAAC,GAAK,CAAC,EACrBnqF,EAAI,EAAGszF,EAAI,EACf,CACC,IAAItzF,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGw4B,EAAE,YAAY,EAAGoiE,GAAW56F,CAAC,CAAC,EACrD,IAAIA,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGw4B,EAAE,YAAY,EAAG,CAAC,EAMzC,IALAA,EAAE,YAAY,EAAG,EAAM,EACvBA,EAAE,YAAY,EAAG,CAAM,EACvBA,EAAE,YAAY,EAAG,KAAM,EACvBA,EAAE,YAAY,EAAG,CAAM,EACvBA,EAAE,YAAY,EAAG,CAAM,EACnBx4B,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGw4B,EAAE,YAAY,EAAG,CAAC,EAUzC,IATAA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG2xD,EAAE,CAAC,CAAC,EACrB3xD,EAAE,YAAY,EAAG2xD,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,CAAC,EAC9C3xD,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,IAAK,EACtBA,EAAE,YAAY,EAAG2xD,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,EAAGgN,EAAU,EAC1D3+D,EAAE,YAAY,EAAG2xD,EAAE,CAAC,CAAC,EACrB3xD,EAAE,YAAY,GAAI2xD,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,EAAGgN,EAAU,EAC7C3+D,EAAE,YAAY,EAAG2xD,EAAE,CAAC,CAAC,EACjBnqF,EAAI,EAAGA,EAAI,IAAK,EAAEA,EAAGw4B,EAAE,YAAY,GAAIx4B,EAAImqF,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAInqF,EAAI,EAAE,CACnE,CACD,GAAGmqF,EAAE,CAAC,EACL,IAAImJ,EAAI,EAAGA,EAAInJ,EAAE,CAAC,EAAG,EAAEmJ,EAAG,CACzB,KAAMtzF,EAAI,IAAMszF,EAAI,IAAK,EAAEtzF,EAAGw4B,EAAE,YAAY,GAAIx4B,EAAImqF,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAInqF,EAAI,EAAE,EACxEw4B,EAAE,YAAY,GAAI86D,IAAMnJ,EAAE,CAAC,EAAI,EAAIgN,GAAa7D,EAAI,CAAC,CACrD,CAEF,IAAIuH,GAAU,SAASxzD,GAAuB,CAC7C,IAAIisD,GAAKjsD,GAAGrnC,EAAEszF,EAAE,EAAG,EAAEtzF,EAAGw4B,EAAE,YAAY,GAAIx4B,EAAE,CAAC,EAC1CqnC,KAAK,EAAErnC,EAAGw4B,EAAE,YAAY,GAAI2+D,EAAU,EAC3C,EAEC,IADA7D,EAAItzF,EAAI,EACJszF,GAAGnJ,EAAE,CAAC,EAAGnqF,EAAEszF,EAAG,EAAEtzF,EAAGw4B,EAAE,YAAY,GAAIsiE,GAAO,OAAO,EACvD,IAAIxH,GAAGnJ,EAAE,CAAC,EAAGnqF,EAAEszF,EAAG,EAAEtzF,EAAGw4B,EAAE,YAAY,GAAIsiE,GAAO,OAAO,EACvDD,GAAQ1Q,EAAE,CAAC,CAAC,EACZ0Q,GAAQ1Q,EAAE,CAAC,CAAC,EAGZ,QAFIv9D,EAAe,EAAGmkE,EAAkB,EACpCgF,EAAoB0D,EAAI,UAAU,CAAC,EACjC7sE,EAAI6sE,EAAI,UAAU,OAAQ,EAAE7sE,EACjCmpE,EAAO0D,EAAI,UAAU7sE,CAAC,EAClBmpE,EAAK,UAEThF,EAAOgF,EAAK,QAAQ,OACjB,EAAAhF,EAAO,QACVgF,EAAK,MAAQzC,EACbuH,GAAS9J,EAAO,KAAW,CAAC,IAG7B,IADA8J,GAAS1Q,EAAE,CAAC,EAAI,GAAM,CAAC,EACjB3xD,EAAE,EAAI,KAAOA,EAAE,YAAY,GAAIsiE,GAAO,UAAU,EAEtD,IADAxH,EAAItzF,EAAI,EACJ4sB,EAAI,EAAGA,EAAI6sE,EAAI,UAAU,OAAQ,EAAE7sE,EACtCmpE,EAAO0D,EAAI,UAAU7sE,CAAC,EAClBmpE,EAAK,UAEThF,EAAOgF,EAAK,QAAQ,OACjB,GAAChF,GAAQA,GAAQ,QACpBgF,EAAK,MAAQzC,EACbuH,GAAS9J,EAAO,IAAS,CAAC,IAE3B,KAAMv4D,EAAE,EAAI,KAAOA,EAAE,YAAY,GAAIsiE,GAAO,UAAU,EACtD,IAAI96F,EAAI,EAAGA,EAAImqF,EAAE,CAAC,GAAG,EAAG,EAAEnqF,EAAG,CAC5B,IAAI25F,GAAKF,EAAI,UAAUz5F,CAAC,EACxB,GAAG,CAAC25F,IAAMA,GAAG,SAAW,EAAG,CAC1B,IAAI/sE,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,EAC1C,IAAI5L,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAG4L,EAAE,YAAY,EAAG,EAAE,EAC1C,IAAI5L,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,EAC1C,QACA,CACDu9D,EAAO0D,EAAI,UAAUz5F,CAAC,EACnBA,IAAM,IAAG+1F,EAAK,MAAQA,EAAK,KAAOA,EAAK,MAAQ,EAAIoB,IACtD,IAAI4D,GAAkB/6F,IAAM,GAAKk6F,EAAM,MAASnE,EAAK,KASrD,GARAhF,EAAO,GAAGgK,GAAI,OAAO,GACrBviE,EAAE,YAAY,GAAIuiE,GAAK,SAAS,EAChCviE,EAAE,YAAY,EAAGu4D,CAAI,EACrBv4D,EAAE,YAAY,EAAGu9D,EAAK,IAAI,EAC1Bv9D,EAAE,YAAY,EAAGu9D,EAAK,KAAK,EAC3Bv9D,EAAE,YAAY,GAAIu9D,EAAK,CAAC,EACxBv9D,EAAE,YAAY,GAAIu9D,EAAK,CAAC,EACxBv9D,EAAE,YAAY,GAAIu9D,EAAK,CAAC,EACpBA,EAAK,MACJv9D,EAAE,YAAY,GAAIu9D,EAAK,MAAO,KAAK,MADxB,KAAInpE,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,EAEzDA,EAAE,YAAY,EAAGu9D,EAAK,OAAS,CAAC,EAChCv9D,EAAE,YAAY,EAAG,CAAC,EAAGA,EAAE,YAAY,EAAG,CAAC,EACvCA,EAAE,YAAY,EAAG,CAAC,EAAGA,EAAE,YAAY,EAAG,CAAC,EACvCA,EAAE,YAAY,EAAGu9D,EAAK,KAAK,EAC3Bv9D,EAAE,YAAY,EAAGu9D,EAAK,IAAI,EAAGv9D,EAAE,YAAY,EAAG,CAAC,CAC/C,CACD,IAAIx4B,EAAI,EAAGA,EAAIy5F,EAAI,UAAU,OAAQ,EAAEz5F,EAGtC,GAFA+1F,EAAO0D,EAAI,UAAUz5F,CAAC,EAEnB+1F,EAAK,MAAQ,KAEf,GADAv9D,EAAE,EAAKu9D,EAAK,MAAM,GAAM,EACpB9M,IAAW,OAAO,SAAS8M,EAAK,OAAO,EAC1CA,EAAK,QAAQ,KAAKv9D,EAAGA,EAAE,EAAG,EAAGu9D,EAAK,IAAI,EAEtCv9D,EAAE,GAAMu9D,EAAK,KAAO,IAAO,SACrB,CACN,IAAInpE,EAAI,EAAGA,EAAImpE,EAAK,KAAM,EAAEnpE,EAAG4L,EAAE,YAAY,EAAGu9D,EAAK,QAAQnpE,CAAC,CAAC,EAC/D,KAAMA,EAAI,IAAO,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,CACxC,CAGH,IAAIx4B,EAAI,EAAGA,EAAIy5F,EAAI,UAAU,OAAQ,EAAEz5F,EAGtC,GAFA+1F,EAAO0D,EAAI,UAAUz5F,CAAC,EAEnB+1F,EAAK,KAAO,GAAKA,EAAK,KAAO,KAC/B,GAAI9M,IAAW,OAAO,SAAS8M,EAAK,OAAO,EAC1CA,EAAK,QAAQ,KAAKv9D,EAAGA,EAAE,EAAG,EAAGu9D,EAAK,IAAI,EAEtCv9D,EAAE,GAAMu9D,EAAK,KAAO,GAAM,QACpB,CACN,IAAInpE,EAAI,EAAGA,EAAImpE,EAAK,KAAM,EAAEnpE,EAAG4L,EAAE,YAAY,EAAGu9D,EAAK,QAAQnpE,CAAC,CAAC,EAC/D,KAAMA,EAAI,GAAM,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,CACvC,CAGH,GAAIywD,GACHzwD,EAAE,EAAIA,EAAE,WAGR,MAAMA,EAAE,EAAIA,EAAE,QAAQA,EAAE,YAAY,EAAG,CAAC,EAEzC,OAAOA,CACR,CAEA,SAASwiE,EAAKvB,EAAsBhgF,EAA+B,CAClE,IAAIwhF,EAAgCxB,EAAI,UAAU,IAAI,SAASpgD,EAAG,CAAE,OAAOA,EAAE,YAAa,CAAG,CAAA,EACzF6hD,EAA4BD,EAAY,IAAI,SAAS5hD,EAAG,CAAE,IAAIC,EAAID,EAAE,MAAM,GAAG,EAAG,OAAOC,EAAEA,EAAE,QAAUD,EAAE,MAAM,EAAE,GAAK,IAAM,EAAI,EAAE,CAAI,CAAA,EACpIxF,EAAgB,GACjBp6B,EAAK,WAAW,CAAC,IAAM,IAAgBo6B,EAAI,GAAMp6B,EAAOwhF,EAAY,CAAC,EAAE,MAAM,EAAG,EAAE,EAAIxhF,GACpFo6B,EAAIp6B,EAAK,QAAQ,GAAG,IAAM,GAC/B,IAAI0hF,EAAoB1hF,EAAK,cACzB4tB,EAAewM,IAAM,GAAOonD,EAAY,QAAQE,CAAM,EAAID,EAAQ,QAAQC,CAAM,EACpF,GAAG9zD,IAAM,GAAI,OAAOoyD,EAAI,UAAUpyD,CAAC,EAEnC,IAAIvnB,GAAI,CAACq7E,EAAO,MAAM7Q,EAAI,EAG1B,IAFA6Q,EAASA,EAAO,QAAQ9Q,GAAK,EAAE,EAC5BvqE,KAAGq7E,EAASA,EAAO,QAAQ7Q,GAAK,GAAG,GAClCjjD,EAAI,EAAGA,EAAI4zD,EAAY,OAAQ,EAAE5zD,EAEpC,IADIvnB,GAAIm7E,EAAY5zD,CAAC,EAAE,QAAQijD,GAAK,GAAG,EAAI2Q,EAAY5zD,CAAC,GAAG,QAAQgjD,GAAK,EAAE,GAAK8Q,IAC3Er7E,GAAIo7E,EAAQ7zD,CAAC,EAAE,QAAQijD,GAAK,GAAG,EAAI4Q,EAAQ7zD,CAAC,GAAG,QAAQgjD,GAAK,EAAE,GAAK8Q,EAAQ,OAAO1B,EAAI,UAAUpyD,CAAC,EAEtG,OAAO,IACR,CAEA,IAAI+wD,EAAO,GAGPjB,GAAa,GAEbO,GAAmB,mBACnBkD,GAAa,CAAC,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAI,EAC5Db,GAAe,mCACfe,GAAS,CAEZ,WAAY,GACZ,QAAS,GACT,QAAS,GACT,WAAY3D,GACZ,SAAU,GAEV,iBAAkBO,GAClB,qBAAsB,OACtB,UAAW,GACX,SAAU,GACV,aAAcqC,GAEd,WAAY,CAAC,UAAU,UAAU,SAAS,YAAY,WAAW,MAAM,CACxE,EAEA,SAASqB,GAAW3B,EAAsBvE,EAAqBlhF,EAAmC,CACjG8hF,IACA,IAAIt9D,EAAIyhE,EAAOR,EAAKzlF,CAAO,EAE3B6hF,EAAG,cAAcX,EAAU18D,CAAC,CAC7B,CAEA,SAASmxD,GAAInxD,EAA2B,CAEvC,QADIyxD,EAAM,IAAI,MAAMzxD,EAAE,MAAM,EACpBx4B,EAAI,EAAGA,EAAIw4B,EAAE,OAAQ,EAAEx4B,EAAGiqF,EAAIjqF,CAAC,EAAI,OAAO,aAAaw4B,EAAEx4B,CAAC,CAAC,EACnE,OAAOiqF,EAAI,KAAK,EAAE,CACnB,CAEA,SAASoR,GAAM5B,EAAsBzlF,EAA8C,CAClF,IAAIwkB,EAAIyhE,EAAOR,EAAKzlF,CAAO,EAC3B,OAAOA,GAAWA,EAAQ,MAAQ,SAAQ,CACzC,IAAK,OAAQ,OAAA8hF,IAAUD,EAAG,cAAc7hF,EAAQ,SAAWwkB,GAAoBA,EAC/E,IAAK,SAAU,OAAO,OAAOA,GAAK,SAAWA,EAAImxD,GAAInxD,CAAC,EACtD,IAAK,SAAU,OAAOowD,GAAc,OAAOpwD,GAAK,SAAWA,EAAImxD,GAAInxD,CAAC,CAAC,EACrE,IAAK,SAAU,GAAGywD,GAAS,OAAO,OAAO,SAASzwD,CAAC,EAAIA,EAAI0wD,GAAY1wD,CAAC,EAExE,IAAK,QAAS,OAAO,OAAOA,GAAK,SAAWgxD,GAAIhxD,CAAC,EAAIA,CACrD,CACD,OAAOA,CACR,CAEA,IAAI8iE,GACJ,SAASC,EAASC,EAAM,CAAE,GAAI,CAC7B,IAAIC,EAAaD,EAAK,WAClBE,EAAU,IAAID,EAElB,GADAC,EAAQ,cAAc,IAAI,WAAW,CAAC,EAAG,CAAC,CAAC,EAAGA,EAAQ,gBAAgB,EACnEA,EAAQ,UAAWJ,GAAQE,MACzB,OAAM,IAAI,MAAM,gCAAgC,CACtD,OAAQnpE,EAAG,CAAC,QAAQ,MAAM,4BAA8BA,EAAE,SAAWA,EAAE,EAAM,CAE7E,SAASspE,EAAgBhrD,EAASirD,EAAK,CACtC,GAAG,CAACN,GAAO,OAAOO,GAASlrD,EAASirD,CAAG,EACvC,IAAIH,EAAaH,GAAM,WACnBI,EAAU,IAAID,EACdxR,EAAMyR,EAAQ,cAAc/qD,EAAQ,MAAMA,EAAQ,CAAC,EAAG+qD,EAAQ,gBAAgB,EAClF,OAAA/qD,EAAQ,GAAK+qD,EAAQ,UACdzR,CACR,CAEA,SAAS6R,EAAgBnrD,EAAS,CACjC,OAAO2qD,GAAQA,GAAM,eAAe3qD,CAAO,EAAIorD,EAASprD,CAAO,CAChE,CACA,IAAIqrD,EAAa,CAAE,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAG7EC,EAAS,CAAI,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAI,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,KAGvJC,GAAS,CAAG,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OAE7J,SAASC,GAAW55F,EAAG,CAAE,IAAI6hB,GAAS7hB,GAAG,EAAIA,GAAG,IAAO,QAAcA,GAAG,EAAIA,GAAG,IAAO,OAAY,OAAS6hB,GAAG,GAAOA,GAAG,EAAIA,GAAG,GAAO,CAKtI,QAHIg4E,GAAmB,OAAO,WAAe,IAEzCC,GAAWD,GAAmB,IAAI,WAAW,GAAI,EAAI,GACjDjQ,GAAI,EAAGA,GAAK,IAAO,EAAEA,GAAGkQ,GAASlQ,EAAC,EAAIgQ,GAAWhQ,EAAC,EAE1D,SAASmQ,GAAW/5F,EAAGqB,EAAG,CACzB,IAAI24F,EAAMF,GAAS95F,EAAI,GAAI,EAC3B,OAAGqB,GAAK,EAAU24F,IAAS,EAAE34F,GAC7B24F,EAAOA,GAAO,EAAKF,GAAU95F,GAAG,EAAG,GAAI,EACpCqB,GAAK,GAAW24F,IAAS,GAAG34F,GAC/B24F,EAAOA,GAAO,EAAKF,GAAU95F,GAAG,GAAI,GAAI,EACjCg6F,IAAS,GAAG34F,GACpB,CAGA,SAAS44F,EAAYpT,EAAKqT,EAAI,CAAE,IAAIp1D,EAAKo1D,EAAG,EAAIl9E,EAAKk9E,IAAK,EAAI,OAASrT,EAAI7pE,CAAC,GAAG8nB,GAAK,EAAI,EAAI+hD,EAAI7pE,EAAE,CAAC,GAAG,MAAM8nB,EAAI,CAAO,CACvH,SAASq1D,EAAYtT,EAAKqT,EAAI,CAAE,IAAIp1D,EAAKo1D,EAAG,EAAIl9E,EAAKk9E,IAAK,EAAI,OAASrT,EAAI7pE,CAAC,GAAG8nB,GAAK,EAAI,EAAI+hD,EAAI7pE,EAAE,CAAC,GAAG,MAAM8nB,EAAI,CAAO,CACvH,SAASs1D,GAAYvT,EAAKqT,EAAI,CAAE,IAAIp1D,EAAKo1D,EAAG,EAAIl9E,EAAKk9E,IAAK,EAAI,OAASrT,EAAI7pE,CAAC,GAAG8nB,GAAK,EAAI,EAAI+hD,EAAI7pE,EAAE,CAAC,GAAG,MAAM8nB,EAAI,EAAO,CACvH,SAASu1D,GAAYxT,EAAKqT,EAAI,CAAE,IAAIp1D,EAAKo1D,EAAG,EAAIl9E,EAAKk9E,IAAK,EAAI,OAASrT,EAAI7pE,CAAC,GAAG8nB,GAAK,EAAI,EAAI+hD,EAAI7pE,EAAE,CAAC,GAAG,MAAM8nB,EAAI,EAAO,CACvH,SAASw1D,EAAYzT,EAAKqT,EAAI,CAAE,IAAIp1D,EAAKo1D,EAAG,EAAIl9E,EAAKk9E,IAAK,EAAI,OAASrT,EAAI7pE,CAAC,GAAG8nB,GAAK,EAAI,EAAI+hD,EAAI7pE,EAAE,CAAC,GAAG,MAAM8nB,EAAI,GAAO,CAGvH,SAASy1D,GAAY1T,EAAKqT,EAAIl6F,EAAG,CAChC,IAAI,EAAKk6F,EAAG,EAAIl9E,EAAKk9E,IAAK,EAAIhpD,GAAM,GAAGlxC,GAAG,EACtCoC,EAAIykF,EAAI7pE,CAAC,IAAM,EAKnB,OAJGhd,EAAI,EAAI,IACXoC,GAAKykF,EAAI7pE,EAAE,CAAC,GAAI,EAAE,EACfhd,EAAI,GAAK,KACZoC,GAAKykF,EAAI7pE,EAAE,CAAC,GAAI,GAAG,EAChBhd,EAAI,GAAK,KACZoC,GAAKykF,EAAI7pE,EAAE,CAAC,GAAI,GAAG,GACZ5a,EAAI8uC,CACZ,CAGA,SAASspD,GAAa3T,EAAKqT,EAAI93F,EAAG,CAAE,IAAI,EAAI83F,EAAK,EAAGl9E,EAAIk9E,IAAO,EAC9D,OAAG,GAAK,EAAGrT,EAAI7pE,CAAC,IAAM5a,EAAI,IAAM,GAE/BykF,EAAI7pE,CAAC,GAAM5a,GAAK,EAAK,IACrBykF,EAAI7pE,EAAE,CAAC,GAAK5a,EAAE,IAAO,EAAE,GAEjB83F,EAAK,CACb,CAEA,SAASO,GAAa5T,EAAKqT,EAAI93F,EAAG,CACjC,IAAI,EAAI83F,EAAK,EAAGl9E,EAAIk9E,IAAO,EAC3B,OAAA93F,GAAKA,EAAE,IAAM,EACbykF,EAAI7pE,CAAC,GAAK5a,EACH83F,EAAK,CACb,CACA,SAASQ,GAAa7T,EAAKqT,EAAI93F,EAAG,CACjC,IAAI,EAAI83F,EAAK,EAAGl9E,EAAIk9E,IAAO,EAC3B,OAAA93F,IAAM,EACNykF,EAAI7pE,CAAC,GAAM5a,EAAI,IAAMA,KAAO,EAC5BykF,EAAI7pE,EAAE,CAAC,EAAI5a,EACJ83F,EAAK,CACb,CACA,SAASS,GAAc9T,EAAKqT,EAAI93F,EAAG,CAClC,IAAI,EAAI83F,EAAK,EAAGl9E,EAAIk9E,IAAO,EAC3B,OAAA93F,IAAM,EACNykF,EAAI7pE,CAAC,GAAM5a,EAAI,IAAMA,KAAO,EAC5BykF,EAAI7pE,EAAE,CAAC,EAAI5a,EAAI,IACfykF,EAAI7pE,EAAE,CAAC,EAAI5a,IAAM,EACV83F,EAAK,EACb,CAGA,SAASU,GAAQv5F,EAAG+xF,EAAe,CAClC,IAAIxL,EAAIvmF,EAAE,OAAQkvF,EAAI,EAAE3I,EAAIwL,EAAK,EAAExL,EAAIwL,EAAK,EAAG31F,EAAI,EACnD,GAAGmqF,GAAKwL,EAAI,OAAO/xF,EACnB,GAAGqlF,GAAS,CACX,IAAIzwD,EAAI+wD,GAAeuJ,CAAC,EAExB,GAAGlvF,EAAE,KAAMA,EAAE,KAAK40B,CAAC,MACd,MAAMx4B,EAAI4D,EAAE,OAAQ,EAAE5D,EAAGw4B,EAAEx4B,CAAC,EAAI4D,EAAE5D,CAAC,EACxC,OAAOw4B,CACP,SAAS4jE,GAAkB,CAC3B,IAAIz4F,EAAI,IAAI,WAAWmvF,CAAC,EACxB,GAAGnvF,EAAE,IAAKA,EAAE,IAAIC,CAAC,MACZ,MAAM5D,EAAImqF,EAAG,EAAEnqF,EAAG2D,EAAE3D,CAAC,EAAI4D,EAAE5D,CAAC,EACjC,OAAO2D,CACP,CACD,OAAAC,EAAE,OAASkvF,EACJlvF,CACR,CAGA,SAASw5F,GAAgB76F,EAAG,CAE3B,QADIi2B,EAAI,IAAI,MAAMj2B,CAAC,EACXvC,EAAI,EAAGA,EAAIuC,EAAG,EAAEvC,EAAGw4B,EAAEx4B,CAAC,EAAI,EAClC,OAAOw4B,CACR,CAGA,SAAS6kE,GAAWC,EAAOC,EAAMC,EAA2B,CAC3D,IAAIzT,EAAS,EAAG1iD,EAAI,EAAGrnC,EAAI,EAAG4sB,EAAI,EAAG6wE,GAAQ,EAAGtT,EAAImT,EAAM,OAEtDI,EAAYtB,GAAmB,IAAI,YAAY,EAAE,EAAIgB,GAAgB,EAAE,EAC3E,IAAIp9F,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG09F,EAAS19F,CAAC,EAAI,EAEtC,IAAIA,EAAImqF,EAAGnqF,EAAIw9F,EAAK,EAAEx9F,EAAGs9F,EAAMt9F,CAAC,EAAI,EACpCmqF,EAAImT,EAAM,OAEV,IAAIK,EAAQvB,GAAmB,IAAI,YAAYjS,CAAC,EAAIiT,GAAgBjT,CAAC,EAGrE,IAAInqF,EAAI,EAAGA,EAAImqF,EAAG,EAAEnqF,EACnB09F,EAAUr2D,EAAIi2D,EAAMt9F,CAAC,CAAG,IACrB+pF,EAAS1iD,IAAG0iD,EAAS1iD,GACxBs2D,EAAM39F,CAAC,EAAI,EAGZ,IADA09F,EAAS,CAAC,EAAI,EACV19F,EAAI,EAAGA,GAAK+pF,EAAQ,EAAE/pF,EAAG09F,EAAS19F,EAAE,EAAE,EAAKy9F,GAASA,GAAQC,EAAS19F,EAAE,CAAC,GAAI,EAChF,IAAIA,EAAI,EAAGA,EAAImqF,EAAG,EAAEnqF,EACnBy9F,GAAQH,EAAMt9F,CAAC,EACZy9F,IAAS,IAAGE,EAAM39F,CAAC,EAAI09F,EAASD,GAAM,EAAE,KAI5C,IAAIG,GAAQ,EACZ,IAAI59F,EAAI,EAAGA,EAAImqF,EAAG,EAAEnqF,EAEnB,GADA49F,GAAQN,EAAMt9F,CAAC,EACZ49F,IAAS,EAEX,IADAH,GAAQnB,GAAWqB,EAAM39F,CAAC,EAAG+pF,CAAM,GAAIA,EAAO6T,GAC1ChxE,GAAK,GAAIm9D,EAAS,EAAI6T,IAAU,EAAGhxE,GAAG,EAAG,EAAEA,EAC9C2wE,EAAKE,GAAO7wE,GAAGgxE,EAAM,EAAKA,GAAM,GAAO59F,GAAG,EAG7C,OAAO+pF,CACR,CAGA,IAAI8T,GAAWzB,GAAmB,IAAI,YAAY,GAAG,EAAIgB,GAAgB,GAAG,EACxEU,GAAW1B,GAAmB,IAAI,YAAY,EAAE,EAAKgB,GAAgB,EAAE,EAC3E,GAAG,CAAChB,GAAkB,CACrB,QAAQp8F,GAAI,EAAGA,GAAI,IAAK,EAAEA,GAAG69F,GAAS79F,EAAC,EAAI,EAC3C,IAAIA,GAAI,EAAGA,GAAI,GAAI,EAAEA,GAAG89F,GAAS99F,EAAC,EAAI,CACvC,EACC,UAAW,CAGX,QAFI+9F,EAA0B,CAAA,EAC1B/9F,EAAI,EACHA,EAAE,GAAIA,IAAK+9F,EAAM,KAAK,CAAC,EAC5BV,GAAWU,EAAOD,GAAU,EAAE,EAE9B,IAAIR,EAA0B,CAAA,EAE9B,IADAt9F,EAAI,EACEA,GAAG,IAAKA,IAAKs9F,EAAM,KAAK,CAAC,EAC/B,KAAMt9F,GAAG,IAAKA,IAAKs9F,EAAM,KAAK,CAAC,EAC/B,KAAMt9F,GAAG,IAAKA,IAAKs9F,EAAM,KAAK,CAAC,EAC/B,KAAMt9F,GAAG,IAAKA,IAAKs9F,EAAM,KAAK,CAAC,EAC/BD,GAAWC,EAAOO,GAAU,GAAG,CAChC,GAAC,EAAI,IAAIG,EAA4B,UAA2B,CAG/D,QAFIC,EAAY7B,GAAmB,IAAI,WAAW,KAAM,EAAI,CAAA,EACxDxvE,EAAI,EAAGinB,EAAI,EACTjnB,EAAIsvE,GAAO,OAAS,EAAG,EAAEtvE,EAC9B,KAAMinB,EAAIqoD,GAAOtvE,EAAE,CAAC,EAAG,EAAEinB,EAAGoqD,EAAUpqD,CAAC,EAAIjnB,EAE5C,KAAKinB,EAAI,MAAO,EAAEA,EAAGoqD,EAAUpqD,CAAC,EAAI,GAEpC,IAAIqqD,EAAY9B,GAAmB,IAAI,WAAW,GAAK,EAAI,CAAA,EAC3D,IAAIxvE,EAAI,EAAGinB,EAAI,EAAGjnB,EAAIqvE,EAAO,OAAS,EAAG,EAAErvE,EAC1C,KAAMinB,EAAIooD,EAAOrvE,EAAE,CAAC,EAAG,EAAEinB,EAAGqqD,EAAUrqD,CAAC,EAAIjnB,EAG5C,SAASuxE,EAAa/oF,GAAM60E,EAAK,CAEhC,QADImU,EAAO,EACLA,EAAOhpF,GAAK,QAAQ,CACzB,IAAI+0E,EAAI,KAAK,IAAI,MAAQ/0E,GAAK,OAASgpF,CAAI,EACvC7+E,GAAI6+E,EAAOjU,GAAK/0E,GAAK,OAIzB,IAHA60E,EAAI,YAAY,EAAG,CAAC1qE,EAAC,EACrB0qE,EAAI,YAAY,EAAGE,CAAC,EACpBF,EAAI,YAAY,EAAI,CAACE,EAAK,KAAM,EAC1BA,KAAM,GAAGF,EAAIA,EAAI,GAAG,EAAI70E,GAAKgpF,GAAM,CACzC,CACD,OAAOnU,EAAI,CACX,CAGD,SAASoU,EAAiBjpF,GAAM60E,EAAK,CAIpC,QAHIwS,EAAK,EACL2B,EAAO,EACPE,GAAQlC,GAAmB,IAAI,YAAY,KAAM,EAAI,CAAA,EACnDgC,EAAOhpF,GAAK,QAAQ,CACzB,IAAI+0E,GAA8B,KAAK,IAAI,MAAQ/0E,GAAK,OAASgpF,CAAI,EAGrE,GAAGjU,GAAI,GAAI,CAMV,IALAsS,EAAKM,GAAa9S,EAAKwS,EAAI,EAAI2B,EAAOjU,IAAK/0E,GAAK,OAAO,EACpDqnF,EAAK,IAAGA,GAAM,GAAKA,EAAK,IAC3BxS,EAAI,EAAKwS,EAAK,EAAK,EACnBxS,EAAI,YAAY,EAAGE,EAAC,EACpBF,EAAI,YAAY,EAAI,CAACE,GAAK,KAAM,EAC1BA,MAAM,GAAGF,EAAIA,EAAI,GAAG,EAAI70E,GAAKgpF,GAAM,EACzC3B,EAAKxS,EAAI,EAAI,EACb,QACA,CAEDwS,EAAKM,GAAa9S,EAAKwS,EAAI,EAAI2B,EAAOjU,IAAK/0E,GAAK,QAAU,CAAC,EAE3D,QADImpF,GAAO,EACLpU,MAAM,GAAG,CACd,IAAIj2C,GAAI9+B,GAAKgpF,CAAI,EACjBG,IAASA,IAAQ,EAAKrqD,IAAK,MAE3B,IAAI5Q,GAAQ,GAAIk7D,GAAO,EAEvB,IAAIl7D,GAAQg7D,GAAMC,EAAI,KACrBj7D,IAAS86D,EAAO,OACb96D,GAAQ86D,IAAM96D,IAAS,OACvBA,GAAQ86D,GAAM,KAAMhpF,GAAKkuB,GAAQk7D,EAAI,GAAKppF,GAAKgpF,EAAOI,EAAI,GAAKA,GAAO,KAAK,EAAEA,GAGjF,GAAGA,GAAO,EAAG,CAEZtqD,GAAIgqD,EAAUM,EAAI,EACftqD,IAAK,GAAIuoD,EAAKQ,GAAahT,EAAKwS,EAAIJ,GAASnoD,GAAE,CAAC,GAAG,CAAC,EAAI,GAE1D+oD,GAAahT,EAAKwS,EAAI,CAAC,EACvBA,GAAM,EACNQ,GAAahT,EAAKwS,EAAIJ,GAASnoD,GAAE,EAAE,GAAG,CAAC,EACvCuoD,GAAM,GAEP,IAAIgC,GAAUvqD,GAAI,EAAK,EAAMA,GAAI,GAAI,EAClCuqD,GAAS,IACXvB,GAAcjT,EAAKwS,EAAI+B,GAAOvC,EAAO/nD,EAAC,CAAC,EACvCuoD,GAAMgC,IAGPvqD,GAAI+pD,EAAUG,EAAO96D,EAAK,EAC1Bm5D,EAAKQ,GAAahT,EAAKwS,EAAIJ,GAASnoD,EAAC,GAAG,CAAC,EACzCuoD,GAAM,EAEN,IAAIiC,GAASxqD,GAAI,EAAI,EAAKA,GAAE,GAAI,EAC7BwqD,GAAS,IACXxB,GAAcjT,EAAKwS,EAAI2B,EAAO96D,GAAQ44D,GAAOhoD,EAAC,CAAC,EAC/CuoD,GAAMiC,IAEP,QAAQvS,GAAI,EAAGA,GAAIqS,GAAM,EAAErS,GAC1BmS,GAAMC,EAAI,EAAIH,EAAO,MACrBG,IAASA,IAAQ,EAAKnpF,GAAKgpF,CAAI,GAAK,MACpC,EAAEA,EAEHjU,IAAIqU,GAAO,CAChB,MAEQtqD,IAAK,IAAKA,GAAIA,GAAI,GAChBuoD,EAAKO,GAAa/S,EAAKwS,EAAI,CAAC,EACjCA,EAAKQ,GAAahT,EAAKwS,EAAIJ,GAASnoD,EAAC,CAAC,EACtCoqD,GAAMC,EAAI,EAAIH,EAAO,MACrB,EAAEA,CAEH,CAED3B,EAAKQ,GAAahT,EAAKwS,EAAI,CAAC,EAAI,CAChC,CACD,OAAAxS,EAAI,GAAMwS,EAAK,GAAG,EAAG,EACdxS,EAAI,CACX,CACD,OAAO,SAAqB70E,EAAM60E,EAAK,CACtC,OAAG70E,EAAK,OAAS,EAAU+oF,EAAa/oF,EAAM60E,CAAG,EAC1CoU,EAAiBjpF,EAAM60E,CAAG,CACnC,CACA,IAEA,SAAS8R,EAAS3mF,EAAM,CACvB,IAAIg0E,EAAMkP,GAAQ,GAAG,KAAK,MAAMljF,EAAK,OAAO,GAAG,CAAC,EAC5CupF,EAAMX,EAAY5oF,EAAMg0E,CAAG,EAC/B,OAAOA,EAAI,MAAM,EAAGuV,CAAG,CACxB,CAGA,IAAIC,GAAWxC,GAAmB,IAAI,YAAY,KAAK,EAAIgB,GAAgB,KAAK,EAC5EyB,GAAWzC,GAAmB,IAAI,YAAY,KAAK,EAAIgB,GAAgB,KAAK,EAC5E0B,GAAW1C,GAAmB,IAAI,YAAY,GAAG,EAAMgB,GAAgB,GAAG,EAC1E2B,GAAY,EAAGC,GAAY,EAG/B,SAASC,GAAI7pF,EAAMgpF,EAAiB,CAEnC,IAAIc,EAAQtC,GAAYxnF,EAAMgpF,CAAI,EAAI,IAAKA,GAAQ,EACnD,IAAIe,EAASvC,GAAYxnF,EAAMgpF,CAAI,EAAI,EAAGA,GAAQ,EAClD,IAAIgB,EAASzC,GAAYvnF,EAAMgpF,CAAI,EAAI,EAAGA,GAAQ,EAUlD,QATI/2D,EAAI,EAGJi2D,EAAQlB,GAAmB,IAAI,WAAW,EAAE,EAAIgB,GAAgB,EAAE,EAClEO,GAAQ,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChE5T,EAAS,EACT2T,EAAYtB,GAAmB,IAAI,WAAW,CAAC,EAAIgB,GAAgB,CAAC,EACpEiC,EAAYjD,GAAmB,IAAI,WAAW,CAAC,EAAIgB,GAAgB,CAAC,EACpEjT,GAAImT,EAAM,OACNt9F,GAAI,EAAGA,GAAIo/F,EAAQ,EAAEp/F,GAC5Bs9F,EAAMtB,EAAWh8F,EAAC,CAAC,EAAIqnC,EAAIq1D,EAAYtnF,EAAMgpF,CAAI,EAC9CrU,EAAS1iD,IAAG0iD,EAAS1iD,GACxBq2D,EAASr2D,CAAC,IACV+2D,GAAQ,EAIT,IAAIX,GAAQ,EAEZ,IADAC,EAAS,CAAC,EAAI,EACV19F,GAAI,EAAGA,IAAK+pF,EAAQ,EAAE/pF,GAAGq/F,EAAUr/F,EAAC,EAAIy9F,GAASA,GAAQC,EAAS19F,GAAE,CAAC,GAAI,EAC7E,IAAIA,GAAI,EAAGA,GAAImqF,GAAG,EAAEnqF,IAAOy9F,GAAQH,EAAMt9F,EAAC,IAAM,IAAG29F,GAAM39F,EAAC,EAAIq/F,EAAU5B,EAAK,KAE7E,IAAIG,GAAQ,EACZ,IAAI59F,GAAI,EAAGA,GAAImqF,GAAG,EAAEnqF,GAEnB,GADA49F,GAAQN,EAAMt9F,EAAC,EACZ49F,IAAS,EAAG,CACdH,GAAQpB,GAASsB,GAAM39F,EAAC,CAAC,GAAI,EAAE49F,GAC/B,QAAQhxE,IAAK,GAAI,EAAEgxE,IAAQ,EAAGhxE,IAAG,EAAG,EAAEA,GAAGkyE,GAASrB,GAAO7wE,IAAGgxE,EAAM,EAAKA,GAAM,EAAM59F,IAAG,CACtF,CAIF,IAAIs/F,GAA2B,CAAA,EAE/B,IADAvV,EAAS,EACHuV,GAAO,OAASJ,EAAQC,GAG7B,OAFA1B,GAAQqB,GAASjC,EAAYznF,EAAMgpF,CAAI,CAAC,EACxCA,GAAQX,GAAQ,EACRA,MAAW,EAAC,CACnB,IAAK,IAGJ,IAFAp2D,EAAI,EAAIm1D,EAAYpnF,EAAMgpF,CAAI,EAAGA,GAAQ,EACzCX,GAAQ6B,GAAOA,GAAO,OAAS,CAAC,EAC1Bj4D,KAAM,GAAGi4D,GAAO,KAAK7B,EAAK,EAChC,MACD,IAAK,IAEJ,IADAp2D,EAAI,EAAIq1D,EAAYtnF,EAAMgpF,CAAI,EAAGA,GAAQ,EACnC/2D,KAAM,GAAGi4D,GAAO,KAAK,CAAC,EAC5B,MACD,IAAK,IAEJ,IADAj4D,EAAI,GAAKw1D,EAAYznF,EAAMgpF,CAAI,EAAGA,GAAQ,EACpC/2D,KAAO,GAAGi4D,GAAO,KAAK,CAAC,EAC7B,MACD,QACCA,GAAO,KAAK7B,EAAK,EACd1T,EAAS0T,KAAO1T,EAAS0T,IAC5B,KACD,CAIF,IAAItqD,GAAKmsD,GAAO,MAAM,EAAGJ,CAAK,EAAG9rD,GAAKksD,GAAO,MAAMJ,CAAK,EACxD,IAAIl/F,GAAIk/F,EAAOl/F,GAAI,IAAK,EAAEA,GAAGmzC,GAAGnzC,EAAC,EAAI,EACrC,IAAIA,GAAIm/F,EAAQn/F,GAAI,GAAI,EAAEA,GAAGozC,GAAGpzC,EAAC,EAAI,EACrC,OAAA++F,GAAY1B,GAAWlqD,GAAIyrD,GAAU,GAAG,EACxCI,GAAY3B,GAAWjqD,GAAIyrD,GAAU,EAAE,EAChCT,CACR,CAGA,SAASmB,GAAQnqF,EAAMwmF,EAAgB,CAEtC,GAAGxmF,EAAK,CAAC,GAAK,GAAK,EAAEA,EAAK,CAAC,EAAI,GAAQ,MAAO,CAACk0E,GAAYsS,CAAG,EAAG,CAAC,EAalE,QAVIwC,EAAO,EAGPx3D,EAAS,EAET44D,EAASjW,GAAeqS,GAAa,GAAG,EAAG,EAC3C6D,EAAO,EACPC,EAAKF,EAAO,SAAS,EACrBG,GAAY,EAAGC,EAAY,EAExB,EAAAh5D,EAAO,IAAS,CAEtB,GADAA,EAAS81D,EAAYtnF,EAAMgpF,CAAI,EAAGA,GAAQ,EACtCx3D,IAAW,EAYJA,GAAU,GAAM,GAE1B+4D,GAAY,EAAGC,EAAY,IAG3BxB,EAAOa,GAAI7pF,EAAMgpF,CAAI,EACrBuB,GAAYZ,GAAWa,EAAYZ,QAlBZ,CAEpBZ,EAAO,IAAGA,GAAQ,GAAKA,EAAK,IAE/B,IAAIzI,EAAKvgF,EAAKgpF,IAAO,CAAC,EAAIhpF,GAAMgpF,IAAO,GAAG,CAAC,GAAG,EAG9C,GAFAA,GAAQ,GAELzI,EAAK,EAEP,IADG,CAACiG,GAAO8D,EAAKD,EAAO9J,IAAM6J,EAASrC,GAAQqC,EAAQC,EAAO9J,CAAE,EAAG+J,EAAKF,EAAO,QACxE7J,KAAO,GAAK6J,EAAOC,GAAM,EAAIrqF,EAAKgpF,IAAO,CAAC,EAAGA,GAAQ,EAE5D,QACA,CAQD,OAAQ,CACJ,CAACxC,GAAQ8D,EAAKD,EAAO,QAAUD,EAASrC,GAAQqC,EAAQC,EAAO,KAAK,EAAGC,EAAKF,EAAO,QAEtF,IAAIK,EAAO/C,GAAY1nF,EAAMgpF,EAAMuB,EAAS,EACxCj+D,GAAQkF,IAAS,GAAM,EAAIi3D,GAASgC,CAAI,EAAIjB,GAASiB,CAAI,EAG7D,GAFAzB,GAAQ18D,GAAO,GAAIA,MAAU,EAExB,EAAAA,KAAO,EAAG,KAAa89D,EAAOC,GAAM,EAAI/9D,OACxC,IAAGA,IAAQ,IAAK,MAEpBA,IAAQ,IACR,IAAI+8D,GAAU/8D,GAAO,EAAK,EAAMA,GAAK,GAAI,EAAO+8D,GAAS,IAAGA,GAAS,GACrE,IAAI7I,GAAM6J,EAAOxD,EAAOv6D,EAAI,EAEzB+8D,GAAS,IACX7I,IAAOkH,GAAY1nF,EAAMgpF,EAAMK,EAAM,EACrCL,GAAQK,IAIToB,EAAO/C,GAAY1nF,EAAMgpF,EAAMwB,CAAS,EACxCl+D,GAAQkF,IAAS,GAAM,EAAIk3D,GAAS+B,CAAI,EAAIhB,GAASgB,CAAI,EACzDzB,GAAQ18D,GAAO,GAAIA,MAAU,EAC7B,IAAIg9D,GAAUh9D,GAAO,EAAI,EAAKA,GAAK,GAAI,EACnCo+D,GAAM5D,GAAOx6D,EAAI,EASrB,IAPGg9D,GAAS,IACXoB,IAAOhD,GAAY1nF,EAAMgpF,EAAMM,EAAM,EACrCN,GAAQM,IAIN,CAAC9C,GAAO8D,EAAK9J,KAAO4J,EAASrC,GAAQqC,EAAQ5J,GAAM,GAAG,EAAG8J,EAAKF,EAAO,QAClEC,EAAO7J,IAAO4J,EAAOC,CAAI,EAAID,EAAOC,EAAOK,EAAG,EAAG,EAAEL,EAE1D,CACD,CACD,OAAG7D,EAAY,CAAC4D,EAASpB,EAAK,IAAK,CAAC,EAC7B,CAACoB,EAAO,MAAM,EAAGC,CAAI,EAAIrB,EAAK,IAAK,CAAC,CAC5C,CAEA,SAASvC,GAASlrD,EAASirD,EAAK,CAC/B,IAAIxmF,EAAOu7B,EAAQ,MAAMA,EAAQ,GAAG,CAAC,EACjCs5C,EAAMsV,GAAQnqF,EAAMwmF,CAAG,EAC3B,OAAAjrD,EAAQ,GAAKs5C,EAAI,CAAC,EACXA,EAAI,CAAC,CACb,CAEA,SAAS8V,GAAcC,EAAKC,EAAK,CAChC,GAAGD,EAAU,OAAO,QAAY,KAAa,QAAQ,MAAMC,CAAG,MACzD,OAAM,IAAI,MAAMA,CAAG,CACzB,CAEA,SAASjK,GAAUD,EAAmB/hF,EAA0C,CAC/E,IAAIwhF,EAAyBO,EAC7BN,GAAUD,EAAM,CAAC,EAEjB,IAAI8B,EAA6B,CAAA,EAAIC,EAA8B,GAC/D/+D,EAAI,CACP,UAAW8+D,EACX,UAAWC,CACb,EACCiC,EAAShhE,EAAG,CAAE,KAAMxkB,EAAQ,IAAM,CAAA,EAIlC,QADIhU,EAAIw1F,EAAK,OAAS,GACfA,EAAKx1F,CAAC,GAAK,IAAQw1F,EAAKx1F,EAAE,CAAC,GAAK,IAAQw1F,EAAKx1F,EAAE,CAAC,GAAK,GAAQw1F,EAAKx1F,EAAE,CAAC,GAAK,IAASA,GAAK,GAAG,EAAEA,EACpGw1F,EAAK,EAAIx1F,EAAI,EAGbw1F,EAAK,GAAK,EACV,IAAI0K,GAAO1K,EAAK,WAAW,CAAC,EAC5BA,EAAK,GAAK,EACV,IAAI2K,EAAW3K,EAAK,WAAW,CAAC,EAKhC,IAFAA,EAAK,EAAI2K,EAELngG,EAAI,EAAGA,EAAIkgG,GAAM,EAAElgG,EAAG,CAEzBw1F,EAAK,GAAK,GACV,IAAI4K,EAAM5K,EAAK,WAAW,CAAC,EACvBoG,EAAMpG,EAAK,WAAW,CAAC,EACvByD,GAAUzD,EAAK,WAAW,CAAC,EAC3B6K,GAAO7K,EAAK,WAAW,CAAC,EACxB8K,GAAO9K,EAAK,WAAW,CAAC,EAC5BA,EAAK,GAAK,EACV,IAAIrxB,GAASqxB,EAAK,WAAW,CAAC,EAC1B+K,GAAKhL,EAAyBC,EAAK,MAAMA,EAAK,EAAEyD,GAASzD,EAAK,EAAEyD,GAAQoH,EAAI,CAAC,EACjF7K,EAAK,GAAKyD,GAAUoH,GAAOC,GAE3B,IAAInW,GAAIqL,EAAK,EACbA,EAAK,EAAIrxB,GAAS,EAClBq8B,GAAiBhL,EAAM4K,EAAKxE,EAAKpjE,EAAG+nE,EAAE,EACtC/K,EAAK,EAAIrL,EACT,CACD,OAAO3xD,CACR,CAIA,SAASgoE,GAAiBhL,EAAiB4K,EAAgBxE,EAAgBpjE,EAAoB+nE,EAAI,CAElG/K,EAAK,GAAK,EACV,IAAIE,EAAQF,EAAK,WAAW,CAAC,EACzBiL,EAAOjL,EAAK,WAAW,CAAC,EACxBpkC,GAAOkkC,EAAeE,CAAI,EAE9B,GAAGE,EAAQ,KAAQ,MAAM,IAAI,MAAM,4BAA4B,EAShD,QARXgL,EAAQlL,EAAK,WAAW,CAAC,EACzBmL,EAAOnL,EAAK,WAAW,CAAC,EACxBoL,EAAOpL,EAAK,WAAW,CAAC,EAExByD,GAAUzD,EAAK,WAAW,CAAC,EAC3B6K,GAAO7K,EAAK,WAAW,CAAC,EAGxBlyF,GAAO,GAAYtD,GAAI,EAAGA,GAAIi5F,GAAS,EAAEj5F,GAAGsD,IAAQ,OAAO,aAAakyF,EAAKA,EAAK,GAAG,CAAC,EAC1F,GAAG6K,GAAM,CACR,IAAIQ,GAAKtL,EAAyBC,EAAK,MAAMA,EAAK,EAAGA,EAAK,EAAI6K,EAAI,IAC9DQ,GAAG,KAAM,GAAG,CAAE,GAAE,KAAIzvC,GAAOyvC,GAAG,KAAM,EAAE,MACrCN,GAAI,CAAE,GAAE,KAAM,GAAG,CAAA,GAAI,KAAInvC,GAAOmvC,EAAG,KAAM,EAAE,GAChD,CACD/K,EAAK,GAAK6K,GAKV,IAAIjrF,GAAOogF,EAAK,MAAMA,EAAK,EAAGA,EAAK,EAAImL,CAAI,EAC3C,OAAOF,EAAI,CACV,IAAK,GAAGrrF,GAAOumF,EAAgBnG,EAAMoL,CAAI,EAAG,MAC5C,IAAK,GAAG,MACR,QAAS,MAAM,IAAI,MAAM,sCAAwCH,CAAI,CACrE,CAGD,IAAIT,GAAM,GACPtK,EAAQ,IACVgL,EAAQlL,EAAK,WAAW,CAAC,EACtBkL,GAAS,YAAcA,EAAQlL,EAAK,WAAW,CAAC,EAAGwK,GAAM,IAC5DW,EAAOnL,EAAK,WAAW,CAAC,EACxBoL,EAAOpL,EAAK,WAAW,CAAC,GAGtBmL,GAAQP,GAAKL,GAAcC,GAAK,wBAA0BI,EAAM,OAASO,CAAI,EAC7EC,GAAQhF,GAAKmE,GAAcC,GAAK,0BAA4BpE,EAAM,OAASgF,CAAI,EAGlFE,GAAQtoE,EAAGl1B,GAAM8R,GAAM,CAAC,OAAQ,GAAM,GAAIg8C,EAAI,CAAC,CAChD,CACA,SAASgpC,GAAUX,EAAsBzlF,EAAuC,CAC/E,IAAIkmF,EAAQlmF,GAAW,GACnBi2E,EAAM,CAAA,EAAI8W,EAAQ,GAClBvoE,EAAe8/D,GAAQ,CAAC,EACxB5sF,EAAUwuF,EAAM,YAAc,EAAI,EAAIxE,GAAQ,EAG9C11F,EAAI,EAAG4sB,EAAI,EAEXuzE,EAAW,EAAGD,GAAO,EACrBlqF,GAAOyjF,EAAI,UAAU,CAAC,EAAGuH,GAAKhrF,GAAMirF,GAAKxH,EAAI,UAAU,CAAC,EACxDyH,GAAO,CAAA,EACPC,GAAQ,EAEZ,IAAInhG,EAAI,EAAGA,EAAIy5F,EAAI,UAAU,OAAQ,EAAEz5F,EAEtC,GADAghG,GAAKvH,EAAI,UAAUz5F,CAAC,EAAE,MAAMgW,GAAK,MAAM,EAAGirF,GAAKxH,EAAI,UAAUz5F,CAAC,EAC3D,GAACihG,GAAG,MAAQ,CAACA,GAAG,SAAWD,IAAM,YACpC,KAAIxvF,GAAQ2uF,EAGRiB,GAAU9I,GAAQ0I,GAAG,MAAM,EAC/B,IAAIp0E,EAAI,EAAGA,EAAIo0E,GAAG,OAAQ,EAAEp0E,EAAGw0E,GAAQ,YAAY,EAAGJ,GAAG,WAAWp0E,CAAC,EAAI,GAAI,EAC7Ew0E,GAAUA,GAAQ,MAAM,EAAGA,GAAQ,CAAC,EACpCF,GAAKhB,EAAI,EAAIhN,GAAM,IAAY+N,GAAG,QAAyB,CAAC,EAE5D,IAAIzB,GAASyB,GAAG,QACbv1F,GAAU,IAAG8zF,GAAS1D,EAAgB0D,EAAM,GAG/ChnE,EAAI8/D,GAAQ,EAAE,EACd9/D,EAAE,YAAY,EAAG,QAAU,EAC3BA,EAAE,YAAY,EAAG,EAAE,EACnBA,EAAE,YAAY,EAAGk9D,EAAK,EACtBl9D,EAAE,YAAY,EAAG9sB,CAAM,EAEpBu1F,GAAG,GAAI9L,EAAe38D,EAAGyoE,GAAG,EAAE,EAC5BzoE,EAAE,YAAY,EAAG,CAAC,EACvBA,EAAE,YAAY,GAAsB0oE,GAAKhB,EAAI,CAAC,EAC9C1nE,EAAE,YAAY,EAAsBgnE,GAAO,MAAM,EACjDhnE,EAAE,YAAY,EAA6ByoE,GAAG,QAAmB,MAAM,EACvEzoE,EAAE,YAAY,EAAG4oE,GAAQ,MAAM,EAC/B5oE,EAAE,YAAY,EAAG,CAAC,EAElB2nE,GAAY3nE,EAAE,OACdyxD,EAAI,KAAKzxD,CAAC,EACV2nE,GAAYiB,GAAQ,OACpBnX,EAAI,KAAKmX,EAAO,EAMhBjB,GAAYX,GAAO,OACnBvV,EAAI,KAAKuV,EAAM,EAafhnE,EAAI8/D,GAAQ,EAAE,EACd9/D,EAAE,YAAY,EAAG,QAAU,EAC3BA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,EAAE,EACnBA,EAAE,YAAY,EAAGk9D,EAAK,EACtBl9D,EAAE,YAAY,EAAG9sB,CAAM,EACvB8sB,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,GAAI0oE,GAAKhB,EAAI,CAAC,EAE5B1nE,EAAE,YAAY,EAAGgnE,GAAO,MAAM,EAC9BhnE,EAAE,YAAY,EAAUyoE,GAAG,QAAmB,MAAM,EACpDzoE,EAAE,YAAY,EAAG4oE,GAAQ,MAAM,EAC/B5oE,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAGhnB,EAAK,EAEtB2vF,IAAS3oE,EAAE,EACXuoE,EAAM,KAAKvoE,CAAC,EACZ2oE,IAASC,GAAQ,OACjBL,EAAM,KAAKK,EAAO,EAClB,EAAElB,GAIH,OAAA1nE,EAAI8/D,GAAQ,EAAE,EACd9/D,EAAE,YAAY,EAAG,SAAU,EAC3BA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG0nE,EAAI,EACrB1nE,EAAE,YAAY,EAAG0nE,EAAI,EACrB1nE,EAAE,YAAY,EAAG2oE,EAAK,EACtB3oE,EAAE,YAAY,EAAG2nE,CAAQ,EACzB3nE,EAAE,YAAY,EAAG,CAAC,EAEXqxD,GAAS,CAACA,GAASI,CAAG,EAAYJ,GAAQkX,CAAK,EAAGvoE,CAAC,EAC3D,CACA,IAAI6oE,GAAkB,CACrB,IAAO,YACP,IAAO,WAEP,IAAO,YACP,IAAO,aACP,IAAO,YAEP,IAAO,oBACP,KAAQ,iCACR,QAAW,0BACZ,EAEA,SAASC,GAAiBL,EAAiBD,EAA0B,CACpE,GAAGC,EAAG,MAAO,OAAOA,EAAG,MAEvB,IAAIM,EAAMN,EAAG,MAAQ,GAAInhF,EAAIyhF,EAAI,MAAM,aAAa,EAGpD,OAFGzhF,GAAKuhF,GAAevhF,EAAE,CAAC,CAAC,GAExBkhF,IACFlhF,GAAKyhF,EAAMP,GAAI,MAAM,mBAAmB,EACrClhF,GAAKuhF,GAAevhF,EAAE,CAAC,CAAC,GAAUuhF,GAAevhF,EAAE,CAAC,CAAC,EAGlD,0BACR,CAGA,SAAS0hF,GAAgBhN,EAA4B,CAGpD,QAFIp/E,EAAOwzE,GAAc4L,CAAI,EACzBh8D,EAAI,CAAA,EACAx4B,EAAI,EAAGA,EAAIoV,EAAK,OAAQpV,GAAI,GAAIw4B,EAAE,KAAKpjB,EAAK,MAAMpV,EAAGA,EAAE,EAAE,CAAC,EAClE,OAAOw4B,EAAE,KAAK;AAAA,CAAM,EAAI;AAAA,CACzB,CAgBA,SAASipE,GAAuB9wE,EAA4B,CAC3D,IAAI+wE,EAAU/wE,EAAK,QAAQ,0CAA2C,SAASlvB,EAAG,CACjF,IAAI4lC,EAAI5lC,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,cACrC,MAAO,KAAO4lC,EAAE,QAAU,EAAI,IAAMA,EAAIA,EAC1C,CAAE,EAEDq6D,EAAUA,EAAQ,QAAQ,OAAQ,KAAK,EAAE,QAAQ,QAAS,KAAK,EAE5DA,EAAQ,OAAO,CAAC,GAAK;AAAA,IAAMA,EAAU,MAAQA,EAAQ,MAAM,CAAC,GAC/DA,EAAUA,EAAQ,QAAQ,aAAc,KAAK,EAAE,QAAQ,SAAU;AAAA,IAAO,EAAE,QAAQ,gBAAiB,OAAO,EAG1G,QADIlpE,EAAsB,CAAA,EAAImpE,EAAQD,EAAQ,MAAM;AAAA,CAAM,EAClDE,EAAK,EAAGA,EAAKD,EAAM,OAAQ,EAAEC,EAAI,CACxC,IAAI3iG,EAAM0iG,EAAMC,CAAE,EAClB,GAAG3iG,EAAI,QAAU,EAAG,CAAEu5B,EAAE,KAAK,EAAE,EAAG,QAAW,CAC7C,QAAQx4B,EAAI,EAAGA,EAAIf,EAAI,QAAS,CAC/B,IAAIwS,GAAM,GACNrO,EAAMnE,EAAI,MAAMe,EAAGA,EAAIyR,EAAG,EAC3BrO,EAAI,OAAOqO,GAAM,CAAC,GAAK,IAAKA,KACvBrO,EAAI,OAAOqO,GAAM,CAAC,GAAK,IAAKA,IAAO,EACnCrO,EAAI,OAAOqO,GAAM,CAAC,GAAK,MAAKA,IAAO,GAC3CrO,EAAMnE,EAAI,MAAMe,EAAGA,EAAIyR,EAAG,EAC1BzR,GAAKyR,GACFzR,EAAIf,EAAI,SAAQmE,GAAO,KAC1Bo1B,EAAE,KAAKp1B,CAAG,CACV,CACD,CAED,OAAOo1B,EAAE,KAAK;AAAA,CAAM,CACrB,CACA,SAASqpE,GAAuBzsF,EAAqC,CAIpE,QAHIojB,EAAI,CAAA,EAGAspE,EAAK,EAAGA,EAAK1sF,EAAK,OAAQ,EAAE0sF,EAAI,CAEvC,QADIr7D,EAAOrxB,EAAK0sF,CAAE,EACZA,GAAM1sF,EAAK,QAAUqxB,EAAK,OAAOA,EAAK,OAAS,CAAC,GAAK,KAAKA,EAAOA,EAAK,MAAM,EAAGA,EAAK,OAAS,CAAC,EAAIrxB,EAAK,EAAE0sF,CAAE,EACjHtpE,EAAE,KAAKiO,CAAI,CACX,CAGD,QAAQs7D,EAAK,EAAGA,EAAKvpE,EAAE,OAAQ,EAAEupE,EAAIvpE,EAAEupE,CAAE,EAAIvpE,EAAEupE,CAAE,EAAE,QAAQ,qBAAsB,SAASvT,EAAI,CAAE,OAAO,OAAO,aAAa,SAASA,EAAG,MAAM,CAAC,EAAG,EAAE,CAAC,CAAI,CAAA,EACxJ,OAAOhF,GAAIhxD,EAAE,KAAK;AAAA,CAAM,CAAC,CAC1B,CAGA,SAASwpE,GAAWvI,EAAsBrkF,EAAwBY,EAA0B,CAG3F,QAFIisF,EAAQ,GAAIC,EAAM,GAAIC,EAAQ,GAAIC,EAClCN,GAAK,EACJA,GAAK,GAAI,EAAEA,GAAI,CACnB,IAAIr7D,EAAOrxB,EAAK0sF,EAAE,EAClB,GAAG,CAACr7D,GAAQA,EAAK,MAAM,OAAO,EAAG,MACjC,IAAI3mB,EAAI2mB,EAAK,MAAM,sBAAsB,EACzC,GAAG3mB,EAAG,OAAOA,EAAE,CAAC,EAAE,YAAa,EAAA,CAC9B,IAAK,mBAAoBmiF,EAAQniF,EAAE,CAAC,EAAE,KAAM,EAAE,MAC9C,IAAK,eAAgBqiF,EAAQriF,EAAE,CAAC,EAAE,KAAM,EAAE,MAC1C,IAAK,4BAA6BoiF,EAAMpiF,EAAE,CAAC,EAAE,KAAM,EAAE,KACrD,CACD,CAED,OADA,EAAEgiF,GACKI,EAAI,YAAa,EAAA,CACvB,IAAK,SAAUE,EAAQ5Y,GAAIR,GAAc5zE,EAAK,MAAM0sF,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAG,MACpE,IAAK,mBAAoBM,EAAQP,GAAuBzsF,EAAK,MAAM0sF,EAAE,CAAC,EAAG,MACzE,QAAS,MAAM,IAAI,MAAM,yCAA2CI,CAAG,CACvE,CACD,IAAInM,EAAO+K,GAAQrH,EAAKwI,EAAM,MAAMjsF,EAAK,MAAM,EAAGosF,EAAO,CAAC,OAAQ,EAAI,CAAC,EACpED,IAAOpM,EAAK,MAAQoM,EACxB,CAEA,SAASlM,GAAUF,EAAmB/hF,EAA0C,CAC/E,GAAG21E,GAAIoM,EAAK,MAAM,EAAE,EAAE,CAAC,EAAE,YAAW,GAAM,gBAAiB,MAAM,IAAI,MAAM,wBAAwB,EACnG,IAAI//E,EAAQhC,GAAWA,EAAQ,MAAQ,GAEnCoB,GAAQ6zE,IAAW,OAAO,SAAS8M,CAAI,EAAIA,EAAK,SAAS,QAAQ,EAAIpM,GAAIoM,CAAI,GAAG,MAAM;AAAA,CAAM,EAC5F+L,EAAK,EAAG/Z,EAAM,GAGlB,IAAI+Z,EAAK,EAAGA,EAAK1sF,EAAK,OAAQ,EAAE0sF,EAE/B,GADA/Z,EAAM3yE,EAAK0sF,CAAE,EACV,EAAC,sBAAsB,KAAK/Z,CAAG,IAClCA,EAAMA,EAAI,MAAMA,EAAI,QAAQ,MAAM,CAAC,EAC/B/xE,IAAMA,EAAO+xE,EAAI,MAAM,EAAGA,EAAI,YAAY,GAAG,EAAI,CAAC,GACnDA,EAAI,MAAM,EAAG/xE,EAAK,MAAM,GAAKA,GAChC,KAAMA,EAAK,OAAS,IACnBA,EAAOA,EAAK,MAAM,EAAGA,EAAK,OAAS,CAAC,EACpCA,EAAOA,EAAK,MAAM,EAAGA,EAAK,YAAY,GAAG,EAAI,CAAC,EAC3C+xE,EAAI,MAAM,EAAE/xE,EAAK,MAAM,GAAKA,IAA/B,CAIF,IAAIqsF,GAAajtF,EAAK,CAAC,GAAK,IAAI,MAAM,kBAAkB,EACxD,GAAG,CAACitF,EAAW,MAAM,IAAI,MAAM,0BAA0B,EACzD,IAAIC,GAAW,MAAQD,EAAU,CAAC,GAAK,IAEnC/K,EAA6B,CAAA,EAAIC,EAA8B,GAC/D/+D,EAAI,CACP,UAAW8+D,EACX,UAAWC,CACb,EACCiC,EAAShhE,CAAC,EACV,IAAI+pE,GAAUrC,GAAO,EACrB,IAAI4B,EAAK,EAAGA,EAAK1sF,EAAK,OAAQ,EAAE0sF,EAAI,CACnC,IAAIr7D,GAAOrxB,EAAK0sF,CAAE,EACfr7D,KAAS67D,IAAY77D,KAAS67D,GAAW,OACzCpC,MAAQ8B,GAAWxpE,EAAGpjB,EAAK,MAAMmtF,GAAUT,CAAE,EAAG9rF,CAAI,EACvDusF,GAAWT,EACX,CACD,OAAOtpE,CACR,CAEA,SAAS2hE,GAAUV,EAAsBzlF,EAAqC,CAC7E,IAAI+6B,EAAO/6B,GAAW,GAClBsuF,EAAWvzD,EAAK,UAAY,UAChCuzD,EAAW,UAAYA,EAWvB,QATIrY,EAAM,CACT,oBACA,8CAAgDqY,EAAS,MAAM,CAAC,EAAI,IACpE,GACA,GACA,EACF,EAEKtsF,EAAOyjF,EAAI,UAAU,CAAC,EAAGuH,EAAKhrF,EAAMirF,GAAKxH,EAAI,UAAU,CAAC,EACpDz5F,EAAI,EAAGA,EAAIy5F,EAAI,UAAU,OAAQ,EAAEz5F,EAG1C,GAFAghG,EAAKvH,EAAI,UAAUz5F,CAAC,EAAE,MAAMgW,EAAK,MAAM,EACvCirF,GAAKxH,EAAI,UAAUz5F,CAAC,EACjB,GAACihG,GAAG,MAAQ,CAACA,GAAG,SAAWD,GAAM,YAGpC,CAAAA,EAAKA,EAAG,QAAQ,yCAA0C,SAASv/F,GAAG,CACrE,MAAO,KAAOA,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAI,GAC7C,CAAA,EAAE,QAAQ,mBAAoB,SAASupB,GAAG,CAC1C,MAAO,KAAOA,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAI,GAChD,CAAG,EASD,QANIw3E,EAAKvB,GAAG,QAERwB,EAAOxZ,IAAW,OAAO,SAASuZ,CAAE,EAAIA,EAAG,SAAS,QAAQ,EAAI7Y,GAAI6Y,CAAE,EAGtEE,GAAU,EAAGvY,GAAI,KAAK,IAAI,KAAMsY,EAAK,MAAM,EAAGjT,GAAK,EAC/CmT,GAAM,EAAGA,IAAOxY,GAAG,EAAEwY,IAASnT,GAAGiT,EAAK,WAAWE,EAAG,IAAM,IAAQnT,GAAK,KAAM,EAAEkT,GACvF,IAAIE,GAAKF,IAAWvY,GAAI,EAAI,EAE5BF,EAAI,KAAKqY,CAAQ,EACjBrY,EAAI,KAAK,sBAAwBl7C,EAAK,MAAQ,uBAAyBiyD,CAAE,EACzE/W,EAAI,KAAK,+BAAiC2Y,GAAK,mBAAqB,SAAS,EAC7E3Y,EAAI,KAAK,iBAAmBqX,GAAiBL,GAAID,CAAE,CAAC,EACpD/W,EAAI,KAAK,EAAE,EAEXA,EAAI,KAAK2Y,GAAKnB,GAAuBgB,CAAI,EAAIjB,GAAgBiB,CAAI,CAAC,EAEnE,OAAAxY,EAAI,KAAKqY,EAAW;AAAA,CAAQ,EACrBrY,EAAI,KAAK;AAAA,CAAM,CACvB,CACA,SAAS4Y,GAAQ9zD,EAAgC,CAChD,IAAIvW,EAAsB,CAAA,EAC1B,OAAAghE,EAAShhE,EAAGuW,CAAI,EACTvW,CACR,CAEA,SAASsoE,GAAQrH,EAAsBn2F,EAAiBwtB,EAAuBie,EAA4B,CAC1G,IAAI+zD,EAAS/zD,GAAQA,EAAK,OACtB+zD,GAAQtJ,EAASC,CAAG,EACxB,IAAI1D,EAAO,CAAC+M,GAAUlO,GAAI,KAAK6E,EAAKn2F,CAAI,EACxC,GAAG,CAACyyF,EAAM,CACT,IAAIgN,EAAmBtJ,EAAI,UAAU,CAAC,EACnCn2F,EAAK,MAAM,EAAGy/F,EAAM,MAAM,GAAKA,EAAOA,EAAQz/F,GAE7Cy/F,EAAM,MAAM,EAAE,GAAK,MAAKA,GAAS,KACpCA,GAASA,EAAQz/F,GAAM,QAAQ,KAAK,GAAG,GAExCyyF,EAAQ,CAAC,KAAMb,EAAS5xF,CAAI,EAAG,KAAM,CAAC,EACtCm2F,EAAI,UAAU,KAAK1D,CAAI,EACvB0D,EAAI,UAAU,KAAKsJ,CAAK,EACpBD,GAAQlO,GAAI,MAAM,OAAO6E,CAAG,CAChC,CAED,OAAA1D,EAAK,QAAWjlE,EAChBilE,EAAK,KAAOjlE,EAAUA,EAAQ,OAAS,EACpCie,IACCA,EAAK,QAAOgnD,EAAK,MAAQhnD,EAAK,OAC9BA,EAAK,KAAIgnD,EAAK,GAAKhnD,EAAK,IACxBA,EAAK,KAAIgnD,EAAK,GAAKhnD,EAAK,KAErBgnD,CACR,CAEA,SAASiN,GAAQvJ,EAAsBn2F,EAA6B,CACnEk2F,EAASC,CAAG,EACZ,IAAI1D,EAAOnB,GAAI,KAAK6E,EAAKn2F,CAAI,EAC7B,GAAGyyF,GAAM,QAAQnpE,EAAI,EAAGA,EAAI6sE,EAAI,UAAU,OAAQ,EAAE7sE,EAAG,GAAG6sE,EAAI,UAAU7sE,CAAC,GAAKmpE,EAC7E,OAAA0D,EAAI,UAAU,OAAO7sE,EAAG,CAAC,EACzB6sE,EAAI,UAAU,OAAO7sE,EAAG,CAAC,EAClB,GAER,MAAO,EACR,CAEA,SAASq2E,GAAQxJ,EAAsByJ,EAAqBC,EAAiC,CAC5F3J,EAASC,CAAG,EACZ,IAAI1D,EAAOnB,GAAI,KAAK6E,EAAKyJ,CAAQ,EACjC,GAAGnN,GAAM,QAAQnpE,EAAI,EAAGA,EAAI6sE,EAAI,UAAU,OAAQ,EAAE7sE,EAAG,GAAG6sE,EAAI,UAAU7sE,CAAC,GAAKmpE,EAC7E,OAAA0D,EAAI,UAAU7sE,CAAC,EAAE,KAAOsoE,EAASiO,CAAQ,EACzC1J,EAAI,UAAU7sE,CAAC,EAAIu2E,EACZ,GAER,MAAO,EACR,CAEA,SAASC,GAAO3J,EAA+B,CAAEG,EAAYH,EAAK,EAAI,CAAI,CAE1E,OAAA5E,EAAQ,KAAOmG,EACfnG,EAAQ,KAAO3vC,EACf2vC,EAAQ,MAAQ1P,EAChB0P,EAAQ,MAAQwG,GAChBxG,EAAQ,UAAYuG,GACpBvG,EAAQ,MAAQ,CACf,QAASgO,GACT,QAAS/B,GACT,QAASkC,GACT,QAASC,GACT,OAAQG,GACR,UAAWC,GACX,WAAYC,GACZ,UAAW7N,GACX,QAAS5L,GACT,SAAU0R,EACV,YAAaQ,EACb,YAAaF,GACb,OAAQf,EACT,EAEOjG,CACP,IAOA,SAAS0O,GAAQnuF,EAAM,CACtB,OAAG,OAAOA,GAAS,SAAiBq0E,GAAKr0E,CAAI,EAC1C,MAAM,QAAQA,CAAI,EAAUw0E,GAAIx0E,CAAI,EAChCA,CACR,CAEA,SAASouF,GAASvB,EAAkBtxD,EAAiB04C,EAAiB,CAGrE,GAAG,OAAO,KAAS,IAAa,CAE/B,GAAGA,GAAO,OAAO14C,GAAW,SAAU,OAAO04C,EAAG,CAC/C,IAAK,OAAQ14C,EAAU,IAAI,YAAY04C,CAAG,EAAE,OAAO14C,CAAO,EAAG,MAC7D,IAAK,SAAUA,EAAU84C,GAAK94C,CAAO,EAAG,MAExC,QAAS,MAAM,IAAI,MAAM,wBAA0B04C,CAAG,CACtD,CACD,OAAO,KAAK,cAAc4Y,EAAOtxD,CAAO,CACxC,CACD,IAAIv7B,EAAQi0E,GAAO,OAAUoa,GAAU9yD,CAAO,EAAIA,EAElD,GAAG,OAAO,YAAgB,IAAa,OAAO,YAAYv7B,EAAM6sF,CAAK,EACrE,GAAG,OAAO,KAAS,IAAa,CAC/B,IAAIzM,EAAO,IAAI,KAAK,CAAC+N,GAAQnuF,CAAI,CAAC,EAAG,CAAC,KAAK,0BAA0B,CAAC,EAEtE,GAAG,OAAO,UAAc,KAAe,UAAU,WAAY,OAAO,UAAU,WAAWogF,EAAMyM,CAAK,EAEpG,GAAG,OAAO,OAAW,IAAa,OAAO,OAAOzM,EAAMyM,CAAK,EAC3D,GAAG,OAAO,IAAQ,KAAe,OAAO,SAAa,KAAe,SAAS,eAAiB,IAAI,gBAAiB,CAClH,IAAIr+D,EAAM,IAAI,gBAAgB4xD,CAAI,EAElC,GAAG,OAAO,QAAW,UAAY,OAAQ,OAAO,WAAW,CAAA,GAAI,UAAY,WAC1E,OAAG,IAAI,iBAAmB,OAAO,WAAe,KAAa,WAAW,UAAW,CAAE,IAAI,gBAAgB5xD,CAAG,CAAI,EAAE,GAAK,EAChH,OAAO,UAAU,SAAS,CAAE,IAAKA,EAAK,SAAUq+D,EAAO,OAAQ,EAAI,CAAC,EAE5E,IAAI,EAAI,SAAS,cAAc,GAAG,EAClC,GAAG,EAAE,UAAY,KAEhB,SAAE,SAAWA,EAAO,EAAE,KAAOr+D,EAAK,SAAS,KAAK,YAAY,CAAC,EAAG,EAAE,MAAK,EACL,SAAS,KAAK,YAAY,CAAC,EAC1F,IAAI,iBAAmB,OAAO,WAAe,KAAa,WAAW,UAAW,CAAE,IAAI,gBAAgBA,CAAG,CAAI,EAAE,GAAK,EAChHA,CAER,CACD,CAED,GAAG,OAAO,EAAM,KAAe,OAAO,KAAS,KAAe,OAAO,OAAW,IAAa,GAAI,CAEhG,IAAIqmD,EAAM,KAAKgY,CAAK,EAAG,OAAAhY,EAAI,KAAK,GAAG,EAAGA,EAAI,SAAW,SAClD,MAAM,QAAQt5C,CAAO,IAAGA,EAAUg5C,GAAIh5C,CAAO,GAChDs5C,EAAI,MAAMt5C,CAAO,EAAGs5C,EAAI,MAAO,EAASt5C,CACxC,OAAOte,EAAG,CAAE,GAAG,CAACA,EAAE,SAAW,CAACA,EAAE,QAAQ,MAAM,UAAU,EAAG,MAAMA,CAAI,CACtE,MAAM,IAAI,MAAM,oBAAsB4vE,CAAK,CAC5C,CAeA,SAAShsF,GAAKuiB,EAA0B,CAEvC,QADIkrE,EAAK,OAAO,KAAKlrE,CAAC,EAAGmrE,EAAK,GACtB3jG,EAAI,EAAGA,EAAI0jG,EAAG,OAAQ,EAAE1jG,EAAM,OAAO,UAAU,eAAe,KAAKw4B,EAAGkrE,EAAG1jG,CAAC,CAAC,GAAG2jG,EAAG,KAAKD,EAAG1jG,CAAC,CAAC,EACnG,OAAO2jG,CACR,CAEA,SAASC,GAAUxhG,EAAa1C,EAA8B,CAE7D,QADI84B,EAAK,CAAA,EAAaqrE,EAAI5tF,GAAK7T,CAAG,EAC1B,EAAI,EAAG,IAAMyhG,EAAE,OAAQ,EAAE,EAAMrrE,EAAEp2B,EAAIyhG,EAAE,CAAC,CAAC,EAAEnkG,CAAG,CAAC,GAAK,OAAM84B,EAAEp2B,EAAIyhG,EAAE,CAAC,CAAC,EAAEnkG,CAAG,CAAC,EAAImkG,EAAE,CAAC,GACzF,OAAOrrE,CACR,CAEA,SAASsrE,GAAM1hG,EAA2B,CAEzC,QADIo2B,EAAK,CAAA,EAAaqrE,EAAI5tF,GAAK7T,CAAG,EAC1BpC,EAAI,EAAGA,IAAM6jG,EAAE,OAAQ,EAAE7jG,EAAGw4B,EAAEp2B,EAAIyhG,EAAE7jG,CAAC,CAAC,CAAC,EAAI6jG,EAAE7jG,CAAC,EACtD,OAAOw4B,CACR,CAEA,SAASurE,GAAU3hG,EAA8B,CAEhD,QADIo2B,EAAK,CAAA,EAAaqrE,EAAI5tF,GAAK7T,CAAG,EAC1BpC,EAAI,EAAGA,IAAM6jG,EAAE,OAAQ,EAAE7jG,EAAGw4B,EAAEp2B,EAAIyhG,EAAE7jG,CAAC,CAAC,CAAC,EAAI,SAAS6jG,EAAE7jG,CAAC,EAAE,EAAE,EACnE,OAAOw4B,CACR,CAEA,SAASwrE,GAAU5hG,EAA8B,CAEhD,QADIo2B,EAAsB,CAAA,EAAaqrE,EAAI5tF,GAAK7T,CAAG,EAC3CpC,EAAI,EAAGA,IAAM6jG,EAAE,OAAQ,EAAE7jG,EAC7Bw4B,EAAEp2B,EAAIyhG,EAAE7jG,CAAC,CAAC,CAAC,GAAK,OAAMw4B,EAAEp2B,EAAIyhG,EAAE7jG,CAAC,CAAC,CAAC,EAAI,CAAA,GACxCw4B,EAAEp2B,EAAIyhG,EAAE7jG,CAAC,CAAC,CAAC,EAAE,KAAK6jG,EAAE7jG,CAAC,CAAC,EAEvB,OAAOw4B,CACR,CAEA,IAAIyrE,GAAwB,IAAI,KAAK,KAAM,GAAI,GAAI,EAAG,EAAG,CAAC,EAC1D,SAASC,GAAQv/F,EAAYkoF,EAAkC,CAC9D,IAAIC,EAAqBnoF,EAAE,UAEvBw/F,EAAwBF,GAAS,QAAO,GAAmBt/F,EAAE,kBAAiB,EAAkBs/F,GAAS,kBAAmB,GAAI,IACpI,OAAQnX,EAAQqX,IAAa,GAAK,GAAK,GAAK,IAC7C,CACA,IAAIC,GAAuB,IAAI,KAC3BD,GAAwBF,GAAS,QAAO,GAAmBG,GAAQ,kBAAiB,EAAkBH,GAAS,kBAAmB,GAAI,IACtII,GAAyBD,GAAQ,oBACrC,SAASE,GAAQ3/F,EAAuB,CACvC,IAAIslF,EAAM,IAAI,KACd,OAAAA,EAAI,QAAQtlF,EAAI,GAAK,GAAK,GAAK,IAAOw/F,EAAQ,EAC1Cla,EAAI,kBAAmB,IAAKoa,IAC/Bpa,EAAI,QAAQA,EAAI,QAAS,GAAIA,EAAI,kBAAmB,EAAGoa,IAAa,GAAK,EAEnEpa,CACR,CA6BA,IAAIsa,GAA8B,IAAI,KAAK,0BAA0B,EACjEC,GAA4B,MAAmBD,GAAe,YAAW,CAAE,EAAiB,IAAI,KAAK,SAAS,EAAIA,GAClHE,GAAuBD,GAAa,YAAa,GAAI,KAEzD,SAASE,GAAUzlG,EAAqB0lG,EAA8B,CACrE,IAAIzwD,EAAI,IAAI,KAAKj1C,CAAG,EACpB,GAAGwlG,GAEF,OAAGE,EAAU,EAAGzwD,EAAE,QAAQA,EAAE,QAAS,EAAGA,EAAE,kBAAiB,EAAK,GAAK,GAAI,EACjEywD,EAAU,GAAGzwD,EAAE,QAAQA,EAAE,QAAS,EAAGA,EAAE,kBAAiB,EAAK,GAAK,GAAI,EACvEA,EAER,GAAGj1C,aAAe,KAAM,OAAOA,EAC/B,GAAGulG,GAAa,YAAW,GAAM,MAAQ,CAAC,MAAMtwD,EAAE,YAAW,CAAE,EAAG,CACjE,IAAIp7B,EAAIo7B,EAAE,cACV,OAAGj1C,EAAI,QAAQ,GAAK6Z,CAAC,EAAI,IACzBo7B,EAAE,YAAYA,EAAE,YAAa,EAAG,GAAG,EAAUA,CAC7C,CACD,IAAI3xC,EAAItD,EAAI,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,IAAI,IAAI,GAAG,EACnDgrF,EAAM,IAAI,KAAK,CAAC1nF,EAAE,CAAC,EAAG,CAACA,EAAE,CAAC,EAAI,EAAG,CAACA,EAAE,CAAC,EAAI,CAACA,EAAE,CAAC,GAAG,EAAK,CAACA,EAAE,CAAC,GAAG,EAAK,CAACA,EAAE,CAAC,GAAG,CAAC,EAC7E,OAAGtD,EAAI,QAAQ,GAAG,EAAI,KAAIgrF,EAAM,IAAI,KAAKA,EAAI,QAAS,EAAGA,EAAI,kBAAiB,EAAK,GAAK,GAAI,GACrFA,CACR,CAEA,SAAS2a,GAAO9kG,EAAuB+kG,EAAoB,CAC1D,GAAG5b,IAAW,OAAO,SAASnpF,CAAG,EAKhC,OAAOA,EAAI,SAAS,QAAQ,EAG7B,GAAG,OAAO,YAAgB,IAAa,GAAI,CAK1C,IAAIy8F,EAAM,CACT,IAAU,IAAQ,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAAQ,EAAU,IAChE,EAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAAQ,IAAU,IAChE,IAAU,IAAQ,IAAU,IAAQ,EAAU,IAAQ,IAAU,IAChE,EAAU,IAAQ,EAAU,IAAQ,EAAU,GACjD,EACE,OAAG,MAAM,QAAQz8F,CAAG,IAAGA,EAAM,IAAI,WAAWA,CAAG,GACxC,IAAI,YAAY,QAAQ,EAAE,OAAOA,CAAG,EAAE,QAAQ,iCAAkC,SAAS2B,EAAG,CAAE,OAAO86F,EAAI96F,CAAC,GAAKA,CAAE,CAAE,CAC5H,MAAY,CAAE,CAGb,QADI+2B,EAAI,CAAA,EACA,EAAI,EAAG,GAAK14B,EAAI,OAAQ,EAAE,EAAG04B,EAAE,KAAK,OAAO,aAAa14B,EAAI,CAAC,CAAC,CAAC,EACvE,OAAO04B,EAAE,KAAK,EAAE,CACjB,CAEA,SAASssE,GAAItsE,EAAmB,CAC/B,GAAG,OAAO,KAAQ,KAAe,CAAC,MAAM,QAAQA,CAAC,EAAG,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAC,CAAC,EACvF,GAAG,OAAOA,GAAK,UAAYA,GAAK,KAAM,OAAOA,EAC7C,GAAGA,aAAa,KAAM,OAAO,IAAI,KAAKA,EAAE,QAAO,CAAE,EACjD,IAAIyxD,EAAM,CAAA,EACV,QAAQp2C,KAAKrb,EAAM,OAAO,UAAU,eAAe,KAAKA,EAAGqb,CAAC,IAAGo2C,EAAIp2C,CAAC,EAAIixD,GAAItsE,EAAEqb,CAAC,CAAC,GAChF,OAAOo2C,CACR,CAEA,SAASQ,GAAKhpF,EAAayD,EAAyB,CAAc,QAARszB,EAAI,GAAUA,EAAE,OAAStzB,GAAGszB,GAAG/2B,EAAG,OAAO+2B,CAAI,CAGvG,SAASusE,GAASjsF,EAAyB,CAC1C,IAAInU,EAAe,OAAOmU,CAAC,EAC3B,GAAG,CAAC,MAAMnU,CAAC,EAAG,OAAO,SAASA,CAAC,EAAIA,EAAI,IACvC,GAAG,CAAC,KAAK,KAAKmU,CAAC,EAAG,OAAOnU,EACzB,IAAIqgG,EAAK,EACLvX,EAAK30E,EAAE,QAAQ,iBAAiB,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAQ,UAAW,CAAE,OAAAksF,GAAM,IAAY,EAAG,CAAC,EAGlH,MAFG,CAAC,MAAMrgG,EAAI,OAAO8oF,CAAE,CAAC,IACxBA,EAAKA,EAAG,QAAQ,aAAa,SAASe,EAAIC,EAAI,CAAE,OAAAuW,EAAK,CAACA,EAAWvW,CAAG,CAAC,EAClE,CAAC,MAAM9pF,EAAI,OAAO8oF,CAAE,CAAC,GAAU9oF,EAAIqgG,EAC/BrgG,CACR,CACA,IAAIsgG,GAAe,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAU,EAC5I,SAASC,GAAUpsF,EAAuB,CACzC,IAAI0f,EAAI,IAAI,KAAK1f,CAAC,EAAGvW,EAAI,IAAI,KAAK,GAAG,EACjC+2C,EAAI9gB,EAAE,QAAO,EAAI1Y,EAAI0Y,EAAE,WAAY0b,EAAI1b,EAAE,QAAO,EACpD,GAAG,MAAM0b,CAAC,EAAG,OAAO3xC,EACpB,IAAI4iG,EAAQrsF,EAAE,cACd,GAAGqsF,EAAM,MAAM,iDAAiD,GAE/D,GADAA,EAAQA,EAAM,QAAQ,UAAU,EAAE,EAAE,QAAQ,6BAA6B,EAAE,EACxEA,EAAM,OAAS,GAAKF,GAAa,QAAQE,CAAK,GAAK,GAAI,OAAO5iG,UACxD4iG,EAAM,MAAM,OAAO,EAAG,OAAO5iG,EACvC,OAAG+2C,EAAI,GAAKA,EAAI,KAAa/2C,GACzBud,EAAI,GAAKo0B,EAAI,IAAMoF,GAAK,IAAY9gB,EACrC1f,EAAE,MAAM,eAAe,EAAUvW,EAC7Bi2B,CACR,CA8EA,SAAS4sE,GAAaC,EAAK5rF,EAAMqX,EAAS,CACzC,GAAGu0E,EAAI,UAAW,CACjB,GAAG,OAAOv0E,GAAW,SAAU,CAC9B,IAAInuB,EACJ,OAAGsmF,GAAStmF,EAAMumF,GAAYp4D,CAAO,EAGhCnuB,EAAMqnF,GAAWl5D,CAAO,EACtB8jE,GAAI,MAAM,QAAQyQ,EAAK5rF,EAAM9W,CAAG,CACvC,CACDiyF,GAAI,MAAM,QAAQyQ,EAAK5rF,EAAMqX,CAAO,CACpC,MACIu0E,EAAI,KAAK5rF,EAAMqX,CAAO,CAC5B,CAEA,SAASw0E,IAAU,CAAE,OAAO1Q,GAAI,MAAM,QAAS,CAAG,CAuBlD,IAAI2Q,GAAa;AAAA,EAoCbC,GAAY,CACf,SAAU,IACV,SAAU,IACV,OAAQ,IACR,OAAQ,IACR,QAAS,GACV,EACIC,GAAyB3B,GAAM0B,EAAS,EAexCE,GAAS,WAAYC,GAAW,gCACpC,SAASC,GAAUj1E,EAA2B,CAC7C,IAAI7X,EAAI6X,EAAO,GACf,OAAO7X,EAAE,QAAQ4sF,GAAU,SAASpsD,EAAG,CAAE,OAAOmsD,GAAUnsD,CAAC,CAAE,CAAE,EAAE,QAAQqsD,GAAS,SAAS7sF,EAAG,CAAE,MAAO,MAAQ,MAAMA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAAI,GAAI,CAAC,CACrK,CACA,SAAS+sF,GAAal1E,EAA2B,CAAE,OAAOi1E,GAAUj1E,CAAI,EAAE,QAAQ,KAAK,SAAS,CAAI,CAEpG,IAAIm1E,GAAe,mBACnB,SAASC,GAAWp1E,EAA2B,CAC9C,IAAI7X,EAAI6X,EAAO,GACf,OAAO7X,EAAE,QAAQ4sF,GAAU,SAASpsD,EAAG,CAAE,OAAOmsD,GAAUnsD,CAAC,CAAE,CAAE,EAAE,QAAQ,MAAO,OAAO,EAAE,QAAQwsD,GAAa,SAAShtF,EAAG,CAAE,MAAO,OAAS,MAAMA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAAI,GAAI,CAAE,CACnM,CAEA,SAASktF,GAAWr1E,EAA2B,CAC9C,IAAI7X,EAAI6X,EAAO,GACf,OAAO7X,EAAE,QAAQ4sF,GAAU,SAASpsD,EAAG,CAAE,OAAOmsD,GAAUnsD,CAAC,CAAE,CAAE,EAAE,QAAQwsD,GAAa,SAAShtF,EAAG,CAAE,MAAO,MAASA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAG,YAAW,EAAK,GAAM,CAAA,CACzK,CAQA,SAASmtF,GAAchnG,EAA2B,CAAE,OAAOA,EAAI,QAAQ,iBAAiB,OAAQ,CAAI,CAEpG,SAASinG,GAAaplG,EAA2B,CAChD,OAAOA,EAAK,CACX,IAAK,GAAG,IAAK,GAAM,IAAK,IAAK,IAAK,OAAQ,IAAK,OAAQ,MAAO,GAE9D,QAAS,MAAO,EAChB,CACF,CAEA,SAASqlG,GAAUhsC,EAA4B,CAE9C,QADI8vB,EAAM,GAAIjqF,EAAI,EAAGyB,EAAI,EAAGyyC,EAAI,EAAG7hB,EAAI,EAAGohB,EAAI,EAAGpM,EAAI,EAC9CrnC,EAAIm6D,EAAK,QAAQ,CAEvB,GADA14D,EAAI04D,EAAK,WAAWn6D,GAAG,EACnByB,EAAI,IAAK,CAAEwoF,GAAO,OAAO,aAAaxoF,CAAC,EAAG,QAAW,CAEzD,GADAyyC,EAAIimB,EAAK,WAAWn6D,GAAG,EACnByB,EAAE,KAAOA,EAAE,IAAK,CAAEgyC,GAAMhyC,EAAI,KAAO,EAAIgyC,GAAMS,EAAI,GAAK+1C,GAAO,OAAO,aAAax2C,CAAC,EAAG,QAAW,CAEpG,GADAphB,EAAI8nC,EAAK,WAAWn6D,GAAG,EACnByB,EAAI,IAAK,CAAEwoF,GAAO,OAAO,cAAexoF,EAAI,KAAO,IAAQyyC,EAAI,KAAO,EAAM7hB,EAAI,EAAG,EAAG,QAAW,CACrGohB,EAAI0mB,EAAK,WAAWn6D,GAAG,EACvBqnC,IAAO5lC,EAAI,IAAM,IAAQyyC,EAAI,KAAO,IAAQ7hB,EAAI,KAAO,EAAMohB,EAAI,IAAK,MACtEw2C,GAAO,OAAO,aAAa,OAAW5iD,IAAI,GAAI,KAAK,EACnD4iD,GAAO,OAAO,aAAa,OAAU5iD,EAAE,KAAK,CAC5C,CACD,OAAO4iD,CACR,CAEA,SAASmc,GAAUhxF,EAAM,CACxB,IAAI60E,EAAMX,GAAY,EAAEl0E,EAAK,MAAM,EAAGiyB,EAAGrnC,EAAG4sB,EAAI,EAAGinB,EAAI,EAAGwyD,EAAG,EAAG5kG,EAChE,IAAIzB,EAAI,EAAGA,EAAIoV,EAAK,OAAQpV,GAAG4sB,EAC9BA,EAAI,GACAnrB,EAAE2T,EAAK,WAAWpV,CAAC,GAAK,IAAKqnC,EAAI5lC,EAC7BA,EAAI,KAAO4lC,GAAK5lC,EAAE,IAAI,IAAI2T,EAAK,WAAWpV,EAAE,CAAC,EAAE,IAAK4sB,EAAE,GACtDnrB,EAAI,KAAO4lC,GAAG5lC,EAAE,IAAI,MAAM2T,EAAK,WAAWpV,EAAE,CAAC,EAAE,IAAI,IAAIoV,EAAK,WAAWpV,EAAE,CAAC,EAAE,IAAK4sB,EAAE,IACpFA,EAAI,EACVya,GAAK5lC,EAAI,GAAG,QAAQ2T,EAAK,WAAWpV,EAAE,CAAC,EAAE,IAAI,MAAMoV,EAAK,WAAWpV,EAAE,CAAC,EAAE,IAAI,IAAIoV,EAAK,WAAWpV,EAAE,CAAC,EAAE,IACrGqnC,GAAK,MAAOg/D,EAAK,OAAWh/D,IAAI,GAAI,MAAOA,EAAI,OAAUA,EAAE,OAEzDg/D,IAAO,IAAKpc,EAAIp2C,GAAG,EAAIwyD,EAAG,IAAKpc,EAAIp2C,GAAG,EAAIwyD,IAAK,EAAGA,EAAK,GAC1Dpc,EAAIp2C,GAAG,EAAIxM,EAAE,IAAK4iD,EAAIp2C,GAAG,EAAIxM,IAAI,EAElC,OAAO4iD,EAAI,MAAM,EAAEp2C,CAAC,EAAE,SAAS,MAAM,CACtC,CAEA,SAASyyD,GAAUlxF,EAAM,CAAE,OAAO8zE,GAAY9zE,EAAM,QAAQ,EAAE,SAAS,MAAM,CAAI,CAEjF,IAAImxF,GAAa,qBACbC,GAAWvd,KAAyBqd,GAAUC,EAAU,GAAkBJ,GAAUI,EAAU,GAAKD,IAA0BF,GAAUG,EAAU,GAAkBJ,GAAUI,EAAU,GAAKH,KAAcD,GAE1M1C,GAA2Bxa,GAAU,SAAS7zE,EAAM,CAAE,OAAO8zE,GAAY9zE,EAAM,MAAM,EAAE,SAAS,QAAQ,CAAI,EAAG,SAAS+kD,EAA4B,CAEvJ,QADI8vB,EAAwB,CAAE,EAAEjqF,EAAI,EAAGyB,EAAI,EAAGyyC,EAAI,EAC5Cl0C,EAAIm6D,EAAK,QAEd,OADA14D,EAAI04D,EAAK,WAAWn6D,GAAG,EAChB,GAAI,CACV,KAAKyB,EAAI,IAAKwoF,EAAI,KAAK,OAAO,aAAaxoF,CAAC,CAAC,EAAG,MAChD,KAAKA,EAAI,KACRwoF,EAAI,KAAK,OAAO,aAAa,KAAOxoF,GAAK,EAAE,CAAC,EAC5CwoF,EAAI,KAAK,OAAO,aAAa,KAAOxoF,EAAI,GAAG,CAAC,EAC5C,MACD,KAAKA,GAAK,OAASA,EAAI,OACtBA,GAAK,MAAOyyC,EAAIimB,EAAK,WAAWn6D,GAAG,EAAI,OAASyB,GAAG,IACnDwoF,EAAI,KAAK,OAAO,aAAa,KAAQ/1C,GAAI,GAAM,EAAE,CAAC,EAClD+1C,EAAI,KAAK,OAAO,aAAa,KAAQ/1C,GAAI,GAAM,GAAG,CAAC,EACnD+1C,EAAI,KAAK,OAAO,aAAa,KAAQ/1C,GAAK,EAAK,GAAG,CAAC,EACnD+1C,EAAI,KAAK,OAAO,aAAa,KAAO/1C,EAAI,GAAG,CAAC,EAC5C,MACD,QACC+1C,EAAI,KAAK,OAAO,aAAa,KAAOxoF,GAAK,GAAG,CAAC,EAC7CwoF,EAAI,KAAK,OAAO,aAAa,KAAQxoF,GAAK,EAAK,GAAG,CAAC,EACnDwoF,EAAI,KAAK,OAAO,aAAa,KAAOxoF,EAAI,GAAG,CAAC,CAC7C,CAEF,OAAOwoF,EAAI,KAAK,EAAE,CACnB,EAYIwc,GAAmD,UAAW,CACjE,IAAIC,EAAuC,CAC1C,CAAC,OAAQ,GAAG,EAAG,CAAC,SAAU,GAAG,EAC7B,CAAC,OAAQ,GAAG,EAAG,CAAC,OAAQ,GAAG,EAAG,CAAC,KAAQ,GAAG,EAAG,CAAC,KAAQ,GAAG,EAAG,CAAC,MAAQ,GAAG,CAC1E,EAAG,IAAI,SAASrtD,EAAwB,CAAE,MAAO,CAAC,IAAI,OAAO,IAAMA,EAAE,CAAC,EAAI,IAAK,IAAI,EAAGA,EAAE,CAAC,CAAC,CAAE,CAAE,EAC7F,OAAO,SAAoBp6C,EAA2B,CAcrD,QAbIu5B,EAAIv5B,EAEL,QAAQ,cAAe,EAAE,EAEzB,QAAQ,cAAc,EAAE,EAExB,QAAQ,QAAQ,GAAG,EAAE,QAAQ,QAAQ,GAAG,EAExC,QAAQ,cAAe,GAAG,EAE1B,QAAQ,uBAAuB;AAAA,CAAI,EAEnC,QAAQ,WAAW,EAAE,EAChB,EAAI,EAAG,EAAIynG,EAAS,OAAQ,EAAE,EAAGluE,EAAIA,EAAE,QAAQkuE,EAAS,CAAC,EAAE,CAAC,EAAGA,EAAS,CAAC,EAAE,CAAC,CAAC,EACrF,OAAOluE,CACT,CACA,IAwBImuE,GAAU,eACd,SAASC,GAASnzD,EAAa/hB,EAAyB,CAAE,MAAO,IAAM+hB,GAAK/hB,EAAE,MAAMi1E,EAAO,EAAE,wBAA0B,IAAM,IAAMj1E,EAAI,KAAO+hB,EAAI,GAAM,CAExJ,SAASozD,GAAWtnF,EAAc,CAAE,OAAOtJ,GAAKsJ,CAAC,EAAE,IAAI,SAASs0B,EAAG,CAAE,MAAO,IAAMA,EAAI,KAAOt0B,EAAEs0B,CAAC,EAAI,GAAI,CAAC,EAAE,KAAK,EAAE,CAAI,CACtH,SAASizD,GAAUrzD,EAAa/hB,EAAcnS,EAAG,CAAE,MAAO,IAAMk0B,GAAMl0B,GAAK,KAAQsnF,GAAWtnF,CAAC,EAAI,KAAQmS,GAAK,MAASA,EAAE,MAAMi1E,EAAO,EAAE,wBAA0B,IAAM,IAAMj1E,EAAI,KAAO+hB,EAAI,KAAO,GAAI,CAE1M,SAASszD,GAAa7yD,EAAY,EAA2B,CAAE,GAAI,CAAE,OAAOA,EAAE,cAAc,QAAQ,QAAQ,EAAE,CAAI,OAAO7hB,EAAG,CAAE,GAAG,EAAG,MAAMA,CAAE,CAAG,MAAO,EAAK,CAE3J,SAAS20E,GAASluF,EAAGmuF,EAA8B,CAClD,OAAO,OAAOnuF,EAAC,CACd,IAAK,SACJ,IAAI0f,EAAIsuE,GAAU,YAAalB,GAAU9sF,CAAC,CAAC,EAClC,OAAA0f,EAAIA,EAAE,QAAQ,UAAW,SAAS,EACpCA,EACR,IAAK,SAAU,OAAOsuE,IAAWhuF,EAAE,IAAIA,EAAE,QAAQ,QAAS8sF,GAAU,OAAO9sF,CAAC,CAAC,CAAC,EAC9E,IAAK,UAAW,OAAOguF,GAAU,UAAUhuF,EAAE,OAAO,OAAO,CAC3D,CACD,GAAGA,aAAa,KAAM,OAAOguF,GAAU,cAAeC,GAAajuF,CAAC,CAAC,EACrE,MAAM,IAAI,MAAM,uBAAyBA,CAAC,CAC3C,CAaA,IAAIouF,GAAS,CACZ,WAAY,0EACZ,WAAY,0EACZ,UAAW,4EACX,GAAI,+DACJ,KAAM,+DACN,MAAO,0EACP,GAAM,mCACN,QAAW,4BACX,SAAY,+BACZ,GAAM,0DACN,EAAK,sEACL,IAAO,yEACP,GAAM,uEACN,IAAO,4CACP,IAAO,kCACR,EAEIC,GAAa,CAChB,4DACA,gDACA,sDACA,kDACD,EAEIC,GAAU,CACb,EAAQ,0CACR,EAAQ,yCACR,GAAQ,+CACR,GAAQ,4CACR,GAAQ,yBACR,EAAQ,gCACR,KAAQ,iCACT,EACA,SAASC,GAAezjG,EAAuBq1B,EAA2B,CAIzE,QAHIngB,EAAI,EAAI,GAAKlV,EAAEq1B,EAAM,CAAC,IAAM,GAC5B5G,IAAMzuB,EAAEq1B,EAAM,CAAC,EAAI,MAAS,IAAOr1B,EAAEq1B,EAAM,CAAC,IAAM,EAAK,IACvDnZ,EAAKlc,EAAEq1B,EAAI,CAAC,EAAE,GACVj5B,EAAI,EAAGA,GAAK,EAAG,EAAEA,EAAG8f,EAAIA,EAAI,IAAMlc,EAAEq1B,EAAMj5B,CAAC,EACnD,OAAGqyB,GAAK,KAAcvS,GAAK,EAAKhH,EAAI,MAAY,KAC7CuZ,GAAK,EAAGA,EAAI,OACRA,GAAK,KAAMvS,GAAK,KAAK,IAAI,EAAE,EAAE,GAC7BhH,EAAI,KAAK,IAAI,EAAGuZ,EAAI,EAAE,EAAIvS,EAClC,CAEA,SAASwnF,GAAgB1jG,EAAuBe,EAAcs0B,EAAgB,CAC7E,IAAIsuE,GAAS5iG,EAAI,GAAO,EAAEA,GAAK,KAAc,EAAI,IAAM,EAAI0tB,EAAI,EAAGvS,EAAI,EAClE0nF,EAAKD,EAAM,CAAC5iG,EAAKA,EACjB,SAAS6iG,CAAE,EACPA,GAAM,EAAGn1E,EAAIvS,EAAI,GAExBuS,EAAI,KAAK,MAAM,KAAK,IAAIm1E,CAAE,EAAI,KAAK,GAAG,EACtC1nF,EAAI0nF,EAAK,KAAK,IAAI,EAAG,GAAKn1E,CAAC,EACvBA,GAAK,QAAW,CAAC,SAASvS,CAAC,GAAMA,EAAI,KAAK,IAAI,EAAE,EAAE,GAAOuS,EAAI,OAC1DvS,GAAK,KAAK,IAAI,EAAE,EAAE,EAAGuS,GAAG,QANZA,EAAI,KAAOvS,EAAI,MAAMnb,CAAC,EAAI,MAAS,GAQvD,QAAQ3E,EAAI,EAAGA,GAAK,EAAG,EAAEA,EAAG8f,GAAG,IAAKlc,EAAEq1B,EAAMj5B,CAAC,EAAI8f,EAAI,IACrDlc,EAAEq1B,EAAM,CAAC,GAAM5G,EAAI,KAAS,EAAMvS,EAAI,GACtClc,EAAEq1B,EAAM,CAAC,EAAK5G,GAAK,EAAKk1E,CACzB,CAEA,IAAIE,GAAc,SAAS3d,EAA+C,CAAoB,QAAdzwC,EAAE,CAAE,EAAChS,EAAE,MAAernC,EAAE,EAAEA,EAAE8pF,EAAK,CAAC,EAAE,OAAO,EAAE9pF,EAAG,GAAG8pF,EAAK,CAAC,EAAE9pF,CAAC,EAAG,QAAQ4sB,EAAE,EAAEu9D,EAAEL,EAAK,CAAC,EAAE9pF,CAAC,EAAE,OAAO4sB,EAAEu9D,EAAEv9D,GAAGya,EAAGgS,EAAE,KAAK,MAAMA,EAAGywC,EAAK,CAAC,EAAE9pF,CAAC,EAAE,MAAM4sB,EAAEA,EAAEya,CAAC,CAAC,EAAG,OAAOgS,CAAE,EACxOy/C,GAAa7P,GAAU,SAASa,EAAM,CAAE,OAAQA,EAAK,CAAC,EAAE,OAAS,GAAK,OAAO,SAASA,EAAK,CAAC,EAAE,CAAC,CAAC,EAAK,OAAO,OAAOA,EAAK,CAAC,EAAE,IAAI,SAASzwC,EAAG,CAAE,OAAO,OAAO,SAASA,CAAC,EAAIA,EAAI6vC,GAAY7vC,CAAC,CAAE,CAAE,CAAC,EAAIouD,GAAY3d,CAAI,CAAE,EAAI2d,GAEzNC,GAAa,SAAS9jG,EAAsBkV,EAAauZ,EAAyB,CAA+B,QAAzBo7D,EAAqB,CAAE,EAAU,EAAE30E,EAAG,EAAEuZ,EAAG,GAAG,EAAGo7D,EAAG,KAAK,OAAO,aAAaka,GAAe/jG,EAAE,CAAC,CAAC,CAAC,EAAG,OAAO6pF,EAAG,KAAK,EAAE,EAAE,QAAQpD,GAAK,EAAE,GAC9N6O,GAAYjQ,GAAU,SAASrlF,EAAsBkV,EAAauZ,EAAyB,CAAE,OAAI,OAAO,SAASzuB,CAAC,EAAoEA,EAAE,SAAS,UAAUkV,EAAEuZ,CAAC,EAAE,QAAQg4D,GAAK,EAAE,EAAnEqd,GAAW9jG,EAAEkV,EAAEuZ,CAAC,CAA2E,EAAKq1E,GAE5PE,GAAa,SAAShkG,EAAsBkV,EAAa5T,EAAyB,CAA+B,QAAzBuoF,EAAqB,CAAE,EAAU,EAAE30E,EAAG,EAAEA,EAAE5T,EAAG,EAAE,EAAGuoF,EAAG,MAAM,IAAM7pF,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,EAAG,OAAO6pF,EAAG,KAAK,EAAE,GACzMoa,GAAY5e,GAAU,SAASrlF,EAAsBkV,EAAa5T,EAAyB,CAAE,OAAO,OAAO,SAAStB,CAAC,EAAiCA,EAAE,SAAS,MAAMkV,EAAEA,EAAE5T,CAAC,EAAI0iG,GAAWhkG,EAAEkV,EAAE5T,CAAC,CAAE,EAAK0iG,GAEvME,GAAU,SAASlkG,EAAsBkV,EAAauZ,EAAc,CAAa,QAAPo7D,EAAG,GAAY,EAAE30E,EAAG,EAAEuZ,EAAG,IAAKo7D,EAAG,KAAK,OAAO,aAAasa,GAAYnkG,EAAE,CAAC,CAAC,CAAC,EAAG,OAAO6pF,EAAG,KAAK,EAAE,CAAE,EAC3Kua,GAAS/e,GAAU,SAAgBrlF,EAAuBkV,EAAcuZ,EAAc,CAAE,OAAQ,OAAO,SAASzuB,CAAC,EAAoCA,EAAE,SAAS,OAAOkV,EAAEuZ,CAAC,EAAIy1E,GAAQlkG,EAAEkV,EAAEuZ,CAAC,CAAE,EAAKy1E,GAElMG,GAAW,SAASrkG,EAAsB5D,EAAc,CAAE,IAAI0uB,EAAM4qE,GAAe11F,EAAE5D,CAAC,EAAG,OAAO0uB,EAAM,EAAIs5E,GAAOpkG,EAAG5D,EAAE,EAAEA,EAAE,EAAE0uB,EAAI,CAAC,EAAI,EAAG,EACxIw5E,GAAUD,GAEVE,GAAW,SAASvkG,EAAsB5D,EAAc,CAAE,IAAI0uB,EAAM4qE,GAAe11F,EAAE5D,CAAC,EAAG,OAAO0uB,EAAM,EAAIs5E,GAAOpkG,EAAG5D,EAAE,EAAEA,EAAE,EAAE0uB,EAAI,CAAC,EAAI,EAAG,EACxI05E,GAAUD,GAEVE,GAAY,SAASzkG,EAAsB5D,EAAc,CAAE,IAAI0uB,EAAM,EAAE4qE,GAAe11F,EAAE5D,CAAC,EAAG,OAAO0uB,EAAM,EAAIs5E,GAAOpkG,EAAG5D,EAAE,EAAEA,EAAE,EAAE0uB,EAAI,CAAC,EAAI,EAAG,EAC3I45E,GAAWD,GAEXE,GAAU,SAAe3kG,EAAsB5D,EAAc,CAAE,IAAI0uB,EAAM4qE,GAAe11F,EAAE5D,CAAC,EAAG,OAAO0uB,EAAM,EAAIwqE,GAAUt1F,EAAG5D,EAAE,EAAEA,EAAE,EAAE0uB,CAAG,EAAI,EAAG,EAC9I85E,GAASD,GAETE,GAAW,SAAS7kG,EAAsB5D,EAAc,CAAE,IAAI0uB,EAAM4qE,GAAe11F,EAAE5D,CAAC,EAAG,OAAO0uB,EAAM,EAAIs5E,GAAOpkG,EAAG5D,EAAE,EAAEA,EAAE,EAAE0uB,CAAG,EAAI,EAAG,EACtIg6E,GAAUD,GAEVE,GAAY,SAAS/kG,EAAuBq1B,EAAgB,CAAE,OAAOouE,GAAezjG,EAAGq1B,CAAG,CAAE,EAC5F2vE,GAAWD,GAEXE,GAAS,SAAkBllG,EAAG,CAAE,OAAO,MAAM,QAAQA,CAAC,GAAM,OAAO,WAAe,KAAeA,aAAa,UAAY,EAE3HslF,KACFif,GAAU,SAAiBtkG,EAAuB5D,EAAc,CAAE,GAAG,CAAC,OAAO,SAAS4D,CAAC,EAAmC,OAAOqkG,GAASrkG,EAAG5D,CAAC,EAAG,IAAI0uB,EAAM9qB,EAAE,aAAa5D,CAAC,EAAG,OAAO0uB,EAAM,EAAI9qB,EAAE,SAAS,OAAO5D,EAAE,EAAEA,EAAE,EAAE0uB,EAAI,CAAC,EAAI,EAAG,EACrO05E,GAAU,SAAiBxkG,EAAuB5D,EAAc,CAAE,GAAG,CAAC,OAAO,SAAS4D,CAAC,EAAmC,OAAOukG,GAASvkG,EAAG5D,CAAC,EAAG,IAAI0uB,EAAM9qB,EAAE,aAAa5D,CAAC,EAAG,OAAO0uB,EAAM,EAAI9qB,EAAE,SAAS,OAAO5D,EAAE,EAAEA,EAAE,EAAE0uB,EAAI,CAAC,EAAI,EAAG,EACrO45E,GAAW,SAAkB1kG,EAAuB5D,EAAc,CAAE,GAAG,CAAC,OAAO,SAAS4D,CAAC,EAAmC,OAAOykG,GAAUzkG,EAAG5D,CAAC,EAAG,IAAI0uB,EAAM,EAAE9qB,EAAE,aAAa5D,CAAC,EAAG,OAAO4D,EAAE,SAAS,UAAU5D,EAAE,EAAEA,EAAE,EAAE0uB,EAAI,CAAC,CAAE,EAC9N85E,GAAS,SAAgB5kG,EAAuB5D,EAAc,CAAE,GAAG,CAAC,OAAO,SAAS4D,CAAC,EAAmC,OAAO2kG,GAAQ3kG,EAAG5D,CAAC,EAAG,IAAI0uB,EAAM9qB,EAAE,aAAa5D,CAAC,EAAG,OAAO4D,EAAE,SAAS,UAAU5D,EAAE,EAAEA,EAAE,EAAE0uB,CAAG,CAAE,EACpNg6E,GAAU,SAAiB9kG,EAAuB5D,EAAc,CAAE,GAAG,CAAC,OAAO,SAAS4D,CAAC,EAAmC,OAAO6kG,GAAS7kG,EAAG5D,CAAC,EAAG,IAAI0uB,EAAM9qB,EAAE,aAAa5D,CAAC,EAAG,OAAO4D,EAAE,SAAS,OAAO5D,EAAE,EAAEA,EAAE,EAAE0uB,CAAG,CAAE,EACpNk6E,GAAW,SAAiBhlG,EAAuB5D,EAAc,CAAE,OAAG,OAAO,SAAS4D,CAAC,EAAsCA,EAAE,aAAa5D,CAAC,EAAU2oG,GAAU/kG,EAAE5D,CAAC,GACpK6oG,GAAS,SAAkBllG,EAAG,CAAE,OAAO,OAAO,SAASA,CAAC,GAAK,MAAM,QAAQA,CAAC,GAAM,OAAO,WAAe,KAAeA,aAAa,aAerI,IAAIokG,GAAc,SAASnkG,EAAuBq1B,EAA2B,CAAE,OAAOr1B,EAAEq1B,CAAG,GACvF0uE,GAAiB,SAAS/jG,EAAuBq1B,EAA2B,CAAE,OAAQr1B,EAAEq1B,EAAI,CAAC,EAAG,IAAOr1B,EAAEq1B,CAAG,CAAE,EAC9G6vE,GAAgB,SAASllG,EAAuBq1B,EAA2B,CAAE,IAAIjO,EAAKpnB,EAAEq1B,EAAI,CAAC,EAAG,IAAOr1B,EAAEq1B,CAAG,EAAG,OAAQjO,EAAI,MAAUA,GAAM,MAASA,EAAI,GAAK,EAAI,EACjKsuE,GAAiB,SAAS11F,EAAuBq1B,EAA2B,CAAE,OAAOr1B,EAAEq1B,EAAI,CAAC,GAAG,GAAG,KAAKr1B,EAAEq1B,EAAI,CAAC,GAAG,KAAKr1B,EAAEq1B,EAAI,CAAC,GAAG,GAAGr1B,EAAEq1B,CAAG,CAAE,EAC1Io/D,GAAgB,SAASz0F,EAAuBq1B,EAA2B,CAAE,OAAQr1B,EAAEq1B,EAAI,CAAC,GAAG,GAAKr1B,EAAEq1B,EAAI,CAAC,GAAG,GAAKr1B,EAAEq1B,EAAI,CAAC,GAAG,EAAGr1B,EAAEq1B,CAAG,CAAE,EACvI8vE,GAAgB,SAASnlG,EAAuBq1B,EAA2B,CAAE,OAAQr1B,EAAEq1B,CAAG,GAAG,GAAKr1B,EAAEq1B,EAAI,CAAC,GAAG,GAAKr1B,EAAEq1B,EAAI,CAAC,GAAG,EAAGr1B,EAAEq1B,EAAI,CAAC,CAAE,EAE3I,SAASoqE,GAAUt4F,EAAiB,EAAiC,CACpE,IAAIytB,EAAE,GAAIwwE,EAAsBC,EAAIC,EAAG,CAAE,EAAE7hE,EAAGkqD,EAAIvxF,EAAGmpG,EACrD,OAAO,EAAC,CACP,IAAK,OAEJ,GADAA,EAAM,KAAK,EACRlgB,IAAW,OAAO,SAAS,IAAI,EAAGzwD,EAAI,KAAK,MAAM,KAAK,EAAG,KAAK,EAAE,EAAEztB,CAAI,EAAE,SAAS,SAAS,MACxF,KAAI/K,EAAI,EAAGA,EAAI+K,EAAM,EAAE/K,EAAKw4B,GAAG,OAAO,aAAamvE,GAAe,KAAMwB,CAAG,CAAC,EAAGA,GAAK,EACzFp+F,GAAQ,EACR,MAED,IAAK,OAAQytB,EAAIwvE,GAAO,KAAM,KAAK,EAAG,KAAK,EAAIj9F,CAAI,EAAG,MACtD,IAAK,UAAWA,GAAQ,EAAGytB,EAAI0gE,GAAU,KAAM,KAAK,EAAG,KAAK,EAAInuF,CAAI,EAAG,MAEvE,IAAK,OAEC,OAAOs4F,GAAU,KAAK,KAAMt4F,EAAM,MAAM,EAI9C,IAAK,aAAcytB,EAAI0vE,GAAQ,KAAM,KAAK,CAAC,EAAGn9F,EAAO,EAAIuuF,GAAe,KAAM,KAAK,CAAC,EAAG,MACvF,IAAK,WAAY9gE,EAAI4vE,GAAQ,KAAM,KAAK,CAAC,EAAGr9F,EAAO,EAAIuuF,GAAe,KAAM,KAAK,CAAC,EAAG,MAErF,IAAK,SAAU9gE,EAAI8vE,GAAS,KAAM,KAAK,CAAC,EAAGv9F,EAAO,EAAI,EAAIuuF,GAAe,KAAM,KAAK,CAAC,EAAG,MAExF,IAAK,OAAQvuF,EAAO,EAAKuuF,GAAe,KAAM,KAAK,CAAC,EAAG9gE,EAAIgwE,GAAO,KAAM,KAAK,CAAC,EAAMz9F,EAAO,IAAMA,GAAQ,GAAG,MAE5G,IAAK,QAASA,EAAO,EAAKuuF,GAAe,KAAM,KAAK,CAAC,EAAG9gE,EAAIkwE,GAAQ,KAAM,KAAK,CAAC,EAAM39F,EAAO,IAAMA,GAAQ,GAAKA,EAAO,IAAO,MAE9H,IAAK,OACJ,IADYA,EAAO,EAAGytB,EAAI,IACnB6O,EAAE0gE,GAAY,KAAM,KAAK,EAAIh9F,GAAM,KAAK,GAAGm+F,EAAG,KAAK1gB,GAASnhD,CAAC,CAAC,EACrE7O,EAAI0wE,EAAG,KAAK,EAAE,EAAG,MAClB,IAAK,QACJ,IADan+F,EAAO,EAAGytB,EAAI,IACpB6O,EAAEsgE,GAAe,KAAK,KAAK,EAAG58F,CAAI,KAAK,GAAGm+F,EAAG,KAAK1gB,GAASnhD,CAAC,CAAC,EAAEt8B,GAAM,EAC5EA,GAAM,EAAGytB,EAAI0wE,EAAG,KAAK,EAAE,EAAG,MAG3B,IAAK,YACJ,IADiB1wE,EAAI,GAAI2wE,EAAM,KAAK,EAChCnpG,EAAI,EAAGA,EAAI+K,EAAM,EAAE/K,EAAG,CACzB,GAAG,KAAK,MAAQ,KAAK,KAAK,QAAQmpG,CAAG,IAAM,GAC1C,OAAA9hE,EAAI0gE,GAAY,KAAMoB,CAAG,EACzB,KAAK,EAAIA,EAAM,EACf5X,EAAK8R,GAAU,KAAK,KAAMt4F,EAAK/K,EAAGqnC,EAAI,YAAc,WAAW,EACxD6hE,EAAG,KAAK,EAAE,EAAI3X,EAEtB2X,EAAG,KAAK1gB,GAASmf,GAAe,KAAMwB,CAAG,CAAC,CAAC,EAC3CA,GAAK,CACT,CAAK3wE,EAAI0wE,EAAG,KAAK,EAAE,EAAGn+F,GAAQ,EAAG,MAE/B,IAAK,QAML,IAAK,YACJ,IADiBytB,EAAI,GAAI2wE,EAAM,KAAK,EAChCnpG,EAAI,EAAGA,GAAK+K,EAAM,EAAE/K,EAAG,CAC1B,GAAG,KAAK,MAAQ,KAAK,KAAK,QAAQmpG,CAAG,IAAM,GAC1C,OAAA9hE,EAAI0gE,GAAY,KAAMoB,CAAG,EACzB,KAAK,EAAIA,EAAM,EACf5X,EAAK8R,GAAU,KAAK,KAAMt4F,EAAK/K,EAAGqnC,EAAI,YAAc,WAAW,EACxD6hE,EAAG,KAAK,EAAE,EAAI3X,EAEtB2X,EAAG,KAAK1gB,GAASuf,GAAY,KAAMoB,CAAG,CAAC,CAAC,EACxCA,GAAK,CACL,CAAC3wE,EAAI0wE,EAAG,KAAK,EAAE,EAAG,MAEpB,QACD,OAAOn+F,EAAI,CACV,IAAK,GAAG,OAAAi+F,EAAKjB,GAAY,KAAM,KAAK,CAAC,EAAG,KAAK,IAAYiB,EACzD,IAAK,GAAG,OAAAA,GAAM,IAAM,IAAMF,GAAgBnB,IAAgB,KAAM,KAAK,CAAC,EAAG,KAAK,GAAK,EAAUqB,EAC7F,IAAK,GAAG,IAAK,GACZ,OAAG,IAAM,KAAS,OAAK,KAAK,EAAE,CAAC,EAAI,MAAcA,GAAOj+F,EAAO,EAAKstF,GAAgB0Q,IAAe,KAAM,KAAK,CAAC,EAAG,KAAK,GAAK,EAAUC,IAC/HC,EAAK3P,GAAe,KAAM,KAAK,CAAC,EAAG,KAAK,GAAK,EAAY2P,GACjE,IAAK,GAAG,IAAK,GACZ,GAAG,IAAM,IACR,OAAGl+F,GAAQ,EAAGk+F,EAAKL,GAAS,KAAM,KAAK,CAAC,EACnCK,EAAKL,GAAS,CAAC,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC,EAAG,CAAC,EAC/I,KAAK,GAAK,EAAUK,EACdl+F,EAAO,EAEf,IAAK,IAAIytB,EAAIqvE,GAAU,KAAM,KAAK,EAAG98F,CAAI,EAAG,KAC9C,CAAE,CACD,YAAK,GAAGA,EAAaytB,CACtB,CAEA,IAAI4wE,GAAkB,SAASxlG,EAAuBxE,EAAgB65B,EAAyB,CAAEr1B,EAAEq1B,CAAG,EAAK75B,EAAM,IAAOwE,EAAEq1B,EAAI,CAAC,EAAM75B,IAAQ,EAAK,IAAOwE,EAAEq1B,EAAI,CAAC,EAAM75B,IAAQ,GAAM,IAAOwE,EAAEq1B,EAAI,CAAC,EAAM75B,IAAQ,GAAM,KAClNiqG,GAAkB,SAASzlG,EAAuBxE,EAAgB65B,EAAyB,CAAEr1B,EAAEq1B,CAAG,EAAK75B,EAAM,IAAOwE,EAAEq1B,EAAI,CAAC,EAAM75B,GAAO,EAAK,IAAOwE,EAAEq1B,EAAI,CAAC,EAAM75B,GAAO,GAAM,IAAOwE,EAAEq1B,EAAI,CAAC,EAAM75B,GAAO,GAAM,KAC/MkqG,GAAkB,SAAS1lG,EAAuBxE,EAAgB65B,EAAyB,CAAEr1B,EAAEq1B,CAAG,EAAK75B,EAAM,IAAOwE,EAAEq1B,EAAI,CAAC,EAAM75B,IAAQ,EAAK,KAElJ,SAASmqG,GAAWnlF,EAAchlB,EAAuBq0C,EAAuB,CAC/E,IAAI1oC,EAAO,EAAG,EAAI,EAClB,GAAG0oC,IAAM,OAAQ,CAEhB,IAAI,EAAI,EAAG,GAAKr0C,EAAI,OAAQ,EAAE,EAAGkqG,GAAgB,KAAMlqG,EAAI,WAAW,CAAC,EAAG,KAAK,EAAI,EAAI,CAAC,EACxF2L,EAAO,EAAI3L,EAAI,MACjB,SAAWq0C,IAAM,OAAQ,CAYtB,IAFAr0C,EAAMA,EAAI,QAAQ,gBAAiB,GAAG,EAElC,EAAI,EAAG,GAAKA,EAAI,OAAQ,EAAE,EAAG,KAAK,KAAK,EAAI,CAAC,EAAKA,EAAI,WAAW,CAAC,EAAI,IAE1E2L,EAAO3L,EAAI,MACb,SAAWq0C,IAAM,MAAO,CACtB,KAAM,EAAIrvB,EAAG,EAAE,EAEd,KAAK,KAAK,GAAG,EAAK,SAAShlB,EAAI,MAAM,EAAE,EAAG,EAAE,EAAE,CAAC,EAAG,EAAE,GAAG,EACtD,OAAO,IACX,SAAWq0C,IAAM,UAAW,CAEzB,IAAIhiC,EAAiB,KAAK,IAAI,KAAK,EAAI2S,EAAG,KAAK,MAAM,EACrD,IAAI,EAAI,EAAG,EAAI,KAAK,IAAIhlB,EAAI,OAAQglB,CAAC,EAAG,EAAE,EAAG,CAC5C,IAAIorE,EAAKpwF,EAAI,WAAW,CAAC,EACzB,KAAK,KAAK,GAAG,EAAKowF,EAAK,IACvB,KAAK,KAAK,GAAG,EAAKA,GAAM,CACxB,CACD,KAAM,KAAK,EAAI/9E,GAAK,KAAK,KAAK,GAAG,EAAI,EACrC,OAAO,IACR,KAA0C,QAAO2S,EAAC,CAClD,IAAM,GAAGrZ,EAAO,EAAG,KAAK,KAAK,CAAC,EAAI3L,EAAI,IAAM,MAC5C,IAAM,GAAG2L,EAAO,EAAG,KAAK,KAAK,CAAC,EAAI3L,EAAI,IAAMA,KAAS,EAAG,KAAK,KAAK,EAAE,CAAC,EAAIA,EAAI,IAAM,MACnF,IAAM,GAAG2L,EAAO,EAAG,KAAK,KAAK,CAAC,EAAI3L,EAAI,IAAMA,KAAS,EAAG,KAAK,KAAK,EAAE,CAAC,EAAIA,EAAI,IAAMA,KAAS,EAAG,KAAK,KAAK,EAAE,CAAC,EAAIA,EAAI,IAAM,MAC1H,IAAM,GAAG2L,EAAO,EAAGq+F,GAAgB,KAAMhqG,EAAK,KAAK,CAAC,EAAG,MACvD,IAAM,GAAa,GAAV2L,EAAO,EAAM0oC,IAAM,IAAK,CAAE6zD,GAAgB,KAAMloG,EAAK,KAAK,CAAC,EAAG,KAAQ,CAE/E,IAAK,IAAI,MACT,IAAK,GAAI2L,EAAO,EAAGs+F,GAAe,KAAMjqG,EAAK,KAAK,CAAC,EAAG,KACtD,CACD,YAAK,GAAK2L,EAAa,IACxB,CAEA,SAASu4F,GAAWkG,EAAmBC,EAAyB,CAC/D,IAAI3pF,EAAI+nF,GAAU,KAAK,KAAK,EAAE2B,EAAO,QAAQ,CAAC,EAC9C,GAAG1pF,IAAM0pF,EAAQ,MAAM,IAAI,MAAMC,EAAM,YAAcD,EAAS,QAAU1pF,CAAC,EACzE,KAAK,GAAK0pF,EAAO,QAAQ,CAC1B,CAEA,SAAS/T,GAAUD,EAAM3pC,EAAyB,CACjD2pC,EAAK,EAAI3pC,EACT2pC,EAAK,WAAoB6N,GACzB7N,EAAK,IAAM8N,GACX9N,EAAK,YAAc+T,EACpB,CAEA,SAASG,GAAUlU,EAAMz0D,EAAkC,CAAEy0D,EAAK,GAAKz0D,CAAS,CAEhF,SAASu3D,GAAQ3C,EAAyB,CACzC,IAAIn9D,EAAI8wD,GAAYqM,CAAE,EACtB,OAAAF,GAAUj9D,EAAG,CAAC,EACPA,CACR,CAuBA,SAASmxE,IAAyB,CACjC,IAAI7f,EAAwB,CAAA,EAAI8f,EAAQ3gB,GAAU,IAAM,KACpD4gB,EAAS,SAAmBlU,EAAyB,CACxD,IAAIn9D,EAAe8/D,GAAQ3C,CAAE,EAC7B,OAAAF,GAAUj9D,EAAG,CAAC,EACPA,CACT,EAEKsxE,EAAmBD,EAAOD,CAAK,EAE/BG,EAAS,UAAqB,CAC7BD,IACDA,EAAO,OAASA,EAAO,IAAKA,EAASA,EAAO,MAAM,EAAGA,EAAO,CAAC,EAAGA,EAAO,EAAIA,EAAO,QAClFA,EAAO,OAAS,GAAGhgB,EAAK,KAAKggB,CAAM,EACtCA,EAAS,KACX,EAEK3hF,EAAO,SAAiBwtE,EAAyB,CACpD,OAAGmU,GAAWnU,EAAMmU,EAAO,OAASA,EAAO,EAAYA,GACvDC,IACQD,EAASD,EAAO,KAAK,IAAIlU,EAAG,EAAGiU,CAAK,CAAC,EAC/C,EAEKn4F,EAAM,UAAkB,CAC3B,OAAAs4F,IACOlgB,GAAQC,CAAI,CACrB,EAEKkgB,EAAO,SAAiB5gB,EAAK,CAAE2gB,EAAM,EAAID,EAAS1gB,EAAQ0gB,EAAO,GAAK,OAAMA,EAAO,EAAIA,EAAO,QAAQ3hF,EAAKyhF,CAAK,GAEpH,MAAQ,CAAE,KAAKzhF,EAAM,KAAK6hF,EAAM,IAAIv4F,EAAK,MAAMq4E,EAChD,CAEA,SAASmgB,GAAaC,EAAiBriG,EAAiB8oC,EAAS5P,EAAoB,CACpF,IAAI3c,EAAe,CAACvc,EAAM3C,EAC1B,GAAG,OAAMkf,CAAC,EACV,CAAI2c,IAAQA,EAASopE,GAAe/lF,CAAC,EAAE,IAAMusB,GAAS,IAAI,QAAU,GACpEzrC,EAAI,GAAKkf,GAAK,IAAO,EAAI,GAAK,EAC3B2c,GAAU,KAAM,EAAE77B,EAAM67B,GAAU,OAAQ,EAAE77B,EAAM67B,GAAU,SAAU,EAAE77B,EAC3E,IAAIszB,EAAI0xE,EAAG,KAAKhlG,CAAC,EACdkf,GAAK,IAAMoU,EAAE,YAAY,EAAGpU,CAAC,GAE/BoU,EAAE,YAAY,GAAIpU,EAAI,KAAQ,GAAI,EAClCoU,EAAE,YAAY,EAAIpU,GAAK,CAAC,GAEzB,QAAQpkB,EAAI,EAAGA,GAAK,EAAG,EAAEA,EACxB,GAAG+gC,GAAU,IAAQvI,EAAE,YAAY,GAAIuI,EAAS,KAAM,GAAI,EAAGA,IAAW,MACnE,CAAEvI,EAAE,YAAY,EAAGuI,CAAM,EAAG,KAAQ,CAEfA,EAAS,GAAK8nE,GAAOl4D,CAAO,GAAGu5D,EAAG,KAAKv5D,CAAO,EAC1E,CAEA,SAASy5D,GAAeC,EAAsBzU,EAAa7mD,EAA+B,CACzF,IAAIk7C,EAAM6a,GAAIuF,CAAI,EAQlB,GAPGzU,EAAI,GACH3L,EAAI,OAAMA,EAAI,GAAK2L,EAAI,EAAE,GACzB3L,EAAI,OAAMA,EAAI,GAAK2L,EAAI,EAAE,KAEzB3L,EAAI,OAAMA,EAAI,GAAK2L,EAAI,GACvB3L,EAAI,OAAMA,EAAI,GAAK2L,EAAI,IAExB,CAAC7mD,GAAQA,EAAK,KAAO,GAAI,CAC3B,KAAMk7C,EAAI,GAAK,KAAOA,EAAI,GAAK,IAC/B,KAAMA,EAAI,GAAK,OAASA,EAAI,GAAK,KACjC,CACD,OAAOA,CACR,CAEA,SAASqgB,GAAgBD,EAAM5wD,EAAO1K,EAAM,CAC3C,IAAIk7C,EAAM6a,GAAIuF,CAAI,EAClB,OAAApgB,EAAI,EAAImgB,GAAengB,EAAI,EAAGxwC,EAAM,EAAG1K,CAAI,EAC3Ck7C,EAAI,EAAImgB,GAAengB,EAAI,EAAGxwC,EAAM,EAAG1K,CAAI,EACpCk7C,CACR,CAEA,SAASsgB,GAAgB9oG,EAAmB+oG,EAA4B,CACvE,GAAG/oG,EAAE,MAAQA,EAAE,EAAI,EAAiB,IAAZA,EAAIqjG,GAAIrjG,CAAC,EAASA,EAAE,EAAI,GAAGA,EAAE,GAAM+oG,EAAO,EAAK,MAAS,IAChF,GAAG/oG,EAAE,MAAQA,EAAE,EAAI,EAAiB,IAAZA,EAAIqjG,GAAIrjG,CAAC,EAASA,EAAE,EAAI,GAAGA,EAAE,GAAM+oG,EAAO,EAAK,QAAaA,EAAO,EAAK,MAAU,MAC1G,IAAI1xF,EAAI2xF,GAAYhpG,CAAC,EACrB,MAAG,CAACA,EAAE,MAAQA,EAAE,MAAQ,OAAMqX,EAAI4xF,GAAQ5xF,CAAC,GACxC,CAACrX,EAAE,MAAQA,EAAE,MAAQ,OAAMqX,EAAI6xF,GAAQ7xF,CAAC,GACpCA,CACR,CAEA,SAAS8xF,GAAiBj8F,EAAGogC,EAAiB,CAC7C,OAAGpgC,EAAE,EAAE,GAAK,GAAK,CAACA,EAAE,EAAE,MAClBA,EAAE,EAAE,IAAMogC,EAAK,MAAQ,GAAK,QAAWA,EAAK,MAAQ,EAAI,MAAU,QAAY,CAACpgC,EAAE,EAAE,MAC7EA,EAAE,EAAE,KAAO,GAAK,KAAOk8F,GAAWl8F,EAAE,EAAE,CAAC,EAAI,KAAOA,EAAE,EAAE,KAAO,GAAK,KAAOk8F,GAAWl8F,EAAE,EAAE,CAAC,EAGhGA,EAAE,EAAE,GAAK,GAAK,CAACA,EAAE,EAAE,MAClBA,EAAE,EAAE,IAAMogC,EAAK,MAAQ,GAAK,MAAS,MAAS,CAACpgC,EAAE,EAAE,MAC7CA,EAAE,EAAE,KAAO,GAAK,KAAOm8F,GAAWn8F,EAAE,EAAE,CAAC,EAAI,KAAOA,EAAE,EAAE,KAAO,GAAK,KAAOm8F,GAAWn8F,EAAE,EAAE,CAAC,EAG5F47F,GAAgB57F,EAAE,EAAGogC,EAAK,IAAI,EAAI,IAAMw7D,GAAgB57F,EAAE,EAAGogC,EAAK,IAAI,CAC9E,CACA,SAASg8D,GAAWC,EAA8B,CAAE,OAAO,SAASC,GAAUD,CAAM,EAAE,EAAE,EAAI,CAAI,CAChG,SAASF,GAAW/iB,EAA2B,CAAE,MAAO,IAAMA,EAAM,EAAK,CACzE,SAAS4iB,GAAQlI,EAA4B,CAAE,OAAOA,EAAK,QAAQ,kBAAkB,QAAQ,CAAI,CACjG,SAASwI,GAAUxI,EAA4B,CAAE,OAAOA,EAAK,QAAQ,WAAW,IAAI,CAAI,CAExF,SAASyI,GAAWC,EAA8B,CAA2C,QAArC1pG,EAAI2pG,GAAUD,CAAM,EAAGj3D,EAAI,EAAGl0C,EAAI,EAASA,IAAMyB,EAAE,OAAQ,EAAEzB,EAAGk0C,EAAI,GAAGA,EAAIzyC,EAAE,WAAWzB,CAAC,EAAI,GAAI,OAAOk0C,EAAI,CAAI,CACxK,SAAS22D,GAAWQ,EAA2B,CAAE,GAAGA,EAAM,EAAG,MAAM,IAAI,MAAM,kBAAoBA,CAAG,EAAG,IAAIvyF,EAAE,GAAI,IAAI,EAAEuyF,EAAKA,EAAKA,EAAI,KAAK,OAAOA,EAAI,GAAG,EAAE,EAAGvyF,EAAI,OAAO,cAAeuyF,EAAI,GAAG,GAAM,EAAE,EAAIvyF,EAAG,OAAOA,CAAI,CACxN,SAAS4xF,GAAQjI,EAA4B,CAAE,OAAOA,EAAK,QAAQ,WAAW,MAAM,CAAI,CACxF,SAAS2I,GAAU3I,EAA4B,CAAE,OAAOA,EAAK,QAAQ,aAAa,IAAI,CAAI,CAE1F,SAAS6I,GAAW7I,EAAmC,CAAE,OAAOA,EAAK,QAAQ,sBAAsB,OAAO,EAAE,MAAM,GAAG,CAAI,CAEzH,SAAS8I,GAAY9I,EAAiC,CAErD,QADI1N,EAAI,EAAGgD,EAAI,EACP/3F,EAAI,EAAGA,EAAIyiG,EAAK,OAAQ,EAAEziG,EAAG,CACpC,IAAIwvF,EAAKiT,EAAK,WAAWziG,CAAC,EACvBwvF,GAAM,IAAMA,GAAM,GAAIuF,EAAI,GAAKA,GAAKvF,EAAK,IACpCA,GAAM,IAAMA,GAAM,KAAIuI,EAAI,GAAKA,GAAKvI,EAAK,IACjD,CACD,MAAO,CAAE,EAAGuI,EAAI,EAAG,EAAEhD,EAAI,EAC1B,CAEA,SAAS0V,GAAYJ,EAAiC,CAGrD,QAFIgB,EAAMhB,EAAK,EAAI,EACfvxF,EAAE,GACAuyF,EAAKA,GAAMA,EAAI,GAAG,GAAI,EAAGvyF,EAAI,OAAO,cAAeuyF,EAAI,GAAG,GAAM,EAAE,EAAIvyF,EAC5E,OAAOA,GAAKuxF,EAAK,EAAI,EACtB,CACA,SAASmB,GAAa/xD,EAA4B,CACjD,IAAIxgB,EAAMwgB,EAAM,QAAQ,GAAG,EAC3B,OAAGxgB,GAAO,GAAW,CAAE,EAAGsyE,GAAY9xD,CAAK,EAAG,EAAG8xD,GAAY9xD,CAAK,CAAC,EAC5D,CAAE,EAAG8xD,GAAY9xD,EAAM,MAAM,EAAGxgB,CAAG,CAAC,EAAG,EAAGsyE,GAAY9xD,EAAM,MAAMxgB,EAAM,CAAC,CAAC,EAClF,CAEA,SAASwyE,GAAaC,EAA0BC,EAAiC,CAChF,OAAG,OAAOA,EAAO,KAAe,OAAOA,GAAO,SAEtCF,GAAaC,EAAG,EAAGA,EAAG,CAAC,GAG5B,OAAOA,GAAO,WAAUA,EAAKjB,GAAaiB,CAAE,GAC5C,OAAOC,GAAO,WAAUA,EAAKlB,GAAakB,CAAE,GAGxCD,GAAMC,EAAKD,EAAKA,EAAK,IAAMC,EACnC,CAEA,SAASC,GAAkBnyD,EAA4B,CACtD,IAAIjhB,EAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAC5BS,EAAM,EAAGj5B,EAAI,EAAGwvF,EAAK,EACrB9gE,EAAM+qB,EAAM,OAChB,IAAIxgB,EAAM,EAAGj5B,EAAI0uB,GACZ,GAAA8gE,EAAG/1C,EAAM,WAAWz5C,CAAC,EAAE,IAAM,GAAKwvF,EAAK,IADtB,EAAExvF,EAEvBi5B,EAAM,GAAGA,EAAMu2D,EAIhB,IAFAh3D,EAAE,EAAE,EAAI,EAAES,EAENA,EAAM,EAAGj5B,EAAI0uB,GACZ,GAAA8gE,EAAG/1C,EAAM,WAAWz5C,CAAC,EAAE,IAAM,GAAKwvF,EAAK,GADtB,EAAExvF,EAEvBi5B,EAAM,GAAGA,EAAMu2D,EAIhB,GAFAh3D,EAAE,EAAE,EAAI,EAAES,EAEPj5B,IAAM0uB,GAAO8gE,GAAM,GAAM,OAAAh3D,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAGA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAUA,EAG7D,IAFA,EAAEx4B,EAEEi5B,EAAM,EAAGj5B,GAAK0uB,GACb,GAAA8gE,EAAG/1C,EAAM,WAAWz5C,CAAC,EAAE,IAAM,GAAKwvF,EAAK,IADrB,EAAExvF,EAExBi5B,EAAM,GAAGA,EAAMu2D,EAIhB,IAFAh3D,EAAE,EAAE,EAAI,EAAES,EAENA,EAAM,EAAGj5B,GAAK0uB,GACb,GAAA8gE,EAAG/1C,EAAM,WAAWz5C,CAAC,EAAE,IAAM,GAAKwvF,EAAK,GADrB,EAAExvF,EAExBi5B,EAAM,GAAGA,EAAMu2D,EAEhB,OAAAh3D,EAAE,EAAE,EAAI,EAAES,EACHT,CACR,CAEA,SAASqzE,GAAiBxB,EAAe1lG,EAAW,CACnD,IAAIwnF,EAAKke,EAAK,GAAK,KAAO1lG,aAAa,KACvC,GAAG0lG,EAAK,GAAK,KAAM,GAAI,CAAE,OAAQA,EAAK,EAAI/c,GAAW+c,EAAK,EAAGle,EAAI+X,GAAQv/F,CAAC,EAAIA,CAAC,CAAK,MAAU,CAAG,CACjG,GAAI,CAAE,OAAQ0lG,EAAK,EAAI/c,IAAY+c,EAAK,IAAI,CAAE,GAAE,WAAWle,EAAI,GAAK,GAAKA,EAAI+X,GAAQv/F,CAAC,EAAIA,CAAC,OAAe,CAAE,MAAO,GAAGA,CAAI,CAC3H,CAEA,SAASmnG,GAAYzB,EAAe1lG,EAAW6zB,EAAW,CACzD,OAAG6xE,GAAQ,MAAQA,EAAK,GAAK,MAAQA,EAAK,GAAK,IAAY,GACxDA,EAAK,IAAM,OAAkBA,EAAK,GAClCA,EAAK,GAAK,KAAO,CAACA,EAAK,GAAK7xE,GAAKA,EAAE,SAAQ6xE,EAAK,EAAI7xE,EAAE,QACtD6xE,EAAK,GAAK,IAAY0B,GAAK1B,EAAK,CAAC,GAAKA,EAAK,EAC3C1lG,GAAK,KAAkBknG,GAAiBxB,EAAMA,EAAK,CAAC,EAChDwB,GAAiBxB,EAAM1lG,CAAC,EAChC,CAEA,SAASqnG,GAAkBC,EAAqBl9D,EAAmB,CAClE,IAAIxsC,EAAIwsC,GAAQA,EAAK,MAAQA,EAAK,MAAQ,SACtCm9D,EAAS,CAAA,EAAI,OAAAA,EAAO3pG,CAAC,EAAI0pG,EACtB,CAAE,WAAY,CAAC1pG,CAAC,EAAG,OAAQ2pG,CAAM,CACzC,CAEA,SAASC,GAAcC,EAAoBh3F,EAAc25B,EAA6B,CACrF,IAAIvW,EAAIuW,GAAQ,GACZs9D,EAAQD,EAAM,MAAM,QAAQA,CAAG,EAAI5zE,EAAE,MAErC8zE,EAAmBF,IAAQC,EAAS,CAAA,EAAe,CAAA,GACnDE,EAAK,EAAGC,EAAK,EACjB,GAAGF,GAAM9zE,EAAE,QAAU,KAAM,CAC1B,GAAG,OAAOA,EAAE,QAAU,SAAU+zE,EAAK/zE,EAAE,WAClC,CACJ,IAAIi0E,EAA0B,OAAOj0E,EAAE,QAAU,SAAW+yE,GAAY/yE,EAAE,MAAM,EAAIA,EAAE,OACtF+zE,EAAKE,EAAQ,EAAGD,EAAKC,EAAQ,CAC7B,CACGH,EAAG,MAAM,IAAGA,EAAG,MAAM,EAAI,QAC7B,CACD,IAAI7yD,EAAmB,CAAC,EAAG,CAAC,EAAE,IAAU,EAAE,GAAQ,EAAG,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,EAClE,GAAG6yD,EAAG,MAAM,EAAG,CACd,IAAII,EAASd,GAAkBU,EAAG,MAAM,CAAC,EACzC7yD,EAAM,EAAE,EAAIizD,EAAO,EAAE,EACrBjzD,EAAM,EAAE,EAAIizD,EAAO,EAAE,EACrBjzD,EAAM,EAAE,EAAI,KAAK,IAAIA,EAAM,EAAE,EAAGizD,EAAO,EAAE,CAAC,EAC1CjzD,EAAM,EAAE,EAAI,KAAK,IAAIA,EAAM,EAAE,EAAGizD,EAAO,EAAE,CAAC,EACvCH,GAAM,KAAI9yD,EAAM,EAAE,EAAI8yD,EAAKG,EAAO,EAAE,EAAI,EAC3C,CACD,QAAQ3X,EAAI,EAAGA,GAAK3/E,EAAK,OAAQ,EAAE2/E,EAClC,GAAI3/E,EAAK2/E,CAAC,EACV,IAAG,CAAC,MAAM,QAAQ3/E,EAAK2/E,CAAC,CAAC,EAAG,MAAM,IAAI,MAAM,yCAAyC,EACrF,QAAQgD,EAAI,EAAGA,GAAK3iF,EAAK2/E,CAAC,EAAE,OAAQ,EAAEgD,EACrC,GAAG,SAAO3iF,EAAK2/E,CAAC,EAAEgD,CAAC,EAAM,KACzB,KAAIsS,EAAiB,CAAC,EAAGj1F,EAAK2/E,CAAC,EAAEgD,CAAC,CAAC,EAC/B4U,EAAMJ,EAAKxX,EAAG6X,EAAMJ,EAAKzU,EAK7B,GAJGt+C,EAAM,EAAE,EAAIkzD,IAAKlzD,EAAM,EAAE,EAAIkzD,GAC7BlzD,EAAM,EAAE,EAAImzD,IAAKnzD,EAAM,EAAE,EAAImzD,GAC7BnzD,EAAM,EAAE,EAAIkzD,IAAKlzD,EAAM,EAAE,EAAIkzD,GAC7BlzD,EAAM,EAAE,EAAImzD,IAAKnzD,EAAM,EAAE,EAAImzD,GAC7Bx3F,EAAK2/E,CAAC,EAAEgD,CAAC,GAAK,OAAO3iF,EAAK2/E,CAAC,EAAEgD,CAAC,GAAM,UAAY,CAAC,MAAM,QAAQ3iF,EAAK2/E,CAAC,EAAEgD,CAAC,CAAC,GAAK,EAAE3iF,EAAK2/E,CAAC,EAAEgD,CAAC,YAAa,MAAOsS,EAAOj1F,EAAK2/E,CAAC,EAAEgD,CAAC,UAE5H,MAAM,QAAQsS,EAAK,CAAC,IAAKA,EAAK,EAAIj1F,EAAK2/E,CAAC,EAAEgD,CAAC,EAAE,CAAC,EAAGsS,EAAK,EAAIA,EAAK,EAAE,CAAC,GAClEA,EAAK,IAAM,KACb,GAAGA,EAAK,EAAGA,EAAK,EAAI,YACZ7xE,EAAE,UAAa6xE,EAAK,EAAI,IAAKA,EAAK,EAAI,UACrC7xE,EAAE,WACN6xE,EAAK,EAAI,QADS,eAGhB,OAAOA,EAAK,GAAM,SAAUA,EAAK,EAAI,IACrC,OAAOA,EAAK,GAAM,UAAWA,EAAK,EAAI,IACtCA,EAAK,aAAa,MACzBA,EAAK,EAAI7xE,EAAE,QAAU4yD,GAAU,EAAE,EAC9B5yD,EAAE,WAAa6xE,EAAK,EAAI,IAAKA,EAAK,EAAI/c,GAAW+c,EAAK,EAAGnG,GAAQmG,EAAK,CAAC,CAAC,IACpEA,EAAK,EAAI,IAAKA,EAAK,EAAInG,GAAQmG,EAAK,CAAC,EAAGA,EAAK,EAAI/c,GAAW+c,EAAK,EAAGA,EAAK,CAAC,IAE7EA,EAAK,EAAI,IAEf,GAAGgC,EACEC,EAAGK,CAAG,IAAGL,EAAGK,CAAG,EAAI,IACpBL,EAAGK,CAAG,EAAEC,CAAG,GAAKN,EAAGK,CAAG,EAAEC,CAAG,EAAE,IAAGvC,EAAK,EAAIiC,EAAGK,CAAG,EAAEC,CAAG,EAAE,GACzDN,EAAGK,CAAG,EAAEC,CAAG,EAAIvC,MACT,CACN,IAAIwC,EAAWpC,GAAa,CAAC,EAAEmC,EAAI,EAAED,CAAG,GACrCL,EAAGO,CAAQ,GAAKP,EAAGO,CAAQ,EAAE,IAAGxC,EAAK,EAAIiC,EAAGO,CAAQ,EAAE,GACzDP,EAAGO,CAAQ,EAAIxC,CACf,GAGH,OAAG5wD,EAAM,EAAE,EAAI,MAAU6yD,EAAG,MAAM,EAAIb,GAAahyD,CAAK,GACjD6yD,CACR,CACA,SAASQ,GAAa13F,EAAc25B,EAA6B,CAAE,OAAOo9D,GAAc,KAAM/2F,EAAM25B,CAAI,CAAI,CAE5G,SAASg+D,GAAc33F,EAAM,CAC5B,OAAOA,EAAK,WAAW,EAAG,GAAG,CAC9B,CACA,SAAS43F,GAAe3zD,EAAc7gB,EAAG,CACxC,OAAKA,IAAGA,EAAI8/D,GAAQ,CAAC,GACrB9/D,EAAE,YAAY,EAAG6gB,CAAC,EACX7gB,CACR,CAGA,SAASy0E,GAAmB73F,EAA+B,CAC1D,IAAI83F,EAAgB93F,EAAK,WAAW,CAAC,EACrC,OAAO83F,IAAkB,EAAI,GAAK93F,EAAK,WAAW83F,EAAe,MAAM,CACxE,CACA,SAASC,GAAmB/3F,EAAiBojB,EAAG,CAC/C,IAAI40E,EAAQ,GAAO,OAAI50E,GAAK,OAAQ40E,EAAQ,GAAM50E,EAAI8/D,GAAQ,EAAI,EAAIljF,EAAK,MAAM,GACjFojB,EAAE,YAAY,EAAGpjB,EAAK,MAAM,EACxBA,EAAK,OAAS,GAAGojB,EAAE,YAAY,EAAGpjB,EAAM,MAAM,EAC3Cg4F,EAAQ50E,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CASA,SAAS60E,GAAaj4F,EAAM,CAC3B,MAAO,CAAE,IAAKA,EAAK,WAAW,CAAC,EAAG,KAAMA,EAAK,WAAW,CAAC,EAC1D,CACA,SAASk4F,GAAaC,EAAK/0E,EAAG,CAC7B,OAAKA,IAAGA,EAAI8/D,GAAQ,CAAC,GACrB9/D,EAAE,YAAY,EAAc,CAAC,EAC7BA,EAAE,YAAY,EAAe,CAAC,EACvBA,CACR,CAGA,SAASg1E,GAAcp4F,EAAM2rB,EAAgC,CAC5D,IAAIvvB,EAAQ4D,EAAK,EACbsgF,EAAQtgF,EAAK,WAAW,CAAC,EACzBnW,EAAMguG,GAAmB73F,CAAI,EAC7Bq4F,EAAY,CAAA,EACZC,EAAK,CAAE,EAAGzuG,EAAK,EAAGA,CAAG,EACzB,GAAKy2F,EAAQ,EAAU,CAGtB,QADIiY,EAAev4F,EAAK,WAAW,CAAC,EAC3BpV,EAAI,EAAGA,GAAK2tG,EAAc,EAAE3tG,EAAGytG,EAAU,KAAKJ,GAAaj4F,CAAI,CAAC,EACzEs4F,EAAE,EAAID,CACN,MACIC,EAAE,EAAI,CAAC,CAAE,IAAK,EAAG,KAAM,CAAC,CAAE,EAI/B,OAAAt4F,EAAK,EAAI5D,EAAQuvB,EACV2sE,CACR,CACA,SAASE,GAAc3uG,EAAkBu5B,EAAwB,CAEhE,IAAI40E,EAAQ,GAAO,OAAI50E,GAAK,OAAQ40E,EAAQ,GAAM50E,EAAI8/D,GAAQ,GAAK,EAAIr5F,EAAI,EAAE,MAAM,GACnFu5B,EAAE,YAAY,EAAG,CAAC,EAClB20E,GAAmBluG,EAAI,EAAGu5B,CAAC,EACpB40E,EAAQ50E,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CAEA,IAAIq1E,GAAuBL,GAC3B,SAASM,GAAqB7uG,EAAkBu5B,EAAwB,CAEvE,IAAI40E,EAAQ,GAAO,OAAI50E,GAAK,OAAQ40E,EAAQ,GAAM50E,EAAI8/D,GAAQ,GAAK,EAAIr5F,EAAI,EAAE,MAAM,GACnFu5B,EAAE,YAAY,EAAG,CAAC,EAClB20E,GAAmBluG,EAAI,EAAGu5B,CAAC,EAC3BA,EAAE,YAAY,EAAG,CAAC,EAClB80E,GAAa,CAAE,IAAK,EAAG,KAAM,CAAC,EAAI90E,CAAC,EAC5B40E,EAAQ50E,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CAGA,SAASu1E,GAAe34F,EAAc,CACrC,IAAIi2F,EAAMj2F,EAAK,WAAW,CAAC,EACvB44F,EAAY54F,EAAK,WAAW,CAAC,EACjC,OAAA44F,GAAa54F,EAAK,WAAW,CAAC,GAAK,GACnCA,EAAK,IACE,CAAE,EAAGi2F,EAAK,UAAW2C,CAAS,CACtC,CACA,SAASC,GAAe5D,EAAc7xE,EAAc,CACnD,OAAIA,GAAK,OAAMA,EAAI8/D,GAAQ,CAAC,GAC5B9/D,EAAE,YAAY,GAAI6xE,EAAK,CAAC,EACxB7xE,EAAE,YAAY,EAAG6xE,EAAK,WAAaA,EAAK,CAAC,EACzC7xE,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAGA,SAAS01E,GAAoB94F,EAAc,CAC1C,IAAI44F,EAAY54F,EAAK,WAAW,CAAC,EACjC,OAAA44F,GAAa54F,EAAK,WAAW,CAAC,GAAI,GAClCA,EAAK,IACE,CAAE,EAAE,GAAI,UAAW44F,CAAS,CACpC,CACA,SAASG,GAAoB9D,EAAc7xE,EAAc,CACxD,OAAGA,GAAK,OAAMA,EAAI8/D,GAAQ,CAAC,GAC3B9/D,EAAE,YAAY,EAAG6xE,EAAK,WAAaA,EAAK,CAAC,EACzC7xE,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAGA,IAAI41E,GAAqBnB,GACrBoB,GAAqBlB,GAGzB,SAASmB,GAA2Bl5F,EAA+B,CAClE,IAAI83F,EAAgB93F,EAAK,WAAW,CAAC,EACrC,OAAO83F,IAAkB,GAAKA,IAAkB,WAAa,GAAK93F,EAAK,WAAW83F,EAAe,MAAM,CACxG,CACA,SAASqB,GAA2Bn5F,EAAiBojB,EAAG,CACvD,IAAI40E,EAAQ,GAAO,OAAI50E,GAAK,OAAQ40E,EAAQ,GAAM50E,EAAI8/D,GAAQ,GAAG,GACjE9/D,EAAE,YAAY,EAAGpjB,EAAK,OAAS,EAAIA,EAAK,OAAS,UAAU,EACvDA,EAAK,OAAS,GAAGojB,EAAE,YAAY,EAAGpjB,EAAM,MAAM,EAC3Cg4F,EAAQ50E,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAClC,CAGA,IAAIg2E,GAAyBvB,GAIzBwB,GAAcH,GACdI,GAAcH,GAIlB,SAASI,GAAev5F,EAAiB,CACxC,IAAIxR,EAAIwR,EAAK,MAAMA,EAAK,EAAGA,EAAK,EAAI,CAAC,EACjCw5F,EAAShrG,EAAE,CAAC,EAAI,EAAIirG,EAAQjrG,EAAE,CAAC,EAAI,EACvCwR,EAAK,GAAK,EACV,IAAI05F,EAAKD,IAAS,EAAIjG,GAAS,CAAC,EAAG,EAAG,EAAG,EAAIhlG,EAAE,CAAC,EAAI,IAAOA,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAGA,EAAE,CAAC,CAAC,EAAG,CAAC,EAAIy0F,GAAcz0F,EAAG,CAAC,GAAK,EAC1G,OAAOgrG,EAASE,EAAK,IAAOA,CAC7B,CACA,SAASC,GAAe35F,EAAiBojB,EAAG,CACvCA,GAAK,OAAMA,EAAI8/D,GAAQ,CAAC,GAC5B,IAAIsW,EAAQ,EAAGC,EAAO,EAAGG,EAAO55F,EAAO,IAGvC,GAFKA,IAASA,EAAO,IAAQA,GAAQ,EAAE,GAAK,KAASA,EAAQ,GAAK,GAAQy5F,EAAO,EACvEG,IAASA,EAAO,IAAQA,GAAQ,EAAE,GAAK,KAASA,EAAQ,GAAK,KAAQH,EAAO,EAAGD,EAAQ,GAC7FC,EAAMr2E,EAAE,YAAY,KAAMo2E,EAAQI,EAAO55F,IAAS,IAAMw5F,EAAQ,EAAE,MACjE,OAAM,IAAI,MAAM,wBAA0Bx5F,CAAI,CACpD,CAIA,SAAS65F,GAAU75F,EAA+B,CACjD,IAAIi1F,EAAkB,CAAE,EAAG,CAAE,EAAE,EAAG,CAAE,CAAA,EACpC,OAAAA,EAAK,EAAE,EAAIj1F,EAAK,WAAW,CAAC,EAC5Bi1F,EAAK,EAAE,EAAIj1F,EAAK,WAAW,CAAC,EAC5Bi1F,EAAK,EAAE,EAAIj1F,EAAK,WAAW,CAAC,EAC5Bi1F,EAAK,EAAE,EAAIj1F,EAAK,WAAW,CAAC,EACrBi1F,CACR,CACA,SAAS6E,GAAUvgG,EAAa6pB,EAAG,CAClC,OAAKA,IAAGA,EAAI8/D,GAAQ,EAAE,GACtB9/D,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACtB6pB,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACtB6pB,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACtB6pB,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACf6pB,CACR,CAGA,IAAI22E,GAAqBF,GACrBG,GAAqBF,GAwBzB,SAASG,GAAWj6F,EAAoB,CACvC,GAAGA,EAAK,OAASA,EAAK,EAAI,EAAG,KAAM,4BACnC,OAAOA,EAAK,WAAW,EAAG,GAAG,CAC9B,CACA,SAASk6F,GAAWl6F,EAAMojB,EAAG,CAAE,OAAQA,GAAK8/D,GAAQ,CAAC,GAAG,YAAY,EAAGljF,EAAM,GAAG,CAAI,CAGpF,SAASm6F,GAAen6F,EAAoB,CAC3C,IAAI60E,EAAM,CAAA,EACN/1C,EAAI9+B,EAAK,WAAW,CAAC,EAGrBo6F,EAAat7D,IAAM,EAEnBj4B,EAAQ7G,EAAK,WAAW,CAAC,EACzBq6F,EAAMr6F,EAAK,WAAW,EAAG,GAAG,EAC5Bs6F,EAAKt6F,EAAK,WAAW,CAAC,EACtBu6F,EAAKv6F,EAAK,WAAW,CAAC,EACtBw6F,EAAKx6F,EAAK,WAAW,CAAC,EAG1B,OAFAA,EAAK,IAEGo6F,EAAU,CACjB,IAAK,GAAGvlB,EAAI,KAAO,EAAG,MACtB,IAAK,GACJA,EAAI,MAAQhuE,EACZ,IAAI4zF,EAAMC,GAAO7zF,CAAK,EAElB4zF,IAAK5lB,EAAI,IAAM8lB,GAAQF,CAAG,GAC9B,MACD,IAAK,GAEJ5lB,EAAI,IAAM8lB,GAAQ,CAACL,EAAIC,EAAIC,CAAE,CAAC,EAC9B,MACD,IAAK,GAAG3lB,EAAI,MAAQhuE,EAAO,KAC3B,CACD,OAAIwzF,GAAO,IAAGxlB,EAAI,KAAOwlB,EAAM,EAAIA,EAAM,MAAQA,EAAM,OAEhDxlB,CACR,CACA,SAAS+lB,GAAe55D,EAAO5d,EAAG,CAEjC,GADKA,IAAGA,EAAI8/D,GAAQ,CAAC,GACjB,CAACliD,GAASA,EAAM,KAAQ,OAAA5d,EAAE,YAAY,EAAG,CAAC,EAAGA,EAAE,YAAY,EAAG,CAAC,EAAUA,EACzE4d,EAAM,OAAS,MAClB5d,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAG4d,EAAM,KAAK,GAClBA,EAAM,OAAS,MACzB5d,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAG4d,EAAM,KAAK,IAE5B5d,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAG,CAAC,GAEnB,IAAIi3E,EAAMr5D,EAAM,MAAQ,EAIxB,GAHIq5D,EAAM,EAAGA,GAAO,MACXA,EAAM,IAAGA,GAAO,OACzBj3E,EAAE,YAAY,EAAGi3E,CAAG,EAChB,CAACr5D,EAAM,KAAOA,EAAM,OAAS,KAChC5d,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,MACZ,CACN,IAAIwb,EAAOoC,EAAM,KAAO,SACpB,OAAOpC,GAAO,WAAUA,GAAO,SAAWA,EAAI,SAAS,EAAE,GAAG,MAAM,EAAE,GACxExb,EAAE,YAAY,EAAG,SAASwb,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,CAAC,EAC9Cxb,EAAE,YAAY,EAAG,SAASwb,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,CAAC,EAC9Cxb,EAAE,YAAY,EAAG,SAASwb,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,CAAC,EAC9Cxb,EAAE,YAAY,EAAG,GAAI,CACrB,CACD,OAAOA,CACR,CAGA,SAASy3E,GAAgB76F,EAA0B,CAClD,IAAI8+B,EAAI9+B,EAAK,WAAW,CAAC,EACzBA,EAAK,IACL,IAAI60E,EAAM,CACT,MAAO/1C,EAAI,EACX,QAASA,EAAI,EACb,WAAYA,EAAI,EAChB,WAAYA,EAAI,EAChB,SAAUA,EAAI,GACd,QAASA,EAAI,GACb,UAAWA,EAAI,GACf,QAASA,EAAI,GACf,EACC,OAAO+1C,CACR,CACA,SAASimB,GAAgB9uD,EAAM5oB,EAAG,CAC5BA,IAAGA,EAAI8/D,GAAQ,CAAC,GACrB,IAAI6X,GACF/uD,EAAK,OAAS,EAAO,IACrBA,EAAK,OAAS,EAAO,IACrBA,EAAK,QAAU,GAAO,IACtBA,EAAK,OAAS,GAAO,IACrBA,EAAK,SAAW,GAAO,IACvBA,EAAK,OAAS,IAAO,GACvB,OAAA5oB,EAAE,YAAY,EAAG23E,CAAK,EACtB33E,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAsBA,IAAI43E,GAAc,EACdC,GAAc,EAOdC,GAAc,GAMdC,GAAc,GAOdC,GAAc,GACdC,GAAc,GAMdC,GAAc,GAIdC,GAAoB,KACpBC,GAAoB,KAGpBC,GAAc,GAKdC,GAAmB,CACf,EAAa,CAAE,EAAG,WAAY,EAAGV,EAAO,EACxC,EAAa,CAAE,EAAG,WAAY,EAAGS,EAAW,EAC5C,EAAa,CAAE,EAAG,qBAAsB,EAAGA,EAAW,EACtD,EAAa,CAAE,EAAG,YAAa,EAAGR,EAAO,EACzC,EAAa,CAAE,EAAG,YAAa,EAAGA,EAAO,EACzC,EAAa,CAAE,EAAG,iBAAkB,EAAGA,EAAO,EAC9C,EAAa,CAAE,EAAG,aAAc,EAAGA,EAAO,EAC1C,EAAa,CAAE,EAAG,YAAa,EAAGA,EAAO,EACzC,EAAa,CAAE,EAAG,cAAe,EAAGA,EAAO,EAC3C,GAAa,CAAE,EAAG,sBAAuB,EAAGA,EAAO,EACnD,GAAa,CAAE,EAAG,YAAa,EAAGC,EAAS,EAC3C,GAAa,CAAE,EAAG,eAAgB,EAAGK,EAAgD,EACrF,GAAa,CAAE,EAAG,gBAAiB,EAAGC,EAA4C,EAClF,GAAa,CAAE,EAAG,UAAW,EAAGC,EAAW,EAC3C,GAAa,CAAE,EAAG,UAAW,EAAGA,EAAW,EAC3C,GAAa,CAAE,EAAG,gBAAiB,EAAGP,EAAS,EAC/C,GAAa,CAAE,EAAG,iBAAkB,EAAGD,EAAO,EAC9C,GAAa,CAAE,EAAG,YAAa,EAAGC,EAAS,EAC3C,GAAa,CAAE,EAAG,oBAAqB,EAAGA,EAAS,EACnD,GAAa,CAAE,EAAG,aAAc,EAAGD,GAAO,EAAG,SAAW,EACxD,GAAa,CAAE,EAAG,SAAU,EAAGI,EAAS,EACxC,GAAa,CAAE,EAAG,cAAe,EAAGI,EAAW,EAC/C,GAAa,CAAE,EAAG,gBAAiB,EAAGA,EAAW,EACjD,GAAa,CAAE,EAAG,WAAY,EAAGA,EAAW,EAC5C,GAAa,CAAE,EAAG,UAAW,EAAGA,EAAW,EAC3C,IAAa,CAAE,EAEf,WAAmB,CAAE,EAAG,SAAU,EAAGN,EAAQ,EAC7C,WAAmB,CAAE,EAAG,WAAY,EAAGA,EAAQ,EAC/C,WAAmB,CAAE,CAC7B,EAGIQ,GAAe,CACX,EAAa,CAAE,EAAG,WAAY,EAAGX,EAAO,EACxC,EAAa,CAAE,EAAG,QAAS,EAAGS,EAAW,EACzC,EAAa,CAAE,EAAG,UAAW,EAAGA,EAAW,EAC3C,EAAa,CAAE,EAAG,SAAU,EAAGA,EAAW,EAC1C,EAAa,CAAE,EAAG,WAAY,EAAGA,EAAW,EAC5C,EAAa,CAAE,EAAG,WAAY,EAAGA,EAAW,EAC5C,EAAa,CAAE,EAAG,WAAY,EAAGA,EAAW,EAC5C,EAAa,CAAE,EAAG,aAAc,EAAGA,EAAW,EAC9C,EAAa,CAAE,EAAG,YAAa,EAAGA,EAAW,EAC7C,GAAa,CAAE,EAAG,WAAY,EAAGL,EAAa,EAC9C,GAAa,CAAE,EAAG,cAAe,EAAGA,EAAa,EACjD,GAAa,CAAE,EAAG,cAAe,EAAGA,EAAa,EACjD,GAAa,CAAE,EAAG,eAAgB,EAAGA,EAAa,EAClD,GAAa,CAAE,EAAG,YAAa,EAAGH,EAAO,EACzC,GAAa,CAAE,EAAG,YAAa,EAAGA,EAAO,EACzC,GAAa,CAAE,EAAG,YAAa,EAAGA,EAAO,EACzC,GAAa,CAAE,EAAG,YAAa,EAAGK,EAAO,EACzC,GAAa,CAAE,EAAG,cAAe,EAAGG,EAAW,EAC/C,GAAa,CAAE,EAAG,cAAe,EAAGR,EAAO,EAC3C,IAAa,CAAE,EAEf,WAAmB,CAAE,EAAG,SAAU,EAAGE,EAAQ,EAC7C,WAAmB,CAAE,EAAG,WAAY,EAAGA,EAAQ,EAC/C,WAAmB,CAAE,CAC7B,EA+EA,SAASS,GAAOlxG,EAA2D,CAAE,OAAOA,EAAI,IAAI,SAASu5C,EAAG,CAAE,MAAO,CAAEA,GAAG,GAAI,IAAKA,GAAG,EAAG,IAAIA,EAAE,GAAG,CAAI,CAAA,CAAI,CAItJ,IAAI43D,GAAwBD,GAAO,CAElC,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAGA,EACA,SACA,SACA,MACA,IACA,SACA,SACA,MAEA,QACA,MACA,IACA,QACA,QACA,MACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,MACA,SAEA,IACA,SACA,SACA,MACA,QACA,QACA,MACA,IACA,MACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,MACA,QACA,MACA,QACA,SACA,SACA,QACA,QAGA,SACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CACD,CAAC,EACGlB,GAAsBhL,GAAImM,EAAO,EAGjClF,GAAO,CACH,EAAa,SACb,EAAa,UACb,GAAa,UACb,GAAa,QACb,GAAa,SACb,GAAa,QACb,GAAa,OACb,GAAa,gBACb,IAAa,OACrB,EAkBImF,GAAgC,CAEnC,6EAA8E,YAC9E,uDAAwD,YACxD,0DAA2D,YAC3D,uDAAwD,YACxD,gFAAiF,YAGjF,4EAA6E,SAC7E,qCAAsC,SACtC,sCAAuC,OAGvC,6EAA8E,SAC9E,sCAAuC,SAGvC,0CAA2C,SAC3C,sCAAuC,SACvC,0CAA2C,OAC3C,sCAAuC,OAGvC,8EAA+E,UAC/E,uCAAwC,UAGxC,gFAAiF,OACjF,yCAA0C,OAG1C,yEAA0E,SAC1E,kCAAmC,SAGnC,6DAA8D,YAC9D,sEAAuE,YACvE,wEAAyE,WAGzE,wEAAyE,OACzE,6EAA8E,OAG9E,2EAA4E,WAC5E,oCAAqC,WACrC,gDAAiD,mBACjD,sCAAuC,SAGvC,gFAAiF,WACjF,yCAA0C,WAG1C,sCAAuC,OACvC,6EAA8E,OAG9E,oEAAqE,OAGrE,gDAAiD,OAGjD,2CAA4C,OAG5C,wCAAyC,OAGzC,qCAAsC,aACtC,4EAA6E,aAG7E,8EAA+E,OAG/E,oCAAqC,OACrC,wCAAyC,OAGzC,4CAA6C,OAG7C,uCAAwC,OACxC,8EAA+E,OAG/E,wCAAyC,QACzC,+EAAgF,QAGhF,gDAAiD,OACjD,6CAA8C,OAC9C,uFAAwF,OACxF,oFAAqF,OAGrF,sCAAuC,OACvC,6EAA8E,OAG9E,qCAAsC,OACtC,2CAA4C,OAC5C,uCAAwC,OACxC,kFAAmF,OACnF,8EAA+E,OAC/E,4EAA6E,OAG7E,4CAA6C,OAC7C,mFAAoF,OAGpF,kCAAmC,OACnC,uCAAwC,OACxC,sCAAuC,OACvC,2CAA4C,OAG5C,qCAAsC,OAGtC,iCAAkC,OAClC,wEAAyE,OAGzE,0DAA2D,SAG3D,kEAAmE,OAGnE,wCAAyC,OACzC,6CAA8C,OAG9C,uCAAwC,MACxC,gDAAiD,OAGjD,iDAAkD,OAClD,uFAAwF,OAGxF,iDAAkD,OAGlD,2DAA4D,OAG5D,sCAAuC,OAGvC,4DAA6D,WAC7D,0EAA2E,OAC3E,4EAA6E,OAC7E,0EAA2E,OAC3E,4EAA6E,OAC7E,2EAA4E,OAG5E,2DAA4D,OAE5D,2DAA4D,OAC5D,0DAA2D,OAG3D,YAAa,OAEb,MAAS,IACV,EAEIC,GAAU,CACZ,UAAW,CACV,KAAM,6EACN,KAAM,uDACN,KAAM,0DACN,KAAM,uDACN,KAAM,+EACN,EACD,KAAM,CACL,KAAM,gFACN,KAAM,wCACN,EACD,SAAU,CACT,KAAM,2EACN,KAAM,mCACN,EACD,OAAQ,CACP,KAAM,4EACN,KAAM,oCACN,EACD,OAAQ,CACP,KAAM,6EACN,KAAM,qCACN,EACD,QAAS,CACR,KAAM,8EACN,KAAM,sCACN,EACD,OAAQ,CACP,KAAM,0CACN,KAAM,qCACN,EACD,SAAU,CACT,KAAM,gFACN,KAAM,wCACN,EACD,OAAQ,CACP,KAAM,yEACN,KAAM,iCACN,CACH,EAEA,SAASC,IAAiB,CACzB,MAAQ,CACP,UAAU,CAAA,EAAI,OAAO,GAAI,OAAO,CAAA,EAAI,QAAQ,GAAI,OAAO,CAAE,EACzD,KAAK,CAAA,EAAI,KAAK,GAAI,SAAS,CAAA,EAAI,iBAAiB,GAAI,MAAM,CAAE,EAC5D,UAAU,CAAA,EAAI,SAAS,GAAI,UAAU,CAAA,EAAI,OAAO,GAAI,OAAO,CAAE,EAC7D,WAAW,CAAA,EAAI,IAAK,GAAI,SAAU,CAAA,EAAI,SAAU,GAAI,OAAO,CAAE,EAC7D,KAAK,CAAE,EAAE,MAAO,GAClB,CA0BA,SAASC,GAASC,EAAIviE,EAAiB,CACtC,IAAIwiE,EAAsCvN,GAAUkN,EAAO,EAEvD14E,EAAsB,CAAE,EAAE7zB,EAC9B6zB,EAAEA,EAAE,MAAM,EAAK+sE,GACf/sE,EAAEA,EAAE,MAAM,EAAIsuE,GAAU,QAAS,KAAM,CACtC,MAASI,GAAM,GACf,YAAaA,GAAM,IACnB,YAAaA,GAAM,GACrB,CAAE,EAED1uE,EAAIA,EAAE,OAAO,CACZ,CAAC,MAAO,iBAAiB,EACzB,CAAC,MAAO,yDAAyD,EACjE,CAAC,MAAO,0DAA0D,EAClE,CAAC,OAAQ,0DAA0D,EAEnE,CAAC,MAAO,WAAW,EACnB,CAAC,MAAO,WAAW,EACnB,CAAC,MAAO,WAAW,EACnB,CAAC,MAAO,aAAa,EACrB,CAAC,MAAO,aAAa,EACrB,CAAC,MAAO,YAAY,EAAG,CAAC,OAAQ,YAAY,EAC5C,CAAC,MAAO,YAAY,EAAG,CAAC,OAAQ,YAAY,EAC5C,CAAC,MAAO,iBAAiB,EACzB,CAAC,OAAQ,0DAA0D,CACrE,EAAG,IAAI,SAAS6gB,EAAG,CACjB,OAAOytD,GAAU,UAAW,KAAM,CAAC,UAAYztD,EAAE,CAAC,EAAG,YAAeA,EAAE,CAAC,CAAC,CAAC,CACzE,CAAA,CAAC,EAGF,IAAIm4D,EAAK,SAASnqE,EAAG,CACjBiqE,EAAGjqE,CAAC,GAAKiqE,EAAGjqE,CAAC,EAAE,OAAS,IAC1B1iC,EAAI2sG,EAAGjqE,CAAC,EAAE,CAAC,EACX7O,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,WAAY,KAAM,CAC1C,UAAaniG,EAAE,CAAC,GAAK,IAAM,GAAG,KAAOA,EACrC,YAAewsG,GAAQ9pE,CAAC,EAAE0H,EAAK,QAAQ,GAAKoiE,GAAQ9pE,CAAC,EAAE,IACvD,CAAA,EAEJ,EAGKoqE,EAAK,SAASpqE,EAAG,EACnBiqE,EAAGjqE,CAAC,GAAG,CAAE,GAAE,QAAQ,SAAS1iC,EAAG,CAC/B6zB,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,WAAY,KAAM,CAC1C,UAAaniG,EAAE,CAAC,GAAK,IAAM,GAAG,KAAOA,EACrC,YAAewsG,GAAQ9pE,CAAC,EAAE0H,EAAK,QAAQ,GAAKoiE,GAAQ9pE,CAAC,EAAE,IACvD,CAAA,CACJ,CAAG,CACH,EAGKqqE,EAAK,SAASttF,EAAG,EACnBktF,EAAGltF,CAAC,GAAG,CAAE,GAAE,QAAQ,SAASzf,EAAG,CAC/B6zB,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,WAAY,KAAM,CAC1C,UAAaniG,EAAE,CAAC,GAAK,IAAM,GAAG,KAAOA,EACrC,YAAe4sG,EAAQntF,CAAC,EAAE,CAAC,CAC3B,CAAA,CACJ,CAAG,CACH,EAEC,OAAAotF,EAAG,WAAW,EACdC,EAAG,QAAQ,EACXA,EAAG,QAAQ,EACXC,EAAG,QAAQ,EACX,CAAC,OAAQ,QAAQ,EAAE,QAAQF,CAAE,EAC7B,CAAC,YAAa,WAAY,WAAW,EAAE,QAAQE,CAAE,EACjDA,EAAG,KAAK,EACRA,EAAG,UAAU,EACbA,EAAG,kBAAkB,EACrBA,EAAG,UAAU,EACbD,EAAG,UAAU,EACbC,EAAG,QAAQ,EACRl5E,EAAE,OAAO,IAAIA,EAAEA,EAAE,MAAM,EAAK,WAAaA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GAC/DA,EAAE,KAAK,EAAE,CACjB,CAEA,IAAIm5E,GAAQ,CACX,GAAI,qFACJ,MAAO,qFACP,MAAO,gFACP,IAAK,iFACL,MAAO,uFACP,MAAO,0FACP,MAAO,mFACP,KAAM,gFACN,MAAO,qFACP,KAAM,+EACN,WAAY,wFACZ,UAAW,0FACX,WAAY,wFACZ,IAAK,oFACL,IAAK,6EACL,MAAO,4EACP,MAAO,4EACP,QAAS,iEACT,GAAI,iFACJ,GAAI,CACH,gFACA,mEACA,EACD,GAAI,kFACJ,GAAI,sEACJ,IAAK,4EACL,KAAM,8EACN,OAAQ,oFACR,MAAO,4EACP,OAAQ,mEACR,IAAK,mEACN,EAIA,SAASC,GAAc7b,EAA4B,CAClD,IAAIxzF,EAAIwzF,EAAK,YAAY,GAAG,EAC5B,OAAOA,EAAK,MAAM,EAAExzF,EAAE,CAAC,EAAI,SAAWwzF,EAAK,MAAMxzF,EAAE,CAAC,EAAI,OACzD,CA0BA,SAASsvG,GAAWC,EAAiB,CACpC,IAAIt5E,EAAI,CAAC+sE,GAAYuB,GAAU,gBAAiB,KAAM,CAErD,MAASI,GAAM,IACf,CAAA,CAAC,EACF,OAAAjxF,GAAK67F,EAAK,KAAK,CAAC,EAAE,QAAQ,SAAS57C,EAAK,CACvC19B,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,eAAgB,KAAMgL,EAAK,KAAK,EAAE57C,CAAG,CAAC,CACjE,CAAE,EACE19B,EAAE,OAAO,IAAIA,EAAEA,EAAE,MAAM,EAAK,mBAAqBA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GACvEA,EAAE,KAAK,EAAE,CACjB,CAEA,SAASu5E,GAASD,EAAME,EAAgBv+D,EAAG5rC,EAAMoqG,EAAQC,EAAmC,CAI3F,GAHID,IAAQA,EAAS,IACjBH,EAAK,KAAK,IAAGA,EAAK,KAAK,EAAI,IAC3BA,EAAK,MAAM,IAAGA,EAAK,MAAM,EAAI,GAC9BE,EAAM,EAAG,IAAIA,EAAMF,EAAK,MAAM,EAAGA,EAAK,KAAK,EAAE,MAAQE,CAAG,EAAG,EAAEA,EAAI,CAOpE,GANAF,EAAK,MAAM,EAAIE,EAAM,EACrBC,EAAO,GAAK,MAAQD,EACpBC,EAAO,KAAOpqG,EACdoqG,EAAO,OAASx+D,EAER,CAACk+D,GAAK,MAAOA,GAAK,MAAOA,GAAK,KAAK,EAAE,QAAQM,EAAO,IAAI,EAAI,KAAIA,EAAO,WAAa,YACzFH,EAAK,KAAK,EAAEG,EAAO,EAAE,EAAG,MAAM,IAAI,MAAM,sBAAwBD,CAAG,EACtE,OAAAF,EAAK,KAAK,EAAEG,EAAO,EAAE,EAAIA,EACzBH,GAAM,IAAMG,EAAO,QAAQ,QAAQ,KAAK,GAAG,CAAC,EAAIA,EACzCD,CACR,CAuBA,SAASG,GAAeC,EAA+C,CACtE,IAAI55E,EAAI,CAAC+sE,EAAU,EACnB/sE,EAAE,KAAK;AAAA,CAAkH,EACzHA,EAAE,KAAK;AAAA,CAA+I,EACtJ,QAAQx4B,EAAI,EAAGA,EAAIoyG,EAAS,OAAQ,EAAEpyG,EAAGw4B,EAAE,KAAK,8CAAgD45E,EAASpyG,CAAC,EAAE,CAAC,EAAI,0BAA4BoyG,EAASpyG,CAAC,EAAE,CAAC,EAAI;AAAA,CAAO,EACrK,OAAAw4B,EAAE,KAAK,sBAAsB,EACtBA,EAAE,KAAK,EAAE,CACjB,CAGA,SAAS65E,GAAetc,EAAiBpzF,EAAgB2wB,EAAiB,CACzE,MAAO,CACN,iCAAmCyiE,EAAO;AAAA,EAC1C,8EAAgFziE,GAAO,OAAS,IAAM3wB,EAAM;AAAA,EAC5G;AAAA,CACF,EAAG,KAAK,EAAE,CACV,CACA,SAAS2vG,GAAc9yF,EAAiBu2E,EAAiB,CACxD,MAAO,CACN,iCAAmCv2E,EAAO;AAAA,EAC1C,iGAAmGu2E,EAAO;AAAA,EAC1G;AAAA,CACF,EAAG,KAAK,EAAE,CACV,CACA,SAASwc,GAAUC,EAAK,CACvB,IAAIh6E,EAAI,CAAC+sE,EAAU,EACnB/sE,EAAE,KAAK;AAAA,CAAqE,EAC5E,QAAQx4B,EAAI,EAAGA,GAAKwyG,EAAI,OAAQ,EAAExyG,EACjCw4B,EAAE,KAAK65E,GAAeG,EAAIxyG,CAAC,EAAE,CAAC,EAAGwyG,EAAIxyG,CAAC,EAAE,CAAC,CAAC,CAAC,EAC3Cw4B,EAAE,KAAK85E,GAAc,GAAGE,EAAIxyG,CAAC,EAAE,CAAC,CAAC,CAAC,EAEnC,OAAAw4B,EAAE,KAAK65E,GAAe,GAAG,WAAY,KAAK,CAAC,EAC3C75E,EAAE,KAAK,YAAY,EACZA,EAAE,KAAK,EAAE,CACjB,CAEA,SAASi6E,IAA0D,CAClE,MAAO,sSAA6SzqB,GAAK,QAAU,wDACpU,CAIA,IAAI0qB,GAAuC,CAC1C,CAAC,cAAe,UAAU,EAC1B,CAAC,mBAAoB,eAAe,EACpC,CAAC,cAAe,UAAU,EAC1B,CAAC,oBAAqB,YAAY,EAClC,CAAC,iBAAkB,aAAa,EAChC,CAAC,cAAe,WAAW,EAC3B,CAAC,aAAc,SAAS,EACxB,CAAC,aAAc,QAAQ,EACvB,CAAC,iBAAkB,UAAU,EAC7B,CAAC,gBAAiB,YAAY,EAC9B,CAAC,cAAe,UAAU,EAC1B,CAAC,aAAc,SAAS,EACxB,CAAC,WAAY,OAAO,EACpB,CAAC,kBAAmB,cAAe,MAAM,EACzC,CAAC,mBAAoB,eAAgB,MAAM,CAC5C,EAyBA,SAASC,GAAQl/D,EAAG/hB,EAAGnS,EAAGiZ,EAAGnnB,EAAG,CAC5BA,EAAEoiC,CAAC,GAAK,MAAQ/hB,GAAK,MAAQA,IAAM,KACtCrgB,EAAEoiC,CAAC,EAAI/hB,EACPA,EAAIk0E,GAAUl0E,CAAC,EACf8G,EAAEA,EAAE,MAAM,EAAKjZ,EAAIunF,GAAUrzD,EAAE/hB,EAAEnS,CAAC,EAAIqnF,GAASnzD,EAAE/hB,CAAC,EACnD,CAEA,SAASkhF,GAAiBxqB,EAAI8R,EAAO,CACpC,IAAInrD,EAAOmrD,GAAS,GAChB1hE,EAAI,CAAC+sE,GAAYuB,GAAU,oBAAqB,KAAM,CAEzD,WAAYI,GAAM,WAClB,WAAYA,GAAM,GAClB,gBAAiBA,GAAM,QACvB,iBAAkBA,GAAM,SACxB,YAAaA,GAAM,GACrB,CAAE,CAAC,EAAG71F,EAAI,GACT,GAAG,CAAC+2E,GAAM,CAACr5C,EAAK,MAAO,OAAOvW,EAAE,KAAK,EAAE,EAEpC4vD,IACCA,EAAG,aAAe,MAAMuqB,GAAQ,kBAAmB,OAAOvqB,EAAG,aAAgB,SAAWA,EAAG,YAAc2e,GAAa3e,EAAG,YAAar5C,EAAK,GAAG,EAAG,CAAC,WAAW,gBAAgB,EAAGvW,EAAGnnB,CAAC,EACpL+2E,EAAG,cAAgB,MAAMuqB,GAAQ,mBAAoB,OAAOvqB,EAAG,cAAiB,SAAWA,EAAG,aAAe2e,GAAa3e,EAAG,aAAcr5C,EAAK,GAAG,EAAG,CAAC,WAAW,gBAAgB,EAAGvW,EAAGnnB,CAAC,GAG7L,QAAQrR,EAAI,EAAGA,GAAK0yG,GAAW,OAAQ,EAAE1yG,EAAG,CAC3C,IAAIyzC,EAAIi/D,GAAW1yG,CAAC,EAChB2E,EAAIoqC,EAAK,OAASA,EAAK,MAAM0E,EAAE,CAAC,CAAC,GAAK,KAAO1E,EAAK,MAAM0E,EAAE,CAAC,CAAC,EAAI20C,EAAKA,EAAG30C,EAAE,CAAC,CAAC,EAAI,KACjF9uC,IAAM,GAAMA,EAAI,IACXA,IAAM,GAAOA,EAAI,IACjB,OAAOA,GAAK,WAAUA,EAAI,OAAOA,CAAC,GACvCA,GAAK,MAAMguG,GAAQl/D,EAAE,CAAC,EAAG9uC,EAAG,KAAM6zB,EAAGnnB,CAAC,CACzC,CACD,OAAGmnB,EAAE,OAAO,IAAIA,EAAEA,EAAE,MAAM,EAAK,uBAAyBA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GAC3EA,EAAE,KAAK,EAAE,CACjB,CAGA,IAAIq6E,GAAsC,CACzC,CAAC,cAAe,cAAe,QAAQ,EACvC,CAAC,aAAc,aAAc,QAAQ,EACrC,CAAC,UAAW,UAAW,QAAQ,EAC/B,CAAC,cAAe,cAAe,QAAQ,EACvC,CAAC,UAAW,UAAW,QAAQ,EAC/B,CAAC,oBAAqB,oBAAqB,MAAM,EACjD,CAAC,YAAa,YAAa,MAAM,EACjC,CAAC,gBAAiB,gBAAiB,MAAM,EACzC,CAAC,YAAa,YAAa,MAAM,EACjC,CAAC,eAAgB,eAAgB,KAAK,EACtC,CAAC,gBAAiB,gBAAiB,KAAK,CACzC,EAEIC,GAAmB,CACtB,aAAe,aACf,cAAe,eACf,cAAe,YAChB,EAqEA,SAASC,GAAgB3qB,EAA2B,CACnD,IAAI5vD,EAAsB,CAAA,EAAIw6E,EAAIlM,GAClC,OAAI1e,IAAIA,EAAK,IACbA,EAAG,YAAc,UACjB5vD,EAAEA,EAAE,MAAM,EAAK+sE,GACf/sE,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,aAAc,KAAM,CAC5C,MAASI,GAAM,UACf,WAAYA,GAAM,EAClB,CAAA,EAED2L,GAAU,QAAQ,SAASp/D,EAAG,CAC7B,GAAG20C,EAAG30C,EAAE,CAAC,CAAC,IAAM,OAChB,KAAI9uC,EACJ,OAAO8uC,EAAE,CAAC,EAAC,CACV,IAAK,SAAU9uC,EAAIihG,GAAU,OAAOxd,EAAG30C,EAAE,CAAC,CAAC,CAAC,CAAC,EAAG,MAChD,IAAK,OAAQ9uC,EAAIyjF,EAAG30C,EAAE,CAAC,CAAC,EAAI,OAAS,QAAS,KAC9C,CACE9uC,IAAM,SAAW6zB,EAAEA,EAAE,MAAM,EAAKw6E,EAAEv/D,EAAE,CAAC,EAAG9uC,CAAC,GAC9C,CAAE,EAGD6zB,EAAEA,EAAE,MAAM,EAAKw6E,EAAE,eAAgBA,EAAE,YAAaA,EAAE,aAAc,iCAAiC,EAAEA,EAAE,aAAcA,EAAE,QAAS,OAAO5qB,EAAG,UAAU,CAAC,CAAC,EAAG,CAAC,KAAK,EAAG,SAAS,SAAS,CAAC,CAAC,EACpL5vD,EAAEA,EAAE,MAAM,EAAKw6E,EAAE,gBAAiBA,EAAE,YAAa5qB,EAAG,WAAW,IAAI,SAAStvE,EAAG,CAAE,MAAO,aAAe8sF,GAAU9sF,CAAC,EAAI,aAAgB,CAAA,EAAE,KAAK,EAAE,EAAG,CAAC,KAAMsvE,EAAG,WAAY,SAAS,OAAO,CAAC,CAAC,EACvL5vD,EAAE,OAAO,IAAIA,EAAEA,EAAE,MAAM,EAAK,gBAAkBA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GACpEA,EAAE,KAAK,EAAE,CACjB,CA+CA,SAASy6E,GAAiB7qB,EAA2B,CACpD,IAAI5vD,EAAI,CAAC+sE,GAAYuB,GAAU,aAAc,KAAM,CAClD,MAASI,GAAM,WACf,WAAYA,GAAM,EAClB,CAAA,CAAC,EACF,GAAG,CAAC9e,EAAI,OAAO5vD,EAAE,KAAK,EAAE,EACxB,IAAI06E,EAAM,EACV,OAAAj9F,GAAKmyE,CAAE,EAAE,QAAQ,SAAkBv0C,EAAG,CAAE,EAAEq/D,EACzC16E,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,WAAYE,GAAS5e,EAAGv0C,CAAC,CAAO,EAAG,CAC3D,MAAS,yCACT,IAAOq/D,EACP,KAAQtN,GAAU/xD,CAAC,CACnB,CAAA,CACH,CAAE,EACErb,EAAE,OAAO,IAAIA,EAAEA,EAAE,MAAM,EAAI,gBAAiBA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GAClEA,EAAE,KAAK,EAAE,CACjB,CAEA,IAAI26E,GAAkB,CACrB,MAAO,QACP,QAAS,UACT,OAAQ,SACR,SAAU,WACV,SAAU,cACV,WAAY,aACZ,UAAW,WACX,YAAa,UAEb,YAAa,cACb,YAAa,UACb,aAAc,YAId,SAAU,WAEV,QAAS,UACT,QAAS,UAOT,WAAY,UAEZ,cAAe,gBACf,WAAY,aACZ,SAAU,UACX,EASA,SAASC,GAAoBC,EAAOtkE,EAAM,CACzC,IAAIvW,EAAsB,CAAA,EAC1B,OAAAviB,GAAKk9F,EAAe,EAAE,IAAI,SAASrzF,EAAG,CACrC,QAAQ,EAAI,EAAG,EAAI4yF,GAAW,OAAQ,EAAE,EAAG,GAAGA,GAAW,CAAC,EAAE,CAAC,GAAK5yF,EAAG,OAAO4yF,GAAW,CAAC,EACxF,IAAI,EAAI,EAAG,EAAIG,GAAU,OAAQ,EAAE,EAAG,GAAGA,GAAU,CAAC,EAAE,CAAC,GAAK/yF,EAAG,OAAO+yF,GAAU,CAAC,EACjF,MAAM/yF,CACR,CAAE,EAAE,QAAQ,SAASzO,EAAG,CACtB,GAAGgiG,EAAMhiG,EAAE,CAAC,CAAC,GAAK,KAClB,KAAIyO,EAAIivB,GAAQA,EAAK,OAASA,EAAK,MAAM19B,EAAE,CAAC,CAAC,GAAK,KAAO09B,EAAK,MAAM19B,EAAE,CAAC,CAAC,EAAIgiG,EAAMhiG,EAAE,CAAC,CAAC,EACtF,OAAOA,EAAE,CAAC,EAAC,CACV,IAAK,OAAQyO,EAAI,IAAI,KAAKA,CAAC,EAAE,YAAa,EAAC,QAAQ,SAAS,GAAG,EAAG,KAClE,CACE,OAAOA,GAAK,SAAUA,EAAI,OAAOA,CAAC,EAC7BA,IAAM,IAAQA,IAAM,GAASA,EAAIA,EAAI,IAAM,IAC3CA,aAAa,OAAMA,EAAI,IAAI,KAAKA,CAAC,EAAE,cAAc,QAAQ,SAAS,EAAE,GAC5E0Y,EAAE,KAAKouE,GAASuM,GAAgB9hG,EAAE,CAAC,CAAC,GAAKA,EAAE,CAAC,EAAGyO,CAAC,CAAC,EACnD,CAAE,EACMgnF,GAAU,qBAAsBtuE,EAAE,KAAK,EAAE,EAAG,CAAC,MAAM4uE,GAAO,CAAC,CAAE,CACrE,CACA,SAASkM,GAAqBD,EAAOE,EAAuB,CAC3D,IAAIC,EAAY,CAAC,aAAa,YAAY,EACtClgB,EAAI,2BACJ96D,EAAsB,CAAA,EAC1B,OAAG66E,GAAOp9F,GAAKo9F,CAAK,EAAE,QAAQ,SAASx/D,EAAG,CAEzC,GAAI,OAAO,UAAU,eAAe,KAAKw/D,EAAOx/D,CAAC,EACjD,SAAQ7zC,EAAI,EAAGA,EAAI0yG,GAAW,OAAQ,EAAE1yG,EAAG,GAAG6zC,GAAK6+D,GAAW1yG,CAAC,EAAE,CAAC,EAAG,OACrE,IAAIA,EAAI,EAAGA,EAAI6yG,GAAU,OAAQ,EAAE7yG,EAAG,GAAG6zC,GAAKg/D,GAAU7yG,CAAC,EAAE,CAAC,EAAG,OAC/D,IAAIA,EAAI,EAAGA,EAAIwzG,EAAU,OAAQ,EAAExzG,EAAG,GAAG6zC,GAAK2/D,EAAUxzG,CAAC,EAAG,OAE5D,IAAI8f,EAAIuzF,EAAMx/D,CAAC,EACXzvB,EAAI,SACL,OAAOtE,GAAK,UAAYsE,EAAI,QAAStE,EAAI,OAAOA,CAAC,GAC5CA,IAAM,IAAQA,IAAM,IAASsE,EAAI,UAAWtE,EAAIA,EAAI,IAAM,KAC7DA,EAAI,OAAOA,CAAC,EACjB0Y,EAAE,KAAKsuE,GAAUjB,GAAahyD,CAAC,EAAG/zB,EAAG,CAAC,QAAQsE,CAAC,CAAC,CAAC,EACnD,CAAE,EACEmvF,GAAWt9F,GAAKs9F,CAAS,EAAE,QAAQ,SAAS1/D,EAAG,CAEjD,GAAI,OAAO,UAAU,eAAe,KAAK0/D,EAAW1/D,CAAC,GAClD,EAAAw/D,GAAS,OAAO,UAAU,eAAe,KAAKA,EAAOx/D,CAAC,GACzD,KAAI/zB,EAAIyzF,EAAU1/D,CAAC,EACfzvB,EAAI,SACL,OAAOtE,GAAK,UAAYsE,EAAI,QAAStE,EAAI,OAAOA,CAAC,GAC5CA,IAAM,IAAQA,IAAM,IAASsE,EAAI,UAAWtE,EAAIA,EAAI,IAAM,KAC1DA,aAAa,MAAQsE,EAAI,cAAetE,EAAIA,EAAE,YAAW,GAC5DA,EAAI,OAAOA,CAAC,EACjB0Y,EAAE,KAAKsuE,GAAUjB,GAAahyD,CAAC,EAAG/zB,EAAG,CAAC,QAAQsE,CAAC,CAAC,CAAC,EACnD,CAAE,EACM,IAAMkvE,EAAI,WAAa8T,GAAO,EAAI,KAAO5uE,EAAE,KAAK,EAAE,EAAI,KAAO86D,EAAI,GACzE,CAQA,SAASmgB,GAAe7tB,EAAsB,CAC7C,IAAIx0B,EAAQ,OAAOw0B,GAAQ,SAAY,IAAI,KAAK,KAAK,MAAMA,CAAI,CAAC,EAAIA,EAChExhE,EAAIgtC,EAAK,QAAO,EAAK,IAAO,YAC5BlsD,EAAIkf,EAAI,KAAK,IAAI,EAAE,EAAE,EAAG7E,GAAK6E,EAAIlf,GAAK,KAAK,IAAI,EAAE,EAAE,EACvDA,GAAK,IAAKqa,GAAK,IACf,IAAI8nB,EAAKniC,EAAI,KAAK,IAAI,EAAE,EAAE,EAAK,EAC5BmiC,EAAI,IAAKniC,EAAIA,EAAI,KAAK,IAAI,EAAE,EAAE,EAAGqa,GAAK8nB,GACzC,IAAI7O,EAAI8/D,GAAQ,CAAC,EAAG,OAAA9/D,EAAE,YAAY,EAAGtzB,CAAC,EAAGszB,EAAE,YAAY,EAAGjZ,CAAC,EAAUiZ,CACtE,CA4HA,SAASk7E,GAAyB7rG,EAAiB/G,EAAO,CACzD,IAAI03B,EAAI8/D,GAAQ,CAAC,EAAGjnF,EAAIinF,GAAQ,CAAC,EAEjC,OADA9/D,EAAE,YAAY,EAAG3wB,GAAQ,GAAO,GAAOA,CAAI,EACpCA,EAAI,CACV,IAAK,GAAgBwJ,EAAE,YAAY,GAAIvQ,CAAK,EAAG,MAC/C,IAAK,GAAgBuQ,EAAIinF,GAAQ,CAAC,EAAGjnF,EAAE,YAAY,EAAGvQ,EAAO,GAAG,EAAG,MACnE,IAAK,IAAkBuQ,EAAE,YAAY,EAAGvQ,EAAQ,EAAO,CAAI,EAAG,MAC9D,IAAK,IAA6GuQ,EAAIoiG,GAAe3yG,CAAK,EAAG,MAC7I,IAAK,IACL,IAAK,IAKJ,IAHAuQ,EAAIinF,GAAQ,EAAI,GAAKx3F,EAAM,OAAS,IAAMA,EAAM,OAAS,EAAI,EAAI,EAAE,EACnEuQ,EAAE,YAAY,EAAGvQ,EAAM,OAAS,CAAC,EACjCuQ,EAAE,YAAY,EAAGvQ,EAAO,MAAM,EACxBuQ,EAAE,GAAKA,EAAE,QAAQA,EAAE,YAAY,EAAG,CAAC,EACzC,MACD,QAAS,MAAM,IAAI,MAAM,wCAA0CxJ,EAAO,IAAM/G,CAAK,CACrF,CACD,OAAO+oF,GAAQ,CAACrxD,EAAGnnB,CAAC,CAAC,CACtB,CA4FA,IAAIsiG,GAAY,CAAE,WAAY,YAAa,gBAAiB,cAAe,mBAAoB,SAC/F,SAASC,GAAoBx0G,EAAwB,CACpD,OAAO,OAAOA,EAAG,CAChB,IAAK,UAAW,MAAO,IACvB,IAAK,SAAU,OAASA,EAAI,IAAIA,EAAO,EAAO,EAC9C,IAAK,SAAU,MAAO,IACtB,IAAK,SAAU,GAAGA,aAAe,KAAM,MAAO,IAAM,KACpD,CACD,MAAO,EACR,CACA,SAASy0G,GAAkBrvG,EAASsvG,EAAIC,EAAO,CAC9C,IAAIC,EAAM1b,GAAQ,CAAC,EAAG2b,EAAO,CAAE,EAAErwF,EAAO,GACpC+xE,EAAK,EAAG31F,EAAI,EAEZk0G,EAAK5b,GAAQ,CAAC,EAAG6b,EAAM7b,GAAQ,CAAC,EAOpC,GANA4b,EAAG,YAAY,EAAG,CAAM,EACxBA,EAAG,YAAY,EAAG,IAAM,EACxBC,EAAI,YAAY,EAAG,CAAM,EACzBvwF,EAAK,KAAKswF,CAAE,EAAGD,EAAK,KAAKE,CAAG,EAC5Bxe,GAAM,EAAIue,EAAG,OAEV,CAACJ,EAAI,CACPK,EAAM7b,GAAQ,CAAC,EACf6b,EAAI,YAAY,EAAG,CAAC,EACpBF,EAAK,QAAQE,CAAG,EAEhB,IAAIrqB,EAAO,CAACwO,GAAQ,CAAC,CAAC,EAEtB,IADAxO,EAAK,CAAC,EAAE,YAAY,EAAGtlF,EAAQ,MAAM,EACjCxE,EAAI,EAAGA,EAAIwE,EAAQ,OAAQ,EAAExE,EAAG,CACnC,IAAIc,EAAQ0D,EAAQxE,CAAC,EAAE,CAAC,EAKxB,IAJAk0G,EAAK5b,GAAQ,EAAQ,GAAKx3F,EAAM,OAAS,IAAMA,EAAM,OAAS,EAAI,EAAI,EAAE,EACxEozG,EAAG,YAAY,EAAGl0G,EAAE,CAAC,EACrBk0G,EAAG,YAAY,EAAGpzG,EAAM,OAAS,CAAC,EAClCozG,EAAG,YAAY,EAAGpzG,EAAO,MAAM,EACzBozG,EAAG,GAAKA,EAAG,QAAQA,EAAG,YAAY,EAAG,CAAC,EAC5CpqB,EAAK,KAAKoqB,CAAE,CACZ,CACDA,EAAKrqB,GAAQC,CAAI,EACjBlmE,EAAK,QAAQswF,CAAE,EACfve,GAAM,EAAIue,EAAG,MACb,CAED,IAAIl0G,EAAI,EAAGA,EAAIwE,EAAQ,OAAQ,EAAExE,EAChC,GAAG,EAAA8zG,GAAM,CAACA,EAAGtvG,EAAQxE,CAAC,EAAE,CAAC,CAAC,IACvB,EAAA2zG,GAAU,QAAQnvG,EAAQxE,CAAC,EAAE,CAAC,CAAC,EAAI,IAAM8yG,GAAiB,QAAQtuG,EAAQxE,CAAC,EAAE,CAAC,CAAC,EAAI,KACnFwE,EAAQxE,CAAC,EAAE,CAAC,GAAK,KAEpB,KAAIZ,EAAMoF,EAAQxE,CAAC,EAAE,CAAC,EAAGi5B,EAAM,EAC/B,GAAG66E,EAAI,CACN76E,EAAM,CAAC66E,EAAGtvG,EAAQxE,CAAC,EAAE,CAAC,CAAC,EACvB,IAAIo0G,EAASL,EAAmB96E,CAAG,EACnC,GAAGm7E,EAAM,GAAK,WAAa,OAAOh1G,GAAO,SAAU,CAElD,IAAIU,EAAMV,EAAI,MAAM,GAAG,EACvBA,GAAQ,CAACU,EAAI,CAAC,GAAI,KAAQ,CAACA,EAAI,CAAC,GAAI,EACpC,CACDo0G,EAAKR,GAAyBU,EAAM,EAAGh1G,CAAG,CAC7C,KAAS,CACN,IAAIk0F,EAAIsgB,GAAoBx0G,CAAG,EAC5Bk0F,GAAK,KAAMA,EAAI,GAAMl0F,EAAM,OAAOA,CAAG,GACxC80G,EAAKR,GAAyBpgB,EAAGl0F,CAAG,CACpC,CACDwkB,EAAK,KAAKswF,CAAE,EAEZC,EAAM7b,GAAQ,CAAC,EACf6b,EAAI,YAAY,EAAIL,EAAW76E,EAAN,EAAEj5B,CAAO,EAClCi0G,EAAK,KAAKE,CAAG,EAEbxe,GAAM,EAAIue,EAAG,OAGd,IAAI7sE,EAAI,GAAKzjB,EAAK,OAAS,GAC3B,IAAI5jB,EAAI,EAAGA,EAAI4jB,EAAK,OAAQ,EAAE5jB,EAAKi0G,EAAKj0G,CAAC,EAAE,YAAY,EAAGqnC,CAAC,EAAGA,GAAKzjB,EAAK5jB,CAAC,EAAE,OAC3E,OAAAg0G,EAAI,YAAY,EAAGre,CAAE,EACrBqe,EAAI,YAAY,EAAGpwF,EAAK,MAAM,EACvBimE,GAAQ,CAACmqB,CAAG,EAAE,OAAOC,CAAI,EAAE,OAAOrwF,CAAI,CAAC,CAC/C,CAqCA,SAASywF,GAAwB7vG,EAAS8vG,EAAOR,EAAIC,EAAqCQ,EAAmBC,EAAiB,CAC7H,IAAIR,EAAM1b,GAAQic,EAAW,GAAK,EAAE,EAChCzqB,EAAO,CAACkqB,CAAG,EACfA,EAAI,YAAY,EAAG,KAAM,EACzBA,EAAI,YAAY,EAAG,CAAM,EACzBA,EAAI,YAAY,EAAG,SAAU,EAC7BA,EAAI,YAAY,GAAIpf,GAAI,MAAM,OAAO,aAAc,KAAK,EACxDof,EAAI,YAAY,EAAIO,EAAW,EAAI,CAAC,EACpCP,EAAI,YAAY,GAAIM,EAAO,KAAK,EAChCN,EAAI,YAAY,EAAIO,EAAW,GAAK,EAAE,EACtC,IAAIE,EAAMZ,GAAkBrvG,EAASsvG,EAAIC,CAAK,EAG9C,GAFAjqB,EAAK,KAAK2qB,CAAG,EAEVF,EAAU,CACZ,IAAIG,EAAMb,GAAkBU,EAAU,KAAM,IAAI,EAChDP,EAAI,YAAY,GAAIQ,EAAQ,KAAK,EACjCR,EAAI,YAAY,EAAG,GAAKS,EAAI,MAAM,EAClC3qB,EAAK,KAAK4qB,CAAG,CACb,CACD,OAAO7qB,GAAQC,CAAI,CACpB,CAGA,SAAS6qB,GAAYpyG,EAAGi2B,EAAG,CAAMA,IAAGA,EAAE8/D,GAAQ/1F,CAAC,GAAG,QAAQqqB,EAAE,EAAGA,EAAErqB,EAAG,EAAEqqB,EAAG4L,EAAE,YAAY,EAAG,CAAC,EAAG,OAAOA,CAAI,CASzG,SAASo8E,GAAUpf,EAAMz0D,EAAmB,CAAE,OAAOy0D,EAAK,WAAWz0D,CAAM,IAAM,CAAM,CACvF,SAAS8zE,GAAUlwG,EAAW6zB,EAAG,CAAE,OAAIA,IAAGA,EAAE8/D,GAAQ,CAAC,GAAG9/D,EAAE,YAAY,EAAG,CAAC,CAAC,CAAC7zB,CAAC,EAAU6zB,CAAI,CAE3F,SAASs8E,GAAYtf,EAAuC,CAAE,OAAOA,EAAK,WAAW,EAAG,GAAG,CAAI,CAC/F,SAASuf,GAAYpwG,EAAc6zB,EAAG,CAAE,OAAIA,IAAGA,EAAE8/D,GAAQ,CAAC,GAAG9/D,EAAE,YAAY,EAAG7zB,CAAC,EAAU6zB,CAAI,CAU7F,SAASw8E,GAAUrwG,EAAG,EAAc6zB,EAAG,CACtC,OAAIA,IAAGA,EAAI8/D,GAAQ,CAAC,GACpB9/D,EAAE,YAAY,EAAK,GAAK,IAAO,CAAC7zB,EAAI,CAAC,CAAC,CAACA,GACvC6zB,EAAE,YAAY,EAAK,GAAK,IAAO,EAAI,GAC5BA,CACR,CAGA,SAASy8E,GAA2Bzf,EAAMz0D,EAAQgO,EAAM,CACvD,IAAImmE,EAAM1f,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,GAAK,EAAI,CAAC,EACrDomE,EAAW,YAGf,GADGpmE,GAAQA,EAAK,MAAQ,EACrB,CAACA,GAAQA,EAAK,MAAQ,EAAI,CAC5B,IAAIqmE,EAAY5f,EAAK,WAAW,CAAC,EAC9B4f,IAAaD,EAAW,YAC7B,MAAWpmE,EAAK,MAAQ,KACtBomE,EAAW,QAETpmE,EAAK,MAAQ,GAAKA,EAAK,MAAQ,IAAGomE,EAAW,SAChD,IAAI38E,EAAI08E,EAAM1f,EAAK,WAAW0f,EAAKC,CAAQ,EAAI,GAE/C,OAAO38E,CACR,CAsBA,SAAS68E,GAAkCC,EAA6B,CACpE,IAACr2G,EAAOq2G,EAAM,GAAG,GAEhBtB,EAAM1b,GAAQ,CAAuB,EACzC0b,EAAI,YAAY,EAAG/0G,EAAI,MAAM,EAC7B+0G,EAAI,YAAY,EAAuB,CAAY,EAGnD,IAAIuB,EAAQjd,GAAQ,EAAIr5F,EAAI,MAAM,EAClCs2G,EAAM,YAAY,EAAIt2G,EAAI,OAAQA,EAAK,SAAS,EAEhD,IAAIgrF,EAAM,CAAC+pB,EAAKuB,CAAK,EAErB,OAAO1rB,GAAQI,CAAG,CACnB,CAGA,SAASurB,GAA2BhgB,EAAM0f,EAAKnmE,EAAM,CACpD,IAAI6iD,EACJ,GAAG7iD,EAAM,CACR,GAAGA,EAAK,MAAQ,GAAKA,EAAK,MAAQ,EAAG,OAAOymD,EAAK,WAAW0f,EAAK,OAAO,EACxE,GAAGnmE,EAAK,MAAQ,GAAI,OAAOymD,EAAK,WAAW0f,EAAK,WAAW,CAC3D,CACD,IAAIE,EAAY5f,EAAK,WAAW,CAAC,EACjC,OAAG4f,IAAY,EAAKxjB,EAAS4D,EAAK,WAAW0f,EAAK,WAAW,EACtDtjB,EAAS4D,EAAK,WAAW0f,EAAK,WAAW,EACzCtjB,CACR,CAGA,SAAS6jB,GAAsBjgB,EAAMz0D,EAAQgO,EAAM,CAClD,IAAImmE,EAAM1f,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,EACxD,OAAGmmE,IAAQ,GAAK1f,EAAK,IAAY,IAC1BggB,GAA2BhgB,EAAM0f,EAAKnmE,CAAI,CAClD,CAEA,SAAS2mE,GAAuBlgB,EAAMz0D,EAAQgO,EAAM,CACnD,GAAGA,EAAK,KAAO,EAAG,OAAO0mE,GAAsBjgB,EAAMz0D,EAAQgO,CAAI,EACjE,IAAImmE,EAAM1f,EAAK,WAAW,CAAC,EAC3B,OAAG0f,IAAQ,GAAK1f,EAAK,IAAY,IAC1BA,EAAK,WAAW0f,EAAMnmE,EAAK,MAAQ,GAAK,CAACymD,EAAK,KAAS,QAAU,WAAW,CACpF,CAEA,SAASmgB,GAAsB12G,EAAK8vC,EAAMvW,EAAG,CAC5C,OAAIA,IAAGA,EAAI8/D,GAAQ,EAAI,EAAIr5F,EAAI,MAAM,GACrCu5B,EAAE,YAAY,EAAGv5B,EAAI,MAAM,EAC3Bu5B,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,GAAIv5B,EAAK,SAAS,EACzBu5B,CACR,CAyDA,SAASo9E,GAAsB32G,EAAgBu5B,EAAG,CAC7CA,IAAGA,EAAI8/D,GAAQ,EAAIr5F,EAAI,OAAS,CAAC,GACrCu5B,EAAE,YAAY,EAAG,EAAIv5B,EAAI,MAAM,EAC/B,QAAQe,EAAI,EAAGA,EAAIf,EAAI,OAAQ,EAAEe,EAAGw4B,EAAE,YAAY,EAAGv5B,EAAI,WAAWe,CAAC,CAAC,EACtE,OAAAw4B,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CA4BA,SAASq9E,GAAgBC,EAAI,CAC5B,IAAI7rB,EAAMqO,GAAQ,GAAG,EAAGt4F,EAAI,EACxB+1G,EAASD,EAAG,OACbC,EAAO,MAAM,EAAE,CAAC,GAAK,YAAWA,EAASA,EAAO,MAAM,CAAC,GAC1D,IAAIC,EAAUD,EAAO,QAAQ,GAAG,EAC5BE,EAAID,EAAU,GAAK,GAAO,GAC9B,OAAOD,EAAO,OAAO,CAAC,EAAC,CAAI,IAAK,IAAKE,EAAE,GAAM,MAAO,IAAK,IAAKA,GAAG,GAAI,KAAQ,CAC7EhsB,EAAI,YAAY,EAAE,CAAC,EAAGA,EAAI,YAAY,EAAGgsB,CAAC,EAC1C,IAAI7gG,EAAO,CAAC,EAAE,QAAQ,QAAQ,QAAQ,EAAE,EAAG,IAAIpV,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAGiqF,EAAI,YAAY,EAAG70E,EAAKpV,CAAC,CAAC,EACtG,GAAGi2G,GAAK,GACPF,EAASA,EAAO,MAAM,CAAC,EACvBH,GAAsBG,EAAQ9rB,CAAG,UACxBgsB,EAAI,EAAM,CAEnB,IADA7gG,EAAO,kDAAkD,MAAM,GAAG,EAC9DpV,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAGiqF,EAAI,YAAY,EAAG,SAAS70E,EAAKpV,CAAC,EAAG,EAAE,CAAC,EACzE,IAAIk2G,EAAYF,EAAU,GAAKD,EAAO,MAAM,EAAGC,CAAO,EAAID,EAE1D,IADA9rB,EAAI,YAAY,EAAG,GAAGisB,EAAU,OAAS,EAAE,EACvCl2G,EAAI,EAAGA,EAAIk2G,EAAU,OAAQ,EAAEl2G,EAAGiqF,EAAI,YAAY,EAAGisB,EAAU,WAAWl2G,CAAC,CAAC,EAChFiqF,EAAI,YAAY,EAAG,CAAC,EACjBgsB,EAAI,GAAML,GAAsBI,EAAU,GAAKD,EAAO,MAAMC,EAAQ,CAAC,EAAG,GAAI/rB,CAAG,CACpF,KAAQ,CAEN,IADA70E,EAAO,kDAAkD,MAAM,GAAG,EAC9DpV,EAAI,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAGiqF,EAAI,YAAY,EAAG,SAAS70E,EAAKpV,CAAC,EAAG,EAAE,CAAC,EAEzE,QADI8rF,EAAI,EACFiqB,EAAO,MAAMjqB,EAAE,EAAEA,EAAE,EAAE,CAAC,GAAG,OAAOiqB,EAAO,MAAMjqB,EAAE,EAAEA,EAAE,EAAE,CAAC,GAAG,QAAQ,EAAEA,EAGzE,IAFA7B,EAAI,YAAY,EAAG6B,CAAC,EACpB7B,EAAI,YAAY,EAAG8rB,EAAO,OAAS,EAAIjqB,EAAI,CAAC,EACxC9rF,EAAI,EAAGA,EAAI+1G,EAAO,OAAS,EAAIjqB,EAAG,EAAE9rF,EAAGiqF,EAAI,YAAY,EAAG8rB,EAAO,WAAW/1G,EAAI,EAAI8rF,CAAC,EAAI,GAAI,EAIjG,IAHA7B,EAAI,YAAY,EAAG,CAAC,EACpBA,EAAI,YAAY,EAAG,KAAM,EACzBA,EAAI,YAAY,EAAG,KAAM,EACrBjqF,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAGiqF,EAAI,YAAY,EAAG,CAAC,CAC3C,CACD,OAAOA,EAAI,MAAM,EAAGA,EAAI,CAAC,CAC1B,CAgBA,SAASksB,GAAcphB,EAAcgD,EAAcqe,EAAkB59E,EAAG,CACvE,OAAIA,IAAGA,EAAI8/D,GAAQ,CAAC,GACpB9/D,EAAE,YAAY,EAAGu8D,CAAC,EAClBv8D,EAAE,YAAY,EAAGu/D,CAAC,EAClBv/D,EAAE,YAAY,EAAG49E,GAAM,CAAC,EACjB59E,CACR,CAeA,SAAS69E,GAAU7gB,EAAMz0D,EAAQgO,EAAM,CACtC,IAAI1H,EAAI0H,EAAK,KAAO,EAAI,EAAI,EACxBunE,EAAW9gB,EAAK,WAAWnuD,CAAC,EAAGkvE,EAAY/gB,EAAK,WAAWnuD,EAAE,GAAG,EAAGmvE,EAAWhhB,EAAK,WAAWnuD,EAAE,GAAG,EACvG,MAAO,CAACivE,EAAUC,EAAWC,CAAQ,CACtC,CAsBA,SAASC,GAAYjhB,EAAoB,CACxC,IAAIkhB,EAAUlhB,EAAK,WAAW,CAAC,EAC3BmhB,EAASnhB,EAAK,WAAW,CAAC,EAC1BohB,EAAWphB,EAAK,WAAW,CAAC,EAC5BqhB,EAAUrhB,EAAK,WAAW,CAAC,EAC/B,MAAO,CAAC,EAAE,CAAC,EAAEohB,EAAU,EAAEF,CAAO,EAAG,EAAE,CAAC,EAAEG,EAAQF,CAAQ,CAAC,CAC1D,CACA,SAASG,GAAYnoG,EAAa6pB,EAAG,CACpC,OAAIA,IAAGA,EAAI8/D,GAAQ,CAAC,GACpB9/D,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACtB6pB,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACtB6pB,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACtB6pB,EAAE,YAAY,EAAG7pB,EAAE,EAAE,CAAC,EACf6pB,CACR,CAoGA,SAASu+E,GAAUC,EAAiB,EAAcx+E,EAAG,CACpD,IAAIjZ,EAAI,KAAQ8nB,EAAI,GACpB,OAAO7O,EAAE,SAAQ,CAChB,IAAK,QAAS,MACd,IAAK,QAASjZ,EAAI,KAAQ8nB,EAAI,EAAG,MACjC,IAAK,QAAS9nB,EAAI,EAAQ8nB,EAAI,EAAG,MACjC,IAAK,QAAS9nB,EAAI,EAAQ8nB,EAAI,EAAG,MACjC,IAAK,QAAS9nB,EAAI,EAAQ8nB,EAAI,EAAG,MACjC,IAAK,MAAO,MACZ,QAAS,MAAM,IAAI,MAAM,0BAA0B,CACnD,CACD,IAAI4iD,EAAMqO,GAAQjxD,CAAC,EACnB,OAAA4iD,EAAI,YAAY,EAAG1qE,CAAC,EACpB0qE,EAAI,YAAY,EAAG,CAAC,EACjB5iD,EAAI,GAAG4iD,EAAI,YAAY,EAAG,KAAM,EAChC5iD,EAAI,GAAG4iD,EAAI,YAAY,EAAG,IAAM,EAChC5iD,EAAI,IACN4iD,EAAI,YAAY,EAAG,KAAM,EACzBA,EAAI,YAAY,EAAG,CAAM,EACzBA,EAAI,YAAY,EAAG,IAAM,EACzBA,EAAI,YAAY,EAAG,CAAM,GAEnBA,CACR,CAoBA,SAASgtB,GAAkBn+F,EAAci2B,EAAM,CAC9C,IAAImoE,EAAK,CAACnoE,GAAQA,EAAK,MAAQ,EAC3BvW,EAAI8/D,GAAQ4e,EAAK,IAAM,EAAE,EAK7B,IAJA1+E,EAAE,YAAYuW,EAAK,MAAQ,EAAI,EAAI,EAAG,CAAC,EACpCmoE,GAAI1+E,EAAE,YAAY,EAAG,CAAC,EACzBA,EAAE,YAAY,EAAG,SAAU,EAC3BA,EAAE,YAAY,EAAI,SAAc0+E,EAAK,EAAI,YACnC1+E,EAAE,EAAIA,EAAE,QAAQA,EAAE,YAAY,EAAI0+E,EAAK,EAAI,EAAE,EACnD,OAAO1+E,CACR,CAuBA,SAAS2+E,GAAkB/hG,EAAM25B,EAAM,CACtC,IAAI1H,EAAK,CAAC0H,GAAQA,EAAK,MAAQ,EAAI,EAAI,EACnCvW,EAAI8/D,GAAQ,EAAIjxD,EAAIjyB,EAAK,KAAK,MAAM,EACxCojB,EAAE,YAAY,EAAGpjB,EAAK,GAAG,EACzBojB,EAAE,YAAY,EAAGpjB,EAAK,IAAM,CAAC,EAC7BojB,EAAE,YAAY,EAAGpjB,EAAK,EAAE,EACxBojB,EAAE,YAAY,EAAGpjB,EAAK,KAAK,MAAM,EAC9B25B,EAAK,MAAQ,GAAGvW,EAAE,YAAY,EAAG,CAAC,EACrCA,EAAE,YAAY6O,EAAIjyB,EAAK,KAAK,OAAQA,EAAK,KAAM25B,EAAK,KAAO,EAAI,OAAS,SAAS,EACjF,IAAIk7C,EAAMzxD,EAAE,MAAM,EAAGA,EAAE,CAAC,EACxB,OAAAyxD,EAAI,EAAIzxD,EAAE,EAAUyxD,CACrB,CAcA,SAASmtB,GAAUC,EAAKtoE,EAAM,CAC7B,IAAInI,EAAS0xD,GAAQ,CAAC,EACtB1xD,EAAO,YAAY,EAAGywE,EAAI,KAAK,EAC/BzwE,EAAO,YAAY,EAAGywE,EAAI,MAAM,EAEhC,QADIC,EAAO,CAAA,EACH1qF,EAAI,EAAGA,EAAIyqF,EAAI,OAAQ,EAAEzqF,EAAG0qF,EAAK1qF,CAAC,EAAIyoF,GAAkCgC,EAAIzqF,CAAC,CAAO,EAC5F,IAAI4L,EAAIqxD,GAAQ,CAACjjD,CAAM,EAAE,OAAO0wE,CAAI,CAAC,EAC9B,OAAA9+E,EAAc,MAAQ,CAACoO,EAAO,MAAM,EAAE,OAAO0wE,EAAK,IAAI,SAASr4G,EAAK,CAAE,OAAOA,EAAI,MAAO,CAAE,CAAC,EAC3Fu5B,CACR,CAqEA,SAAS++E,IAA0B,CAClC,IAAI/+E,EAAI8/D,GAAQ,EAAE,EAClB,OAAA9/D,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,KAAM,EACvBA,EAAE,YAAY,EAAG,KAAM,EACvBA,EAAE,YAAY,EAAG,EAAI,EACrBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,GAAM,EAChBA,CACR,CAOA,SAASg/E,GAAc9tB,EAAM,CAC5B,IAAIlxD,EAAI8/D,GAAQ,EAAE,EAAG7kD,EAAI,KACzB,OAAGi2C,GAAQA,EAAK,MAAKj2C,GAAK,IAC1Bjb,EAAE,YAAY,EAAGib,CAAC,EAClBjb,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,EAAE,EACnBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAoBA,SAASi/E,GAAWriG,EAAM25B,EAAM,CAC/B,IAAIzrC,EAAO8R,EAAK,MAAQ,QACpBsiG,EAAM3oE,GAASA,EAAK,MAAQ,EAAK1H,EAAKqwE,EAAM,GAAKp0G,EAAK,OAAW,GAAK,EAAIA,EAAK,OAC/Ek1B,EAAI8/D,GAAQjxD,CAAC,EACjB,OAAA7O,EAAE,YAAY,GAAIpjB,EAAK,IAAM,IAAM,EAAE,EACrCojB,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,GAAG,EACpBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAGl1B,EAAK,MAAM,EACxBo0G,GAAIl/E,EAAE,YAAY,EAAG,CAAC,EAC1BA,EAAE,aAAak/E,EAAK,EAAI,GAAKp0G,EAAK,OAAQA,EAAOo0G,EAAK,OAAS,SAAS,EACjEl/E,CACR,CAQA,SAASm/E,GAAe5iB,EAAcgD,EAAcpzF,EAAcizG,EAA4B,CAC7F,IAAIp/E,EAAI8/D,GAAQ,EAAE,EAClB,OAAA6d,GAAcphB,EAAGgD,EAAG6f,EAAIp/E,CAAC,EACzBA,EAAE,YAAY,EAAG7zB,CAAC,EACX6zB,CACR,CAYA,SAASq/E,GAAY9iB,EAAcgD,EAAcpzF,EAAcizG,EAAe7oE,EAAM,CACnF,IAAImoE,EAAK,CAACnoE,GAAQA,EAAK,MAAQ,EAC3BvW,EAAI8/D,GAAQ,GAAS,CAAC4e,GAAO,EAAIA,GAAMvyG,EAAE,MAAM,EACnD,OAAAwxG,GAAcphB,EAAGgD,EAAG6f,EAAIp/E,CAAC,EACzBA,EAAE,YAAY,EAAG7zB,EAAE,MAAM,EACtBuyG,GAAI1+E,EAAE,YAAY,EAAG,CAAC,EACzBA,EAAE,aAAa,EAAI0+E,GAAMvyG,EAAE,OAAQA,EAAGuyG,EAAK,UAAY,MAAM,EACtD1+E,CACR,CASA,SAASs/E,GAAa93G,EAAcyzC,EAAc1E,EAAMvW,EAAG,CAC1D,IAAIk/E,EAAM3oE,GAASA,EAAK,MAAQ,EAC5BvW,IAAGA,EAAI8/D,GAAQof,EAAM,EAAIjkE,EAAE,OAAW,EAAI,EAAIA,EAAE,MAAO,GAC3Djb,EAAE,YAAY,EAAGx4B,CAAC,EAClBw4B,EAAE,YAAak/E,EAAK,EAAI,EAAIjkE,EAAE,MAAM,EAChCikE,GAAIl/E,EAAE,YAAY,EAAG,CAAC,EAC1BA,EAAE,aAAak/E,EAAK,EAAI,GAAKjkE,EAAE,OAAQA,EAAIikE,EAAK,OAAS,SAAS,EAClE,IAAIztB,EAAOzxD,EAAE,OAASA,EAAE,EAAKA,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,EAC/C,OAAGyxD,EAAI,GAAK,OAAMA,EAAI,EAAIA,EAAI,QACvBA,CACR,CAYA,SAAS8tB,GAAiBt+D,EAAO1K,EAAM,CACtC,IAAI1H,EAAI0H,EAAK,MAAQ,GAAK,CAACA,EAAK,KAAO,EAAI,EACvCvW,EAAI8/D,GAAQ,EAAEjxD,EAAI,CAAC,EACvB,OAAA7O,EAAE,YAAY6O,EAAGoS,EAAM,EAAE,CAAC,EAC1BjhB,EAAE,YAAY6O,EAAGoS,EAAM,EAAE,EAAI,CAAC,EAC9BjhB,EAAE,YAAY,EAAGihB,EAAM,EAAE,CAAC,EAC1BjhB,EAAE,YAAY,EAAGihB,EAAM,EAAE,EAAI,CAAC,EAC9BjhB,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAqFA,SAASw/E,GAAS5iG,EAAM6iG,EAAOlpE,EAAMvW,EAAG,CACvC,IAAIk/E,EAAM3oE,GAASA,EAAK,MAAQ,EAC5BvW,IAAGA,EAAI8/D,GAAQof,EAAK,GAAK,EAAE,GAC/Bl/E,EAAE,YAAY,EAAG,CAAC,EACfpjB,EAAK,OACPojB,EAAE,YAAY,EAAIpjB,EAAK,UAAU,CAAC,EAClCojB,EAAE,YAAY,EAAG,KAAM,IAEvBA,EAAE,YAAY,EAAIpjB,EAAK,UAAU,CAAC,EAClCojB,EAAE,YAAY,EAAIy/E,GAAO,CAAC,GAE3B,IAAIxkE,EAAI,EACR,OAAGr+B,EAAK,SAAW,GAAKsiG,IAAIjkE,GAAK,MACjCjb,EAAE,YAAY,EAAGib,CAAC,EAClBjb,EAAE,YAAY,EAAG,CAAC,EACdk/E,GAAIl/E,EAAE,YAAY,EAAG,CAAC,EAC1BA,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAWA,SAAS0/E,GAAWC,EAAwB,CAC3C,IAAI3/E,EAAI8/D,GAAQ,CAAC,EACjB,OAAA9/D,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAA2B,CAAC,EAC1CA,EAAE,YAAY,EAA2B,CAAC,EACnCA,CACR,CAWA,SAAS4/E,GAAcrjB,EAAcgD,EAAcpzF,EAAGizG,EAAe7oE,EAAM3qB,EAAc,CACxF,IAAIoU,EAAI8/D,GAAQ,CAAC,EACjB,OAAA6d,GAAcphB,EAAGgD,EAAG6f,EAAIp/E,CAAC,EACzBw8E,GAAUrwG,EAAGyf,EAAGoU,CAAC,EACVA,CACR,CAUA,SAAS6/E,GAAatjB,EAAcgD,EAAcpzF,EAAGizG,EAAwB,CAC5E,IAAIp/E,EAAI8/D,GAAQ,EAAE,EAClB,OAAA6d,GAAcphB,EAAGgD,EAAG6f,EAAIp/E,CAAC,EACzB82E,GAAW3qG,EAAG6zB,CAAC,EACRA,CACR,CAoFA,SAAS8/E,GAAkB9iB,EAAMz0D,EAAQgO,EAAM,CAC9C,GAAGA,EAAK,KAAO,EAAG,OAAOwpE,GAAuB/iB,EAAMz0D,EAAQgO,CAAI,EAElE,QADIvW,EAAI,CAAA,EAAI5wB,EAAS4tF,EAAK,EAAIz0D,EAAQrS,EAAM8mE,EAAK,WAAWzmD,EAAK,KAAO,EAAI,EAAI,CAAC,EAC3ErgB,MAAU,GAAG8J,EAAE,KAAK69E,GAAU7gB,EAAMzmD,EAAK,KAAO,EAAI,GAAK,EAAGA,CAAI,CAAC,EAEvE,GAAGymD,EAAK,GAAK5tF,EAAQ,MAAM,IAAI,MAAM,oBAAsB4tF,EAAK,EAAI,OAAS5tF,CAAM,EACnF,OAAO4wB,CACR,CACA,SAAS+/E,GAAuB/iB,EAAMz0D,EAAQgO,EAAM,CAChDymD,EAAKA,EAAK,EAAI,CAAC,GAAK,GAAMA,EAAKA,EAAK,CAAC,IACxC,IAAIh9D,EAAIy8E,GAA2Bzf,EAAMz0D,EAAQgO,CAAI,EACrD,OAAOvW,EAAE,WAAW,CAAC,GAAK,EAAOA,EAAE,MAAM,CAAC,EAAIA,CAC/C,CAgEA,SAASggF,GAAiBC,EAAyB,CAClD,IAAIjgF,EAAI8/D,GAAQ,EAAImgB,EAAO,OAAS,CAAC,EACrCjgF,EAAE,YAAY,EAAGigF,EAAO,MAAM,EAC9B,QAAQz4G,EAAI,EAAGA,EAAIy4G,EAAO,OAAQ,EAAEz4G,EAAG82G,GAAY2B,EAAOz4G,CAAC,EAAGw4B,CAAC,EAC/D,OAAOA,CACR,CA+FA,SAASkgF,GAAY5C,EAAI,CACxB,IAAI6C,EAAIrgB,GAAQ,EAAE,EACd1pF,EAAM28F,GAAYuK,EAAG,CAAC,CAAC,EAC3B6C,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAAG+pG,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAC/C+pG,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAAG+pG,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAE/C,QADI0lG,EAAQ,kDAAkD,MAAM,GAAG,EAC/D,EAAI,EAAG,EAAI,GAAI,EAAE,EAAGqE,EAAE,YAAY,EAAG,SAASrE,EAAM,CAAC,EAAG,EAAE,CAAC,EACnE,OAAOzqB,GAAQ,CAAC8uB,EAAG9C,GAAgBC,EAAG,CAAC,CAAC,CAAC,CAAC,CAC3C,CAWA,SAAS8C,GAAmB9C,EAAI,CAC/B,IAAIviB,EAAKuiB,EAAG,CAAC,EAAE,QACX6C,EAAIrgB,GAAQ,GAAK,GAAK/E,EAAG,OAAS,EAAE,EACxColB,EAAE,YAAY,EAAG,IAAM,EACvB,IAAI/pG,EAAM28F,GAAYuK,EAAG,CAAC,CAAC,EAC3B6C,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAAG+pG,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAC/C+pG,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAAG+pG,EAAE,YAAY,EAAG/pG,EAAI,CAAC,EAC/C,QAAQ,EAAI,EAAG,EAAI2kF,EAAG,OAAQ,EAAE,EAAGolB,EAAE,YAAY,EAAGplB,EAAG,WAAW,CAAC,CAAC,EACpE,OAAAolB,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CASA,SAASE,GAAcrgF,EAAG,CACzB,OAAIA,IAAGA,EAAI8/D,GAAQ,CAAC,GACpB9/D,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAG,CAAI,EACdA,CACR,CA6BA,SAASsgF,GAActjB,EAAMz0D,EAAQgO,EAAM,CAC1C,GAAG,CAACA,EAAK,WAAY,OAAO26D,GAAUlU,EAAMz0D,CAAM,EAClD,IAAIsG,EAAI0H,GAAQA,EAAK,MAAQ,GAAK,EAAI,EAClC6nE,EAAWphB,EAAK,WAAWnuD,CAAC,EAC5BwvE,EAAUrhB,EAAK,WAAWnuD,CAAC,EAC3B0xE,EAAQvjB,EAAK,WAAWnuD,CAAC,EACzB+uE,EAAO5gB,EAAK,WAAWnuD,CAAC,EACxBquD,EAAQF,EAAK,WAAW,CAAC,EAC1BnuD,GAAK,IAAGmuD,EAAK,GAAK,GACrB,IAAIh9D,EAAK,CAAC,EAAEo+E,EAAU,EAAEC,EAAS,EAAEkC,EAAO,KAAK3C,EAAM,MAAM1gB,CAAK,EAChE,OAAG3mD,EAAK,MAAQ,GAAK,CAACA,EAAK,QAAMvW,EAAE,MAASk9D,GAAS,EAAK,GACnDl9D,CACR,CACA,SAASwgF,GAAc3N,EAAKpyE,EAAK,CAChC,IAAIT,EAAI8/D,GAAQ,EAAE,EAClB9/D,EAAE,YAAY,EAAGS,CAAG,EACpBT,EAAE,YAAY,EAAGS,CAAG,EACpBT,EAAE,YAAY,EAAG6yE,EAAI,MAAQ,GAAG,EAChC7yE,EAAE,YAAY,EAAG,CAAC,EAClB,IAAIib,EAAI,EACR,OAAG43D,EAAI,SAAQ53D,GAAK,GACpBjb,EAAE,YAAY,EAAGib,CAAC,EAClBA,EAAI43D,EAAI,OAAS,EACjB7yE,EAAE,YAAY,EAAGib,CAAC,EAClBjb,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAuBA,SAASygF,GAAc12G,EAAc,CAEpC,QADI0nF,EAAMqO,GAAQ,EAAI/1F,CAAC,EACfvC,EAAI,EAAGA,EAAIuC,EAAG,EAAEvC,EAAGiqF,EAAI,YAAY,EAAGjqF,EAAE,CAAC,EACjD,OAAOiqF,CACR,CAmCA,SAASivB,GAAevqG,EAAclN,EAAcrC,EAAgB,CACnE,IAAI6qF,EAAMqO,GAAQ,EAAE,EACpB,OAAA6gB,GAAgBlvB,EAAKt7E,EAAGlN,CAAC,EACzBwoF,EAAI,YAAY,EAAG7qF,EAAK,GAAG,EACpB6qF,CACR,CAUA,SAASmvB,GAAezqG,EAAclN,EAAcrC,EAAgB,CACnE,IAAI6qF,EAAMqO,GAAQ,CAAC,EACnB,OAAA6gB,GAAgBlvB,EAAKt7E,EAAGlN,CAAC,EACzBwoF,EAAI,YAAY,EAAG7qF,CAAG,EACf6qF,CACR,CA+BA,IAAIovB,GAAoB,UAAW,CACnC,IAAIC,EAAmB,CAEf,EAAe,IAAsB,EAAe,IACpD,EAAc,KAAuB,EAAa,IAClD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAc,KACnD,IAAc,KAAuB,IAAa,MAClD,IAAa,MAAwB,IAAa,MAClD,IAAc,KAAuB,IAAc,KACnD,IAAc,KAAuB,IAAc,KAGnD,EAAa,MAAwB,EAAe,IACpD,EAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAe,IAAsB,GAAe,IACpD,GAAc,KAAuB,GAAc,KACnD,GAAc,KAAuB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAc,KAEnD,IAAa,KACrB,EACIC,EAAkBzV,GAAM,CACpB,EAAe,IAAsB,EAAe,IACpD,EAAc,KAAuB,EAAa,IAClD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAe,IACpD,IAAe,IAAsB,IAAc,KACnD,IAAc,KAAuB,IAAa,MAClD,IAAa,MAAwB,IAAa,MAClD,IAAc,KAAuB,IAAc,KACnD,IAAc,KAAuB,IAAc,KACnD,EAAa,KACrB,CAAC,EAED,SAAS0V,EAAWpwB,EAAKr6C,EAAc,CACtC,IAAIk7C,EAAc,CAAA,EACd/1C,EAAeo1C,GAAY,CAAC,EAChC,OAAOv6C,EAAK,KAAI,CACf,IAAK,SAAUmF,EAAIs1C,GAAIR,GAAcI,CAAG,CAAC,EAAG,MAC5C,IAAK,SAAUl1C,EAAIs1C,GAAIJ,CAAG,EAAG,MAC7B,IAAK,SACL,IAAK,QAASl1C,EAAIk1C,EAAK,KACvB,CACDqM,GAAUvhD,EAAG,CAAC,EAGd,IAAIulE,EAAKvlE,EAAE,WAAW,CAAC,EACnBwlE,EAAO,CAAC,EAAED,EAAK,KACfE,EAAM,GAAOC,EAAK,GACtB,OAAOH,EAAE,CACR,IAAK,GAAM,MACX,IAAK,GAAM,MACX,IAAK,IAAME,EAAM,GAAMD,EAAO,GAAM,MACpC,IAAK,IAAMC,EAAM,GAAMD,EAAO,GAAM,MAGpC,IAAK,KAAM,MACX,IAAK,KAAM,MACX,IAAK,KAAME,EAAK,GAAM,MAEtB,IAAK,KAAM,MAEX,QAAS,MAAM,IAAI,MAAM,4BAA8BH,EAAG,SAAS,EAAE,CAAC,CACtE,CAED,IAAII,EAAO,EAAGC,EAAO,IAClBL,GAAM,IAAMI,EAAO3lE,EAAE,WAAW,CAAC,GACpCA,EAAE,GAAK,EACJulE,GAAM,IAAMI,EAAO3lE,EAAE,WAAW,CAAC,GACjC2lE,EAAO,UAASA,EAAO,KAEvBJ,GAAM,IAAMK,EAAO5lE,EAAE,WAAW,CAAC,GACpC,IAAI6lE,EAAO7lE,EAAE,WAAW,CAAC,EAEN8lE,EAAajrE,EAAK,UAAY,KAC9C0qE,GAAM,IACRvlE,EAAE,GAAG,GACOA,EAAE,WAAW,CAAC,EAIvBA,EAAEA,EAAE,CAAC,IAAM,IAAG8lE,EAAaV,EAAiBplE,EAAEA,EAAE,CAAC,CAAC,GACrDA,EAAE,GAAG,EAELA,EAAE,GAAG,GAEH0lE,IAAI1lE,EAAE,GAAK,IAMd,QAHI+lE,EAA6B,CAAA,EAAIhoC,EAAsB,CAAE,EACzDioC,EAAO,KAAK,IAAIhmE,EAAE,OAASulE,GAAM,EAAO,IAASK,EAAO,IAAMH,EAAM,IAAM,IAC1EtT,EAAKuT,EAAK,GAAK,GACb1lE,EAAE,EAAIgmE,GAAQhmE,EAAEA,EAAE,CAAC,GAAK,IAW7B,OAVA+9B,EAAS,CAAE,EACXA,EAAM,KAAOyW,GAAS,MAAM,OAAOsxB,EAAY9lE,EAAE,MAAMA,EAAE,EAAGA,EAAE,EAAEmyD,CAAE,CAAC,EAAE,QAAQ,mBAAmB,EAAE,EAClGnyD,EAAE,GAAKmyD,EACPp0B,EAAM,KAAO,OAAO,aAAa/9B,EAAE,WAAW,CAAC,CAAC,EAC7CulE,GAAM,GAAQ,CAACG,IAAI3nC,EAAM,OAAS/9B,EAAE,WAAW,CAAC,GACnD+9B,EAAM,IAAM/9B,EAAE,WAAW,CAAC,EACvBulE,GAAM,IAAMxnC,EAAM,OAAS/9B,EAAE,WAAW,CAAC,GAC5C+9B,EAAM,IAAM/9B,EAAE,WAAW,CAAC,EACvB+9B,EAAM,KAAK,QAAQgoC,EAAO,KAAKhoC,CAAK,EACpCwnC,GAAM,IAAMvlE,EAAE,GAAK0lE,EAAK,GAAK,IACzB3nC,EAAM,KAAI,CAChB,IAAK,KACA,CAAC0nC,GAAO1nC,EAAM,KAAO,IAAMljC,EAAK,KAAK,QAAQ,IAAI,YAAckjC,EAAM,KAAO,IAAMA,EAAM,IAAI,EAChG,MACD,IAAK,IACL,IAAK,IACDljC,EAAK,KAAK,QAAQ,IAAI,YAAckjC,EAAM,KAAO,IAAMA,EAAM,IAAI,EACpE,MACD,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACJ,MACD,QAAS,MAAM,IAAI,MAAM,uBAAyBA,EAAM,IAAI,CAC5D,CAIF,GADG/9B,EAAEA,EAAE,CAAC,IAAM,KAAMA,EAAE,EAAI4lE,EAAK,GAC5B5lE,EAAE,WAAW,CAAC,IAAM,GAAM,MAAM,IAAI,MAAM,4BAA8BA,EAAE,EAAI,IAAMA,EAAEA,EAAE,CAAC,CAAC,EAC7FA,EAAE,EAAI4lE,EAGN,IAAI/kB,EAAI,EAAGgD,EAAI,EAEf,IADA9N,EAAI,CAAC,EAAI,GACL8N,EAAI,EAAGA,GAAKkiB,EAAO,OAAQ,EAAEliB,EAAG9N,EAAI,CAAC,EAAE8N,CAAC,EAAIkiB,EAAOliB,CAAC,EAAE,KAC1D,KAAM8hB,KAAS,GAAG,CACjB,GAAG3lE,EAAEA,EAAE,CAAC,IAAM,GAAM,CAEnBA,EAAE,GAAG6lE,EACL,QACA,CAGD,IAFA,EAAE7lE,EAAE,EACJ+1C,EAAI,EAAE8K,CAAC,EAAI,CAAE,EAAEgD,EAAI,EACfA,EAAI,EAAGA,GAAKkiB,EAAO,OAAQ,EAAEliB,EAAG,CACnC,IAAIrI,EAAKx7C,EAAE,MAAMA,EAAE,EAAGA,EAAE,EAAE+lE,EAAOliB,CAAC,EAAE,GAAG,EAAG7jD,EAAE,GAAG+lE,EAAOliB,CAAC,EAAE,IACzDtC,GAAU/F,EAAI,CAAC,EACf,IAAI52E,EAAI4vE,GAAS,MAAM,OAAOsxB,EAAYtqB,CAAE,EAC5C,OAAOuqB,EAAOliB,CAAC,EAAE,KAAI,CACpB,IAAK,IAEDj/E,EAAE,KAAI,EAAG,SAAQmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAIj/E,EAAE,QAAQ,OAAO,EAAE,GACnD,MACD,IAAK,IACDA,EAAE,SAAW,EAAGmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,IAAI,KAAK,CAACj/E,EAAE,MAAM,EAAE,CAAC,EAAG,CAACA,EAAE,MAAM,EAAE,CAAC,EAAE,EAAG,CAACA,EAAE,MAAM,EAAE,CAAC,CAAC,EAChFmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAIj/E,EACjB,MACD,IAAK,IAAKmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,WAAWj/E,EAAE,MAAM,EAAG,MAC5C,IAAK,IAAK,IAAK,IAAKmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAI6hB,EAAKlqB,EAAG,WAAW,GAAI,GAAG,EAAI,WAAaA,EAAG,WAAW,EAAG,GAAG,EAAG,MAClG,IAAK,IAAK,OAAO52E,EAAE,KAAI,EAAG,YAAa,EAAA,CACtC,IAAK,IAAK,IAAK,IAAKmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,GAAM,MACtC,IAAK,IAAK,IAAK,IAAK9N,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,GAAO,MACvC,IAAK,GAAI,IAAK,IAAK,MACnB,QAAS,MAAM,IAAI,MAAM,uBAAyBj/E,EAAI,GAAG,CAC9D,CAAO,MACH,IAAK,IACJ,GAAG,CAAC4gG,EAAM,MAAM,IAAI,MAAM,gCAAkCD,EAAG,SAAS,EAAE,CAAC,EAC3ExvB,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,YAAc6hB,EAAK,SAAS9gG,EAAE,KAAI,EAAI,EAAE,EAAG42E,EAAG,WAAW,CAAC,GACtE,MACD,IAAK,IACJ52E,EAAIA,EAAE,QAAQ,UAAU,EAAE,EAAE,OAEzBA,GAAKA,GAAK,MAAKmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,CAACj/E,GAAK,GAAG,MACxC,IAAK,IAEJmxE,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,IAAI,KAAKrI,EAAG,WAAW,GAAI,GAAG,EAAI,WAAc,EAC5D,MACD,IAAK,IAAKzF,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,IAAI,MAAMrI,EAAG,WAAW,CAAC,EAAI,SAAY,MAAYA,EAAG,WAAW,CAAC,CAAC,EAAG,MAC9F,IAAK,IAAKzF,EAAI8K,CAAC,EAAEgD,CAAC,EAAIrI,EAAG,WAAW,EAAE,GAAG,EAAE,IAAOA,EAAG,WAAW,EAAG,GAAG,EAAE,IAAK,KAAK,IAAI,EAAE,EAAE,EAAG,MAC7F,IAAK,IAAKzF,EAAI8K,CAAC,EAAEgD,CAAC,EAAI,CAACrI,EAAG,WAAW,GAAI,GAAG,EAAG,MAC/C,IAAK,IAAK,GAAGiqB,GAAOM,EAAOliB,CAAC,EAAE,KAAO,EAAG,CAAE9N,EAAI8K,CAAC,EAAEgD,CAAC,EAAIrI,EAAG,WAAW,EAAE,GAAG,EAAG,KAAQ,CAEpF,IAAK,IAAK,IAAK,IAAKA,EAAG,GAAKuqB,EAAOliB,CAAC,EAAE,IAAK,MAC3C,IAAK,IACJ,GAAGkiB,EAAOliB,CAAC,EAAE,OAAS,aAAc,MAErC,QAAS,MAAM,IAAI,MAAM,6BAA+BkiB,EAAOliB,CAAC,EAAE,IAAI,CACtE,CACD,CACD,CACD,GAAG0hB,GAAM,GAASvlE,EAAE,EAAIA,EAAE,QAAUA,EAAEA,EAAE,GAAG,GAAK,GAAM,MAAM,IAAI,MAAM,2BAA6BA,EAAE,EAAE,GAAK,OAASA,EAAE,OAAS,IAAMA,EAAEA,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAC3J,OAAGnF,GAAQA,EAAK,YAAWk7C,EAAMA,EAAI,MAAM,EAAGl7C,EAAK,SAAS,GAC5DA,EAAK,IAAMkrE,EACJhwB,CACR,CAEA,SAASkwB,EAAa/wB,EAAKr6C,EAAoB,CAC9C,IAAIvW,EAAIuW,GAAQ,GACZvW,EAAE,SAAQA,EAAE,OAAS,YACzB,IAAI8zE,EAAKQ,GAAa0M,EAAWpwB,EAAK5wD,CAAC,EAAGA,CAAC,EAC3C,OAAA8zE,EAAG,OAAO,EAAI9zE,EAAE,IAAI,IAAI,SAASy5C,EAAO,CAAE,MAAO,CAChD,IAAKA,EAAM,IACX,IAAKA,CACL,CAAC,CAAC,EACH,OAAOz5C,EAAE,IACF8zE,CACR,CAEA,SAAS8N,EAAgBhxB,EAAKr6C,EAAmB,CAChD,GAAI,CAAE,OAAOi9D,GAAkBmO,EAAa/wB,EAAKr6C,CAAI,EAAGA,CAAI,CAAI,OAC1D1c,EAAG,CAAE,GAAG0c,GAAQA,EAAK,IAAK,MAAM1c,CAAI,CAC1C,MAAQ,CAAC,WAAW,CAAA,EAAG,OAAO,CAAE,CAAA,CACjC,CAEA,IAAIgoF,EAAQ,CAAE,EAAK,EAAG,EAAK,IAAK,EAAK,EAAG,EAAK,EAAG,IAAK,EAAG,GAAI,CAAC,EAC7D,SAASC,EAAahO,EAAkBv9D,EAAoB,CAC3D,IAAIvW,EAAIuW,GAAQ,GAEhB,GADG,CAACvW,EAAE,UAAY,GAAG8vD,GAAO,CAAC9vD,EAAE,QAAQ,EACpCA,EAAE,MAAQ,SAAU,MAAM,IAAI,MAAM,+BAA+B,EACtE,IAAI0xE,EAAKP,KACL4Q,EAAcC,GAAclO,EAAI,CAAC,OAAO,EAAG,IAAI,GAAM,UAAU,EAAI,CAAC,EACpE3mE,EAAU40E,EAAI,CAAC,EAAGnlG,EAAOmlG,EAAI,MAAM,CAAC,EAAGE,EAAOnO,EAAG,OAAO,GAAK,CAAA,EAC7DtsG,EAAI,EAAG4sB,EAAI,EAAG8tF,EAAO,EAAGX,EAAO,EACnC,IAAI/5G,EAAI,EAAGA,EAAI2lC,EAAQ,OAAQ,EAAE3lC,EAAG,CACnC,KAAKy6G,EAAKz6G,CAAC,GAAG,CAAE,GAAE,KAAK,CAAA,GAAI,KAAM,CAAE2lC,EAAQ3lC,CAAC,EAAIy6G,EAAKz6G,CAAC,EAAE,IAAI,KAAM,EAAE06G,EAAM,QAAW,CACrF,GAAG/0E,EAAQ3lC,CAAC,GAAK,KAGjB,IAFA,EAAE06G,EACC,OAAO/0E,EAAQ3lC,CAAC,GAAM,WAAU2lC,EAAQ3lC,CAAC,EAAI2lC,EAAQ3lC,CAAC,EAAE,SAAS,EAAE,GACnE,OAAO2lC,EAAQ3lC,CAAC,GAAM,SAAU,MAAM,IAAI,MAAM,2BAA6B2lC,EAAQ3lC,CAAC,EAAI,KAAQ,OAAO2lC,EAAQ3lC,CAAC,EAAK,GAAG,EAC7H,GAAG2lC,EAAQ,QAAQA,EAAQ3lC,CAAC,CAAC,IAAMA,GAAG,IAAI4sB,EAAE,EAAGA,EAAE,KAAK,EAAEA,EACvD,GAAG+Y,EAAQ,QAAQA,EAAQ3lC,CAAC,EAAI,IAAM4sB,CAAC,GAAK,GAAI,CAAE+Y,EAAQ3lC,CAAC,GAAK,IAAM4sB,EAAG,KAAQ,GAClF,CACD,IAAI6sB,EAAQmyD,GAAkBU,EAAG,MAAM,CAAC,EACpCqO,EAA6B,CAAA,EAC7BC,EAA8B,CAAA,EAC9BC,EAAgC,CAAA,EACpC,IAAI76G,EAAI,EAAGA,GAAKy5C,EAAM,EAAE,EAAIA,EAAM,EAAE,EAAG,EAAEz5C,EAAG,CAC3C,IAAI86G,EAAQ,GAAIC,EAAS,GAAIhxB,EAAS,EAClCshB,EAAqB,CAAA,EACzB,IAAIz+E,EAAE,EAAGA,EAAIxX,EAAK,OAAQ,EAAEwX,EACxBxX,EAAKwX,CAAC,EAAE5sB,CAAC,GAAK,MAAMqrG,EAAI,KAAKj2F,EAAKwX,CAAC,EAAE5sB,CAAC,CAAC,EAE3C,GAAGqrG,EAAI,QAAU,GAAK1lE,EAAQ3lC,CAAC,GAAK,KAAM,CAAE26G,EAAS36G,CAAC,EAAI,IAAK,QAAW,CAC1E,IAAI4sB,EAAI,EAAGA,EAAIy+E,EAAI,OAAQ,EAAEz+E,EAAG,CAC/B,OAAO,OAAOy+E,EAAIz+E,CAAC,EAAC,CAEnB,IAAK,SAAUmuF,EAAS,IAAK,MAC7B,IAAK,SAAUA,EAAS,IAAK,MAC7B,IAAK,UAAWA,EAAS,IAAK,MAC9B,IAAK,SAAUA,EAAS1P,EAAIz+E,CAAC,YAAa,KAAO,IAAM,IAAK,MAC5D,QAASmuF,EAAS,GAClB,CACDhxB,EAAS,KAAK,IAAIA,EAAQ,OAAOshB,EAAIz+E,CAAC,CAAC,EAAE,MAAM,EAC/CkuF,EAAQA,GAASA,GAASC,EAAS,IAAMA,CAEzC,CACEhxB,EAAS,MAAKA,EAAS,KAC1BgxB,IAAWN,EAAKz6G,CAAC,GAAG,CAAA,GAAI,KAAK,CAAE,GAAE,KAE9B+6G,GAAU,KACTN,EAAKz6G,CAAC,EAAE,IAAI,IAAM+pF,IAAQA,EAAS0wB,EAAKz6G,CAAC,EAAE,IAAI,KAEhD86G,GAAS,KAAOC,GAAU,MAC5BD,EAAQ,IACRD,EAAY76G,CAAC,EAAIy6G,EAAKz6G,CAAC,EAAE,IAAI,IAC7B+pF,EAAS0wB,EAAKz6G,CAAC,EAAE,IAAI,KAEtB46G,EAAU56G,CAAC,EAAI86G,GAAS,KAAOC,GAAU,IAAMhxB,EAAUswB,EAAMS,CAAK,GAAK,EACzEf,GAAQa,EAAU56G,CAAC,EACnB26G,EAAS36G,CAAC,EAAI86G,CACd,CAED,IAAIv7F,EAAI2qF,EAAG,KAAK,EAAE,EAKlB,IAJA3qF,EAAE,YAAY,EAAG,SAAU,EAC3BA,EAAE,YAAY,EAAGnK,EAAK,MAAM,EAC5BmK,EAAE,YAAY,EAAG,IAAM,GAAKm7F,CAAI,EAChCn7F,EAAE,YAAY,EAAGw6F,CAAI,EACjB/5G,EAAE,EAAGA,EAAI,EAAG,EAAEA,EAAGuf,EAAE,YAAY,EAAG,CAAC,EAGvC,IAFAA,EAAE,YAAY,EAAG,GAAe,CAACg6F,EAA6BtxB,KAAwB,IAAO,CAAE,EAE3FjoF,EAAI,EAAG4sB,EAAI,EAAG5sB,EAAI2lC,EAAQ,OAAQ,EAAE3lC,EACvC,GAAG2lC,EAAQ3lC,CAAC,GAAK,KACjB,KAAIg7G,EAAK9Q,EAAG,KAAK,EAAE,EACf+Q,IAAMt1E,EAAQ3lC,CAAC,EAAE,MAAM,GAAG,EAAI,0BAAgD,MAAM,EAAG,EAAE,EAC7Fg7G,EAAG,YAAY,EAAGC,GAAI,MAAM,EAC5BD,EAAG,YAAY,EAAGL,EAAS36G,CAAC,GAAK,IAAM,IAAM26G,EAAS36G,CAAC,EAAG,MAAM,EAChEg7G,EAAG,YAAY,EAAGpuF,CAAC,EACnBouF,EAAG,YAAY,EAAGJ,EAAU56G,CAAC,GAAKq6G,EAAMM,EAAS36G,CAAC,CAAC,GAAK,CAAC,EACzDg7G,EAAG,YAAY,EAAGH,EAAY76G,CAAC,GAAK,CAAC,EACrCg7G,EAAG,YAAY,EAAG,CAAI,EACtBA,EAAG,YAAY,EAAG,CAAC,EACnBA,EAAG,YAAY,EAAG,CAAC,EACnBA,EAAG,YAAY,EAAG,CAAC,EACnBA,EAAG,YAAY,EAAG,CAAC,EACnBpuF,GAAMguF,EAAU56G,CAAC,GAAKq6G,EAAMM,EAAS36G,CAAC,CAAC,GAAK,EAG7C,IAAIk7G,GAAKhR,EAAG,KAAK,GAAG,EAEpB,IADAgR,GAAG,YAAY,EAAG,EAAU,EACxBl7G,EAAE,EAAGA,EAAI,GAAG,EAAEA,EAAGk7G,GAAG,YAAY,EAAG,CAAU,EACjD,IAAIl7G,EAAE,EAAGA,EAAIoV,EAAK,OAAQ,EAAEpV,EAAG,CAC9B,IAAIm7G,GAAOjR,EAAG,KAAK6P,CAAI,EAEvB,IADAoB,GAAK,YAAY,EAAG,CAAC,EACjBvuF,EAAE,EAAGA,EAAE+Y,EAAQ,OAAQ,EAAE/Y,EAC5B,GAAG+Y,EAAQ/Y,CAAC,GAAK,KACjB,OAAO+tF,EAAS/tF,CAAC,EAAC,CACjB,IAAK,IAAKuuF,GAAK,YAAY,EAAG/lG,EAAKpV,CAAC,EAAE4sB,CAAC,GAAK,KAAO,GAAOxX,EAAKpV,CAAC,EAAE4sB,CAAC,EAAI,GAAO,EAAI,EAAG,MACrF,IAAK,IAAKuuF,GAAK,YAAY,EAAG/lG,EAAKpV,CAAC,EAAE4sB,CAAC,GAAG,EAAG,GAAG,EAAG,MACnD,IAAK,IACJ,IAAIwuF,GAAK,IAET,IADG,OAAOhmG,EAAKpV,CAAC,EAAE4sB,CAAC,GAAK,WAAUwuF,GAAKhmG,EAAKpV,CAAC,EAAE4sB,CAAC,EAAE,QAAQiuF,EAAYjuF,CAAC,GAAG,CAAC,GACvE8tF,EAAK,EAAGA,EAAOE,EAAUhuF,CAAC,EAAEwuF,GAAG,OAAQ,EAAEV,EAAMS,GAAK,YAAY,EAAG,EAAI,EAC3EA,GAAK,YAAY,EAAGC,GAAI,MAAM,EAC9B,MACD,IAAK,IACAhmG,EAAKpV,CAAC,EAAE4sB,CAAC,GAEZuuF,GAAK,YAAY,GAAI,OAAO/lG,EAAKpV,CAAC,EAAE4sB,CAAC,EAAE,YAAa,GAAE,MAAM,EAAE,EAAG,MAAM,EACvEuuF,GAAK,YAAY,GAAI,MAAM/lG,EAAKpV,CAAC,EAAE4sB,CAAC,EAAE,SAAQ,EAAG,IAAI,MAAM,EAAE,EAAG,MAAM,EACtEuuF,GAAK,YAAY,GAAI,KAAK/lG,EAAKpV,CAAC,EAAE4sB,CAAC,EAAE,QAAS,GAAE,MAAM,EAAE,EAAG,MAAM,GAJlDuuF,GAAK,YAAY,EAAG,WAAY,MAAM,EAKpD,MACH,IAAK,IACJ,IAAIE,GAAK,OAAOjmG,EAAKpV,CAAC,EAAE4sB,CAAC,GAAK,KAAOxX,EAAKpV,CAAC,EAAE4sB,CAAC,EAAI,EAAE,EAAE,MAAM,EAAGguF,EAAUhuF,CAAC,CAAC,EAE3E,IADAuuF,GAAK,YAAY,EAAGE,GAAI,MAAM,EAC1BX,EAAK,EAAGA,EAAOE,EAAUhuF,CAAC,EAAEyuF,GAAG,OAAQ,EAAEX,EAAMS,GAAK,YAAY,EAAG,EAAI,EAAG,KAC/E,CAGF,CACD,OAAAjR,EAAG,KAAK,CAAC,EAAE,YAAY,EAAG,EAAI,EACvBA,EAAG,KACX,CACC,MAAO,CACN,YAAakQ,EACb,SAAUD,EACV,WAAYG,CACd,CACA,IAEIgB,GAAqB,UAAW,CAEnC,IAAIC,EAAgB,CACnB,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAC3C,GAAG,IAAK,GAAG,IAAK,GAAG,IAAa,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,GAAG,IAAa,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,GAAG,IAAa,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAC3C,GAAG,IAAK,GAAG,IAAK,GAAG,IAAa,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,GAAG,IAAa,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IAAK,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,GAAG,IAAa,GAAG,IACnC,GAAG,IAAK,GAAG,IAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAC1C,GAAG,IAAK,GAAG,IAAK,GAAG,IACnB,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,KAAK,IACtB,EAAS,IAAe,EAAS,IAAa,EAAS,IACvD,EAAS,IAAe,EAAS,IAAa,EAAS,IACvD,EAAS,IAAQ,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAC1E,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,KAAK,IAC3D,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,IAAK,IAAI,GAC5D,EACKC,EAAkB,IAAI,OAAO,SAAavlG,GAAKslG,CAAY,EAAE,KAAK,GAAG,EAAE,QAAQ,SAAU,OAAO,EAAE,QAAQ,YAAY,MAAM,EAAI,QAAS,IAAI,EAC7IE,EAAe,SAASj6G,EAAGitF,EAAG,CAAE,IAAIj2D,EAAI+iF,EAAa9sB,CAAE,EAAG,OAAO,OAAOj2D,GAAK,SAAWiwD,GAASjwD,CAAC,EAAIA,GACtGkjF,EAAmB,SAASltB,EAAIC,EAAIC,EAAI,CAAE,IAAIitB,EAAUltB,EAAG,WAAW,CAAC,EAAI,IAAO,EAAMC,EAAG,WAAW,CAAC,EAAI,GAAO,OAAOitB,GAAS,GAAKntB,EAAK/F,GAASkzB,CAAK,CAAE,EAChKJ,EAAa,GAAG,EAAI,IAEpB,SAASK,EAAY1nE,EAAenF,EAA2B,CAC9D,OAAOA,EAAK,KAAI,CACf,IAAK,SAAU,OAAO8sE,EAAgB7yB,GAAc90C,CAAC,EAAGnF,CAAI,EAC5D,IAAK,SAAU,OAAO8sE,EAAgB3nE,EAAGnF,CAAI,EAC7C,IAAK,SAAU,OAAO8sE,EAAgB5yB,IAAW,OAAO,SAAS/0C,CAAC,EAAIA,EAAE,SAAS,QAAQ,EAAIy1C,GAAIz1C,CAAC,EAAGnF,CAAI,EACzG,IAAK,QAAS,OAAO8sE,EAAgBjX,GAAO1wD,CAAC,EAAGnF,CAAI,CACpD,CACD,MAAM,IAAI,MAAM,qBAAuBA,EAAK,IAAI,CAChD,CACD,SAAS8sE,EAAgB58G,EAAgB8vC,EAA2B,CACnE,IAAI+sE,EAAU78G,EAAI,MAAM,SAAS,EAAG81F,EAAI,GAAIgD,EAAI,GAAI9H,EAAK,EAAG8rB,EAAK,EAAGj8G,EAAc,GAC9E0mF,EAA4B,CAAA,EAC5Bw1B,EAAmC,KACnCC,EAAM,CAAE,EAAEC,EAA6B,CAAA,EAAIC,EAA6B,CAAE,EAAEC,EAAuB,GACnGC,EAAO,EAAG,EAEd,IADG,CAACttE,EAAK,UAAY,GAAGu5C,GAAO,CAACv5C,EAAK,QAAQ,EACtCkhD,IAAO6rB,EAAQ,OAAQ,EAAE7rB,EAAI,CACnCosB,EAAO,EACP,IAAIC,EAAKR,EAAQ7rB,CAAE,EAAE,KAAI,EAAG,QAAQ,kCAAmCyrB,CAAgB,EAAE,QAAQF,EAAiBC,CAAY,EAC1Hc,GAAOD,EAAK,QAAQ,MAAO,IAAQ,EAAE,MAAM,GAAG,EAAE,IAAI,SAASjjE,EAAG,CAAE,OAAOA,EAAE,QAAQ,UAAW,GAAG,CAAE,CAAE,EACrGmjE,GAAGD,GAAO,CAAC,EAAGn9G,GAClB,GAAGk9G,EAAK,OAAS,EAAG,OAAOE,GAAE,CAC7B,IAAK,KAAM,MACX,IAAK,IAAK,MACV,IAAK,IAAK,MACV,IAAK,IAAK,MACV,IAAK,IAAK,MACV,IAAK,IACDD,GAAO,CAAC,EAAE,OAAO,CAAC,GAAK,KACzB/1B,EAAQ,KAAK81B,EAAK,MAAM,CAAC,EAAE,QAAQ,MAAO,GAAG,CAAC,EAC/C,MACD,IAAK,IACL,IAAIG,GAAW,GAAOC,GAAW,GAAOC,GAAW,GAAOC,GAAW,GAAOrQ,GAAK,GAAIC,GAAK,GAC1F,IAAIuP,EAAG,EAAGA,EAAGQ,GAAO,OAAQ,EAAER,EAAI,OAAOQ,GAAOR,CAAE,EAAE,OAAO,CAAC,EAAC,CAC5D,IAAK,IAAK,MACV,IAAK,IAAKhkB,EAAI,SAASwkB,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAGW,GAAW,GAAM,MAChE,IAAK,IAEJ,IADA3nB,EAAI,SAASwnB,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAOW,KAAU3kB,EAAI,GACnD,EAAIj4F,EAAI,OAAQ,GAAKi1F,EAAG,EAAE,EAAGj1F,EAAI,CAAC,EAAI,GAC1C,MACD,IAAK,IACJV,GAAMm9G,GAAOR,CAAE,EAAE,MAAM,CAAC,EACrB38G,GAAI,OAAO,CAAC,IAAM,IAAKA,GAAMA,GAAI,MAAM,EAAEA,GAAI,OAAS,CAAC,EAClDA,KAAQ,OAAQA,GAAM,GACtBA,KAAQ,QAASA,GAAM,GACtB,MAAM2lG,GAAS3lG,EAAG,CAAC,EAGjB,MAAM8lG,GAAU9lG,EAAG,EAAE,QAAO,CAAE,IACxCA,GAAMslG,GAAUtlG,EAAG,IAHnBA,GAAM2lG,GAAS3lG,EAAG,EACf48G,IAAqB,MAAQnrB,GAAYmrB,CAAgB,IAAG58G,GAAMklG,GAAQllG,EAAG,IAKjFq9G,GAAW,GACX,MACD,IAAK,IACJG,GAAW,GACX,IAAIC,EAAUC,GAASP,GAAOR,CAAE,EAAE,MAAM,CAAC,EAAG,CAAC,EAAEhnB,EAAE,EAAEgD,CAAC,CAAC,EACrDj4F,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,CAACj4F,EAAIi1F,CAAC,EAAEgD,CAAC,EAAG8kB,CAAO,EAC/B,MACD,IAAK,IACJF,GAAW,GACX78G,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,CAACj4F,EAAIi1F,CAAC,EAAEgD,CAAC,EAAG,KAAK,EAC7B,MACD,IAAK,IAAK,MACV,IAAK,IAAKwU,GAAK,SAASgQ,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAG,MAChD,IAAK,IAAKvP,GAAK,SAAS+P,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAG,MAChD,QAAS,GAAGhtE,GAAQA,EAAK,IAAK,MAAM,IAAI,MAAM,mBAAqButE,CAAI,CACvE,CAMD,GALGG,KACC38G,EAAIi1F,CAAC,EAAEgD,CAAC,GAAKj4F,EAAIi1F,CAAC,EAAEgD,CAAC,EAAE,QAAU,EAAGj4F,EAAIi1F,CAAC,EAAEgD,CAAC,EAAE,CAAC,EAAI34F,GACjDU,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI34F,GACjB48G,EAAmB,MAEjBW,GAAU,CACZ,GAAGC,GAAU,MAAM,IAAI,MAAM,6CAA6C,EAC1E,IAAIG,EAAUxQ,GAAK,IAAMzsG,EAAIysG,EAAE,EAAEC,EAAE,EACnC,GAAG,CAACuQ,GAAW,CAACA,EAAQ,CAAC,EAAG,MAAM,IAAI,MAAM,sCAAsC,EAClFj9G,EAAIi1F,CAAC,EAAEgD,CAAC,EAAE,CAAC,EAAIilB,GAAkBD,EAAQ,CAAC,EAAG,CAAC,EAAGhoB,EAAIwX,GAAI,EAAGxU,EAAIyU,EAAE,CAAC,CACnE,CACD,MACA,IAAK,IACL,IAAIyQ,EAAS,EACb,IAAIlB,EAAG,EAAGA,EAAGQ,GAAO,OAAQ,EAAER,EAAI,OAAOQ,GAAOR,CAAE,EAAE,OAAO,CAAC,EAAC,CAC5D,IAAK,IAAKhkB,EAAI,SAASwkB,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAG,EAAEkB,EAAQ,MACzD,IAAK,IAEJ,IADAloB,EAAI,SAASwnB,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAC9B,EAAIj8G,EAAI,OAAQ,GAAKi1F,EAAG,EAAE,EAAGj1F,EAAI,CAAC,EAAI,GAC1C,MACD,IAAK,IAAKu8G,EAAO,SAASE,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAI,GAAI,MACrD,IAAK,IAAK,MACV,IAAK,IAAK,MACV,IAAK,IACJC,EAAmBx1B,EAAQ,SAAS+1B,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EACxD,MACD,IAAK,IAAK,MACV,IAAK,IAAK,MACV,IAAK,IAAK,MACV,IAAK,IAEJ,IADAK,EAAKG,GAAOR,CAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,EAC9B,EAAI,SAASK,EAAG,CAAC,EAAG,EAAE,EAAG,GAAK,SAASA,EAAG,CAAC,EAAG,EAAE,EAAG,EAAE,EACxDC,EAAO,SAASD,EAAG,CAAC,EAAG,EAAE,EACzBD,EAAQ,EAAE,CAAC,EAAIE,IAAS,EAAI,CAAC,OAAO,EAAI,EAAG,CAAC,IAAIA,CAAI,EAAGa,GAAYf,EAAQ,EAAE,CAAC,CAAC,EAC9E,MACH,IAAK,IACJpkB,EAAI,SAASwkB,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAC9BI,EAAQpkB,CAAC,IAAGokB,EAAQpkB,CAAC,EAAI,IAC7B,MACD,IAAK,IACJhD,EAAI,SAASwnB,GAAOR,CAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAC9BG,EAAQnnB,CAAC,IAAGmnB,EAAQnnB,CAAC,EAAI,IAC1BsnB,EAAO,GAAKH,EAAQnnB,CAAC,EAAE,IAAMsnB,EAAMH,EAAQnnB,CAAC,EAAE,IAAMooB,GAAMd,CAAI,GACzDA,IAAS,IAAGH,EAAQnnB,CAAC,EAAE,OAAS,IACxC,MACD,QAAS,GAAGhmD,GAAQA,EAAK,IAAK,MAAM,IAAI,MAAM,mBAAqButE,CAAI,CACvE,CACEW,EAAS,IAAGjB,EAAmB,MAAM,MACxC,QAAS,GAAGjtE,GAAQA,EAAK,IAAK,MAAM,IAAI,MAAM,mBAAqButE,CAAI,CACtE,CACD,CACD,OAAGJ,EAAQ,OAAS,IAAGD,EAAI,OAAO,EAAIC,GACnCC,EAAQ,OAAS,IAAGF,EAAI,OAAO,EAAIE,GACnCptE,GAAQA,EAAK,YAAWjvC,EAAMA,EAAI,MAAM,EAAGivC,EAAK,SAAS,GACrD,CAACjvC,EAAKm8G,CAAG,CAChB,CAED,SAASmB,EAAclpE,EAAenF,EAAoB,CACzD,IAAIsuE,EAASzB,EAAY1nE,EAAGnF,CAAI,EAC5BwrE,EAAM8C,EAAO,CAAC,EAAG/Q,EAAK+Q,EAAO,CAAC,EAC9B7kF,EAAIs0E,GAAayN,EAAKxrE,CAAI,EAC9B,OAAA94B,GAAKq2F,CAAE,EAAE,QAAQ,SAASz4D,EAAG,CAAErb,EAAEqb,CAAC,EAAIy4D,EAAGz4D,CAAC,CAAI,CAAA,EACvCrb,CACP,CAED,SAAS8kF,EAAiBppE,EAAenF,EAAmB,CAAE,OAAOi9D,GAAkBoR,EAAclpE,EAAGnF,CAAI,EAAGA,CAAI,CAAI,CAEvH,SAASwuE,EAAmBlT,EAAeiC,EAAkBvX,EAAcgD,EAAqC,CAC/G,IAAIv/D,EAAI,OAASu8D,EAAE,GAAK,MAAQgD,EAAE,GAAK,KACvC,OAAOsS,EAAK,EAAC,CACZ,IAAK,IACJ7xE,GAAM6xE,EAAK,GAAG,EACXA,EAAK,GAAK,CAACA,EAAK,IAAG7xE,GAAK,KAAOglF,GAASnT,EAAK,EAAG,CAAC,EAAEtV,EAAG,EAAEgD,CAAC,CAAC,GAAG,MACjE,IAAK,IAAKv/D,GAAK6xE,EAAK,EAAI,OAAS,QAAS,MAC1C,IAAK,IAAK7xE,GAAK6xE,EAAK,GAAKA,EAAK,EAAG,MACjC,IAAK,IAAK7xE,GAAK,KAAO6xE,EAAK,GAAKA,EAAK,GAAK,IAAK,MAC/C,IAAK,IAAK7xE,GAAK,IAAM6xE,EAAK,EAAE,QAAQ,KAAK,EAAE,EAAE,QAAQ,KAAM,IAAI,EAAI,IAAK,KACxE,CACD,OAAO7xE,CACP,CAED,SAASilF,EAAmBxzB,EAAKwwB,EAAM,CACtCA,EAAK,QAAQ,SAASpP,EAAKrrG,EAAG,CAC7B,IAAI09G,EAAM,OAAS19G,EAAE,GAAK,KAAOA,EAAE,GAAK,IACrCqrG,EAAI,OAAQqS,GAAO,KAElB,OAAOrS,EAAI,OAAS,UAAY,CAACA,EAAI,MAAKA,EAAI,IAAMsS,GAAStS,EAAI,KAAK,GACtE,OAAOA,EAAI,KAAO,UAAY,CAACA,EAAI,MAAKA,EAAI,IAAMuS,GAAQvS,EAAI,GAAG,GACjE,OAAOA,EAAI,KAAO,WAAUqS,GAAO,KAAK,MAAMrS,EAAI,GAAG,IAEtDqS,EAAI,OAAOA,EAAI,OAAS,CAAC,GAAK,KAAKzzB,EAAI,KAAKyzB,CAAG,CACrD,CAAG,CACD,CAED,SAASG,EAAmB5zB,EAAuB6zB,EAAyB,CAC3EA,EAAK,QAAQ,SAAS/1B,EAAK/nF,EAAG,CAC7B,IAAI09G,EAAM,KACP31B,EAAI,OAAQ21B,GAAO,MACd31B,EAAI,IAAK21B,GAAO,IAAM,GAAK31B,EAAI,IAAM,IACrCA,EAAI,MAAK21B,GAAO,IAAM,GAAKK,GAAMh2B,EAAI,GAAG,EAAI,KACjD21B,EAAI,OAAS,GAAGzzB,EAAI,KAAKyzB,EAAM,KAAO19G,EAAE,EAAE,CAChD,CAAG,CACD,CAED,SAASg+G,EAAc1R,EAAkBv9D,EAA0B,CAClE,IAAIkvE,EAA6B,CAAC,aAAa,EAAGzlF,EAAsB,CAAA,EACpE7pB,EAAIi9F,GAAkBU,EAAG,MAAM,CAAC,EAAGjC,EACnCgC,EAAQ,MAAM,QAAQC,CAAE,EACxB4R,EAAK;AAAA,EAETD,EAAS,KAAK,YAAY,EAC1BA,EAAS,KAAK,iBAAiB,EAC5B3R,EAAG,OAAO,GAAGmR,EAAmBQ,EAAU3R,EAAG,OAAO,CAAC,EACrDA,EAAG,OAAO,GAAGuR,EAAmBI,EAAU3R,EAAG,OAAO,CAAC,EAExD2R,EAAS,KAAK,OAAStvG,EAAE,EAAE,EAAIA,EAAE,EAAE,EAAI,GAAK,MAAQA,EAAE,EAAE,EAAIA,EAAE,EAAE,EAAI,GAAK,KAAO,CAACA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EACnH,QAAQomF,EAAIpmF,EAAE,EAAE,EAAGomF,GAAKpmF,EAAE,EAAE,EAAG,EAAEomF,EAChC,QAAQgD,EAAIppF,EAAE,EAAE,EAAGopF,GAAKppF,EAAE,EAAE,EAAG,EAAEopF,EAAG,CACnC,IAAIomB,EAAQ1T,GAAY,CAAC,EAAE1V,EAAE,EAAEgD,CAAC,CAAC,EACjCsS,EAAOgC,GAASC,EAAGvX,CAAC,GAAG,CAAE,GAAEgD,CAAC,EAAGuU,EAAG6R,CAAK,EACpC,GAAC9T,GAASA,EAAK,GAAK,OAAS,CAACA,EAAK,GAAKA,EAAK,KAChD7xE,EAAE,KAAK+kF,EAAmBlT,EAAMiC,EAAIvX,EAAGgD,CAAO,CAAC,CAC/C,CAEF,OAAOkmB,EAAS,KAAKC,CAAE,EAAIA,EAAK1lF,EAAE,KAAK0lF,CAAE,EAAIA,EAAK,IAAMA,CACxD,CAED,MAAO,CACN,YAAaZ,EACb,SAAUF,EACV,WAAYY,CACd,CACA,IAEII,GAAoB,UAAW,CAClC,SAASC,EAAWnqE,EAAenF,EAAc,CAChD,OAAOA,EAAK,KAAI,CACf,IAAK,SAAU,OAAOuvE,EAAet1B,GAAc90C,CAAC,EAAGnF,CAAI,EAC3D,IAAK,SAAU,OAAOuvE,EAAepqE,EAAGnF,CAAI,EAC5C,IAAK,SAAU,OAAOuvE,EAAer1B,IAAW,OAAO,SAAS/0C,CAAC,EAAIA,EAAE,SAAS,QAAQ,EAAIy1C,GAAIz1C,CAAC,EAAGnF,CAAI,EACxG,IAAK,QAAS,OAAOuvE,EAAe1Z,GAAO1wD,CAAC,EAAGnF,CAAI,CACnD,CACD,MAAM,IAAI,MAAM,qBAAuBA,EAAK,IAAI,CAChD,CACD,SAASuvE,EAAer/G,EAAgB8vC,EAAc,CAErD,QADI+sE,EAAU78G,EAAI,MAAM;AAAA,CAAI,EAAG81F,EAAI,GAAIgD,EAAI,GAAI9H,EAAK,EAAGnwF,EAAc,CAAA,EAC9DmwF,IAAO6rB,EAAQ,OAAQ,EAAE7rB,EAAI,CACnC,GAAI6rB,EAAQ7rB,CAAE,EAAE,KAAM,IAAK,MAAO,CAAEnwF,EAAI,EAAEi1F,CAAC,EAAI,CAAA,EAAIgD,EAAI,EAAG,QAAW,CACrE,GAAI,EAAAhD,EAAI,GACR,KAAIwpB,EAAWzC,EAAQ7rB,CAAE,EAAE,OAAO,MAAM,GAAG,EACvCpoF,EAAO02G,EAAS,CAAC,EAAGz9G,EAAQy9G,EAAS,CAAC,EAC1C,EAAEtuB,EAEF,QADI76E,EAAO0mG,EAAQ7rB,CAAE,GAAK,IAClB76E,EAAK,MAAM,MAAM,GAAG,CAAA,GAAI,OAAS,GAAM66E,EAAK6rB,EAAQ,OAAS,GAAG1mG,GAAQ;AAAA,EAAO0mG,EAAQ,EAAE7rB,CAAE,EAEnG,OADA76E,EAAOA,EAAK,OACJ,CAACvN,EAAI,CACZ,IAAK,GACJ,GAAIuN,IAAS,MAAO,CAAEtV,EAAI,EAAEi1F,CAAC,EAAI,CAAA,EAAIgD,EAAI,EAAG,QAAW,SAC9C3iF,IAAS,MAAO,MAAM,IAAI,MAAM,oCAAsCA,CAAI,EACnF,MACD,IAAK,GACDA,IAAS,OAAQtV,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,GACxB3iF,IAAS,QAAStV,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,GAC7B,MAAMgN,GAASjkG,CAAK,CAAC,EACrB,MAAMokG,GAAUpkG,CAAK,EAAE,QAAS,CAAA,EACpChB,EAAIi1F,CAAC,EAAEgD,CAAC,EAAIj3F,EAD2BhB,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI2M,GAAU5jG,CAAK,EADtChB,EAAIi1F,CAAC,EAAEgD,CAAC,EAAIgN,GAASjkG,CAAK,EAG3D,EAAEi3F,EAAG,MACN,IAAK,GACJ3iF,EAAOA,EAAK,MAAM,EAAEA,EAAK,OAAO,CAAC,EACjCA,EAAOA,EAAK,QAAQ,MAAO,GAAG,EACjBA,GAAQA,EAAK,MAAM,SAAS,IAAGA,EAAOA,EAAK,MAAM,EAAG,EAAE,GACnEtV,EAAIi1F,CAAC,EAAEgD,GAAG,EAAI3iF,IAAS,GAAKA,EAAO,KACnC,KACD,CACD,GAAIA,IAAS,MAAO,MACpB,CACD,OAAG25B,GAAQA,EAAK,YAAWjvC,EAAMA,EAAI,MAAM,EAAGivC,EAAK,SAAS,GACrDjvC,CACP,CAED,SAAS0+G,EAAav/G,EAAgB8vC,EAAoB,CAAE,OAAO+9D,GAAauR,EAAWp/G,EAAK8vC,CAAI,EAAGA,CAAI,CAAI,CAC/G,SAAS0vE,EAAgBx/G,EAAgB8vC,EAAmB,CAAE,OAAOi9D,GAAkBwS,EAAav/G,EAAK8vC,CAAI,EAAGA,CAAI,CAAI,CAExH,IAAI2vE,EAA6B,UAAW,CAC3C,IAAIC,EAAa,SAAYnmF,EAAqBomF,EAAkBj6G,EAAcpC,EAAcuW,EAAc,CAC7G0f,EAAE,KAAKomF,CAAK,EACZpmF,EAAE,KAAK7zB,EAAI,IAAMpC,CAAC,EAClBi2B,EAAE,KAAK,IAAM1f,EAAE,QAAQ,KAAK,IAAI,EAAI,GAAG,CAC1C,EACM+lG,EAAa,SAAYrmF,EAAqB3wB,EAAiBlD,EAAWmU,EAAc,CAC3F0f,EAAE,KAAK3wB,EAAO,IAAMlD,CAAC,EACrB6zB,EAAE,KAAK3wB,GAAQ,EAAI,IAAMiR,EAAE,QAAQ,KAAK,IAAI,EAAI,IAAMA,CAAC,CAC1D,EACE,OAAO,SAAsBwzF,EAA8C,CAC1E,IAAI9zE,EAAsB,CAAA,EACtB7pB,EAAIi9F,GAAkBU,EAAG,MAAM,CAAC,EAAGjC,EACnCgC,EAAQ,MAAM,QAAQC,CAAE,EAC5BqS,EAAWnmF,EAAG,QAAS,EAAG,EAAG,SAAS,EACtCmmF,EAAWnmF,EAAG,UAAW,EAAG7pB,EAAE,EAAE,EAAIA,EAAE,EAAE,EAAI,EAAE,EAAE,EAChDgwG,EAAWnmF,EAAG,SAAU,EAAG7pB,EAAE,EAAE,EAAIA,EAAE,EAAE,EAAI,EAAE,EAAE,EAC/CgwG,EAAWnmF,EAAG,OAAQ,EAAG,EAAE,EAAE,EAC7B,QAAQu8D,EAAIpmF,EAAE,EAAE,EAAGomF,GAAKpmF,EAAE,EAAE,EAAG,EAAEomF,EAAG,CACnC8pB,EAAWrmF,EAAG,GAAI,EAAG,KAAK,EAC1B,QAAQu/D,EAAIppF,EAAE,EAAE,EAAGopF,GAAKppF,EAAE,EAAE,EAAG,EAAEopF,EAAG,CACnC,IAAIomB,EAAQ1T,GAAY,CAAC,EAAE1V,EAAE,EAAEgD,CAAC,CAAC,EAEjC,GADAsS,EAAOgC,GAASC,EAAGvX,CAAC,GAAG,CAAE,GAAEgD,CAAC,EAAIuU,EAAG6R,CAAK,EACrC,CAAC9T,EAAM,CAAEwU,EAAWrmF,EAAG,EAAG,EAAG,EAAE,EAAG,QAAS,CAC9C,OAAO6xE,EAAK,EAAC,CACZ,IAAK,IACJ,IAAIjrG,EAAeirG,EAAK,EACrB,CAACjrG,GAAOirG,EAAK,GAAK,OAAMjrG,EAAMirG,EAAK,GACnCjrG,GAAO,KACIirG,EAAK,GAAK,CAACA,EAAK,EAAGwU,EAAWrmF,EAAG,EAAG,EAAG,IAAM6xE,EAAK,CAAC,EAC3DwU,EAAWrmF,EAAG,EAAG,EAAG,EAAE,EAEvBqmF,EAAWrmF,EAAG,EAAGp5B,EAAK,GAAG,EAC9B,MACD,IAAK,IACJy/G,EAAWrmF,EAAG,EAAG6xE,EAAK,EAAI,EAAI,EAAGA,EAAK,EAAI,OAAS,OAAO,EAC1D,MACD,IAAK,IACJwU,EAAWrmF,EAAG,EAAG,EAAe,MAAM6xE,EAAK,CAAC,EAAKA,EAAK,EAAI,KAAOA,EAAK,EAAI,GAAG,EAC7E,MACD,IAAK,IACAA,EAAK,IAAGA,EAAK,EAAI/c,GAAW+c,EAAK,GAAKjf,GAAU,EAAE,EAAG8Y,GAAQQ,GAAU2F,EAAK,CAAC,CAAC,CAAC,GACxEwU,EAAWrmF,EAAG,EAAG6xE,EAAK,EAAG,GAAG,EAEvC,MACD,QAASwU,EAAWrmF,EAAG,EAAG,EAAG,EAAE,CAC/B,CACD,CACD,CACDqmF,EAAWrmF,EAAG,GAAI,EAAG,KAAK,EAC1B,IAAI0lF,EAAK;AAAA,EACLhV,EAAK1wE,EAAE,KAAK0lF,CAAE,EAElB,OAAOhV,CACV,CACA,IACC,MAAO,CACN,YAAauV,EACb,SAAUD,EACV,WAAYE,CACd,CACA,IAEII,GAAoB,UAAW,CAClC,SAASC,EAAOjmG,EAAyB,CAAE,OAAOA,EAAE,QAAQ,OAAO,IAAI,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO;AAAA,CAAI,CAAI,CACpH,SAASsqB,EAAOtqB,EAAyB,CAAE,OAAOA,EAAE,QAAQ,MAAO,KAAK,EAAE,QAAQ,KAAM,KAAK,EAAE,QAAQ,MAAM,KAAK,CAAI,CAEtH,SAASkmG,EAAW//G,EAAgB8vC,EAAc,CAEjD,QADI+sE,EAAU78G,EAAI,MAAM;AAAA,CAAI,EAAG81F,EAAI,GAAIgD,EAAI,GAAI9H,EAAK,EAAGnwF,EAAc,CAAA,EAC9DmwF,IAAO6rB,EAAQ,OAAQ,EAAE7rB,EAAI,CACnC,IAAIssB,EAAST,EAAQ7rB,CAAE,EAAE,OAAO,MAAM,GAAG,EACzC,GAAGssB,EAAO,CAAC,IAAM,OACjB,KAAI1jB,EAAO0S,GAAYgR,EAAO,CAAC,CAAC,EAChC,GAAGz8G,EAAI,QAAU+4F,EAAK,EAAG,IAAI9D,EAAIj1F,EAAI,OAAQi1F,GAAK8D,EAAK,EAAG,EAAE9D,EAAOj1F,EAAIi1F,CAAC,IAAGj1F,EAAIi1F,CAAC,EAAI,IAEpF,OADAA,EAAI8D,EAAK,EAAGd,EAAIc,EAAK,EACd0jB,EAAO,CAAC,EAAC,CACf,IAAK,IAAKz8G,EAAIi1F,CAAC,EAAEgD,CAAC,EAAIgnB,EAAOxC,EAAO,CAAC,CAAC,EAAG,MACzC,IAAK,IAAKz8G,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,CAACwkB,EAAO,CAAC,EAAG,MAClC,IAAK,MAAO,IAAItB,EAAKsB,EAAOA,EAAO,OAAS,CAAC,EAE7C,IAAK,MACJ,OAAOA,EAAO,CAAC,EAAC,CACf,IAAK,KAAMz8G,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,GAACwkB,EAAO,CAAC,EAAkB,MAClD,QAASz8G,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,CAACwkB,EAAO,CAAC,EAAG,KACjC,CACEA,EAAO,CAAC,GAAK,QAAOz8G,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,CAACj4F,EAAIi1F,CAAC,EAAEgD,CAAC,EAAGkjB,CAAE,EAClD,EACD,CACD,OAAGlsE,GAAQA,EAAK,YAAWjvC,EAAMA,EAAI,MAAM,EAAGivC,EAAK,SAAS,GACrDjvC,CACP,CAED,SAASm/G,EAAa/qE,EAAcnF,EAAoB,CAAE,OAAO+9D,GAAakS,EAAW9qE,EAAGnF,CAAI,EAAGA,CAAI,CAAI,CAC3G,SAASmwE,EAAgBhrE,EAAcnF,EAAmB,CAAE,OAAOi9D,GAAkBiT,EAAa/qE,EAAGnF,CAAI,EAAGA,CAAI,CAAI,CAEpH,IAAInI,EAAS,CACZ,yBACA,oBACA,0EACF,EAAG,KAAK;AAAA,CAAI,EAEPu4E,EAAM,CACT,qCACA,yCACF,EAAG,KAAK;AAAA,CAAI,EAAI;AAAA,EAGXzhE,EAAO,CACV,wCACA,YACF,EAAG,KAAK;AAAA,CAAI,EAEPjsC,EAAM,uCAEV,SAAS2tG,EAAkB9S,EAA6B,CACvD,GAAG,CAACA,GAAM,CAACA,EAAG,MAAM,EAAG,MAAO,GAI9B,QAHI9zE,EAAsB,CAAA,EAAI0wE,EAAuB,CAAE,EAAEmB,EAAM8T,EAAQ,GACnExvG,EAAI68F,GAAac,EAAG,MAAM,CAAC,EAC3BD,EAAQ,MAAM,QAAQC,CAAE,EACpBvX,EAAIpmF,EAAE,EAAE,EAAGomF,GAAKpmF,EAAE,EAAE,EAAG,EAAEomF,EAChC,QAAQgD,EAAIppF,EAAE,EAAE,EAAGopF,GAAKppF,EAAE,EAAE,EAAG,EAAEopF,EAGhC,GAFAomB,EAAQ1T,GAAY,CAAC,EAAE1V,EAAE,EAAEgD,CAAC,CAAC,EAC7BsS,EAAOgC,GAASC,EAAGvX,CAAC,GAAG,CAAE,GAAEgD,CAAC,EAAIuU,EAAG6R,CAAK,EACrC,GAAC9T,GAAQA,EAAK,GAAK,MAAQA,EAAK,IAAM,KAEzC,QADAnB,EAAK,CAAC,OAAQiV,EAAO,GAAG,EACjB9T,EAAK,EAAC,CACZ,IAAK,IAAK,IAAK,MAAOnB,EAAG,KAAK9lE,EAAOinE,EAAK,CAAC,CAAC,EAAG,MAC/C,IAAK,IACAA,EAAK,GACFnB,EAAG,CAAC,EAAE,MAAOA,EAAG,CAAC,EAAE,IAAKA,EAAG,CAAC,EAAEmB,EAAK,EAAGnB,EAAG,CAAC,EAAE9lE,EAAOinE,EAAK,CAAC,IADlDnB,EAAG,CAAC,EAAE,IAAKA,EAAG,CAAC,EAAEmB,EAAK,GAEpC,MACD,IAAK,IACJnB,EAAG,CAAC,EAAI,MAAMmB,EAAK,EAAE,IAAI,KAAMnB,EAAG,CAAC,EAAE,KAAMA,EAAG,CAAC,EAAEmB,EAAK,EAAE,IAAI,IAC5DnB,EAAG,CAAC,EAAI9lE,EAAOinE,EAAK,IAAIA,EAAK,EAAE,OAAO,QAAQ,EAC9C,MACD,IAAK,IACJ,IAAIjmF,EAAI8/E,GAAQQ,GAAU2F,EAAK,CAAC,CAAC,EACjCnB,EAAG,CAAC,EAAI,MAAOA,EAAG,CAAC,EAAI,KAAMA,EAAG,CAAC,EAAI,GAAG9kF,EACxC8kF,EAAG,CAAC,EAAImB,EAAK,GAAK/c,GAAW+c,EAAK,GAAKjf,GAAU,EAAE,EAAGhnE,CAAC,EACvD,MACD,IAAK,IAAK,QACV,CACDoU,EAAE,KAAK0wE,EAAG,KAAK,GAAG,CAAC,EAGrB,OAAA1wE,EAAE,KAAK,YAAc7pB,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,GAAK,OAASA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE,GAAK,QAAQ,EACxE6pB,EAAE,KAAK,yBAAyB,EAEzBA,EAAE,KAAK;AAAA,CAAI,CAClB,CAED,SAAS6mF,EAAa/S,EAA8C,CACnE,MAAO,CAAC1lE,EAAQu4E,EAAKzhE,EAAMyhE,EAAKC,EAAkB9S,CAAE,EAAG76F,CAAG,EAAE,KAAK;AAAA,CAAI,CAErE,CAED,MAAO,CACN,YAAaytG,EACb,SAAUD,EACV,WAAYI,CACd,CACA,IAEIC,GAAoB,UAAW,CAClC,SAASC,EAAanqG,EAAiBtV,EAAai1F,EAAcgD,EAAcv/D,EAAW,CACvFA,EAAE,IAAK14B,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI3iF,EACdA,IAAS,KACTA,IAAS,OAAQtV,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,GAC7B3iF,IAAS,QAAStV,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI,GAC7B,MAAMgN,GAAS3vF,CAAI,CAAC,EACpB,MAAM8vF,GAAU9vF,CAAI,EAAE,QAAS,CAAA,EACnCtV,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI3iF,EAD0BtV,EAAIi1F,CAAC,EAAEgD,CAAC,EAAI2M,GAAUtvF,CAAI,EADrCtV,EAAIi1F,CAAC,EAAEgD,CAAC,EAAIgN,GAAS3vF,CAAI,EAGzD,CAED,SAASoqG,EAAe,EAAczwE,EAAc,CACnD,IAAIvW,EAAIuW,GAAQ,GACZjvC,EAAe,CAAA,EACnB,GAAG,CAAC,GAAK,EAAE,SAAW,EAAG,OAAOA,EAGhC,QAFI0kD,EAAQ,EAAE,MAAM,QAAQ,EACxB2lC,EAAI3lC,EAAM,OAAS,EACjB2lC,GAAK,GAAK3lC,EAAM2lC,CAAC,EAAE,SAAW,GAAG,EAAEA,EAGzC,QAFI34E,EAAQ,GAAIynB,EAAM,EAClB87D,EAAI,EACFA,GAAK5K,EAAG,EAAE4K,EACf97D,EAAMurB,EAAMuwC,CAAC,EAAE,QAAQ,GAAG,EACvB97D,GAAO,GAAIA,EAAMurB,EAAMuwC,CAAC,EAAE,OAAa97D,IAC1CznB,EAAQ,KAAK,IAAIA,EAAOynB,CAAG,EAE5B,IAAI87D,EAAI,EAAGA,GAAK5K,EAAG,EAAE4K,EAAG,CACvBj1F,EAAIi1F,CAAC,EAAI,GAET,IAAIgD,EAAI,EAER,IADAwnB,EAAa/6D,EAAMuwC,CAAC,EAAE,MAAM,EAAGvjF,CAAK,EAAE,KAAM,EAAE1R,EAAKi1F,EAAGgD,EAAGv/D,CAAC,EACtDu/D,EAAI,EAAGA,IAAMvzC,EAAMuwC,CAAC,EAAE,OAASvjF,GAAO,GAAK,EAAG,EAAEumF,EACnDwnB,EAAa/6D,EAAMuwC,CAAC,EAAE,MAAMvjF,GAAOumF,EAAE,GAAG,GAAGvmF,EAAMumF,EAAE,EAAE,EAAE,KAAM,EAACj4F,EAAIi1F,EAAEgD,EAAEv/D,CAAC,CACxE,CACD,OAAGA,EAAE,YAAW14B,EAAMA,EAAI,MAAM,EAAG04B,EAAE,SAAS,GACvC14B,CACP,CAGD,IAAI2/G,EAAa,CACT,GAAa,IACb,EAAa,IACb,GAAa,IACb,IAAa,GACtB,EAGKC,EAAoB,CAChB,GAAa,EACb,EAAa,EACb,GAAa,EACb,IAAa,CACtB,EAEC,SAASC,EAAU1gH,EAAK,CAEvB,QADIs5F,EAAM,CAAE,EAAEqnB,EAAQ,GAAOnuG,EAAM,EAAG+9E,EAAK,EACtC/9E,EAAMxS,EAAI,OAAO,EAAEwS,GACnB+9E,EAAGvwF,EAAI,WAAWwS,CAAG,IAAM,GAAMmuG,EAAQ,CAACA,EACtC,CAACA,GAASpwB,KAAMiwB,IAAYlnB,EAAI/I,CAAE,GAAK+I,EAAI/I,CAAE,GAAG,GAAG,GAG5DA,EAAK,CAAA,EACL,IAAI/9E,KAAO8mF,EAAU,OAAO,UAAU,eAAe,KAAKA,EAAK9mF,CAAG,GACjE+9E,EAAG,KAAK,CAAE+I,EAAI9mF,CAAG,EAAGA,CAAG,CAAE,EAG1B,GAAK,CAAC+9E,EAAG,OAAS,CACjB+I,EAAMmnB,EACN,IAAIjuG,KAAO8mF,EAAU,OAAO,UAAU,eAAe,KAAKA,EAAK9mF,CAAG,GACjE+9E,EAAG,KAAK,CAAE+I,EAAI9mF,CAAG,EAAGA,CAAG,CAAE,CAE1B,CAED,OAAA+9E,EAAG,KAAK,SAAS7rF,EAAGC,EAAG,CAAE,OAAOD,EAAE,CAAC,EAAIC,EAAE,CAAC,GAAK87G,EAAkB/7G,EAAE,CAAC,CAAC,EAAI+7G,EAAkB97G,EAAE,CAAC,CAAC,CAAE,CAAE,EAE5F67G,EAAWjwB,EAAG,IAAK,EAAC,CAAC,CAAC,GAAK,EAClC,CAED,SAASqwB,EAAiB5gH,EAAgB8vC,EAAoB,CAC7D,IAAIvW,EAAIuW,GAAQ,GACZowE,EAAM,GAEN7S,EAAmB9zE,EAAE,MAAS,CAAE,EAAa,CAAE,EAC/CihB,EAAmB,CAAC,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,EAEjDx6C,EAAI,MAAM,EAAE,CAAC,GAAK,OAEjBA,EAAI,WAAW,CAAC,GAAK,IAAMA,EAAI,WAAW,CAAC,GAAK,IAClDkgH,EAAMlgH,EAAI,OAAO,CAAC,EAAGA,EAAMA,EAAI,MAAM,CAAC,GAG/BA,EAAI,WAAW,CAAC,GAAK,IAAMA,EAAI,WAAW,CAAC,GAAK,IACvDkgH,EAAMlgH,EAAI,OAAO,CAAC,EAAGA,EAAMA,EAAI,MAAM,CAAC,GAElCkgH,EAAMQ,EAAU1gH,EAAI,MAAM,EAAE,IAAI,CAAC,EAE/Bu5B,GAAKA,EAAE,GAAI2mF,EAAM3mF,EAAE,GACtB2mF,EAAMQ,EAAU1gH,EAAI,MAAM,EAAE,IAAI,CAAC,EACtC,IAAI81F,EAAI,EAAGgD,EAAI,EAAGpzF,EAAI,EAClB6M,EAAQ,EAAGC,EAAM,EAAGquG,EAAQX,EAAI,WAAW,CAAC,EAAGS,EAAQ,GAAOpwB,EAAG,EAAGuwB,EAAQ9gH,EAAI,WAAW,CAAC,EAChGA,EAAMA,EAAI,QAAQ,SAAU;AAAA,CAAI,EAChC,IAAI+gH,EAAkBxnF,EAAE,QAAU,KAAOi6D,GAAaj6D,EAAE,MAAM,EAAI,KAClE,SAASynF,GAAc,CACtB,IAAInnG,EAAI7Z,EAAI,MAAMuS,EAAOC,CAAG,EACxB44F,EAAQ,CAAA,EAEZ,GADGvxF,EAAE,OAAO,CAAC,GAAK,KAAOA,EAAE,OAAOA,EAAE,OAAS,CAAC,GAAK,MAAKA,EAAIA,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,MAAM,GAAG,GACxFA,EAAE,SAAW,EAAGuxF,EAAK,EAAI,YACpB7xE,EAAE,IAAO6xE,EAAK,EAAI,IAAKA,EAAK,EAAIvxF,UAChCA,EAAE,KAAI,EAAG,SAAW,EAAKuxF,EAAK,EAAI,IAAKA,EAAK,EAAIvxF,UAChDA,EAAE,WAAW,CAAC,GAAK,GACvBA,EAAE,WAAW,CAAC,GAAK,IAAQA,EAAE,WAAWA,EAAE,OAAS,CAAC,GAAK,IAAQuxF,EAAK,EAAI,IAAKA,EAAK,EAAIvxF,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,MAAM,GAAG,GAClHonG,GAAUpnG,CAAC,GAAKuxF,EAAK,EAAI,IAAKA,EAAK,EAAIvxF,EAAE,MAAM,CAAC,IACjDuxF,EAAK,EAAI,IAAKA,EAAK,EAAIvxF,WACvBA,GAAK,OAAUuxF,EAAK,EAAI,IAAKA,EAAK,EAAI,WACtCvxF,GAAK,QAAWuxF,EAAK,EAAI,IAAKA,EAAK,EAAI,WACvC,CAAC,MAAM1lG,EAAIogG,GAASjsF,CAAC,CAAC,EAAKuxF,EAAK,EAAI,IAAQ7xE,EAAE,WAAa,KAAO6xE,EAAK,EAAIvxF,GAAGuxF,EAAK,EAAI1lG,UACvF,CAAC,MAAMugG,GAAUpsF,CAAC,EAAE,SAAS,GAAKknG,GAAOlnG,EAAE,MAAMknG,CAAG,EAAG,CAC9D3V,EAAK,EAAI7xE,EAAE,QAAU4yD,GAAU,EAAE,EACjC,IAAIv3C,GAAI,EACLmsE,GAAOlnG,EAAE,MAAMknG,CAAG,IAAIlnG,EAAE65E,GAAW75E,EAAG0f,EAAE,OAAS1f,EAAE,MAAMknG,CAAG,GAAG,CAAE,CAAA,EAAInsE,GAAE,GACvErb,EAAE,WAAa6xE,EAAK,EAAI,IAAKA,EAAK,EAAI3F,GAAU5rF,EAAG+6B,EAAC,IAChDw2D,EAAK,EAAI,IAAKA,EAAK,EAAInG,GAAQQ,GAAU5rF,EAAG+6B,EAAC,CAAC,GAClDrb,EAAE,WAAa,KAAO6xE,EAAK,EAAI/c,GAAW+c,EAAK,EAAGA,EAAK,aAAa,KAAOnG,GAAQmG,EAAK,CAAC,EAAEA,EAAK,CAAC,GAChG7xE,EAAE,QAAQ,OAAO6xE,EAAK,CAC9B,MACIA,EAAK,EAAI,IACTA,EAAK,EAAIvxF,EAQV,GANGuxF,EAAK,GAAK,MACL7xE,EAAE,OAAa8zE,EAAGvX,CAAC,IAAGuX,EAAGvX,CAAC,EAAI,CAAA,GAAIuX,EAAGvX,CAAC,EAAEgD,CAAC,EAAIsS,GAChDiC,EAAG7B,GAAY,CAAC,EAAE1S,EAAE,EAAEhD,CAAC,CAAC,CAAC,EAAIsV,GAClC74F,EAAQC,EAAI,EAAGsuG,EAAU9gH,EAAI,WAAWuS,CAAK,EAC1CioC,EAAM,EAAE,EAAIs+C,IAAGt+C,EAAM,EAAE,EAAIs+C,GAC3Bt+C,EAAM,EAAE,EAAIs7C,IAAGt7C,EAAM,EAAE,EAAIs7C,GAC3BvF,GAAMswB,EAAO,EAAE/nB,UAAUA,EAAI,EAAG,EAAEhD,EAAMv8D,EAAE,WAAaA,EAAE,WAAau8D,EAAG,MAAO,EACnF,CACDtc,EAAO,KAAKhnE,EAAMxS,EAAI,OAAO,EAAEwS,EAAK,OAAQ+9E,EAAGvwF,EAAI,WAAWwS,CAAG,EAAC,CACjE,IAAK,IAASsuG,IAAY,KAAMH,EAAQ,CAACA,GAAO,MAChD,KAAKE,EAAO,IAAK,IAAM,IAAK,IAAM,GAAG,CAACF,GAASK,EAAW,EAAI,MAAMxnC,EAAO,KAE3E,CACD,OAAGhnE,EAAMD,EAAQ,GAAGyuG,EAAW,EAE/B3T,EAAG,MAAM,EAAIb,GAAahyD,CAAK,EACxB6yD,CACP,CAED,SAAS6T,EAAiBlhH,EAAgB8vC,EAAoB,CAI7D,MAHG,EAAEA,GAAQA,EAAK,MACfA,EAAK,IACL9vC,EAAI,MAAM,EAAE,CAAC,GAAK,QAClBA,EAAI,QAAQ,GAAI,GAAK,GAAKA,EAAI,QAAQ,GAAG,GAAK,GAAKA,EAAI,QAAQ,GAAG,GAAK,EAAU4gH,EAAiB5gH,EAAK8vC,CAAI,EACvG+9D,GAAa0S,EAAevgH,EAAK8vC,CAAI,EAAGA,CAAI,CACnD,CAED,SAASqxE,EAAalsE,EAAenF,EAAoB,CACxD,IAAI9vC,EAAM,GAAI6rC,EAAQiE,EAAK,MAAQ,SAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAIsxE,GAAUnsE,EAAGnF,CAAI,EAC3E,OAAOA,EAAK,KAAI,CACf,IAAK,SAAU9vC,EAAM+pF,GAAc90C,CAAC,EAAG,MACvC,IAAK,SAAUj1C,EAAMi1C,EAAG,MACxB,IAAK,SACDnF,EAAK,UAAY,MAAO9vC,EAAMi1C,EAAE,SAAS,MAAM,EAC1CnF,EAAK,UAAY,OAAO25C,GAAa,IAAazpF,EAAMypF,GAAS,MAAM,OAAO35C,EAAK,SAAUmF,CAAC,EACjGj1C,EAAMgqF,IAAW,OAAO,SAAS/0C,CAAC,EAAIA,EAAE,SAAS,QAAQ,EAAIy1C,GAAIz1C,CAAC,EACvE,MACD,IAAK,QAASj1C,EAAM2lG,GAAO1wD,CAAC,EAAG,MAC/B,IAAK,SAAUj1C,EAAMi1C,EAAG,MACxB,QAAS,MAAM,IAAI,MAAM,qBAAuBnF,EAAK,IAAI,CACzD,CAID,OAHGjE,EAAM,CAAC,GAAK,KAAQA,EAAM,CAAC,GAAK,KAAQA,EAAM,CAAC,GAAK,IAAM7rC,EAAMunG,GAASvnG,EAAI,MAAM,CAAC,CAAC,EAChF8vC,EAAK,MAAQ,UAAYA,EAAK,MAAQ,UAAYA,EAAK,UAAY,MAAO9vC,EAAMunG,GAASvnG,CAAG,EAC3F8vC,EAAK,MAAQ,UAAa,OAAO25C,GAAa,KAAe35C,EAAK,WAAW9vC,EAAMypF,GAAS,MAAM,OAAO35C,EAAK,SAAU25C,GAAS,MAAM,OAAO,MAAMzpF,CAAG,CAAC,GAC9JA,EAAI,MAAM,EAAE,EAAE,GAAK,sBAA8B6/G,GAAI,SAAS/vE,EAAK,MAAQ,SAAW9vC,EAAMunG,GAASvnG,CAAG,EAAG8vC,CAAI,EAC3GoxE,EAAiBlhH,EAAK8vC,CAAI,CACjC,CAED,SAASuxE,EAAgBpsE,EAAenF,EAAmB,CAAE,OAAOi9D,GAAkBoU,EAAalsE,EAAGnF,CAAI,EAAGA,CAAI,CAAI,CAErH,SAASwxE,EAAajU,EAA8C,CAInE,QAHI9zE,EAAsB,CAAA,EACtB7pB,EAAIi9F,GAAkBU,EAAG,MAAM,CAAC,EAAGjC,EACnCgC,EAAQ,MAAM,QAAQC,CAAE,EACpBvX,EAAIpmF,EAAE,EAAE,EAAGomF,GAAKpmF,EAAE,EAAE,EAAG,EAAEomF,EAAG,CAEnC,QADImU,EAAuB,CAAA,EACnBnR,EAAIppF,EAAE,EAAE,EAAGopF,GAAKppF,EAAE,EAAE,EAAG,EAAEopF,EAAG,CACnC,IAAIomB,EAAQ1T,GAAY,CAAC,EAAE1V,EAAE,EAAEgD,CAAC,CAAC,EAEjC,GADAsS,EAAOgC,GAASC,EAAGvX,CAAC,GAAG,CAAE,GAAEgD,CAAC,EAAIuU,EAAG6R,CAAK,EACrC,CAAC9T,GAAQA,EAAK,GAAK,KAAM,CAAEnB,EAAG,KAAK,YAAY,EAAG,QAAW,CAEhE,QADI7hE,GAAKgjE,EAAK,IAAMyB,GAAYzB,CAAI,EAAGA,EAAK,IAAM,IAAI,MAAM,EAAE,EAAE,EAC1DhjE,EAAE,OAAS,IAAIA,GAAK,IAC1B6hE,EAAG,KAAK7hE,GAAK0wD,IAAM,EAAI,IAAM,GAAG,CAChC,CACDv/D,EAAE,KAAK0wE,EAAG,KAAK,EAAE,CAAC,CAClB,CACD,OAAO1wE,EAAE,KAAK;AAAA,CAAI,CAClB,CAED,MAAO,CACN,YAAa8nF,EACb,SAAUF,EACV,WAAYG,CACd,CACA,IAgBIC,GAAoB,UAAW,CAClC,SAASC,EAAYrrG,EAAMhD,EAAuB28B,EAAc,CAC/D,GAAI35B,EACJ,CAAAqgF,GAAUrgF,EAAMA,EAAK,GAAK,CAAC,EAE3B,QADIsrG,EAAO3xE,EAAK,MAAQ4xE,GAClBvrG,EAAK,EAAIA,EAAK,QAAQ,CAC3B,IAAIonG,EAAKpnG,EAAK,WAAW,CAAC,EACtB2/E,GAAI2rB,EAAKlE,CAAE,GAAKkE,EAAK,KAAM,EAC3B3/E,GAAS3rB,EAAK,WAAW,CAAC,EAC1BwgF,GAAMxgF,EAAK,EAAI2rB,GACfmT,GAAI6gD,GAAE,GAAKA,GAAE,EAAE3/E,EAAM2rB,GAAQgO,CAAI,EAErC,GADA35B,EAAK,EAAIwgF,GACNxjF,EAAG8hC,GAAG6gD,GAAGynB,CAAE,EAAG,MACjB,EACD,CAED,SAASoE,EAAkB1sE,EAAenF,EAAM,CAC/C,OAAOA,EAAK,KAAI,CACf,IAAK,SAAU,OAAO8xE,EAAsBr3B,GAAIR,GAAc90C,CAAC,CAAC,EAAGnF,CAAI,EACvE,IAAK,SAAU,OAAO8xE,EAAsBr3B,GAAIt1C,CAAC,EAAGnF,CAAI,EACxD,IAAK,SACL,IAAK,QAAS,OAAO8xE,EAAsB3sE,EAAGnF,CAAI,CAClD,CACD,KAAM,oBAAsBA,EAAK,IACjC,CAED,SAAS8xE,EAAsB3sE,EAAGnF,EAAmB,CACpD,GAAG,CAACmF,EAAG,OAAOA,EACd,IAAI1b,EAAIuW,GAAQ,GAEZj2B,EAAoB0f,EAAE,MAAQ,CAAE,EAAG,CAAE,EAAYj2B,EAAI,SAAUu+G,GAAS,GAAIC,GAAO,EACnF7U,GAAS,CAAA,EAAI8U,GAAS,CAAA,EAAIC,GAAY,CAAA,EAEtCC,GAAW,CAAC,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,EACxCC,EAAY3oF,EAAE,WAAa,EAE/B,GAAG0b,EAAE,CAAC,GAAK,IACPA,EAAE,CAAC,GAAK,GAAQA,EAAE,CAAC,GAAK,IACvBA,EAAE,QAAU,IAAMA,EAAE,EAAE,GAAK,GAAQA,EAAE,EAAE,IAAM,IAAM,MAAM,IAAI,MAAM,kCAAkC,EAI1G,GAAGA,EAAE,CAAC,GAAK,EACV1b,EAAE,KAAOmoF,GACTF,EAAYvsE,EAAG,SAAS90C,EAAK21F,GAAGynB,GAAI,CAAE,OAAOA,GAAE,CAC9C,IAAK,GACJhkF,EAAE,KAAOp5B,EACNA,GAAO,OAAQo5B,EAAE,KAAO,IAC3B,MACD,IAAK,GAAM0oF,GAAW9hH,EAAK,MAC3B,IAAK,KAASA,IAAK0hH,GAAS1hH,GAAK,MACjC,IAAK,KAAM0hH,GAAS1hH,EAAK,MACzB,IAAK,IACL,IAAK,IACAo5B,EAAE,OAAMp5B,EAAI,CAAC,EAAE,EAAIA,EAAI,CAAC,EAAE,EAAE,MAAM,CAAC,GAExC,IAAK,IACL,IAAK,IACL,IAAK,IAEDo9G,IAAM,KAASp9G,EAAI,CAAC,EAAI,MAAS,MAASA,EAAI,CAAC,EAAI,IAAQ,IAAMA,EAAI,CAAC,EAAI,IAAQ,KACpFA,EAAI,CAAC,EAAE,EAAIo5B,EAAE,QAAU4yD,GAAU,EAAE,EAChC5yD,EAAE,YAAap5B,EAAI,CAAC,EAAE,EAAI,IAAKA,EAAI,CAAC,EAAE,EAAIklG,GAAQllG,EAAI,CAAC,EAAE,CAAC,IAG3Do5B,EAAE,MACDp5B,EAAI,CAAC,EAAI2hH,KACXjoG,EAAE,MAAM,EAAI2yF,GAAayV,EAAQ,EACjChV,GAAO3pG,CAAC,EAAIuW,EACZkoG,GAAO,KAAKz+G,CAAC,EACbuW,EAAK0f,EAAE,MAAQ,CAAE,EAAG,CAAE,EACtB0oF,GAAW,CAAC,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,EACxCH,GAAO3hH,EAAI,CAAC,EAAGmD,EAAIu+G,IAAU,SAAWC,GAAO,GAAID,GAAS,IAI9D,IAAIM,GAAU5oF,EAAE,OAAS1f,EAAE1Z,EAAI,CAAC,EAAE,CAAC,GAAG,CAAA,GAAIA,EAAI,CAAC,EAAE,CAAC,EAAI0Z,EAAE2xF,GAAYrrG,EAAI,CAAC,CAAC,CAAC,EAC3E,GAAGgiH,GAAS,CACXA,GAAQ,EAAIhiH,EAAI,CAAC,EAAE,EAAGgiH,GAAQ,EAAIhiH,EAAI,CAAC,EAAE,EACtCA,EAAI,CAAC,EAAE,GAAK,OAAMgiH,GAAQ,EAAIhiH,EAAI,CAAC,EAAE,GACrCA,EAAI,CAAC,EAAE,GAAK,OAAMgiH,GAAQ,EAAIhiH,EAAI,CAAC,EAAE,GACxC,KACA,CACEo5B,EAAE,OACA1f,EAAE1Z,EAAI,CAAC,EAAE,CAAC,IAAG0Z,EAAE1Z,EAAI,CAAC,EAAE,CAAC,EAAI,CAAA,GAC/B0Z,EAAE1Z,EAAI,CAAC,EAAE,CAAC,EAAEA,EAAI,CAAC,EAAE,CAAC,EAAIA,EAAI,CAAC,GACvB0Z,EAAE2xF,GAAYrrG,EAAI,CAAC,CAAC,CAAC,EAAIA,EAAI,CAAC,EACrC,KAEL,CAAI,EAAGo5B,CAAC,UACI0b,EAAE,CAAC,GAAK,IAAQA,EAAE,CAAC,GAAK,GACjC1b,EAAE,KAAO6oF,GACNntE,EAAE,CAAC,GAAK,KAAQ1b,EAAE,KAAO,GAAM0b,EAAE,EAAI,GACxCusE,EAAYvsE,EAAG,SAAS90C,EAAK21F,GAAGynB,GAAI,CAAE,OAAOA,GAAE,CAC9C,IAAK,KAAMj6G,EAAInD,EAAK,MACpB,IAAK,IACJA,EAAI,CAAC,EAAE,EAAIA,EAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAE5B,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IASJ,GARGA,EAAI,CAAC,EAAI2hH,KACXjoG,EAAE,MAAM,EAAI2yF,GAAayV,EAAQ,EACjChV,GAAO3pG,CAAC,EAAIuW,EACZkoG,GAAO,KAAKz+G,CAAC,EACbuW,EAAK0f,EAAE,MAAQ,CAAE,EAAG,CAAE,EACtB0oF,GAAW,CAAC,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,EACxCH,GAAO3hH,EAAI,CAAC,EAAGmD,EAAI,SAAWw+G,GAAO,IAEnCI,EAAY,GAAK/hH,EAAI,CAAC,EAAE,GAAK+hH,EAAW,MACxC3oF,EAAE,OACA1f,EAAE1Z,EAAI,CAAC,EAAE,CAAC,IAAG0Z,EAAE1Z,EAAI,CAAC,EAAE,CAAC,EAAI,CAAA,GAC/B0Z,EAAE1Z,EAAI,CAAC,EAAE,CAAC,EAAEA,EAAI,CAAC,EAAE,CAAC,EAAIA,EAAI,CAAC,GACvB0Z,EAAE2xF,GAAYrrG,EAAI,CAAC,CAAC,CAAC,EAAIA,EAAI,CAAC,EAClC8hH,GAAS,EAAE,EAAI9hH,EAAI,CAAC,EAAE,IAAG8hH,GAAS,EAAE,EAAI9hH,EAAI,CAAC,EAAE,GAC/C8hH,GAAS,EAAE,EAAI9hH,EAAI,CAAC,EAAE,IAAG8hH,GAAS,EAAE,EAAI9hH,EAAI,CAAC,EAAE,GAClD,MACD,IAAK,IACDA,EAAI,IAAM,IAAG6hH,GAAU7hH,EAAI,IAAM,EAAE,CAAC,CAAC,EAAIA,EAAI,IAAM,EAAE,CAAC,GACzD,MACD,IAAK,MACJ6hH,GAAU7hH,EAAI,CAAC,CAAC,EAAIA,EAAI,CAAC,EAAMA,EAAI,CAAC,GAAK2hH,KAAMx+G,EAAInD,EAAI,CAAC,GAAG,KAEhE,CAAI,EAAGo5B,CAAC,MACC,OAAM,IAAI,MAAM,0BAA4B0b,EAAE,CAAC,CAAC,EAIvD,GAHAp7B,EAAE,MAAM,EAAI2yF,GAAayV,EAAQ,EACjChV,GAAO4U,IAAUv+G,CAAC,EAAIuW,EACtBkoG,GAAO,KAAKF,IAAUv+G,CAAC,EACpB,CAAC0+G,GAAU,OAAQ,MAAO,CAAE,WAAYD,GAAQ,OAAQ9U,IAG3D,QAFIoV,EAAU,CAAA,EAAIC,GAAS,GAEnBvhH,GAAI,EAAGA,GAAIihH,GAAU,OAAQ,EAAEjhH,GAAMksG,GAAO8U,GAAOhhH,EAAC,CAAC,GAC5DuhH,GAAO,KAAKN,GAAUjhH,EAAC,GAAKghH,GAAOhhH,EAAC,CAAC,EACrCshH,EAAQL,GAAUjhH,EAAC,CAAC,EAAIksG,GAAO+U,GAAUjhH,EAAC,CAAC,GAAKksG,GAAO8U,GAAOhhH,EAAC,CAAC,IAEhEuhH,GAAO,KAAKN,GAAUjhH,EAAC,CAAC,EACxBshH,EAAQL,GAAUjhH,EAAC,CAAC,EAAK,CAAE,OAAQ,IAAI,GAExC,MAAO,CAAE,WAAYuhH,GAAQ,OAAQD,CAAO,CAC5C,CAED,SAASE,EAAalV,EAAkBv9D,EAAoB,CAC3D,IAAIvW,EAAIuW,GAAQ,GAEhB,GADG,CAACvW,EAAE,UAAY,GAAG8vD,GAAO,CAAC9vD,EAAE,QAAQ,EACpCA,EAAE,MAAQ,SAAU,MAAM,IAAI,MAAM,+BAA+B,EACtE,IAAI0xE,EAAKP,KACLlwD,EAAQmyD,GAAkBU,EAAG,MAAM,CAAC,EACpCD,GAAQ,MAAM,QAAQC,CAAE,EACxBmO,GAAO,CAAA,EAEXgH,GAAevX,EAAI,EAAMwX,EAAc,IAAM,CAAC,EAC9CD,GAAevX,EAAI,EAAMyX,EAAYloE,CAAK,CAAC,EAE3C,QADImoE,GAAQ,KAAK,IAAInoE,EAAM,EAAE,EAAG,IAAI,EAC5Bs7C,GAAIt7C,EAAM,EAAE,EAAGs7C,IAAK6sB,GAAO,EAAE7sB,GAEpC,QADI/F,GAAK8b,GAAW/V,EAAC,EACbgD,GAAIt+C,EAAM,EAAE,EAAGs+C,IAAKt+C,EAAM,EAAE,EAAG,EAAEs+C,GAAG,CACxChD,KAAMt7C,EAAM,EAAE,IAAGghE,GAAK1iB,EAAC,EAAI8S,GAAW9S,EAAC,GAC1C,IAAInpF,EAAM6rG,GAAK1iB,EAAC,EAAI/I,GAChBqb,EAAOgC,IAASC,EAAGvX,EAAC,GAAG,CAAE,GAAEgD,EAAC,EAAIuU,EAAG19F,CAAG,EAC1C,GAAG,GAACy7F,GAAQA,EAAK,GAAK,KAEtB,GAAGA,EAAK,GAAK,KACRA,EAAK,EAAE,IAAIA,EAAK,GAAKA,EAAK,GAAK,QAAUA,EAAK,GAAK,MAAOoX,GAAevX,EAAI,GAAM2X,EAAc9sB,GAAGgD,GAAGsS,EAAK,CAAC,CAAC,EAC7GoX,GAAevX,EAAI,GAAM4X,EAAa/sB,GAAGgD,GAAGsS,EAAK,CAAC,CAAC,MAClD,CACN,IAAIprG,GAAM6sG,GAAYzB,CAAI,EAC1BoX,GAAevX,EAAI,GAAM6X,EAAYhtB,GAAGgD,GAAG94F,GAAI,MAAM,EAAG,GAAG,CAAC,CAAC,CAC7D,CACD,CAGF,OAAAwiH,GAAevX,EAAI,CAAI,EAChBA,EAAG,KACV,CAED,SAAS8X,EAAYhL,EAAiBjoE,EAAoB,CACzD,IAAIvW,EAAIuW,GAAQ,GAEhB,GADG,CAACvW,EAAE,UAAY,GAAG8vD,GAAO,CAAC9vD,EAAE,QAAQ,EACpCA,EAAE,MAAQ,SAAU,MAAM,IAAI,MAAM,+BAA+B,EACtE,IAAI0xE,EAAKP,KAET8X,GAAevX,EAAI,EAAM+X,EAAcjL,CAAE,CAAC,EAE1C,QAAQh3G,EAAI,EAAGu4F,GAAM,EAAGv4F,EAAIg3G,EAAG,WAAW,OAAQ,EAAEh3G,GAAOg3G,EAAG,OAAOA,EAAG,WAAWh3G,CAAC,CAAC,GAAK,CAAE,GAAE,MAAM,GAAGyhH,GAAevX,EAAI,GAAMgY,GAAwBlL,EAAG,WAAWh3G,CAAC,EAAGu4F,IAAK,CAAC,EAEhL,IAAI4pB,GAAQ,EACZ,IAAIniH,EAAI,EAAGA,EAAIg3G,EAAG,WAAW,OAAQ,EAAEh3G,EAAG,CACzC,IAAIssG,GAAK0K,EAAG,OAAOA,EAAG,WAAWh3G,CAAC,CAAC,EACnC,GAAG,GAACssG,IAAM,CAACA,GAAG,MAAM,GAKpB,SAJI7yD,GAAQmyD,GAAkBU,GAAG,MAAM,CAAC,EACpCD,GAAQ,MAAM,QAAQC,EAAE,EACxBmO,GAAO,CAAA,EACPmH,EAAQ,KAAK,IAAInoE,GAAM,EAAE,EAAG,IAAI,EAC5Bs7C,EAAIt7C,GAAM,EAAE,EAAGs7C,GAAK6sB,EAAO,EAAE7sB,EAEpC,QADI/F,GAAK8b,GAAW/V,CAAC,EACbgD,GAAIt+C,GAAM,EAAE,EAAGs+C,IAAKt+C,GAAM,EAAE,EAAG,EAAEs+C,GAAG,CACxChD,IAAMt7C,GAAM,EAAE,IAAGghE,GAAK1iB,EAAC,EAAI8S,GAAW9S,EAAC,GAC1C,IAAInpF,EAAM6rG,GAAK1iB,EAAC,EAAI/I,GAChBqb,GAAOgC,IAASC,GAAGvX,CAAC,GAAG,CAAE,GAAEgD,EAAC,EAAIuU,GAAG19F,CAAG,EAC1C,GAAG,GAACy7F,IAAQA,GAAK,GAAK,KAEtB,GAAGA,GAAK,GAAK,IACZoX,GAAevX,EAAI,GAAMkY,EAAgBrtB,EAAGgD,GAAGoqB,GAAO9X,GAAK,CAAC,CAAC,MACvD,CACN,IAAIprG,GAAM6sG,GAAYzB,EAAI,EAE1BoX,GAAevX,EAAI,GAAMmY,EAAettB,EAAGgD,GAAGoqB,GAAOljH,GAAI,MAAM,EAAG,GAAG,CAAC,CAAC,CACvE,CACD,CAEF,EAAEkjH,GACF,CAED,OAAAV,GAAevX,EAAI,CAAI,EAChBA,EAAG,KACV,CAGD,SAASwX,EAAc/8G,EAAc,CACpC,IAAIslF,EAAMqO,GAAQ,CAAC,EACnB,OAAArO,EAAI,YAAY,EAAGtlF,CAAC,EACbslF,CACP,CAED,SAASg4B,EAAcjL,EAAiB,CACvC,IAAI/sB,EAAMqO,GAAQ,EAAE,EACpBrO,EAAI,YAAY,EAAG,IAAM,EACzBA,EAAI,YAAY,EAAG,CAAM,EACzBA,EAAI,YAAY,EAAG,CAAM,EAEzB,QADI6zB,EAAO,EAAGrD,EAAO,EAAG6H,EAAQ,EACxBtiH,GAAI,EAAGA,GAAIg3G,EAAG,WAAW,OAAQ,EAAEh3G,GAAG,CAC7C,IAAIsD,GAAO0zG,EAAG,WAAWh3G,EAAC,EACtBssG,GAAK0K,EAAG,OAAO1zG,EAAI,EACvB,GAAG,GAACgpG,IAAM,CAACA,GAAG,MAAM,GACpB,GAAEgW,EACF,IAAI7oE,GAAQ+xD,GAAac,GAAG,MAAM,CAAC,EAChCwR,EAAOrkE,GAAM,EAAE,IAAGqkE,EAAOrkE,GAAM,EAAE,GACjCghE,EAAOhhE,GAAM,EAAE,IAAGghE,EAAOhhE,GAAM,EAAE,GACpC,CACD,OAAGqkE,EAAO,OAAMA,EAAO,MACvB7zB,EAAI,YAAY,EAAG6zB,CAAI,EACvB7zB,EAAI,YAAY,EAAGq4B,CAAK,EACxBr4B,EAAI,YAAY,EAAGwwB,CAAI,EACvBxwB,EAAI,YAAY,EAAG,CAAI,EACvBA,EAAI,YAAY,EAAG,CAAI,EACvBA,EAAI,YAAY,EAAG,CAAI,EACvBA,EAAI,YAAY,EAAG,CAAI,EACvBA,EAAI,YAAY,EAAG,CAAC,EACpBA,EAAI,YAAY,EAAG,CAAC,EACbA,CACP,CAED,SAASs4B,EAAY/sB,EAAMz0D,EAAQgO,EAAM,CACxC,IAAIvW,EAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAChC,OAAGuI,GAAU,GAAKgO,EAAK,MACtBvW,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EACzBA,EAAK,IACLh9D,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EACzBh9D,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EACzBA,EAAK,IACLh9D,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EAClBh9D,IAERA,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EACzBh9D,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EACtBz0D,GAAU,IAAMgO,EAAK,OAAMymD,EAAK,GAAK,GACxCh9D,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EACzBh9D,EAAE,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EACtBz0D,GAAU,IAAMgO,EAAK,OAAMymD,EAAK,GAAK,GACrCh9D,EAAE,EAAE,GAAK,QAAQA,EAAE,EAAE,EAAIA,EAAE,EAAE,EAAIA,EAAE,EAAE,EAAIA,EAAE,EAAE,EAAI,GAC7CA,EACP,CACD,SAASmpF,EAAYloE,EAAO,CAC3B,IAAIwwC,EAAMqO,GAAQ,CAAC,EACnB,OAAArO,EAAI,YAAY,EAAGxwC,EAAM,EAAE,CAAC,EAC5BwwC,EAAI,YAAY,EAAGxwC,EAAM,EAAE,CAAC,EAC5BwwC,EAAI,YAAY,EAAGxwC,EAAM,EAAE,CAAC,EAC5BwwC,EAAI,YAAY,EAAGxwC,EAAM,EAAE,CAAC,EACrBwwC,CACP,CAED,SAASu4B,EAAWhtB,EAAMz0D,EAAQgO,EAAM,CACvC,IAAIvW,EAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAG,EAAG,CAAC,EACrC,OAAGuW,EAAK,MAAQA,EAAK,MAAQ,OAC5BvW,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EAC1Bh9D,EAAE,CAAC,EAAIg9D,EAAK,WAAW,CAAC,EACxBh9D,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EAC1BA,EAAK,GAAG,IAERh9D,EAAE,CAAC,EAAIg9D,EAAK,WAAW,CAAC,EACxBh9D,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EAAGh9D,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,CAAC,GAEjDh9D,CACP,CAED,SAASiqF,EAAYjtB,EAAMz0D,EAAQgO,EAAM,CACxC,IAAI6mD,EAAMJ,EAAK,EAAIz0D,EACfvI,EAAIgqF,EAAWhtB,EAAMz0D,EAAQgO,CAAI,EAErC,GADAvW,EAAE,CAAC,EAAE,EAAI,IACNuW,EAAK,MAAQ,MAAQ,CACvBymD,EAAK,IACL,IAAI9mE,GAAM8mE,EAAK,WAAW,CAAC,EAC3B,OAAAh9D,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW9mE,GAAK,MAAM,EAC7B8J,CACP,CACD,OAAGuW,EAAK,MAAMymD,EAAK,IACnBh9D,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAWI,EAAMJ,EAAK,EAAG,MAAM,EACtCh9D,CACP,CACD,SAASupF,EAAYhtB,EAAGgD,EAAGj/E,EAAG,CAE7B,IAAI0f,EAAI8/D,GAAQ,EAAIx/E,EAAE,MAAM,EAC5B0f,EAAE,YAAY,EAAG,GAAI,EACrBA,EAAE,YAAY,EAAGu/D,CAAC,EAClBv/D,EAAE,YAAY,EAAGu8D,CAAC,EAClBv8D,EAAE,YAAY,EAAG,EAAI,EACrB,QAAQx4B,EAAI,EAAGA,EAAIw4B,EAAE,OAAQ,EAAEx4B,EAAG,CACjC,IAAIwvF,GAAK12E,EAAE,WAAW9Y,CAAC,EACvBw4B,EAAE,YAAY,EAAGg3D,IAAM,IAAO,GAAOA,EAAE,CACvC,CACD,OAAAh3D,EAAE,YAAY,EAAG,CAAC,EACXA,CACP,CAED,SAASkqF,EAAcltB,EAAMz0D,EAAQgO,EAAM,CAC1C,IAAIvW,EAAIgqF,EAAWhtB,EAAMz0D,EAAQgO,CAAI,EACrC,OAAAvW,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,EAAG,GAAG,EACxBh9D,CACP,CACD,SAASqpF,EAAc9sB,EAAGgD,EAAGpzF,EAAG,CAC/B,IAAI6zB,EAAI8/D,GAAQ,CAAC,EACjB,OAAA9/D,EAAE,YAAY,EAAG,GAAI,EACrBA,EAAE,YAAY,EAAGu/D,CAAC,EAClBv/D,EAAE,YAAY,EAAGu8D,CAAC,EAClBv8D,EAAE,YAAY,EAAG7zB,EAAG,GAAG,EAChB6zB,CACP,CAED,SAASmqF,EAAantB,EAAMz0D,EAAQgO,EAAM,CACzC,IAAIvW,EAAIgqF,EAAWhtB,EAAMz0D,EAAQgO,CAAI,EACrC,OAAAvW,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,EAAG,GAAG,EACxBh9D,CACP,CACD,SAASspF,EAAa/sB,EAAGgD,EAAGpzF,EAAG,CAC9B,IAAI6zB,EAAI8/D,GAAQ,EAAE,EAClB,OAAA9/D,EAAE,YAAY,EAAG,GAAI,EACrBA,EAAE,YAAY,EAAGu/D,CAAC,EAClBv/D,EAAE,YAAY,EAAGu8D,CAAC,EAClBv8D,EAAE,YAAY,EAAG7zB,EAAG,GAAG,EAChB6zB,CACP,CAED,SAASoqF,EAAcptB,EAAMz0D,EAAQgO,EAAM,CAC1C,IAAI6mD,EAAMJ,EAAK,EAAIz0D,EACfvI,EAAIgqF,EAAWhtB,EAAMz0D,EAAQgO,CAAI,EAGrC,GADAvW,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,EAAG,GAAG,EAC5BzmD,EAAK,KAAMymD,EAAK,EAAII,MAClB,CACJ,IAAI7E,GAAOyE,EAAK,WAAW,CAAC,EAC5BqtB,EAAgBrtB,EAAK,MAAMA,EAAK,EAAGA,EAAK,EAAIzE,EAAI,EAAGv4D,CAAC,EACpDg9D,EAAK,GAAKzE,EACV,CACD,OAAOv4D,CACP,CAED,SAASsqF,EAAan3B,EAAGyB,EAAGie,EAAK,CAChC,IAAI0X,EAAM31B,EAAI,MACd,OAAAA,GAAK,OACLA,GAAK21B,EAAMp3B,EAAI,IAAOyB,GAAK,KAAUA,EAAI,MAASA,IAC1C21B,EAAM,GAAK,MAAQ1X,EAAMR,GAAWzd,CAAC,EAAI0d,GAAW1d,CAAC,EAC7D,CAMD,IAAI41B,EAAU,CACb,GAAM,CAAC,QAAS,CAAC,EACjB,GAAM,CAAC,OAAQ,CAAC,EAChB,GAAM,CAAC,MAAO,CAAC,EACf,GAAM,CAAC,MAAO,EAAE,EAChB,GAAM,CAAC,WAAY,EAAE,EACrB,GAAM,CAAC,SAAU,EAAE,EACnB,GAAM,CAAC,OAAQ,EAAE,EACjB,GAAM,CAAC,OAAQ,EAAE,EACjB,IAAM,CAAC,IAAK,CAAC,CACf,EACKC,EAAW,CACZ,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAC1C,GAAK,IAAM,IAAM,IAAM,IAAM,IAAM,IAAK,KAC1C,KAAM,KAAO,IAAM,IAAO,GAAM,GAAM,GAAM,GAC3C,IAAO,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,EAC9C,EAEC,SAASJ,EAAgBrtB,EAAMh9D,EAAG,CACjCi9D,GAAUD,EAAM,CAAC,EAEjB,QADIvL,EAAM,CAAE,EAAEi5B,EAAO,EAAGnuB,EAAI,GAAIgD,GAAI,GAAIorB,GAAO,GAAIC,GAAO,GACpD5tB,EAAK,EAAIA,EAAK,QAAQ,CAC3B,IAAIhG,GAAKgG,EAAKA,EAAK,GAAG,EACtB,OAAOhG,GAAE,CACR,IAAK,GAAMvF,EAAI,KAAKuL,EAAK,WAAW,EAAG,GAAG,CAAC,EAAG,MAC9C,IAAK,GACJuC,GAAI+qB,EAAatqF,EAAE,CAAC,EAAE,EAAGg9D,EAAK,WAAW,CAAC,EAAG,EAAI,EACjDT,EAAI+tB,EAAatqF,EAAE,CAAC,EAAE,EAAGg9D,EAAK,WAAW,CAAC,EAAG,EAAK,EAClDvL,EAAI,KAAK8N,GAAIhD,CAAC,EACb,MACF,IAAK,GAAM,CACV,IAAItzF,GAAIqhH,EAAatqF,EAAE,CAAC,EAAE,EAAGg9D,EAAK,WAAW,CAAC,EAAG,EAAI,EACjD7mF,GAAIm0G,EAAatqF,EAAE,CAAC,EAAE,EAAGg9D,EAAK,WAAW,CAAC,EAAG,EAAK,EACtDuC,GAAI+qB,EAAatqF,EAAE,CAAC,EAAE,EAAGg9D,EAAK,WAAW,CAAC,EAAG,EAAI,EACjDT,EAAI+tB,EAAatqF,EAAE,CAAC,EAAE,EAAGg9D,EAAK,WAAW,CAAC,EAAG,EAAK,EAClDvL,EAAI,KAAKxoF,GAAIkN,GAAI,IAAMopF,GAAIhD,CAAC,CACjC,CAAM,MACF,IAAK,GACJ,GAAGS,EAAK,EAAIA,EAAK,OAAQ,CAAE,QAAQ,MAAM,2BAA2B,EAAG,MAAS,CAChF,MACD,IAAK,GAAMvL,EAAI,KAAK,IAAMA,EAAI,IAAK,EAAG,GAAG,EAAG,MAC5C,IAAK,GAAMA,EAAI,KAAKuL,EAAK,WAAW,CAAC,CAAC,EAAG,MACzC,IAAK,GAAM,CAEE,QAARR,EAAI,GAAWxF,GAAKgG,EAAKA,EAAK,GAAG,GAAIR,GAAK,OAAO,aAAaxF,EAAE,EACpEvF,EAAI,KAAK,IAAM+K,EAAE,QAAQ,KAAM,IAAI,EAAI,GAAG,CAC/C,CAAM,MAEF,IAAK,GAAM/K,EAAI,KAAK,IAAMA,EAAI,IAAG,CAAE,EAAG,MACtC,IAAK,IAAMA,EAAI,KAAK,IAAMA,EAAI,IAAG,CAAE,EAAG,MACtC,IAAK,IAAMA,EAAI,KAAK,OAASA,EAAI,IAAK,EAAG,GAAG,EAAG,MAE/C,IAAK,IAAM,IAAK,IACfm5B,GAAOn5B,EAAI,IAAK,EAAEk5B,GAAOl5B,EAAI,MAC7BA,EAAI,KAAK,CAAC,MAAO,IAAI,EAAEuF,GAAK,EAAI,EAAI,IAAM2zB,GAAO,IAAMC,GAAO,GAAG,EAChE,MAEF,QACC,GAAG5zB,GAAK,IAAQyzB,EAASzzB,EAAE,EAC1B4zB,GAAOn5B,EAAI,IAAK,EAAEk5B,GAAOl5B,EAAI,MAC7BA,EAAI,KAAKk5B,GAAOF,EAASzzB,EAAE,EAAI4zB,EAAI,UAC1BJ,EAAQxzB,EAAE,EAAG,CAGtB,GAFA0zB,EAAOF,EAAQxzB,EAAE,EAAE,CAAC,EACjB0zB,GAAQ,KAAIA,EAAO1tB,EAAKA,EAAK,GAAG,GAChC0tB,EAAOj5B,EAAI,OAAQ,CAAE,QAAQ,MAAM,2BAA6BuF,GAAG,SAAS,EAAE,EAAI,KAAOvF,EAAI,KAAK,GAAG,EAAI,GAAG,EAAG,MAAS,CAC3H,IAAIthF,EAAOshF,EAAI,MAAM,CAACi5B,CAAI,EAC1Bj5B,EAAI,QAAUi5B,EACdj5B,EAAI,KAAK+4B,EAAQxzB,EAAE,EAAE,CAAC,EAAI,IAAM7mF,EAAK,KAAK,GAAG,EAAI,GAAG,CACpD,KACI,QAAG6mF,IAAM,EAAa,QAAQ,MAAM,sBAAwBA,GAAG,SAAS,EAAE,CAAC,EACxEA,IAAM,GAAa,QAAQ,MAAM,sBAAwBA,GAAG,SAAS,EAAE,CAAC,EACxEA,IAAM,GAAa,QAAQ,MAAM,sBAAwBA,GAAG,SAAS,EAAE,CAAC,EACxEA,IAAM,IAAa,QAAQ,MAAM,mCAAqCA,GAAG,SAAS,EAAE,CAAC,EAEjF,QAAQ,MAAM,2BAA6BA,GAAG,SAAS,EAAE,CAAC,CACvE,CACD,CACEvF,EAAI,QAAU,EAAGzxD,EAAE,CAAC,EAAE,EAAI,GAAKyxD,EAAI,CAAC,EAClC,QAAQ,MAAM,0BAA4BA,EAAI,KAAK,GAAG,EAAI,GAAG,CAClE,CAGD,SAASo5B,EAAa7tB,EAAoB,CACzC,IAAIh9D,EAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAG,CAAC,EAClC,OAAAA,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EAAGh9D,EAAE,CAAC,EAAIg9D,EAAKA,EAAK,GAAG,EAAGh9D,EAAE,CAAC,EAAE,EAAIg9D,EAAKA,EAAK,GAAG,EACnEh9D,CACP,CAED,SAAS8qF,EAAe9tB,EAAMz0D,EAAQ,CACrC,IAAIvI,EAAI6qF,EAAa7tB,CAAY,EACjC,OAAAh9D,EAAE,CAAC,EAAE,EAAI,IACTA,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAWz0D,EAAS,EAAG,MAAM,EACpCvI,CACP,CACD,SAAS6pF,EAAettB,EAAGgD,EAAGoqB,EAAOrpG,EAAG,CAEvC,IAAI0f,EAAI8/D,GAAQ,EAAIx/E,EAAE,MAAM,EAC5B0f,EAAE,YAAY,EAAGu8D,CAAC,EAClBv8D,EAAE,YAAY,EAAG2pF,CAAK,EACtB3pF,EAAE,YAAY,EAAGu/D,CAAC,EAClBv/D,EAAE,YAAY,EAAG,EAAI,EACrB,QAAQx4B,GAAI,EAAGA,GAAI8Y,EAAE,OAAQ,EAAE9Y,GAAG,CACjC,IAAIwvF,GAAK12E,EAAE,WAAW9Y,EAAC,EACvBw4B,EAAE,YAAY,EAAGg3D,IAAM,IAAO,GAAOA,EAAE,CACvC,CACD,OAAAh3D,EAAE,YAAY,EAAG,CAAC,EACXA,CACP,CAED,SAAS+qF,EAAgB/tB,EAAMz0D,EAAQ,CACtC,IAAIvI,EAAI6qF,EAAa7tB,CAAY,EACjCh9D,EAAE,CAAC,EAAE,EAAIg9D,EAAK,WAAW,CAAC,EAC1B,IAAI7wF,EAAI6zB,EAAE,CAAC,EAAE,GAAK,EAClB,GAAGA,EAAE,CAAC,EAAE,EAAI,EACX,OAAO7zB,EAAI,EAAI,CACd,IAAK,GAAGA,GAAKA,GAAK,GAAK,IAAM,MAC7B,IAAK,GAAGA,GAAKA,GAAK,GAAK,IAAK,MAC5B,IAAK,GAAGA,GAAKA,GAAK,GAAK,GAAI,MAC3B,IAAK,GAAGA,GAAKA,GAAK,GAAK,IAAK,MAC5B,IAAK,GAAGA,GAAKA,GAAK,GAAK,IAAM,MAC7B,IAAK,GAAGA,GAAKA,GAAK,GAAK,IAAO,MAC9B,IAAK,GAAGA,GAAKA,GAAK,GAAK,GAAI,MAC3B,IAAK,GAAGA,GAAKA,GAAK,GAAK,GAAI,KAC3B,CAEF,OAAA6zB,EAAE,CAAC,EAAE,EAAI7zB,EACF6zB,CACP,CAED,SAASgrF,EAAgBhuB,EAAMz0D,EAAQ,CACtC,IAAIvI,EAAI6qF,EAAa7tB,CAAY,EAC7Bl+C,EAAKk+C,EAAK,WAAW,CAAC,EACtBp7B,EAAKo7B,EAAK,WAAW,CAAC,EACtBnjE,GAAImjE,EAAK,WAAW,CAAC,EACzB,GAAGnjE,IAAK,MACP,OAAGilB,IAAO,GAAK8iB,IAAO,YAAc5hC,EAAE,CAAC,EAAE,EAAI,IAAKA,EAAE,CAAC,EAAE,EAAI,IACnD8e,IAAO,GAAK8iB,IAAO,YAAc5hC,EAAE,CAAC,EAAE,EAAI,IAAKA,EAAE,CAAC,EAAE,EAAI,IAC3DA,EAAE,CAAC,EAAE,EAAI,EACPA,EAER,IAAI1f,GAAIuZ,GAAI,MAAQ,OAAAA,IAAKA,GAAE,OAAU,MACrCmG,EAAE,CAAC,EAAE,GAAK,EAAI1f,GAAE,IAAMshD,EAAK,KAAK,IAAI,EAAG/nC,GAAE,EAAE,EAAIilB,EAAK,KAAK,IAAI,EAAGjlB,EAAC,GAC1DmG,CACP,CACD,SAAS4pF,EAAgBrtB,EAAGgD,EAAGoqB,EAAOx9G,EAAG,CACxC,IAAI6zB,EAAI8/D,GAAQ,EAAE,EAIlB,GAHA9/D,EAAE,YAAY,EAAGu8D,CAAC,EAClBv8D,EAAE,YAAY,EAAG2pF,CAAK,EACtB3pF,EAAE,YAAY,EAAGu/D,CAAC,EACfpzF,GAAK,EACP,OAAA6zB,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,KAAM,EAChBA,EAER,IAAI1f,GAAI,EAAGuZ,GAAI,EAAGilB,GAAK,EAAG8iB,GAAK,EAC/B,OAAGz1D,EAAI,IAAKmU,GAAI,EAAGnU,EAAI,CAACA,GACxB0tB,GAAI,KAAK,KAAK1tB,CAAC,EAAI,EACnBA,GAAK,KAAK,IAAI,EAAG0tB,GAAE,EAAE,EACrB+nC,GAAMz1D,IAAK,EACPy1D,GAAG,aAAoBz1D,GAAG,EAAG,EAAE0tB,GAAG+nC,GAAKz1D,IAAM,GACjDA,GAAKy1D,GACLA,IAAM,WACNA,MAAQ,EACRz1D,GAAK,KAAK,IAAI,EAAG,EAAE,EACnB2yC,GAAK3yC,IAAI,EACT6zB,EAAE,YAAY,EAAG8e,EAAE,EACnB9e,EAAE,YAAY,EAAG4hC,EAAE,EACnB/nC,IAAK,OAAUvZ,GAAI,MAAS,GAC5B0f,EAAE,YAAY,EAAGnG,EAAC,EACXmG,CACP,CAED,SAASirF,EAAiBjuB,EAAMz0D,EAAQ,CACvC,IAAIvI,EAAIgrF,EAAgBhuB,CAAQ,EAChC,OAAAA,EAAK,GAAKz0D,EAAS,GACZvI,CACP,CAED,SAASkrF,EAAgBluB,EAAMz0D,EAAQ,CACtC,IAAIvI,EAAI6qF,EAAa7tB,CAAY,EAC7Bl+C,EAAKk+C,EAAK,WAAW,CAAC,EAC1B,OAAAh9D,EAAE,CAAC,EAAE,EAAI8e,GAAM,EACR9e,CACP,CAED,SAASmrF,GAAgBnuB,EAAMz0D,EAAQ,CACtC,IAAIvI,EAAI6qF,EAAa7tB,CAAY,EAC7Bl+C,EAAKk+C,EAAK,WAAW,EAAE,GAAG,EAC9B,OAAAh9D,EAAE,CAAC,EAAE,EAAI8e,EACF9e,CACP,CAED,SAASorF,GAAiBpuB,EAAMz0D,EAAQ,CACvC,IAAIvI,EAAImrF,GAAgBnuB,CAAQ,EAChC,OAAAA,EAAK,GAAKz0D,EAAS,GACZvI,CACP,CAED,SAASqrF,GAAkBruB,EAAMz0D,EAAQ,CACxC,OAAOy0D,EAAKA,EAAK,EAAIz0D,EAAS,CAAC,GAAK,EAAIy0D,EAAK,WAAWz0D,EAAQ,MAAM,EAAI,EAC1E,CAED,SAAS+iF,GAAkBtuB,EAAMz0D,EAAQ,CACxC,IAAIrS,EAAM8mE,EAAKA,EAAK,GAAG,EACpB9mE,EAAMqS,EAAS,IAAGrS,EAAMqS,EAAS,GACxB,QAARvI,EAAI,GAAUA,EAAE,OAAS9J,GAAK8J,GAAK,OAAO,aAAag9D,EAAKA,EAAK,GAAG,CAAC,EACzE,OAAOh9D,CACP,CAED,SAASurF,GAAkBvuB,EAAMz0D,EAAQgO,EAAM,CAC9C,GAAG,GAACA,EAAK,MAAQhO,EAAS,IAC1B,KAAIxvB,EAAKikF,EAAK,WAAW,CAAC,EAC1BA,EAAK,GAAK,GACVA,EAAK,GAAK,EACVA,EAAK,GAAK,EACV,IAAImE,EAAKnE,EAAK,WAAWz0D,EAAS,GAAI,MAAM,EAC5C,MAAO,CAACxvB,EAAIooF,CAAE,EACd,CAED,SAASqqB,GAAcxuB,EAAMz0D,EAAQ,CAEpC,QADIvI,EAAI,CAAA,EAAIo9D,EAAMJ,EAAK,EAAIz0D,EACrBy0D,EAAK,EAAII,GAAK,CACnB,IAAI3E,EAAKuE,EAAK,WAAW,CAAC,EAC1B,GAAGvE,GAAM,KAAQ,CAGhB,IAFAz4D,EAAEy4D,CAAE,EAAI,CAAC,EAAG,EAAE,EACdz4D,EAAEy4D,CAAE,EAAE,CAAC,EAAIuE,EAAK,WAAW,CAAC,EACtBA,EAAKA,EAAK,CAAC,GAAKh9D,EAAEy4D,CAAE,EAAE,CAAC,GAAK,OAAO,aAAauE,EAAKA,EAAK,CAAC,CAAC,EAAGA,EAAK,IAAOA,EAAK,GACtF,CAED,CACD,OAAOh9D,CACP,CACD,SAAS0pF,GAAwB5+G,EAAM6+G,EAAO,CAC7C,IAAIl4B,EAAMqO,GAAQ,EAAIh1F,EAAK,MAAM,EACjC2mF,EAAI,YAAY,EAAG,IAAM,EACzBA,EAAI,YAAY,EAAGk4B,CAAK,EACxB,QAAQniH,EAAI,EAAGA,EAAIsD,EAAK,OAAQ,EAAEtD,EAAG,CACpC,IAAIwvF,EAAKlsF,EAAK,WAAWtD,CAAC,EAC1BiqF,EAAIA,EAAI,GAAG,EAAIuF,EAAK,IAAO,GAAOA,CAClC,CACD,OAAAvF,EAAIA,EAAI,GAAG,EAAI,EACRA,CACP,CAED,IAAI02B,GAAU,CACN,EAAe,CAAE,EAAE,MAAO,EAAE7L,EAAa,EACzC,EAAe,CAAE,EAAE,KAAO,EAC1B,EAAe,CAAE,EAAE,UAAY,EAC/B,EAAe,CAAE,EAAE,WAAa,EAChC,EAAe,CAAE,EAAE,OAAS,EAC5B,EAAe,CAAE,EAAE,MAAQ,EAC3B,EAAe,CAAE,EAAE,QAAS,EAAEyN,CAAa,EAC3C,EAAe,CAAE,EAAE,SAAW,EAC9B,EAAe,CAAE,EAAE,OAAS,EAC5B,EAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,MAAQ,EAC3B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,UAAW,EAAEG,CAAe,EAC/C,GAAe,CAAE,EAAE,SAAU,EAAEC,CAAc,EAC7C,GAAe,CAAE,EAAE,QAASF,CAAe,EAC3C,GAAe,CAAE,EAAE,UAAW,EAAEG,CAAe,EAC/C,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,SAAW,EAC9B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,SAAW,EAC9B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,SAAW,EAC9B,GAAe,CAAE,EAAE,UAAY,EAC/B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,SAAW,EAC9B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,SAAUH,CAAe,EAC5C,GAAe,CAAE,EAAE,UAAY,EAC/B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,MAAQ,EAC3B,GAAe,CAAE,EAAE,UAAY,EAC/B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,OAAS,EAC5B,IAAe,CAAE,EAAE,WAAa,EAChC,IAAe,CAAE,EAAE,WAAa,EAChC,IAAe,CAAE,EAAE,SAAW,EAC9B,IAAe,CAAE,EAAE,WAAa,EAChC,IAAe,CAAE,EAAE,cAAe,EAAEoB,EAAmB,EACvD,IAAe,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACvD,MAAe,CAAE,EAAE,EAAI,CAChC,EAEKzC,GAAU,CACN,EAAe,CAAE,EAAE,KAAO,EAC1B,EAAe,CAAE,EAAE,KAAO,EAC1B,EAAe,CAAE,EAAE,UAAY,EAC/B,EAAe,CAAE,EAAE,SAAW,EAC9B,EAAe,CAAE,EAAE,WAAa,EAChC,EAAe,CAAE,EAAE,cAAgB,EACnC,EAAe,CAAE,EAAE,aAAe,EAClC,EAAe,CAAE,EAAE,aAAe,EAClC,EAAe,CAAE,EAAE,cAAgB,EACnC,EAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,YAAc,EACjC,GAAe,CAAE,EAAE,UAAY,EAC/B,GAAe,CAAE,EAAE,cAAgB,EACnC,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,IAAM,EACzB,GAAe,CAAE,EAAE,SAAW,EAC9B,GAAe,CAAE,EAAE,QAAU,EAC7B,GAAe,CAAE,EAAE,UAAW,EAAEiC,CAAc,EAC9C,GAAe,CAAE,EAAE,WAAY,EAAEE,CAAiB,EAClD,GAAe,CAAE,EAAE,WAAY,EAAED,CAAiB,EAClD,GAAe,CAAE,EAAE,YAAa,EAAEE,CAAgB,EAClD,GAAe,CAAE,EAAE,WAAa,EAChC,GAAe,CAAE,EAAE,UAAW,EAAEO,EAAe,EAC/C,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,KAAO,EAC1B,GAAe,CAAE,EAAE,SAAW,EAC9B,GAAe,CAAE,EAAE,OAAS,EAC5B,GAAe,CAAE,EAAE,aAAe,EAClC,GAAe,CAAE,EAAE,IAAM,EACzB,GAAe,CAAE,EAAE,WAAY,EAAEN,CAAiB,EAClD,GAAe,CAAE,EAAE,IAAM,EACzB,GAAe,CAAE,EAAE,WAAY,EAAEC,EAAiB,EAClD,GAAe,CAAE,EAAE,YAAa,EAAEC,EAAkB,EACpD,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACvD,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,IAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,cAAe,EAAEE,EAAmB,EACvD,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,KAAe,CAAE,EAAE,IAAM,EACzB,MAAe,CAAE,EAAE,IAAM,EACzB,MAAe,CAAE,EAAE,IAAM,EACzB,MAAe,CAAE,EAAE,IAAM,EACzB,MAAe,CAAE,EAAE,IAAM,EACzB,MAAe,CAAE,EAAE,EAAI,CAChC,EACC,MAAO,CACN,aAAcvC,EACd,YAAaQ,EACb,YAAapB,CACf,CACA,IAwNIqD,GAAe,mBACnB,SAASC,GAAc7M,EAAatoE,EAAiB,CACpD,GAAG,CAACA,EAAK,QAAS,MAAO,GACzB,IAAIvW,EAAI,CAAC+sE,EAAU,EACnB/sE,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,MAAO,KAAM,CACrC,MAAOK,GAAW,CAAC,EACnB,MAAOkQ,EAAI,MACX,YAAaA,EAAI,MACjB,CAAA,EACD,QAAQr3G,EAAI,EAAGA,GAAKq3G,EAAI,OAAQ,EAAEr3G,EAAK,GAAGq3G,EAAIr3G,CAAC,GAAK,KACnD,KAAI8Y,EAAiBu+F,EAAIr3G,CAAC,EACtBmkH,EAAQ,OACTrrG,EAAE,EAAGqrG,GAASrrG,EAAE,GAElBqrG,GAAS,KACLrrG,EAAE,IAAGA,EAAE,EAAI,IACZA,EAAE,EAAE,MAAMmrG,EAAY,IAAGE,GAAS,yBACrCA,GAAS,IAAMve,GAAU9sF,EAAE,CAAC,EAAI,QAEjCqrG,GAAS,QACT3rF,EAAEA,EAAE,MAAM,EAAK2rF,EAEhB,OAAG3rF,EAAE,OAAO,IAAIA,EAAEA,EAAE,MAAM,EAAK,SAAWA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GAC7DA,EAAE,KAAK,EAAE,CACjB,CAEA,SAAS4rF,GAAkBhvG,EAAM,CAChC,MAAO,CAACA,EAAK,WAAW,CAAC,EAAGA,EAAK,WAAW,CAAC,CAAC,CAC/C,CA4BA,SAASivG,GAAkBhN,EAAK7+E,EAAG,CAClC,OAAIA,IAAGA,EAAI8/D,GAAQ,CAAC,GACpB9/D,EAAE,YAAY,EAAG6+E,EAAI,KAAK,EAC1B7+E,EAAE,YAAY,EAAG6+E,EAAI,MAAM,EACpB7+E,CACR,CAEA,IAAI8rF,GAAmB1W,GAEvB,SAAS2W,GAAclN,EAAiB,CACvC,IAAInN,EAAKP,KACTM,GAAaC,EAAI,IAA0Bma,GAAkBhN,CAAG,CAAC,EACjE,QAAQr3G,EAAI,EAAGA,EAAIq3G,EAAI,OAAQ,EAAEr3G,EAAGiqG,GAAaC,EAAI,GAAyBoa,GAAiBjN,EAAIr3G,CAAC,CAAC,CAAC,EAEtG,OAAAiqG,GAAaC,EAAI,KACVA,EAAG,KACX,CACA,SAASsa,GAASvlH,EAAkC,CAGnD,QADIu5B,EAAsB,CAAA,EAAI0wE,EAAKjqG,EAAI,MAAM,EAAE,EACvCe,EAAI,EAAGA,EAAIkpG,EAAG,OAAQ,EAAElpG,EAAGw4B,EAAEx4B,CAAC,EAAIkpG,EAAGlpG,CAAC,EAAE,WAAW,CAAC,EAC5D,OAAOw4B,CACR,CA0LA,SAASisF,GAAsCC,EAAqB,CACnE,IAAIC,EAAW,EAAQC,EACnBC,EAAkBL,GAASE,CAAQ,EACnCh2F,EAAMm2F,EAAgB,OAAS,EAAG7kH,EAAG8kH,EACrCC,EAAeC,EAAeC,EAGlC,IAFAL,EAAgBt7B,GAAY56D,CAAG,EAC/Bk2F,EAAc,CAAC,EAAIC,EAAgB,OAC/B7kH,EAAI,EAAGA,GAAK0uB,EAAK,EAAE1uB,EAAG4kH,EAAc5kH,CAAC,EAAI6kH,EAAgB7kH,EAAE,CAAC,EAChE,IAAIA,EAAI0uB,EAAI,EAAG1uB,GAAK,EAAG,EAAEA,EACxB8kH,EAAeF,EAAc5kH,CAAC,EAC9B+kH,EAAkBJ,EAAW,MAA0B,EAAJ,EACnDK,EAAiBL,GAAY,EAAK,MAClCM,EAAgBF,EAAgBC,EAChCL,EAAWM,EAAgBH,EAE5B,OAAOH,EAAW,KACnB,CA6GA,IAAIO,GAAoB,UAAW,CAClC,SAASC,EAAajxE,EAAenF,EAAoB,CACxD,OAAOA,EAAK,KAAI,CACf,IAAK,SAAU,OAAOq2E,EAAiBp8B,GAAc90C,CAAC,EAAGnF,CAAI,EAC7D,IAAK,SAAU,OAAOq2E,EAAiBlxE,EAAGnF,CAAI,EAC9C,IAAK,SAAU,OAAOq2E,EAAiBn8B,IAAW,OAAO,SAAS/0C,CAAC,EAAIA,EAAE,SAAS,QAAQ,EAAIy1C,GAAIz1C,CAAC,EAAGnF,CAAI,EAC1G,IAAK,QAAU,OAAOq2E,EAAiBxgB,GAAO1wD,CAAC,EAAGnF,CAAI,CACtD,CACD,MAAM,IAAI,MAAM,qBAAuBA,EAAK,IAAI,CAChD,CAGD,SAASq2E,EAAiBnmH,EAAgB8vC,EAAoB,CAC7D,IAAIvW,EAAIuW,GAAQ,GACZu9D,EAAmB9zE,EAAE,MAAS,CAAE,EAAa,CAAE,EAE/CslF,EAAO7+G,EAAI,MAAM,oBAAoB,EACzC,GAAG,CAAC6+G,EAAK,OAAQ,MAAM,IAAI,MAAM,mBAAmB,EACpD,IAAIrkE,EAAmB,CAAC,EAAG,CAAC,EAAE,EAAG,EAAE,CAAC,EAAG,EAAG,CAAC,EAAE,EAAG,EAAEqkE,EAAK,OAAS,CAAC,CAAC,EAClE,OAAAA,EAAK,QAAQ,SAASuH,EAAOtwB,EAAG,CAC5B,MAAM,QAAQuX,CAAE,IAAGA,EAAGvX,CAAC,EAAI,IAK9B,QAJIuwB,EAAQ,WACRC,EAAa,EACb5iH,EACAo1F,EAAI,GACDp1F,EAAM2iH,EAAM,KAAKD,CAAK,GAAI,CAChC,OAAO1iH,EAAI,CAAC,EAAC,CACZ,IAAK,SACJ,IAAIyS,EAAOiwG,EAAM,MAAME,EAAYD,EAAM,UAAY3iH,EAAI,CAAC,EAAE,MAAM,EAGlE,GAFGyS,EAAK,CAAC,GAAK,MAAKA,EAAOA,EAAK,MAAM,CAAC,GACtC,EAAE2iF,EACC3iF,EAAK,OAAQ,CAEf,IAAIi1F,EAAO,CAAC,EAAGj1F,EAAM,EAAE,GAAG,EACvB,MAAM,QAAQk3F,CAAE,EAAGA,EAAGvX,CAAC,EAAEgD,CAAC,EAAIsS,EAC5BiC,EAAG7B,GAAY,CAAC,EAAE1V,EAAG,EAAEgD,CAAC,CAAC,CAAC,EAAIsS,CACnC,CACD,KACD,CACDkb,EAAaD,EAAM,SACnB,CACEvtB,EAAIt+C,EAAM,EAAE,IAAGA,EAAM,EAAE,EAAIs+C,EACjC,CAAG,EACDuU,EAAG,MAAM,EAAIb,GAAahyD,CAAK,EACxB6yD,CACP,CAED,SAASkZ,EAAgBtxE,EAAenF,EAAmB,CAAE,OAAOi9D,GAAkBmZ,EAAajxE,EAAGnF,CAAI,EAAGA,CAAI,CAAI,CAGrH,SAAS02E,EAAanZ,EAAyC,CAI9D,QAHI9zE,EAAI,CAAC,eAAe,EACpB7pB,EAAIi9F,GAAkBU,EAAG,MAAM,CAAC,EAAGjC,EACnCgC,EAAQ,MAAM,QAAQC,CAAE,EACpBvX,EAAIpmF,EAAE,EAAE,EAAGomF,GAAKpmF,EAAE,EAAE,EAAG,EAAEomF,EAAG,CACnCv8D,EAAE,KAAK,qBAAqB,EAC5B,QAAQu/D,EAAIppF,EAAE,EAAE,EAAGopF,GAAKppF,EAAE,EAAE,EAAG,EAAEopF,EAAGv/D,EAAE,KAAK,WAAau/D,EAAE,EAAE,EAE5D,IADAv/D,EAAE,KAAK,eAAe,EAClBu/D,EAAIppF,EAAE,EAAE,EAAGopF,GAAKppF,EAAE,EAAE,EAAG,EAAEopF,EAAG,CAC/B,IAAIomB,EAAQ1T,GAAY,CAAC,EAAE1V,EAAE,EAAEgD,CAAC,CAAC,EACjCsS,EAAOgC,GAASC,EAAGvX,CAAC,GAAG,CAAE,GAAEgD,CAAC,EAAGuU,EAAG6R,CAAK,EACpC,GAAC9T,GAAQA,EAAK,GAAK,OAAS,CAACA,EAAK,GAAKA,EAAK,MAC/C7xE,EAAE,KAAK,KAAO6xE,EAAK,IAAMyB,GAAYzB,CAAI,EAAGA,EAAK,GAAG,EACpD7xE,EAAE,KAAK,QAAQ,EACf,CACDA,EAAE,KAAK,oBAAoB,CAC3B,CACD,OAAOA,EAAE,KAAK,EAAE,EAAI,GACpB,CAED,MAAO,CACN,YAAagtF,EACb,SAAUL,EACV,WAAYM,CACd,CACA,IAKA,SAAS1V,GAAQ/7D,EAAK,CACrB,QAAQh0C,EAAE,EAAEw4B,EAAE,EAAGx4B,GAAG,EAAG,EAAEA,EAAGw4B,EAAIA,EAAE,KAAOwb,EAAIh0C,CAAC,EAAE,IAAI,IAAIg0C,EAAIh0C,CAAC,EAAE,EAAE,EAAEg0C,EAAIh0C,CAAC,GACxE,OAAOw4B,EAAE,SAAS,EAAE,EAAE,cAAc,MAAM,CAAC,CAC5C,CA8CG,IAACktF,GAAU,EAA8BC,GAAMD,GAClD,SAAS/H,GAASz7D,EAAO,CAAE,OAAO,KAAK,OAAQA,EAAS,KAAK,MAAM,IAAIyjE,EAAG,EAAG,KAAOA,EAAK,CAAG,CAC5F,SAAS/H,GAAQgI,EAAI,CAAE,OAAQ,KAAK,OAAOA,EAAK,GAAGD,GAAM,IAAM,EAAG,EAAG,GAAM,CAC3E,SAASE,GAAWC,EAAK,CAAE,OAAQ,KAAK,OAAOA,EAAMH,GAAM,GAAGA,GAAI,GAAG,EAAG,GAAM,CAsB9E,SAASzI,GAAY6I,EAAkB,CACnCA,EAAK,OACPA,EAAK,IAAMpI,GAASoI,EAAK,KAAK,EAC9BA,EAAK,IAAMnI,GAAQmI,EAAK,GAAG,EAC3BA,EAAK,IAAMJ,IACFI,EAAK,KACdA,EAAK,IAAMnI,GAAQmI,EAAK,GAAG,EAC3BA,EAAK,MAAQF,GAAWE,EAAK,GAAG,EAChCA,EAAK,IAAMJ,IACF,OAAOI,EAAK,KAAO,WAC5BA,EAAK,MAAQF,GAAWE,EAAK,GAAG,EAChCA,EAAK,IAAMpI,GAASoI,EAAK,KAAK,EAC9BA,EAAK,IAAMJ,IAETI,EAAK,aAAa,OAAOA,EAAK,WAClC,CAEA,IAAIC,GAAU,GAAIC,GAAMD,GACxB,SAASjI,GAAM6H,EAAI,CAAE,OAAOA,EAAK,GAAKK,EAAM,CAC5C,SAAS9I,GAAM5yD,EAAI,CAAE,OAAOA,EAAK07D,GAAM,EAAK,CAsT5C,SAASC,GAAcC,EAA+C,CACrE,IAAI3tF,EAAI,CAAC,WAAW,EAIpB,MAHA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAO,GAAgB,GAAG,CAAC,EAAE,QAAQ,SAAS,EAAG,CACvE,QAAQx4B,EAAI,EAAE,CAAC,EAAGA,GAAK,EAAE,CAAC,EAAG,EAAEA,EAAMmmH,EAAGnmH,CAAC,GAAK,OAAMw4B,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,SAAS,KAAK,CAAC,SAAS9mG,EAAE,WAAW4lG,GAAUugB,EAAGnmH,CAAC,CAAC,CAAC,CAAC,EACrI,CAAE,EACEw4B,EAAE,SAAW,EAAU,IAC1BA,EAAEA,EAAE,MAAM,EAAK,aACfA,EAAE,CAAC,EAAIsuE,GAAU,UAAW,KAAM,CAAE,MAAMtuE,EAAE,OAAO,CAAC,CAAE,EAAE,QAAQ,KAAM,GAAG,EAClEA,EAAE,KAAK,EAAE,EACjB,CA4DA,SAAS4tF,GAAcC,EAAoB,CAC1C,IAAI7tF,EAAsB,CAAA,EAM1B,OALAA,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,UAAU,IAAI,EACvCuf,EAAQ,QAAQ,SAAS5kH,EAAG,CAC3B+2B,EAAEA,EAAE,MAAM,EAAKsuE,GAAU,KAAM,KAAMrlG,CAAC,CACxC,CAAE,EACD+2B,EAAEA,EAAE,MAAM,EAAK,aACZA,EAAE,SAAW,EAAU,IAC1BA,EAAE,CAAC,EAAIsuE,GAAU,UAAU,KAAM,CAAC,MAAMtuE,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,KAAK,GAAG,EAC9DA,EAAE,KAAK,EAAE,EACjB,CA4CA,SAAS8tF,GAActP,EAAiBjoE,EAAiB,CACxD,IAAIvW,EAAI,CAAC+sE,GAAYuB,GAAU,aAAc,KAAM,CAClD,MAASK,GAAW,CAAC,EACrB,WAAYD,GAAM,EACpB,CAAE,CAAC,EAAG7/D,EACL,OAAG2vE,EAAG,MAAQ3vE,EAAI6+E,GAAclP,EAAG,GAAG,IAAM,OAAMx+E,EAAEA,EAAE,MAAM,EAAI6O,GAChE7O,EAAEA,EAAE,MAAM,EAAK,oIACfA,EAAEA,EAAE,MAAM,EAAK,2HACfA,EAAEA,EAAE,MAAM,EAAK,0FACfA,EAAEA,EAAE,MAAM,EAAK,gGACX6O,EAAI++E,GAAcr3E,EAAK,OAAO,KAAIvW,EAAEA,EAAE,MAAM,EAAK6O,GACrD7O,EAAEA,EAAE,MAAM,EAAK,uFACfA,EAAEA,EAAE,MAAM,EAAK,oBACfA,EAAEA,EAAE,MAAM,EAAK,uGAEZA,EAAE,OAAO,IAAIA,EAAEA,EAAE,MAAM,EAAK,gBAAkBA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GACpEA,EAAE,KAAK,EAAE,CACjB,CAEA,SAAS+tF,GAAanxG,EAAM2rB,EAAmB,CAC9C,IAAIylF,EAAWpxG,EAAK,WAAW,CAAC,EAC5BqxG,EAAYxZ,GAAmB73F,CAAa,EAChD,MAAO,CAACoxG,EAAUC,CAAS,CAC5B,CACA,SAASC,GAAa1mH,EAAcyzC,EAAcjb,EAAG,CAChDA,IAAGA,EAAI8/D,GAAQ,EAAI,EAAI7kD,EAAE,MAAM,GACnCjb,EAAE,YAAY,EAAGx4B,CAAC,EAClBmtG,GAAmB15D,EAAGjb,CAAC,EACvB,IAAIyxD,EAAOzxD,EAAE,OAASA,EAAE,EAAKA,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,EAC/C,OAAGA,EAAE,GAAK,OAAMA,EAAE,EAAIA,EAAE,QACjByxD,CACR,CAGA,SAAS08B,GAAcvxG,EAAM2rB,EAAmBgO,EAAM,CACrD,IAAIk7C,EAAO,CAAA,EAEXA,EAAI,GAAK70E,EAAK,WAAW,CAAC,EAAI,GAE9B,IAAI+6F,EAAQF,GAAgB76F,CAAa,EACtC+6F,EAAM,UAASlmB,EAAI,OAAS,GAC5BkmB,EAAM,YAAWlmB,EAAI,SAAW,GAChCkmB,EAAM,UAASlmB,EAAI,OAAS,GAC5BkmB,EAAM,UAASlmB,EAAI,OAAS,GAC5BkmB,EAAM,WAAUlmB,EAAI,QAAU,GAC9BkmB,EAAM,aAAYlmB,EAAI,OAAS,GAElC,IAAI28B,EAAMxxG,EAAK,WAAW,CAAC,EAG3B,OAFGwxG,IAAQ,MAAQ38B,EAAI,KAAO,GAEvB70E,EAAK,WAAW,CAAC,EAAC,CAExB,IAAK,GAAG60E,EAAI,UAAY,cAAe,MACvC,IAAK,GAAGA,EAAI,UAAY,YAAa,KACrC,CAED,IAAI48B,EAAYzxG,EAAK,WAAW,CAAC,EAC9ByxG,GAAa,IAAG58B,EAAI,UAAY48B,GAEnC,IAAIC,EAAS1xG,EAAK,WAAW,CAAC,EAC3B0xG,EAAS,IAAG78B,EAAI,OAAS68B,GAE5B,IAAIC,EAAW3xG,EAAK,WAAW,CAAC,EAMhC,OALG2xG,EAAW,IAAG98B,EAAI,QAAU88B,GAE/B3xG,EAAK,IACL60E,EAAI,MAAQslB,GAAen6F,CAAO,EAE3BA,EAAK,WAAW,CAAC,EAAC,CAExB,IAAK,GAAG60E,EAAI,OAAS,QAAS,MAC9B,IAAK,GAAGA,EAAI,OAAS,QAAS,KAC9B,CAED,OAAAA,EAAI,KAAOgjB,GAAmB73F,CAAiB,EAExC60E,CACR,CACA,SAAS+8B,GAAc5lE,EAAc5oB,EAAG,CACnCA,IAAGA,EAAI8/D,GAAQ,GAAG,EAAE,EAAE,GAC1B9/D,EAAE,YAAY,EAAG4oB,EAAK,GAAK,EAAE,EAC7B8uD,GAAgB9uD,EAAM5oB,CAAC,EACvBA,EAAE,YAAY,EAAG4oB,EAAK,KAAO,IAAS,GAAM,EAC5C,IAAI6lE,EAAM,EACP7lE,EAAK,WAAa,cAAe6lE,EAAM,EAClC7lE,EAAK,WAAa,cAAa6lE,EAAM,GAC7CzuF,EAAE,YAAY,EAAGyuF,CAAG,EACpBzuF,EAAE,YAAY,EAAG4oB,EAAK,WAAa,CAAC,EACpC5oB,EAAE,YAAY,EAAG4oB,EAAK,QAAU,CAAC,EACjC5oB,EAAE,YAAY,EAAG4oB,EAAK,SAAW,CAAC,EAClC5oB,EAAE,YAAY,EAAG,CAAC,EAClBw3E,GAAe5uD,EAAK,MAAO5oB,CAAC,EAC5B,IAAI0uF,EAAS,EACb,OAAG9lE,EAAK,QAAU,UAAS8lE,EAAS,GACjC9lE,EAAK,QAAU,UAAS8lE,EAAS,GACpC1uF,EAAE,YAAY,EAAG0uF,CAAM,EACvB/Z,GAAmB/rD,EAAK,KAAM5oB,CAAC,EACxBA,EAAE,OAASA,EAAE,EAAIA,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAC3C,CAGA,IAAI2uF,GAAkB,CACrB,OACA,QACA,aACA,WACA,YACA,iBACA,eACA,WACA,SACA,WACA,cACA,kBACA,gBACA,YACA,UACA,YACA,eACA,UACA,UACD,EACIC,GAEAC,GAAgB3d,GACpB,SAAS4d,GAAc78B,EAAMjyD,EAAG,CAC3BA,IAAGA,EAAI8/D,GAAQ,EAAE,EAAI,EAAE,EAAI,GAAG,CAAC,GAC/B8uB,KAAqBA,GAAuBtjB,GAAMqjB,EAAe,GACrE,IAAII,EAAiBH,GAAoB38B,EAAK,WAAW,EACtD88B,GAAO,OAAMA,EAAM,IACtB/uF,EAAE,YAAY,EAAG+uF,CAAG,EACpB,IAAI36F,EAAI,EACR,GAAG26F,GAAO,GAMT,IAJAvX,GAAe,CAAC,KAAK,CAAC,EAAGx3E,CAAC,EAE1Bw3E,GAAe,CAAC,KAAK,CAAC,EAAGx3E,CAAC,EAEpB5L,EAAI,GAAI,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,MAC/B,CACN,KAAM5L,EAAI,EAAG,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,EAEpC,KAAM5L,EAAI,GAAI,EAAEA,EAAG4L,EAAE,YAAY,EAAG,CAAC,CASrC,CACD,OAAOA,EAAE,OAASA,EAAE,EAAIA,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAC3C,CAGA,SAASgvF,GAAYpyG,EAAM2rB,EAAmB,CAC7C,IAAI60D,EAAMxgF,EAAK,EAAI2rB,EACf0mF,EAAaryG,EAAK,WAAW,CAAC,EAC9BsyG,EAAOtyG,EAAK,WAAW,CAAC,EAC5B,OAAAA,EAAK,EAAIwgF,EACF,CAAC,KAAK6xB,EAAY,SAASC,CAAI,CACvC,CACA,SAASC,GAAYvyG,EAAM6iG,EAAOz/E,EAAG,CAChCA,IAAGA,EAAI8/D,GAAQ,EAAE,GACrB9/D,EAAE,YAAY,EAAGy/E,GAAO,CAAC,EACzBz/E,EAAE,YAAY,EAAGpjB,EAAK,UAAU,CAAC,EACjCojB,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClB,IAAIovF,EAAO,EACX,OAAApvF,EAAE,YAAY,EAAGovF,CAAI,EACrBpvF,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAGA,SAASqvF,GAAWzyG,EAAMojB,EAAG,CAC5B,OAAIA,IAAGA,EAAI8/D,GAAQ,EAAE,GACrB9/D,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAEA,IAAIsvF,GAAkBpe,GACtB,SAASqe,GAAgB7rD,EAAQ1jC,EAAG,CACnC,OAAIA,IAAGA,EAAI8/D,GAAQ,EAAE,GACrB9/D,EAAE,YAAY,EAAG,CAAC,EAClBqvF,GAAW,KAAMrvF,CAAC,EAClBqvF,GAAW,KAAMrvF,CAAC,EAClBqvF,GAAW,KAAMrvF,CAAC,EAClBqvF,GAAW,KAAMrvF,CAAC,EAClBqvF,GAAW,KAAMrvF,CAAC,EACXA,EAAE,OAASA,EAAE,EAAIA,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAC3C,CAGA,SAASwvF,GAAe53F,EAAOoI,EAAG,CACjC,OAAIA,IAAGA,EAAI8/D,GAAQ,GAAG,EAAE,EAAE,GAC1B9/D,EAAE,YAAY,EAAGpI,EAAM,IAAI,EAC3BoI,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAACpI,EAAM,SAAS,EACjCoI,EAAE,YAAY,EAAG,CAAC,EAClB+1E,GAA2Bn+E,EAAM,MAAQ,GAAIoI,CAAC,EACvCA,EAAE,OAASA,EAAE,EAAIA,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAC3C,CAGA,SAASyvF,GAA0B1vB,EAAK2vB,EAAeC,EAAe,CACrE,IAAI3vF,EAAI8/D,GAAQ,IAAS,EACzB,OAAA9/D,EAAE,YAAY,EAAG+/D,CAAG,EACpBgW,GAA2B2Z,EAAe1vF,CAAC,EAC3C+1E,GAA2B4Z,EAAe3vF,CAAC,EACpCA,EAAE,OAASA,EAAE,EAAIA,EAAE,MAAM,EAAGA,EAAE,CAAC,EAAIA,CAC3C,CAiEA,SAAS4vF,GAAele,EAAIic,EAAkB,CAC7C,GAAIA,EACJ,KAAI5tB,EAAM,EACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAO,GAAgB,GAAG,CAAC,EAAE,QAAQ,SAAS5pF,EAAG,CAEvE,QAAQ,EAAIA,EAAE,CAAC,EAAG,GAAKA,EAAE,CAAC,EAAG,EAAE,EAAMw3G,EAAG,CAAC,GAAK,MAAM,EAAE5tB,CACxD,CAAE,EAEEA,GAAO,IACV0R,GAAaC,EAAI,IAA2B8C,GAAezU,CAAG,CAAC,EAC/D,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAO,GAAgB,GAAG,CAAC,EAAE,QAAQ,SAAS5pF,EAAG,CAEvE,QAAQ,EAAIA,EAAE,CAAC,EAAG,GAAKA,EAAE,CAAC,EAAG,EAAE,EAAMw3G,EAAG,CAAC,GAAK,MAAMlc,GAAaC,EAAI,GAAqBwc,GAAa,EAAGP,EAAG,CAAC,CAAC,CAAC,CAClH,CAAE,EACDlc,GAAaC,EAAI,MAClB,CAEA,SAASme,GAAgBne,EAAgB,CACxC,IAAI3R,EAAM,EAGV0R,GAAaC,EAAI,IAA4B8C,GAAezU,CAAG,CAAC,EAChE0R,GAAaC,EAAI,GAAsB8c,GAAc,CACpD,GAAG,GACH,MAAO,CAAC,MAAM,CAAC,EACf,KAAM,UACN,OAAQ,EACR,OAAQ,OACR,CAAA,CAAC,EAEF/c,GAAaC,EAAI,IAClB,CAEA,SAASoe,GAAgBpe,EAAgB,CACxC,IAAI3R,EAAM,EAGV0R,GAAaC,EAAI,IAA4B8C,GAAezU,CAAG,CAAC,EAChE0R,GAAaC,EAAI,GAAsBod,GAAc,CAAC,YAAY,MAAM,CAAC,CAAC,EAC1Erd,GAAaC,EAAI,GAAsBod,GAAc,CAAC,YAAY,SAAS,CAAC,CAAC,EAE7Erd,GAAaC,EAAI,IAClB,CAEA,SAASqe,GAAkBre,EAAgB,CAC1C,IAAI3R,EAAM,EAGV0R,GAAaC,EAAI,IAA8B8C,GAAezU,CAAG,CAAC,EAClE0R,GAAaC,EAAI,GAAwB6d,GAAkB,CAAC,EAE5D9d,GAAaC,EAAI,IAClB,CAEA,SAASse,GAAuBte,EAAgB,CAC/C,IAAI3R,EAAM,EACV0R,GAAaC,EAAI,IAAmC8C,GAAezU,CAAG,CAAC,EACvE0R,GAAaC,EAAI,GAAoByd,GAAY,CAChD,SAAU,EACV,OAAU,EACV,OAAU,EACV,SAAU,CACZ,EAAI,KAAM,CAAC,EAEV1d,GAAaC,EAAI,IAClB,CAEA,SAASue,GAAkBve,EAAI90F,EAAM,CACpC60F,GAAaC,EAAI,IAA8B8C,GAAe53F,EAAK,MAAM,CAAC,EAC1EA,EAAK,QAAQ,SAAS3T,EAAG,CAAEwoG,GAAaC,EAAI,GAAoByd,GAAYlmH,EAAE,CAAC,CAAC,CAAI,CAAA,EAEpFwoG,GAAaC,EAAI,IAClB,CAEA,SAASwe,GAAiBxe,EAAgB,CACzC,IAAI3R,EAAM,EAEV0R,GAAaC,EAAI,IAA6B8C,GAAezU,CAAG,CAAC,EACjE0R,GAAaC,EAAI,GAAuB8d,GAAe,CACtD,KAAK,EACL,UAAU,EACV,KAAK,QACL,CAAA,CAAC,EAEF/d,GAAaC,EAAI,IAClB,CAEA,SAASye,GAAeze,EAAgB,CACvC,IAAI3R,EAAM,EAEV0R,GAAaC,EAAI,IAA2B8C,GAAezU,CAAG,CAAC,EAE/D0R,GAAaC,EAAI,IAClB,CAEA,SAAS0e,GAAsB1e,EAAgB,CAC9C,IAAI3R,EAAM,EAEV0R,GAAaC,EAAI,IAAkC+d,GAA0B1vB,EAAK,oBAAqB,mBAAmB,CAAC,EAE3H0R,GAAaC,EAAI,IAClB,CAQA,SAAS2e,GAAc7R,EAAIjoE,EAAM,CAChC,IAAIm7D,EAAKP,KACT,OAAAM,GAAaC,EAAI,KACjBke,GAAele,EAAI8M,EAAG,GAAG,EACzBqR,GAAgBne,CAAM,EACtBoe,GAAgBpe,CAAM,EACtBqe,GAAkBre,CAAM,EACxBse,GAAuBte,CAAM,EAC7Bue,GAAkBve,EAAIn7D,EAAK,OAAO,EAClC25E,GAAiBxe,CAAM,EACvBye,GAAeze,CAAM,EACrB0e,GAAsB1e,CAAM,EAG5BD,GAAaC,EAAI,KACVA,EAAG,KACX,CA6GA,SAAS4e,GAAYC,EAAQh6E,EAAiB,CAC7C,GAAGA,GAAQA,EAAK,UAAW,OAAOA,EAAK,UACvC,GAAGg6E,GAAU,OAAOA,EAAO,KAAO,SAAU,OAAOA,EAAO,IAC1D,IAAIvwF,EAAI,CAAC+sE,EAAU,EACnB,OAAA/sE,EAAEA,EAAE,MAAM,EAAI,gGACdA,EAAEA,EAAE,MAAM,EAAK,oBAEfA,EAAEA,EAAE,MAAM,EAAM,8BAChBA,EAAEA,EAAE,MAAM,EAAO,+DACjBA,EAAEA,EAAE,MAAM,EAAO,2DACjBA,EAAEA,EAAE,MAAM,EAAO,2CACjBA,EAAEA,EAAE,MAAM,EAAO,2CACjBA,EAAEA,EAAE,MAAM,EAAO,mDACjBA,EAAEA,EAAE,MAAM,EAAO,mDACjBA,EAAEA,EAAE,MAAM,EAAO,mDACjBA,EAAEA,EAAE,MAAM,EAAO,mDACjBA,EAAEA,EAAE,MAAM,EAAO,mDACjBA,EAAEA,EAAE,MAAM,EAAO,mDACjBA,EAAEA,EAAE,MAAM,EAAO,+CACjBA,EAAEA,EAAE,MAAM,EAAO,qDACjBA,EAAEA,EAAE,MAAM,EAAM,iBAEhBA,EAAEA,EAAE,MAAM,EAAM,+BAChBA,EAAEA,EAAE,MAAM,EAAO,gBACjBA,EAAEA,EAAE,MAAM,EAAQ,gCAClBA,EAAEA,EAAE,MAAM,EAAQ,sBAClBA,EAAEA,EAAE,MAAM,EAAQ,sBAClBA,EAAEA,EAAE,MAAM,EAAQ,8CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,wCAClBA,EAAEA,EAAE,MAAM,EAAQ,0CAClBA,EAAEA,EAAE,MAAM,EAAQ,qDAClBA,EAAEA,EAAE,MAAM,EAAQ,qDAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,+CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,8CAClBA,EAAEA,EAAE,MAAM,EAAQ,0DAClBA,EAAEA,EAAE,MAAM,EAAQ,wDAClBA,EAAEA,EAAE,MAAM,EAAQ,wDAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,uDAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,+CAClBA,EAAEA,EAAE,MAAM,EAAQ,kDAClBA,EAAEA,EAAE,MAAM,EAAQ,qDAClBA,EAAEA,EAAE,MAAM,EAAQ,qDAClBA,EAAEA,EAAE,MAAM,EAAQ,sDAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAO,iBACjBA,EAAEA,EAAE,MAAM,EAAO,gBACjBA,EAAEA,EAAE,MAAM,EAAQ,gCAClBA,EAAEA,EAAE,MAAM,EAAQ,sBAClBA,EAAEA,EAAE,MAAM,EAAQ,sBAClBA,EAAEA,EAAE,MAAM,EAAQ,8CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,wCAClBA,EAAEA,EAAE,MAAM,EAAQ,0CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,8CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,8CAClBA,EAAEA,EAAE,MAAM,EAAQ,0DAClBA,EAAEA,EAAE,MAAM,EAAQ,wDAClBA,EAAEA,EAAE,MAAM,EAAQ,wDAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,4CAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,uDAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAQ,+CAClBA,EAAEA,EAAE,MAAM,EAAQ,kDAClBA,EAAEA,EAAE,MAAM,EAAQ,qDAClBA,EAAEA,EAAE,MAAM,EAAQ,2CAClBA,EAAEA,EAAE,MAAM,EAAQ,sDAClBA,EAAEA,EAAE,MAAM,EAAQ,6CAClBA,EAAEA,EAAE,MAAM,EAAO,iBACjBA,EAAEA,EAAE,MAAM,EAAM,kBAEhBA,EAAEA,EAAE,MAAM,EAAM,8BAChBA,EAAEA,EAAE,MAAM,EAAO,mBACjBA,EAAEA,EAAE,MAAM,EAAQ,wDAClBA,EAAEA,EAAE,MAAM,EAAQ,gCAClBA,EAAEA,EAAE,MAAM,EAAS,YACnBA,EAAEA,EAAE,MAAM,EAAU,4GACpBA,EAAEA,EAAE,MAAM,EAAU,gHACpBA,EAAEA,EAAE,MAAM,EAAU,iHACpBA,EAAEA,EAAE,MAAM,EAAS,aACnBA,EAAEA,EAAE,MAAM,EAAS,qCACnBA,EAAEA,EAAE,MAAM,EAAQ,gBAClBA,EAAEA,EAAE,MAAM,EAAQ,gCAClBA,EAAEA,EAAE,MAAM,EAAS,YACnBA,EAAEA,EAAE,MAAM,EAAU,oIACpBA,EAAEA,EAAE,MAAM,EAAU,wIACpBA,EAAEA,EAAE,MAAM,EAAS,aACnBA,EAAEA,EAAE,MAAM,EAAS,qCACnBA,EAAEA,EAAE,MAAM,EAAQ,gBAClBA,EAAEA,EAAE,MAAM,EAAO,oBACjBA,EAAEA,EAAE,MAAM,EAAO,iBACjBA,EAAEA,EAAE,MAAM,EAAQ,mMAClBA,EAAEA,EAAE,MAAM,EAAQ,yIAClBA,EAAEA,EAAE,MAAM,EAAQ,yIAClBA,EAAEA,EAAE,MAAM,EAAO,kBACjBA,EAAEA,EAAE,MAAM,EAAO,qBACjBA,EAAEA,EAAE,MAAM,EAAQ,kBAClBA,EAAEA,EAAE,MAAM,EAAS,gBACnBA,EAAEA,EAAE,MAAM,EAAU,oJACpBA,EAAEA,EAAE,MAAM,EAAS,iBACnBA,EAAEA,EAAE,MAAM,EAAQ,mBAClBA,EAAEA,EAAE,MAAM,EAAQ,kBAClBA,EAAEA,EAAE,MAAM,EAAS,gBACnBA,EAAEA,EAAE,MAAM,EAAU,oJACpBA,EAAEA,EAAE,MAAM,EAAS,iBACnBA,EAAEA,EAAE,MAAM,EAAQ,mBAClBA,EAAEA,EAAE,MAAM,EAAQ,kBAClBA,EAAEA,EAAE,MAAM,EAAS,gBACnBA,EAAEA,EAAE,MAAM,EAAU,oJACpBA,EAAEA,EAAE,MAAM,EAAS,iBACnBA,EAAEA,EAAE,MAAM,EAAS,6LACnBA,EAAEA,EAAE,MAAM,EAAS,mDACnBA,EAAEA,EAAE,MAAM,EAAQ,mBAClBA,EAAEA,EAAE,MAAM,EAAO,sBACjBA,EAAEA,EAAE,MAAM,EAAO,qBACjBA,EAAEA,EAAE,MAAM,EAAQ,wDAClBA,EAAEA,EAAE,MAAM,EAAQ,gCAClBA,EAAEA,EAAE,MAAM,EAAS,YACnBA,EAAEA,EAAE,MAAM,EAAU,4GACpBA,EAAEA,EAAE,MAAM,EAAU,sIACpBA,EAAEA,EAAE,MAAM,EAAU,kHACpBA,EAAEA,EAAE,MAAM,EAAS,aACnBA,EAAEA,EAAE,MAAM,EAAS,2FACnBA,EAAEA,EAAE,MAAM,EAAQ,gBAClBA,EAAEA,EAAE,MAAM,EAAQ,gCAClBA,EAAEA,EAAE,MAAM,EAAS,YACnBA,EAAEA,EAAE,MAAM,EAAU,4GACpBA,EAAEA,EAAE,MAAM,EAAU,kHACpBA,EAAEA,EAAE,MAAM,EAAS,aACnBA,EAAEA,EAAE,MAAM,EAAS,yFACnBA,EAAEA,EAAE,MAAM,EAAQ,gBAClBA,EAAEA,EAAE,MAAM,EAAO,sBACjBA,EAAEA,EAAE,MAAM,EAAM,iBAChBA,EAAEA,EAAE,MAAM,EAAK,qBAEfA,EAAEA,EAAE,MAAM,EAAK,qBACfA,EAAEA,EAAE,MAAM,EAAM,YAChBA,EAAEA,EAAE,MAAM,EAAO,mSACjBA,EAAEA,EAAE,MAAM,EAAM,aAChBA,EAAEA,EAAE,MAAM,EAAM,YAChBA,EAAEA,EAAE,MAAM,EAAO,mSACjBA,EAAEA,EAAE,MAAM,EAAM,aAChBA,EAAEA,EAAE,MAAM,EAAK,sBACfA,EAAEA,EAAE,MAAM,EAAK,yBACfA,EAAEA,EAAE,MAAM,EAAI,aACPA,EAAE,KAAK,EAAE,CACjB,CA4FA,SAASwwF,GAAiB5zG,EAAM2rB,EAAQ,CACtC,MAAO,CACL,MAAO3rB,EAAK,WAAW,CAAC,EACxB,QAASA,EAAK,WAAW,CAAC,EAC1B,KAAM63F,GAAmB73F,CAAgB,CAC7C,CACA,CACA,SAAS6zG,GAAiB7zG,EAAM,CAC9B,IAAIojB,EAAI8/D,GAAQ,GAAK,EAAIljF,EAAK,KAAK,MAAM,EACzC,OAAAojB,EAAE,YAAY,EAAGpjB,EAAK,KAAK,EAC3BojB,EAAE,YAAY,EAAGpjB,EAAK,OAAO,EAC7B+3F,GAAmB/3F,EAAK,KAAMojB,CAAC,EACxBA,EAAE,MAAM,EAAGA,EAAE,CAAC,CACvB,CACA,SAAS0wF,GAAa9zG,EAAM,CAG1B,QAFI60E,EAAM,CAAA,EACNsO,EAAMnjF,EAAK,WAAW,CAAC,EACpBmjF,KAAQ,GACbtO,EAAI,KAAK,CAAC70E,EAAK,WAAW,CAAC,EAAGA,EAAK,WAAW,CAAC,CAAC,CAAC,EACnD,OAAO60E,CACT,CACA,SAASk/B,GAAaC,EAAK,CACzB,IAAI5wF,EAAI8/D,GAAQ,EAAI,EAAI8wB,EAAI,MAAM,EAClC5wF,EAAE,YAAY,EAAG4wF,EAAI,MAAM,EAC3B,QAASppH,EAAI,EAAGA,EAAIopH,EAAI,OAAQ,EAAEppH,EAChCw4B,EAAE,YAAY,EAAG4wF,EAAIppH,CAAC,EAAE,CAAC,CAAC,EAC1Bw4B,EAAE,YAAY,EAAG4wF,EAAIppH,CAAC,EAAE,CAAC,CAAC,EAE5B,OAAOw4B,CACT,CACA,SAAS6wF,GAAoB9wB,EAAKj1F,EAAM,CACtC,IAAIk1B,EAAI8/D,GAAQ,EAAI,EAAIh1F,EAAK,MAAM,EACnC,OAAAk1B,EAAE,YAAY,EAAG+/D,CAAG,EACpB4U,GAAmB7pG,EAAMk1B,CAAC,EACnBA,EAAE,MAAM,EAAGA,EAAE,CAAC,CACvB,CACA,SAAS8wF,GAAoBl0G,EAAM,CACjC,OAAAA,EAAK,GAAK,EACHA,EAAK,WAAW,CAAC,GAAK,CAC/B,CACA,SAASm0G,GAAoBhxB,EAAKixB,EAAI,CACpC,IAAIhxF,EAAI8/D,GAAQ,CAAC,EACjB,OAAA9/D,EAAE,YAAY,EAAG+/D,CAAG,EACpB//D,EAAE,YAAY,EAAQ,CAAK,EACpBA,CACT,CA0CA,SAASixF,IAAmB,CAC1B,IAAIvf,EAAKP,KACT,OAAAM,GAAaC,EAAI,GAAG,EACpBD,GAAaC,EAAI,IAAK8C,GAAe,CAAC,CAAC,EACvC/C,GAAaC,EAAI,IAAK+e,GAAiB,CACrC,KAAM,SACN,QAAS,KACT,MAAO,UACR,CAAA,CAAC,EACFhf,GAAaC,EAAI,GAAG,EACpBD,GAAaC,EAAI,IAAKmf,GAAoB,EAAG,QAAQ,CAAC,EACtDpf,GAAaC,EAAI,EAAE,EACnBD,GAAaC,EAAI,GAAI8C,GAAe,GAAG,CAAC,EACxC/C,GAAaC,EAAI,KAAM8C,GAAe,CAAC,CAAC,EACxC/C,GAAaC,EAAI,KAAM6K,GAAY,CAAC,CAAC,EACrC9K,GAAaC,EAAI,EAAE,EACnBD,GAAaC,EAAI,EAAE,EACnBD,GAAaC,EAAI,GAAG,EACpBD,GAAaC,EAAI,IAAKqf,GAAoB,CAAO,CAAC,EAClDtf,GAAaC,EAAI,GAAIif,GAAa,CAAC,CAAC,EAAG,CAAC,CAAC,CAAC,CAAC,EAC3Clf,GAAaC,EAAI,GAAG,EACpBD,GAAaC,EAAI,GAAG,EACbA,EAAG,KACZ,CAiFA,SAASwf,IAAmB,CAC1B,IAAIlxF,EAAI,CAAC+sE,EAAU,EACnB,OAAA/sE,EAAE,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAm2B,EACn2BA,EAAE,KAAK,EAAE,CAClB,CAsBA,SAASmxF,GAAwBv0G,EAAM,CACtC,IAAI60E,EAAM,CAAA,EACVA,EAAI,EAAI70E,EAAK,WAAW,CAAC,EACzB,IAAIi1F,EAAO,CAAA,EACXA,EAAK,EAAIj1F,EAAK,WAAW,CAAC,EAC1Bi1F,EAAK,EAAIj1F,EAAK,WAAW,CAAC,EAC1B60E,EAAI,EAAIwgB,GAAYJ,CAAI,EACxB,IAAI3U,EAAQtgF,EAAK,WAAW,CAAC,EAC7B,OAAGsgF,EAAQ,IAAKzL,EAAI,EAAI,KACrByL,EAAQ,IAAKzL,EAAI,EAAI,KACjBA,CACR,CA2FA,IAAI2/B,GAAW,KACf,SAASC,GAAmB7X,EAAgB8X,EAAU,CAYrD,QAXIC,EAAQ,CAAC,MAAO,KAAK,EAErBC,EAAO,CAAC,SAASD,EAAM,CAAC,EAAEA,EAAM,CAAC,EAAEA,EAAM,CAAC,EAAEA,EAAM,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,EACpEvxF,EAAI,CACPsuE,GAAU,MAAO,KAAM,CAAE,UAAWM,GAAO,EAAG,UAAWA,GAAO,EAAG,UAAWA,GAAO,EAAG,WAAYA,GAAO,EAAE,CAAE,EAAE,QAAQ,MAAM,GAAG,EAClIN,GAAU,gBAAiBA,GAAU,UAAW,KAAM,CAAC,QAAQ,OAAQ,KAAOkL,CAAG,CAAC,EAAG,CAAC,QAAQ,MAAM,CAAC,EACrGlL,GAAU,cAAe,CACxBA,GAAU,WAAY,KAAM,CAAC,UAAU,OAAO,CAAC,EAC/CA,GAAU,SAAU,KAAM,CAAC,gBAAgB,IAAK,gBAAgB,MAAM,CAAC,CAC1E,EAAI,KAAK,EAAE,EAAG,CAAC,GAAG,cAAe,QAAQ,IAAK,UAAUijB,EAAM,KAAK,GAAG,EAAE,KAAKC,CAAI,CAAC,CAClF,EACOJ,GAAW5X,EAAM,KAAM4X,IAAY,IAEzC,OAAAE,EAAS,QAAQ,SAASzwE,EAAG,CAC7B,IAAI53C,EAAI8pG,GAAYlyD,EAAE,CAAC,CAAC,EACpB4wE,EAAkB,CAAC,OAAS,UAAW,KAAO,UAAU,EACzDA,EAAS,MAAQ,aAAYA,EAAS,MAAQ,QACjD,IAAIC,EAAWD,EAAS,MAAQ,WAAanjB,GAAU,SAAU,KAAM,CAAC,KAAK,mBAAoB,QAAQ,MAAM,CAAC,EAAI,KAChHqjB,EAAUrjB,GAAU,SAAUojB,EAAUD,CAAQ,EAEhDG,EAAW,CAAC,GAAG,IAAK,SAAW,GAAG,EACtC,EAAER,GAEFpxF,EAAIA,EAAE,OAAO,CACb,WAAaquE,GAAW,CACvB,GAAG,WAAa+iB,GAChB,KAAK,eACL,MAAM,yFAA2FvwE,EAAE,CAAC,EAAE,OAAS,qBAAuB,IACtI,UAAU,UACV,YAAY,SACZ,CAAA,EAAI,IACJ8wE,EACArjB,GAAU,WAAY,KAAMsjB,CAAO,EACnCtjB,GAAU,SAAU,KAAM,CAAC,gBAAgB,MAAM,CAAC,EAClD,6DACA,mCACC,qBACA,qBAEAF,GAAS,WAAY,CAACnlG,EAAE,EAAE,EAAG,EAAGA,EAAE,EAAE,EAAG,EAAGA,EAAE,EAAE,EAAG,GAAIA,EAAE,EAAE,EAAG,EAAE,EAAE,KAAK,GAAG,CAAC,EACzEmlG,GAAS,aAAc,OAAO,EAC9BA,GAAS,QAAS,OAAOnlG,EAAE,CAAC,CAAC,EAC7BmlG,GAAS,WAAY,OAAOnlG,EAAE,CAAC,CAAC,EAChC43C,EAAE,CAAC,EAAE,OAAS,GAAK,eACpB,kBACD,YACD,CAAE,CAAI,CAAA,EACL7gB,EAAE,KAAK,QAAQ,EACRA,EAAE,KAAK,EAAE,CACjB,CAuEA,SAAS6xF,GAAmBj1G,EAAkB,CAC7C,IAAIojB,EAAI,CAAC+sE,GAAYuB,GAAU,WAAY,KAAM,CAAE,MAASK,GAAW,CAAC,CAAC,CAAE,CAAC,EAExEmjB,EAA4B,CAAA,EAChC,OAAA9xF,EAAE,KAAK,WAAW,EAClBpjB,EAAK,QAAQ,SAASikC,EAAG,CAAEA,EAAE,CAAC,EAAE,QAAQ,SAAShS,EAAG,CAAE,IAAI1jC,EAAIiiG,GAAUv+D,EAAE,CAAC,EACvEijF,EAAQ,QAAQ3mH,CAAC,GAAK,KACxB2mH,EAAQ,KAAK3mH,CAAC,EACd60B,EAAE,KAAK,WAAa70B,EAAI,WAAW,GAEjC0jC,EAAE,GAAKA,EAAE,IAAMijF,EAAQ,QAAQ,MAAQjjF,EAAE,EAAE,GAAK,KAClDijF,EAAQ,KAAK,MAAQjjF,EAAE,EAAE,EACzB7O,EAAE,KAAK,cAAqB6O,EAAE,GAAK,WAAW,EAEjD,CAAE,CAAI,CAAA,EACFijF,EAAQ,QAAU,IAAKA,EAAQ,KAAK,SAAS,EAAG9xF,EAAE,KAAK,0BAA0B,GACpFA,EAAE,KAAK,YAAY,EACnBA,EAAE,KAAK,eAAe,EACtBpjB,EAAK,QAAQ,SAAS8+B,EAAG,CAExB,IAAIq2E,EAAa,EAAGC,EAAK,GAOzB,GANGt2E,EAAE,CAAC,EAAE,CAAC,GAAKA,EAAE,CAAC,EAAE,CAAC,EAAE,GAAKA,EAAE,CAAC,EAAE,CAAC,EAAE,GAAIq2E,EAAaD,EAAQ,QAAQ,MAAQp2E,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EACjFA,EAAE,CAAC,EAAE,QAAQ,SAASzyC,EAAG,CAC1BA,EAAE,IAAG8oH,EAAaD,EAAQ,QAAQ1kB,GAAUnkG,EAAE,CAAC,CAAC,GACnD+oH,EAAG,KAAK/oH,EAAE,GAAG,EAAE,CAClB,CAAG,EACD+2B,EAAE,KAAK,iBAAmB0b,EAAE,CAAC,EAAI,eAAiBq2E,EAAa,UAAU,EACtEC,EAAG,QAAU,EAAGhyF,EAAE,KAAKouE,GAAS,IAAKhB,GAAU4kB,EAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MACxD,CAGJ,QADIpmG,EAAI;AAAA,MAAoBomG,EAAG,CAAC,EAAK;AAAA,EAC7BxqH,EAAI,EAAGA,EAAIwqH,EAAG,OAAQ,EAAExqH,EAAGokB,GAAK;AAAA,MAAiBomG,EAAGxqH,CAAC,EAAI;AAAA,EACjEw4B,EAAE,KAAKouE,GAAS,IAAKhB,GAAUxhF,CAAC,CAAC,CAAC,CAClC,CACDoU,EAAE,KAAK,mBAAmB,CAC5B,CAAE,EACDA,EAAE,KAAK,gBAAgB,EACpBA,EAAE,OAAO,IAAKA,EAAEA,EAAE,MAAM,EAAK,cAAgBA,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,QAAQ,KAAK,GAAG,GACnEA,EAAE,KAAK,EAAE,CACjB,CAyCA,SAASiyF,GAAgBX,EAAUY,EAAQ37E,EAAM,CAChD,IAAIvW,EAAI,CAAC+sE,GAAYuB,GAAU,mBAAoB,KAAM,CAAE,MAASI,GAAM,KAAO,CAAA,EAAE,QAAQ,QAAS,GAAG,CAAC,EACxG,OAAA4iB,EAAS,QAAQ,SAASa,EAAM,CAC/B,IAAIC,EAAS,IACZD,EAAK,CAAC,GAAK,CAAA,GAAI,QAAQ,SAASlpH,EAAGw3B,EAAK,CACxC,GAAG,CAACx3B,EAAE,EAAG,CAAE,OAAOA,EAAE,GAAI,MAAS,CAC9BA,EAAE,GAAKipH,EAAO,QAAQjpH,EAAE,CAAC,GAAK,IAAIipH,EAAO,KAAKjpH,EAAE,CAAC,EACpD,IAAIopH,EAAS,CACZ,IAAKF,EAAK,CAAC,EACX,GAAI,6BAA+B,eAAiB57E,EAAK,QAAQ,MAAM,GAAG,EAAI,GAClF,EACM9V,GAAO,EAAG2xF,EAASC,EAAO,GACxBA,EAAO,SAAWD,EACvBnpH,EAAE,GAAKopH,EAAO,GACXppH,EAAE,IAAGopH,EAAO,SAAW,6BAA+B,eAAiBH,EAAO,QAAQjpH,EAAE,CAAC,GAAG,MAAM,GAAG,EAAI,KAC5G+2B,EAAE,KAAKsuE,GAAU,kBAAmBF,GAAS,OAAQnlG,EAAE,GAAG,EAAE,EAAGopH,CAAM,CAAC,CACzE,CAAG,CACH,CAAE,EACDryF,EAAE,KAAK,qBAAqB,EACrBA,EAAE,KAAK,EAAE,CACjB,CA+BA,SAASsyF,GAAiBJ,EAAkB,CAC3C,IAAIlyF,EAAI,CAAC+sE,GAAYuB,GAAU,aAAc,KAAM,CAClD,MAASI,GAAM,MACf,UAAWC,GAAW,CAAC,CACvB,CAAA,EAAE,QAAQ,QAAS,GAAG,CAAC,EACxB,OAAAujB,EAAO,QAAQ,SAASK,EAAQ9xF,EAAK,CACpCT,EAAE,KAAKsuE,GAAU,SAAU,KAAM,CAChC,YAAaikB,EACb,GAAI,6BAA+B,eAAiB9xF,GAAK,MAAM,GAAG,EAAI,IACtE,OAAQ8xF,EACR,WAAY,MACZ,CAAA,CAAC,CACJ,CAAE,EACDvyF,EAAE,KAAK,eAAe,EACfA,EAAE,KAAK,EAAE,CACjB,CAEA,SAASwyF,GAAsB51G,EAAM,CACpC,IAAI60E,EAAM,CAAA,EACVA,EAAI,QAAU70E,EAAK,WAAW,CAAC,EAC/B,IAAI61G,EAAM9b,GAAmB/5F,CAAQ,EACrC,OAAA60E,EAAI,IAAMghC,EAAI,EACdhhC,EAAI,IAAMwgB,GAAYwgB,EAAI,CAAC,EAC3B71G,EAAK,GAAK,GACH60E,CACR,CACA,SAASihC,GAAsB91G,EAAMojB,EAAG,CACvC,OAAGA,GAAK,OAAMA,EAAI8/D,GAAQ,EAAE,GAC5B9/D,EAAE,YAAY,EAAGpjB,EAAK,CAAC,EAAE,OAAO,EAChCg6F,GAAoBh6F,EAAK,CAAC,EAAYojB,CAAC,EACvCA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EACXA,CACR,CAGA,IAAI2yF,GAAyBle,GAC7B,SAASme,GAAuBh2G,EAAM,CAAE,OAAO+3F,GAAmB/3F,EAAK,MAAM,EAAG,EAAE,CAAC,CAAI,CA0CvF,SAASi2G,GAAmBj2G,EAAkB,CAC7C,IAAI80F,EAAKP,KACL2gB,EAA4B,CAAA,EAChC,OAAArgB,GAAaC,EAAI,KAEjBD,GAAaC,EAAI,KACjB90F,EAAK,QAAQ,SAASk2G,EAAS,CAC9BA,EAAQ,CAAC,EAAE,QAAQ,SAAS7pH,EAAG,CAC3B6oH,EAAQ,QAAQ7oH,EAAE,CAAC,EAAI,KAC1B6oH,EAAQ,KAAK7oH,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAC5BwoG,GAAaC,EAAI,IAA+BkhB,GAAuB3pH,EAAE,CAAC,CAAC,EAC9E,CAAG,CACH,CAAE,EACDwoG,GAAaC,EAAI,KAEjBD,GAAaC,EAAI,KACjB90F,EAAK,QAAQ,SAASk2G,EAAS,CAC9BA,EAAQ,CAAC,EAAE,QAAQ,SAAS7pH,EAAG,CAC9BA,EAAE,QAAU6oH,EAAQ,QAAQ7oH,EAAE,CAAC,EAC/B,IAAIg4C,EAAQ,CAAC,EAAE8xD,GAAY+f,EAAQ,CAAC,CAAC,EAAE,EAAE/f,GAAY+f,EAAQ,CAAC,CAAC,CAAC,EAChErhB,GAAaC,EAAI,IAA8BghB,GAAsB,CAACzxE,EAAOh4C,CAAC,CAAC,CAAC,EAC7EA,EAAE,GAAKA,EAAE,EAAE,OAAS,GAAGwoG,GAAaC,EAAI,IAA6B4D,GAAqBrsG,CAAC,CAAC,EAC/FwoG,GAAaC,EAAI,KACjB,OAAOzoG,EAAE,OACZ,CAAG,CACH,CAAE,EACDwoG,GAAaC,EAAI,KAEjBD,GAAaC,EAAI,KACVA,EAAG,KACX,CAYA,SAASqhB,GAAa9xB,EAAK+xB,EAAK,CAC9BA,EAAI,UAAU,QAAQ,SAASn6G,EAAGrR,EAAG,CACnC,GAAIA,GAAK,EAET,KAAIyrH,EAAUp6G,EAAE,QAAQ,aAAc,oBAAoB,EACtDo6G,EAAQ,MAAM,EAAE,IAAM,KACxB72B,GAAI,MAAM,QAAQ6E,EAAKgyB,EAASD,EAAI,UAAUxrH,CAAC,EAAE,OAAO,EAC9D,CAAG,CACH,CACA,IAAI0rH,GAAU,CAAC,OAAQ,OAAQ,OAAQ,QAAS,KAAK,EAOjD5O,GAAyB,UAAU,CACtC,IAAI6O,EAAU,gFACVC,EAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,EAC/B,SAASC,EAAOr9B,EAAGC,EAAGC,EAAGC,EAAI,CAC5B,IAAIm9B,EAAO,GAAOC,EAAO,GAEtBr9B,EAAG,QAAU,EAAGq9B,EAAO,GAClBr9B,EAAG,OAAO,CAAC,GAAK,MAAOq9B,EAAO,GAAMr9B,EAAKA,EAAG,MAAM,EAAG,EAAE,GAE5DC,EAAG,QAAU,EAAGm9B,EAAO,GAClBn9B,EAAG,OAAO,CAAC,GAAK,MAAOm9B,EAAO,GAAMn9B,EAAKA,EAAG,MAAM,EAAG,EAAE,GAE/D,IAAIoG,EAAIrG,EAAG,OAAO,EAAE,SAASA,EAAG,EAAE,EAAE,EAAE,EAAGqJ,EAAIpJ,EAAG,OAAO,EAAE,SAASA,EAAG,EAAE,EAAE,EAAE,EAE3E,OAAGm9B,EAAM/zB,GAAK6zB,EAAO,EAAQ,EAAE7zB,EAC5Bg0B,EAAMh3B,GAAK62B,EAAO,EAAQ,EAAE72B,EACxBtG,GAAMq9B,EAAO,GAAK,KAAOjhB,GAAW9S,CAAC,GAAKg0B,EAAO,GAAK,KAAOjhB,GAAW/V,CAAC,CAChF,CACD,OAAO,SAAkBi3B,EAAiBxsG,EAA0B,CACnE,OAAAosG,EAASpsG,EACFwsG,EAAK,QAAQL,EAASE,CAAM,CACrC,CACA,IAEII,GAAY,iLACZzO,GAAyB,UAAU,CACtC,OAAO,SAAkBwO,EAAiBxsG,EAAsB,CAC/D,OAAOwsG,EAAK,QAAQC,GAAW,SAASC,EAAIz9B,EAAIC,EAAIC,EAAIw9B,EAAIC,EAAI,CAC/D,IAAI,EAAIlhB,GAAWvc,CAAE,GAAKD,EAAK,EAAIlvE,EAAK,GACpC7Q,EAAIo8F,GAAWqhB,CAAE,GAAKD,EAAK,EAAI3sG,EAAK,GACpCu1E,EAAKpmF,GAAK,EAAI,GAAMw9G,EAAsBx9G,EAAE,EAAnB,IAAMA,EAAI,IACnCopF,EAAK,GAAK,EAAI,GAAMrJ,EAAsB,EAAE,EAAnB,IAAM,EAAI,IACvC,OAAOD,EAAK,IAAMsG,EAAI,IAAMgD,CAC/B,CAAG,CACH,CACA,IAGA,SAASilB,GAAkBvpE,EAAcoM,EAA2B,CACnE,OAAOpM,EAAE,QAAQw4E,GAAW,SAASC,EAAIz9B,EAAIC,EAAIC,EAAIw9B,EAAIC,EAAI,CAC5D,OAAO39B,GAAIC,GAAI,IAAMA,EAAGC,EAAKkc,GAAWK,GAAWvc,CAAE,EAAE9uC,EAAM,CAAC,IAAIssE,GAAI,IAAMA,EAAGC,EAAKthB,GAAWC,GAAWqhB,CAAE,EAAIvsE,EAAM,CAAC,EACzH,CAAE,CACF,CASA,SAASqgE,GAAUzsE,EAA0B,CAC5C,OAAGA,EAAE,QAAU,CAEhB,CAKA,SAAS44E,GAAW72B,EAAM,CAAEA,EAAK,GAAG,CAAY,CAGhD,SAAS82B,GAAc92B,EAAMz0D,EAAQ,CACpC,IAAIt/B,EAAI+zF,EAAK,WAA6B,CAAC,EAC3C,MAAO,CAAC/zF,EAAI,MAASA,GAAK,GAAM,EAAIA,GAAK,GAAM,CAAC,CACjD,CAGA,SAAS8qH,GAAe/2B,EAAMz0D,EAAQgO,EAAM,CAC3C,IAAI1H,EAAI,EACR,GAAG0H,EAAM,CACR,GAAGA,EAAK,MAAQ,GAAKA,EAAK,MAAQ,EAAG,OAAOy9E,GAAqBh3B,CAAkB,EAC3EzmD,EAAK,MAAQ,KAAI1H,EAAI,EAC7B,CACD,IAAI14B,EAAE6mF,EAAK,WAAWnuD,CAAC,EAAG0tD,EAAES,EAAK,WAAWnuD,CAAC,EACzC5lC,EAAE6qH,GAAc92B,CAAO,EACvBuC,EAAEu0B,GAAc92B,CAAO,EAC3B,MAAO,CAAE,EAAE,CAAC,EAAE7mF,EAAG,EAAElN,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,EAAG,EAAE,CAAC,EAAEszF,EAAG,EAAEgD,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,CAAC,CACtF,CAEA,SAASy0B,GAAqBh3B,EAA0B,CACvD,IAAI7mF,EAAE29G,GAAc92B,CAAO,EAAGT,EAAEu3B,GAAc92B,CAAO,EACjD/zF,EAAE+zF,EAAK,WAAW,CAAC,EACnBuC,EAAEvC,EAAK,WAAW,CAAC,EACvB,MAAO,CAAE,EAAE,CAAC,EAAE7mF,EAAE,CAAC,EAAG,EAAElN,EAAG,KAAKkN,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,EAAG,EAAE,CAAC,EAAEomF,EAAE,CAAC,EAAG,EAAEgD,EAAG,KAAKhD,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,CAAC,CACtF,CAGA,SAAS03B,GAAkBj3B,EAAMz0D,EAAQgO,EAAM,CAC9C,GAAGA,EAAK,KAAO,EAAG,OAAOy9E,GAAqBh3B,CAAkB,EAChE,IAAI7mF,EAAE6mF,EAAK,WAAWzmD,EAAK,MAAQ,GAAK,EAAI,CAAC,EAAGgmD,EAAES,EAAK,WAAWzmD,EAAK,MAAQ,GAAK,EAAI,CAAC,EACrFttC,EAAE6qH,GAAc92B,CAAO,EACvBuC,EAAEu0B,GAAc92B,CAAO,EAC3B,MAAO,CAAE,EAAE,CAAC,EAAE7mF,EAAG,EAAElN,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,EAAG,EAAE,CAAC,EAAEszF,EAAG,EAAEgD,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,CAAC,CACtF,CAGA,SAAS20B,GAAcl3B,EAAMz0D,EAAQgO,EAAM,CAC1C,GAAGA,GAAQA,EAAK,MAAQ,GAAKA,EAAK,MAAQ,EAAG,OAAO49E,GAAoBn3B,CAAkB,EAC1F,IAAI7mF,EAAI6mF,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,GAAK,EAAI,CAAC,EACnDttC,EAAI6qH,GAAc92B,CAAO,EAC7B,MAAO,CAAC,EAAE7mF,EAAG,EAAElN,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,CAC1C,CACA,SAASkrH,GAAoBn3B,EAA0B,CACtD,IAAI7mF,EAAI29G,GAAc92B,CAAO,EACzB/zF,EAAI+zF,EAAK,WAAW,CAAC,EACzB,MAAO,CAAC,EAAE7mF,EAAE,CAAC,EAAG,EAAElN,EAAG,KAAKkN,EAAE,CAAC,EAAG,KAAKA,EAAE,CAAC,CAAC,CAC1C,CAGA,SAASi+G,GAAiBp3B,EAA0B,CACnD,IAAI7mF,EAAI6mF,EAAK,WAAW,CAAC,EACrB/zF,EAAI+zF,EAAK,WAAW,CAAC,EACzB,MAAO,CAAC,EAAE7mF,EAAG,EAAElN,EAAI,IAAM,QAAQ,CAAC,EAAEA,EAAI,OAAS,KAAKA,GAAG,GAAI,KAAKA,GAAG,GACtE,CAGA,SAASorH,GAAiBr3B,EAAMz0D,EAAQgO,EAAM,CAC7C,IAAIy7D,EAAOz7D,GAAQA,EAAK,KAAOA,EAAK,KAAO,EAC3C,GAAGy7D,GAAQ,GAAKA,GAAQ,EAAG,OAAOsiB,GAAuBt3B,CAAkB,EAC3E,IAAI7mF,EAAI6mF,EAAK,WAAWgV,GAAQ,GAAK,EAAI,CAAC,EACtCuiB,EAAKv3B,EAAK,WAAW,CAAC,EACtBs2B,GAAQiB,EAAK,QAAW,GAAIhB,GAAQgB,EAAK,QAAW,GAExD,GADAA,GAAM,MACHhB,GAAQ,EAAG,KAAMp9G,EAAI,QAASA,GAAK,QACtC,GAAGm9G,GAAQ,EAAG,KAAMiB,EAAK,MAAQA,EAAKA,EAAK,MAC3C,MAAO,CAAC,EAAEp+G,EAAE,EAAEo+G,EAAG,KAAKjB,EAAK,KAAKC,CAAI,CACrC,CACA,SAASe,GAAuBt3B,EAAiC,CAChE,IAAIw3B,EAAKx3B,EAAK,WAAW,CAAC,EACtB/zF,EAAI+zF,EAAK,WAAW,CAAC,EACrBu2B,GAAQiB,EAAK,QAAW,GAAIlB,GAAQkB,EAAK,QAAW,GACxD,OAAAA,GAAM,MACHjB,GAAQ,GAAKiB,GAAM,OAAQA,EAAKA,EAAK,OACrClB,GAAQ,GAAKrqH,GAAK,MAAMA,EAAIA,EAAI,KAC5B,CAAC,EAAEurH,EAAG,EAAEvrH,EAAE,KAAKqqH,EAAK,KAAKC,CAAI,CACrC,CAGA,SAASkB,GAAcz3B,EAAMz0D,EAAQgO,EAAM,CAC1C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,GAAG,EAAI,KAAS,EAClCryC,EAAOopE,GAAe/2B,EAAMzmD,EAAK,MAAQ,GAAKA,EAAK,MAAQ,EAAI,EAAI,EAAGA,CAAI,EAC9E,MAAO,CAAClnC,EAAMs7C,CAAI,CACnB,CAGA,SAAS+pE,GAAgB13B,EAAMz0D,EAAQgO,EAAM,CAC5C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,GAAG,EAAI,KAAS,EAClC23B,EAAO33B,EAAK,WAAW,EAAG,GAAG,EAC7BnuD,EAAI,EACR,GAAG0H,EAAM,OAAOA,EAAK,KAAI,CACxB,IAAK,GAAGymD,EAAK,GAAK,GAAInuD,EAAI,EAAG,MAC7B,IAAK,IAAIA,EAAI,GAAI,KACjB,CACD,IAAI8b,EAAOopE,GAAe/2B,EAAMnuD,EAAG0H,CAAI,EACvC,MAAO,CAAClnC,EAAMslH,EAAMhqE,CAAI,CACzB,CAGA,SAASiqE,GAAiB53B,EAAMz0D,EAAQgO,EAAM,CAC7C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,GAAG,EAAI,KAAS,EACtC,OAAAA,EAAK,GAAKzmD,GAASA,EAAK,KAAO,EAAK,GAAMA,EAAK,KAAO,EAAI,EAAI,EACvD,CAAClnC,CAAI,CACb,CAEA,SAASwlH,GAAmB73B,EAAMz0D,EAAQgO,EAAM,CAC/C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,GAAG,EAAI,KAAS,EAClC23B,EAAO33B,EAAK,WAAW,CAAC,EACxBnuD,EAAI,EACR,GAAG0H,EAAM,OAAOA,EAAK,KAAI,CACxB,IAAK,GAAGymD,EAAK,GAAK,GAAInuD,EAAI,EAAG,MAC7B,IAAK,IAAIA,EAAI,GAAI,KACjB,CACD,OAAAmuD,EAAK,GAAKnuD,EACH,CAACx/B,EAAMslH,CAAI,CACnB,CAGA,SAASG,GAAe93B,EAAMz0D,EAAQgO,EAAM,CAC3C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,GAAG,EAAI,KAAS,EAClCryC,EAAOspE,GAAkBj3B,EAAMz0D,EAAS,EAAGgO,CAAI,EACnD,MAAO,CAAClnC,EAAMs7C,CAAI,CACnB,CAGA,SAASoqE,GAAe/3B,EAAMz0D,EAAQgO,EAAM,CAC3C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,GAAG,EAAI,KAAS,EACtC,OAAAA,EAAK,GAAKzmD,EAAK,MAAQ,EAAI,EAAIA,EAAK,MAAQ,GAAK,GAAK,EAC/C,CAAClnC,CAAI,CACb,CAGA,SAAS2lH,GAAoBh4B,EAAM,CAClC,IAAIi4B,EAAUj4B,EAAKA,EAAK,EAAE,CAAC,EAAI,EAC3Bk4B,EAAY,EAChB,OAAAl4B,EAAK,GAAK,EACH,CAACi4B,EAASC,CAAS,CAC3B,CAGA,SAASC,GAAoBn4B,EAAMz0D,EAAQgO,EAAwB,CAClEymD,EAAK,GAAI,EAIT,QAHIrxB,EAASqxB,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,EACvDvW,EAAsB,CAAA,EAElBx4B,EAAI,EAAGA,GAAKmkE,EAAQ,EAAEnkE,EAAGw4B,EAAE,KAAKg9D,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,CAAC,EACvF,OAAOvW,CACR,CAGA,SAASo1F,GAAkBp4B,EAAMz0D,EAAQgO,EAAM,CAC9C,IAAI8+E,EAAWr4B,EAAKA,EAAK,EAAE,CAAC,EAAI,IAAQ,EAAI,EAC5C,OAAAA,EAAK,GAAK,EACH,CAACq4B,EAASr4B,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,CAAC,CACjE,CAGA,SAAS++E,GAAgBt4B,EAAMz0D,EAAQgO,EAAM,CAC5C,IAAIg/E,EAASv4B,EAAKA,EAAK,EAAE,CAAC,EAAI,IAAQ,EAAI,EAC1C,OAAAA,EAAK,GAAK,EACH,CAACu4B,EAAOv4B,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,CAAC,CAC/D,CAGA,SAASi/E,GAAqBx4B,EAAM,CACnC,IAAIu4B,EAASv4B,EAAKA,EAAK,EAAE,CAAC,EAAI,IAAQ,EAAI,EAC1C,OAAAA,EAAK,GAAK,EACH,CAACu4B,EAAOv4B,EAAK,WAAW,CAAC,CAAC,CAClC,CAGA,SAASy4B,GAAkBz4B,EAAMz0D,EAAQgO,EAAM,CAC9C,IAAI0+E,EAAWj4B,EAAKA,EAAK,EAAE,CAAC,EAAI,IAAQ,EAAI,EAC5C,OAAAA,EAAK,GAAKzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,EAChC,CAAC0+E,CAAO,CAChB,CAGA,SAASS,GAAuB14B,EAAoB,CACnD,IAAI3tF,EAAO2tF,EAAK,WAAW,CAAC,EAAG0f,EAAM1f,EAAK,WAAW,CAAC,EACtD,MAAO,CAAC3tF,EAAMqtG,CAAG,CAClB,CAGA,SAASiZ,GAAmB34B,EAAM,CACjC,OAAAA,EAAK,WAAW,CAAC,EACV04B,GAAuB14B,CAAO,CACtC,CAGA,SAAS44B,GAAuB54B,EAAM,CACrC,OAAAA,EAAK,WAAW,CAAC,EACV04B,GAAuB14B,CAAO,CACtC,CAGA,SAAS64B,GAAa74B,EAAMz0D,EAAQgO,EAAM,CAEzC,IAAIlnC,GAAQ2tF,EAAKA,EAAK,CAAC,EAAI,KAAO,EAClCA,EAAK,GAAK,EACV,IAAI2T,EAAMujB,GAAcl3B,EAAM,EAAGzmD,CAAI,EACrC,MAAO,CAAClnC,EAAMshG,CAAG,CAClB,CAGA,SAASmlB,GAAc94B,EAAMz0D,EAAQgO,EAAM,CAC1C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,CAAC,EAAI,KAAO,EAClCA,EAAK,GAAK,EACV,IAAI2T,EAAM0jB,GAAiBr3B,EAAM,EAAGzmD,CAAI,EACxC,MAAO,CAAClnC,EAAMshG,CAAG,CAClB,CAGA,SAASolB,GAAe/4B,EAAMz0D,EAAQgO,EAAM,CAC3C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,CAAC,EAAI,KAAO,EAClCA,EAAK,GAAK,EACV,IAAI23B,EAAO33B,EAAK,WAAW,CAAC,EACzBzmD,GAAQA,EAAK,MAAQ,IAAGymD,EAAK,GAAK,IACrC,IAAI2T,EAAMujB,GAAcl3B,EAAM,EAAGzmD,CAAI,EACrC,MAAO,CAAClnC,EAAMslH,EAAMhkB,CAAG,CACxB,CAIA,SAASqlB,GAAch5B,EAAMz0D,EAAQgO,EAAM,CAE1C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,CAAC,EAAI,KAAO,EAClCA,EAAK,GAAK,EACV,IAAIi5B,EAAQj5B,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,EAC1D,MAAO,CAAC2/E,GAASD,CAAK,EAAGE,GAAKF,CAAK,EAAG5mH,CAAI,CAC3C,CAEA,SAAS+mH,GAAiBp5B,EAAMz0D,EAAQgO,EAAM,CAC7C,IAAIlnC,EAAO2tF,EAAKA,EAAK,GAAG,EACpBq5B,EAAUr5B,EAAK,WAAW,CAAC,EAAGs5B,EAAM//E,GAAQA,EAAK,MAAQ,EAAI,CAAElnC,GAAQ,GAAO,GAAK,EAAI2tF,EAAK,WAAW,CAAC,CAAC,EAAGu5B,GAASv5B,CAAI,EAC7H,MAAO,CAACq5B,GAAUC,EAAI,CAAC,IAAM,EAAIH,GAAOK,IAAOF,EAAI,CAAC,CAAC,CAAC,CACvD,CAEA,SAASC,GAASv5B,EAAM,CACvB,MAAO,CAACA,EAAKA,EAAK,EAAE,CAAC,GAAG,EAAGA,EAAK,WAAW,CAAC,EAAI,KAAM,CACvD,CAGA,SAASy5B,GAAiBz5B,EAAMz0D,EAAQgO,EAAM,CAC7CymD,EAAK,GAAKzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CACxC,CAGA,SAASmgF,GAAa15B,EAAMz0D,EAAQgO,EAAM,CAEzC,GADAymD,EAAK,IACFzmD,GAAQA,EAAK,MAAQ,GAAI,MAAO,CAACymD,EAAK,WAAW,EAAG,GAAG,EAAG,CAAC,EAC9D,IAAIzN,EAAMyN,EAAK,WAAW,CAAC,EACvB6V,EAAM7V,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,EACxD,MAAO,CAACg5C,EAAKsjB,CAAG,CACjB,CAGA,SAAS8jB,GAAa35B,EAAM,CAAE,OAAAA,EAAK,IAAYuW,GAAKvW,EAAK,WAAW,CAAC,CAAC,CAAI,CAG1E,SAAS45B,GAAa55B,EAAM,CAAE,OAAAA,EAAK,IAAYA,EAAK,WAAW,CAAC,CAAI,CAGpE,SAAS65B,GAAc75B,EAAM,CAAE,OAAAA,EAAK,IAAYA,EAAK,WAAW,CAAC,IAAI,CAAE,CAGvE,SAAS85B,GAAa95B,EAAM,CAAE,OAAAA,EAAK,IAAY6Z,GAAW7Z,CAAO,CAAI,CAGrE,SAAS+5B,GAAa/5B,EAAMz0D,EAAQgO,EAAM,CAAE,OAAAymD,EAAK,IAAYyf,GAA2Bzf,EAAMz0D,EAAO,EAAGgO,CAAI,CAAI,CAIhH,SAASygF,GAAYh6B,EAAMgV,EAAiB,CAC3C,IAAIprG,EAAM,CAACo2F,EAAK,WAAW,CAAC,CAAC,EAC7B,GAAGgV,GAAQ,GAAI,OAAOprG,EAAI,CAAC,EAAC,CAC3B,IAAK,GAAMA,EAAI,CAAC,EAAI,EAAM,MAC1B,IAAK,GAAMA,EAAI,CAAC,EAAI,GAAM,MAC1B,IAAK,GAAMA,EAAI,CAAC,EAAI,EAAM,MAC1B,IAAK,GAAMA,EAAI,CAAC,EAAI,EAAM,KAC1B,CACD,OAAOA,EAAI,CAAC,EAAC,CACZ,IAAK,GACJA,EAAI,CAAC,EAAIw1G,GAAUpf,EAAM,CAAC,EAAI,OAAS,QACpCgV,GAAQ,KAAIhV,EAAK,GAAK,GAAG,MAC7B,IAAK,IACL,IAAK,IACJp2F,EAAI,CAAC,EAAI2sG,GAAKvW,EAAKA,EAAK,CAAC,CAAC,EAC1BA,EAAK,GAAOgV,GAAQ,GAAM,EAAI,EAAI,MACnC,IAAK,GACJhV,EAAK,GAAK,EAAG,MACd,IAAK,GACJp2F,EAAI,CAAC,EAAIiwG,GAAW7Z,CAAO,EAAG,MAC/B,IAAK,GACJp2F,EAAI,CAAC,EAAIs2G,GAAuBlgB,EAAM,EAAG,CAAC,KAAKgV,EAAO,GAAKA,EAAO,EAAI,EAAIA,CAAI,CAAC,EAAG,MACnF,QAAS,MAAM,IAAI,MAAM,cAAgBprG,EAAI,CAAC,CAAC,CAC/C,CACD,OAAOA,CACR,CAGA,SAASqwH,GAAkBj6B,EAAMk6B,EAAK3gF,EAAM,CAG3C,QAFI+O,EAAQ03C,EAAK,WAAYzmD,EAAK,MAAQ,GAAM,EAAI,CAAC,EACjDk7C,EAAuB,CAAA,EACnBjqF,EAAI,EAAGA,GAAK89C,EAAO,EAAE99C,EAAGiqF,EAAI,MAAOl7C,EAAK,MAAQ,GAAMogE,GAAqBsH,IAAajhB,CAAO,CAAC,EACxG,OAAOvL,CACR,CAGA,SAAS0lC,GAAoBn6B,EAAMz0D,EAAQgO,EAAM,CAChD,IAAI+uE,EAAO,EAAGrD,EAAO,EAClB1rE,EAAK,MAAQ,IACf+uE,EAAOtoB,EAAK,WAAW,CAAC,EACxBilB,EAAOjlB,EAAK,WAAW,CAAC,IAExBilB,EAAO,EAAIjlB,EAAK,WAAW,CAAC,EAC5BsoB,EAAO,EAAItoB,EAAK,WAAW,CAAC,GAE1BzmD,EAAK,MAAQ,GAAKA,EAAK,KAAO,IAAK,EAAE+uE,EAAS,EAAErD,GAAQ,IAAGA,EAAO,MAErE,QAAQz6G,EAAI,EAAGw4B,EAA0B,CAAA,EAAIx4B,GAAK89G,IAAStlF,EAAEx4B,CAAC,EAAI,CAAE,GAAG,EAAEA,EACxE,QAAQ4sB,EAAI,EAAGA,GAAK6tF,EAAM,EAAE7tF,EAAG4L,EAAEx4B,CAAC,EAAE4sB,CAAC,EAAI4iG,GAAYh6B,EAAMzmD,EAAK,IAAI,EACrE,OAAOvW,CACR,CAGA,SAASo3F,GAAcp6B,EAAMz0D,EAAQgO,EAAM,CAC1C,IAAIlnC,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACpCnuD,EAAK,CAAC0H,GAASA,EAAK,MAAQ,EAAM,EAAI,EACtC8gF,EAAYr6B,EAAK,WAAWnuD,CAAC,EACjC,OAAO0H,EAAK,KAAI,CACf,IAAK,GAAGymD,EAAK,GAAK,EAAG,MACrB,IAAK,GAAG,IAAK,GAAGA,EAAK,GAAK,EAAG,MAC7B,IAAK,GAAGA,EAAK,GAAK,GAAI,KACtB,CACD,MAAO,CAAC3tF,EAAM,EAAGgoH,CAAS,CAC3B,CAGA,SAASC,GAAet6B,EAAMz0D,EAAQgO,EAAM,CAC3C,GAAGA,EAAK,MAAQ,EAAG,OAAOghF,GAAqBv6B,CAAkB,EACjE,IAAI3tF,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACpC23B,EAAO33B,EAAK,WAAW,CAAC,EACxBq6B,EAAYr6B,EAAK,WAAW,CAAC,EACjC,MAAO,CAAC3tF,EAAMslH,EAAM0C,CAAS,CAC9B,CACA,SAASE,GAAqBv6B,EAA0B,CACvD,IAAI3tF,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACpC23B,EAAO33B,EAAK,WAAW,EAAG,GAAG,EACjCA,EAAK,GAAK,EACV,IAAIq6B,EAAYr6B,EAAK,WAAW,CAAC,EACjC,OAAAA,EAAK,GAAK,GACH,CAAC3tF,EAAMslH,EAAM0C,CAAS,CAC9B,CAGA,SAASG,GAAiBx6B,EAAMz0D,EAAQgO,EAAM,CAC7C,IAAIlnC,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACxCA,EAAK,GAAMzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,EACxC,IAAI2gF,EAAMl6B,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,EACxD,MAAO,CAAClnC,EAAM6nH,CAAG,CAClB,CAGA,SAASO,GAAiBz6B,EAAMz0D,EAAQgO,EAAM,CAC7C,IAAIlnC,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACpCk6B,EAAMl6B,EAAK,WAAWzmD,GAAQA,EAAK,MAAQ,EAAI,EAAI,CAAC,EACxD,MAAO,CAAClnC,EAAM6nH,CAAG,CAClB,CAIA,SAASQ,GAAgB16B,EAAMz0D,EAAQgO,EAAM,CAC5C,IAAIlnC,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACxC,OAAAA,EAAK,GAAK,EACPzmD,EAAK,KAAO,GAAGymD,EAAK,IACpBzmD,EAAK,MAAQ,KAAIymD,EAAK,GAAK,GACvB,CAAC3tF,CAAI,CACb,CAGA,SAASsoH,GAAkB36B,EAAMz0D,EAAQgO,EAAM,CAC9C,IAAIlnC,GAAQ2tF,EAAKA,EAAK,GAAG,EAAI,KAAS,EAClC23B,EAAO33B,EAAK,WAAW,CAAC,EACxBnuD,EAAI,EACR,GAAG0H,EAAM,OAAOA,EAAK,KAAI,CACxB,IAAK,GAAG1H,EAAI,GAAI,MAChB,IAAK,IAAIA,EAAI,EAAG,KAChB,CACD,OAAAmuD,EAAK,GAAKnuD,EACH,CAACx/B,EAAMslH,CAAI,CACnB,CAGA,IAAIiD,GAAkB1mB,GAElB2mB,GAAoB3mB,GAEpB4mB,GAAe5mB,GAEnB,SAAS6mB,GAAgB/6B,EAAMz0D,EAAQgO,EAAM,CAC5C,OAAAymD,EAAK,GAAK,EACH,CAACo3B,GAAiBp3B,CAAa,CAAC,CACxC,CACA,SAASg7B,GAAiBh7B,EAA0B,CACnD,OAAAA,EAAK,GAAK,EACH,EACR,CAEA,IAAIi7B,GAAkBF,GAElBG,GAAmBF,GAEnBG,GAAoBH,GAEpBI,GAAmBL,GAEvB,SAASM,GAAgBr7B,EAA0B,CAClD,OAAAA,EAAK,GAAK,EACH,CAACsf,GAAYtf,CAAI,EAAGA,EAAK,WAAW,CAAC,EAAI,CAAI,CACrD,CAEA,IAAIs7B,GAAsBP,GAEtBQ,GAAyBF,GAEzBG,GAAuBR,GAEvBS,GAAiBV,GAEjBW,GAAkBX,GAGlBY,GAAY,CACf,OACA,MACA,UACA,KACA,SACA,KACA,eACA,KACA,SACA,KACA,KACA,KACA,cACA,KACA,KACA,KACA,UACD,EACA,SAASC,GAAc57B,EAA0B,CAChDA,EAAK,GAAK,EACV,IAAI23B,EAAO33B,EAAK,WAAW,CAAC,EACxBE,EAAQF,EAAK,WAAW,CAAC,EACzBv8D,EAAMu8D,EAAK,WAAW,CAAC,EACvB/zF,EAAI+zF,EAAK,WAAW,CAAC,EACrBuC,EAAIvC,EAAK,WAAW,CAAC,EACrB67B,EAAKF,GAAWz7B,GAAS,EAAK,EAAI,EACtC,MAAO,CAAC,KAAMy3B,EAAM,QAASz3B,EAAM,EAAM,GAAG27B,EAAI,IAAIp4F,EAAK,EAAEx3B,EAAG,EAAEs2F,CAAC,CAClE,CAEA,SAASu5B,GAAgB97B,EAA0B,CAClD,OAAAA,EAAK,GAAK,EACH,CAACA,EAAK,WAAW,CAAC,CAAC,CAC3B,CAGA,SAAS+7B,GAAe/7B,EAAMz0D,EAAQgO,EAAM,CAC3C,OAAAymD,EAAK,GAAK,EACVA,EAAK,GAAK,EACVA,EAAK,GAAMzmD,EAAK,MAAQ,EAAI,EAAI,EACzB,CAAC,UAAU,CACnB,CACA,SAASyiF,GAAkBh8B,EAAMz0D,EAAQgO,EAAM,CAC9C,OAAAymD,EAAK,GAAMzmD,EAAK,MAAQ,EAAI,EAAI,EACzB,CAAC,aAAa,CACtB,CACA,SAAS0iF,GAAkBj8B,EAA0B,CACpD,IAAI3tF,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACpCk6B,EAAMl6B,EAAK,WAAW,CAAC,EAC3B,MAAO,CAAC3tF,EAAM6nH,CAAG,CAClB,CACA,SAASgC,GAAmBl8B,EAA0B,CACrD,IAAI3tF,EAAQ2tF,EAAK,WAAW,CAAC,IAAM,EAAK,EACpCk6B,EAAMl6B,EAAK,WAAW,CAAC,EAC3B,MAAO,CAAC3tF,EAAM6nH,CAAG,CAClB,CACA,SAASiC,GAAkBn8B,EAA0B,CACpD,OAAAA,EAAK,GAAK,EACH,CAAC,EAAG,CAAC,CACb,CAGA,IAAIo8B,GAAW,CACP,EAAa,CAAE,EAAE,SAAU,EAAE1C,EAAc,EAC3C,EAAa,CAAE,EAAE,SAAU,EAAEoB,EAAc,EAC3C,EAAa,CAAE,EAAE,SAAU,EAAEjE,EAAY,EACzC,EAAa,CAAE,EAAE,SAAU,EAAEA,EAAY,EACzC,EAAa,CAAE,EAAE,SAAU,EAAEA,EAAY,EACzC,EAAa,CAAE,EAAE,SAAU,EAAEA,EAAY,EACzC,EAAa,CAAE,EAAE,WAAY,EAAEA,EAAY,EAC3C,EAAa,CAAE,EAAE,YAAa,EAAEA,EAAY,EAC5C,EAAa,CAAE,EAAE,QAAS,EAAEA,EAAY,EACxC,GAAa,CAAE,EAAE,QAAS,EAAEA,EAAY,EACxC,GAAa,CAAE,EAAE,QAAS,EAAEA,EAAY,EACxC,GAAa,CAAE,EAAE,QAAS,EAAEA,EAAY,EACxC,GAAa,CAAE,EAAE,QAAS,EAAEA,EAAY,EACxC,GAAa,CAAE,EAAE,QAAS,EAAEA,EAAY,EACxC,GAAa,CAAE,EAAE,WAAY,EAAEA,EAAY,EAC3C,GAAa,CAAE,EAAE,WAAY,EAAEA,EAAY,EAC3C,GAAa,CAAE,EAAE,WAAY,EAAEA,EAAY,EAC3C,GAAa,CAAE,EAAE,WAAY,EAAEA,EAAY,EAC3C,GAAa,CAAE,EAAE,YAAa,EAAEA,EAAY,EAC5C,GAAa,CAAE,EAAE,aAAc,EAAEA,EAAY,EAC7C,GAAa,CAAE,EAAE,WAAY,EAAEA,EAAY,EAC3C,GAAa,CAAE,EAAE,aAAc,EAAEA,EAAY,EAC7C,GAAa,CAAE,EAAE,SAAU,EAAEkD,EAAc,EAC3C,GAAa,CAAE,EAAE,WAAY,EAAEgC,EAAgB,EAC/C,GAAa,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACrD,GAAa,CAAE,EAAE,SAAU,EAAErC,EAAc,EAC3C,GAAa,CAAE,EAAE,UAAW,EAAEE,EAAe,EAC7C,GAAa,CAAE,EAAE,SAAU,EAAED,EAAc,EAC3C,GAAa,CAAE,EAAE,SAAU,EAAEE,EAAc,EAC3C,GAAa,CAAE,EAAE,WAAY,EAAE/B,EAAgB,EAC/C,GAAa,CAAE,EAAE,UAAW,EAAEiB,EAAe,EAC7C,GAAa,CAAE,EAAE,aAAc,EAAEI,EAAkB,EACnD,GAAa,CAAE,EAAE,UAAW,EAAEgB,EAAe,EAC7C,GAAa,CAAE,EAAE,SAAU,EAAEvB,EAAc,EAC3C,GAAa,CAAE,EAAE,UAAW,EAAEpB,EAAe,EAC7C,GAAa,CAAE,EAAE,aAAc,EAAE+C,EAAkB,EACnD,GAAa,CAAE,EAAE,YAAa,EAAEI,EAAiB,EACjD,GAAa,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACrD,GAAa,CAAE,EAAE,aAAc,EAAEJ,EAAkB,EACnD,GAAa,CAAE,EAAE,YAAa,EAAEC,EAAiB,EACjD,GAAa,CAAE,EAAE,aAAc,EAAE9C,EAAkB,EACnD,GAAa,CAAE,EAAE,UAAW,EAAEkB,EAAe,EAC7C,GAAa,CAAE,EAAE,WAAY,EAAEhB,EAAgB,EAC/C,GAAa,CAAE,EAAE,cAAe,EAAEmE,EAAmB,EACrD,GAAa,CAAE,EAAE,eAAgB,EAAEC,EAAoB,EACvD,GAAa,CAAE,EAAE,WAAY,EAAE5B,EAAgB,EAC/C,GAAa,CAAE,EAAE,WAAY,EAAEvB,EAAgB,EAC/C,GAAa,CAAE,EAAE,YAAa,EAAErB,EAAiB,EACjD,GAAa,CAAE,EAAE,cAAe,EAAEiD,EAAmB,EACrD,GAAa,CAAE,EAAE,eAAgB,EAAE9C,EAAoB,EACvD,IAAa,CAAE,CACvB,EAEIwE,GAAW,CACP,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,GAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,GACvC,GAAa,GAAa,IAAa,EAC/C,EAEIC,GAAQ,CACJ,EAAa,CAAE,EAAE,YAAa,EAAEjB,EAAiB,EACjD,EAAa,CAAE,EAAE,WAAY,EAAEI,EAAgB,EAC/C,EAAa,CAAE,EAAE,YAAa,EAAER,EAAiB,EACjD,EAAa,CAAE,EAAE,YAAa,EAAES,EAAiB,EACjD,EAAa,CAAE,EAAE,aAAc,EAAEN,EAAkB,EACnD,GAAa,CAAE,EAAE,gBAAiB,EAAEE,EAAqB,EACzD,GAAa,CAAE,EAAE,iBAAkB,EAAEE,EAAsB,EAC3D,GAAa,CAAE,EAAE,aAAc,EAAEN,EAAkB,EACnD,GAAa,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACrD,GAAa,CAAE,EAAE,mBAAoB,EAAEI,EAAwB,EAC/D,GAAa,CAAE,EAAE,UAAW,EAAEK,EAAe,EAC7C,GAAa,CAAE,EAAE,YAAa,EAAEE,EAAiB,EACjD,IAAa,CAAE,CACvB,EACIS,GAAQ,CACJ,EAAa,CAAE,EAAE,cAAe,EAAEJ,EAAmB,EACrD,EAAa,CAAE,EAAE,cAAe,EAAE1D,EAAmB,EACrD,EAAa,CAAE,EAAE,YAAa,EAAEH,EAAiB,EACjD,EAAa,CAAE,EAAE,gBAAiB,EAAEH,EAAqB,EACzD,EAAa,CAAE,EAAE,cAAe,EAAEC,EAAmB,EACrD,GAAa,CAAE,EAAE,aAAc,EAAEqB,EAAkB,EACnD,GAAa,CAAE,EAAE,gBAAiB,EAAEzB,EAAqB,EACzD,GAAa,CAAE,EAAE,gBAAiB,EAAEA,EAAqB,EACzD,GAAa,CAAE,EAAE,eAAgB,EAAEW,EAAoB,EACvD,GAAa,CAAE,EAAE,mBAAoB,EAAEC,EAAwB,EAC/D,IAAa,CAAE,EAAE,iBAAkB,EAAEJ,EAAsB,EAC3D,IAAa,CAAE,CACvB,EAGA,SAASgE,GAAex8B,EAAMz0D,EAAQkxF,EAAMljF,EAAM,CACjD,GAAGA,EAAK,KAAO,EAAG,OAAO26D,GAAUlU,EAAMz0D,CAAM,EAG/C,QAFIn5B,EAAS4tF,EAAK,EAAIz0D,EAClBvI,EAAI,CAAA,EACAx4B,EAAI,EAAGA,IAAMiyH,EAAK,OAAQ,EAAEjyH,EACnC,OAAOiyH,EAAKjyH,CAAC,EAAE,CAAC,EAAC,CAChB,IAAK,WACJiyH,EAAKjyH,CAAC,EAAE,CAAC,EAAI2vH,GAAoBn6B,EAAM,EAAGzmD,CAAI,EAC9CvW,EAAE,KAAKy5F,EAAKjyH,CAAC,EAAE,CAAC,CAAC,EACjB,MACD,IAAK,aACJiyH,EAAKjyH,CAAC,EAAE,CAAC,EAAIyvH,GAAkBj6B,EAAMy8B,EAAKjyH,CAAC,EAAE,CAAC,EAAG+uC,CAAI,EACrDvW,EAAE,KAAKy5F,EAAKjyH,CAAC,EAAE,CAAC,CAAC,EACjB,MACD,IAAK,SACD+uC,GAAQA,EAAK,MAAQ,KACvBkjF,EAAKjyH,CAAC,EAAE,CAAC,EAAE,CAAC,EAAIw1F,EAAK,WAAW,CAAC,EACjCh9D,EAAE,KAAKy5F,EAAKjyH,CAAC,EAAE,CAAC,CAAC,GAChB,MACH,IAAK,UACL,IAAK,iBACL,IAAK,aACL,IAAK,cACJ,KAAM,eAAiBiyH,EAAKjyH,CAAC,EAAE,CAAC,CAEjC,CAEF,OAAA+gC,EAASn5B,EAAS4tF,EAAK,EAGpBz0D,IAAW,GAAGvI,EAAE,KAAKkxE,GAAUlU,EAAMz0D,CAAM,CAAC,EACxCvI,CACR,CAGA,SAAS05F,GAAW18B,EAAMz0D,EAAQgO,EAAM,CAGvC,QAFInnC,EAAS4tF,EAAK,EAAIz0D,EAClBg0D,EAAGxjF,EAAI4gH,EAAO,GACZvqH,GAAU4tF,EAAK,GACpBz0D,EAASn5B,EAAS4tF,EAAK,EACvBjkF,EAAKikF,EAAKA,EAAK,CAAC,EAChBT,EAAI68B,GAASrgH,CAAE,GAAKqgH,GAASC,GAAStgH,CAAE,CAAC,GACtCA,IAAO,IAAQA,IAAO,MAAMwjF,GAAKxjF,IAAO,GAAOugH,GAAQC,IAAOv8B,EAAKA,EAAK,EAAI,CAAC,CAAC,GAC9E,CAACT,GAAK,CAACA,EAAE,EAAmB2U,GAAUlU,EAAMz0D,CAAM,EAC9CoxF,EAAK,KAAK,CAACp9B,EAAE,EAAGA,EAAE,EAAES,EAAMz0D,EAAQgO,CAAI,CAAC,CAAC,EAEhD,OAAOojF,CACR,CAEA,SAASC,GAAgB3+E,EAAuC,CAE/D,QADIjb,EAAsB,CAAA,EAClBx4B,EAAI,EAAGA,EAAIyzC,EAAE,OAAQ,EAAEzzC,EAAG,CAEjC,QADIq5C,EAAI5F,EAAEzzC,CAAC,EAAG2O,EAAsB,CAAA,EAC5Bie,EAAI,EAAGA,EAAIysB,EAAE,OAAQ,EAAEzsB,EAAG,CACjC,IAAI0sB,EAAID,EAAEzsB,CAAC,EACX,GAAG0sB,EAAG,OAAOA,EAAE,CAAC,EAAC,CAEhB,IAAK,GAEJ3qC,EAAE,KAAK,IAAM2qC,EAAE,CAAC,EAAE,QAAQ,KAAK,IAAI,EAAI,GAAG,EAAG,MAC9C,QAAS3qC,EAAE,KAAK2qC,EAAE,CAAC,CAAC,CACxB,MAAU3qC,EAAE,KAAK,EAAE,CAChB,CACD6pB,EAAE,KAAK7pB,EAAE,KAAK,GAAG,CAAC,CAClB,CACD,OAAO6pB,EAAE,KAAK,GAAG,CAClB,CAGA,IAAI65F,GAAW,CACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,MAAO,IACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,IACP,OAAQ,IACR,MAAO,KACP,SAAU,IACV,OAAQ,GACT,EAGA,SAASC,GAAyBC,EAAkBxjF,EAAiB,CACpE,GAAG,CAACwjF,GAAS,EAAExjF,GAAQA,EAAK,MAAQ,GAAKA,EAAK,MAAQ,GAAI,MAAM,IAAI,MAAM,kBAAkB,EAC5F,MAAI,kCAAkC,KAAKwjF,CAAK,EAAU,IAAMA,EAAQ,IACjEA,CACR,CACA,SAASC,GAAaC,EAAUtF,EAAiBp+E,EAAiB,CACjE,GAAG,CAAC0jF,EAAU,MAAO,cACrB,GAAG1jF,EAAK,KAAO,IAAM,CAAC0jF,EAAS,KAAO,CAACA,EAAS,IAAItF,CAAI,GAAI,OAAOsF,EAAS,WAAWtF,CAAI,EAC3F,GAAG,CAACsF,EAAS,IAAK,MAAO,cACzB,IAAIC,EAAMD,EAAS,IAAItF,CAAI,EAC3B,GAAGp+E,EAAK,KAAO,EACd,OAAGo+E,EAAO,MAAOA,GAAO,OACrBA,EAAO,IAAGA,EAAO,CAACA,GACdA,GAAQ,EAAI,GAAKsF,EAAS,IAAItF,EAAO,CAAC,EAE9C,GAAG,CAACuF,EAAK,MAAO,cAChB,IAAIl6F,EAAI,GACR,GAAGuW,EAAK,KAAO,EAAG,OAAO0jF,EAASC,EAAI,CAAC,CAAC,EAAE,CAAC,EAAC,CAC3C,IAAK,KACJ,OAAAl6F,EAAIk6F,EAAI,CAAC,GAAK,GAAK,OAASD,EAAS,WAAWC,EAAI,CAAC,CAAC,EAC/CA,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAIl6F,EAAIA,EAAI,IAAMi6F,EAAS,WAAWC,EAAI,CAAC,CAAC,EACnE,IAAK,KACJ,OAAG3jF,EAAK,KAAO,KAAa0jF,EAAS,WAAW1jF,EAAK,GAAG,EACjD,cAAgB0jF,EAASC,EAAI,CAAC,CAAC,EAAE,CAAC,EAC1C,IAAK,KAEL,QAAS,MAAO,aAAeD,EAASC,EAAI,CAAC,CAAC,EAAE,CAAC,CACjD,CACD,OAAOD,EAASC,EAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAC5B,IAAK,MACJ,OAAAl6F,EAAIk6F,EAAI,CAAC,GAAK,GAAK,OAAUD,EAAS,WAAWC,EAAI,CAAC,CAAC,GAAK,cACrDA,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAIl6F,EAAIA,EAAI,IAAMi6F,EAAS,WAAWC,EAAI,CAAC,CAAC,EACnE,IAAK,OAAQ,OAAOD,EAASC,EAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,SAASpvH,EAAM,CAAE,OAAOA,EAAK,IAAK,CAAE,EAAE,KAAK,IAAI,EACjG,QACC,OAAImvH,EAASC,EAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GACzBl6F,EAAIk6F,EAAI,CAAC,GAAK,GAAK,OAAUD,EAASC,EAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAI,CAAC,CAAC,GAAK,cACxDA,EAAI,CAAC,GAAKA,EAAI,CAAC,EAAIl6F,EAAIA,EAAI,IAAMi6F,EAASC,EAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,EAAI,CAAC,CAAC,GAFlC,aAGpC,CACF,CACA,SAASC,GAASF,EAAUtF,EAAiBp+E,EAAiB,CAC7D,IAAI6jF,EAAUJ,GAAaC,EAAUtF,EAAMp+E,CAAI,EAC/C,OAAO6jF,GAAW,OAASA,EAAUN,GAAyBM,EAAS7jF,CAAI,CAC5E,CACA,SAAS8jF,GAAkBhW,EAAuBpjE,EAAO4wD,EAAcooB,EAAU1jF,EAAiB,CACjG,IAAIy7D,EAAQz7D,GAAQA,EAAK,MAAS,EAC9B29D,EAAqC,CAAC,EAAE,CAAC,EAAE,EAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,EAC/DxrE,EAA0B,CAAE,EAAE5U,EAAIC,EAAgB9qB,EAAmB0rH,EAAK,EAAG2F,EAAQ,EAAGnkH,EAAG4jH,EAAM,GACrG,GAAG,CAAC1V,EAAQ,CAAC,GAAK,CAACA,EAAQ,CAAC,EAAE,CAAC,EAAG,MAAO,GAEzC,QADIkW,EAAU,GAAIC,EAAK,GACf9iC,EAAK,EAAG+iC,EAAQpW,EAAQ,CAAC,EAAE,OAAQ3sB,EAAK+iC,EAAO,EAAE/iC,EAAI,CAC5D,IAAIz8C,EAAIopE,EAAQ,CAAC,EAAE3sB,CAAE,EACrB,OAAOz8C,EAAE,CAAC,EAAC,CACV,IAAK,YACJvS,EAAM,KAAK,IAAMA,EAAM,IAAG,CAAE,EAAG,MAChC,IAAK,WACJA,EAAM,KAAK,IAAMA,EAAM,IAAG,CAAE,EAAG,MAChC,IAAK,aACJA,EAAM,KAAKA,EAAM,IAAG,EAAK,GAAG,EAAG,MAEhC,IAAK,SACL,IAAK,YACL,IAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,SAEJ,GADA5U,EAAK4U,EAAM,IAAK,EAAE3U,EAAK2U,EAAM,MAC1B6xF,GAAW,EAAG,CAChB,OAAOlW,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,EAAC,CAC/B,IAAK,GAEJC,EAAKvoC,GAAK,IAAKoyB,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAG,MAC5C,IAAK,GAEJC,EAAKvoC,GAAK,KAAMoyB,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAG,MAC7C,QAGC,GAFAC,EAAK,GAEFjkF,EAAK,IAAK,MAAM,IAAI,MAAM,+BAAiC8tE,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CACxF,CACDxmG,EAAKA,EAAKymG,EACVD,EAAU,EACV,CACD7xF,EAAM,KAAK3U,EAAG8lG,GAAS5+E,EAAE,CAAC,CAAC,EAAEnnB,CAAE,EAC/B,MAED,IAAK,WACJA,EAAK4U,EAAM,IAAK,EAAE3U,EAAK2U,EAAM,MAC7BA,EAAM,KAAK3U,EAAG,IAAID,CAAE,EACpB,MACD,IAAK,WACJA,EAAK4U,EAAM,IAAK,EAAE3U,EAAK2U,EAAM,MAC7BA,EAAM,KAAK3U,EAAG,IAAID,CAAE,EACpB,MACD,IAAK,WACJA,EAAK4U,EAAM,IAAK,EAAE3U,EAAK2U,EAAM,MAC7BA,EAAM,KAAK3U,EAAG,IAAID,CAAE,EACpB,MAED,IAAK,gBACJ,MACD,IAAK,cACJ,MACD,IAAK,YACJ,MACD,IAAK,iBACJ,MAGD,IAAK,SACkB7qB,EAAI2oG,GAAgB32D,EAAE,CAAC,EAAE,CAAC,EAAYi5D,EAAQ39D,CAAI,EACxE7N,EAAM,KAAKqpE,GAAgB9oG,EAAG+oG,CAAI,CAAC,EACnC,MACD,IAAK,UACkB/oG,EAAI4oG,EAAOD,GAAgB32D,EAAE,CAAC,EAAE,CAAC,EAAY42D,EAAMt7D,CAAI,EAAK0E,EAAE,CAAC,EAAE,CAAC,EACxFvS,EAAM,KAAKqpE,GAAgB9oG,EAAG+oG,CAAI,CAAC,EACnC,MACD,IAAK,WACkB2iB,EAAoB15E,EAAE,CAAC,EAAE,CAAC,EAAUhyC,EAAI2oG,GAAgB32D,EAAE,CAAC,EAAE,CAAC,EAAYi5D,EAAQ39D,CAAI,EAC5GwjF,EAAQI,GAASF,EAAUtF,EAAMp+E,CAAI,EAErC7N,EAAM,KAAKqxF,EAAQ,IAAMhoB,GAAgB9oG,EAAG+oG,CAAI,CAAC,EACjD,MAED,IAAK,UACL,IAAK,aAEJ,IAAI0Y,EAAmBzvE,EAAE,CAAC,EAAE,CAAC,EAAYy/E,EAAmBz/E,EAAE,CAAC,EAAE,CAAC,EAC9DyvE,IAAMA,EAAO,GACjBA,GAAQ,IACR,IAAIv6G,EAAOu6G,GAAQ,EAAI,CAAA,EAAKhiF,EAAM,MAAM,CAACgiF,CAAI,EAC7ChiF,EAAM,QAAUgiF,EACbgQ,IAAS,SAAQA,EAAOvqH,EAAK,MAAK,GACrCu4B,EAAM,KAAKgyF,EAAO,IAAMvqH,EAAK,KAAK,GAAG,EAAI,GAAG,EAC5C,MAED,IAAK,UACJu4B,EAAM,KAAKuS,EAAE,CAAC,EAAI,OAAS,OAAO,EAAG,MACtC,IAAK,SACJvS,EAAM,KAAkBuS,EAAE,CAAC,CAAC,EAAU,MACvC,IAAK,SACJvS,EAAM,KAAK,OAAOuS,EAAE,CAAC,CAAC,CAAC,EAAG,MAC3B,IAAK,SAEJvS,EAAM,KAAK,IAAMuS,EAAE,CAAC,EAAE,QAAQ,KAAM,IAAI,EAAI,GAAG,EAAG,MACnD,IAAK,SACJvS,EAAM,KAAkBuS,EAAE,CAAC,CAAC,EAAU,MACvC,IAAK,WACkB9kC,EAAI27F,GAAgB72D,EAAE,CAAC,EAAE,CAAC,EAAG42D,EAAO,CAAC,EAAEA,CAAI,EAAIqC,EAAQ39D,CAAI,EACjF7N,EAAM,KAAK0pE,GAAkBj8F,EAAYogC,CAAI,CAAC,EAC9C,MACD,IAAK,UACkBpgC,EAAI27F,GAAgB72D,EAAE,CAAC,EAAE,CAAC,EAAGi5D,EAAQ39D,CAAI,EAC/D7N,EAAM,KAAK0pE,GAAkBj8F,EAAYogC,CAAI,CAAC,EAC9C,MACD,IAAK,YACkBo+E,EAAoB15E,EAAE,CAAC,EAAE,CAAC,EAAU9kC,EAAI8kC,EAAE,CAAC,EAAE,CAAC,EACpE8+E,EAAQI,GAASF,EAAUtF,EAAMp+E,CAAI,EACrC7N,EAAM,KAAKqxF,EAAQ,IAAM3nB,GAAkBj8F,EAAYogC,CAAI,CAAC,EAC5D,MACD,IAAK,aACJ7N,EAAM,KAAK,OAASA,EAAM,IAAG,EAAK,GAAG,EACrC,MAED,IAAK,gBACL,IAAK,cACJ,MAED,IAAK,UAEJ4xF,EAAWr/E,EAAE,CAAC,EAAE,CAAC,EACjB,IAAI0/E,GAAOV,EAAS,OAAO,CAAE,GAAEK,EAAQ,CAAC,IAAML,EAAS,CAAC,GAAG,CAAE,GAAEK,CAAO,EAClExvH,EAAO6vH,EAAMA,EAAI,KAAO,cAAgB,OAAOL,CAAO,EAEvDxvH,GAAQA,EAAK,MAAM,EAAE,CAAC,GAAK,UAAY,CAACyrC,EAAK,OAAMzrC,EAAOA,EAAK,MAAM,CAAC,GACzE49B,EAAM,KAAK59B,CAAI,EACf,MAED,IAAK,WAEJ,IAAI8vH,EAAsB3/E,EAAE,CAAC,EAAE,CAAC,EAAYq/E,EAAWr/E,EAAE,CAAC,EAAE,CAAC,EAAY,IAAI4/E,EAE7E,GAAGtkF,EAAK,MAAQ,EACZqkF,EAAU,IAAGA,EAAU,CAACA,GACxBX,EAASW,CAAO,IAAGC,EAAaZ,EAASW,CAAO,EAAEN,CAAO,OACtD,CACN,IAAIt6F,EAAI,GAQR,KAPKi6F,EAASW,CAAO,GAAG,CAAE,GAAE,CAAC,GAAG,IAAI,CAAC,GAAK,UAChCX,EAASW,CAAO,GAAG,CAAA,GAAI,CAAC,GAAG,CAAE,GAAE,CAAC,GAAK,KAC3CX,EAASW,CAAO,EAAEN,CAAO,GAAKL,EAASW,CAAO,EAAEN,CAAO,EAAE,KAAO,IAClEt6F,EAAIi6F,EAAS,WAAWA,EAASW,CAAO,EAAEN,CAAO,EAAE,KAAK,CAAC,EAAI,KAG1Dt6F,EAAIi6F,EAAS,WAAWK,EAAQ,CAAC,EAAG,KACtCL,EAASW,CAAO,GAAKX,EAASW,CAAO,EAAEN,CAAO,EAAGt6F,GAAKi6F,EAASW,CAAO,EAAEN,CAAO,EAAE,aAC5EL,EAAS,CAAC,GAAKA,EAAS,CAAC,EAAEK,CAAO,EAAGt6F,GAAKi6F,EAAS,CAAC,EAAEK,CAAO,EAAE,SAClE,CACJ,IAAIQ,GAAYd,GAAaC,EAAUW,EAASrkF,CAAI,GAAG,IAAI,MAAM,IAAI,EAClEukF,EAASR,EAAU,CAAC,EAAGt6F,EAAI86F,EAASR,EAAU,CAAC,EAC7Ct6F,GAAK,aACV,CACD0I,EAAM,KAAK1I,CAAC,EACZ,KACA,CACG66F,IAAYA,EAAa,CAAC,KAAM,aAAa,GACjDnyF,EAAM,KAAKmyF,EAAW,IAAI,EAC1B,MAED,IAAK,WACJ,IAAIE,GAAK,IAAKC,GAAK,IACnB,GAAGT,GAAW,EAAG,CAEhB,OADAC,EAAK,GACEnW,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,EAAC,CAE/B,IAAK,GAAGQ,GAAK9oC,GAAK,IAAKoyB,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAIQ,GAAI,MAExD,IAAK,GAAGA,GAAK9oC,GAAK,KAAMoyB,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAIQ,GAAI,MAEzD,IAAK,GAAGC,GAAK/oC,GAAK,IAAKoyB,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAIS,GAAI,MAExD,IAAK,GAAGA,GAAK/oC,GAAK,KAAMoyB,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAIS,GAAI,MACzD,QAEC,GAAGzkF,EAAK,IAAK,MAAM,IAAI,MAAM,+BAAiC8tE,EAAQ,CAAC,EAAEkW,CAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CACxF,CACDA,EAAU,EACV,CACD7xF,EAAM,KAAKqyF,GAAKryF,EAAM,MAAQsyF,EAAE,EAAG,MAEpC,IAAK,YACJtyF,EAAM,KAAK,OAAO,EAAG,MAEtB,IAAK,cACJA,EAAM,KAAK,OAAO,EAAG,MAEtB,IAAK,SACJz/B,EAAI,CAAC,EAAGgyC,EAAE,CAAC,EAAE,CAAC,EAAW,EAAGA,EAAE,CAAC,EAAE,CAAC,CAAU,EAC5C,IAAI04C,GAAK,CAAC,EAAGke,EAAK,EAAG,EAAEA,EAAK,CAAC,EAC7B,GAAGooB,EAAS,QAAQhoB,GAAYhpG,CAAC,CAAC,EAAG,CACpC,IAAIgyH,GAAWhB,EAAS,QAAQhoB,GAAYhpG,CAAC,CAAC,EAC9Cy/B,EAAM,KAAK2xF,GAAkBY,GAAS/mB,EAAQvgB,GAAGsmC,EAAU1jF,CAAI,CAAC,CACrE,KAAW,CACN,IAAI2kF,GAAM,GACV,IAAIpnG,EAAG,EAAEA,GAAImmG,EAAS,OAAO,OAAQ,EAAEnmG,EAGtC,GADAC,EAAKkmG,EAAS,OAAOnmG,CAAE,EACpB,EAAA7qB,EAAE,EAAI8qB,EAAG,CAAC,EAAE,EAAE,GAAK9qB,EAAE,EAAI8qB,EAAG,CAAC,EAAE,EAAE,IACjC,EAAA9qB,EAAE,EAAI8qB,EAAG,CAAC,EAAE,EAAE,GAAK9qB,EAAE,EAAI8qB,EAAG,CAAC,EAAE,EAAE,GACpC,CAAA2U,EAAM,KAAK2xF,GAAkBtmG,EAAG,CAAC,EAAGmgF,EAAQvgB,GAAGsmC,EAAU1jF,CAAI,CAAC,EAC9D2kF,GAAM,GACN,MAEGA,IAAKxyF,EAAM,KAAkBuS,EAAE,CAAC,EACpC,CACD,MAED,IAAK,WACJvS,EAAM,KAAK,IAAMkxF,GAAuB3+E,EAAE,CAAC,CAAC,EAAgB,GAAG,EAC/D,MAED,IAAK,aAEJ,MAED,IAAK,eACL,IAAK,mBACJs/E,EAAU7iC,EACV,MAED,IAAK,SACJ,MAED,IAAK,YACJ,MAED,IAAK,aACJhvD,EAAM,KAAK,EAAE,EACb,MAED,IAAK,aACJA,EAAM,KAAK,OAAO,EAAG,MAEtB,IAAK,eACJA,EAAM,KAAK,OAAO,EAAG,MAEtB,IAAK,UAEJA,EAAM,KAAK,QAAUuS,EAAE,CAAC,EAAE,IAAM,KAAOA,EAAE,CAAC,EAAE,GAAK,GAAG,EACpD,MAED,IAAK,cACL,IAAK,eACL,IAAK,cACL,IAAK,WACL,IAAK,cACJ,MAED,IAAK,aACJ,MACD,IAAK,cACJ,MAED,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,YACJ,MAAM,IAAI,MAAM,kBAAkB,EAEnC,IAAK,YACJ,MAAM,IAAI,MAAM,+BAAiC,OAAOA,CAAC,CAAC,EAC3D,QAAS,MAAM,IAAI,MAAM,+BAAiC,OAAOA,CAAC,CAAC,CACnE,CACD,IAAIkgF,GAAa,CAAC,eAAgB,mBAAoB,aAAa,EACnE,GAAG5kF,EAAK,MAAQ,GAAMgkF,GAAW,GAAKY,GAAW,QAAQ9W,EAAQ,CAAC,EAAE3sB,CAAE,EAAE,CAAC,CAAC,GAAK,GAAI,CAClFz8C,EAAIopE,EAAQ,CAAC,EAAEkW,CAAO,EACtB,IAAIa,GAAQ,GACZ,OAAOngF,EAAE,CAAC,EAAE,CAAC,EAAC,CAEb,IAAK,GAAGmgF,GAAQ,GAEhB,IAAK,GAEJZ,EAAKvoC,GAAK,IAAKh3C,EAAE,CAAC,EAAE,CAAC,CAAC,EAAG,MAC1B,IAAK,GAAGmgF,GAAQ,GAEhB,IAAK,GAEJZ,EAAKvoC,GAAK,KAAMh3C,EAAE,CAAC,EAAE,CAAC,CAAC,EAAG,MAC3B,QAGC,GAFAu/E,EAAK,GAEFjkF,EAAK,IAAK,MAAM,IAAI,MAAM,+BAAiC0E,EAAE,CAAC,EAAE,CAAC,CAAC,CACtE,CACDvS,EAAM,MAAM0yF,GAAQZ,EAAK,IAAM9xF,EAAM,IAAK,GAAI0yF,GAAQ,GAAKZ,EAAG,EAC9DD,EAAU,EACV,CACD,CACD,GAAG7xF,EAAM,OAAS,GAAK6N,EAAK,IAAK,MAAM,IAAI,MAAM,mBAAmB,EACpE,OAAO7N,EAAM,CAAC,CACf,CAuDA,SAAS2yF,GAAmB/yH,EAAO,CAClC,GAAGA,GAAS,KAAM,CAEjB,IAAI03B,EAAI8/D,GAAQ,CAAC,EACjB,OAAA9/D,EAAE,YAAY,EAAG,CAAI,EACrBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,CAAC,EAClBA,EAAE,YAAY,EAAG,KAAM,EAChBA,CACT,SAAW,OAAO13B,GAAS,SAAU,OAAOwuG,GAAWxuG,CAAK,EAC3D,OAAOwuG,GAAW,CAAC,CACpB,CAkBA,SAASwkB,GAAczpB,EAAetV,EAAcgD,EAAchpD,EAAM6oE,EAAe,CAEtF,IAAImc,EAAK5d,GAAcphB,EAAGgD,EAAG6f,CAAE,EAG3BjU,EAAKkwB,GAAmBxpB,EAAK,CAAC,EAG9B2pB,EAAK17B,GAAQ,CAAC,EACd5C,EAAQ,GACZs+B,EAAG,YAAY,EAAGt+B,CAAK,EACvBs+B,EAAG,YAAY,EAAG,CAAC,EAInB,QADIC,EAAK37B,GAAQ+R,EAAK,GAAG,MAAM,EACvBrqG,EAAI,EAAGA,EAAIqqG,EAAK,GAAG,OAAQ,EAAErqG,EAAGi0H,EAAGj0H,CAAC,EAAIqqG,EAAK,GAAGrqG,CAAC,EAEzD,IAAIiqF,EAAMJ,GAAQ,CAACkqC,EAAIpwB,EAAIqwB,EAAIC,CAAE,CAAC,EAClC,OAAOhqC,CACR,CAIA,SAASiqC,GAAwB9+G,EAAM2rB,EAAQgO,EAAM,CACpD,IAAI2gF,EAAMt6G,EAAK,WAAW,CAAC,EACvB68G,EAAOC,GAAW98G,EAAMs6G,EAAK3gF,CAAI,EACjC38B,EAAKgD,EAAK,WAAW,CAAC,EACtB++G,EAAO/hH,EAAK,EAAI4/G,GAAe58G,EAAMhD,EAAI6/G,EAAMljF,CAAI,EAAI,KAC3D,MAAO,CAACkjF,EAAMkC,CAAI,CACnB,CAGA,IAAIC,GAA+BF,GAE/BG,GAA8BH,GAM9BI,GAA8BJ,GAE9BK,GAAgCL,GAChClF,GAAQ,CACV,EAAG,OACH,EAAG,OACH,EAAG,aACH,EAAG,YACH,EAAG,OACH,EAAG,UACH,EAAG,cACH,EAAG,aACH,EAAG,QACH,EAAG,gBACH,GAAI,OACJ,GAAI,aACJ,GAAI,cACJ,GAAI,cACJ,GAAI,cACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,iBACJ,GAAI,mBACJ,GAAI,iBACJ,GAAI,oBACJ,GAAI,OACJ,GAAI,UACJ,GAAI,mBACJ,GAAI,YACJ,GAAI,UACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,YACJ,GAAI,UACJ,GAAI,cACJ,GAAI,eACJ,GAAI,eACJ,GAAI,OACJ,GAAI,cACJ,GAAI,QACJ,GAAI,gBACJ,GAAI,YACJ,GAAI,QACJ,GAAI,SACJ,GAAI,kBACJ,GAAI,eACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,QACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,SACJ,GAAI,aACJ,GAAI,YACJ,GAAI,cACJ,GAAI,eACJ,GAAI,eACJ,GAAI,eACJ,GAAI,mBACJ,GAAI,mBACJ,GAAI,eACJ,GAAI,cACJ,GAAI,iBACJ,GAAI,eACJ,GAAI,cACJ,GAAI,kBACJ,GAAI,cACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,gBACJ,GAAI,OACJ,GAAI,SACJ,GAAI,cACJ,GAAI,YACJ,GAAI,eACJ,GAAI,mBACJ,GAAI,WACJ,GAAI,aACJ,GAAI,UACJ,GAAI,QACJ,GAAI,gBACJ,GAAI,cACJ,GAAI,cACJ,GAAI,QACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,YACJ,GAAI,UACJ,GAAI,eACJ,GAAI,gBACJ,GAAI,iBACJ,IAAK,iBACL,IAAK,oBACL,IAAK,oBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,gBACL,IAAK,gBACL,IAAK,eACL,IAAK,SACL,IAAK,cACL,IAAK,gBACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,cACL,IAAK,iBACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,kBACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,eACL,IAAK,eACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,gBACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,OACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,qBACL,IAAK,yBACL,IAAK,mBACL,IAAK,WACL,IAAK,iBACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,kBACL,IAAK,oBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,SACL,IAAK,SACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,oBACL,IAAK,sBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,oBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACP,EACIL,GAAO,CACT,EAAG,QACH,EAAG,KACH,EAAG,OACH,EAAG,UACH,EAAG,MACH,EAAG,UACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,SACH,GAAI,KACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,KACJ,GAAI,QACJ,GAAI,MACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,QACJ,GAAI,MACJ,GAAI,KACJ,GAAI,MACJ,GAAI,MACJ,GAAI,SACJ,GAAI,OACJ,GAAI,WACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,GAAI,OACJ,GAAI,OACJ,GAAI,SACJ,GAAI,KACJ,GAAI,KACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,OACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,OACJ,GAAI,SACJ,GAAI,SACJ,GAAI,MACJ,GAAI,QACJ,GAAI,OACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,SACJ,GAAI,YACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,WACJ,GAAI,SACJ,GAAI,QACJ,GAAI,UACJ,GAAI,SACJ,GAAI,YACJ,GAAI,cACJ,GAAI,YACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,OACJ,IAAK,SACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,cACL,IAAK,WACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,UACL,IAAK,aACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,IACL,IAAK,IACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,gBACL,IAAK,iBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,aACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,aACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,WACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,aACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,OACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,YACP,EACID,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,I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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,52,53,54,56,61]}