mp-darkmode 1.2.3-beta.6 → 1.2.3-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/darkmode.js +3433 -447
- package/dist/darkmode.js.map +1 -1
- package/dist/darkmode.min.js +1 -1
- package/package.json +3 -2
package/dist/darkmode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://Darkmode/webpack/universalModuleDefinition","webpack://Darkmode/webpack/bootstrap","webpack://Darkmode/./node_modules/color-blend/dist/index.modern.js","webpack://Darkmode/./node_modules/color-name/index.js","webpack://Darkmode/./node_modules/color-string/index.js","webpack://Darkmode/./node_modules/color/index.js","webpack://Darkmode/./node_modules/color/node_modules/color-convert/conversions.js","webpack://Darkmode/./node_modules/color/node_modules/color-convert/index.js","webpack://Darkmode/./node_modules/color/node_modules/color-convert/route.js","webpack://Darkmode/../src/multiply-matrices.js","webpack://Darkmode/../src/util.js","webpack://Darkmode/../src/hooks.js","webpack://Darkmode/../src/defaults.js","webpack://Darkmode/../src/Type.js","webpack://Darkmode/../src/Format.js","webpack://Darkmode/../src/adapt.js","webpack://Darkmode/../src/parse.js","webpack://Darkmode/../src/getColor.js","webpack://Darkmode/../src/ColorSpace.js","webpack://Darkmode/../src/spaces/xyz-d65.js","webpack://Darkmode/../src/RGBColorSpace.js","webpack://Darkmode/../src/tryColor.js","webpack://Darkmode/../src/getAll.js","webpack://Darkmode/../src/get.js","webpack://Darkmode/../src/setAll.js","webpack://Darkmode/../src/set.js","webpack://Darkmode/../src/spaces/xyz-d50.js","webpack://Darkmode/../src/spaces/lab.js","webpack://Darkmode/../src/angles.js","webpack://Darkmode/../src/spaces/lch.js","webpack://Darkmode/../src/deltaE/deltaE2000.js","webpack://Darkmode/../src/spaces/oklab.js","webpack://Darkmode/../src/deltaE/deltaEOK.js","webpack://Darkmode/../src/inGamut.js","webpack://Darkmode/../src/clone.js","webpack://Darkmode/../src/distance.js","webpack://Darkmode/../src/deltaE/deltaE76.js","webpack://Darkmode/../src/deltaE/deltaECMC.js","webpack://Darkmode/../src/spaces/xyz-abs-d65.js","webpack://Darkmode/../src/spaces/jzazbz.js","webpack://Darkmode/../src/spaces/jzczhz.js","webpack://Darkmode/../src/deltaE/deltaEJz.js","webpack://Darkmode/../src/spaces/ictcp.js","webpack://Darkmode/../src/deltaE/deltaEITP.js","webpack://Darkmode/../src/deltaE/deltaEOK2.js","webpack://Darkmode/../src/spaces/cam16.js","webpack://Darkmode/../src/spaces/hct.js","webpack://Darkmode/../src/deltaE/deltaEHCT.js","webpack://Darkmode/../src/deltaE/index.js","webpack://Darkmode/../src/toGamut.js","webpack://Darkmode/../src/to.js","webpack://Darkmode/../src/serialize.js","webpack://Darkmode/../src/spaces/rec2020-linear.js","webpack://Darkmode/../src/spaces/rec2020.js","webpack://Darkmode/../src/spaces/p3-linear.js","webpack://Darkmode/../src/spaces/srgb-linear.js","webpack://Darkmode/../src/keywords.js","webpack://Darkmode/../src/spaces/srgb.js","webpack://Darkmode/../src/spaces/p3.js","webpack://Darkmode/../src/display.js","webpack://Darkmode/../src/deltas.js","webpack://Darkmode/../src/equals.js","webpack://Darkmode/../src/luminance.js","webpack://Darkmode/../src/contrast/WCAG21.js","webpack://Darkmode/../src/contrast/APCA.js","webpack://Darkmode/../src/contrast/Michelson.js","webpack://Darkmode/../src/contrast/Weber.js","webpack://Darkmode/../src/contrast/Lstar.js","webpack://Darkmode/../src/spaces/lab-d65.js","webpack://Darkmode/../src/contrast/deltaPhi.js","webpack://Darkmode/../src/contrast/index.js","webpack://Darkmode/../src/contrast.js","webpack://Darkmode/../src/chromaticity.js","webpack://Darkmode/../src/deltaE.js","webpack://Darkmode/../src/variations.js","webpack://Darkmode/../src/interpolation.js","webpack://Darkmode/../src/spaces/hsl.js","webpack://Darkmode/../src/spaces/hsv.js","webpack://Darkmode/../src/spaces/hwb.js","webpack://Darkmode/../src/spaces/a98rgb-linear.js","webpack://Darkmode/../src/spaces/a98rgb.js","webpack://Darkmode/../src/spaces/prophoto-linear.js","webpack://Darkmode/../src/spaces/prophoto.js","webpack://Darkmode/../src/spaces/rec2020-oetf.js","webpack://Darkmode/../src/spaces/oklch.js","webpack://Darkmode/../src/spaces/okhsl.js","webpack://Darkmode/../src/spaces/oklrab.js","webpack://Darkmode/../src/spaces/oklrch.js","webpack://Darkmode/../src/spaces/okhsv.js","webpack://Darkmode/../src/spaces/luv.js","webpack://Darkmode/../src/spaces/lchuv.js","webpack://Darkmode/../src/spaces/hsluv.js","webpack://Darkmode/../src/spaces/hpluv.js","webpack://Darkmode/../src/spaces/rec2100-linear.js","webpack://Darkmode/../src/spaces/rec2100-pq.js","webpack://Darkmode/../src/spaces/rec2100-hlg.js","webpack://Darkmode/../src/CATs.js","webpack://Darkmode/../src/spaces/acescg.js","webpack://Darkmode/../src/spaces/acescc.js","webpack://Darkmode/../src/spaces/index-fn.js","webpack://Darkmode/../src/color.js","webpack://Darkmode/../src/spaces/index.js","webpack://Darkmode/../src/space-accessors.js","webpack://Darkmode/../src/index.js","webpack://Darkmode/./src/darkmode.js","webpack://Darkmode/./src/modules/bgNodeStack.js","webpack://Darkmode/./src/modules/color.js","webpack://Darkmode/./src/modules/config.js","webpack://Darkmode/./src/modules/constant.js","webpack://Darkmode/./src/modules/cssUtils.js","webpack://Darkmode/./src/modules/domUtils.js","webpack://Darkmode/./src/modules/global.js","webpack://Darkmode/./src/modules/plugins.js","webpack://Darkmode/./src/modules/sdk.js","webpack://Darkmode/./src/modules/textNodeQueue.js"],"names":["skippedModels","hashedModelKeys","_i","_Object$keys","Object","keys","convert","length","model","_toConsumableArray","labels","sort","join","limiters","Color","object","Error","i","channels","color","valpha","result","colorString","get","value","slice","newArray","Array","prototype","call","zeroArray","splice","indexOf","alpha","hashedKeys","JSON","stringify","push","limit","Math","max","min","freeze","toString","string","toJSON","places","_colorString$to","self","to","rgb","round","arguments_","concat","apply","percentString","_colorString$to$rgb","percent","array","unitArray","unitObject","r","g","b","map","roundToPlace","undefined","red","getset","maxfn","green","blue","hue","saturationl","lightness","saturationv","chroma","gray","white","wblack","cyan","magenta","yellow","black","x","y","z","l","a","keyword","hex","_colorString$to2","hexa","_colorString$to3","rgbArray","alphaHex","toUpperCase","rgbNumber","luminosity","lum","_iterator","_createForOfIteratorHelper","entries","_step","s","n","done","_step$value","_slicedToArray","element","chan","pow","err","e","f","contrast","color2","lum1","lum2","level","contrastRatio","isDark","yiq","isLight","negate","lighten","ratio","hsl","darken","saturate","desaturate","whiten","hwb","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","_typeof","color1","p","w","w1","w2","_loop","_Object$keys2","_i2","includes","_len","arguments","_key","assertArray","raw","_len2","_key2","_ret","roundTo","number","Number","toFixed","channel","modifier","isArray","_iterator2","_step2","m","v","reverseKeywords","cssKeywords","key","hsv","cmyk","xyz","lab","oklab","lch","oklch","ansi16","ansi256","hcg","apple","LAB_FT","srgbNonlinearTransform","c","cc","srgbNonlinearTransformInv","_convert$model","defineProperty","delta","h","rdif","gdif","bdif","diff","diffc","lp","cbrt","mp","sp","aa","bb","k","comparativeDistance","reversed","currentClosestDistance","POSITIVE_INFINITY","currentClosestKeyword","_i3","_Object$keys3","distance","t3","t2","t1","smin","lmin","sv","hi","floor","q","t","vmin","sl","wh","bl","ll","y2","x2","z2","hr","atan2","PI","sqrt","cos","sin","args","saturation","_args","ansi","mult","trunc","rem","integer","match","char","parseInt","pure","mg","models","conversions","wrapRaw","fn","wrappedFn","arg0","conversion","wrapRounded","_models","fromModel","routes","route","routeModels","_routeModels","toModel","buildGraph","graph","parent","deriveBFS","queue","current","pop","adjacents","adjacent","node","unshift","link","from","wrapConversion","path","cur","multiplyMatrices","A","B","AM","BM","aVec","bVec","BM_cols","_","product","ret","row","col","dot3","multiply_v3_m3x3","input","matrix","out","isString","str","type","o","toLowerCase","serializeNumber","precision","unit","isNone","toPrecision","skipNone","digits","log10","abs","multiplier","interpolate","start","end","isNaN","interpolateInv","mapRange","clamp","val","copySign","sign","spow","base","exp","zdiv","d","bisectLeft","arr","lo","mid","isInstance","arg","constructor","targetName","name","proto","getPrototypeOf","constructorName","_proto$constructor","Hooks","_classCallCheck","_createClass","callback","first","add","forEach","env","context","hooks","gamut_mapping","deltaE","verbose","globalThis","process","_globalThis$process","_globalThis$process$e","NODE_ENV","_globalThis$process$e2","warn","msg","console","_globalThis$console","_globalThis$console$w","Type","coordMeta","_defineProperty","coordRange","range","refRange","params","trim","TypeError","groups","percentageRange","fromRange","computedRange","toRange","_this$range$","_this$range$2","scale","instance","Symbol","Format","format","space","assign","spaceCoords","values","coords","types","_this2","split","_types","_this3","serialize","id","providedType","_this4","find","coordName","_arg","resolve","WHITES","D50","D65","getWhite","adapt","adapt$2","W1","W2","XYZ","options","run","M","parse","String","_String","parsed","parseFunction","meta","parseMeta","argMeta","_env$parsed$argMeta$i","shift","alternateId","startsWith","substring","ids","ColorSpace","findFormat","didYouMean","registryId","registry","cssId","formats","_ColorSpace$registry$","_ColorSpace$registry$2","altColor","replace","defaults","formatId","commas","lastAlpha","alphaType","coordCount","coerceCoords","spaceId","all","spaceloop","test","formatObject","getFormat","units","deg","grad","rad","turn","regex","unitValue","RegExp","singleArgument","parseArgument","rawArg","_rawArg$match","unitless","NaN","parts","separators","$0","rawName","rawArgs","getColor","ε","aliases","fromBase","toBase","_this$formats$color","gamutSpace","isPolar","isUnbounded","inGamut","referred","getPath","reverse","writable","enumerable","configurable","_ref6$epsilon","epsilon","equals","every","coord","_this$formats","_this$formats$color3","myPath","otherPath","connectionSpace","connectionSpaceIndex","Set","_step3","alias","register","_iterator3","argType","alternatives","filters","spaces","_step4","matches","filterIds","some","_iterator4","ref","workingSpace","coordType","coordId","index","normalizedCoord","_meta$name","RGBColorSpace","_inherits","XYZ_D65","toXYZ_M","fromXYZ_M","_this5","tryColor","cssProperty","getColorOptions","error","CSS","getComputedStyle","supports","previousValue","style","computedColor","getPropertyValue","message","errorMeta","getAll","prop","resolveCoord","setAll","returns","set","ε3","κ","xyz_d50","L","Lab","constrain","angle","adjust","arc","angles","a1","a2","none1","util.isNone","none2","angleDiff","extent","isAchromatic","constrainAngle","C","Gfactor","π","r2d","d2r","pow7","x7","deltaE2000","sample","_ref11$kL","kL","_ref11$kC","kC","_ref11$kH","kH","_lab$from2","L1","b1","C1","_lab$from4","L2","b2","C2","Cbar","C7","G","adash1","adash2","Cdash1","Cdash2","h1","h2","ΔL","ΔC","hdiff","hsum","habs","Δh","ΔH","Ldash","Cdash","Cdash7","hdash","lsq","SL","SC","T","SH","Δθ","RC","RT","dE","XYZtoLMS_M","LMStoXYZ_M","LMStoLab_M","LabtoLMS_M","LMS","OKLab","LMSg","deltaEOK","_Oklab$from2","_Oklab$from4","Δa","Δb","_ref12$epsilon","clone","coords1","coords2","reduce","acc","c1","c2","deltaE76","deltaECMC","_ref13$l","_ref13$c","_lab$from6","_lch$from2","H1","_lab$from8","H2","C4","F","Yw","AbsXYZ","ninv","c3","pinv","d0","XYZtoCone_M","ConetoXYZ_M","ConetoIab_M","IabtoCone_M","jz","az","bz","XYZ_Abs_D65","Xa","Ya","Za","Xm","Ym","PQLMS","num","denom","_multiply_v3_m3x2","Iz","Jz","Jzazbz","_multiply_v3_m3x4","jzazbz","cz","hz","jzczhz","deltaEJz","_jzczhz$from2","Jz1","Cz1","Hz1","_jzczhz$from4","Jz2","Cz2","Hz2","ΔJ","m1","m2","im1","im2","LMStoIPT_M","IPTtoLMS_M","ct","cp","LMStoICtCp","ICtCp","ICtCptoLMS","ictcp","deltaEITP","_ictcp$from2","I1","T1","P1","_ictcp$from4","I2","T2","P2","deltaEOK2","abscale","_Oklab$from6","_Oklab$from8","adaptedCoef","adaptedCoefInv","tau","cat16","cat16Inv","surroundMap","dark","dim","average","hueQuadMap","H","rad2deg","deg2rad","adapt$1","fl","temp","unadapt","adapted","constant","cabs","hueQuadrature","hp","_hueQuadMap$h$slice2","hii","_hueQuadMap$e$slice2","ei","eii","Hi","invHueQuadrature","Hp","_hueQuadMap$h$slice4","_hueQuadMap$e$slice4","environment","refWhite","adaptingLuminance","backgroundLuminance","surround","discounting","xyzW","la","yb","yw","rgbW","nc","k4","flRoot","nbb","ncb","dRgb","dRgbInv","rgbCW","rgbAW","aW","viewingConditions","fromCam16","cam16","J","Q","hRad","cosh","sinh","Jroot","et","p1","p2","rgb_c","toCam16","xyzd65","xyz100","rgbA","j","xyz_d65","toLstar","fy","fromLstar","lstar","fromHct","threshold","max_attempts","attempt","last","Infinity","toHct","hct","ucsCoeff","convertUcsAb","log","hrad","deltaEHCT","_convertUcsAb2","_convertUcsAb4","calcEpsilon","jnd","order","parseFloat","GMAPPRESET","method","deltaEMethod","blackWhiteClamp","toGamut","_ref14$method","_ref14$space","_ref14$deltaEMethod","_ref14$jnd","_ref14$blackWhiteClam","util.isString","spaceColor","toGamutCSS","hasOwnProperty","de","deltaEMethods","clipped","channelMeta","mapSpace","mappedColor","bounds","low","high","COLORS","WHITE","BLACK","origin","JND","oklchSpace","origin_OKLCH","clip","_color","destColor","util.clamp","min_inGamut","E","_options$inGamut","coordFormat","alphaFormat","colorWithMeta","canSerialize","DEFAULT_FORMAT","checkInGamut","serializeCoords","_format$ids","include","_alphaFormat2","serializeAlpha","_alphaFormat3","_alphaFormat4","strAlpha","util.serializeNumber","REC2020Linear","RGB","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","coordGrammar","fill","coordGrammarNumber","sRGBLinear","rgb_number","rgba","rgba_number","component","_ref17$collapse","collapse","collapsible","padStart","KEYWORDS","P3Linear","sRGB","display_space","supportsNone","REC2020","P3","getMinCoords","display","_ref18$space","fallbackColor","hasNone","deltas","_ref19$hue","_map4","coord1","coord2","subtractCoords","getLuminance","setLuminance","register$2","contrastWCAG21","Y1","Y2","normBG","normTXT","revTXT","revBG","blkThrs","blkClmp","loClip","deltaYmin","scaleBoW","loBoWoffset","scaleWoB","fclamp","Y","linearize","contrastAPCA","background","foreground","S","Sapc","R","lumTxt","lumBg","Ytxt","Ybg","BoW","contrastMichelson","contrastWeber","contrastLstar","phi","contrastDeltaPhi","Lstr1","lab_d65","Lstr2","deltaPhiStar","SQRT2","algorithm","rest","algorithms","contrastAlgorithms","uv","_getAll2","X","Z","xy","_getAll4","sum","register$1","_o$method","amount","steps","colorRange","isRange","rangeArgs","colors","maxDeltaE","_options$steps","_options$maxSteps","maxSteps","rangeOptions","totalDelta","actualSteps","ceil","step","maxDelta","ΔΕ","prev","outputSpace","progression","premultiplied","interpolationSpace","θ1","θ2","angles.adjust","defineFunction","hsla","HSV","A98Linear","XYZ_D50","Et","Et2","ProPhotoLinear","α","β","toSRGBLinear","RGBCoeff","floatMax","MAX_VALUE","K1","K2","K3","vdot","toe","toeInv","toSt","cusp","getStMid","oklabToLinearRGB","lmsToRgb","lms","findCusp","okCoeff","sCusp","computeMaxSaturation","lCusp","cCusp","findGamutIntersection","l1","l0","dl","dc","kl","km","ks","ldt_","mdt_","sdt_","l_","m_","s_","ldt","mdt","sdt","ldt2","mdt2","sdt2","r_","r1","r2","ur","tr","g_","g1","g2","ug","tg","b_","ub","tb","getCs","cMax","stMax","stMid","ca","cb","cMid","c0","k0","k1","k2","k3","wl","wm","ws","sat","lds","mds","sds","lds2","mds2","sds2","f1","f2","okhslToOklab","a_","_getCs2","midInv","oklabToOkhsl","εL","εS","_getCs4","achromatic","Oklab","oklrab","OKLrab","okhsvToOklab","_toSt2","sMax","tMax","s0","lv","cv","lvt","cvt","lNew","_oklabToLinearRGB2","rs","gs","bs","scaleL","oklabToOkhsv","_toSt4","_oklabToLinearRGB4","_uv2","U_PRIME_WHITE","V_PRIME_WHITE","u","_uv4","up","vp","isFinite","Luv","m_r0","m_r1","m_r2","m_g0","m_g1","m_g2","m_b0","m_b1","m_b2","distanceFromOriginAngle","slope","intercept","calculateBoundingLines","sub1","sub2","s1r","s2r","s3r","s1g","s2g","s3g","s1b","s2b","s3b","r0s","r0i","r1s","r1i","g0s","g0i","g1s","g1i","b0s","b0i","b1s","b1i","calcMaxChromaHsluv","lines","hueRad","r0","g0","b0","LCHuv","distanceFromOrigin","calcMaxChromaHpluv","REC_2020_Linear","minv","REC_2100_Linear","CATs","defineCAT","toCone_M","fromCone_M","_multiplyMatrices2","ρs","γs","βs","_multiplyMatrices4","ρd","γd","βd","scaled_cone_M","adapt_M","D55","D75","F2","F7","F11","ACES","ACES_min_nonzero","ACES_cc_max","log2","ACEScg","_this6","util.isInstance","code","func","exports","defineFunctions","util","Space","addSpaceAccessors","_space$aliases","propId","Proxy","proxy","has","obj","property","Reflect","receiver","_this7","extend","variations","chromaticity","luminance","interpolation","contrastMethods","classReg","CLASS_PREFIX","mql","switchToDarkmode","mqlObj","opt","force","cssUtils","isFinish","sdk","isDarkmode","config","mode","begin","domUtils","hasDelay","className","plugins","needJudgeFirstPage","addCss","rect","getBoundingClientRect","top","bottom","PAGE_HEIGHT","addFirstPageNode","writeStyle","showFirstPageNodes","showFirstPage","loopTimes","tnQueue","text","bgStack","contains","bg","genCss","cssKV","els","elOld","el","_el$COLORATTR","_el$BGCOLORATTR","_el$ORIGINAL_COLORATT","_el$ORIGINAL_BGCOLORA","_el$BGIMAGEATTR","_el$COMPLEMENTARY_BGI","inheritAttrs","COLORATTR","BGCOLORATTR","ORIGINAL_COLORATTR","ORIGINAL_BGCOLORATTR","BGIMAGEATTR","COMPLEMENTARY_BGIMAGECOLORATTR","children","getChildrenAndIt","child","_ref","_ref2","attr","emptyFirstPageNodes","delayBgJudge","container","delay","nodes","init","hasInit","tagName","whitelist","attribute","item","document","getElementsByTagName","classList","HTML_CLASS","window","matchMedia","MEDIA_QUERY","addListener","convertBg","update","updateStyle","styles","getContrast","pluginList","plugin","BgNodeStack","prefix","_prefix","classNameReg","_idx","_stack","updated","idxStack","bgRect","left","right","idx","nodeType","COLOR_NAME","_objectSpread","ColorName","windowtext","transparent","COLOR_NAME_REG","colorName","color2ColorBlend","colorBlend2Color","colorBlend","ColorParser","res","ColorJS","parseColorName","supportTransparent","IMPORTANT_REGEXP","parseWebkitFillColorAndStrokeColor","newValue","COLOR_REGEXP","mixColors","ColorBlend","getColorPerceivedBrightness","adjustBrightnessTo","target","relativeBrightnessRatio","newTextR","newTextG","newTextB","cssSelectorsPrefix","defaultLightTextColor","DEFAULT_LIGHT_TEXTCOLOR","defaultLightBgColor","DEFAULT_LIGHT_BGCOLOR","defaultDarkTextColor","DEFAULT_DARK_TEXTCOLOR","defaultDarkBgColor","DEFAULT_DARK_BGCOLOR","HTMLElement","DM_CLASSNAME_REGEXP","RANDOM","Date","random","BG_COLOR_DELIMITER","WHITE_LIKE_COLOR_BRIGHTNESS","MAX_LIMIT_BGCOLOR_BRIGHTNESS","MIN_LIMIT_OFFSET_BRIGHTNESS","HIGH_BGCOLOR_BRIGHTNESS","HIGH_BLACKWHITE_HSL_BRIGHTNESS","LOW_BLACKWHITE_HSL_BRIGHTNESS","IGNORE_ALPHA","getInnerHeight","innerHeight","documentElement","clientHeight","CSS_PROP_SERIES","BG_COLOR","TEXT_SHADOW","TEXT_COLOR","BORDER_COLOR","CSS_PROP_LIST","TABLE_NAME","SEMICOLON_PLACEHOLDER","SEMICOLON_PLACEHOLDER_REGEXP","COLOR_REGEXP_STR","COLOR_REGEXP_GLOBAL","CssUtils","genCssKV","_this$_watcher$key","_this$_watcher","_watcher","css","isFirstPageStyle","needMediaQuery","_ref$key","other","styleKey","head","insertAdjacentHTML","watch","unwatch","exceptIt","querySelectorAll","hasTextNode","textContent","tableClassObj","hasTableClass","DomUtils","_els","_delayEls","_this","_firstPageEls","visibility","Plugins","TextNodeQueue","SDK","cssNeedMQ","cssNoMQ","Plugin","kvList","_plugins","emit","firstPageStyle","firstPageStyleNoMQ","otherPageStyle","otherPageStyleNoMQ","resetCss","_adjustBrightness","isUpdate","needReset","newColor","extStyle","isBgColor","dom","_adjustBackgroundBrightness","hasInlineColor","parentTextColorStr","parentTextColor","isTextColor","parentElementBgColorStr","isBorderColor","parentElementBgColor","_adjustTextBrightness","emitNameSuffix","fontColor","bgColor","isTextShadow","textColor","bgColorRgb","bgColorAlpha","bgColorPerceivedBrightness","bgColorWithOpacityPerceivedBrightness","_defaultDarkBgColorBrightness","textColorRgb","textColorHSL","textColorAlpha","textPerceivedBrightness","offsetPerceivedBrightness","_maxLimitOffsetBrightness","tmpTextColor","bgColorHsl","_defaultDarkBgColorHslBrightness","_updateBgWithGradient","gradientColor","cssKVList","newBgColor","newOriginalBgColor","lastKV","_try","_defaultDarkTextColorRgb","_defaultDarkBgColorRgb","_defaultDarkBgColorHSL","_defaultDarkTextColorBrightness","bgCss","nodeName","hasAttribute","cssText","cssStr","splitIdx","hasInlineBackground","hasInlineBackgroundImage","elBackgroundPositionAttr","elBackgroundSizeAttr","filter","_ref3","_ref4","_ref5","key1","_ref6","key2","colorStr","getAttribute","webkitFillColor","webkitStrokeColor","webkitTextLen","_ref7","_ref8","dmClassName","dmBgClassName","noColor","_ref9","_ref10","oldValue","cssChange","textColorIdx","isGradient","gradientColors","gradientMixColor","exec","replaceIndex","matchColor","retColor","retColorStr","SVGElement","isBackgroundAttr","isBorderImageAttr","imgBgColor","tmpCssKvStr","bgStackItem","bgEl","colorStr1","colorStr2","_queue"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAkB,OAAO,4EAA4E,gBAAgB,SAAS,gBAAgB,WAAW,gBAAgB,eAAe,gBAAgB,cAAc,gBAAgB,qBAAqB,gBAAgB,iCAAiC,gBAAgB,2CAA2C,gBAAgB,6CAA6C,gBAAgB,iCAAiC,gBAAgB,qFAAqF,gBAAgB,qBAAqB,gBAAgB,iBAAiB,kBAAkB,oCAAoC,cAAc,OAAO,2DAA2D,cAAc,OAAO,qCAAqC,cAAc,OAAO,qCAAqC,gBAAgB,kBAAkB,qBAAqB,OAAO,yEAAyE,wBAAwB,4CAA4C,sBAAsB,gBAAgB,0CAA0C,sCAAsC,6CAA6C,qFAAqF,EAAE,0DAA0D,cAAc,MAAM,kBAAkB,uBAAuB,cAAc,6BAA6B,gBAAgB,aAAa,mBAAmB,iEAAiE,cAAc,uBAAuB,cAAc,2BAA2B,gEAAgE,aAAa,EAAE,wBAAwB,EAAE,cAAc,mDAAmD,gBAAgB,uCAAuC,iBAAiB,0BAA0B,mBAAmB,8EAA8E,gBAAgB,yBAAyB,gBAAgB,yBAAyB,gBAAgB,iBAAiB,gBAAgB,iBAAiB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAkB,gBAAgB,kBAAsP;AACr6F;;;;;;;;;;;;;ACDA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACe,oFAAqB,E;;;;;;;;;;;;ACxJpC;AAAA;AAAoC;;AAEpC;;AAEA;AACA,mBAAmB,kDAAU;AAC7B,mBAAmB,kDAAU;AAC7B,eAAe,kDAAU;AACzB;AACA;;AAEA;AACA,OAAO;AACP,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,IAAI;AAC9B,yBAAyB,EAAE,UAAU,EAAE;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA,qBAAqB,kDAAU;AAC/B;AACA;;AAEA;AACA,QAAQ,kDAAU;AAClB;;AAEA;AACA,EAAE;AACF;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,IAAI;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC,IAAI;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe,iEAAE,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtOqB;AACH;AAEpC,IAAMA,aAAa,GAAG;AACrB;AACA,SAAS;AAET;AACA,MAAM;AAEN;AACA,KAAK,CACL;AAED,IAAMC,eAAe,GAAG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","file":"darkmode.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Darkmode\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Darkmode\"] = factory();\n\telse\n\t\troot[\"Darkmode\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/darkmode.js\");\n","function n(n,r,t){return{r:255*t(n.r/255,r.r/255),g:255*t(n.g/255,r.g/255),b:255*t(n.b/255,r.b/255)}}function r(n,r){return r}function t(n,r){return n*r}function u(n,r){return n+r-n*r}function i(n,r){return a(r,n)}function o(n,r){return Math.min(n,r)}function e(n,r){return Math.min(Math.max(n,r),1)}function c(n,r){return 0===n?0:1===r?1:Math.min(1,n/(1-r))}function f(n,r){return 1===n?1:0===r?0:1-Math.min(1,(1-n)/r)}function a(n,r){return r<=.5?t(n,2*r):u(n,2*r-1)}function b(n,r){return r<=.5?n-(1-2*r)*n*(1-n):n+(2*r-1)*((n<=.25?((16*n-12)*n+4)*n:Math.sqrt(n))-n)}function g(n,r){return Math.abs(n-r)}function h(n,r){return n+r-2*n*r}function M(n,r,t){return Math.min(Math.max(n||0,r),t)}function m(n){return{r:M(n.r,0,255),g:M(n.g,0,255),b:M(n.b,0,255),a:M(n.a,0,1)}}function d(n){return{r:255*n.r,g:255*n.g,b:255*n.b,a:n.a}}function p(n){return{r:n.r/255,g:n.g/255,b:n.b/255,a:n.a}}function v(n,r){void 0===r&&(r=0);var t=Math.pow(10,r);return{r:Math.round(n.r*t)/t,g:Math.round(n.g*t)/t,b:Math.round(n.b*t)/t,a:n.a}}function x(n,r,t,u,i,o){return(1-r/t)*u+r/t*Math.round((1-n)*i+n*o)}function O(n,r,t,u,i){void 0===i&&(i={unitInput:!1,unitOutput:!1,roundOutput:!0}),i.unitInput&&(n=d(n),r=d(r)),n=m(n);var o=(r=m(r)).a+n.a-r.a*n.a,e=t(n,r,u),c=m({r:x(n.a,r.a,o,n.r,r.r,e.r),g:x(n.a,r.a,o,n.g,r.g,e.g),b:x(n.a,r.a,o,n.b,r.b,e.b),a:o});return c=i.unitOutput?p(c):i.roundOutput?v(c):function(n){return v(n,9)}(c),c}function s(n,r,t){return d(t(p(n),p(r)))}function I(n){return.3*n.r+.59*n.g+.11*n.b}function q(n,r){var t=r-I(n);return function(n){var r=I(n),t=n.r,u=n.g,i=n.b,o=Math.min(t,u,i),e=Math.max(t,u,i);function c(n){return r+(n-r)*r/(r-o)}function f(n){return r+(n-r)*(1-r)/(e-r)}return o<0&&(t=c(t),u=c(u),i=c(i)),e>1&&(t=f(t),u=f(u),i=f(i)),{r:t,g:u,b:i}}({r:n.r+t,g:n.g+t,b:n.b+t})}function w(n){return Math.max(n.r,n.g,n.b)-Math.min(n.r,n.g,n.b)}function j(n,r){var t=[\"r\",\"g\",\"b\"].sort(function(r,t){return n[r]-n[t]}),u=t[0],i=t[1],o=t[2],e={r:n.r,g:n.g,b:n.b};return e[o]>e[u]?(e[i]=(e[i]-e[u])*r/(e[o]-e[u]),e[o]=r):e[i]=e[o]=0,e[u]=0,e}function k(n,r){return q(j(r,w(n)),I(n))}function l(n,r){return q(j(n,w(r)),I(n))}function y(n,r){return q(r,I(n))}function z(n,r){return q(n,I(r))}function A(t,u){return O(t,u,n,r)}function B(r,u){return O(r,u,n,t)}function C(r,t){return O(r,t,n,u)}function D(r,t){return O(r,t,n,i)}function E(r,t){return O(r,t,n,o)}function F(r,t){return O(r,t,n,e)}function G(r,t){return O(r,t,n,c)}function H(r,t){return O(r,t,n,f)}function J(r,t){return O(r,t,n,a)}function K(r,t){return O(r,t,n,b)}function L(r,t){return O(r,t,n,g)}function N(r,t){return O(r,t,n,h)}function P(n,r){return O(n,r,s,k)}function Q(n,r){return O(n,r,s,l)}function R(n,r){return O(n,r,s,y)}function S(n,r){return O(n,r,s,z)}export{R as color,H as colorBurn,G as colorDodge,E as darken,L as difference,N as exclusion,J as hardLight,P as hue,F as lighten,S as luminosity,B as multiply,A as normal,D as overlay,Q as saturation,C as screen,K as softLight};\n//# sourceMappingURL=index.modern.js.map\n","const colors = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50],\n}\n\nfor (const key in colors) Object.freeze(colors[key]);\nexport default Object.freeze(colors);","import colorNames from 'color-name';\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in colorNames) {\n\tif (Object.hasOwn(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)\\s*(?:[\\s,|/]\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(%?)\\s*)?\\)$/i;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/i;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseFloat(match[i + 1]);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.toLowerCase().match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/prefer-spread\n\t\trgb = colorNames[match[1]].slice();\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\nexport default cs;\n","import colorString from 'color-string';\nimport convert from 'color-convert';\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](...arguments_);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(...arguments_);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(...this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(...rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_colour_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...arguments_) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments_.length > 0) {\n\t\t\treturn new Color(arguments_, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...arguments_) {\n\t\tlet color = arguments_[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(arguments_, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] ||= [])[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nexport default Color;\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nimport cssKeywords from 'color-name';\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\toklab: {channels: 3, labels: ['okl', 'oka', 'okb']},\n\tlch: {channels: 3, labels: 'lch'},\n\toklch: {channels: 3, labels: ['okl', 'okc', 'okh']},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']},\n};\n\nexport default convert;\n\n// LAB f(t) constant\nconst LAB_FT = (6 / 29) ** 3;\n\n// SRGB non-linear transform functions\nfunction srgbNonlinearTransform(c) {\n\tconst cc = c > 0.003_130_8\n\t\t? ((1.055 * (c ** (1 / 2.4))) - 0.055)\n\t\t: c * 12.92;\n\treturn Math.min(Math.max(0, cc), 1);\n}\n\nfunction srgbNonlinearTransformInv(c) {\n\treturn c > 0.040_45 ? (((c + 0.055) / 1.055) ** 2.4) : (c / 12.92);\n}\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tswitch (max) {\n\t\tcase min: {\n\t\t\th = 0;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase r: {\n\t\t\th = (g - b) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase g: {\n\t\t\th = 2 + (b - r) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase b: {\n\t\t\th = 4 + (r - g) / delta;\n\n\t\t\tbreak;\n\t\t}\n\t// No default\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tswitch (v) {\n\t\t\tcase r: {\n\t\t\t\th = bdif - gdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase g: {\n\t\t\t\th = (1 / 3) + rdif - bdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase b: {\n\t\t\t\th = (2 / 3) + gdif - rdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// No default\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100,\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.oklab = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst lp = Math.cbrt(0.412_221_470_8 * r + 0.536_332_536_3 * g + 0.051_445_992_9 * b);\n\tconst mp = Math.cbrt(0.211_903_498_2 * r + 0.680_699_545_1 * g + 0.107_396_956_6 * b);\n\tconst sp = Math.cbrt(0.088_302_461_9 * r + 0.281_718_837_6 * g + 0.629_978_700_5 * b);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst aa = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst bb = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, aa * 100, bb * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Number.POSITIVE_INFINITY;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn [...cssKeywords[keyword]];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst x = (r * 0.412_456_4) + (g * 0.357_576_1) + (b * 0.180_437_5);\n\tconst y = (r * 0.212_672_9) + (g * 0.715_152_2) + (b * 0.072_175);\n\tconst z = (r * 0.019_333_9) + (g * 0.119_192) + (b * 0.950_304_1);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t3;\n\tlet value;\n\n\tif (s === 0) {\n\t\tvalue = l * 255;\n\t\treturn [value, value, value];\n\t}\n\n\tconst t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tvalue = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tvalue = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tvalue = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tvalue = t1;\n\t\t}\n\n\t\trgb[i] = value * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0: {\n\t\t\treturn [v, t, p];\n\t\t}\n\n\t\tcase 1: {\n\t\t\treturn [q, v, p];\n\t\t}\n\n\t\tcase 2: {\n\t\t\treturn [p, v, t];\n\t\t}\n\n\t\tcase 3: {\n\t\t\treturn [p, q, v];\n\t\t}\n\n\t\tcase 4: {\n\t\t\treturn [t, p, v];\n\t\t}\n\n\t\tcase 5: {\n\t\t\treturn [v, p, q];\n\t\t}\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\t// eslint-disable-next-line no-bitwise\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces, default-case-last */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: { r = v; g = n; b = wh; break;\n\t\t}\n\n\t\tcase 1: { r = n; g = v; b = wh; break;\n\t\t}\n\n\t\tcase 2: { r = wh; g = v; b = n; break;\n\t\t}\n\n\t\tcase 3: { r = wh; g = n; b = v; break;\n\t\t}\n\n\t\tcase 4: { r = n; g = wh; b = v; break;\n\t\t}\n\n\t\tcase 5: { r = v; g = wh; b = n; break;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces, default-case-last */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.240_454_2) + (y * -1.537_138_5) + (z * -0.498_531_4);\n\tg = (x * -0.969_266) + (y * 1.876_010_8) + (z * 0.041_556);\n\tb = (x * 0.055_643_4) + (y * -0.204_025_9) + (z * 1.057_225_2);\n\n\t// Assume sRGB\n\tr = srgbNonlinearTransform(r);\n\tg = srgbNonlinearTransform(g);\n\tb = srgbNonlinearTransform(b);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.xyz.oklab = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\n\tconst lp = Math.cbrt(0.818_933_010_1 * x + 0.361_866_742_4 * y - 0.128_859_713_7 * z);\n\tconst mp = Math.cbrt(0.032_984_543_6 * x + 0.929_311_871_5 * y + 0.036_145_638_7 * z);\n\tconst sp = Math.cbrt(0.048_200_301_8 * x + 0.264_366_269_1 * y + 0.633_851_707 * z);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst a = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst b = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, a * 100, b * 100];\n};\n\nconvert.oklab.oklch = function (oklab) {\n\treturn convert.lab.lch(oklab);\n};\n\nconvert.oklab.xyz = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst a = oklab[1] / 100;\n\tconst b = oklab[2] / 100;\n\n\tconst l = (0.999_999_998 * ll + 0.396_337_792 * a + 0.215_803_758 * b) ** 3;\n\tconst m = (1.000_000_008 * ll - 0.105_561_342 * a - 0.063_854_175 * b) ** 3;\n\tconst s = (1.000_000_055 * ll - 0.089_484_182 * a - 1.291_485_538 * b) ** 3;\n\n\tconst x = 1.227_013_851 * l - 0.557_799_98 * m + 0.281_256_149 * s;\n\tconst y = -0.040_580_178 * l + 1.112_256_87 * m - 0.071_676_679 * s;\n\tconst z = -0.076_381_285 * l - 0.421_481_978 * m + 1.586_163_22 * s;\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.oklab.rgb = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst aa = oklab[1] / 100;\n\tconst bb = oklab[2] / 100;\n\n\tconst l = (ll + 0.396_337_777_4 * aa + 0.215_803_757_3 * bb) ** 3;\n\tconst m = (ll - 0.105_561_345_8 * aa - 0.063_854_172_8 * bb) ** 3;\n\tconst s = (ll - 0.089_484_177_5 * aa - 1.291_485_548 * bb) ** 3;\n\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransform(4.076_741_662_1 * l - 3.307_711_591_3 * m + 0.230_969_929_2 * s);\n\tconst g = srgbNonlinearTransform(-1.268_438_004_6 * l + 2.609_757_401_1 * m - 0.341_319_396_5 * s);\n\tconst b = srgbNonlinearTransform(-0.004_196_086_3 * l - 0.703_418_614_7 * m + 1.707_614_701 * s);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.oklch.oklab = function (oklch) {\n\treturn convert.lch.lab(oklch);\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n\n\t// Illuminant D65 XYZ Tristrimulus Values\n\t// https://en.wikipedia.org/wiki/CIE_1931_color_space\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t/* eslint-disable no-bitwise */\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\t\t/* eslint-enable no-bitwise */\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\t// eslint-disable-next-line no-bitwise\n\tif (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\targs = args[0];\n\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (Math.trunc(args > 50) + 1) * 0.5;\n\t/* eslint-disable no-bitwise */\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\targs = args[0];\n\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\t/* eslint-disable no-bitwise */\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = [...colorString].map(char => char + char).join('');\n\t}\n\n\tconst integer = Number.parseInt(colorString, 16);\n\t/* eslint-disable no-bitwise */\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet hue;\n\n\tconst grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else if (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else if (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2 * s * l) : (2 * s * (1 - l));\n\n\tlet f = 0;\n\tif (c < 1) {\n\t\tf = (l - 0.5 * c) / (1 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0: {\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 1: {\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 2: {\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\t}\n\n\t\tcase 3: {\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\t}\n\n\t\tcase 4: {\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\t}\n\n\t\tdefault: {\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255,\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1 - c);\n\tlet f = 0;\n\n\tif (v > 0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else if (l >= 0.5 && l < 1) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65_535) * 255, (apple[1] / 65_535) * 255, (apple[2] / 65_535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65_535, (rgb[1] / 255) * 65_535, (rgb[2] / 255) * 65_535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\t/* eslint-disable no-bitwise */\n\tconst value = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (value << 16) + (value << 8) + value;\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [value / 255 * 100];\n};\n","import conversions from './conversions.js';\nimport route from './route.js';\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let {length} = result, i = 0; i < length; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfor (const fromModel of models) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\tfor (const toModel of routeModels) {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t}\n}\n\nexport default convert;\n","import conversions from './conversions.js';\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null,\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length > 0) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let {length} = adjacents, i = 0; i < length; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nfunction route(fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n}\n\nexport default route;\n","/** @import { Matrix3x3, Vector3 } from \"./types.js\" */\n\n/**\n * A is m x n. B is n x p. product is m x p.\n *\n * Array arguments are treated like vectors:\n * - A becomes 1 x n\n * - B becomes n x 1\n *\n * Returns Matrix m x p or equivalent array or number\n *\n * @overload\n * @param {number[]} A Vector 1 x n\n * @param {number[]} B Vector n x 1\n * @returns {number} Scalar number\n *\n * @overload\n * @param {number[][]} A Matrix m x n\n * @param {number[]} B Vector n x 1\n * @returns {number[]} Array with length m\n *\n * @overload\n * @param {number[]} A Vector 1 x n\n * @param {number[][]} B Matrix n x p\n * @returns {number[]} Array with length p\n *\n * @overload\n * @param {number[][]} A Matrix m x n\n * @param {number[][]} B Matrix n x p\n * @returns {number[][]} Matrix m x p\n *\n * @param {number[] | number[][]} A Matrix m x n or a vector\n * @param {number[] | number[][]} B Matrix n x p or a vector\n * @returns {number | number[] | number[][]} Matrix m x p or equivalent array or number\n */\nexport default function multiplyMatrices (A, B) {\n\tlet m = A.length;\n\t/** @type {number[][]} */\n\tlet AM;\n\t/** @type {number[][]} */\n\tlet BM;\n\tlet aVec = false;\n\tlet bVec = false;\n\n\tif (!Array.isArray(A[0])) {\n\t\t// A is vector, convert to [[a, b, c, ...]]\n\t\tAM = [/** @type {number[]} */ (A)];\n\t\tm = AM.length;\n\t\taVec = true;\n\t}\n\telse {\n\t\tAM = /** @type {number[][]} */ (A);\n\t}\n\n\tif (!Array.isArray(B[0])) {\n\t\t// B is vector, convert to [[a], [b], [c], ...]]\n\t\tBM = B.length > 0 ? B.map(x => [x]) : [[]]; // Avoid mapping empty array\n\t\tbVec = true;\n\t}\n\telse {\n\t\tBM = /** @type {number[][]} */ (B);\n\t}\n\n\tlet p = BM[0].length;\n\tlet BM_cols = BM[0].map((_, i) => BM.map(x => x[i])); // transpose B\n\t/** @type {number[] | number[][]} */\n\tlet product = AM.map(row =>\n\t\tBM_cols.map(col => {\n\t\t\tlet ret = 0;\n\n\t\t\tif (!Array.isArray(row)) {\n\t\t\t\tfor (let c of col) {\n\t\t\t\t\tret += row * c;\n\t\t\t\t}\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < row.length; i++) {\n\t\t\t\tret += row[i] * (col[i] || 0);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}));\n\n\tif (m === 1 && aVec) {\n\t\tproduct = product[0]; // Avoid [[a, b, c, ...]]\n\t}\n\tif (p === 1 && bVec) {\n\t\tif (m === 1 && aVec) {\n\t\t\treturn product[0]; // Avoid [[a]], return a number\n\t\t}\n\t\telse {\n\t\t\treturn product.map(x => x[0]); // Avoid [[a], [b], [c], ...]]\n\t\t}\n\t}\n\n\treturn product;\n}\n\n// dot3 and transform functions adapted from https://github.com/texel-org/color/blob/9793c7d4d02b51f068e0f3fd37131129a4270396/src/core.js\n//\n// The MIT License (MIT)\n// Copyright (c) 2024 Matt DesLauriers\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE\n// OR OTHER DEALINGS IN THE SOFTWARE.\n\n/**\n * Returns the dot product of two vectors each with a length of 3.\n *\n * @param {Vector3} a\n * @param {Vector3} b\n * @returns {number}\n */\nfunction dot3 (a, b) {\n\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\n/**\n * Transforms a vector of length 3 by a 3x3 matrix. Specify the same input and output\n * vector to transform in place.\n *\n * @param {Vector3} input\n * @param {Matrix3x3} matrix\n * @param {Vector3} [out]\n * @returns {Vector3}\n */\nexport function multiply_v3_m3x3 (input, matrix, out = [0, 0, 0]) {\n\tconst x = dot3(input, matrix[0]);\n\tconst y = dot3(input, matrix[1]);\n\tconst z = dot3(input, matrix[2]);\n\tout[0] = x;\n\tout[1] = y;\n\tout[2] = z;\n\treturn out;\n}\n","/**\n * Various utility functions\n */\n\nexport { default as multiplyMatrices, multiply_v3_m3x3 } from \"./multiply-matrices.js\";\n\n/**\n * Check if a value is a string (including a String object)\n * @param {any} str - Value to check\n * @returns {str is string}\n */\nexport function isString (str) {\n\treturn type(str) === \"string\";\n}\n\n/**\n * Determine the internal JavaScript [[Class]] of an object.\n * @param {any} o - Value to check\n * @returns {string}\n */\nexport function type (o) {\n\tlet str = Object.prototype.toString.call(o);\n\n\treturn (str.match(/^\\[object\\s+(.*?)\\]$/)[1] || \"\").toLowerCase();\n}\n\n/**\n * @param {number} n\n * @param {{ precision?: number | undefined, unit?: string | undefined }} options\n * @returns {string}\n */\nexport function serializeNumber (n, { precision = 16, unit }) {\n\tif (isNone(n)) {\n\t\treturn \"none\";\n\t}\n\n\tn = +toPrecision(n, precision);\n\n\treturn n + (unit ?? \"\");\n}\n\n/**\n * Check if a value corresponds to a none argument\n * @param {any} n - Value to check\n * @returns {n is null}\n */\nexport function isNone (n) {\n\treturn n === null;\n}\n\n/**\n * Replace none values with 0\n * @param {number | null} n\n * @returns {number}\n */\nexport function skipNone (n) {\n\treturn isNone(n) ? 0 : n;\n}\n\n/**\n * Round a number to a certain number of significant digits\n * @param {number} n - The number to round\n * @param {number} precision - Number of significant digits\n */\nexport function toPrecision (n, precision) {\n\tif (n === 0) {\n\t\treturn 0;\n\t}\n\tlet integer = ~~n;\n\tlet digits = 0;\n\tif (integer && precision) {\n\t\tdigits = ~~Math.log10(Math.abs(integer)) + 1;\n\t}\n\tconst multiplier = 10.0 ** (precision - digits);\n\treturn Math.floor(n * multiplier + 0.5) / multiplier;\n}\n\n/**\n * @param {number} start\n * @param {number} end\n * @param {number} p\n */\nexport function interpolate (start, end, p) {\n\tif (isNaN(start)) {\n\t\treturn end;\n\t}\n\n\tif (isNaN(end)) {\n\t\treturn start;\n\t}\n\n\treturn start + (end - start) * p;\n}\n\n/**\n * @param {number} start\n * @param {number} end\n * @param {number} value\n */\nexport function interpolateInv (start, end, value) {\n\treturn (value - start) / (end - start);\n}\n\n/**\n * @param {[number, number]} from\n * @param {[number, number]} to\n * @param {number} value\n */\nexport function mapRange (from, to, value) {\n\tif (\n\t\t!from ||\n\t\t!to ||\n\t\tfrom === to ||\n\t\t(from[0] === to[0] && from[1] === to[1]) ||\n\t\tisNaN(value) ||\n\t\tvalue === null\n\t) {\n\t\t// Ranges missing or the same\n\t\treturn value;\n\t}\n\n\treturn interpolate(to[0], to[1], interpolateInv(from[0], from[1], value));\n}\n\n/**\n * Clamp value between the minimum and maximum\n * @param {number} min minimum value to return\n * @param {number} val the value to return if it is between min and max\n * @param {number} max maximum value to return\n */\nexport function clamp (min, val, max) {\n\treturn Math.max(Math.min(max, val), min);\n}\n\n/**\n * Copy sign of one value to another.\n * @param {number} to - Number to copy sign to\n * @param {number} from - Number to copy sign from\n */\nexport function copySign (to, from) {\n\treturn Math.sign(to) === Math.sign(from) ? to : -to;\n}\n\n/**\n * Perform pow on a signed number and copy sign to result\n * @param {number} base The base number\n * @param {number} exp The exponent\n */\nexport function spow (base, exp) {\n\treturn copySign(Math.abs(base) ** exp, base);\n}\n\n/**\n * Perform a divide, but return zero if the denominator is zero\n * @param {number} n The numerator\n * @param {number} d The denominator\n */\nexport function zdiv (n, d) {\n\treturn d === 0 ? 0 : n / d;\n}\n\n/**\n * Perform a bisect on a sorted list and locate the insertion point for\n * a value in arr to maintain sorted order.\n * @param {number[]} arr - array of sorted numbers\n * @param {number} value - value to find insertion point for\n * @param {number} lo - used to specify a the low end of a subset of the list\n * @param {number} hi - used to specify a the high end of a subset of the list\n */\nexport function bisectLeft (arr, value, lo = 0, hi = arr.length) {\n\twhile (lo < hi) {\n\t\tconst mid = (lo + hi) >> 1;\n\t\tif (arr[mid] < value) {\n\t\t\tlo = mid + 1;\n\t\t}\n\t\telse {\n\t\t\thi = mid;\n\t\t}\n\t}\n\treturn lo;\n}\n\n/**\n * Determines whether an argument is an instance of a constructor, including subclasses.\n * This is done by first just checking `instanceof`,\n * and then comparing the string names of the constructors if that fails.\n * @param {any} arg\n * @param {C} constructor\n * @template {new (...args: any) => any} C\n * @returns {arg is InstanceType<C>}\n */\nexport function isInstance (arg, constructor) {\n\tif (arg instanceof constructor) {\n\t\treturn true;\n\t}\n\n\tconst targetName = constructor.name;\n\n\twhile (arg) {\n\t\tconst proto = Object.getPrototypeOf(arg);\n\t\tconst constructorName = proto?.constructor?.name;\n\t\tif (constructorName === targetName) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!constructorName || constructorName === \"Object\") {\n\t\t\treturn false;\n\t\t}\n\t\targ = proto;\n\t}\n\n\treturn false;\n}\n","/**\n * A class for adding deep extensibility to any piece of JS code\n */\nexport class Hooks {\n\tadd (name, callback, first) {\n\t\tif (typeof arguments[0] != \"string\") {\n\t\t\t// Multiple hooks\n\t\t\tfor (var name in arguments[0]) {\n\t\t\t\tthis.add(name, arguments[0][name], arguments[1]);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t(Array.isArray(name) ? name : [name]).forEach(function (name) {\n\t\t\tthis[name] = this[name] || [];\n\n\t\t\tif (callback) {\n\t\t\t\tthis[name][first ? \"unshift\" : \"push\"](callback);\n\t\t\t}\n\t\t}, this);\n\t}\n\n\trun (name, env) {\n\t\tthis[name] = this[name] || [];\n\t\tthis[name].forEach(function (callback) {\n\t\t\tcallback.call(env && env.context ? env.context : env, env);\n\t\t});\n\t}\n}\n\n/**\n * The instance of {@link Hooks} used throughout Color.js\n */\nconst hooks = new Hooks();\n\nexport default hooks;\n","// Global defaults one may want to configure\nexport default {\n\tgamut_mapping: \"css\",\n\tprecision: 5,\n\tdeltaE: \"76\", // Default deltaE method\n\tverbose: globalThis?.process?.env?.NODE_ENV?.toLowerCase() !== \"test\",\n\twarn: function warn (msg) {\n\t\tif (this.verbose) {\n\t\t\tglobalThis?.console?.warn?.(msg);\n\t\t}\n\t},\n};\n","import { serializeNumber, mapRange, isInstance } from \"./util.js\";\n\nexport default class Type {\n\t// Class properties - declared here so that type inference works\n\ttype;\n\tcoordMeta;\n\tcoordRange;\n\t/** @type {[number, number]} */\n\trange;\n\n\t/**\n\t * @param {any} type\n\t * @param {import(\"./types.js\").CoordMeta} coordMeta\n\t */\n\tconstructor (type, coordMeta) {\n\t\tif (typeof type === \"object\") {\n\t\t\tthis.coordMeta = type;\n\t\t}\n\n\t\tif (coordMeta) {\n\t\t\tthis.coordMeta = coordMeta;\n\t\t\tthis.coordRange = coordMeta.range ?? coordMeta.refRange;\n\t\t}\n\n\t\tif (typeof type === \"string\") {\n\t\t\tlet params = type\n\t\t\t\t.trim()\n\t\t\t\t.match(/^(?<type><[a-z]+>)(\\[(?<min>-?[.\\d]+),\\s*(?<max>-?[.\\d]+)\\])?$/);\n\n\t\t\tif (!params) {\n\t\t\t\tthrow new TypeError(`Cannot parse ${type} as a type definition.`);\n\t\t\t}\n\n\t\t\tthis.type = params.groups.type;\n\t\t\tlet { min, max } = params.groups;\n\n\t\t\tif (min || max) {\n\t\t\t\tthis.range = [+min, +max];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @returns {[number, number]} */\n\tget computedRange () {\n\t\tif (this.range) {\n\t\t\treturn this.range;\n\t\t}\n\t\tif (this.type === \"<percentage>\") {\n\t\t\treturn this.percentageRange();\n\t\t}\n\t\telse if (this.type === \"<angle>\") {\n\t\t\treturn [0, 360];\n\t\t}\n\t\treturn null;\n\t}\n\n\tget unit () {\n\t\tif (this.type === \"<percentage>\") {\n\t\t\treturn \"%\";\n\t\t}\n\t\telse if (this.type === \"<angle>\") {\n\t\t\treturn \"deg\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Map a number to the internal representation\n\t * @param {number} number\n\t */\n\tresolve (number) {\n\t\tif (this.type === \"<angle>\") {\n\t\t\treturn number;\n\t\t}\n\n\t\tlet fromRange = this.computedRange;\n\t\tlet toRange = this.coordRange;\n\n\t\tif (this.type === \"<percentage>\") {\n\t\t\ttoRange ??= this.percentageRange();\n\t\t}\n\n\t\treturn mapRange(fromRange, toRange, number);\n\t}\n\n\t/**\n\t * Serialize a number from the internal representation to a string\n\t * @param {number} number\n\t * @param {number} [precision]\n\t */\n\tserialize (number, precision) {\n\t\tlet toRange = this.type === \"<percentage>\" ? this.percentageRange(100) : this.computedRange;\n\n\t\tlet unit = this.unit;\n\n\t\tnumber = mapRange(this.coordRange, toRange, number);\n\t\treturn serializeNumber(number, { unit, precision });\n\t}\n\n\ttoString () {\n\t\tlet ret = this.type;\n\n\t\tif (this.range) {\n\t\t\tlet [min = \"\", max = \"\"] = this.range;\n\t\t\tret += `[${min},${max}]`;\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Returns a percentage range for values of this type\n\t * @param {number} scale\n\t * @returns {[number, number]}\n\t */\n\tpercentageRange (scale = 1) {\n\t\tlet range;\n\t\tif (\n\t\t\t(this.coordMeta && this.coordMeta.range) ||\n\t\t\t(this.coordRange && this.coordRange[0] >= 0)\n\t\t) {\n\t\t\trange = [0, 1];\n\t\t}\n\t\telse {\n\t\t\trange = [-1, 1];\n\t\t}\n\t\treturn [range[0] * scale, range[1] * scale];\n\t}\n\n\tstatic get (type, coordMeta) {\n\t\tif (isInstance(type, this)) {\n\t\t\treturn type;\n\t\t}\n\n\t\treturn new this(type, coordMeta);\n\t}\n}\n","import { isInstance, isNone } from \"./util.js\";\nimport Type from \"./Type.js\";\n\n/** @import { ColorSpace, Coords } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Format} FormatInterface */\n\n/**\n * @internal\n * Used to index {@link FormatInterface Format} objects and store an instance.\n * Not meant for external use\n */\nexport const instance = Symbol(\"instance\");\n\n/**\n * Remove the first element of an array type\n * @template {any[]} T\n * @typedef {T extends [any, ...infer R] ? R : T[number][]} RemoveFirstElement\n */\n\n/**\n * @class Format\n * @implements {Omit<FormatInterface, \"coords\" | \"serializeCoords\">}\n * Class to hold a color serialization format\n */\nexport default class Format {\n\t// Class properties - declared here so that type inference works\n\ttype;\n\tname;\n\tspaceCoords;\n\t/** @type {Type[][]} */\n\tcoords;\n\t/** @type {string | undefined} */\n\tid;\n\t/** @type {boolean | undefined} */\n\talpha;\n\n\t/**\n\t * @param {FormatInterface} format\n\t * @param {ColorSpace} space\n\t */\n\tconstructor (format, space = format.space) {\n\t\tformat[instance] = this;\n\t\tthis.type = \"function\";\n\t\tthis.name = \"color\";\n\n\t\tObject.assign(this, format);\n\n\t\tthis.space = space;\n\n\t\tif (this.type === \"custom\") {\n\t\t\t// Nothing else to do here\n\t\t\treturn;\n\t\t}\n\n\t\tthis.spaceCoords = Object.values(space.coords);\n\n\t\tif (!this.coords) {\n\t\t\t// @ts-expect-error Strings are converted to the correct type later\n\t\t\tthis.coords = this.spaceCoords.map(coordMeta => {\n\t\t\t\tlet ret = [\"<number>\", \"<percentage>\"];\n\n\t\t\t\tif (coordMeta.type === \"angle\") {\n\t\t\t\t\tret.push(\"<angle>\");\n\t\t\t\t}\n\n\t\t\t\treturn ret;\n\t\t\t});\n\t\t}\n\n\t\tthis.coords = this.coords.map(\n\t\t\t/** @param {string | string[] | Type[]} types */ (types, i) => {\n\t\t\t\tlet coordMeta = this.spaceCoords[i];\n\n\t\t\t\tif (typeof types === \"string\") {\n\t\t\t\t\ttypes = types.trim().split(/\\s*\\|\\s*/);\n\t\t\t\t}\n\n\t\t\t\treturn types.map(type => Type.get(type, coordMeta));\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @param {Coords} coords\n\t * @param {number} precision\n\t * @param {Type[]} types\n\t */\n\tserializeCoords (coords, precision, types) {\n\t\ttypes = coords.map((_, i) =>\n\t\t\tType.get(types?.[i] ?? this.coords[i][0], this.spaceCoords[i]));\n\t\treturn coords.map((c, i) => types[i].serialize(c, precision));\n\t}\n\n\t/**\n\t * Validates the coordinates of a color against a format's coord grammar and\n\t * maps the coordinates to the range or refRange of the coordinates.\n\t * @param {Coords} coords\n\t * @param {[string, string, string]} types\n\t */\n\tcoerceCoords (coords, types) {\n\t\treturn Object.entries(this.space.coords).map(([id, coordMeta], i) => {\n\t\t\tlet arg = coords[i];\n\n\t\t\tif (isNone(arg) || isNaN(arg)) {\n\t\t\t\t// Nothing to do here\n\t\t\t\treturn arg;\n\t\t\t}\n\n\t\t\t// Find grammar alternative that matches the provided type\n\t\t\t// Non-strict equals is intentional because we are comparing w/ string objects\n\t\t\tlet providedType = types[i];\n\t\t\tlet type = this.coords[i].find(c => c.type == providedType);\n\n\t\t\t// Check that each coord conforms to its grammar\n\t\t\tif (!type) {\n\t\t\t\t// Type does not exist in the grammar, throw\n\t\t\t\tlet coordName = coordMeta.name || id;\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${providedType ?? /** @type {any} */ (arg)?.raw ?? arg} not allowed for ${coordName} in ${this.name}()`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ = type.resolve(arg);\n\n\t\t\tif (type.range) {\n\t\t\t\t// Adjust type to include range\n\t\t\t\ttypes[i] = type.toString();\n\t\t\t}\n\n\t\t\treturn arg;\n\t\t});\n\t}\n\n\t/**\n\t * @returns {boolean | Required<FormatInterface>[\"serialize\"]}\n\t */\n\tcanSerialize () {\n\t\treturn this.type === \"function\" || /** @type {any} */ (this).serialize;\n\t}\n\n\t/**\n\t * @param {string} str\n\t * @returns {(import(\"./types.js\").ColorConstructor) | undefined | null}\n\t */\n\tparse (str) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * @param {Format | FormatInterface} format\n\t * @param {RemoveFirstElement<ConstructorParameters<typeof Format>>} args\n\t * @returns {Format}\n\t */\n\tstatic get (format, ...args) {\n\t\tif (!format || isInstance(format, this)) {\n\t\t\treturn /** @type {Format} */ (format);\n\t\t}\n\n\t\tif (format[instance]) {\n\t\t\treturn format[instance];\n\t\t}\n\n\t\treturn new Format(format, ...args);\n\t}\n}\n","import hooks from \"./hooks.js\";\nimport { multiply_v3_m3x3 } from \"./util.js\";\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").White} White */\n\n/** @type {Record<string, White>} */\n// prettier-ignore\nexport const WHITES = {\n\t// for compatibility, the four-digit chromaticity-derived ones everyone else uses\n\tD50: [0.3457 / 0.3585, 1.00000, (1.0 - 0.3457 - 0.3585) / 0.3585],\n\tD65: [0.3127 / 0.3290, 1.00000, (1.0 - 0.3127 - 0.3290) / 0.3290],\n};\n\n/**\n *\n * @param {string | White} name\n * @returns {White}\n */\nexport function getWhite (name) {\n\tif (Array.isArray(name)) {\n\t\treturn name;\n\t}\n\n\treturn WHITES[name];\n}\n\n/**\n * Adapt XYZ from white point W1 to W2\n * @param {White | string} W1\n * @param {White | string} W2\n * @param {[number, number, number]} XYZ\n * @param {{ method?: string | undefined }} options\n * @returns {[number, number, number]}\n */\nexport default function adapt (W1, W2, XYZ, options = {}) {\n\tW1 = getWhite(W1);\n\tW2 = getWhite(W2);\n\n\tif (!W1 || !W2) {\n\t\tthrow new TypeError(\n\t\t\t`Missing white point to convert ${!W1 ? \"from\" : \"\"}${!W1 && !W2 ? \"/\" : \"\"}${!W2 ? \"to\" : \"\"}`,\n\t\t);\n\t}\n\n\tif (W1 === W2) {\n\t\t// Same whitepoints, no conversion needed\n\t\treturn XYZ;\n\t}\n\n\tlet env = { W1, W2, XYZ, options };\n\n\thooks.run(\"chromatic-adaptation-start\", env);\n\n\tif (!env.M) {\n\t\tif (env.W1 === WHITES.D65 && env.W2 === WHITES.D50) {\n\t\t\t// prettier-ignore\n\t\t\tenv.M = [\n\t\t\t\t[ 1.0479297925449969, 0.022946870601609652, -0.05019226628920524 ],\n\t\t\t\t[ 0.02962780877005599, 0.9904344267538799, -0.017073799063418826 ],\n\t\t\t\t[ -0.009243040646204504, 0.015055191490298152, 0.7518742814281371 ],\n\t\t\t];\n\t\t}\n\t\telse if (env.W1 === WHITES.D50 && env.W2 === WHITES.D65) {\n\t\t\t// prettier-ignore\n\t\t\tenv.M = [\n\t\t\t\t[ 0.955473421488075, -0.02309845494876471, 0.06325924320057072 ],\n\t\t\t\t[ -0.0283697093338637, 1.0099953980813041, 0.021041441191917323 ],\n\t\t\t\t[ 0.012314014864481998, -0.020507649298898964, 1.330365926242124 ],\n\t\t\t];\n\t\t}\n\t}\n\n\thooks.run(\"chromatic-adaptation-end\", env);\n\n\tif (env.M) {\n\t\treturn multiply_v3_m3x3(env.XYZ, env.M);\n\t}\n\telse {\n\t\tthrow new TypeError(\"Only Bradford CAT with white points D50 and D65 supported for now.\");\n\t}\n}\n","import { isNone, clamp } from \"./util.js\";\nimport hooks from \"./hooks.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport defaults from \"./defaults.js\";\n\n/** @import { ColorConstructor } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").ArgumentMeta} ArgumentMeta */\n/** @typedef {import(\"./types.js\").ParseFunctionReturn} ParseFunctionReturn */\n/** @typedef {import(\"./types.js\").ParseOptions} ParseOptions */\n\n/**\n * Convert a CSS Color string to a color object\n * @param {string} str\n * @param {ParseOptions} [options]\n * @returns {ColorConstructor}\n */\nexport default function parse (str, options) {\n\tlet env = {\n\t\tstr: String(str)?.trim(),\n\t\toptions,\n\t};\n\n\thooks.run(\"parse-start\", env);\n\n\tif (env.color) {\n\t\treturn env.color;\n\t}\n\n\tenv.parsed = parseFunction(env.str);\n\tlet ret;\n\tlet meta = env.options ? (env.options.parseMeta ?? env.options.meta) : null;\n\n\tif (env.parsed) {\n\t\t// Is a functional syntax\n\t\tlet name = env.parsed.name;\n\t\tlet format;\n\t\tlet space;\n\t\tlet coords = env.parsed.args;\n\t\tlet types = coords.map((c, i) => env.parsed.argMeta[i]?.type);\n\n\t\tif (name === \"color\") {\n\t\t\t// color() function\n\t\t\tlet id = coords.shift();\n\t\t\ttypes.shift();\n\t\t\t// Check against both <dashed-ident> and <ident> versions\n\t\t\tlet alternateId = id.startsWith(\"--\") ? id.substring(2) : `--${id}`;\n\t\t\tlet ids = [id, alternateId];\n\t\t\tformat = ColorSpace.findFormat({ name, id: ids, type: \"function\" });\n\n\t\t\tif (!format) {\n\t\t\t\t// Not found\n\t\t\t\tlet didYouMean;\n\n\t\t\t\tlet registryId = id in ColorSpace.registry ? id : alternateId;\n\t\t\t\tif (registryId in ColorSpace.registry) {\n\t\t\t\t\t// Used color space id instead of color() id, these are often different\n\t\t\t\t\tlet cssId = ColorSpace.registry[registryId].formats?.color?.id;\n\n\t\t\t\t\tif (cssId) {\n\t\t\t\t\t\tlet altColor = str.replace(\"color(\" + id, \"color(\" + cssId);\n\t\t\t\t\t\tdidYouMean = `Did you mean ${altColor}?`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Cannot parse ${env.str}. ` + (didYouMean ?? \"Missing a plugin?\"),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tspace = format.space;\n\n\t\t\tif (format.id.startsWith(\"--\") && !id.startsWith(\"--\")) {\n\t\t\t\tdefaults.warn(\n\t\t\t\t\t`${space.name} is a non-standard space and not currently supported in the CSS spec. ` +\n\t\t\t\t\t\t`Use prefixed color(${format.id}) instead of color(${id}).`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (id.startsWith(\"--\") && !format.id.startsWith(\"--\")) {\n\t\t\t\tdefaults.warn(\n\t\t\t\t\t`${space.name} is a standard space and supported in the CSS spec. ` +\n\t\t\t\t\t\t`Use color(${format.id}) instead of prefixed color(${id}).`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tformat = ColorSpace.findFormat({ name, type: \"function\" });\n\t\t\tspace = format.space;\n\t\t}\n\n\t\tif (meta) {\n\t\t\tObject.assign(meta, {\n\t\t\t\tformat,\n\t\t\t\tformatId: format.name,\n\t\t\t\ttypes,\n\t\t\t\tcommas: env.parsed.commas,\n\t\t\t});\n\t\t}\n\n\t\tlet alpha = 1;\n\n\t\tif (env.parsed.lastAlpha) {\n\t\t\talpha = env.parsed.args.pop();\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.alphaType = types.pop();\n\t\t\t}\n\t\t}\n\n\t\tlet coordCount = format.coords.length;\n\n\t\tif (coords.length !== coordCount) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expected ${coordCount} coordinates for ${space.id} in ${env.str}), got ${coords.length}`,\n\t\t\t);\n\t\t}\n\n\t\tcoords = format.coerceCoords(coords, types);\n\n\t\tret = { spaceId: space.id, coords, alpha };\n\t}\n\telse {\n\t\t// Custom, colorspace-specific format\n\t\tspaceloop: for (let space of ColorSpace.all) {\n\t\t\tfor (let formatId in space.formats) {\n\t\t\t\tlet format = space.formats[formatId];\n\n\t\t\t\tif (format.type !== \"custom\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (format.test && !format.test(env.str)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Convert to Format object\n\t\t\t\tlet formatObject = space.getFormat(format);\n\n\t\t\t\tlet color = formatObject.parse(env.str);\n\n\t\t\t\tif (color) {\n\t\t\t\t\tif (meta) {\n\t\t\t\t\t\tObject.assign(meta, { format: formatObject, formatId });\n\t\t\t\t\t}\n\n\t\t\t\t\tret = color;\n\t\t\t\t\tbreak spaceloop;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!ret) {\n\t\t// If we're here, we couldn't parse\n\t\tthrow new TypeError(`Could not parse ${str} as a color. Missing a plugin?`);\n\t}\n\n\t// Clamp alpha to [0, 1]\n\tret.alpha = isNone(ret.alpha)\n\t\t? ret.alpha\n\t\t: ret.alpha === undefined\n\t\t\t? 1\n\t\t\t: clamp(0, ret.alpha, 1);\n\n\treturn ret;\n}\n\n/**\n * Units and multiplication factors for the internally stored numbers\n */\nexport const units = {\n\t\"%\": 0.01,\n\tdeg: 1,\n\tgrad: 0.9,\n\trad: 180 / Math.PI,\n\tturn: 360,\n};\n\nexport const regex = {\n\t// Need to list calc(NaN) explicitly as otherwise its ending paren would terminate the function call\n\tfunction: /^([a-z]+)\\(((?:calc\\(NaN\\)|.)+?)\\)$/i,\n\tnumber: /^([-+]?(?:[0-9]*\\.)?[0-9]+(e[-+]?[0-9]+)?)$/i,\n\tunitValue: RegExp(`(${Object.keys(units).join(\"|\")})$`),\n\n\t// NOTE The -+ are not just for prefix, but also for idents, and e+N notation!\n\tsingleArgument: /\\/?\\s*(none|NaN|calc\\(NaN\\)|[-+\\w.]+(?:%|deg|g?rad|turn)?)/g,\n};\n\n/**\n * Parse a single function argument\n * @param {string} rawArg\n * @returns {{value: number, meta: ArgumentMeta}}\n */\nexport function parseArgument (rawArg) {\n\t/** @type {Partial<ArgumentMeta>} */\n\tlet meta = {};\n\tlet unit = rawArg.match(regex.unitValue)?.[0];\n\t/** @type {string | number} */\n\tlet value = (meta.raw = rawArg);\n\n\tif (unit) {\n\t\t// It’s a dimension token\n\t\tmeta.type = unit === \"%\" ? \"<percentage>\" : \"<angle>\";\n\t\tmeta.unit = unit;\n\t\tmeta.unitless = Number(value.slice(0, -unit.length)); // unitless number\n\n\t\tvalue = meta.unitless * units[unit];\n\t}\n\telse if (regex.number.test(value)) {\n\t\t// It's a number\n\t\t// Convert numerical args to numbers\n\t\tvalue = Number(value);\n\t\tmeta.type = \"<number>\";\n\t}\n\telse if (value === \"none\") {\n\t\tvalue = null;\n\t}\n\telse if (value === \"NaN\" || value === \"calc(NaN)\") {\n\t\tvalue = NaN;\n\t\tmeta.type = \"<number>\";\n\t}\n\telse {\n\t\tmeta.type = \"<ident>\";\n\t}\n\n\treturn { value: /** @type {number} */ (value), meta: /** @type {ArgumentMeta} */ (meta) };\n}\n\n/**\n * Parse a CSS function, regardless of its name and arguments\n * @param {string} str String to parse\n * @return {ParseFunctionReturn | void}\n */\nexport function parseFunction (str) {\n\tif (!str) {\n\t\treturn;\n\t}\n\n\tstr = str.trim();\n\n\tlet parts = str.match(regex.function);\n\n\tif (parts) {\n\t\t// It is a function, parse args\n\t\tlet args = [];\n\t\tlet argMeta = [];\n\t\tlet lastAlpha = false;\n\t\tlet name = parts[1].toLowerCase();\n\n\t\tlet separators = parts[2].replace(regex.singleArgument, ($0, rawArg) => {\n\t\t\tlet { value, meta } = parseArgument(rawArg);\n\n\t\t\tif (\n\t\t\t\t// If there's a slash here, it's modern syntax\n\t\t\t\t$0.startsWith(\"/\") ||\n\t\t\t\t// If there's still elements to process after there's already 3 in `args` (and the we're not dealing with \"color()\"), it's likely to be a legacy color like \"hsl(0, 0%, 0%, 0.5)\"\n\t\t\t\t(name !== \"color\" && args.length === 3)\n\t\t\t) {\n\t\t\t\t// It's alpha\n\t\t\t\tlastAlpha = true;\n\t\t\t}\n\n\t\t\targs.push(value);\n\t\t\targMeta.push(meta);\n\t\t\treturn \"\";\n\t\t});\n\n\t\treturn {\n\t\t\tname,\n\t\t\targs,\n\t\t\targMeta,\n\t\t\tlastAlpha,\n\t\t\tcommas: separators.includes(\",\"),\n\t\t\trawName: parts[1],\n\t\t\trawArgs: parts[2],\n\t\t};\n\t}\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport { isString, isInstance } from \"./util.js\";\nimport parse from \"./parse.js\";\n\n/** @import { ColorTypes, ParseOptions as GetColorOptions, PlainColorObject } from \"./types.js\" */\n\n/**\n * Resolves a color reference (object or string) to a plain color object\n * @overload\n * @param {ColorTypes} color\n * @param {GetColorOptions} [options]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes[]} color\n * @param {GetColorOptions} [options]\n * @returns {PlainColorObject[]}\n */\nexport default function getColor (color, options) {\n\tif (Array.isArray(color)) {\n\t\treturn color.map(c => getColor(c, options));\n\t}\n\n\tif (!color) {\n\t\tthrow new TypeError(\"Empty color reference\");\n\t}\n\n\tif (isString(color)) {\n\t\tcolor = parse(color, options);\n\t}\n\n\t// Object fixup\n\tlet space = color.space || color.spaceId;\n\n\tif (typeof space === \"string\") {\n\t\t// Convert string id to color space object\n\t\tcolor.space = ColorSpace.get(space);\n\t}\n\n\tif (color.alpha === undefined) {\n\t\tcolor.alpha = 1;\n\t}\n\n\treturn color;\n}\n","/**\n * @packageDocumentation\n * Defines the class and other types related to creating color spaces.\n * For the builtin color spaces, see the `spaces` module.\n */\nimport { type, isNone, isInstance } from \"./util.js\";\nimport Format from \"./Format.js\";\nimport { getWhite } from \"./adapt.js\";\nimport hooks from \"./hooks.js\";\nimport getColor from \"./getColor.js\";\n\nconst ε = 0.000075;\n\n/**\n * Class to represent a color space\n */\nexport default class ColorSpace {\n\tconstructor (options) {\n\t\tthis.id = options.id;\n\t\tthis.name = options.name;\n\t\tthis.base = options.base ? ColorSpace.get(options.base) : null;\n\t\tthis.aliases = options.aliases;\n\n\t\tif (this.base) {\n\t\t\tthis.fromBase = options.fromBase;\n\t\t\tthis.toBase = options.toBase;\n\t\t}\n\n\t\t// Coordinate metadata\n\n\t\tlet coords = options.coords ?? this.base.coords;\n\n\t\tfor (let name in coords) {\n\t\t\tif (!(\"name\" in coords[name])) {\n\t\t\t\tcoords[name].name = name;\n\t\t\t}\n\t\t}\n\t\tthis.coords = coords;\n\n\t\t// White point\n\n\t\tlet white = options.white ?? this.base.white ?? \"D65\";\n\t\tthis.white = getWhite(white);\n\n\t\t// Sort out formats\n\n\t\tthis.formats = options.formats ?? {};\n\n\t\tfor (let name in this.formats) {\n\t\t\tlet format = this.formats[name];\n\t\t\tformat.type ||= \"function\";\n\t\t\tformat.name ||= name;\n\t\t}\n\n\t\tif (!this.formats.color?.id) {\n\t\t\tthis.formats.color = {\n\t\t\t\t...(this.formats.color ?? {}),\n\t\t\t\tid: options.cssId || this.id,\n\t\t\t};\n\t\t}\n\n\t\t// Gamut space\n\n\t\tif (options.gamutSpace) {\n\t\t\t// Gamut space explicitly specified\n\t\t\tthis.gamutSpace =\n\t\t\t\toptions.gamutSpace === \"self\" ? this : ColorSpace.get(options.gamutSpace);\n\t\t}\n\t\telse {\n\t\t\t// No gamut space specified, calculate a sensible default\n\t\t\tif (this.isPolar) {\n\t\t\t\t// Do not check gamut through polar coordinates\n\t\t\t\tthis.gamutSpace = this.base;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.gamutSpace = this;\n\t\t\t}\n\t\t}\n\n\t\t// Optimize inGamut for unbounded spaces\n\t\tif (this.gamutSpace.isUnbounded) {\n\t\t\tthis.inGamut = (coords, options) => {\n\t\t\t\treturn true;\n\t\t\t};\n\t\t}\n\n\t\t// Other stuff\n\t\tthis.referred = options.referred;\n\n\t\t// Compute ancestors and store them, since they will never change\n\t\tObject.defineProperty(this, \"path\", {\n\t\t\tvalue: getPath(this).reverse(),\n\t\t\twritable: false,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\thooks.run(\"colorspace-init-end\", this);\n\t}\n\n\tinGamut (coords, { epsilon = ε } = {}) {\n\t\tif (!this.equals(this.gamutSpace)) {\n\t\t\tcoords = this.to(this.gamutSpace, coords);\n\t\t\treturn this.gamutSpace.inGamut(coords, { epsilon });\n\t\t}\n\n\t\tlet coordMeta = Object.values(this.coords);\n\n\t\treturn coords.every((c, i) => {\n\t\t\tlet meta = coordMeta[i];\n\n\t\t\tif (meta.type !== \"angle\" && meta.range) {\n\t\t\t\tif (isNone(c)) {\n\t\t\t\t\t// NaN is always in gamut\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tlet [min, max] = meta.range;\n\t\t\t\treturn (\n\t\t\t\t\t(min === undefined || c >= min - epsilon) &&\n\t\t\t\t\t(max === undefined || c <= max + epsilon)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tget isUnbounded () {\n\t\treturn Object.values(this.coords).every(coord => !(\"range\" in coord));\n\t}\n\n\tget cssId () {\n\t\treturn this.formats?.color?.id || this.id;\n\t}\n\n\tget isPolar () {\n\t\tfor (let id in this.coords) {\n\t\t\tif (this.coords[id].type === \"angle\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Lookup a format in this color space\n\t * @param {string | object | Format} format - Format id if string. If object, it's converted to a `Format` object and returned.\n\t * @returns {Format}\n\t */\n\tgetFormat (format) {\n\t\tif (!format) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (format === \"default\") {\n\t\t\tformat = Object.values(this.formats)[0];\n\t\t}\n\t\telse if (typeof format === \"string\") {\n\t\t\tformat = this.formats[format];\n\t\t}\n\n\t\tlet ret = Format.get(format, this);\n\n\t\tif (ret !== format && format.name in this.formats) {\n\t\t\t// Update the format we have on file so we can find it more quickly next time\n\t\t\tthis.formats[format.name] = ret;\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Check if this color space is the same as another color space reference.\n\t * Allows proxying color space objects and comparing color spaces with ids.\n\t * @param {string | ColorSpace} space ColorSpace object or id to compare to\n\t * @returns {boolean}\n\t */\n\tequals (space) {\n\t\tif (!space) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this === space || this.id === space || this.id === space.id;\n\t}\n\n\tto (space, coords) {\n\t\tif (arguments.length === 1) {\n\t\t\tconst color = getColor(space);\n\t\t\t[space, coords] = [color.space, color.coords];\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\tif (this.equals(space)) {\n\t\t\t// Same space, no change needed\n\t\t\treturn coords;\n\t\t}\n\n\t\t// Convert NaN to 0, which seems to be valid in every coordinate of every color space\n\t\tcoords = coords.map(c => (isNone(c) ? 0 : c));\n\n\t\t// Find connection space = lowest common ancestor in the base tree\n\t\tlet myPath = this.path;\n\t\tlet otherPath = space.path;\n\n\t\tlet connectionSpace, connectionSpaceIndex;\n\n\t\tfor (let i = 0; i < myPath.length; i++) {\n\t\t\tif (myPath[i].equals(otherPath[i])) {\n\t\t\t\tconnectionSpace = myPath[i];\n\t\t\t\tconnectionSpaceIndex = i;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!connectionSpace) {\n\t\t\t// This should never happen\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot convert between color spaces ${this} and ${space}: no connection space was found`,\n\t\t\t);\n\t\t}\n\n\t\t// Go up from current space to connection space\n\t\tfor (let i = myPath.length - 1; i > connectionSpaceIndex; i--) {\n\t\t\tcoords = myPath[i].toBase(coords);\n\t\t}\n\n\t\t// Go down from connection space to target space\n\t\tfor (let i = connectionSpaceIndex + 1; i < otherPath.length; i++) {\n\t\t\tcoords = otherPath[i].fromBase(coords);\n\t\t}\n\n\t\treturn coords;\n\t}\n\n\tfrom (space, coords) {\n\t\tif (arguments.length === 1) {\n\t\t\tconst color = getColor(space);\n\t\t\t[space, coords] = [color.space, color.coords];\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\treturn space.to(this, coords);\n\t}\n\n\ttoString () {\n\t\treturn `${this.name} (${this.id})`;\n\t}\n\n\tgetMinCoords () {\n\t\tlet ret = [];\n\n\t\tfor (let id in this.coords) {\n\t\t\tlet meta = this.coords[id];\n\t\t\tlet range = meta.range || meta.refRange;\n\t\t\tret.push(range?.min ?? 0);\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tstatic registry = {};\n\n\t// Returns array of unique color spaces\n\tstatic get all () {\n\t\treturn [...new Set(Object.values(ColorSpace.registry))];\n\t}\n\n\tstatic register (id, space) {\n\t\tif (arguments.length === 1) {\n\t\t\tspace = arguments[0];\n\t\t\tid = space.id;\n\t\t}\n\n\t\tspace = this.get(space);\n\n\t\tif (this.registry[id] && this.registry[id] !== space) {\n\t\t\tthrow new Error(`Duplicate color space registration: '${id}'`);\n\t\t}\n\t\tthis.registry[id] = space;\n\n\t\t// Register aliases when called without an explicit ID.\n\t\tif (arguments.length === 1 && space.aliases) {\n\t\t\tfor (let alias of space.aliases) {\n\t\t\t\tthis.register(alias, space);\n\t\t\t}\n\t\t}\n\n\t\treturn space;\n\t}\n\n\t/**\n\t * Lookup ColorSpace object by name\n\t * @param {ColorSpace | string} name\n\t */\n\tstatic get (space, ...alternatives) {\n\t\tif (!space || isInstance(space, this)) {\n\t\t\treturn space;\n\t\t}\n\n\t\tlet argType = type(space);\n\n\t\tif (argType === \"string\") {\n\t\t\t// It's a color space id\n\t\t\tlet ret = ColorSpace.registry[space.toLowerCase()];\n\n\t\t\tif (!ret) {\n\t\t\t\tthrow new TypeError(`No color space found with id = \"${space}\"`);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tif (alternatives.length) {\n\t\t\treturn ColorSpace.get(...alternatives);\n\t\t}\n\n\t\tthrow new TypeError(`${space} is not a valid color space`);\n\t}\n\n\t/**\n\t * Look up all color spaces for a format that matches certain criteria\n\t * @param {object | string} filters\n\t * @param {Array<ColorSpace>} [spaces=ColorSpace.all]\n\t * @returns {Format | null}\n\t */\n\tstatic findFormat (filters, spaces = ColorSpace.all) {\n\t\tif (!filters) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (typeof filters === \"string\") {\n\t\t\tfilters = { name: filters };\n\t\t}\n\n\t\tfor (let space of spaces) {\n\t\t\tfor (let [name, format] of Object.entries(space.formats)) {\n\t\t\t\tformat.name ??= name;\n\t\t\t\tformat.type ??= \"function\";\n\n\t\t\t\tlet matches =\n\t\t\t\t\t(!filters.name || format.name === filters.name) &&\n\t\t\t\t\t(!filters.type || format.type === filters.type);\n\n\t\t\t\tif (filters.id) {\n\t\t\t\t\tlet ids = format.ids || [format.id];\n\t\t\t\t\tlet filterIds = Array.isArray(filters.id) ? filters.id : [filters.id];\n\t\t\t\t\tmatches &&= filterIds.some(id => ids.includes(id));\n\t\t\t\t}\n\n\t\t\t\tif (matches) {\n\t\t\t\t\tlet ret = Format.get(format, space);\n\n\t\t\t\t\tif (ret !== format) {\n\t\t\t\t\t\tspace.formats[format.name] = ret;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Get metadata about a coordinate of a color space\n\t *\n\t * @static\n\t * @param {Array | string} ref\n\t * @param {ColorSpace | string} [workingSpace]\n\t * @return {Object}\n\t */\n\tstatic resolveCoord (ref, workingSpace) {\n\t\tlet coordType = type(ref);\n\t\tlet space, coord;\n\n\t\tif (coordType === \"string\") {\n\t\t\tif (ref.includes(\".\")) {\n\t\t\t\t// Absolute coordinate\n\t\t\t\t[space, coord] = ref.split(\".\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Relative coordinate\n\t\t\t\t[space, coord] = [, ref];\n\t\t\t}\n\t\t}\n\t\telse if (Array.isArray(ref)) {\n\t\t\t[space, coord] = ref;\n\t\t}\n\t\telse {\n\t\t\t// Object\n\t\t\tspace = ref.space;\n\t\t\tcoord = ref.coordId;\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\tif (!space) {\n\t\t\tspace = workingSpace;\n\t\t}\n\n\t\tif (!space) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Cannot resolve coordinate reference ${ref}: No color space specified and relative references are not allowed here`,\n\t\t\t);\n\t\t}\n\n\t\tcoordType = type(coord);\n\n\t\tif (coordType === \"number\" || (coordType === \"string\" && coord >= 0)) {\n\t\t\t// Resolve numerical coord\n\t\t\tlet meta = Object.entries(space.coords)[coord];\n\n\t\t\tif (meta) {\n\t\t\t\treturn { space, id: meta[0], index: coord, ...meta[1] };\n\t\t\t}\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\tlet normalizedCoord = coord.toLowerCase();\n\n\t\tlet i = 0;\n\t\tfor (let id in space.coords) {\n\t\t\tlet meta = space.coords[id];\n\n\t\t\tif (\n\t\t\t\tid.toLowerCase() === normalizedCoord ||\n\t\t\t\tmeta.name?.toLowerCase() === normalizedCoord\n\t\t\t) {\n\t\t\t\treturn { space, id, index: i, ...meta };\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\tthrow new TypeError(\n\t\t\t`No \"${coord}\" coordinate found in ${space.name}. Its coordinates are: ${Object.keys(space.coords).join(\", \")}`,\n\t\t);\n\t}\n\n\tstatic DEFAULT_FORMAT = {\n\t\ttype: \"functions\",\n\t\tname: \"color\",\n\t};\n}\n\nfunction getPath (space) {\n\tlet ret = [space];\n\n\tfor (let s = space; (s = s.base); ) {\n\t\tret.push(s);\n\t}\n\n\treturn ret;\n}\n","import ColorSpace from \"../ColorSpace.js\";\n\nexport default new ColorSpace({\n\tid: \"xyz-d65\",\n\tname: \"XYZ D65\",\n\tcoords: {\n\t\tx: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"X\",\n\t\t},\n\t\ty: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Y\",\n\t\t},\n\t\tz: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Z\",\n\t\t},\n\t},\n\twhite: \"D65\",\n\tformats: {\n\t\tcolor: {\n\t\t\tids: [\"xyz-d65\", \"xyz\"],\n\t\t},\n\t},\n\taliases: [\"xyz\"],\n});\n","import ColorSpace from \"./ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"./util.js\";\nimport adapt from \"./adapt.js\";\nimport XYZ_D65 from \"./spaces/xyz-d65.js\";\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").RGBOptions} RGBOptions */\n\n/** Convenience class for RGB color spaces */\nexport default class RGBColorSpace extends ColorSpace {\n\t/**\n\t * Creates a new RGB ColorSpace.\n\t * If coords are not specified, they will use the default RGB coords.\n\t * Instead of `fromBase()` and `toBase()` functions,\n\t * you can specify to/from XYZ matrices and have `toBase()` and `fromBase()` automatically generated.\n\t * @param {RGBOptions} options\n\t */\n\tconstructor (options) {\n\t\tif (!options.coords) {\n\t\t\toptions.coords = {\n\t\t\t\tr: {\n\t\t\t\t\trange: [0, 1],\n\t\t\t\t\tname: \"Red\",\n\t\t\t\t},\n\t\t\t\tg: {\n\t\t\t\t\trange: [0, 1],\n\t\t\t\t\tname: \"Green\",\n\t\t\t\t},\n\t\t\t\tb: {\n\t\t\t\t\trange: [0, 1],\n\t\t\t\t\tname: \"Blue\",\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif (!options.base) {\n\t\t\toptions.base = XYZ_D65;\n\t\t}\n\n\t\tif (options.toXYZ_M && options.fromXYZ_M) {\n\t\t\toptions.toBase ??= rgb => {\n\t\t\t\tlet xyz = multiply_v3_m3x3(rgb, options.toXYZ_M);\n\n\t\t\t\tif (this.white !== this.base.white) {\n\t\t\t\t\t// Perform chromatic adaptation\n\t\t\t\t\txyz = adapt(this.white, this.base.white, xyz);\n\t\t\t\t}\n\n\t\t\t\treturn xyz;\n\t\t\t};\n\n\t\t\toptions.fromBase ??= xyz => {\n\t\t\t\txyz = adapt(this.base.white, this.white, xyz);\n\t\t\t\treturn multiply_v3_m3x3(xyz, options.fromXYZ_M);\n\t\t\t};\n\t\t}\n\n\t\toptions.referred ??= \"display\";\n\n\t\tsuper(options);\n\t}\n}\n","import { isString } from \"./util.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").TryColorOptions} TryColorOptions */\n\n/**\n * Resolves a color reference (object or string) to a plain color object, or `null` if resolution fails.\n * Can resolve more complex CSS colors (e.g. relative colors, `calc()`, CSS variables, `color-mix()`, etc.) through the DOM.\n *\n * @overload\n * @param {ColorTypes} color\n * @param {TryColorOptions} [options]\n * @returns {PlainColorObject | null}\n */\n/**\n * @overload\n * @param {ColorTypes[]} color\n * @param {TryColorOptions} [options]\n * @returns {(PlainColorObject | null)[]}\n */\nexport default function tryColor (color, options = {}) {\n\tif (Array.isArray(color)) {\n\t\treturn color.map(c => tryColor(c, options));\n\t}\n\n\tlet { cssProperty = \"background-color\", element, ...getColorOptions } = options;\n\tlet error = null;\n\ttry {\n\t\treturn getColor(color, getColorOptions);\n\t}\n\tcatch (e) {\n\t\terror = e;\n\t}\n\n\tlet { CSS, getComputedStyle } = globalThis;\n\tif (isString(color) && element && CSS && getComputedStyle) {\n\t\t// Try resolving the color using the DOM, if supported in CSS\n\t\tif (CSS.supports(cssProperty, color)) {\n\t\t\tlet previousValue = element.style[cssProperty];\n\n\t\t\tif (color !== previousValue) {\n\t\t\t\telement.style[cssProperty] = color;\n\t\t\t}\n\n\t\t\tlet computedColor = getComputedStyle(element).getPropertyValue(cssProperty);\n\n\t\t\tif (color !== previousValue) {\n\t\t\t\telement.style[cssProperty] = previousValue;\n\t\t\t}\n\n\t\t\tif (computedColor !== color) {\n\t\t\t\t// getComputedStyle() changed the color, try again\n\t\t\t\ttry {\n\t\t\t\t\treturn getColor(computedColor, getColorOptions);\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Still not resolved\n\t\t\t\terror = {\n\t\t\t\t\tmessage: \"Color value is a valid CSS color, but it could not be resolved :(\",\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t// If we're here, we failed to resolve the color\n\tif (options.errorMeta) {\n\t\toptions.errorMeta.error = error;\n\t}\n\n\treturn null;\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\nimport { toPrecision } from \"./util.js\";\n\n/** @import { ColorTypes, Coords } from \"./types.js\" */\n\n/**\n * Options for {@link getAll}\n * @typedef GetAllOptions\n * @property {string | ColorSpace | undefined} [space]\n * The color space to convert to. Defaults to the color's current space\n * @property {number | undefined} [precision]\n * The number of significant digits to round the coordinates to\n */\n\n/**\n * Get the coordinates of a color in any color space\n * @overload\n * @param {ColorTypes} color\n * @param {string | ColorSpace} [options=color.space] The color space to convert to. Defaults to the color's current space\n * @returns {Coords} The color coordinates in the given color space\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {GetAllOptions} [options]\n * @returns {Coords} The color coordinates in the given color space\n */\nexport default function getAll (color, options) {\n\tcolor = getColor(color);\n\n\tlet space = ColorSpace.get(options, options?.space);\n\tlet precision = options?.precision;\n\n\tlet coords;\n\tif (!space || color.space.equals(space)) {\n\t\t// No conversion needed\n\t\tcoords = color.coords.slice();\n\t}\n\telse {\n\t\tcoords = space.from(color);\n\t}\n\n\treturn precision === undefined ? coords : coords.map(coord => toPrecision(coord, precision));\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getAll from \"./getAll.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes, Ref } from \"./types.js\" */\n\n/**\n * @param {ColorTypes} color\n * @param {Ref} prop\n * @returns {number}\n */\nexport default function get (color, prop) {\n\tcolor = getColor(color);\n\n\tif (prop === \"alpha\") {\n\t\treturn color.alpha ?? 1;\n\t}\n\n\tlet { space, index } = ColorSpace.resolveCoord(prop, color.space);\n\tlet coords = getAll(color, space);\n\treturn coords[index];\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes, Coords, PlainColorObject } from \"./types.js\" */\n\n/**\n * Set all coordinates of a color at once, in its own color space or another.\n * Modifies the color in place.\n * @overload\n * @param {ColorTypes} color\n * @param {Coords} coords Array of coordinates\n * @param {number} [alpha]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {string | ColorSpace} space The color space of the provided coordinates.\n * @param {Coords} coords Array of coordinates\n * @param {number} [alpha]\n * @returns {PlainColorObject}\n */\nexport default function setAll (color, space, coords, alpha) {\n\tcolor = getColor(color);\n\n\tif (Array.isArray(space)) {\n\t\t// Space is omitted\n\t\t[space, coords, alpha] = [color.space, space, coords];\n\t}\n\n\tspace = ColorSpace.get(space); // Make sure we have a ColorSpace object\n\tcolor.coords = space === color.space ? coords.slice() : space.to(color.space, coords);\n\n\tif (alpha !== undefined) {\n\t\tcolor.alpha = alpha;\n\t}\n\n\treturn color;\n}\n\n/** @type {\"color\"} */\nsetAll.returns = \"color\";\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\nimport get from \"./get.js\";\nimport getAll from \"./getAll.js\";\nimport setAll from \"./setAll.js\";\nimport { type } from \"./util.js\";\n\n/** @import { ColorTypes, PlainColorObject, Ref } from \"./types.js\" */\n\n/**\n * Set properties and return current instance\n * @overload\n * @param {ColorTypes} color\n * @param {Ref} prop\n * @param {number | ((coord: number) => number)} value\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {Record<string, number | ((coord: number) => number)>} props\n * @returns {PlainColorObject}\n */\nexport default function set (color, prop, value) {\n\tcolor = getColor(color);\n\n\tif (arguments.length === 2 && type(arguments[1]) === \"object\") {\n\t\t// Argument is an object literal\n\t\tlet object = arguments[1];\n\t\tfor (let p in object) {\n\t\t\tset(color, p, object[p]);\n\t\t}\n\t}\n\telse {\n\t\tif (typeof value === \"function\") {\n\t\t\tvalue = value(get(color, prop));\n\t\t}\n\n\t\tif (prop === \"alpha\") {\n\t\t\tcolor.alpha = value;\n\t\t}\n\t\telse {\n\t\t\tlet { space, index } = ColorSpace.resolveCoord(prop, color.space);\n\t\t\tlet coords = getAll(color, space);\n\t\t\tcoords[index] = value;\n\t\t\tsetAll(color, space, coords);\n\t\t}\n\t}\n\n\treturn color;\n}\n\n/** @type {\"color\"} */\nset.returns = \"color\";\n","import ColorSpace from \"../ColorSpace.js\";\nimport adapt from \"../adapt.js\";\nimport XYZ_D65 from \"./xyz-d65.js\";\n\nexport default new ColorSpace({\n\tid: \"xyz-d50\",\n\tname: \"XYZ D50\",\n\twhite: \"D50\",\n\tbase: XYZ_D65,\n\tfromBase: coords => adapt(XYZ_D65.white, \"D50\", coords),\n\ttoBase: coords => adapt(\"D50\", XYZ_D65.white, coords),\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport xyz_d50 from \"./xyz-d50.js\";\n\n// κ * ε = 2^3 = 8\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst ε3 = 24 / 116;\nconst κ = 24389 / 27; // 29^3/3^3\n\nlet white = WHITES.D50;\n\nexport default new ColorSpace({\n\tid: \"lab\",\n\tname: \"Lab\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t},\n\n\t// Assuming XYZ is relative to D50, convert to CIE Lab\n\t// from CIE standard, which now defines these as a rational fraction\n\twhite,\n\n\tbase: xyz_d50,\n\t// Convert D50-adapted XYX to Lab\n\t// CIE 15.3:2004 section 8.2.1.1\n\tfromBase (XYZ) {\n\t\t// XYZ scaled relative to reference white\n\t\tlet xyz = XYZ.map((value, i) => value / white[i]);\n\t\tlet f = xyz.map(value => (value > ε ? Math.cbrt(value) : (κ * value + 16) / 116));\n\n\t\tlet L = 116 * f[1] - 16;\n\t\tlet a = 500 * (f[0] - f[1]);\n\t\tlet b = 200 * (f[1] - f[2]);\n\n\t\treturn [L, a, b];\n\t},\n\t// Convert Lab to D50-adapted XYZ\n\t// Same result as CIE 15.3:2004 Appendix D although the derivation is different\n\t// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\ttoBase (Lab) {\n\t\t// compute f, starting with the luminance-related term\n\t\tlet [L, a, b] = Lab;\n\t\tlet f = [];\n\t\tf[1] = (L + 16) / 116;\n\t\tf[0] = a / 500 + f[1];\n\t\tf[2] = f[1] - b / 200;\n\n\t\t// compute xyz\n\t\t// prettier-ignore\n\t\tlet xyz = [\n\t\t\tf[0] > ε3 ? Math.pow(f[0], 3) : (116 * f[0] - 16) / κ,\n\t\t\tLab[0] > 8 ? Math.pow((Lab[0] + 16) / 116, 3) : Lab[0] / κ,\n\t\t\tf[2] > ε3 ? Math.pow(f[2], 3) : (116 * f[2] - 16) / κ,\n\t\t];\n\n\t\t// Compute XYZ by scaling xyz by reference white\n\t\treturn xyz.map((value, i) => value * white[i]);\n\t},\n\n\tformats: {\n\t\tlab: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import * as util from \"./util.js\";\n\n/**\n * Constrain an angle to 360 degrees\n * @param {number} angle\n * @returns {number}\n */\nexport function constrain (angle) {\n\tif (typeof angle !== \"number\") {\n\t\treturn angle;\n\t}\n\n\treturn ((angle % 360) + 360) % 360;\n}\n\n/**\n * @param {\"raw\" | \"increasing\" | \"decreasing\" | \"longer\" | \"shorter\"} arc\n * @param {[number, number]} angles\n * @returns {[number, number]}\n */\nexport function adjust (arc, angles) {\n\tlet [a1, a2] = angles;\n\n\tlet none1 = util.isNone(a1);\n\tlet none2 = util.isNone(a2);\n\n\tif (none1 && none2) {\n\t\treturn [a1, a2];\n\t}\n\telse if (none1) {\n\t\ta1 = a2;\n\t}\n\telse if (none2) {\n\t\ta2 = a1;\n\t}\n\n\tif (arc === \"raw\") {\n\t\treturn angles;\n\t}\n\n\ta1 = constrain(a1);\n\ta2 = constrain(a2);\n\n\tlet angleDiff = a2 - a1;\n\n\tif (arc === \"increasing\") {\n\t\tif (angleDiff < 0) {\n\t\t\ta2 += 360;\n\t\t}\n\t}\n\telse if (arc === \"decreasing\") {\n\t\tif (angleDiff > 0) {\n\t\t\ta1 += 360;\n\t\t}\n\t}\n\telse if (arc === \"longer\") {\n\t\tif (-180 < angleDiff && angleDiff < 180) {\n\t\t\tif (angleDiff > 0) {\n\t\t\t\ta1 += 360;\n\t\t\t}\n\t\t\telse {\n\t\t\t\ta2 += 360;\n\t\t\t}\n\t\t}\n\t}\n\telse if (arc === \"shorter\") {\n\t\tif (angleDiff > 180) {\n\t\t\ta1 += 360;\n\t\t}\n\t\telse if (angleDiff < -180) {\n\t\t\ta2 += 360;\n\t\t}\n\t}\n\n\treturn [a1, a2];\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport Lab from \"./lab.js\";\nimport { constrain as constrainAngle } from \"../angles.js\";\nimport { isNone } from \"../util.js\";\n\nexport default new ColorSpace({\n\tid: \"lch\",\n\tname: \"LCH\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 150],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: Lab,\n\tfromBase (Lab) {\n\t\t// These methods are used for other polar forms as well, so we can't hardcode the ε\n\t\tif (this.ε === undefined) {\n\t\t\t// @ts-expect-error Property 'coords' does not exist on type 'string | ColorSpace'\n\t\t\tlet range = Object.values(this.base.coords)[1].refRange;\n\t\t\tlet extent = range[1] - range[0];\n\t\t\tthis.ε = extent / 100000;\n\t\t}\n\n\t\t// Convert to polar form\n\t\tlet [L, a, b] = Lab;\n\t\tlet isAchromatic = Math.abs(a) < this.ε && Math.abs(b) < this.ε;\n\t\tlet h = isAchromatic ? null : constrainAngle((Math.atan2(b, a) * 180) / Math.PI);\n\t\tlet C = isAchromatic ? 0 : Math.sqrt(a ** 2 + b ** 2);\n\n\t\treturn [L, C, h];\n\t},\n\ttoBase (lch) {\n\t\t// Convert from polar form\n\t\tlet [L, C, h] = lch;\n\t\tlet a = null,\n\t\t\tb = null;\n\n\t\tif (!isNone(h)) {\n\t\t\tC = C < 0 ? 0 : C; // Clamp negative Chroma\n\t\t\ta = C * Math.cos((h * Math.PI) / 180);\n\t\t\tb = C * Math.sin((h * Math.PI) / 180);\n\t\t}\n\n\t\treturn [L, a, b];\n\t},\n\n\tformats: {\n\t\tlch: {\n\t\t\tcoords: [\"<percentage> | <number>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","import defaults from \"../defaults.js\";\nimport lab from \"../spaces/lab.js\";\nimport lch from \"../spaces/lch.js\";\nimport getColor from \"../getColor.js\";\n\n// deltaE2000 is a statistically significant improvement\n// and is recommended by the CIE and Idealliance\n// especially for color differences less than 10 deltaE76\n// but is wicked complicated\n// and many implementations have small errors!\n// DeltaE2000 is also discontinuous; in case this\n// matters to you, use deltaECMC instead.\n\nconst Gfactor = 25 ** 7;\nconst π = Math.PI;\nconst r2d = 180 / π;\nconst d2r = π / 180;\n\nfunction pow7 (x) {\n\t// Faster than x ** 7 or Math.pow(x, 7)\n\n\tconst x2 = x * x;\n\tconst x7 = x2 * x2 * x2 * x;\n\n\treturn x7;\n}\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @param {{ kL?: number | undefined; kC?: number | undefined; kH?: number | undefined }} options\n * @returns {number}\n */\nexport default function (color, sample, { kL = 1, kC = 1, kH = 1 } = {}) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and the function parameter as the sample,\n\t// calculate deltaE 2000.\n\n\t// This implementation assumes the parametric\n\t// weighting factors kL, kC and kH\n\t// for the influence of viewing conditions\n\t// are all 1, as sadly seems typical.\n\t// kL should be increased for lightness texture or noise\n\t// and kC increased for chroma noise\n\n\tlet [L1, a1, b1] = lab.from(color);\n\tlet C1 = lch.from(lab, [L1, a1, b1])[1];\n\tlet [L2, a2, b2] = lab.from(sample);\n\tlet C2 = lch.from(lab, [L2, a2, b2])[1];\n\n\t// Check for negative Chroma,\n\t// which might happen through\n\t// direct user input of LCH values\n\n\tif (C1 < 0) {\n\t\tC1 = 0;\n\t}\n\tif (C2 < 0) {\n\t\tC2 = 0;\n\t}\n\n\tlet Cbar = (C1 + C2) / 2; // mean Chroma\n\n\t// calculate a-axis asymmetry factor from mean Chroma\n\t// this turns JND ellipses for near-neutral colors back into circles\n\tlet C7 = pow7(Cbar);\n\n\tlet G = 0.5 * (1 - Math.sqrt(C7 / (C7 + Gfactor)));\n\n\t// scale a axes by asymmetry factor\n\t// this by the way is why there is no Lab2000 colorspace\n\tlet adash1 = (1 + G) * a1;\n\tlet adash2 = (1 + G) * a2;\n\n\t// calculate new Chroma from scaled a and original b axes\n\tlet Cdash1 = Math.sqrt(adash1 ** 2 + b1 ** 2);\n\tlet Cdash2 = Math.sqrt(adash2 ** 2 + b2 ** 2);\n\n\t// calculate new hues, with zero hue for true neutrals\n\t// and in degrees, not radians\n\n\tlet h1 = adash1 === 0 && b1 === 0 ? 0 : Math.atan2(b1, adash1);\n\tlet h2 = adash2 === 0 && b2 === 0 ? 0 : Math.atan2(b2, adash2);\n\n\tif (h1 < 0) {\n\t\th1 += 2 * π;\n\t}\n\tif (h2 < 0) {\n\t\th2 += 2 * π;\n\t}\n\n\th1 *= r2d;\n\th2 *= r2d;\n\n\t// Lightness and Chroma differences; sign matters\n\tlet ΔL = L2 - L1;\n\tlet ΔC = Cdash2 - Cdash1;\n\n\t// Hue difference, getting the sign correct\n\tlet hdiff = h2 - h1;\n\tlet hsum = h1 + h2;\n\tlet habs = Math.abs(hdiff);\n\tlet Δh;\n\n\tif (Cdash1 * Cdash2 === 0) {\n\t\tΔh = 0;\n\t}\n\telse if (habs <= 180) {\n\t\tΔh = hdiff;\n\t}\n\telse if (hdiff > 180) {\n\t\tΔh = hdiff - 360;\n\t}\n\telse if (hdiff < -180) {\n\t\tΔh = hdiff + 360;\n\t}\n\telse {\n\t\tdefaults.warn(\"the unthinkable has happened\");\n\t}\n\n\t// weighted Hue difference, more for larger Chroma\n\tlet ΔH = 2 * Math.sqrt(Cdash2 * Cdash1) * Math.sin((Δh * d2r) / 2);\n\n\t// calculate mean Lightness and Chroma\n\tlet Ldash = (L1 + L2) / 2;\n\tlet Cdash = (Cdash1 + Cdash2) / 2;\n\tlet Cdash7 = pow7(Cdash);\n\n\t// Compensate for non-linearity in the blue region of Lab.\n\t// Four possibilities for hue weighting factor,\n\t// depending on the angles, to get the correct sign\n\tlet hdash;\n\tif (Cdash1 * Cdash2 === 0) {\n\t\thdash = hsum; // which should be zero\n\t}\n\telse if (habs <= 180) {\n\t\thdash = hsum / 2;\n\t}\n\telse if (hsum < 360) {\n\t\thdash = (hsum + 360) / 2;\n\t}\n\telse {\n\t\thdash = (hsum - 360) / 2;\n\t}\n\n\t// positional corrections to the lack of uniformity of CIELAB\n\t// These are all trying to make JND ellipsoids more like spheres\n\n\t// SL Lightness crispening factor\n\t// a background with L=50 is assumed\n\tlet lsq = (Ldash - 50) ** 2;\n\tlet SL = 1 + (0.015 * lsq) / Math.sqrt(20 + lsq);\n\n\t// SC Chroma factor, similar to those in CMC and deltaE 94 formulae\n\tlet SC = 1 + 0.045 * Cdash;\n\n\t// Cross term T for blue non-linearity\n\tlet T = 1;\n\tT -= 0.17 * Math.cos((hdash - 30) * d2r);\n\tT += 0.24 * Math.cos(2 * hdash * d2r);\n\tT += 0.32 * Math.cos((3 * hdash + 6) * d2r);\n\tT -= 0.2 * Math.cos((4 * hdash - 63) * d2r);\n\n\t// SH Hue factor depends on Chroma,\n\t// as well as adjusted hue angle like deltaE94.\n\tlet SH = 1 + 0.015 * Cdash * T;\n\n\t// RT Hue rotation term compensates for rotation of JND ellipses\n\t// and Munsell constant hue lines\n\t// in the medium-high Chroma blue region\n\t// (Hue 225 to 315)\n\tlet Δθ = 30 * Math.exp(-1 * ((hdash - 275) / 25) ** 2);\n\tlet RC = 2 * Math.sqrt(Cdash7 / (Cdash7 + Gfactor));\n\tlet RT = -1 * Math.sin(2 * Δθ * d2r) * RC;\n\n\t// Finally calculate the deltaE, term by term as root sume of squares\n\tlet dE = (ΔL / (kL * SL)) ** 2;\n\tdE += (ΔC / (kC * SC)) ** 2;\n\tdE += (ΔH / (kH * SH)) ** 2;\n\tdE += RT * (ΔC / (kC * SC)) * (ΔH / (kH * SH));\n\treturn Math.sqrt(dE);\n\t// Yay!!!\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"../util.js\";\nimport XYZ_D65 from \"./xyz-d65.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// Recalculated for consistent reference white\n// see https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-943521484\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst XYZtoLMS_M = [\n\t[ 0.8190224379967030, 0.3619062600528904, -0.1288737815209879 ],\n\t[ 0.0329836539323885, 0.9292868615863434, 0.0361446663506424 ],\n\t[ 0.0481771893596242, 0.2642395317527308, 0.6335478284694309 ],\n];\n// inverse of XYZtoLMS_M\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst LMStoXYZ_M = [\n\t[ 1.2268798758459243, -0.5578149944602171, 0.2813910456659647 ],\n\t[ -0.0405757452148008, 1.1122868032803170, -0.0717110580655164 ],\n\t[ -0.0763729366746601, -0.4214933324022432, 1.5869240198367816 ],\n];\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const LMStoLab_M = [\n\t[ 0.2104542683093140, 0.7936177747023054, -0.0040720430116193 ],\n\t[ 1.9779985324311684, -2.4285922420485799, 0.4505937096174110 ],\n\t[ 0.0259040424655478, 0.7827717124575296, -0.8086757549230774 ],\n];\n// LMStoIab_M inverted\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const LabtoLMS_M = [\n\t[ 1.0000000000000000, 0.3963377773761749, 0.2158037573099136 ],\n\t[ 1.0000000000000000, -0.1055613458156586, -0.0638541728258133 ],\n\t[ 1.0000000000000000, -0.0894841775298119, -1.2914855480194092 ],\n];\n\nexport default new ColorSpace({\n\tid: \"oklab\",\n\tname: \"Oklab\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t},\n\n\t// Note that XYZ is relative to D65\n\twhite: \"D65\",\n\tbase: XYZ_D65,\n\tfromBase (XYZ) {\n\t\t// move to LMS cone domain\n\t\tlet LMS = multiply_v3_m3x3(XYZ, XYZtoLMS_M);\n\n\t\t// non-linearity\n\t\tLMS[0] = Math.cbrt(LMS[0]);\n\t\tLMS[1] = Math.cbrt(LMS[1]);\n\t\tLMS[2] = Math.cbrt(LMS[2]);\n\n\t\treturn multiply_v3_m3x3(LMS, LMStoLab_M, LMS);\n\t},\n\ttoBase (OKLab) {\n\t\t// move to LMS cone domain\n\t\tlet LMSg = multiply_v3_m3x3(OKLab, LabtoLMS_M);\n\n\t\t// restore linearity\n\t\tLMSg[0] = LMSg[0] ** 3;\n\t\tLMSg[1] = LMSg[1] ** 3;\n\t\tLMSg[2] = LMSg[2] ** 3;\n\n\t\treturn multiply_v3_m3x3(LMSg, LMStoXYZ_M, LMSg);\n\t},\n\n\tformats: {\n\t\toklab: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import oklab from \"../spaces/oklab.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * More accurate color-difference formulae\n * than the simple 1976 Euclidean distance in CIE Lab\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaEOK, term by term as root sum of squares\n\tlet [L1, a1, b1] = oklab.from(color);\n\tlet [L2, a2, b2] = oklab.from(sample);\n\tlet ΔL = L1 - L2;\n\tlet Δa = a1 - a2;\n\tlet Δb = b1 - b2;\n\treturn Math.sqrt(ΔL ** 2 + Δa ** 2 + Δb ** 2);\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\nconst ε = 0.000075;\n\n/**\n * Check if a color is in gamut of either its own or another color space\n * @param {ColorTypes} color\n * @param {string | ColorSpace} [space]\n * @param {{ epsilon?: number | undefined }} [param2]\n * @returns {boolean}\n */\nexport default function inGamut (color, space, { epsilon = ε } = {}) {\n\tcolor = getColor(color);\n\n\tif (!space) {\n\t\tspace = color.space;\n\t}\n\n\tspace = ColorSpace.get(space);\n\tlet coords = color.coords;\n\n\tif (space !== color.space) {\n\t\tcoords = space.from(color);\n\t}\n\n\treturn space.inGamut(coords, { epsilon });\n}\n","/** @import { Coords, PlainColorObject } from \"./types.js\" */\n\n/**\n * @param {PlainColorObject} color\n * @returns {PlainColorObject}\n */\nexport default function clone (color) {\n\treturn {\n\t\tspace: color.space,\n\t\tcoords: /** @type {Coords} */ (color.coords.slice()),\n\t\talpha: color.alpha,\n\t};\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport { isNone } from \"./util.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n/**\n * Euclidean distance of colors in an arbitrary color space\n * @param {ColorTypes} color1\n * @param {ColorTypes} color2\n * @param {string | ColorSpace} space\n * @returns {number}\n */\nexport default function distance (color1, color2, space = \"lab\") {\n\tspace = ColorSpace.get(space);\n\n\t// Assume getColor() is called on color in space.from()\n\tlet coords1 = space.from(color1);\n\tlet coords2 = space.from(color2);\n\n\treturn Math.sqrt(\n\t\tcoords1.reduce((acc, c1, i) => {\n\t\t\tlet c2 = coords2[i];\n\t\t\tif (isNone(c1) || isNone(c2)) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\treturn acc + (c2 - c1) ** 2;\n\t\t}, 0),\n\t);\n}\n","import distance from \"../distance.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function deltaE76 (color, sample) {\n\t// Assume getColor() is called in the distance function\n\treturn distance(color, sample, \"lab\");\n}\n","import lab from \"../spaces/lab.js\";\nimport lch from \"../spaces/lch.js\";\nimport getColor from \"../getColor.js\";\nimport { isNone } from \"../util.js\";\n\n// More accurate color-difference formulae\n// than the simple 1976 Euclidean distance in Lab\n\n// CMC by the Color Measurement Committee of the\n// Bradford Society of Dyeists and Colorsts, 1994.\n// Uses LCH rather than Lab,\n// with different weights for L, C and H differences\n// A nice increase in accuracy for modest increase in complexity\nconst π = Math.PI;\nconst d2r = π / 180;\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @param {{ l?: number | undefined; c?: number | undefined }} options\n * @returns {number}\n */\nexport default function (color, sample, { l = 2, c = 1 } = {}) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaE CMC.\n\n\t// This implementation assumes the parametric\n\t// weighting factors l:c are 2:1\n\t// which is typical for non-textile uses.\n\n\tlet [L1, a1, b1] = lab.from(color);\n\tlet [, C1, H1] = lch.from(lab, [L1, a1, b1]);\n\tlet [L2, a2, b2] = lab.from(sample);\n\tlet C2 = lch.from(lab, [L2, a2, b2])[1];\n\n\t// let [L1, a1, b1] = color.getAll(lab);\n\t// let C1 = color.get(\"lch.c\");\n\t// let H1 = color.get(\"lch.h\");\n\t// let [L2, a2, b2] = sample.getAll(lab);\n\t// let C2 = sample.get(\"lch.c\");\n\n\t// Check for negative Chroma,\n\t// which might happen through\n\t// direct user input of LCH values\n\n\tif (C1 < 0) {\n\t\tC1 = 0;\n\t}\n\tif (C2 < 0) {\n\t\tC2 = 0;\n\t}\n\n\t// we don't need H2 as ΔH is calculated from Δa, Δb and ΔC\n\n\t// Lightness and Chroma differences\n\t// These are (color - sample), unlike deltaE2000\n\tlet ΔL = L1 - L2;\n\tlet ΔC = C1 - C2;\n\n\tlet Δa = a1 - a2;\n\tlet Δb = b1 - b2;\n\n\t// weighted Hue difference, less for larger Chroma difference\n\n\tlet H2 = Δa ** 2 + Δb ** 2 - ΔC ** 2;\n\t// due to roundoff error it is possible that, for zero a and b,\n\t// ΔC > Δa + Δb is 0, resulting in attempting\n\t// to take the square root of a negative number\n\n\t// trying instead the equation from Industrial Color Physics\n\t// By Georg A. Klein\n\n\t// let ΔH = ((a1 * b2) - (a2 * b1)) / Math.sqrt(0.5 * ((C2 * C1) + (a2 * a1) + (b2 * b1)));\n\t// console.log({ΔH});\n\t// This gives the same result to 12 decimal places\n\t// except it sometimes NaNs when trying to root a negative number\n\n\t// let ΔH = Math.sqrt(H2); we never actually use the root, it gets squared again!!\n\n\t// positional corrections to the lack of uniformity of CIELAB\n\t// These are all trying to make JND ellipsoids more like spheres\n\n\t// SL Lightness crispening factor, depends entirely on L1 not L2\n\tlet SL = 0.511; // linear portion of the Y to L transfer function\n\tif (L1 >= 16) {\n\t\t// cubic portion\n\t\tSL = (0.040975 * L1) / (1 + 0.01765 * L1);\n\t}\n\n\t// SC Chroma factor\n\tlet SC = (0.0638 * C1) / (1 + 0.0131 * C1) + 0.638;\n\n\t// Cross term T for blue non-linearity\n\tlet T;\n\tif (isNone(H1)) {\n\t\tH1 = 0;\n\t}\n\n\tif (H1 >= 164 && H1 <= 345) {\n\t\tT = 0.56 + Math.abs(0.2 * Math.cos((H1 + 168) * d2r));\n\t}\n\telse {\n\t\tT = 0.36 + Math.abs(0.4 * Math.cos((H1 + 35) * d2r));\n\t}\n\t// console.log({T});\n\n\t// SH Hue factor also depends on C1,\n\tlet C4 = Math.pow(C1, 4);\n\tlet F = Math.sqrt(C4 / (C4 + 1900));\n\tlet SH = SC * (F * T + 1 - F);\n\n\t// Finally calculate the deltaE, term by term as root sume of squares\n\tlet dE = (ΔL / (l * SL)) ** 2;\n\tdE += (ΔC / (c * SC)) ** 2;\n\tdE += H2 / SH ** 2;\n\t// dE += (ΔH / SH) ** 2;\n\treturn Math.sqrt(dE);\n\t// Yay!!!\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport XYZ_D65 from \"./xyz-d65.js\";\n\nconst Yw = 203; // absolute luminance of media white\n\nexport default new ColorSpace({\n\t// Absolute CIE XYZ, with a D65 whitepoint,\n\t// as used in most HDR colorspaces as a starting point.\n\t// SDR spaces are converted per BT.2048\n\t// so that diffuse, media white is 203 cd/m²\n\tid: \"xyz-abs-d65\",\n\tcssId: \"--xyz-abs-d65\",\n\tname: \"Absolute XYZ D65\",\n\tcoords: {\n\t\tx: {\n\t\t\trefRange: [0, 9504.7],\n\t\t\tname: \"Xa\",\n\t\t},\n\t\ty: {\n\t\t\trefRange: [0, 10000],\n\t\t\tname: \"Ya\",\n\t\t},\n\t\tz: {\n\t\t\trefRange: [0, 10888.3],\n\t\t\tname: \"Za\",\n\t\t},\n\t},\n\n\tbase: XYZ_D65,\n\tfromBase (XYZ) {\n\t\t// Make XYZ absolute, not relative to media white\n\t\t// Maximum luminance in PQ is 10,000 cd/m²\n\t\t// Relative XYZ has Y=1 for media white\n\t\treturn XYZ.map(v => v * Yw);\n\t},\n\ttoBase (AbsXYZ) {\n\t\t// Convert to media-white relative XYZ\n\t\treturn AbsXYZ.map(v => v / Yw);\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"../util.js\";\nimport XYZ_Abs_D65 from \"./xyz-abs-d65.js\";\nimport { spow } from \"../util.js\";\n\n/** @import { Matrix3x3, Vector3 } from \"../types.js\" */\n\nconst b = 1.15;\nconst g = 0.66;\nconst n = 2610 / 2 ** 14;\nconst ninv = 2 ** 14 / 2610;\nconst c1 = 3424 / 2 ** 12;\nconst c2 = 2413 / 2 ** 7;\nconst c3 = 2392 / 2 ** 7;\nconst p = (1.7 * 2523) / 2 ** 5;\nconst pinv = 2 ** 5 / (1.7 * 2523);\nconst d = -0.56;\nconst d0 = 1.6295499532821566e-11;\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst XYZtoCone_M = [\n\t[ 0.41478972, 0.579999, 0.0146480 ],\n\t[ -0.2015100, 1.120649, 0.0531008 ],\n\t[ -0.0166008, 0.264800, 0.6684799 ],\n];\n// XYZtoCone_M inverted\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst ConetoXYZ_M = [\n\t[ 1.9242264357876067, -1.0047923125953657, 0.037651404030618 ],\n\t[ 0.35031676209499907, 0.7264811939316552, -0.06538442294808501 ],\n\t[ -0.09098281098284752, -0.3127282905230739, 1.5227665613052603 ],\n];\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst ConetoIab_M = [\n\t[ 0.5, 0.5, 0 ],\n\t[ 3.524000, -4.066708, 0.542708 ],\n\t[ 0.199076, 1.096799, -1.295875 ],\n];\n// ConetoIab_M inverted\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst IabtoCone_M = [\n\t[ 1, 0.13860504327153927, 0.05804731615611883 ],\n\t[ 1, -0.1386050432715393, -0.058047316156118904 ],\n\t[ 1, -0.09601924202631895, -0.81189189605603900 ],\n];\n\nexport default new ColorSpace({\n\tid: \"jzazbz\",\n\tname: \"Jzazbz\",\n\tcoords: {\n\t\tjz: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Jz\",\n\t\t},\n\t\taz: {\n\t\t\trefRange: [-0.21, 0.21],\n\t\t},\n\t\tbz: {\n\t\t\trefRange: [-0.21, 0.21],\n\t\t},\n\t},\n\n\tbase: XYZ_Abs_D65,\n\tfromBase (XYZ) {\n\t\t// First make XYZ absolute, not relative to media white\n\t\t// Maximum luminance in PQ is 10,000 cd/m²\n\t\t// Relative XYZ has Y=1 for media white\n\t\t// BT.2048 says media white Y=203 at PQ 58\n\n\t\tlet [Xa, Ya, Za] = XYZ;\n\n\t\t// modify X and Y to minimize blue curvature\n\t\tlet Xm = b * Xa - (b - 1) * Za;\n\t\tlet Ym = g * Ya - (g - 1) * Xa;\n\n\t\t// move to LMS cone domain\n\t\tlet LMS = multiply_v3_m3x3([Xm, Ym, Za], XYZtoCone_M);\n\n\t\t// PQ-encode LMS\n\t\tlet PQLMS = /** @type {Vector3} } */ (\n\t\t\tLMS.map(function (val) {\n\t\t\t\tlet num = c1 + c2 * spow(val / 10000, n);\n\t\t\t\tlet denom = 1 + c3 * spow(val / 10000, n);\n\n\t\t\t\treturn spow(num / denom, p);\n\t\t\t})\n\t\t);\n\n\t\t// almost there, calculate Iz az bz\n\t\tlet [Iz, az, bz] = multiply_v3_m3x3(PQLMS, ConetoIab_M);\n\t\t// console.log({Iz, az, bz});\n\n\t\tlet Jz = ((1 + d) * Iz) / (1 + d * Iz) - d0;\n\t\treturn [Jz, az, bz];\n\t},\n\ttoBase (Jzazbz) {\n\t\tlet [Jz, az, bz] = Jzazbz;\n\t\tlet Iz = (Jz + d0) / (1 + d - d * (Jz + d0));\n\n\t\t// bring into LMS cone domain\n\t\tlet PQLMS = multiply_v3_m3x3([Iz, az, bz], IabtoCone_M);\n\n\t\t// convert from PQ-coded to linear-light\n\t\tlet LMS = /** @type {Vector3} } */ (\n\t\t\tPQLMS.map(function (val) {\n\t\t\t\tlet num = c1 - spow(val, pinv);\n\t\t\t\tlet denom = c3 * spow(val, pinv) - c2;\n\t\t\t\tlet x = 10000 * spow(num / denom, ninv);\n\n\t\t\t\treturn x; // luminance relative to diffuse white, [0, 70 or so].\n\t\t\t})\n\t\t);\n\n\t\t// modified abs XYZ\n\t\tlet [Xm, Ym, Za] = multiply_v3_m3x3(LMS, ConetoXYZ_M);\n\n\t\t// un-modify X and Y to get D65 XYZ, relative to media white\n\t\tlet Xa = (Xm + (b - 1) * Za) / b;\n\t\tlet Ya = (Ym + (g - 1) * Xa) / g;\n\t\treturn [Xa, Ya, Za];\n\t},\n\n\tformats: {\n\t\t// https://drafts.csswg.org/css-color-hdr/#Jzazbz\n\t\tjzazbz: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport Jzazbz from \"./jzazbz.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"jzczhz\",\n\tname: \"JzCzHz\",\n\tcoords: {\n\t\tjz: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Jz\",\n\t\t},\n\t\tcz: {\n\t\t\trefRange: [0, 0.26],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\thz: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: Jzazbz,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\t// https://drafts.csswg.org/css-color-hdr/#JzCzhz\n\t\tjzczhz: {\n\t\t\tcoords: [\"<percentage> | <number>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","import jzczhz from \"../spaces/jzczhz.js\";\nimport getColor from \"../getColor.js\";\nimport { isNone } from \"../util.js\";\n\n/**\n * More accurate color-difference formulae\n * than the simple 1976 Euclidean distance in Lab\n *\n * Uses JzCzHz, which has improved perceptual uniformity\n * and thus a simple Euclidean root-sum of ΔL² ΔC² ΔH²\n * gives good results.\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaE in JzCzHz.\n\tlet [Jz1, Cz1, Hz1] = jzczhz.from(color);\n\tlet [Jz2, Cz2, Hz2] = jzczhz.from(sample);\n\n\t// Lightness and Chroma differences\n\t// sign does not matter as they are squared.\n\tlet ΔJ = Jz1 - Jz2;\n\tlet ΔC = Cz1 - Cz2;\n\n\t// length of chord for ΔH\n\tif (isNone(Hz1) && isNone(Hz2)) {\n\t\t// both undefined hues\n\t\tHz1 = 0;\n\t\tHz2 = 0;\n\t}\n\telse if (isNone(Hz1)) {\n\t\t// one undefined, set to the defined hue\n\t\tHz1 = Hz2;\n\t}\n\telse if (isNone(Hz2)) {\n\t\tHz2 = Hz1;\n\t}\n\n\tlet Δh = Hz1 - Hz2;\n\tlet ΔH = 2 * Math.sqrt(Cz1 * Cz2) * Math.sin((Δh / 2) * (Math.PI / 180));\n\n\treturn Math.sqrt(ΔJ ** 2 + ΔC ** 2 + ΔH ** 2);\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"../util.js\";\nimport XYZ_Abs_D65 from \"./xyz-abs-d65.js\";\n\n/** @import { Matrix3x3, Vector3 } from \"../types.js\" */\n\nconst c1 = 3424 / 4096;\nconst c2 = 2413 / 128;\nconst c3 = 2392 / 128;\nconst m1 = 2610 / 16384;\nconst m2 = 2523 / 32;\nconst im1 = 16384 / 2610;\nconst im2 = 32 / 2523;\n\n// The matrix below includes the 4% crosstalk components\n// and is from the Dolby \"What is ICtCp\" paper\"\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst XYZtoLMS_M = [\n\t[ 0.3592832590121217, 0.6976051147779502, -0.0358915932320290 ],\n\t[ -0.1920808463704993, 1.1004767970374321, 0.0753748658519118 ],\n\t[ 0.0070797844607479, 0.0748396662186362, 0.8433265453898765 ],\n];\n// linear-light Rec.2020 to LMS, again with crosstalk\n// rational terms from Jan Fröhlich,\n// Encoding High Dynamic Range andWide Color Gamut Imagery, p.97\n// and ITU-R BT.2124-0 p.2\n/*\nconst Rec2020toLMS_M = [\n\t[ 1688 / 4096, 2146 / 4096, 262 / 4096 ],\n\t[ 683 / 4096, 2951 / 4096, 462 / 4096 ],\n\t[ 99 / 4096, 309 / 4096, 3688 / 4096 ]\n];\n*/\n// this includes the Ebner LMS coefficients,\n// the rotation, and the scaling to [-0.5,0.5] range\n// rational terms from Fröhlich p.97\n// and ITU-R BT.2124-0 pp.2-3\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst LMStoIPT_M = [\n\t[ 2048 / 4096, 2048 / 4096, 0 ],\n\t[ 6610 / 4096, -13613 / 4096, 7003 / 4096 ],\n\t[ 17933 / 4096, -17390 / 4096, -543 / 4096 ],\n];\n\n// inverted matrices, calculated from the above\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst IPTtoLMS_M = [\n\t[ 0.9999999999999998, 0.0086090370379328, 0.1110296250030260 ],\n\t[ 0.9999999999999998, -0.0086090370379328, -0.1110296250030259 ],\n\t[ 0.9999999999999998, 0.5600313357106791, -0.3206271749873188 ],\n];\n/*\n// prettier-ignore\nconst LMStoRec2020_M = [\n\t[ 3.4375568932814012112, -2.5072112125095058195, 0.069654319228104608382],\n\t[-0.79142868665644156125, 1.9838372198740089874, -0.19240853321756742626 ],\n\t[-0.025646662911506476363, -0.099240248643945566751, 1.1248869115554520431 ]\n];\n*/\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst LMStoXYZ_M = [\n\t[ 2.0701522183894223, -1.3263473389671563, 0.2066510476294053 ],\n\t[ 0.3647385209748072, 0.6805660249472273, -0.0453045459220347 ],\n\t[ -0.0497472075358123, -0.0492609666966131, 1.1880659249923042 ],\n];\n\n// Only the PQ form of ICtCp is implemented here. There is also an HLG form.\n// from Dolby, \"WHAT IS ICTCP?\"\n// https://professional.dolby.com/siteassets/pdfs/ictcp_dolbywhitepaper_v071.pdf\n// and\n// Dolby, \"Perceptual Color Volume\n// Measuring the Distinguishable Colors of HDR and WCG Displays\"\n// https://professional.dolby.com/siteassets/pdfs/dolby-vision-measuring-perceptual-color-volume-v7.1.pdf\nexport default new ColorSpace({\n\tid: \"ictcp\",\n\tname: \"ICTCP\",\n\t// From BT.2100-2 page 7:\n\t// During production, signal values are expected to exceed the\n\t// range E′ = [0.0 : 1.0]. This provides processing headroom and avoids\n\t// signal degradation during cascaded processing. Such values of E′,\n\t// below 0.0 or exceeding 1.0, should not be clipped during production\n\t// and exchange.\n\t// Values below 0.0 should not be clipped in reference displays (even\n\t// though they represent “negative” light) to allow the black level of\n\t// the signal (LB) to be properly set using test signals known as “PLUGE”\n\tcoords: {\n\t\ti: {\n\t\t\trefRange: [0, 1], // Constant luminance,\n\t\t\tname: \"I\",\n\t\t},\n\t\tct: {\n\t\t\trefRange: [-0.5, 0.5], // Full BT.2020 gamut in range [-0.5, 0.5]\n\t\t\tname: \"CT\",\n\t\t},\n\t\tcp: {\n\t\t\trefRange: [-0.5, 0.5],\n\t\t\tname: \"CP\",\n\t\t},\n\t},\n\n\tbase: XYZ_Abs_D65,\n\tfromBase (XYZ) {\n\t\t// move to LMS cone domain\n\t\tlet LMS = multiply_v3_m3x3(XYZ, XYZtoLMS_M);\n\n\t\treturn LMStoICtCp(LMS);\n\t},\n\ttoBase (ICtCp) {\n\t\tlet LMS = ICtCptoLMS(ICtCp);\n\n\t\treturn multiply_v3_m3x3(LMS, LMStoXYZ_M);\n\t},\n\n\tformats: {\n\t\tictcp: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n\n/**\n *\n * @param {Vector3} LMS\n * @returns {Vector3}\n */\nfunction LMStoICtCp (LMS) {\n\t// apply the PQ EOTF\n\t// we can't ever be dividing by zero because of the \"1 +\" in the denominator\n\tlet PQLMS = /** @type {Vector3} */ (\n\t\tLMS.map(function (val) {\n\t\t\tlet num = c1 + c2 * (val / 10000) ** m1;\n\t\t\tlet denom = 1 + c3 * (val / 10000) ** m1;\n\n\t\t\treturn (num / denom) ** m2;\n\t\t})\n\t);\n\n\t// LMS to IPT, with rotation for Y'C'bC'r compatibility\n\treturn multiply_v3_m3x3(PQLMS, LMStoIPT_M);\n}\n\n/**\n *\n * @param {Vector3} ICtCp\n * @returns {Vector3}\n */\nfunction ICtCptoLMS (ICtCp) {\n\tlet PQLMS = multiply_v3_m3x3(ICtCp, IPTtoLMS_M);\n\n\t// From BT.2124-0 Annex 2 Conversion 3\n\tlet LMS = /** @type {Vector3} */ (\n\t\tPQLMS.map(function (val) {\n\t\t\tlet num = Math.max(val ** im2 - c1, 0);\n\t\t\tlet denom = c2 - c3 * val ** im2;\n\t\t\treturn 10000 * (num / denom) ** im1;\n\t\t})\n\t);\n\n\treturn LMS;\n}\n","import ictcp from \"../spaces/ictcp.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * Delta E in ICtCp space,\n * which the ITU calls Delta E ITP, which is shorter.\n * Formulae from ITU Rec. ITU-R BT.2124-0\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaE in ICtCp\n\t// which is simply the Euclidean distance\n\n\tlet [I1, T1, P1] = ictcp.from(color);\n\tlet [I2, T2, P2] = ictcp.from(sample);\n\n\t// the 0.25 factor is to undo the encoding scaling in Ct\n\t// the 720 is so that 1 deltaE = 1 JND\n\t// per ITU-R BT.2124-0 p.3\n\n\treturn 720 * Math.sqrt((I1 - I2) ** 2 + 0.25 * (T1 - T2) ** 2 + (P1 - P2) ** 2);\n}\n","import oklab from \"../spaces/oklab.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * More accurate color-difference formulae\n * than the simple 1976 Euclidean distance in CIE Lab\n * The Oklab a and b axes are scaled relative to the L axis, for better uniformity\n * Björn Ottosson said:\n * \"I've recently done some tests with color distance datasets as implemented\n * in Colorio and on both the Combvd dataset and the OSA-UCS dataset a\n * scale factor of slightly more than 2 for a and b would give the best results\n * (2.016 works best for Combvd and 2.045 for the OSA-UCS dataset).\"\n * @see {@link <https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-945714988>}\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaEOK2, term by term as root sum of squares\n\tlet abscale = 2;\n\tlet [L1, a1, b1] = oklab.from(color);\n\tlet [L2, a2, b2] = oklab.from(sample);\n\tlet ΔL = L1 - L2;\n\tlet Δa = abscale * (a1 - a2);\n\tlet Δb = abscale * (b1 - b2);\n\treturn Math.sqrt(ΔL ** 2 + Δa ** 2 + Δb ** 2);\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3, interpolate, copySign, spow, zdiv, bisectLeft } from \"../util.js\";\nimport { constrain } from \"../angles.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\nimport { WHITES } from \"../adapt.js\";\n\n/** @import { Coords, Matrix3x3, Vector3 } from \"../types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"../types.js\").Cam16Object} Cam16Object */\n/** @typedef {import(\"../types.js\").Cam16Input} Cam16Input */\n/** @typedef {import(\"../types.js\").Cam16Environment} Cam16Environment */\n\nconst white = WHITES.D65;\nconst adaptedCoef = 0.42;\nconst adaptedCoefInv = 1 / adaptedCoef;\nconst tau = 2 * Math.PI;\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst cat16 = [\n\t[ 0.401288, 0.650173, -0.051461 ],\n\t[ -0.250268, 1.204414, 0.045854 ],\n\t[ -0.002079, 0.048952, 0.953127 ],\n];\n\n/** @type {Matrix3x3} */\nconst cat16Inv = [\n\t[1.8620678550872327, -1.0112546305316843, 0.14918677544445175],\n\t[0.38752654323613717, 0.6214474419314753, -0.008973985167612518],\n\t[-0.015841498849333856, -0.03412293802851557, 1.0499644368778496],\n];\n\n/** @type {Matrix3x3} */\nconst m1 = [\n\t[460.0, 451.0, 288.0],\n\t[460.0, -891.0, -261.0],\n\t[460.0, -220.0, -6300.0],\n];\n\nconst surroundMap = {\n\tdark: [0.8, 0.525, 0.8],\n\tdim: [0.9, 0.59, 0.9],\n\taverage: [1, 0.69, 1],\n};\n\nconst hueQuadMap = {\n\t// Red, Yellow, Green, Blue, Red\n\th: [20.14, 90.0, 164.25, 237.53, 380.14],\n\te: [0.8, 0.7, 1.0, 1.2, 0.8],\n\tH: [0.0, 100.0, 200.0, 300.0, 400.0],\n};\n\nconst rad2deg = 180 / Math.PI;\nconst deg2rad = Math.PI / 180;\n\n/**\n * @param {Coords} coords\n * @param {number} fl\n * @returns {[number, number, number]}\n */\nexport function adapt (coords, fl) {\n\tconst temp = /** @type {[number, number, number]} */ (\n\t\tcoords.map(c => {\n\t\t\tconst x = spow(fl * Math.abs(c) * 0.01, adaptedCoef);\n\t\t\treturn (400 * copySign(x, c)) / (x + 27.13);\n\t\t})\n\t);\n\treturn temp;\n}\n\n/**\n * @param {Coords} adapted\n * @param {number} fl\n * @returns {[number, number, number]}\n */\nexport function unadapt (adapted, fl) {\n\tconst constant = (100 / fl) * 27.13 ** adaptedCoefInv;\n\treturn /** @type {[number, number, number]} */ (\n\t\tadapted.map(c => {\n\t\t\tconst cabs = Math.abs(c);\n\t\t\treturn copySign(constant * spow(cabs / (400 - cabs), adaptedCoefInv), c);\n\t\t})\n\t);\n}\n\n/**\n * @param {number} h\n */\nexport function hueQuadrature (h) {\n\tlet hp = constrain(h);\n\tif (hp <= hueQuadMap.h[0]) {\n\t\thp += 360;\n\t}\n\n\tconst i = bisectLeft(hueQuadMap.h, hp) - 1;\n\tconst [hi, hii] = hueQuadMap.h.slice(i, i + 2);\n\tconst [ei, eii] = hueQuadMap.e.slice(i, i + 2);\n\tconst Hi = hueQuadMap.H[i];\n\n\tconst t = (hp - hi) / ei;\n\treturn Hi + (100 * t) / (t + (hii - hp) / eii);\n}\n\n/**\n * @param {number} H\n */\nexport function invHueQuadrature (H) {\n\tlet Hp = ((H % 400) + 400) % 400;\n\tconst i = Math.floor(0.01 * Hp);\n\tHp = Hp % 100;\n\tconst [hi, hii] = hueQuadMap.h.slice(i, i + 2);\n\tconst [ei, eii] = hueQuadMap.e.slice(i, i + 2);\n\n\treturn constrain((Hp * (eii * hi - ei * hii) - 100 * hi * eii) / (Hp * (eii - ei) - 100 * eii));\n}\n\n/**\n * @param {[number, number, number]} refWhite\n * @param {number} adaptingLuminance\n * @param {number} backgroundLuminance\n * @param {keyof typeof surroundMap} surround\n * @param {boolean} discounting\n * @returns {Cam16Environment}\n */\nexport function environment (\n\trefWhite,\n\tadaptingLuminance,\n\tbackgroundLuminance,\n\tsurround,\n\tdiscounting,\n) {\n\tconst env = {};\n\n\tenv.discounting = discounting;\n\tenv.refWhite = refWhite;\n\tenv.surround = surround;\n\tconst xyzW = /** @type {Vector3} */ (\n\t\trefWhite.map(c => {\n\t\t\treturn c * 100;\n\t\t})\n\t);\n\n\t// The average luminance of the environment in `cd/m^2cd/m` (a.k.a. nits)\n\tenv.la = adaptingLuminance;\n\t// The relative luminance of the nearby background\n\tenv.yb = backgroundLuminance;\n\t// Absolute luminance of the reference white.\n\tconst yw = xyzW[1];\n\n\t// Cone response for reference white\n\tconst rgbW = multiply_v3_m3x3(xyzW, cat16);\n\n\t// Surround: dark, dim, and average\n\tlet values = surroundMap[env.surround];\n\tconst f = values[0];\n\tenv.c = values[1];\n\tenv.nc = values[2];\n\n\tconst k = 1 / (5 * env.la + 1);\n\tconst k4 = k ** 4;\n\n\t// Factor of luminance level adaptation\n\tenv.fl = k4 * env.la + 0.1 * (1 - k4) * (1 - k4) * Math.cbrt(5 * env.la);\n\tenv.flRoot = env.fl ** 0.25;\n\n\tenv.n = env.yb / yw;\n\tenv.z = 1.48 + Math.sqrt(env.n);\n\tenv.nbb = 0.725 * env.n ** -0.2;\n\tenv.ncb = env.nbb;\n\n\t// Degree of adaptation calculating if not discounting\n\t// illuminant (assumed eye is fully adapted)\n\tconst d = discounting\n\t\t? 1\n\t\t: Math.max(Math.min(f * (1 - (1 / 3.6) * Math.exp((-env.la - 42) / 92)), 1), 0);\n\tenv.dRgb = /** @type {[number, number, number]} */ (\n\t\trgbW.map(c => {\n\t\t\treturn interpolate(1, yw / c, d);\n\t\t})\n\t);\n\tenv.dRgbInv = /** @type {[number, number, number]} */ (\n\t\tenv.dRgb.map(c => {\n\t\t\treturn 1 / c;\n\t\t})\n\t);\n\n\t// Achromatic response\n\tconst rgbCW = /** @type {[number, number, number]} */ (\n\t\trgbW.map((c, i) => {\n\t\t\treturn c * env.dRgb[i];\n\t\t})\n\t);\n\tconst rgbAW = adapt(rgbCW, env.fl);\n\tenv.aW = env.nbb * (2 * rgbAW[0] + rgbAW[1] + 0.05 * rgbAW[2]);\n\n\t// console.log(env);\n\n\treturn env;\n}\n\n// Pre-calculate everything we can with the viewing conditions\nconst viewingConditions = environment(white, (64 / Math.PI) * 0.2, 20, \"average\", false);\n\n/**\n * @param {Cam16Input} cam16\n * @param {Cam16Environment} env\n * @returns {[number, number, number]}\n */\nexport function fromCam16 (cam16, env) {\n\t// These check ensure one, and only one attribute for a\n\t// given category is provided.\n\t// @ts-expect-error The '^` operator is not allowed for boolean types\n\tif (!((cam16.J !== undefined) ^ (cam16.Q !== undefined))) {\n\t\tthrow new Error(\"Conversion requires one and only one: 'J' or 'Q'\");\n\t}\n\n\t// @ts-expect-error - The '^` operator is not allowed for boolean types\n\tif (!((cam16.C !== undefined) ^ (cam16.M !== undefined) ^ (cam16.s !== undefined))) {\n\t\tthrow new Error(\"Conversion requires one and only one: 'C', 'M' or 's'\");\n\t}\n\n\t// Hue is absolutely required\n\t// @ts-expect-error - The '^` operator is not allowed for boolean types\n\tif (!((cam16.h !== undefined) ^ (cam16.H !== undefined))) {\n\t\tthrow new Error(\"Conversion requires one and only one: 'h' or 'H'\");\n\t}\n\n\t// Black\n\tif (cam16.J === 0.0 || cam16.Q === 0.0) {\n\t\treturn [0.0, 0.0, 0.0];\n\t}\n\n\t// Break hue into Cartesian components\n\tlet hRad = 0.0;\n\tif (cam16.h !== undefined) {\n\t\thRad = constrain(cam16.h) * deg2rad;\n\t}\n\telse {\n\t\thRad = invHueQuadrature(cam16.H) * deg2rad;\n\t}\n\n\tconst cosh = Math.cos(hRad);\n\tconst sinh = Math.sin(hRad);\n\n\t// Calculate `Jroot` from one of the lightness derived coordinates.\n\tlet Jroot = 0.0;\n\tif (cam16.J !== undefined) {\n\t\tJroot = spow(cam16.J, 1 / 2) * 0.1;\n\t}\n\telse if (cam16.Q !== undefined) {\n\t\tJroot = (0.25 * env.c * cam16.Q) / ((env.aW + 4) * env.flRoot);\n\t}\n\n\t// Calculate the `t` value from one of the chroma derived coordinates\n\tlet alpha = 0.0;\n\tif (cam16.C !== undefined) {\n\t\talpha = cam16.C / Jroot;\n\t}\n\telse if (cam16.M !== undefined) {\n\t\talpha = cam16.M / env.flRoot / Jroot;\n\t}\n\telse if (cam16.s !== undefined) {\n\t\talpha = (0.0004 * cam16.s ** 2 * (env.aW + 4)) / env.c;\n\t}\n\tconst t = spow(alpha * Math.pow(1.64 - Math.pow(0.29, env.n), -0.73), 10 / 9);\n\n\t// Eccentricity\n\tconst et = 0.25 * (Math.cos(hRad + 2) + 3.8);\n\n\t// Achromatic response\n\tconst A = env.aW * spow(Jroot, 2 / env.c / env.z);\n\n\t// Calculate red-green and yellow-blue components\n\tconst p1 = (5e4 / 13) * env.nc * env.ncb * et;\n\tconst p2 = A / env.nbb;\n\tconst r = 23 * (p2 + 0.305) * zdiv(t, 23 * p1 + t * (11 * cosh + 108 * sinh));\n\tconst a = r * cosh;\n\tconst b = r * sinh;\n\n\t// Calculate back from cone response to XYZ\n\tconst rgb_c = unadapt(\n\t\t/** @type {Vector3} */\n\t\t(\n\t\t\tmultiply_v3_m3x3([p2, a, b], m1).map(c => {\n\t\t\t\treturn (c * 1) / 1403;\n\t\t\t})\n\t\t),\n\t\tenv.fl,\n\t);\n\treturn /** @type {Vector3} */ (\n\t\tmultiply_v3_m3x3(\n\t\t\t/** @type {Vector3} */ (\n\t\t\t\trgb_c.map((c, i) => {\n\t\t\t\t\treturn c * env.dRgbInv[i];\n\t\t\t\t})\n\t\t\t),\n\t\t\tcat16Inv,\n\t\t).map(c => {\n\t\t\treturn c / 100;\n\t\t})\n\t);\n}\n\n/**\n * @param {[number, number, number]} xyzd65\n * @param {Cam16Environment} env\n * @returns {Cam16Object}\n */\nexport function toCam16 (xyzd65, env) {\n\t// Cone response\n\tconst xyz100 = /** @type {Vector3} */ (\n\t\txyzd65.map(c => {\n\t\t\treturn c * 100;\n\t\t})\n\t);\n\tconst rgbA = adapt(\n\t\t/** @type {[number, number, number]} */\n\t\t(\n\t\t\tmultiply_v3_m3x3(xyz100, cat16).map((c, i) => {\n\t\t\t\treturn c * env.dRgb[i];\n\t\t\t})\n\t\t),\n\t\tenv.fl,\n\t);\n\n\t// Calculate hue from red-green and yellow-blue components\n\tconst a = rgbA[0] + (-12 * rgbA[1] + rgbA[2]) / 11;\n\tconst b = (rgbA[0] + rgbA[1] - 2 * rgbA[2]) / 9;\n\tconst hRad = ((Math.atan2(b, a) % tau) + tau) % tau;\n\n\t// Eccentricity\n\tconst et = 0.25 * (Math.cos(hRad + 2) + 3.8);\n\n\tconst t =\n\t\t(5e4 / 13) *\n\t\tenv.nc *\n\t\tenv.ncb *\n\t\tzdiv(et * Math.sqrt(a ** 2 + b ** 2), rgbA[0] + rgbA[1] + 1.05 * rgbA[2] + 0.305);\n\tconst alpha = spow(t, 0.9) * Math.pow(1.64 - Math.pow(0.29, env.n), 0.73);\n\n\t// Achromatic response\n\tconst A = env.nbb * (2 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]);\n\n\tconst Jroot = spow(A / env.aW, 0.5 * env.c * env.z);\n\n\t// Lightness\n\tconst J = 100 * spow(Jroot, 2);\n\n\t// Brightness\n\tconst Q = (4 / env.c) * Jroot * (env.aW + 4) * env.flRoot;\n\n\t// Chroma\n\tconst C = alpha * Jroot;\n\n\t// Colorfulness\n\tconst M = C * env.flRoot;\n\n\t// Hue\n\tconst h = constrain(hRad * rad2deg);\n\n\t// Hue quadrature\n\tconst H = hueQuadrature(h);\n\n\t// Saturation\n\tconst s = 50 * spow((env.c * alpha) / (env.aW + 4), 1 / 2);\n\n\t// console.log({J: J, C: C, h: h, s: s, Q: Q, M: M, H: H});\n\n\treturn { J: J, C: C, h: h, s: s, Q: Q, M: M, H: H };\n}\n\n// Provided as a way to directly evaluate the CAM16 model\n// https://observablehq.com/@jrus/cam16: reference implementation\n// https://arxiv.org/pdf/1802.06067.pdf: Nico Schlömer\n// https://onlinelibrary.wiley.com/doi/pdf/10.1002/col.22324: hue quadrature\n// https://www.researchgate.net/publication/318152296_Comprehensive_color_solutions_CAM16_CAT16_and_CAM16-UCS\n// Results compared against: https://github.com/colour-science/colour\nexport default new ColorSpace({\n\tid: \"cam16-jmh\",\n\tcssId: \"--cam16-jmh\",\n\tname: \"CAM16-JMh\",\n\tcoords: {\n\t\tj: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"J\",\n\t\t},\n\t\tm: {\n\t\t\trefRange: [0, 105.0],\n\t\t\tname: \"Colorfulness\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: xyz_d65,\n\n\tfromBase (xyz) {\n\t\t// If another derivation is created, ε could vary, so we can't hardcode\n\t\tif (this.ε === undefined) {\n\t\t\tthis.ε = Object.values(this.coords)[1].refRange[1] / 100000;\n\t\t}\n\t\tconst cam16 = toCam16(xyz, viewingConditions);\n\t\tconst isAchromatic = Math.abs(cam16.M) < this.ε;\n\t\treturn [cam16.J, isAchromatic ? 0 : cam16.M, isAchromatic ? null : cam16.h];\n\t},\n\ttoBase (cam16) {\n\t\treturn fromCam16({ J: cam16[0], M: cam16[1], h: cam16[2] }, viewingConditions);\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { constrain } from \"../angles.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\nimport { fromCam16, toCam16, environment } from \"./cam16.js\";\nimport { WHITES } from \"../adapt.js\";\n\nconst white = WHITES.D65;\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\n\nfunction toLstar (y) {\n\t// Convert XYZ Y to L*\n\n\tconst fy = y > ε ? Math.cbrt(y) : (κ * y + 16) / 116;\n\treturn 116.0 * fy - 16.0;\n}\n\nfunction fromLstar (lstar) {\n\t// Convert L* back to XYZ Y\n\n\treturn lstar > 8 ? Math.pow((lstar + 16) / 116, 3) : lstar / κ;\n}\n\nfunction fromHct (coords, env) {\n\t// Use Newton's method to try and converge as quick as possible or\n\t// converge as close as we can. While the requested precision is achieved\n\t// most of the time, it may not always be achievable. Especially past the\n\t// visible spectrum, the algorithm will likely struggle to get the same\n\t// precision. If, for whatever reason, we cannot achieve the accuracy we\n\t// seek in the allotted iterations, just return the closest we were able to\n\t// get.\n\n\tlet [h, c, t] = coords;\n\tlet xyz = [];\n\tlet j = 0;\n\n\t// Shortcut out for black\n\tif (t === 0) {\n\t\treturn [0.0, 0.0, 0.0];\n\t}\n\n\t// Calculate the Y we need to target\n\tlet y = fromLstar(t);\n\n\t// A better initial guess yields better results. Polynomials come from\n\t// curve fitting the T vs J response.\n\tif (t > 0) {\n\t\tj = 0.00379058511492914 * t ** 2 + 0.608983189401032 * t + 0.9155088574762233;\n\t}\n\telse {\n\t\tj = 9.514440756550361e-6 * t ** 2 + 0.08693057439788597 * t - 21.928975842194614;\n\t}\n\n\t// Threshold of how close is close enough, and max number of attempts.\n\t// More precision and more attempts means more time spent iterating. Higher\n\t// required precision gives more accuracy but also increases the chance of\n\t// not hitting the goal. 2e-12 allows us to convert round trip with\n\t// reasonable accuracy of six decimal places or more.\n\tconst threshold = 2e-12;\n\tconst max_attempts = 15;\n\n\tlet attempt = 0;\n\tlet last = Infinity;\n\tlet best = j;\n\n\t// Try to find a J such that the returned y matches the returned y of the L*\n\twhile (attempt <= max_attempts) {\n\t\txyz = fromCam16({ J: j, C: c, h: h }, env);\n\n\t\t// If we are within range, return XYZ\n\t\t// If we are closer than last time, save the values\n\t\tconst delta = Math.abs(xyz[1] - y);\n\t\tif (delta < last) {\n\t\t\tif (delta <= threshold) {\n\t\t\t\treturn xyz;\n\t\t\t}\n\t\t\tbest = j;\n\t\t\tlast = delta;\n\t\t}\n\n\t\t// f(j_root) = (j ** (1 / 2)) * 0.1\n\t\t// f(j) = ((f(j_root) * 100) ** 2) / j - 1 = 0\n\t\t// f(j_root) = Y = y / 100\n\t\t// f(j) = (y ** 2) / j - 1\n\t\t// f'(j) = (2 * y) / j\n\t\tj = j - ((xyz[1] - y) * j) / (2 * xyz[1]);\n\n\t\tattempt += 1;\n\t}\n\n\t// We could not acquire the precision we desired,\n\t// return our closest attempt.\n\treturn fromCam16({ J: j, C: c, h: h }, env);\n}\n\nfunction toHct (xyz, env) {\n\t// Calculate HCT by taking the L* of CIE LCh D65 and CAM16 chroma and hue.\n\n\tconst t = toLstar(xyz[1]);\n\tif (t === 0.0) {\n\t\treturn [0.0, 0.0, 0.0];\n\t}\n\tconst cam16 = toCam16(xyz, viewingConditions);\n\treturn [constrain(cam16.h), cam16.C, t];\n}\n\n// Pre-calculate everything we can with the viewing conditions\nexport const viewingConditions = environment(\n\twhite,\n\t(200 / Math.PI) * fromLstar(50.0),\n\tfromLstar(50.0) * 100,\n\t\"average\",\n\tfalse,\n);\n\n// https://material.io/blog/science-of-color-design\n// This is not a port of the material-color-utilities,\n// but instead implements the full color space as described,\n// combining CAM16 JCh and Lab D65. This does not clamp conversion\n// to HCT to specific chroma bands and provides support for wider\n// gamuts than Google currently supports and does so at a greater\n// precision (> 8 bits back to sRGB).\n// This implementation comes from https://github.com/facelessuser/coloraide\n// which is licensed under MIT.\nexport default new ColorSpace({\n\tid: \"hct\",\n\tname: \"HCT\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 145],\n\t\t\tname: \"Colorfulness\",\n\t\t},\n\t\tt: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Tone\",\n\t\t},\n\t},\n\n\tbase: xyz_d65,\n\n\tfromBase (xyz) {\n\t\tif (this.ε === undefined) {\n\t\t\tthis.ε = Object.values(this.coords)[1].refRange[1] / 100000;\n\t\t}\n\t\tlet hct = toHct(xyz, viewingConditions);\n\t\tif (hct[1] < this.ε) {\n\t\t\thct[1] = 0.0;\n\t\t\thct[0] = null;\n\t\t}\n\t\treturn hct;\n\t},\n\ttoBase (hct) {\n\t\treturn fromHct(hct, viewingConditions);\n\t},\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hct\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import hct from \"../spaces/hct.js\";\nimport { viewingConditions } from \"../spaces/hct.js\";\nimport getColor from \"../getColor.js\";\n\n/** @import { Coords } from \"../types.js\" */\n\nconst rad2deg = 180 / Math.PI;\nconst deg2rad = Math.PI / 180;\nconst ucsCoeff = [1.0, 0.007, 0.0228];\n\n/**\n * Convert HCT chroma and hue (CAM16 JMh colorfulness and hue) using UCS logic for a and b.\n * @param {Coords} coords - HCT coordinates.\n * @return {number[]}\n */\nfunction convertUcsAb (coords) {\n\t// We want the distance between the actual color.\n\t// If chroma is negative, it will throw off our calculations.\n\t// Normally, converting back to the base and forward will correct it.\n\t// If we have a negative chroma after this, then we have a color that\n\t// cannot resolve to positive chroma.\n\tif (coords[1] < 0) {\n\t\tcoords = hct.fromBase(hct.toBase(coords));\n\t}\n\n\t// Only in extreme cases (usually outside the visible spectrum)\n\t// can the input value for log become negative.\n\t// Avoid domain error by forcing a zero result via \"max\" if necessary.\n\tconst M =\n\t\tMath.log(Math.max(1 + ucsCoeff[2] * coords[1] * viewingConditions.flRoot, 1.0)) /\n\t\tucsCoeff[2];\n\tconst hrad = coords[0] * deg2rad;\n\tconst a = M * Math.cos(hrad);\n\tconst b = M * Math.sin(hrad);\n\n\treturn [coords[2], a, b];\n}\n\n/**\n * Color distance using HCT.\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\tlet [t1, a1, b1] = convertUcsAb(hct.from(color));\n\tlet [t2, a2, b2] = convertUcsAb(hct.from(sample));\n\n\t// Use simple euclidean distance with a and b using UCS conversion\n\t// and LCh lightness (HCT tone).\n\treturn Math.sqrt((t1 - t2) ** 2 + (a1 - a2) ** 2 + (b1 - b2) ** 2);\n}\n","/**\n * @packageDocumentation\n * This module defines all the builtin deltaE methods.\n */\nimport deltaE76 from \"./deltaE76.js\";\nimport deltaECMC from \"./deltaECMC.js\";\nimport deltaE2000 from \"./deltaE2000.js\";\nimport deltaEJz from \"./deltaEJz.js\";\nimport deltaEITP from \"./deltaEITP.js\";\nimport deltaEOK from \"./deltaEOK.js\";\nimport deltaEOK2 from \"./deltaEOK2.js\";\nimport deltaEHCT from \"./deltaEHCT.js\";\n\nexport { deltaE76, deltaECMC, deltaE2000, deltaEJz, deltaEITP, deltaEOK, deltaEOK2, deltaEHCT };\n\nexport default {\n\tdeltaE76,\n\tdeltaECMC,\n\tdeltaE2000,\n\tdeltaEJz,\n\tdeltaEITP,\n\tdeltaEOK,\n\tdeltaEOK2,\n\tdeltaEHCT,\n};\n\n/** @typedef {keyof typeof import(\"./index.js\").default extends `deltaE${infer Method}` ? Method : string} Methods */\n","import * as util from \"./util.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport defaults from \"./defaults.js\";\nimport deltaE2000 from \"./deltaE/deltaE2000.js\";\nimport deltaEOK from \"./deltaE/deltaEOK.js\";\nimport inGamut from \"./inGamut.js\";\nimport to from \"./to.js\";\nimport get from \"./get.js\";\nimport oklab from \"./spaces/oklab.js\";\nimport set from \"./set.js\";\nimport clone from \"./clone.js\";\nimport getColor from \"./getColor.js\";\nimport deltaEMethods from \"./deltaE/index.js\";\nimport { WHITES } from \"./adapt.js\";\n\n/** @import { ColorTypes, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").ToGamutOptions} ToGamutOptions */\n\n/**\n * Calculate the epsilon to 2 degrees smaller than the specified JND.\n * @param {number} jnd The target \"just noticeable difference\".\n * @returns {number}\n */\nfunction calcEpsilon (jnd) {\n\t// Calculate the epsilon to 2 degrees smaller than the specified JND.\n\n\tconst order = !jnd ? 0 : Math.floor(Math.log10(Math.abs(jnd)));\n\t// Limit to an arbitrary value to ensure value is never too small and causes infinite loops.\n\treturn Math.max(parseFloat(`1e${order - 2}`), 1e-6);\n}\n\nconst GMAPPRESET = {\n\thct: {\n\t\tmethod: \"hct.c\",\n\t\tjnd: 2,\n\t\tdeltaEMethod: \"hct\",\n\t\tblackWhiteClamp: {},\n\t},\n\t\"hct-tonal\": {\n\t\tmethod: \"hct.c\",\n\t\tjnd: 0,\n\t\tdeltaEMethod: \"hct\",\n\t\tblackWhiteClamp: { channel: \"hct.t\", min: 0, max: 100 },\n\t},\n};\n\n/**\n * Force coordinates to be in gamut of a certain color space.\n * Mutates the color it is passed.\n * @overload\n * @param {ColorTypes} color\n * @param {ToGamutOptions} [options]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {string} [space]\n * @returns {PlainColorObject}\n */\n/**\n * @param {ColorTypes} color\n * @param {string & Partial<ToGamutOptions> | ToGamutOptions} [space]\n * @returns {PlainColorObject}\n */\nexport default function toGamut (\n\tcolor,\n\t{\n\t\tmethod = defaults.gamut_mapping,\n\t\tspace = undefined,\n\t\tdeltaEMethod = \"\",\n\t\tjnd = 2,\n\t\tblackWhiteClamp = undefined,\n\t} = {},\n) {\n\tcolor = getColor(color);\n\n\tif (util.isString(arguments[1])) {\n\t\tspace = arguments[1];\n\t}\n\telse if (!space) {\n\t\tspace = color.space;\n\t}\n\n\tspace = ColorSpace.get(space);\n\n\t// 3 spaces:\n\t// color.space: current color space\n\t// space: space whose gamut we are mapping to\n\t// mapSpace: space with the coord we're reducing\n\n\tif (inGamut(color, space, { epsilon: 0 })) {\n\t\treturn /** @type {PlainColorObject} */ (color);\n\t}\n\n\tlet spaceColor;\n\tif (method === \"css\") {\n\t\tspaceColor = toGamutCSS(color, { space });\n\t}\n\telse {\n\t\tif (method !== \"clip\" && !inGamut(color, space)) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(GMAPPRESET, method)) {\n\t\t\t\t({ method, jnd, deltaEMethod, blackWhiteClamp } = GMAPPRESET[method]);\n\t\t\t}\n\n\t\t\t// Get the correct delta E method\n\t\t\tlet de = deltaE2000;\n\t\t\tif (deltaEMethod !== \"\") {\n\t\t\t\tfor (let m in deltaEMethods) {\n\t\t\t\t\tif (\"deltae\" + deltaEMethod.toLowerCase() === m.toLowerCase()) {\n\t\t\t\t\t\tde = deltaEMethods[m];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (jnd === 0) {\n\t\t\t\tjnd = 1e-16;\n\t\t\t}\n\n\t\t\tlet clipped = toGamut(to(color, space), { method: \"clip\", space });\n\t\t\tif (de(color, clipped) > jnd) {\n\t\t\t\t// Clamp to SDR white and black if required\n\t\t\t\tif (blackWhiteClamp && Object.keys(blackWhiteClamp).length === 3) {\n\t\t\t\t\tlet channelMeta = ColorSpace.resolveCoord(blackWhiteClamp.channel);\n\t\t\t\t\tlet channel = get(to(color, channelMeta.space), channelMeta.id);\n\t\t\t\t\tif (util.isNone(channel)) {\n\t\t\t\t\t\tchannel = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (channel >= blackWhiteClamp.max) {\n\t\t\t\t\t\treturn to({ space: \"xyz-d65\", coords: WHITES[\"D65\"] }, color.space);\n\t\t\t\t\t}\n\t\t\t\t\telse if (channel <= blackWhiteClamp.min) {\n\t\t\t\t\t\treturn to({ space: \"xyz-d65\", coords: [0, 0, 0] }, color.space);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Reduce a coordinate of a certain color space until the color is in gamut\n\t\t\t\tlet coordMeta = ColorSpace.resolveCoord(method);\n\t\t\t\tlet mapSpace = coordMeta.space;\n\t\t\t\tlet coordId = coordMeta.id;\n\n\t\t\t\tlet mappedColor = to(color, mapSpace);\n\t\t\t\t// If we were already in the mapped color space, we need to resolve undefined channels\n\t\t\t\tmappedColor.coords.forEach((c, i) => {\n\t\t\t\t\tif (util.isNone(c)) {\n\t\t\t\t\t\tmappedColor.coords[i] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet bounds = coordMeta.range || coordMeta.refRange;\n\t\t\t\tlet min = bounds[0];\n\t\t\t\tlet ε = calcEpsilon(jnd);\n\t\t\t\tlet low = min;\n\t\t\t\tlet high = get(mappedColor, coordId);\n\n\t\t\t\twhile (high - low > ε) {\n\t\t\t\t\tlet clipped = clone(mappedColor);\n\t\t\t\t\tclipped = toGamut(clipped, { space, method: \"clip\" });\n\t\t\t\t\tlet deltaE = de(mappedColor, clipped);\n\n\t\t\t\t\tif (deltaE - jnd < ε) {\n\t\t\t\t\t\tlow = get(mappedColor, coordId);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\thigh = get(mappedColor, coordId);\n\t\t\t\t\t}\n\n\t\t\t\t\tset(mappedColor, coordId, (low + high) / 2);\n\t\t\t\t}\n\n\t\t\t\tspaceColor = to(mappedColor, space);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tspaceColor = clipped;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tspaceColor = to(color, space);\n\t\t}\n\n\t\tif (\n\t\t\tmethod === \"clip\" || // Dumb coord clipping\n\t\t\t// finish off smarter gamut mapping with clip to get rid of ε, see #17\n\t\t\t!inGamut(spaceColor, space, { epsilon: 0 })\n\t\t) {\n\t\t\tlet bounds = Object.values(space.coords).map(c => c.range || []);\n\n\t\t\tspaceColor.coords = /** @type {[number, number, number]} */ (\n\t\t\t\tspaceColor.coords.map((c, i) => {\n\t\t\t\t\tlet [min, max] = bounds[i];\n\n\t\t\t\t\tif (min !== undefined) {\n\t\t\t\t\t\tc = Math.max(min, c);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (max !== undefined) {\n\t\t\t\t\t\tc = Math.min(c, max);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn c;\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\tif (space !== color.space) {\n\t\tspaceColor = to(spaceColor, color.space);\n\t}\n\n\tcolor.coords = spaceColor.coords;\n\treturn /** @type {PlainColorObject} */ (color);\n}\n\n/** @type {\"color\"} */\ntoGamut.returns = \"color\";\n\n/**\n * The reference colors to be used if lightness is out of the range 0-1 in the\n * `Oklch` space. These are created in the `Oklab` space, as it is used by the\n * DeltaEOK calculation, so it is guaranteed to be imported.\n * @satisfies {Record<string, ColorTypes>}\n */\nconst COLORS = {\n\tWHITE: { space: oklab, coords: [1, 0, 0], alpha: 1 },\n\tBLACK: { space: oklab, coords: [0, 0, 0], alpha: 1 },\n};\n\n/**\n * Given a color `origin`, returns a new color that is in gamut using\n * the CSS Gamut Mapping Algorithm. If `space` is specified, it will be in gamut\n * in `space`, and returned in `space`. Otherwise, it will be in gamut and\n * returned in the color space of `origin`.\n * @param {ColorTypes} origin\n * @param {{ space?: string | ColorSpace | undefined }} param1\n * @returns {PlainColorObject}\n */\nexport function toGamutCSS (origin, { space } = {}) {\n\tconst JND = 0.02;\n\tconst ε = 0.0001;\n\n\torigin = getColor(origin);\n\n\tif (!space) {\n\t\tspace = origin.space;\n\t}\n\n\tspace = ColorSpace.get(space);\n\tconst oklchSpace = ColorSpace.get(\"oklch\");\n\n\tif (space.isUnbounded) {\n\t\treturn to(origin, space);\n\t}\n\n\tconst origin_OKLCH = to(origin, oklchSpace);\n\tlet L = origin_OKLCH.coords[0];\n\n\t// return media white or black, if lightness is out of range\n\tif (L >= 1) {\n\t\tconst white = to(COLORS.WHITE, space);\n\t\twhite.alpha = origin.alpha;\n\t\treturn to(white, space);\n\t}\n\tif (L <= 0) {\n\t\tconst black = to(COLORS.BLACK, space);\n\t\tblack.alpha = origin.alpha;\n\t\treturn to(black, space);\n\t}\n\n\tif (inGamut(origin_OKLCH, space, { epsilon: 0 })) {\n\t\treturn to(origin_OKLCH, space);\n\t}\n\n\tfunction clip (_color) {\n\t\tconst destColor = to(_color, space);\n\t\tconst spaceCoords = Object.values(/** @type {ColorSpace} */ (space).coords);\n\t\tdestColor.coords = /** @type {[number, number, number]} */ (\n\t\t\tdestColor.coords.map((coord, index) => {\n\t\t\t\tif (\"range\" in spaceCoords[index]) {\n\t\t\t\t\tconst [min, max] = spaceCoords[index].range;\n\t\t\t\t\treturn util.clamp(min, coord, max);\n\t\t\t\t}\n\t\t\t\treturn coord;\n\t\t\t})\n\t\t);\n\t\treturn destColor;\n\t}\n\tlet min = 0;\n\tlet max = origin_OKLCH.coords[1];\n\tlet min_inGamut = true;\n\tlet current = clone(origin_OKLCH);\n\tlet clipped = clip(current);\n\n\tlet E = deltaEOK(clipped, current);\n\tif (E < JND) {\n\t\treturn clipped;\n\t}\n\n\twhile (max - min > ε) {\n\t\tconst chroma = (min + max) / 2;\n\t\tcurrent.coords[1] = chroma;\n\t\tif (min_inGamut && inGamut(current, space, { epsilon: 0 })) {\n\t\t\tmin = chroma;\n\t\t}\n\t\telse {\n\t\t\tclipped = clip(current);\n\t\t\tE = deltaEOK(clipped, current);\n\t\t\tif (E < JND) {\n\t\t\t\tif (JND - E < ε) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmin_inGamut = false;\n\t\t\t\t\tmin = chroma;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmax = chroma;\n\t\t\t}\n\t\t}\n\t}\n\treturn clipped;\n}\n","import getColor from \"./getColor.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport toGamut from \"./toGamut.js\";\n\n/** @import { ColorTypes, PlainColorObject, ToGamutOptions } from \"./types.js\" */\n\n/**\n * Convert to color space and return a new color\n * @param {ColorTypes} color\n * @param {string | ColorSpace} space\n * @param {{ inGamut?: boolean | ToGamutOptions | undefined }} options\n * @returns {PlainColorObject}\n */\nexport default function to (color, space, { inGamut } = {}) {\n\tcolor = getColor(color);\n\tspace = ColorSpace.get(space);\n\n\tlet coords = space.from(color);\n\tlet ret = { space, coords, alpha: color.alpha };\n\n\tif (inGamut) {\n\t\tret = toGamut(ret, inGamut === true ? undefined : inGamut);\n\t}\n\n\treturn ret;\n}\n\n/** @type {\"color\"} */\nto.returns = \"color\";\n","// @ts-nocheck\n\nimport * as util from \"./util.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport defaults from \"./defaults.js\";\nimport getColor from \"./getColor.js\";\nimport to from \"./to.js\";\nimport checkInGamut from \"./inGamut.js\";\nimport toGamut from \"./toGamut.js\";\nimport clone from \"./clone.js\";\n\n/** @import { ColorTypes, ParseOptions, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").SerializeOptions} SerializeOptions */\n\n/**\n * Generic toString() method, outputs a color(spaceId ...coords) function, a functional syntax, or custom formats defined by the color space\n * @param {ColorTypes} color\n * @param {SerializeOptions & Record<string, any>} options\n * @returns {string}\n */\nexport default function serialize (color, options = {}) {\n\tlet {\n\t\tprecision = defaults.precision,\n\t\tformat,\n\t\tinGamut = true,\n\t\tcoords: coordFormat,\n\t\talpha: alphaFormat,\n\t\tcommas,\n\t} = options;\n\tlet ret;\n\n\tlet colorWithMeta = /** @type {PlainColorObject & ParseOptions} */ (getColor(color));\n\n\tlet formatId = format;\n\tlet parseMeta = colorWithMeta.parseMeta;\n\n\tif (parseMeta && !format) {\n\t\tif (parseMeta.format.canSerialize()) {\n\t\t\tformat = parseMeta.format;\n\t\t\tformatId = parseMeta.formatId;\n\t\t}\n\n\t\tcoordFormat ??= parseMeta.types;\n\t\talphaFormat ??= parseMeta.alphaType;\n\t\tcommas ??= parseMeta.commas;\n\t}\n\n\tif (formatId) {\n\t\t// A format is explicitly specified\n\t\tformat = colorWithMeta.space.getFormat(format) ?? ColorSpace.findFormat(formatId);\n\t}\n\n\tif (!format) {\n\t\t// No format specified, or format not found\n\t\tformat = colorWithMeta.space.getFormat(\"default\") ?? ColorSpace.DEFAULT_FORMAT;\n\t\tformatId = format.name;\n\t}\n\n\tif (format && format.space && format.space !== colorWithMeta.space) {\n\t\t// Format specified belongs to a different color space,\n\t\t// need to convert to it first\n\t\tcolorWithMeta = to(colorWithMeta, format.space);\n\t}\n\n\t// The assignment to coords and inGamut needs to stay in the order they are now\n\t// The order of the assignment was changed as a workaround for a bug in Next.js\n\t// See this issue for details: https://github.com/color-js/color.js/issues/260\n\n\tlet coords = colorWithMeta.coords.slice(); // clone so we can manipulate it\n\n\tinGamut ||= format.toGamut;\n\n\tif (inGamut && !checkInGamut(colorWithMeta)) {\n\t\t// FIXME what happens if the color contains none values?\n\t\tcoords = toGamut(clone(colorWithMeta), inGamut === true ? undefined : inGamut).coords;\n\t}\n\n\tif (format.type === \"custom\") {\n\t\tif (format.serialize) {\n\t\t\tret = format.serialize(coords, colorWithMeta.alpha, options);\n\t\t}\n\t\telse {\n\t\t\tthrow new TypeError(\n\t\t\t\t`format ${formatId} can only be used to parse colors, not for serialization`,\n\t\t\t);\n\t\t}\n\t}\n\telse {\n\t\t// Functional syntax\n\t\tlet name = format.name || \"color\";\n\n\t\tlet args = format.serializeCoords(coords, precision, coordFormat);\n\n\t\tif (name === \"color\") {\n\t\t\t// If output is a color() function, add colorspace id as first argument\n\t\t\tlet cssId =\n\t\t\t\tformat.id || format.ids?.[0] || colorWithMeta.space.cssId || colorWithMeta.space.id;\n\t\t\targs.unshift(cssId);\n\t\t}\n\n\t\t// Serialize alpha?\n\t\t/** @type {string | number} */\n\t\tlet alpha = colorWithMeta.alpha;\n\n\t\tif (alphaFormat !== undefined && !(typeof alphaFormat === \"object\")) {\n\t\t\talphaFormat =\n\t\t\t\ttypeof alphaFormat === \"string\" ? { type: alphaFormat } : { include: alphaFormat };\n\t\t}\n\n\t\tlet alphaType = alphaFormat?.type ?? \"<number>\";\n\t\tlet serializeAlpha =\n\t\t\talphaFormat?.include === true ||\n\t\t\tformat.alpha === true ||\n\t\t\t(alphaFormat?.include !== false && format.alpha !== false && alpha < 1);\n\t\tlet strAlpha = \"\";\n\n\t\tcommas ??= format.commas;\n\n\t\tif (serializeAlpha) {\n\t\t\tif (precision !== null) {\n\t\t\t\tlet unit;\n\n\t\t\t\tif (alphaType === \"<percentage>\") {\n\t\t\t\t\tunit = \"%\";\n\t\t\t\t\talpha *= 100;\n\t\t\t\t}\n\n\t\t\t\talpha = util.serializeNumber(alpha, { precision, unit });\n\t\t\t}\n\n\t\t\tstrAlpha = `${commas ? \",\" : \" /\"} ${alpha}`;\n\t\t}\n\n\t\tret = `${name}(${args.join(commas ? \", \" : \" \")}${strAlpha})`;\n\t}\n\n\treturn ret;\n}\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// convert an array of linear-light rec2020 values to CIE XYZ\n// using D65 (no chromatic adaptation)\n// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n// 0 is actually calculated as 4.994106574466076e-17\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.6369580483012914, 0.14461690358620832, 0.1688809751641721 ],\n\t[ 0.2627002120112671, 0.6779980715188708, 0.05930171646986196 ],\n\t[ 0.000000000000000, 0.028072693049087428, 1.060985057710791 ],\n];\n\n// from ITU-R BT.2124-0 Annex 2 p.3\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 1.716651187971268, -0.355670783776392, -0.253366281373660 ],\n\t[ -0.666684351832489, 1.616481236634939, 0.0157685458139111 ],\n\t[ 0.017639857445311, -0.042770613257809, 0.942103121235474 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"rec2020-linear\",\n\tcssId: \"--rec2020-linear\",\n\tname: \"Linear REC.2020\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC2020Linear from \"./rec2020-linear.js\";\n// import sRGB from \"./srgb.js\";\n\nexport default new RGBColorSpace({\n\tid: \"rec2020\",\n\tname: \"REC.2020\",\n\tbase: REC2020Linear,\n\t// Reference electro-optical transfer function from Rec. ITU-R BT.1886 Annex 1\n\t// with b (black lift) = 0 and a (user gain) = 1\n\t// defined over the extended range, not clamped\n\ttoBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\t\t\treturn sign * Math.pow(abs, 2.4);\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\t\t\treturn sign * Math.pow(abs, 1 / 2.4);\n\t\t});\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[0.4865709486482162, 0.26566769316909306, 0.1982172852343625],\n\t[0.2289745640697488, 0.6917385218365064, 0.079286914093745],\n\t[0.0000000000000000, 0.04511338185890264, 1.043944368900976],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 2.493496911941425, -0.9313836179191239, -0.40271078445071684],\n\t[-0.8294889695615747, 1.7626640603183463, 0.023624685841943577],\n\t[ 0.03584583024378447, -0.07617238926804182, 0.9568845240076872],\n];\n\nexport default new RGBColorSpace({\n\tid: \"p3-linear\",\n\tcssId: \"display-p3-linear\",\n\tname: \"Linear P3\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// This is the linear-light version of sRGB\n// as used for example in SVG filters\n// or in Canvas\n\n// This matrix was calculated directly from the RGB and white chromaticities\n// when rounded to 8 decimal places, it agrees completely with the official matrix\n// see https://github.com/w3c/csswg-drafts/issues/5922\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.41239079926595934, 0.357584339383878, 0.1804807884018343 ],\n\t[ 0.21263900587151027, 0.715168678767756, 0.07219231536073371 ],\n\t[ 0.01933081871559182, 0.11919477979462598, 0.9505321522496607 ],\n];\n\n// This matrix is the inverse of the above;\n// again it agrees with the official definition when rounded to 8 decimal places\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const fromXYZ_M = [\n\t[ 3.2409699419045226, -1.537383177570094, -0.4986107602930034 ],\n\t[ -0.9692436362808796, 1.8759675015077202, 0.04155505740717559 ],\n\t[ 0.05563007969699366, -0.20397695888897652, 1.0569715142428786 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"srgb-linear\",\n\tname: \"Linear sRGB\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","// To produce: Visit https://www.w3.org/TR/css-color-4/#named-colors\n// and run in the console:\n// copy($$(\"tr\", $(\".named-color-table tbody\")).map(tr => `\"${tr.cells[2].textContent.trim()}\": [${tr.cells[4].textContent.trim().split(/\\s+/).map(c => c === \"0\"? \"0\" : c === \"255\"? \"1\" : c + \" / 255\").join(\", \")}]`).join(\",\\n\"))\n\n/** List of CSS color keywords\n * Note that this does not include currentColor, transparent,\n * or system colors\n *\n * @type {Record<string, [number, number, number]>}\n */\nexport default {\n\taliceblue: [240 / 255, 248 / 255, 1],\n\tantiquewhite: [250 / 255, 235 / 255, 215 / 255],\n\taqua: [0, 1, 1],\n\taquamarine: [127 / 255, 1, 212 / 255],\n\tazure: [240 / 255, 1, 1],\n\tbeige: [245 / 255, 245 / 255, 220 / 255],\n\tbisque: [1, 228 / 255, 196 / 255],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [1, 235 / 255, 205 / 255],\n\tblue: [0, 0, 1],\n\tblueviolet: [138 / 255, 43 / 255, 226 / 255],\n\tbrown: [165 / 255, 42 / 255, 42 / 255],\n\tburlywood: [222 / 255, 184 / 255, 135 / 255],\n\tcadetblue: [95 / 255, 158 / 255, 160 / 255],\n\tchartreuse: [127 / 255, 1, 0],\n\tchocolate: [210 / 255, 105 / 255, 30 / 255],\n\tcoral: [1, 127 / 255, 80 / 255],\n\tcornflowerblue: [100 / 255, 149 / 255, 237 / 255],\n\tcornsilk: [1, 248 / 255, 220 / 255],\n\tcrimson: [220 / 255, 20 / 255, 60 / 255],\n\tcyan: [0, 1, 1],\n\tdarkblue: [0, 0, 139 / 255],\n\tdarkcyan: [0, 139 / 255, 139 / 255],\n\tdarkgoldenrod: [184 / 255, 134 / 255, 11 / 255],\n\tdarkgray: [169 / 255, 169 / 255, 169 / 255],\n\tdarkgreen: [0, 100 / 255, 0],\n\tdarkgrey: [169 / 255, 169 / 255, 169 / 255],\n\tdarkkhaki: [189 / 255, 183 / 255, 107 / 255],\n\tdarkmagenta: [139 / 255, 0, 139 / 255],\n\tdarkolivegreen: [85 / 255, 107 / 255, 47 / 255],\n\tdarkorange: [1, 140 / 255, 0],\n\tdarkorchid: [153 / 255, 50 / 255, 204 / 255],\n\tdarkred: [139 / 255, 0, 0],\n\tdarksalmon: [233 / 255, 150 / 255, 122 / 255],\n\tdarkseagreen: [143 / 255, 188 / 255, 143 / 255],\n\tdarkslateblue: [72 / 255, 61 / 255, 139 / 255],\n\tdarkslategray: [47 / 255, 79 / 255, 79 / 255],\n\tdarkslategrey: [47 / 255, 79 / 255, 79 / 255],\n\tdarkturquoise: [0, 206 / 255, 209 / 255],\n\tdarkviolet: [148 / 255, 0, 211 / 255],\n\tdeeppink: [1, 20 / 255, 147 / 255],\n\tdeepskyblue: [0, 191 / 255, 1],\n\tdimgray: [105 / 255, 105 / 255, 105 / 255],\n\tdimgrey: [105 / 255, 105 / 255, 105 / 255],\n\tdodgerblue: [30 / 255, 144 / 255, 1],\n\tfirebrick: [178 / 255, 34 / 255, 34 / 255],\n\tfloralwhite: [1, 250 / 255, 240 / 255],\n\tforestgreen: [34 / 255, 139 / 255, 34 / 255],\n\tfuchsia: [1, 0, 1],\n\tgainsboro: [220 / 255, 220 / 255, 220 / 255],\n\tghostwhite: [248 / 255, 248 / 255, 1],\n\tgold: [1, 215 / 255, 0],\n\tgoldenrod: [218 / 255, 165 / 255, 32 / 255],\n\tgray: [128 / 255, 128 / 255, 128 / 255],\n\tgreen: [0, 128 / 255, 0],\n\tgreenyellow: [173 / 255, 1, 47 / 255],\n\tgrey: [128 / 255, 128 / 255, 128 / 255],\n\thoneydew: [240 / 255, 1, 240 / 255],\n\thotpink: [1, 105 / 255, 180 / 255],\n\tindianred: [205 / 255, 92 / 255, 92 / 255],\n\tindigo: [75 / 255, 0, 130 / 255],\n\tivory: [1, 1, 240 / 255],\n\tkhaki: [240 / 255, 230 / 255, 140 / 255],\n\tlavender: [230 / 255, 230 / 255, 250 / 255],\n\tlavenderblush: [1, 240 / 255, 245 / 255],\n\tlawngreen: [124 / 255, 252 / 255, 0],\n\tlemonchiffon: [1, 250 / 255, 205 / 255],\n\tlightblue: [173 / 255, 216 / 255, 230 / 255],\n\tlightcoral: [240 / 255, 128 / 255, 128 / 255],\n\tlightcyan: [224 / 255, 1, 1],\n\tlightgoldenrodyellow: [250 / 255, 250 / 255, 210 / 255],\n\tlightgray: [211 / 255, 211 / 255, 211 / 255],\n\tlightgreen: [144 / 255, 238 / 255, 144 / 255],\n\tlightgrey: [211 / 255, 211 / 255, 211 / 255],\n\tlightpink: [1, 182 / 255, 193 / 255],\n\tlightsalmon: [1, 160 / 255, 122 / 255],\n\tlightseagreen: [32 / 255, 178 / 255, 170 / 255],\n\tlightskyblue: [135 / 255, 206 / 255, 250 / 255],\n\tlightslategray: [119 / 255, 136 / 255, 153 / 255],\n\tlightslategrey: [119 / 255, 136 / 255, 153 / 255],\n\tlightsteelblue: [176 / 255, 196 / 255, 222 / 255],\n\tlightyellow: [1, 1, 224 / 255],\n\tlime: [0, 1, 0],\n\tlimegreen: [50 / 255, 205 / 255, 50 / 255],\n\tlinen: [250 / 255, 240 / 255, 230 / 255],\n\tmagenta: [1, 0, 1],\n\tmaroon: [128 / 255, 0, 0],\n\tmediumaquamarine: [102 / 255, 205 / 255, 170 / 255],\n\tmediumblue: [0, 0, 205 / 255],\n\tmediumorchid: [186 / 255, 85 / 255, 211 / 255],\n\tmediumpurple: [147 / 255, 112 / 255, 219 / 255],\n\tmediumseagreen: [60 / 255, 179 / 255, 113 / 255],\n\tmediumslateblue: [123 / 255, 104 / 255, 238 / 255],\n\tmediumspringgreen: [0, 250 / 255, 154 / 255],\n\tmediumturquoise: [72 / 255, 209 / 255, 204 / 255],\n\tmediumvioletred: [199 / 255, 21 / 255, 133 / 255],\n\tmidnightblue: [25 / 255, 25 / 255, 112 / 255],\n\tmintcream: [245 / 255, 1, 250 / 255],\n\tmistyrose: [1, 228 / 255, 225 / 255],\n\tmoccasin: [1, 228 / 255, 181 / 255],\n\tnavajowhite: [1, 222 / 255, 173 / 255],\n\tnavy: [0, 0, 128 / 255],\n\toldlace: [253 / 255, 245 / 255, 230 / 255],\n\tolive: [128 / 255, 128 / 255, 0],\n\tolivedrab: [107 / 255, 142 / 255, 35 / 255],\n\torange: [1, 165 / 255, 0],\n\torangered: [1, 69 / 255, 0],\n\torchid: [218 / 255, 112 / 255, 214 / 255],\n\tpalegoldenrod: [238 / 255, 232 / 255, 170 / 255],\n\tpalegreen: [152 / 255, 251 / 255, 152 / 255],\n\tpaleturquoise: [175 / 255, 238 / 255, 238 / 255],\n\tpalevioletred: [219 / 255, 112 / 255, 147 / 255],\n\tpapayawhip: [1, 239 / 255, 213 / 255],\n\tpeachpuff: [1, 218 / 255, 185 / 255],\n\tperu: [205 / 255, 133 / 255, 63 / 255],\n\tpink: [1, 192 / 255, 203 / 255],\n\tplum: [221 / 255, 160 / 255, 221 / 255],\n\tpowderblue: [176 / 255, 224 / 255, 230 / 255],\n\tpurple: [128 / 255, 0, 128 / 255],\n\trebeccapurple: [102 / 255, 51 / 255, 153 / 255],\n\tred: [1, 0, 0],\n\trosybrown: [188 / 255, 143 / 255, 143 / 255],\n\troyalblue: [65 / 255, 105 / 255, 225 / 255],\n\tsaddlebrown: [139 / 255, 69 / 255, 19 / 255],\n\tsalmon: [250 / 255, 128 / 255, 114 / 255],\n\tsandybrown: [244 / 255, 164 / 255, 96 / 255],\n\tseagreen: [46 / 255, 139 / 255, 87 / 255],\n\tseashell: [1, 245 / 255, 238 / 255],\n\tsienna: [160 / 255, 82 / 255, 45 / 255],\n\tsilver: [192 / 255, 192 / 255, 192 / 255],\n\tskyblue: [135 / 255, 206 / 255, 235 / 255],\n\tslateblue: [106 / 255, 90 / 255, 205 / 255],\n\tslategray: [112 / 255, 128 / 255, 144 / 255],\n\tslategrey: [112 / 255, 128 / 255, 144 / 255],\n\tsnow: [1, 250 / 255, 250 / 255],\n\tspringgreen: [0, 1, 127 / 255],\n\tsteelblue: [70 / 255, 130 / 255, 180 / 255],\n\ttan: [210 / 255, 180 / 255, 140 / 255],\n\tteal: [0, 128 / 255, 128 / 255],\n\tthistle: [216 / 255, 191 / 255, 216 / 255],\n\ttomato: [1, 99 / 255, 71 / 255],\n\tturquoise: [64 / 255, 224 / 255, 208 / 255],\n\tviolet: [238 / 255, 130 / 255, 238 / 255],\n\twheat: [245 / 255, 222 / 255, 179 / 255],\n\twhite: [1, 1, 1],\n\twhitesmoke: [245 / 255, 245 / 255, 245 / 255],\n\tyellow: [1, 1, 0],\n\tyellowgreen: [154 / 255, 205 / 255, 50 / 255],\n};\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport sRGBLinear from \"./srgb-linear.js\";\nimport KEYWORDS from \"../keywords.js\";\n\n/** @import { Coords } from \"../types.js\" */\n\nlet coordGrammar = Array(3).fill(\"<percentage> | <number>[0, 255]\");\nlet coordGrammarNumber = Array(3).fill(\"<number>[0, 255]\");\n\nexport default new RGBColorSpace({\n\tid: \"srgb\",\n\tname: \"sRGB\",\n\tbase: sRGBLinear,\n\tfromBase: rgb => {\n\t\t// convert an array of linear-light sRGB values in the range 0.0-1.0\n\t\t// to gamma corrected form\n\t\t// https://en.wikipedia.org/wiki/SRGB\n\t\treturn rgb.map(val => {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs > 0.0031308) {\n\t\t\t\treturn sign * (1.055 * abs ** (1 / 2.4) - 0.055);\n\t\t\t}\n\n\t\t\treturn 12.92 * val;\n\t\t});\n\t},\n\ttoBase: rgb => {\n\t\t// convert an array of sRGB values in the range 0.0 - 1.0\n\t\t// to linear light (un-companded) form.\n\t\t// https://en.wikipedia.org/wiki/SRGB\n\t\treturn rgb.map(val => {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs <= 0.04045) {\n\t\t\t\treturn val / 12.92;\n\t\t\t}\n\n\t\t\treturn sign * ((abs + 0.055) / 1.055) ** 2.4;\n\t\t});\n\t},\n\tformats: {\n\t\trgb: {\n\t\t\tcoords: coordGrammar,\n\t\t},\n\t\trgb_number: {\n\t\t\tname: \"rgb\",\n\t\t\tcommas: true,\n\t\t\tcoords: coordGrammarNumber,\n\t\t\talpha: false,\n\t\t},\n\t\tcolor: {\n\t\t\t/* use defaults */\n\t\t},\n\t\trgba: {\n\t\t\tcoords: coordGrammar,\n\t\t\tcommas: true,\n\t\t\talpha: true,\n\t\t},\n\t\trgba_number: {\n\t\t\tname: \"rgba\",\n\t\t\tcommas: true,\n\t\t\tcoords: coordGrammarNumber,\n\t\t},\n\t\thex: {\n\t\t\ttype: \"custom\",\n\t\t\ttoGamut: true,\n\t\t\ttest: str => /^#(([a-f0-9]{2}){3,4}|[a-f0-9]{3,4})$/i.test(str),\n\t\t\tparse (str) {\n\t\t\t\tif (str.length <= 5) {\n\t\t\t\t\t// #rgb or #rgba, duplicate digits\n\t\t\t\t\tstr = str.replace(/[a-f0-9]/gi, \"$&$&\");\n\t\t\t\t}\n\n\t\t\t\t/** @type {number[]} */\n\t\t\t\tlet rgba = [];\n\t\t\t\t// @ts-expect-error Type 'void' is not assignable to type 'string'\n\t\t\t\tstr.replace(/[a-f0-9]{2}/gi, component => {\n\t\t\t\t\trgba.push(parseInt(component, 16) / 255);\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tspaceId: \"srgb\",\n\t\t\t\t\tcoords: /** @type {Coords} */ (rgba.slice(0, 3)),\n\t\t\t\t\talpha: /** @type {number} */ (rgba.slice(3)[0]),\n\t\t\t\t};\n\t\t\t},\n\t\t\tserialize: (\n\t\t\t\tcoords,\n\t\t\t\talpha,\n\t\t\t\t{\n\t\t\t\t\tcollapse = true, // collapse to 3-4 digit hex when possible?\n\t\t\t\t\talpha: alphaFormat,\n\t\t\t\t} = {},\n\t\t\t) => {\n\t\t\t\tif ((alphaFormat !== false && alpha < 1) || alphaFormat === true) {\n\t\t\t\t\tcoords.push(alpha);\n\t\t\t\t}\n\n\t\t\t\tcoords = /** @type {[number, number, number]} */ (\n\t\t\t\t\tcoords.map(c => Math.round(c * 255))\n\t\t\t\t);\n\n\t\t\t\tlet collapsible = collapse && coords.every(c => c % 17 === 0);\n\n\t\t\t\tlet hex = coords\n\t\t\t\t\t.map(c => {\n\t\t\t\t\t\tif (collapsible) {\n\t\t\t\t\t\t\treturn (c / 17).toString(16);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn c.toString(16).padStart(2, \"0\");\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\");\n\n\t\t\t\treturn \"#\" + hex;\n\t\t\t},\n\t\t},\n\t\tkeyword: {\n\t\t\ttype: \"custom\",\n\t\t\ttest: str => /^[a-z]+$/i.test(str),\n\t\t\tparse (str) {\n\t\t\t\tstr = str.toLowerCase();\n\t\t\t\tlet ret = { spaceId: \"srgb\", coords: null, alpha: 1 };\n\n\t\t\t\tif (str === \"transparent\") {\n\t\t\t\t\tret.coords = KEYWORDS.black;\n\t\t\t\t\tret.alpha = 0;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tret.coords = KEYWORDS[str];\n\t\t\t\t}\n\n\t\t\t\tif (ret.coords) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport P3Linear from \"./p3-linear.js\";\nimport sRGB from \"./srgb.js\";\n\nexport default new RGBColorSpace({\n\tid: \"p3\",\n\tcssId: \"display-p3\",\n\tname: \"P3\",\n\tbase: P3Linear,\n\t// Gamma encoding/decoding is the same as sRGB\n\tfromBase: sRGB.fromBase,\n\ttoBase: sRGB.toBase,\n});\n","import { isNone, skipNone } from \"./util.js\";\nimport defaults from \"./defaults.js\";\nimport to from \"./to.js\";\nimport serialize from \"./serialize.js\";\nimport clone from \"./clone.js\";\nimport getColor from \"./getColor.js\";\nimport REC2020 from \"./spaces/rec2020.js\";\nimport P3 from \"./spaces/p3.js\";\nimport Lab from \"./spaces/lab.js\";\nimport sRGB from \"./spaces/srgb.js\";\n\n/** @import ColorSpace from \"./ColorSpace.js\" */\n/** @import { ColorTypes, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Display} Display */\n\n// Default space for CSS output. Code in Color.js makes this wider if there's a DOM available\ndefaults.display_space = sRGB;\n\nlet supportsNone;\n\nif (typeof CSS !== \"undefined\" && CSS.supports) {\n\t// Find widest supported color space for CSS\n\tfor (let space of [Lab, REC2020, P3]) {\n\t\tlet coords = space.getMinCoords();\n\t\tlet color = { space, coords, alpha: 1 };\n\t\tlet str = serialize(color);\n\n\t\tif (CSS.supports(\"color\", str)) {\n\t\t\tdefaults.display_space = space;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Returns a serialization of the color that can actually be displayed in the browser.\n * If the default serialization can be displayed, it is returned.\n * Otherwise, the color is converted to Lab, REC2020, or P3, whichever is the widest supported.\n * In Node.js, this is basically equivalent to `serialize()` but returns a `String` object instead.\n * @param {ColorTypes} color\n * @param {{ space?: string | ColorSpace | undefined } & Record<string, any>} param1\n * Options to be passed to `serialize()`\n * @returns {Display} String object containing the serialized color\n * with a color property containing the converted color (or the original, if no conversion was necessary)\n */\nexport default function display (color, { space = defaults.display_space, ...options } = {}) {\n\tcolor = getColor(color);\n\n\tlet ret = /** @type {Display} */ (serialize(color, options));\n\n\tif (\n\t\ttypeof CSS === \"undefined\" ||\n\t\tCSS.supports(\"color\", /** @type {string} */ (ret)) ||\n\t\t!defaults.display_space\n\t) {\n\t\tret = /** @type {Display} */ (new String(ret));\n\t\tret.color = /** @type {PlainColorObject} */ (color);\n\t}\n\telse {\n\t\t// If we're here, what we were about to output is not supported\n\t\tlet fallbackColor = /** @type {PlainColorObject} */ (color);\n\n\t\t// First, check if the culprit is none values\n\t\tlet hasNone = color.coords.some(isNone) || isNone(color.alpha);\n\n\t\tif (hasNone) {\n\t\t\t// Does the browser support none values?\n\t\t\tif (!(supportsNone ??= CSS.supports(\"color\", \"hsl(none 50% 50%)\"))) {\n\t\t\t\t// Nope, try again without none\n\t\t\t\tfallbackColor = clone(/** @type {PlainColorObject} */ (color));\n\t\t\t\tfallbackColor.coords = /** @type {[number, number, number]} */ (\n\t\t\t\t\tfallbackColor.coords.map(skipNone)\n\t\t\t\t);\n\t\t\t\tfallbackColor.alpha = skipNone(fallbackColor.alpha);\n\n\t\t\t\t// @ts-expect-error This is set to the correct type later\n\t\t\t\tret = serialize(fallbackColor, options);\n\n\t\t\t\tif (CSS.supports(\"color\", /** @type {string} */ (ret))) {\n\t\t\t\t\t// We're done, now it's supported\n\t\t\t\t\tret = /** @type {Display} */ (new String(ret));\n\t\t\t\t\tret.color = fallbackColor;\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're here, the color function is not supported\n\t\t// Fall back to fallback space\n\t\tfallbackColor = to(fallbackColor, space);\n\t\tret = /** @type {Display} */ (new String(serialize(fallbackColor, options)));\n\t\tret.color = fallbackColor;\n\t}\n\n\treturn ret;\n}\n","import getColor from \"./getColor.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport to from \"./to.js\";\nimport { adjust } from \"./angles.js\";\nimport { isNone } from \"./util.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").DeltasReturn} DeltasReturn */\n\n/**\n * Get color differences per-component, on any color space\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {object} options\n * @param {string | ColorSpace} [options.space=c1.space] - The color space to use for the delta calculation. Defaults to the color space of the first color.\n * @param {Parameters<typeof adjust>[0]} [options.hue=\"shorter\"] - How to handle hue differences. Same as hue interpolation option.\n * @returns {DeltasReturn}\n */\nexport default function deltas (c1, c2, { space, hue = \"shorter\" } = {}) {\n\tc1 = getColor(c1);\n\tspace ||= c1.space;\n\tspace = ColorSpace.get(space);\n\tlet spaceCoords = Object.values(space.coords);\n\n\t[c1, c2] = [c1, c2].map(c => to(c, space));\n\tlet [coords1, coords2] = [c1, c2].map(c => c.coords);\n\n\tlet coords = /** @type {[number, number, number]} */ (\n\t\tcoords1.map((coord1, i) => {\n\t\t\tlet coordMeta = spaceCoords[i];\n\t\t\tlet coord2 = coords2[i];\n\n\t\t\tif (coordMeta.type === \"angle\") {\n\t\t\t\t[coord1, coord2] = adjust(hue, [coord1, coord2]);\n\t\t\t}\n\n\t\t\treturn subtractCoords(coord1, coord2);\n\t\t})\n\t);\n\n\tlet alpha = subtractCoords(c1.alpha, c2.alpha);\n\n\treturn { space: /** @type {ColorSpace} */ (space), coords, alpha };\n}\n\nfunction subtractCoords (c1, c2) {\n\tif (isNone(c1) || isNone(c2)) {\n\t\treturn c1 === c2 ? null : 0;\n\t}\n\n\treturn c1 - c2;\n}\n","import getColor from \"./getColor.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n/**\n * @param {ColorTypes} color1\n * @param {ColorTypes} color2\n * @returns {boolean}\n */\nexport default function equals (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\treturn (\n\t\tcolor1.space === color2.space &&\n\t\tcolor1.alpha === color2.alpha &&\n\t\tcolor1.coords.every((c, i) => c === color2.coords[i])\n\t);\n}\n","/**\n * Relative luminance\n */\nimport get from \"./get.js\";\nimport set from \"./set.js\";\nimport xyz_d65 from \"./spaces/xyz-d65.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n/**\n *\n * @param {ColorTypes} color\n * @returns {number}\n */\nexport function getLuminance (color) {\n\t// Assume getColor() is called on color in get()\n\treturn get(color, [xyz_d65, \"y\"]);\n}\n\n/**\n * @param {ColorTypes} color\n * @param {number | ((coord: number) => number)} value\n */\nexport function setLuminance (color, value) {\n\t// Assume getColor() is called on color in set()\n\tset(color, [xyz_d65, \"y\"], value);\n}\n\n/**\n * @param {typeof import(\"./color.js\").default} Color\n */\nexport function register (Color) {\n\tObject.defineProperty(Color.prototype, \"luminance\", {\n\t\tget () {\n\t\t\treturn getLuminance(this);\n\t\t},\n\t\tset (value) {\n\t\t\tsetLuminance(this, value);\n\t\t},\n\t});\n}\n","// WCAG 2.0 contrast https://www.w3.org/TR/WCAG20-TECHS/G18.html\n// Simple contrast, with fixed 5% viewing flare contribution\n// Symmetric, does not matter which is foreground and which is background\n\nimport getColor from \"../getColor.js\";\nimport { getLuminance } from \"../luminance.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastWCAG21 (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Y1 = Math.max(getLuminance(color1), 0);\n\tlet Y2 = Math.max(getLuminance(color2), 0);\n\n\tif (Y2 > Y1) {\n\t\t[Y1, Y2] = [Y2, Y1];\n\t}\n\n\treturn (Y1 + 0.05) / (Y2 + 0.05);\n}\n","// APCA 0.0.98G\n// https://github.com/Myndex/apca-w3\n// see also https://github.com/w3c/silver/issues/643\n\nimport getColor from \"../getColor.js\";\nimport to from \"../to.js\";\nimport { isNone } from \"../util.js\";\n\n// exponents\nconst normBG = 0.56;\nconst normTXT = 0.57;\nconst revTXT = 0.62;\nconst revBG = 0.65;\n\n// clamps\nconst blkThrs = 0.022;\nconst blkClmp = 1.414;\nconst loClip = 0.1;\nconst deltaYmin = 0.0005;\n\n// scalers\n// see https://github.com/w3c/silver/issues/645\nconst scaleBoW = 1.14;\nconst loBoWoffset = 0.027;\nconst scaleWoB = 1.14;\nconst loWoBoffset = 0.027;\n\nfunction fclamp (Y) {\n\tif (Y >= blkThrs) {\n\t\treturn Y;\n\t}\n\treturn Y + (blkThrs - Y) ** blkClmp;\n}\n\nfunction linearize (val) {\n\tlet sign = val < 0 ? -1 : 1;\n\tlet abs = Math.abs(val);\n\treturn sign * Math.pow(abs, 2.4);\n}\n\n/**\n * Not symmetric, requires a foreground (text) color, and a background color\n * @param {import(\"../types.js\").ColorTypes} background\n * @param {import(\"../types.js\").ColorTypes} foreground\n * @returns {number}\n */\nexport default function contrastAPCA (background, foreground) {\n\tforeground = getColor(foreground);\n\tbackground = getColor(background);\n\n\tlet S;\n\tlet C;\n\tlet Sapc;\n\n\t// Myndex as-published, assumes sRGB inputs\n\tlet R, G, B;\n\n\tforeground = to(foreground, \"srgb\");\n\t// Should these be clamped to in-gamut values?\n\n\t// Calculates \"screen luminance\" with non-standard simple gamma EOTF\n\t// weights should be from CSS Color 4, not the ones here which are via Myndex and copied from Lindbloom\n\t[R, G, B] = foreground.coords.map(c => {\n\t\treturn isNone(c) ? 0 : c;\n\t});\n\tlet lumTxt = linearize(R) * 0.2126729 + linearize(G) * 0.7151522 + linearize(B) * 0.072175;\n\n\tbackground = to(background, \"srgb\");\n\t[R, G, B] = background.coords.map(c => {\n\t\treturn isNone(c) ? 0 : c;\n\t});\n\tlet lumBg = linearize(R) * 0.2126729 + linearize(G) * 0.7151522 + linearize(B) * 0.072175;\n\n\t// toe clamping of very dark values to account for flare\n\tlet Ytxt = fclamp(lumTxt);\n\tlet Ybg = fclamp(lumBg);\n\n\t// are we \"Black on White\" (dark on light), or light on dark?\n\tlet BoW = Ybg > Ytxt;\n\n\t// why is this a delta, when Y is not perceptually uniform?\n\t// Answer: it is a noise gate, see\n\t// https://github.com/LeaVerou/color.js/issues/208\n\tif (Math.abs(Ybg - Ytxt) < deltaYmin) {\n\t\tC = 0;\n\t}\n\telse {\n\t\tif (BoW) {\n\t\t\t// dark text on light background\n\t\t\tS = Ybg ** normBG - Ytxt ** normTXT;\n\t\t\tC = S * scaleBoW;\n\t\t}\n\t\telse {\n\t\t\t// light text on dark background\n\t\t\tS = Ybg ** revBG - Ytxt ** revTXT;\n\t\t\tC = S * scaleWoB;\n\t\t}\n\t}\n\tif (Math.abs(C) < loClip) {\n\t\tSapc = 0;\n\t}\n\telse if (C > 0) {\n\t\t// not clear whether Woffset is loBoWoffset or loWoBoffset\n\t\t// but they have the same value\n\t\tSapc = C - loBoWoffset;\n\t}\n\telse {\n\t\tSapc = C + loBoWoffset;\n\t}\n\n\treturn Sapc * 100;\n}\n","// Michelson luminance contrast\n// the relation between the spread and the sum of the two luminances\n// Symmetric, does not matter which is foreground and which is background\n// No black level compensation for flare.\n\nimport getColor from \"../getColor.js\";\nimport { getLuminance } from \"../luminance.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastMichelson (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Y1 = Math.max(getLuminance(color1), 0);\n\tlet Y2 = Math.max(getLuminance(color2), 0);\n\n\tif (Y2 > Y1) {\n\t\t[Y1, Y2] = [Y2, Y1];\n\t}\n\n\tlet denom = Y1 + Y2;\n\treturn denom === 0 ? 0 : (Y1 - Y2) / denom;\n}\n","// Weber luminance contrast\n// The difference between the two luminances divided by the lower luminance\n// Symmetric, does not matter which is foreground and which is background\n// No black level compensation for flare.\n\nimport getColor from \"../getColor.js\";\nimport { getLuminance } from \"../luminance.js\";\n\n// the darkest sRGB color above black is #000001 and this produces\n// a plain Weber contrast of ~45647.\n// So, setting the divide-by-zero result at 50000 is a reasonable\n// max clamp for the plain Weber\nconst max = 50000;\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastWeber (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Y1 = Math.max(getLuminance(color1), 0);\n\tlet Y2 = Math.max(getLuminance(color2), 0);\n\n\tif (Y2 > Y1) {\n\t\t[Y1, Y2] = [Y2, Y1];\n\t}\n\n\treturn Y2 === 0 ? max : (Y1 - Y2) / Y2;\n}\n","// CIE Lightness difference, as used by Google Material Design\n// Google HCT Tone is the same as CIE Lightness\n// https://material.io/blog/science-of-color-design\n\nimport getColor from \"../getColor.js\";\nimport get from \"../get.js\";\nimport lab from \"../spaces/lab.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastLstar (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet L1 = get(color1, [lab, \"l\"]);\n\tlet L2 = get(color2, [lab, \"l\"]);\n\n\treturn Math.abs(L1 - L2);\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\n\n// κ * ε = 2^3 = 8\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst ε3 = 24 / 116;\nconst κ = 24389 / 27; // 29^3/3^3\n\nlet white = WHITES.D65;\n\nexport default new ColorSpace({\n\tid: \"lab-d65\",\n\tname: \"Lab D65\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t},\n\n\t// Assuming XYZ is relative to D65, convert to CIE Lab\n\t// from CIE standard, which now defines these as a rational fraction\n\twhite,\n\n\tbase: xyz_d65,\n\t// Convert D65-adapted XYZ to Lab\n\t// CIE 15.3:2004 section 8.2.1.1\n\tfromBase (XYZ) {\n\t\t// compute xyz, which is XYZ scaled relative to reference white\n\t\tlet xyz = XYZ.map((value, i) => value / white[i]);\n\n\t\t// now compute f\n\t\tlet f = xyz.map(value => (value > ε ? Math.cbrt(value) : (κ * value + 16) / 116));\n\n\t\treturn [\n\t\t\t116 * f[1] - 16, // L\n\t\t\t500 * (f[0] - f[1]), // a\n\t\t\t200 * (f[1] - f[2]), // b\n\t\t];\n\t},\n\t// Convert Lab to D65-adapted XYZ\n\t// Same result as CIE 15.3:2004 Appendix D although the derivation is different\n\t// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\ttoBase (Lab) {\n\t\t// compute f, starting with the luminance-related term\n\t\tlet f = [];\n\t\tf[1] = (Lab[0] + 16) / 116;\n\t\tf[0] = Lab[1] / 500 + f[1];\n\t\tf[2] = f[1] - Lab[2] / 200;\n\n\t\t// compute xyz\n\t\tlet xyz = [\n\t\t\tf[0] > ε3 ? Math.pow(f[0], 3) : (116 * f[0] - 16) / κ,\n\t\t\tLab[0] > 8 ? Math.pow((Lab[0] + 16) / 116, 3) : Lab[0] / κ,\n\t\t\tf[2] > ε3 ? Math.pow(f[2], 3) : (116 * f[2] - 16) / κ,\n\t\t];\n\n\t\t// Compute XYZ by scaling xyz by reference white\n\t\treturn xyz.map((value, i) => value * white[i]);\n\t},\n\n\tformats: {\n\t\t\"lab-d65\": {\n\t\t\tcoords: [\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","// Delta Phi Star perceptual lightness contrast\n// See https://github.com/Myndex/deltaphistar\n// The (difference between two Lstars each raised to phi) raised to (1/phi)\n// Symmetric, does not matter which is foreground and which is background\n\nimport getColor from \"../getColor.js\";\nimport get from \"../get.js\";\nimport lab_d65 from \"../spaces/lab-d65.js\";\n\nconst phi = Math.pow(5, 0.5) * 0.5 + 0.5; // Math.phi can be used if Math.js\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastDeltaPhi (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Lstr1 = get(color1, [lab_d65, \"l\"]);\n\tlet Lstr2 = get(color2, [lab_d65, \"l\"]);\n\n\tlet deltaPhiStar = Math.abs(Math.pow(Lstr1, phi) - Math.pow(Lstr2, phi));\n\n\tlet contrast = Math.pow(deltaPhiStar, 1 / phi) * Math.SQRT2 - 40;\n\n\treturn contrast < 7.5 ? 0.0 : contrast;\n}\n","export { default as contrastWCAG21 } from \"./WCAG21.js\";\nexport { default as contrastAPCA } from \"./APCA.js\";\nexport { default as contrastMichelson } from \"./Michelson.js\";\nexport { default as contrastWeber } from \"./Weber.js\";\nexport { default as contrastLstar } from \"./Lstar.js\";\nexport { default as contrastDeltaPhi } from \"./deltaPhi.js\";\n\n/** @typedef {keyof typeof import(\"./index.js\") extends `contrast${infer Alg}` ? Alg : string} Algorithms */\n","import getColor from \"./getColor.js\";\n// import defaults from \"./defaults.js\";\nimport { isString } from \"./util.js\";\nimport * as contrastAlgorithms from \"./contrast/index.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Algorithms} Algorithms */\n\n/**\n *\n * @param {ColorTypes} background\n * @param {ColorTypes} foreground\n * @param {Algorithms | ({ algorithm: Algorithms } & Record<string, any>)} o\n * Algorithm to use as well as any other options to pass to the contrast function\n * @returns {number}\n * @throws {TypeError} Unknown or unspecified algorithm\n */\nexport default function contrast (background, foreground, o) {\n\tif (isString(o)) {\n\t\to = { algorithm: o };\n\t}\n\n\tlet { algorithm, ...rest } = o || {};\n\n\tif (!algorithm) {\n\t\tlet algorithms = Object.keys(contrastAlgorithms)\n\t\t\t.map(a => a.replace(/^contrast/, \"\"))\n\t\t\t.join(\", \");\n\t\tthrow new TypeError(\n\t\t\t`contrast() function needs a contrast algorithm. Please specify one of: ${algorithms}`,\n\t\t);\n\t}\n\n\tbackground = getColor(background);\n\tforeground = getColor(foreground);\n\n\tfor (let a in contrastAlgorithms) {\n\t\tif (\"contrast\" + algorithm.toLowerCase() === a.toLowerCase()) {\n\t\t\treturn contrastAlgorithms[a](background, foreground, rest);\n\t\t}\n\t}\n\n\tthrow new TypeError(`Unknown contrast algorithm: ${algorithm}`);\n}\n","import xyz_d65 from \"./spaces/xyz-d65.js\";\nimport getAll from \"./getAll.js\";\n\n/** @import Color, { ColorTypes } from \"./color.js\" */\n\n// Chromaticity coordinates\n/**\n * @param {ColorTypes} color\n * @returns {[number, number]}\n */\nexport function uv (color) {\n\t// Assumes getAll() calls getColor() on color\n\tlet [X, Y, Z] = getAll(color, xyz_d65);\n\tlet denom = X + 15 * Y + 3 * Z;\n\treturn [(4 * X) / denom, (9 * Y) / denom];\n}\n\n/**\n * @param {ColorTypes} color\n * @returns {[number, number]}\n */\nexport function xy (color) {\n\t// Assumes getAll() calls getColor() on color\n\tlet [X, Y, Z] = getAll(color, xyz_d65);\n\tlet sum = X + Y + Z;\n\treturn [X / sum, Y / sum];\n}\n\n/**\n * @param {typeof Color} Color\n */\nexport function register (Color) {\n\t// no setters, as lightness information is lost\n\t// when converting color to chromaticity\n\tObject.defineProperty(Color.prototype, \"uv\", {\n\t\tget () {\n\t\t\treturn uv(this);\n\t\t},\n\t});\n\n\tObject.defineProperty(Color.prototype, \"xy\", {\n\t\tget () {\n\t\t\treturn xy(this);\n\t\t},\n\t});\n}\n","import defaults from \"./defaults.js\";\nimport { isString } from \"./util.js\";\nimport deltaEMethods from \"./deltaE/index.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Methods} Methods */\n\n/**\n *\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {Methods | ({ method?: Methods | undefined } & Record<string, any>)} [o]\n * deltaE method to use as well as any other options to pass to the deltaE function\n * @returns {number}\n * @throws {TypeError} Unknown or unspecified method\n */\nexport default function deltaE (c1, c2, o = {}) {\n\tif (isString(o)) {\n\t\to = { method: o };\n\t}\n\n\tlet { method = defaults.deltaE, ...rest } = o;\n\n\tfor (let m in deltaEMethods) {\n\t\tif (\"deltae\" + method.toLowerCase() === m.toLowerCase()) {\n\t\t\treturn deltaEMethods[m](c1, c2, rest);\n\t\t}\n\t}\n\n\tthrow new TypeError(`Unknown deltaE method: ${method}`);\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport set from \"./set.js\";\n\n/** @import { ColorTypes, PlainColorObject, Ref } from \"./types.js\" */\n\n/**\n * @param {ColorTypes} color\n * @param {number} amount\n * @returns {PlainColorObject}\n */\nexport function lighten (color, amount = 0.25) {\n\tlet space = ColorSpace.get(\"oklch\", \"lch\");\n\tlet /** @type {Ref} */ lightness = [space, \"l\"];\n\treturn set(color, lightness, l => l * (1 + amount));\n}\n\n/**\n * @param {ColorTypes} color\n * @param {number} amount\n * @returns {PlainColorObject}\n */\nexport function darken (color, amount = 0.25) {\n\tlet space = ColorSpace.get(\"oklch\", \"lch\");\n\tlet /** @type {Ref} */ lightness = [space, \"l\"];\n\treturn set(color, lightness, l => l * (1 - amount));\n}\n\n/** @type {\"color\"} */\nlighten.returns = \"color\";\n\n/** @type {\"color\"} */\ndarken.returns = \"color\";\n","/**\n * Functions related to color interpolation\n */\nimport ColorSpace from \"./ColorSpace.js\";\nimport { type, interpolate, isNone } from \"./util.js\";\nimport getColor from \"./getColor.js\";\nimport clone from \"./clone.js\";\nimport to from \"./to.js\";\nimport toGamut from \"./toGamut.js\";\nimport get from \"./get.js\";\nimport set from \"./set.js\";\nimport defaults from \"./defaults.js\";\nimport * as angles from \"./angles.js\";\nimport deltaE from \"./deltaE.js\";\n\n/** @import { ColorTypes, PlainColorObject, Ref } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").MixOptions} MixOptions */\n/** @typedef {import(\"./types.js\").Range} Range */\n/** @typedef {import(\"./types.js\").RangeOptions} RangeOptions */\n/** @typedef {import(\"./types.js\").StepsOptions} StepsOptions */\n\n/**\n * Return an intermediate color between two colors\n * @overload\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {MixOptions} [options]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {number} [p=0.5]\n * @param {MixOptions} [options]\n * @returns {PlainColorObject}\n */\nexport function mix (c1, c2, p, o = {}) {\n\t[c1, c2] = [getColor(c1), getColor(c2)];\n\n\tif (type(p) === \"object\") {\n\t\t[p, o] = [0.5, p];\n\t}\n\n\tlet r = range(c1, c2, o);\n\treturn r(p ?? 0.5); // why not give p a default value like we do for options? Overloading doesn't work, and TS complains\n}\n\n/**\n * Get an array of discrete steps\n * @overload\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {StepsOptions} [options]\n * @returns {PlainColorObject[]}\n */\n/**\n * @overload\n * @param {Range} range\n * @param {StepsOptions} [options]\n * @returns {PlainColorObject[]}\n */\nexport function steps (c1, c2, options = {}) {\n\tlet colorRange;\n\n\tif (isRange(c1)) {\n\t\t// Tweaking existing range\n\t\t[colorRange, options] = [c1, c2];\n\t\t[c1, c2] = colorRange.rangeArgs.colors;\n\t}\n\n\tlet { maxDeltaE, deltaEMethod, steps = 2, maxSteps = 1000, ...rangeOptions } = options;\n\n\tif (!colorRange) {\n\t\t[c1, c2] = [getColor(c1), getColor(c2)];\n\t\tcolorRange = range(c1, c2, rangeOptions);\n\t}\n\n\tlet totalDelta = deltaE(c1, c2);\n\tlet actualSteps =\n\t\tmaxDeltaE > 0 ? Math.max(steps, Math.ceil(totalDelta / maxDeltaE) + 1) : steps;\n\tlet ret = [];\n\n\tif (maxSteps !== undefined) {\n\t\tactualSteps = Math.min(actualSteps, maxSteps);\n\t}\n\n\tif (actualSteps === 1) {\n\t\tret = [{ p: 0.5, color: colorRange(0.5) }];\n\t}\n\telse {\n\t\tlet step = 1 / (actualSteps - 1);\n\t\tret = Array.from({ length: actualSteps }, (_, i) => {\n\t\t\tlet p = i * step;\n\t\t\treturn { p, color: colorRange(p) };\n\t\t});\n\t}\n\n\tif (maxDeltaE > 0) {\n\t\t// Iterate over all stops and find max deltaE\n\t\tlet maxDelta = ret.reduce((acc, cur, i) => {\n\t\t\tif (i === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tlet ΔΕ = deltaE(cur.color, ret[i - 1].color, deltaEMethod);\n\t\t\treturn Math.max(acc, ΔΕ);\n\t\t}, 0);\n\n\t\twhile (maxDelta > maxDeltaE) {\n\t\t\t// Insert intermediate stops and measure maxDelta again\n\t\t\t// We need to do this for all pairs, otherwise the midpoint shifts\n\t\t\tmaxDelta = 0;\n\n\t\t\tfor (let i = 1; i < ret.length && ret.length < maxSteps; i++) {\n\t\t\t\tlet prev = ret[i - 1];\n\t\t\t\tlet cur = ret[i];\n\n\t\t\t\tlet p = (cur.p + prev.p) / 2;\n\t\t\t\tlet color = colorRange(p);\n\t\t\t\tmaxDelta = Math.max(maxDelta, deltaE(color, prev.color), deltaE(color, cur.color));\n\t\t\t\tret.splice(i, 0, { p, color: colorRange(p) });\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t}\n\n\tret = ret.map(a => a.color);\n\n\treturn ret;\n}\n\n/**\n * Creates a function that accepts a number and returns a color.\n * For numbers in the range 0 to 1, the function interpolates;\n * for numbers outside that range, the function extrapolates\n * (and thus may not return the results you expect)\n * @overload\n * @param {Range} range\n * @param {RangeOptions} [options]\n * @returns {Range}\n */\n/**\n * @overload\n * @param {ColorTypes} color1\n * @param {ColorTypes} color2\n * @param {RangeOptions & Record<string, any>} [options]\n * @returns {Range}\n */\nexport function range (color1, color2, options = {}) {\n\tif (isRange(color1)) {\n\t\t// Tweaking existing range\n\t\tlet [r, options] = [color1, color2];\n\n\t\treturn range(...r.rangeArgs.colors, { ...r.rangeArgs.options, ...options });\n\t}\n\n\tlet { space, outputSpace, progression, premultiplied } = options;\n\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\t// Make sure we're working on copies of these colors\n\tcolor1 = clone(color1);\n\tcolor2 = clone(color2);\n\n\tlet rangeArgs = { colors: [color1, color2], options };\n\n\tif (space) {\n\t\tspace = ColorSpace.get(space);\n\t}\n\telse {\n\t\tspace = ColorSpace.registry[defaults.interpolationSpace] || color1.space;\n\t}\n\n\toutputSpace = outputSpace ? ColorSpace.get(outputSpace) : space;\n\n\tcolor1 = to(color1, space);\n\tcolor2 = to(color2, space);\n\n\t// Gamut map to avoid areas of flat color\n\tcolor1 = toGamut(color1);\n\tcolor2 = toGamut(color2);\n\n\t// Handle hue interpolation\n\t// See https://github.com/w3c/csswg-drafts/issues/4735#issuecomment-635741840\n\tif (space.coords.h && space.coords.h.type === \"angle\") {\n\t\tlet arc = (options.hue = options.hue || \"shorter\");\n\n\t\tlet /** @type {Ref} */ hue = [space, \"h\"];\n\t\tlet [θ1, θ2] = [get(color1, hue), get(color2, hue)];\n\t\t// Undefined hues must be evaluated before hue fix-up to properly\n\t\t// calculate hue arcs between undefined and defined hues.\n\t\t// See https://github.com/w3c/csswg-drafts/issues/9436#issuecomment-1746957545\n\t\tif (isNone(θ1) && !isNone(θ2)) {\n\t\t\tθ1 = θ2;\n\t\t}\n\t\telse if (isNone(θ2) && !isNone(θ1)) {\n\t\t\tθ2 = θ1;\n\t\t}\n\t\t[θ1, θ2] = angles.adjust(arc, [θ1, θ2]);\n\t\tset(color1, hue, θ1);\n\t\tset(color2, hue, θ2);\n\t}\n\n\tif (premultiplied) {\n\t\t// not coping with polar spaces yet\n\t\tcolor1.coords = /** @type {[number, number, number]} */ (\n\t\t\tcolor1.coords.map(c => c * color1.alpha)\n\t\t);\n\t\tcolor2.coords = /** @type {[number, number, number]} */ (\n\t\t\tcolor2.coords.map(c => c * color2.alpha)\n\t\t);\n\t}\n\n\treturn Object.assign(\n\t\tp => {\n\t\t\tp = progression ? progression(p) : p;\n\t\t\tlet coords = color1.coords.map((start, i) => {\n\t\t\t\tlet end = color2.coords[i];\n\t\t\t\treturn interpolate(start, end, p);\n\t\t\t});\n\n\t\t\tlet alpha = interpolate(color1.alpha, color2.alpha, p);\n\t\t\tlet ret = { space, coords, alpha };\n\n\t\t\tif (premultiplied) {\n\t\t\t\t// undo premultiplication\n\t\t\t\tret.coords = ret.coords.map(c => c / alpha);\n\t\t\t}\n\n\t\t\tif (outputSpace !== space) {\n\t\t\t\tret = to(ret, outputSpace);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t},\n\t\t{\n\t\t\trangeArgs,\n\t\t},\n\t);\n}\n\n/**\n * @param {any} val\n * @returns {val is Range}\n */\nexport function isRange (val) {\n\treturn type(val) === \"function\" && !!val.rangeArgs;\n}\n\ndefaults.interpolationSpace = \"lab\";\n\n/**\n * @param {typeof import(\"./color.js\").default} Color\n */\nexport function register (Color) {\n\tColor.defineFunction(\"mix\", mix, { returns: \"color\" });\n\tColor.defineFunction(\"range\", range, { returns: \"function<color>\" });\n\tColor.defineFunction(\"steps\", steps, { returns: \"array<color>\" });\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport sRGB from \"./srgb.js\";\n\nexport default new ColorSpace({\n\tid: \"hsl\",\n\tname: \"HSL\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: sRGB,\n\n\t// Adapted from https://drafts.csswg.org/css-color-4/better-rgbToHsl.js\n\tfromBase: rgb => {\n\t\tlet max = Math.max(...rgb);\n\t\tlet min = Math.min(...rgb);\n\t\tlet [r, g, b] = rgb;\n\t\tlet [h, s, l] = [null, 0, (min + max) / 2];\n\t\tlet d = max - min;\n\n\t\tif (d !== 0) {\n\t\t\ts = l === 0 || l === 1 ? 0 : (max - l) / Math.min(l, 1 - l);\n\n\t\t\tswitch (max) {\n\t\t\t\tcase r:\n\t\t\t\t\th = (g - b) / d + (g < b ? 6 : 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase g:\n\t\t\t\t\th = (b - r) / d + 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase b:\n\t\t\t\t\th = (r - g) / d + 4;\n\t\t\t}\n\n\t\t\th = h * 60;\n\t\t}\n\n\t\t// Very out of gamut colors can produce negative saturation\n\t\t// If so, just rotate the hue by 180 and use a positive saturation\n\t\t// see https://github.com/w3c/csswg-drafts/issues/9222\n\t\tif (s < 0) {\n\t\t\th += 180;\n\t\t\ts = Math.abs(s);\n\t\t}\n\n\t\tif (h >= 360) {\n\t\t\th -= 360;\n\t\t}\n\n\t\treturn [h, s * 100, l * 100];\n\t},\n\n\t// Adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB_alternative\n\ttoBase: hsl => {\n\t\tlet [h, s, l] = hsl;\n\t\th = h % 360;\n\n\t\tif (h < 0) {\n\t\t\th += 360;\n\t\t}\n\n\t\ts /= 100;\n\t\tl /= 100;\n\n\t\tfunction f (n) {\n\t\t\tlet k = (n + h / 30) % 12;\n\t\t\tlet a = s * Math.min(l, 1 - l);\n\t\t\treturn l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n\t\t}\n\n\t\treturn [f(0), f(8), f(4)];\n\t},\n\n\tformats: {\n\t\thsl: {\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t\thsla: {\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t\tcommas: true,\n\t\t\talpha: true,\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport sRGB from \"./srgb.js\";\n\n// Note that, like HSL, calculations are done directly on\n// gamma-corrected sRGB values rather than linearising them first.\n\nexport default new ColorSpace({\n\tid: \"hsv\",\n\tname: \"HSV\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tv: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Value\",\n\t\t},\n\t},\n\n\tbase: sRGB,\n\t// https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\tfromBase (rgb) {\n\t\tlet max = Math.max(...rgb);\n\t\tlet min = Math.min(...rgb);\n\t\tlet [r, g, b] = rgb;\n\t\tlet [h, s, v] = [null, 0, max];\n\t\tlet d = max - min;\n\n\t\tif (d !== 0) {\n\t\t\tswitch (max) {\n\t\t\t\tcase r:\n\t\t\t\t\th = (g - b) / d + (g < b ? 6 : 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase g:\n\t\t\t\t\th = (b - r) / d + 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase b:\n\t\t\t\t\th = (r - g) / d + 4;\n\t\t\t}\n\n\t\t\th = h * 60;\n\t\t}\n\n\t\tif (v) {\n\t\t\ts = d / v;\n\t\t}\n\n\t\tif (h >= 360) {\n\t\t\th -= 360;\n\t\t}\n\n\t\treturn [h, s * 100, v * 100];\n\t},\n\t// Adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB_alternative\n\ttoBase (hsv) {\n\t\tlet [h, s, v] = hsv;\n\t\th = h % 360;\n\n\t\tif (h < 0) {\n\t\t\th += 360;\n\t\t}\n\n\t\ts /= 100;\n\t\tv /= 100;\n\n\t\tfunction f (n) {\n\t\t\tlet k = (n + h / 60) % 6;\n\t\t\treturn v - v * s * Math.max(0, Math.min(k, 4 - k, 1));\n\t\t}\n\n\t\treturn [f(5), f(3), f(1)];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hsv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport HSV from \"./hsv.js\";\n\n// The Hue, Whiteness Blackness (HWB) colorspace\n// See https://drafts.csswg.org/css-color-4/#the-hwb-notation\n// Note that, like HSL, calculations are done directly on\n// gamma-corrected sRGB values rather than linearising them first.\n\nexport default new ColorSpace({\n\tid: \"hwb\",\n\tname: \"HWB\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\tw: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Whiteness\",\n\t\t},\n\t\tb: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Blackness\",\n\t\t},\n\t},\n\n\tbase: HSV,\n\tfromBase (hsv) {\n\t\tlet [h, s, v] = hsv;\n\n\t\treturn [h, (v * (100 - s)) / 100, 100 - v];\n\t},\n\ttoBase (hwb) {\n\t\tlet [h, w, b] = hwb;\n\n\t\t// Now convert percentages to [0..1]\n\t\tw /= 100;\n\t\tb /= 100;\n\n\t\t// Achromatic check (white plus black >= 1)\n\t\tlet sum = w + b;\n\t\tif (sum >= 1) {\n\t\t\tlet gray = w / sum;\n\t\t\treturn [h, 0, gray * 100];\n\t\t}\n\n\t\tlet v = 1 - b;\n\t\tlet s = v === 0 ? 0 : 1 - w / v;\n\t\treturn [h, s * 100, v * 100];\n\t},\n\n\tformats: {\n\t\thwb: {\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// convert an array of linear-light a98-rgb values to CIE XYZ\n// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n// has greater numerical precision than section 4.3.5.3 of\n// https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n// but the values below were calculated from first principles\n// from the chromaticity coordinates of R G B W\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.5766690429101305, 0.1855582379065463, 0.1882286462349947 ],\n\t[ 0.29734497525053605, 0.6273635662554661, 0.07529145849399788 ],\n\t[ 0.02703136138641234, 0.07068885253582723, 0.9913375368376388 ],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 2.0415879038107465, -0.5650069742788596, -0.34473135077832956 ],\n\t[ -0.9692436362808795, 1.8759675015077202, 0.04155505740717557 ],\n\t[ 0.013444280632031142, -0.11836239223101838, 1.0151749943912054 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"a98rgb-linear\",\n\tcssId: \"--a98-rgb-linear\",\n\tname: \"Linear Adobe® 98 RGB compatible\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport A98Linear from \"./a98rgb-linear.js\";\n\nexport default new RGBColorSpace({\n\tid: \"a98rgb\",\n\tcssId: \"a98-rgb\",\n\tname: \"Adobe® 98 RGB compatible\",\n\tbase: A98Linear,\n\ttoBase: RGB => RGB.map(val => Math.pow(Math.abs(val), 563 / 256) * Math.sign(val)),\n\tfromBase: RGB => RGB.map(val => Math.pow(Math.abs(val), 256 / 563) * Math.sign(val)),\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport XYZ_D50 from \"./xyz-d50.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// convert an array of prophoto-rgb values to CIE XYZ\n// using D50 (so no chromatic adaptation needed afterwards)\n// matrix cannot be expressed in rational form, but is calculated to 64 bit accuracy\n// see https://github.com/w3c/csswg-drafts/issues/7675\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.79776664490064230, 0.13518129740053308, 0.03134773412839220 ],\n\t[ 0.28807482881940130, 0.71183523424187300, 0.00008993693872564 ],\n\t[ 0.00000000000000000, 0.00000000000000000, 0.82510460251046020 ],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 1.34578688164715830, -0.25557208737979464, -0.05110186497554526 ],\n\t[ -0.54463070512490190, 1.50824774284514680, 0.02052744743642139 ],\n\t[ 0.00000000000000000, 0.00000000000000000, 1.21196754563894520 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"prophoto-linear\",\n\tcssId: \"--prophoto-rgb-linear\",\n\tname: \"Linear ProPhoto\",\n\twhite: \"D50\",\n\tbase: XYZ_D50,\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport ProPhotoLinear from \"./prophoto-linear.js\";\n\nconst Et = 1 / 512;\nconst Et2 = 16 / 512;\n\nexport default new RGBColorSpace({\n\tid: \"prophoto\",\n\tcssId: \"prophoto-rgb\",\n\tname: \"ProPhoto\",\n\tbase: ProPhotoLinear,\n\ttoBase (RGB) {\n\t\t// Transfer curve is gamma 1.8 with a small linear portion\n\t\treturn RGB.map(v => {\n\t\t\tlet sign = v < 0 ? -1 : 1;\n\t\t\tlet abs = v * sign;\n\n\t\t\tif (abs < Et2) {\n\t\t\t\treturn v / 16;\n\t\t\t}\n\n\t\t\treturn sign * abs ** 1.8;\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\treturn RGB.map(v => {\n\t\t\tlet sign = v < 0 ? -1 : 1;\n\t\t\tlet abs = v * sign;\n\n\t\t\tif (abs >= Et) {\n\t\t\t\treturn sign * abs ** (1 / 1.8);\n\t\t\t}\n\n\t\t\treturn 16 * v;\n\t\t});\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC2020Linear from \"./rec2020-linear.js\";\n// import sRGB from \"./srgb.js\";\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\n\nexport default new RGBColorSpace({\n\tid: \"--rec2020-oetf\",\n\tname: \"REC.2020_Scene_Referred\",\n\tbase: REC2020Linear,\n\treferred: \"scene\",\n\t// Non-linear transfer function from Rec. ITU-R BT.2020-2 table 4\n\ttoBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs < β * 4.5) {\n\t\t\t\treturn val / 4.5;\n\t\t\t}\n\n\t\t\treturn sign * Math.pow((abs + α - 1) / α, 1 / 0.45);\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs >= β) {\n\t\t\t\treturn sign * (α * Math.pow(abs, 0.45) - (α - 1));\n\t\t\t}\n\n\t\t\treturn 4.5 * val;\n\t\t});\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport OKLab from \"./oklab.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"oklch\",\n\tname: \"OkLCh\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 0.4],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\twhite: \"D65\",\n\n\tbase: OKLab,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\toklch: {\n\t\t\tcoords: [\"<percentage> | <number>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","// Okhsl class.\n//\n// ---- License ----\n//\n// Copyright (c) 2021 Björn Ottosson\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nimport ColorSpace from \"../ColorSpace.js\";\nimport Oklab from \"./oklab.js\";\nimport { LabtoLMS_M } from \"./oklab.js\";\nimport { spow, multiply_v3_m3x3 } from \"../util.js\";\nimport { constrain } from \"../angles.js\";\n\n/** @import { Matrix3x3, Vector3 } from \"../types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"../types.js\").OKCoeff} OKCoeff */\n\nexport const tau = 2 * Math.PI;\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const toLMS = [\n\t[0.4122214694707629, 0.5363325372617349, 0.0514459932675022],\n\t[0.2119034958178251, 0.6806995506452344, 0.1073969535369405],\n\t[0.0883024591900564, 0.2817188391361215, 0.6299787016738222],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const toSRGBLinear = [\n\t[ 4.0767416360759583, -3.3077115392580629, 0.2309699031821043],\n\t[-1.2684379732850315, 2.6097573492876882, -0.3413193760026570],\n\t[-0.0041960761386756, -0.7034186179359362, 1.7076146940746117],\n];\n\n/** @type {OKCoeff} */\nexport const RGBCoeff = [\n\t// Red\n\t[\n\t\t// Limit\n\t\t[-1.8817031, -0.80936501],\n\t\t// `Kn` coefficients\n\t\t[1.19086277, 1.76576728, 0.59662641, 0.75515197, 0.56771245],\n\t],\n\t// Green\n\t[\n\t\t// Limit\n\t\t[1.8144408, -1.19445267],\n\t\t// `Kn` coefficients\n\t\t[0.73956515, -0.45954404, 0.08285427, 0.12541073, -0.14503204],\n\t],\n\t// Blue\n\t[\n\t\t// Limit\n\t\t[0.13110758, 1.81333971],\n\t\t// `Kn` coefficients\n\t\t[1.35733652, -0.00915799, -1.1513021, -0.50559606, 0.00692167],\n\t],\n];\n\nconst floatMax = Number.MAX_VALUE;\nconst K1 = 0.206;\nconst K2 = 0.03;\nconst K3 = (1.0 + K1) / (1.0 + K2);\n\nfunction vdot (a, b) {\n\t// Dot two vectors\n\n\tlet l = a.length;\n\tif (l !== b.length) {\n\t\tthrow new Error(`Vectors of size ${l} and ${b.length} are not aligned`);\n\t}\n\n\tlet s = 0.0;\n\ta.forEach((c, i) => {\n\t\ts += c * b[i];\n\t});\n\n\treturn s;\n}\n\n/**\n * Toe function for L_r\n * @param {number} x\n */\nexport function toe (x) {\n\treturn 0.5 * (K3 * x - K1 + Math.sqrt((K3 * x - K1) * (K3 * x - K1) + 4 * K2 * K3 * x));\n}\n\n/**\n * Inverse toe function for L_r\n * @param {number} x\n */\nexport function toeInv (x) {\n\treturn (x ** 2 + K1 * x) / (K3 * (x + K2));\n}\n\n/**\n * @param {readonly [number, number]} cusp\n * @returns {[number, number]}\n */\nexport function toSt (cusp) {\n\t// To ST.\n\n\tlet [l, c] = cusp;\n\treturn [c / l, c / (1 - l)];\n}\n\nfunction getStMid (a, b) {\n\t// Returns a smooth approximation of the location of the cusp.\n\t//\n\t// This polynomial was created by an optimization process.\n\t// It has been designed so that S_mid < S_max and T_mid < T_max.\n\n\t// prettier-ignore\n\tlet s = 0.11516993 + 1.0 / (\n\t\t7.44778970 + 4.15901240 * b +\n\t\ta * (\n\t\t\t-2.19557347 + 1.75198401 * b +\n\t\t\ta * (\n\t\t\t\t-2.13704948 - 10.02301043 * b +\n\t\t\t\ta * (\n\t\t\t\t\t-4.24894561 + 5.38770819 * b + 4.69891013 * a\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n\n\t// prettier-ignore\n\tlet t = 0.11239642 + 1.0 / (\n\t\t1.61320320 - 0.68124379 * b +\n\t\ta * (\n\t\t\t0.40370612 + 0.90148123 * b +\n\t\t\ta * (\n\t\t\t\t-0.27087943 + 0.61223990 * b +\n\t\t\t\ta * (\n\t\t\t\t\t0.00299215 - 0.45399568 * b - 0.14661872 * a\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n\n\treturn [s, t];\n}\n\n/**\n * @param {Vector3} lab\n * @param {Matrix3x3} lmsToRgb\n */\nexport function oklabToLinearRGB (lab, lmsToRgb) {\n\t// Convert from Oklab to linear RGB.\n\t//\n\t// Can be any gamut as long as `lmsToRgb` is a matrix\n\t// that transform the LMS values to the linear RGB space.\n\n\tlet lms = multiply_v3_m3x3(lab, LabtoLMS_M);\n\n\tlms[0] = lms[0] ** 3;\n\tlms[1] = lms[1] ** 3;\n\tlms[2] = lms[2] ** 3;\n\n\treturn multiply_v3_m3x3(lms, lmsToRgb, lms);\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @returns {[number, number]}\n * @todo Could probably make these types more specific/better-documented if desired\n */\nexport function findCusp (a, b, lmsToRgb, okCoeff) {\n\t// Finds L_cusp and C_cusp for a given hue.\n\t//\n\t// `a` and `b` must be normalized so `a^2 + b^2 == 1`.\n\n\t// First, find the maximum saturation (saturation `S = C/L`)\n\tlet sCusp = computeMaxSaturation(a, b, lmsToRgb, okCoeff);\n\n\t// Convert to linear RGB to find the first point where at least one of r, g or b >= 1:\n\tlet rgb = oklabToLinearRGB([1, sCusp * a, sCusp * b], lmsToRgb);\n\tlet lCusp = spow(1.0 / Math.max(...rgb), 1 / 3);\n\tlet cCusp = lCusp * sCusp;\n\n\treturn [lCusp, cCusp];\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @param {number} l1\n * @param {number} c1\n * @param {number} l0\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @param {[number, number]} cusp\n * @returns {Number}\n * @todo Could probably make these types more specific/better-documented if desired\n */\nexport function findGamutIntersection (a, b, l1, c1, l0, lmsToRgb, okCoeff, cusp) {\n\t// Finds intersection of the line.\n\t//\n\t// Defined by the following:\n\t//\n\t// ```\n\t// L = L0 * (1 - t) + t * L1\n\t// C = t * C1\n\t// ```\n\t//\n\t// `a` and `b` must be normalized so `a^2 + b^2 == 1`.\n\n\tlet t;\n\n\tif (cusp === undefined) {\n\t\tcusp = findCusp(a, b, lmsToRgb, okCoeff);\n\t}\n\n\t// Find the intersection for upper and lower half separately\n\tif ((l1 - l0) * cusp[1] - (cusp[0] - l0) * c1 <= 0.0) {\n\t\t// Lower half\n\t\tt = (cusp[1] * l0) / (c1 * cusp[0] + cusp[1] * (l0 - l1));\n\t}\n\telse {\n\t\t// Upper half\n\n\t\t// First intersect with triangle\n\t\tt = (cusp[1] * (l0 - 1.0)) / (c1 * (cusp[0] - 1.0) + cusp[1] * (l0 - l1));\n\n\t\t// Then one step Halley's method\n\t\tlet dl = l1 - l0;\n\t\tlet dc = c1;\n\n\t\tlet kl = vdot(LabtoLMS_M[0].slice(1), [a, b]);\n\t\tlet km = vdot(LabtoLMS_M[1].slice(1), [a, b]);\n\t\tlet ks = vdot(LabtoLMS_M[2].slice(1), [a, b]);\n\n\t\tlet ldt_ = dl + dc * kl;\n\t\tlet mdt_ = dl + dc * km;\n\t\tlet sdt_ = dl + dc * ks;\n\n\t\t// If higher accuracy is required, 2 or 3 iterations of the following block can be used:\n\t\tlet L = l0 * (1.0 - t) + t * l1;\n\t\tlet C = t * c1;\n\n\t\tlet l_ = L + C * kl;\n\t\tlet m_ = L + C * km;\n\t\tlet s_ = L + C * ks;\n\n\t\tlet l = l_ ** 3;\n\t\tlet m = m_ ** 3;\n\t\tlet s = s_ ** 3;\n\n\t\tlet ldt = 3 * ldt_ * l_ ** 2;\n\t\tlet mdt = 3 * mdt_ * m_ ** 2;\n\t\tlet sdt = 3 * sdt_ * s_ ** 2;\n\n\t\tlet ldt2 = 6 * ldt_ ** 2 * l_;\n\t\tlet mdt2 = 6 * mdt_ ** 2 * m_;\n\t\tlet sdt2 = 6 * sdt_ ** 2 * s_;\n\n\t\tlet r_ = vdot(lmsToRgb[0], [l, m, s]) - 1;\n\t\tlet r1 = vdot(lmsToRgb[0], [ldt, mdt, sdt]);\n\t\tlet r2 = vdot(lmsToRgb[0], [ldt2, mdt2, sdt2]);\n\n\t\tlet ur = r1 / (r1 * r1 - 0.5 * r_ * r2);\n\t\tlet tr = -r_ * ur;\n\n\t\tlet g_ = vdot(lmsToRgb[1], [l, m, s]) - 1;\n\t\tlet g1 = vdot(lmsToRgb[1], [ldt, mdt, sdt]);\n\t\tlet g2 = vdot(lmsToRgb[1], [ldt2, mdt2, sdt2]);\n\n\t\tlet ug = g1 / (g1 * g1 - 0.5 * g_ * g2);\n\t\tlet tg = -g_ * ug;\n\n\t\tlet b_ = vdot(lmsToRgb[2], [l, m, s]) - 1;\n\t\tlet b1 = vdot(lmsToRgb[2], [ldt, mdt, sdt]);\n\t\tlet b2 = vdot(lmsToRgb[2], [ldt2, mdt2, sdt2]);\n\n\t\tlet ub = b1 / (b1 * b1 - 0.5 * b_ * b2);\n\t\tlet tb = -b_ * ub;\n\n\t\ttr = ur >= 0.0 ? tr : floatMax;\n\t\ttg = ug >= 0.0 ? tg : floatMax;\n\t\ttb = ub >= 0.0 ? tb : floatMax;\n\n\t\tt += Math.min(tr, Math.min(tg, tb));\n\t}\n\n\treturn t;\n}\n\nfunction getCs (lab, lmsToRgb, okCoeff) {\n\t// Get Cs\n\n\tlet [l, a, b] = lab;\n\n\tlet cusp = findCusp(a, b, lmsToRgb, okCoeff);\n\n\tlet cMax = findGamutIntersection(a, b, l, 1, l, lmsToRgb, okCoeff, cusp);\n\tlet stMax = toSt(cusp);\n\n\t// Scale factor to compensate for the curved part of gamut shape:\n\tlet k = cMax / Math.min(l * stMax[0], (1 - l) * stMax[1]);\n\n\tlet stMid = getStMid(a, b);\n\n\t// Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.\n\tlet ca = l * stMid[0];\n\tlet cb = (1.0 - l) * stMid[1];\n\tlet cMid = 0.9 * k * Math.sqrt(Math.sqrt(1.0 / (1.0 / ca ** 4 + 1.0 / cb ** 4)));\n\n\t// For `C_0`, the shape is independent of hue, so `ST` are constant.\n\t// Values picked to roughly be the average values of `ST`.\n\tca = l * 0.4;\n\tcb = (1.0 - l) * 0.8;\n\n\t// Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.\n\tlet c0 = Math.sqrt(1.0 / (1.0 / ca ** 2 + 1.0 / cb ** 2));\n\n\treturn [c0, cMid, cMax];\n}\n\nfunction computeMaxSaturation (a, b, lmsToRgb, okCoeff) {\n\t// Finds the maximum saturation possible for a given hue that fits in RGB.\n\t//\n\t// Saturation here is defined as `S = C/L`.\n\t// `a` and `b` must be normalized so `a^2 + b^2 == 1`.\n\n\t// Max saturation will be when one of r, g or b goes below zero.\n\n\t// Select different coefficients depending on which component goes below zero first.\n\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\n\tif (vdot(okCoeff[0][0], [a, b]) > 1) {\n\t\t// Red component\n\t\t[k0, k1, k2, k3, k4] = okCoeff[0][1];\n\t\t[wl, wm, ws] = lmsToRgb[0];\n\t}\n\telse if (vdot(okCoeff[1][0], [a, b]) > 1) {\n\t\t// Green component\n\t\t[k0, k1, k2, k3, k4] = okCoeff[1][1];\n\t\t[wl, wm, ws] = lmsToRgb[1];\n\t}\n\telse {\n\t\t// Blue component\n\t\t[k0, k1, k2, k3, k4] = okCoeff[2][1];\n\t\t[wl, wm, ws] = lmsToRgb[2];\n\t}\n\n\t// Approximate max saturation using a polynomial:\n\tlet sat = k0 + k1 * a + k2 * b + k3 * a ** 2 + k4 * a * b;\n\n\t// Do one step Halley's method to get closer.\n\t// This gives an error less than 10e6, except for some blue hues where the `dS/dh` is close to infinite.\n\t// This should be sufficient for most applications, otherwise do two/three steps.\n\n\tlet kl = vdot(LabtoLMS_M[0].slice(1), [a, b]);\n\tlet km = vdot(LabtoLMS_M[1].slice(1), [a, b]);\n\tlet ks = vdot(LabtoLMS_M[2].slice(1), [a, b]);\n\n\tlet l_ = 1.0 + sat * kl;\n\tlet m_ = 1.0 + sat * km;\n\tlet s_ = 1.0 + sat * ks;\n\n\tlet l = l_ ** 3;\n\tlet m = m_ ** 3;\n\tlet s = s_ ** 3;\n\n\tlet lds = 3.0 * kl * l_ ** 2;\n\tlet mds = 3.0 * km * m_ ** 2;\n\tlet sds = 3.0 * ks * s_ ** 2;\n\n\tlet lds2 = 6.0 * kl ** 2 * l_;\n\tlet mds2 = 6.0 * km ** 2 * m_;\n\tlet sds2 = 6.0 * ks ** 2 * s_;\n\n\tlet f = wl * l + wm * m + ws * s;\n\tlet f1 = wl * lds + wm * mds + ws * sds;\n\tlet f2 = wl * lds2 + wm * mds2 + ws * sds2;\n\n\tsat = sat - (f * f1) / (f1 ** 2 - 0.5 * f * f2);\n\n\treturn sat;\n}\n\nfunction okhslToOklab (hsl, lmsToRgb, okCoeff) {\n\t// Convert Okhsl to Oklab.\n\n\tlet [h, s, l] = hsl;\n\tlet L = toeInv(l);\n\tlet a = null;\n\tlet b = null;\n\th = constrain(h) / 360.0;\n\n\tif (L !== 0.0 && L !== 1.0 && s !== 0) {\n\t\tlet a_ = Math.cos(tau * h);\n\t\tlet b_ = Math.sin(tau * h);\n\n\t\tlet [c0, cMid, cMax] = getCs([L, a_, b_], lmsToRgb, okCoeff);\n\n\t\t// Interpolate the three values for C so that:\n\t\t// ```\n\t\t// At s=0: dC/ds = C_0, C=0\n\t\t// At s=0.8: C=C_mid\n\t\t// At s=1.0: C=C_max\n\t\t// ```\n\n\t\tlet mid = 0.8;\n\t\tlet midInv = 1.25;\n\t\tlet t, k0, k1, k2;\n\n\t\tif (s < mid) {\n\t\t\tt = midInv * s;\n\t\t\tk0 = 0.0;\n\t\t\tk1 = mid * c0;\n\t\t\tk2 = 1.0 - k1 / cMid;\n\t\t}\n\t\telse {\n\t\t\tt = 5 * (s - 0.8);\n\t\t\tk0 = cMid;\n\t\t\tk1 = (0.2 * cMid ** 2 * 1.25 ** 2) / c0;\n\t\t\tk2 = 1.0 - k1 / (cMax - cMid);\n\t\t}\n\n\t\tlet c = k0 + (t * k1) / (1.0 - k2 * t);\n\n\t\ta = c * a_;\n\t\tb = c * b_;\n\t}\n\n\treturn [L, a, b];\n}\n\nfunction oklabToOkhsl (lab, lmsToRgb, okCoeff) {\n\t// Oklab to Okhsl.\n\n\t// Epsilon for lightness should approach close to 32 bit lightness\n\t// Epsilon for saturation just needs to be sufficiently close when denoting achromatic\n\tlet εL = 1e-7;\n\tlet εS = 1e-4;\n\tlet L = lab[0];\n\tlet s = 0.0;\n\tlet l = toe(L);\n\n\tlet c = Math.sqrt(lab[1] ** 2 + lab[2] ** 2);\n\tlet h = 0.5 + Math.atan2(-lab[2], -lab[1]) / tau;\n\n\tif (l !== 0.0 && l !== 1.0 && c !== 0) {\n\t\tlet a_ = lab[1] / c;\n\t\tlet b_ = lab[2] / c;\n\n\t\tlet [c0, cMid, cMax] = getCs([L, a_, b_], lmsToRgb, okCoeff);\n\n\t\tlet mid = 0.8;\n\t\tlet midInv = 1.25;\n\t\tlet k0, k1, k2, t;\n\n\t\tif (c < cMid) {\n\t\t\tk1 = mid * c0;\n\t\t\tk2 = 1.0 - k1 / cMid;\n\n\t\t\tt = c / (k1 + k2 * c);\n\t\t\ts = t * mid;\n\t\t}\n\t\telse {\n\t\t\tk0 = cMid;\n\t\t\tk1 = (0.2 * cMid ** 2 * midInv ** 2) / c0;\n\t\t\tk2 = 1.0 - k1 / (cMax - cMid);\n\n\t\t\tt = (c - k0) / (k1 + k2 * (c - k0));\n\t\t\ts = mid + 0.2 * t;\n\t\t}\n\t}\n\n\tconst achromatic = Math.abs(s) < εS;\n\tif (achromatic || l === 0.0 || Math.abs(1 - l) < εL) {\n\t\th = null;\n\t\t// Due to floating point imprecision near lightness of 1, we can end up\n\t\t// with really high around white, this is to provide consistency as\n\t\t// saturation can be really high for white due this imprecision.\n\t\tif (!achromatic) {\n\t\t\ts = 0.0;\n\t\t}\n\t}\n\telse {\n\t\th = constrain(h * 360);\n\t}\n\n\treturn [h, s, l];\n}\n\nexport default new ColorSpace({\n\tid: \"okhsl\",\n\tname: \"Okhsl\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: Oklab,\n\tgamutSpace: \"self\",\n\n\t// Convert Oklab to Okhsl\n\tfromBase (lab) {\n\t\treturn oklabToOkhsl(lab, toSRGBLinear, RGBCoeff);\n\t},\n\n\t// Convert Okhsl to Oklab\n\ttoBase (hsl) {\n\t\treturn okhslToOklab(hsl, toSRGBLinear, RGBCoeff);\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--okhsl\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport OKLab from \"./oklab.js\";\nimport { toe, toeInv } from \"./okhsl.js\";\n\nexport default new ColorSpace({\n\tid: \"oklrab\",\n\tname: \"Oklrab\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t},\n\n\t// Note that XYZ is relative to D65\n\twhite: \"D65\",\n\n\tbase: OKLab,\n\tfromBase (oklab) {\n\t\treturn [toe(oklab[0]), oklab[1], oklab[2]];\n\t},\n\ttoBase (oklrab) {\n\t\treturn [toeInv(oklrab[0]), oklrab[1], oklrab[2]];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>[-1,1]\",\n\t\t\t\t\"<number> | <percentage>[-1,1]\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport OKLrab from \"./oklrab.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"oklrch\",\n\tname: \"Oklrch\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 0.4],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\twhite: \"D65\",\n\n\tbase: OKLrab,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\tcolor: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>[0,1]\",\n\t\t\t\t\"<number> | <angle>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","// Okhsv class.\n//\n// ---- License ----\n//\n// Copyright (c) 2021 Björn Ottosson\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nimport ColorSpace from \"../ColorSpace.js\";\nimport Oklab from \"./oklab.js\";\nimport { spow, multiply_v3_m3x3 } from \"../util.js\";\nimport { constrain } from \"../angles.js\";\nimport {\n\ttau,\n\ttoe,\n\ttoeInv,\n\tfindCusp,\n\ttoSt,\n\toklabToLinearRGB,\n\ttoSRGBLinear,\n\tRGBCoeff,\n} from \"./okhsl.js\";\n\n/** @import { Coords, Matrix3x3, OKCoeff, Vector3 } from \"../types.js\" */\n\n/**\n *\n * @param {Vector3} hsv\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @returns {Coords}\n */\nfunction okhsvToOklab (hsv, lmsToRgb, okCoeff) {\n\t// Convert from Okhsv to Oklab.\"\"\"\n\n\tlet [h, s, v] = hsv;\n\th = constrain(h) / 360.0;\n\n\tlet l = toeInv(v);\n\tlet a = null;\n\tlet b = null;\n\n\t// Avoid processing gray or colors with undefined hues\n\tif (l !== 0.0 && s !== 0.0) {\n\t\tlet a_ = Math.cos(tau * h);\n\t\tlet b_ = Math.sin(tau * h);\n\n\t\tlet cusp = findCusp(a_, b_, lmsToRgb, okCoeff);\n\t\tlet [sMax, tMax] = toSt(cusp);\n\t\tlet s0 = 0.5;\n\t\tlet k = 1 - s0 / sMax;\n\n\t\t// first we compute L and V as if the gamut is a perfect triangle:\n\n\t\t// L, C when v==1:\n\t\tlet lv = 1 - (s * s0) / (s0 + tMax - tMax * k * s);\n\t\tlet cv = (s * tMax * s0) / (s0 + tMax - tMax * k * s);\n\n\t\tl = v * lv;\n\t\tlet c = v * cv;\n\n\t\t// then we compensate for both toe and the curved top part of the triangle:\n\t\tlet lvt = toeInv(lv);\n\t\tlet cvt = (cv * lvt) / lv;\n\n\t\tlet lNew = toeInv(l);\n\t\tc = (c * lNew) / l;\n\t\tl = lNew;\n\n\t\t// RGB scale\n\t\tlet [rs, gs, bs] = oklabToLinearRGB([lvt, a_ * cvt, b_ * cvt], lmsToRgb);\n\t\tlet scaleL = spow(1.0 / Math.max(Math.max(rs, gs), Math.max(bs, 0.0)), 1 / 3);\n\n\t\tl = l * scaleL;\n\t\tc = c * scaleL;\n\n\t\ta = c * a_;\n\t\tb = c * b_;\n\t}\n\n\treturn [l, a, b];\n}\n\n/**\n *\n * @param {Vector3} lab\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @returns {Coords}\n */\nfunction oklabToOkhsv (lab, lmsToRgb, okCoeff) {\n\t// Oklab to Okhsv.\n\n\t// Epsilon for saturation just needs to be sufficiently close when denoting achromatic\n\tlet ε = 1e-4;\n\tlet l = lab[0];\n\tlet s = 0.0;\n\tlet v = toe(l);\n\tlet c = Math.sqrt(lab[1] ** 2 + lab[2] ** 2);\n\tlet h = 0.5 + Math.atan2(-lab[2], -lab[1]) / tau;\n\n\tif (l !== 0.0 && l !== 1 && c !== 0.0) {\n\t\tlet a_ = lab[1] / c;\n\t\tlet b_ = lab[2] / c;\n\n\t\tlet cusp = findCusp(a_, b_, lmsToRgb, okCoeff);\n\t\tlet [sMax, tMax] = toSt(cusp);\n\t\tlet s0 = 0.5;\n\t\tlet k = 1 - s0 / sMax;\n\n\t\t// first we find `L_v`, `C_v`, `L_vt` and `C_vt`\n\t\tlet t = tMax / (c + l * tMax);\n\t\tlet lv = t * l;\n\t\tlet cv = t * c;\n\n\t\tlet lvt = toeInv(lv);\n\t\tlet cvt = (cv * lvt) / lv;\n\n\t\t// we can then use these to invert the step that compensates\n\t\t// for the toe and the curved top part of the triangle:\n\t\tlet [rs, gs, bs] = oklabToLinearRGB([lvt, a_ * cvt, b_ * cvt], lmsToRgb);\n\t\tlet scaleL = spow(1.0 / Math.max(Math.max(rs, gs), Math.max(bs, 0.0)), 1 / 3);\n\n\t\tl = l / scaleL;\n\t\tc = c / scaleL;\n\n\t\tc = (c * toe(l)) / l;\n\t\tl = toe(l);\n\n\t\t// we can now compute v and s:\n\t\tv = l / lv;\n\t\ts = ((s0 + tMax) * cv) / (tMax * s0 + tMax * k * cv);\n\t}\n\n\tif (Math.abs(s) < ε || v === 0.0) {\n\t\th = null;\n\t}\n\telse {\n\t\th = constrain(h * 360);\n\t}\n\n\treturn [h, s, v];\n}\n\nexport default new ColorSpace({\n\tid: \"okhsv\",\n\tname: \"Okhsv\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tv: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Value\",\n\t\t},\n\t},\n\n\tbase: Oklab,\n\tgamutSpace: \"self\",\n\n\t// Convert Oklab to Okhsl\n\tfromBase (lab) {\n\t\treturn oklabToOkhsv(lab, toSRGBLinear, RGBCoeff);\n\t},\n\n\t// Convert Okhsl to Oklab\n\ttoBase (hsl) {\n\t\treturn okhsvToOklab(hsl, toSRGBLinear, RGBCoeff);\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--okhsv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\nimport { uv } from \"../chromaticity.js\";\nimport { isNone, skipNone } from \"../util.js\";\n\nlet white = WHITES.D65;\n\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\nconst [U_PRIME_WHITE, V_PRIME_WHITE] = uv({ space: xyz_d65, coords: white });\n\nexport default new ColorSpace({\n\tid: \"luv\",\n\tname: \"Luv\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\t// Reference ranges from https://facelessuser.github.io/coloraide/colors/luv/\n\t\tu: {\n\t\t\trefRange: [-215, 215],\n\t\t},\n\t\tv: {\n\t\t\trefRange: [-215, 215],\n\t\t},\n\t},\n\n\twhite: white,\n\tbase: xyz_d65,\n\n\t// Convert D65-adapted XYZ to Luv\n\t// https://en.wikipedia.org/wiki/CIELUV#The_forward_transformation\n\tfromBase (XYZ) {\n\t\tlet xyz = /** @type {[number, number, number]} */ ([\n\t\t\tskipNone(XYZ[0]),\n\t\t\tskipNone(XYZ[1]),\n\t\t\tskipNone(XYZ[2]),\n\t\t]);\n\t\tlet y = xyz[1];\n\n\t\tlet [up, vp] = uv({ space: xyz_d65, coords: xyz });\n\n\t\t// Protect against XYZ of [0, 0, 0]\n\t\tif (!Number.isFinite(up) || !Number.isFinite(vp)) {\n\t\t\treturn [0, 0, 0];\n\t\t}\n\n\t\tlet L = y <= ε ? κ * y : 116 * Math.cbrt(y) - 16;\n\t\treturn [L, 13 * L * (up - U_PRIME_WHITE), 13 * L * (vp - V_PRIME_WHITE)];\n\t},\n\n\t// Convert Luv to D65-adapted XYZ\n\t// https://en.wikipedia.org/wiki/CIELUV#The_reverse_transformation\n\ttoBase (Luv) {\n\t\tlet [L, u, v] = Luv;\n\n\t\t// Protect against division by zero and none Lightness\n\t\tif (L === 0 || isNone(L)) {\n\t\t\treturn [0, 0, 0];\n\t\t}\n\n\t\tu = skipNone(u);\n\t\tv = skipNone(v);\n\n\t\tlet up = u / (13 * L) + U_PRIME_WHITE;\n\t\tlet vp = v / (13 * L) + V_PRIME_WHITE;\n\n\t\tlet y = L <= 8 ? L / κ : Math.pow((L + 16) / 116, 3);\n\n\t\treturn [y * ((9 * up) / (4 * vp)), y, y * ((12 - 3 * up - 20 * vp) / (4 * vp))];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--luv\",\n\t\t\tcoords: [\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport Luv from \"./luv.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"lchuv\",\n\tname: \"LChuv\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 220],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: Luv,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--lchuv\",\n\t\t\tcoords: [\"<number> | <percentage>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","/*\nAdapted from: https://github.com/hsluv/hsluv-javascript/blob/14b49e6cf9a9137916096b8487a5372626b57ba4/src/hsluv.ts\n\nCopyright (c) 2012-2022 Alexei Boronine\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\nimport ColorSpace from \"../ColorSpace.js\";\nimport LCHuv from \"./lchuv.js\";\nimport sRGB from \"./srgb.js\";\nimport { fromXYZ_M } from \"./srgb-linear.js\";\nimport { skipNone } from \"../util.js\";\n\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\n\nconst m_r0 = fromXYZ_M[0][0];\nconst m_r1 = fromXYZ_M[0][1];\nconst m_r2 = fromXYZ_M[0][2];\nconst m_g0 = fromXYZ_M[1][0];\nconst m_g1 = fromXYZ_M[1][1];\nconst m_g2 = fromXYZ_M[1][2];\nconst m_b0 = fromXYZ_M[2][0];\nconst m_b1 = fromXYZ_M[2][1];\nconst m_b2 = fromXYZ_M[2][2];\n\nfunction distanceFromOriginAngle (slope, intercept, angle) {\n\tconst d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n\treturn d < 0 ? Infinity : d;\n}\n\n/**\n * @param {number} l\n */\nexport function calculateBoundingLines (l) {\n\tconst sub1 = Math.pow(l + 16, 3) / 1560896;\n\tconst sub2 = sub1 > ε ? sub1 : l / κ;\n\tconst s1r = sub2 * (284517 * m_r0 - 94839 * m_r2);\n\tconst s2r = sub2 * (838422 * m_r2 + 769860 * m_r1 + 731718 * m_r0);\n\tconst s3r = sub2 * (632260 * m_r2 - 126452 * m_r1);\n\tconst s1g = sub2 * (284517 * m_g0 - 94839 * m_g2);\n\tconst s2g = sub2 * (838422 * m_g2 + 769860 * m_g1 + 731718 * m_g0);\n\tconst s3g = sub2 * (632260 * m_g2 - 126452 * m_g1);\n\tconst s1b = sub2 * (284517 * m_b0 - 94839 * m_b2);\n\tconst s2b = sub2 * (838422 * m_b2 + 769860 * m_b1 + 731718 * m_b0);\n\tconst s3b = sub2 * (632260 * m_b2 - 126452 * m_b1);\n\n\treturn {\n\t\tr0s: s1r / s3r,\n\t\tr0i: (s2r * l) / s3r,\n\t\tr1s: s1r / (s3r + 126452),\n\t\tr1i: ((s2r - 769860) * l) / (s3r + 126452),\n\t\tg0s: s1g / s3g,\n\t\tg0i: (s2g * l) / s3g,\n\t\tg1s: s1g / (s3g + 126452),\n\t\tg1i: ((s2g - 769860) * l) / (s3g + 126452),\n\t\tb0s: s1b / s3b,\n\t\tb0i: (s2b * l) / s3b,\n\t\tb1s: s1b / (s3b + 126452),\n\t\tb1i: ((s2b - 769860) * l) / (s3b + 126452),\n\t};\n}\n\nfunction calcMaxChromaHsluv (lines, h) {\n\tconst hueRad = (h / 360) * Math.PI * 2;\n\tconst r0 = distanceFromOriginAngle(lines.r0s, lines.r0i, hueRad);\n\tconst r1 = distanceFromOriginAngle(lines.r1s, lines.r1i, hueRad);\n\tconst g0 = distanceFromOriginAngle(lines.g0s, lines.g0i, hueRad);\n\tconst g1 = distanceFromOriginAngle(lines.g1s, lines.g1i, hueRad);\n\tconst b0 = distanceFromOriginAngle(lines.b0s, lines.b0i, hueRad);\n\tconst b1 = distanceFromOriginAngle(lines.b1s, lines.b1i, hueRad);\n\n\treturn Math.min(r0, r1, g0, g1, b0, b1);\n}\n\nexport default new ColorSpace({\n\tid: \"hsluv\",\n\tname: \"HSLuv\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: LCHuv,\n\tgamutSpace: sRGB,\n\n\t// Convert LCHuv to HSLuv\n\tfromBase (lch) {\n\t\tlet [l, c, h] = [skipNone(lch[0]), skipNone(lch[1]), skipNone(lch[2])];\n\t\tlet s;\n\n\t\tif (l > 99.9999999) {\n\t\t\ts = 0;\n\t\t\tl = 100;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\ts = 0;\n\t\t\tl = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHsluv(lines, h);\n\t\t\ts = (c / max) * 100;\n\t\t}\n\n\t\treturn [h, s, l];\n\t},\n\n\t// Convert HSLuv to LCHuv\n\ttoBase (hsl) {\n\t\tlet [h, s, l] = [skipNone(hsl[0]), skipNone(hsl[1]), skipNone(hsl[2])];\n\t\tlet c;\n\n\t\tif (l > 99.9999999) {\n\t\t\tl = 100;\n\t\t\tc = 0;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\tl = 0;\n\t\t\tc = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHsluv(lines, h);\n\t\t\tc = (max / 100) * s;\n\t\t}\n\n\t\treturn [l, c, h];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hsluv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","/*\nAdapted from: https://github.com/hsluv/hsluv-javascript/blob/14b49e6cf9a9137916096b8487a5372626b57ba4/src/hsluv.ts\n\nCopyright (c) 2012-2022 Alexei Boronine\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\nimport ColorSpace from \"../ColorSpace.js\";\nimport LCHuv from \"./lchuv.js\";\nimport { fromXYZ_M } from \"./srgb-linear.js\";\nimport { skipNone } from \"../util.js\";\nimport { calculateBoundingLines } from \"./hsluv.js\";\n\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\n\nconst m_r0 = fromXYZ_M[0][0];\nconst m_r1 = fromXYZ_M[0][1];\nconst m_r2 = fromXYZ_M[0][2];\nconst m_g0 = fromXYZ_M[1][0];\nconst m_g1 = fromXYZ_M[1][1];\nconst m_g2 = fromXYZ_M[1][2];\nconst m_b0 = fromXYZ_M[2][0];\nconst m_b1 = fromXYZ_M[2][1];\nconst m_b2 = fromXYZ_M[2][2];\n\nfunction distanceFromOrigin (slope, intercept) {\n\treturn Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n}\n\nfunction calcMaxChromaHpluv (lines) {\n\tlet r0 = distanceFromOrigin(lines.r0s, lines.r0i);\n\tlet r1 = distanceFromOrigin(lines.r1s, lines.r1i);\n\tlet g0 = distanceFromOrigin(lines.g0s, lines.g0i);\n\tlet g1 = distanceFromOrigin(lines.g1s, lines.g1i);\n\tlet b0 = distanceFromOrigin(lines.b0s, lines.b0i);\n\tlet b1 = distanceFromOrigin(lines.b1s, lines.b1i);\n\n\treturn Math.min(r0, r1, g0, g1, b0, b1);\n}\n\nexport default new ColorSpace({\n\tid: \"hpluv\",\n\tname: \"HPLuv\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: LCHuv,\n\tgamutSpace: \"self\",\n\n\t// Convert LCHuv to HPLuv\n\tfromBase (lch) {\n\t\tlet [l, c, h] = [skipNone(lch[0]), skipNone(lch[1]), skipNone(lch[2])];\n\t\tlet s;\n\n\t\tif (l > 99.9999999) {\n\t\t\ts = 0;\n\t\t\tl = 100;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\ts = 0;\n\t\t\tl = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHpluv(lines);\n\t\t\ts = (c / max) * 100;\n\t\t}\n\t\treturn [h, s, l];\n\t},\n\n\t// Convert HPLuv to LCHuv\n\ttoBase (hsl) {\n\t\tlet [h, s, l] = [skipNone(hsl[0]), skipNone(hsl[1]), skipNone(hsl[2])];\n\t\tlet c;\n\n\t\tif (l > 99.9999999) {\n\t\t\tl = 100;\n\t\t\tc = 0;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\tl = 0;\n\t\t\tc = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHpluv(lines);\n\t\t\tc = (max / 100) * s;\n\t\t}\n\n\t\treturn [l, c, h];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hpluv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC_2020_Linear from \"./rec2020-linear.js\";\n\nexport default new RGBColorSpace({\n\tid: \"rec2100-linear\",\n\tname: \"Linear REC.2100\",\n\twhite: \"D65\",\n\ttoBase: REC_2020_Linear.toBase,\n\tfromBase: REC_2020_Linear.fromBase,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC_2100_Linear from \"./rec2100-linear.js\";\n\nconst Yw = 203; // absolute luminance of media white, cd/m²\nconst n = 2610 / 2 ** 14;\nconst ninv = 2 ** 14 / 2610;\nconst m = 2523 / 2 ** 5;\nconst minv = 2 ** 5 / 2523;\nconst c1 = 3424 / 2 ** 12;\nconst c2 = 2413 / 2 ** 7;\nconst c3 = 2392 / 2 ** 7;\n\nexport default new RGBColorSpace({\n\tid: \"rec2100pq\",\n\tcssId: \"rec2100-pq\",\n\tname: \"REC.2100-PQ\",\n\tbase: REC_2100_Linear,\n\ttoBase (RGB) {\n\t\t// given PQ encoded component in range [0, 1]\n\t\t// return media-white relative linear-light\n\t\treturn RGB.map(function (val) {\n\t\t\tlet x = (Math.max(val ** minv - c1, 0) / (c2 - c3 * val ** minv)) ** ninv;\n\t\t\treturn (x * 10000) / Yw; // luminance relative to diffuse white, [0, 70 or so].\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\t// given media-white relative linear-light\n\t\t// returnPQ encoded component in range [0, 1]\n\t\treturn RGB.map(function (val) {\n\t\t\tlet x = Math.max((val * Yw) / 10000, 0); // absolute luminance of peak white is 10,000 cd/m².\n\t\t\tlet num = c1 + c2 * x ** n;\n\t\t\tlet denom = 1 + c3 * x ** n;\n\n\t\t\treturn (num / denom) ** m;\n\t\t});\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC_2100_Linear from \"./rec2100-linear.js\";\nimport { spow } from \"../util.js\";\n\nconst a = 0.17883277;\nconst b = 0.28466892; // 1 - (4 * a)\nconst c = 0.55991073; // 0.5 - a * Math.log(4 *a)\n\nconst scale = 3.7743; // Place 18% grey at HLG 0.38, so media white at 0.75\n\nexport default new RGBColorSpace({\n\tid: \"rec2100hlg\",\n\tcssId: \"rec2100-hlg\",\n\tname: \"REC.2100-HLG\",\n\treferred: \"scene\",\n\n\tbase: REC_2100_Linear,\n\ttoBase (RGB) {\n\t\t// given HLG encoded component in range [0, 1]\n\t\t// return media-white relative linear-light\n\t\treturn RGB.map(function (val) {\n\t\t\t// first the HLG EOTF\n\t\t\t// ITU-R BT.2390-10 p.30 section\n\t\t\t// 6.3 The hybrid log-gamma electro-optical transfer function (EOTF)\n\t\t\t// Then scale by 3 so media white is 1.0\n\t\t\tif (val <= 0.5) {\n\t\t\t\treturn (val ** 2 / 3) * scale;\n\t\t\t}\n\t\t\treturn ((Math.exp((val - c) / a) + b) / 12) * scale;\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\t// given media-white relative linear-light\n\t\t// where diffuse white is 1.0,\n\t\t// return HLG encoded component in range [0, 1]\n\t\treturn RGB.map(function (val) {\n\t\t\t// first scale to put linear-light media white at 1/3\n\t\t\tval /= scale;\n\t\t\t// now the HLG OETF\n\t\t\t// ITU-R BT.2390-10 p.23\n\t\t\t// 6.1 The hybrid log-gamma opto-electronic transfer function (OETF)\n\t\t\tif (val <= 1 / 12) {\n\t\t\t\treturn spow(3 * val, 0.5);\n\t\t\t}\n\t\t\treturn a * Math.log(12 * val - b) + c;\n\t\t});\n\t},\n});\n","import hooks from \"./hooks.js\";\nimport { multiplyMatrices } from \"./util.js\";\nimport { WHITES } from \"./adapt.js\";\n\n/** @import { White } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").CAT} CAT */\n\n/** @type {Record<string, CAT>} */\nexport const CATs = {};\n\nhooks.add(\"chromatic-adaptation-start\", env => {\n\tif (env.options.method) {\n\t\tenv.M = adapt(env.W1, env.W2, env.options.method);\n\t}\n});\n\nhooks.add(\"chromatic-adaptation-end\", env => {\n\tif (!env.M) {\n\t\tenv.M = adapt(env.W1, env.W2, env.options.method);\n\t}\n});\n\nexport function defineCAT (/** @type {CAT} */ { id, toCone_M, fromCone_M }) {\n\t// Use id, toCone_M, fromCone_M like variables\n\tCATs[id] = arguments[0];\n}\n\n/**\n *\n * @param {White} W1\n * @param {White} W2\n * @param {string} id\n * @returns {number[][]}\n */\nexport function adapt (W1, W2, id = \"Bradford\") {\n\t// adapt from a source whitepoint or illuminant W1\n\t// to a destination whitepoint or illuminant W2,\n\t// using the given chromatic adaptation transform (CAT)\n\t// debugger;\n\tlet method = CATs[id];\n\n\tlet [ρs, γs, βs] = multiplyMatrices(method.toCone_M, W1);\n\tlet [ρd, γd, βd] = multiplyMatrices(method.toCone_M, W2);\n\n\t// all practical illuminants have non-zero XYZ so no division by zero can occur below\n\t// prettier-ignore\n\tlet scale = [\n\t\t[ρd / ρs, 0, 0 ],\n\t\t[0, γd / γs, 0 ],\n\t\t[0, 0, βd / βs],\n\t];\n\t// console.log({scale});\n\n\tlet scaled_cone_M = multiplyMatrices(scale, method.toCone_M);\n\tlet adapt_M = multiplyMatrices(method.fromCone_M, scaled_cone_M);\n\t// console.log({scaled_cone_M, adapt_M});\n\treturn adapt_M;\n}\n\n// prettier-ignore\ndefineCAT({\n\tid: \"von Kries\",\n\ttoCone_M: [\n\t\t[ 0.4002400, 0.7076000, -0.0808100 ],\n\t\t[ -0.2263000, 1.1653200, 0.0457000 ],\n\t\t[ 0.0000000, 0.0000000, 0.9182200 ],\n\t],\n\tfromCone_M: [\n\t\t[ 1.8599363874558397, -1.1293816185800916, 0.21989740959619328 ],\n\t\t[ 0.3611914362417676, 0.6388124632850422, -0.000006370596838649899 ],\n\t\t[ 0, 0, 1.0890636230968613 ],\n\t],\n});\n\n// prettier-ignore\ndefineCAT({\n\tid: \"Bradford\",\n\t// Convert an array of XYZ values in the range 0.0 - 1.0\n\t// to cone fundamentals\n\ttoCone_M: [\n\t\t[ 0.8951000, 0.2664000, -0.1614000 ],\n\t\t[ -0.7502000, 1.7135000, 0.0367000 ],\n\t\t[ 0.0389000, -0.0685000, 1.0296000 ],\n\t],\n\t// and back\n\tfromCone_M: [\n\t\t[ 0.9869929054667121, -0.14705425642099013, 0.15996265166373122 ],\n\t\t[ 0.4323052697233945, 0.5183602715367774, 0.049291228212855594 ],\n\t\t[ -0.00852866457517732, 0.04004282165408486, 0.96848669578755 ],\n\t],\n});\n\n// prettier-ignore\ndefineCAT({\n\tid: \"CAT02\",\n\t// with complete chromatic adaptation to W2, so D = 1.0\n\ttoCone_M: [\n\t\t[ 0.7328000, 0.4296000, -0.1624000 ],\n\t\t[ -0.7036000, 1.6975000, 0.0061000 ],\n\t\t[ 0.0030000, 0.0136000, 0.9834000 ],\n\t],\n\tfromCone_M: [\n\t\t[ 1.0961238208355142, -0.27886900021828726, 0.18274517938277307 ],\n\t\t[ 0.4543690419753592, 0.4735331543074117, 0.07209780371722911 ],\n\t\t[ -0.009627608738429355, -0.00569803121611342, 1.0153256399545427 ],\n\t],\n});\n\n// prettier-ignore\ndefineCAT({\n\tid: \"CAT16\",\n\ttoCone_M: [\n\t\t[ 0.401288, 0.650173, -0.051461 ],\n\t\t[ -0.250268, 1.204414, 0.045854 ],\n\t\t[ -0.002079, 0.048952, 0.953127 ],\n\t],\n\t// the extra precision is needed to avoid roundtripping errors\n\tfromCone_M: [\n\t\t[ 1.862067855087233, -1.0112546305316845, 0.14918677544445172 ],\n\t\t[ 0.3875265432361372, 0.6214474419314753, -0.008973985167612521 ],\n\t\t[ -0.01584149884933386, -0.03412293802851557, 1.0499644368778496 ],\n\t],\n});\n\n// prettier-ignore\nObject.assign(WHITES, {\n\t// whitepoint values from ASTM E308-01 with 10nm spacing, 1931 2 degree observer\n\t// all normalized to Y (luminance) = 1.00000\n\t// Illuminant A is a tungsten electric light, giving a very warm, orange light.\n\tA: [1.09850, 1.00000, 0.35585],\n\n\t// Illuminant C was an early approximation to daylight: illuminant A with a blue filter.\n\tC: [0.98074, 1.000000, 1.18232],\n\n\t// The daylight series of illuminants simulate natural daylight.\n\t// The color temperature (in degrees Kelvin/100) ranges from\n\t// cool, overcast daylight (D50) to bright, direct sunlight (D65).\n\tD55: [0.95682, 1.00000, 0.92149],\n\tD75: [0.94972, 1.00000, 1.22638],\n\n\t// Equal-energy illuminant, used in two-stage CAT16\n\tE: [1.00000, 1.00000, 1.00000],\n\n\t// The F series of illuminants represent fluorescent lights\n\tF2: [0.99186, 1.00000, 0.67393],\n\tF7: [0.95041, 1.00000, 1.08747],\n\tF11: [1.00962, 1.00000, 0.64350],\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport \"../CATs.js\"; // because of the funky whitepoint\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// The ACES whitepoint\n// see TB-2018-001 Derivation of the ACES White Point CIE Chromaticity Coordinates\n// also https://github.com/ampas/aces-dev/blob/master/documents/python/TB-2018-001/aces_wp.py\n// Similar to D60\nWHITES.ACES = [0.32168 / 0.33767, 1.0, (1.0 - 0.32168 - 0.33767) / 0.33767];\n\n// convert an array of linear-light ACEScc values to CIE XYZ\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.6624541811085053, 0.13400420645643313, 0.1561876870049078 ],\n\t[ 0.27222871678091454, 0.6740817658111484, 0.05368951740793705 ],\n\t[ -0.005574649490394108, 0.004060733528982826, 1.0103391003129971 ],\n];\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 1.6410233796943257, -0.32480329418479, -0.23642469523761225 ],\n\t[ -0.6636628587229829, 1.6153315916573379, 0.016756347685530137 ],\n\t[ 0.011721894328375376, -0.008284441996237409, 0.9883948585390215 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"acescg\",\n\tcssId: \"--acescg\",\n\tname: \"ACEScg\",\n\n\t// ACEScg – A scene-referred, linear-light encoding of ACES Data\n\t// https://docs.acescentral.com/specifications/acescg/\n\t// uses the AP1 primaries, see section 4.3.1 Color primaries\n\tcoords: {\n\t\tr: {\n\t\t\trange: [0, 65504],\n\t\t\tname: \"Red\",\n\t\t},\n\t\tg: {\n\t\t\trange: [0, 65504],\n\t\t\tname: \"Green\",\n\t\t},\n\t\tb: {\n\t\t\trange: [0, 65504],\n\t\t\tname: \"Blue\",\n\t\t},\n\t},\n\n\treferred: \"scene\",\n\n\twhite: WHITES.ACES,\n\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n\n// export default Color;\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport \"../CATs.js\"; // because of the funky whitepoint\nimport ACEScg from \"./acescg.js\";\n\nconst ε = 2 ** -16;\n\n// the smallest value which, in the 32bit IEEE 754 float encoding,\n// decodes as a non-negative value\nconst ACES_min_nonzero = -0.35828683;\n\n// brightest encoded value, decodes to 65504\nconst ACES_cc_max = (Math.log2(65504) + 9.72) / 17.52; // 1.468\n\nexport default new RGBColorSpace({\n\tid: \"acescc\",\n\tcssId: \"--acescc\",\n\tname: \"ACEScc\",\n\t// see S-2014-003 ACEScc – A Logarithmic Encoding of ACES Data\n\t// https://docs.acescentral.com/specifications/acescc/\n\t// uses the AP1 primaries, see section 4.3.1 Color primaries\n\n\t// Appendix A: \"Very small ACES scene referred values below 7 1/4 stops\n\t// below 18% middle gray are encoded as negative ACEScc values.\n\t// These values should be preserved per the encoding in Section 4.4\n\t// so that all positive ACES values are maintained.\"\n\tcoords: {\n\t\tr: {\n\t\t\trange: [ACES_min_nonzero, ACES_cc_max],\n\t\t\tname: \"Red\",\n\t\t},\n\t\tg: {\n\t\t\trange: [ACES_min_nonzero, ACES_cc_max],\n\t\t\tname: \"Green\",\n\t\t},\n\t\tb: {\n\t\t\trange: [ACES_min_nonzero, ACES_cc_max],\n\t\t\tname: \"Blue\",\n\t\t},\n\t},\n\treferred: \"scene\",\n\n\tbase: ACEScg,\n\t// from section 4.4.2 Decoding Function\n\ttoBase (RGB) {\n\t\tconst low = (9.72 - 15) / 17.52; // -0.3014\n\n\t\treturn RGB.map(function (val) {\n\t\t\tif (val <= low) {\n\t\t\t\treturn (2 ** (val * 17.52 - 9.72) - ε) * 2; // very low values, below -0.3014\n\t\t\t}\n\t\t\telse if (val < ACES_cc_max) {\n\t\t\t\treturn 2 ** (val * 17.52 - 9.72);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// val >= ACES_cc_max\n\t\t\t\treturn 65504;\n\t\t\t}\n\t\t});\n\t},\n\n\t// Non-linear encoding function from S-2014-003, section 4.4.1 Encoding Function\n\tfromBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tif (val <= 0) {\n\t\t\t\treturn (Math.log2(ε) + 9.72) / 17.52; // -0.3584\n\t\t\t}\n\t\t\telse if (val < ε) {\n\t\t\t\treturn (Math.log2(ε + val * 0.5) + 9.72) / 17.52;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// val >= ε\n\t\t\t\treturn (Math.log2(val) + 9.72) / 17.52;\n\t\t\t}\n\t\t});\n\t},\n\t// encoded media white (rgb 1,1,1) => linear [ 222.861, 222.861, 222.861 ]\n\t// encoded media black (rgb 0,0,0) => linear [ 0.0011857, 0.0011857, 0.0011857]\n});\n","/**\n * @packageDocumentation\n * Re-exports all the spaces built into Color.js.\n */\nexport { default as XYZ_D65 } from \"./xyz-d65.js\";\nexport { default as XYZ_D50 } from \"./xyz-d50.js\";\nexport { default as XYZ_ABS_D65 } from \"./xyz-abs-d65.js\";\nexport { default as Lab_D65 } from \"./lab-d65.js\";\nexport { default as Lab } from \"./lab.js\";\nexport { default as LCH } from \"./lch.js\";\nexport { default as sRGB_Linear } from \"./srgb-linear.js\";\nexport { default as sRGB } from \"./srgb.js\";\nexport { default as HSL } from \"./hsl.js\";\nexport { default as HWB } from \"./hwb.js\";\nexport { default as HSV } from \"./hsv.js\";\nexport { default as P3_Linear } from \"./p3-linear.js\";\nexport { default as P3 } from \"./p3.js\";\nexport { default as A98RGB_Linear } from \"./a98rgb-linear.js\";\nexport { default as A98RGB } from \"./a98rgb.js\";\nexport { default as ProPhoto_Linear } from \"./prophoto-linear.js\";\nexport { default as ProPhoto } from \"./prophoto.js\";\nexport { default as REC_2020_Linear } from \"./rec2020-linear.js\";\nexport { default as REC_2020 } from \"./rec2020.js\";\nexport { default as REC_2020_Scene_Referred } from \"./rec2020-oetf.js\";\nexport { default as OKLab } from \"./oklab.js\";\nexport { default as OKLCH } from \"./oklch.js\";\nexport { default as OKLrab } from \"./oklrab.js\";\nexport { default as OKLrCH } from \"./oklrch.js\";\nexport { default as Okhsl } from \"./okhsl.js\";\nexport { default as Okhsv } from \"./okhsv.js\";\nexport { default as CAM16_JMh } from \"./cam16.js\";\nexport { default as HCT } from \"./hct.js\";\nexport { default as Luv } from \"./luv.js\";\nexport { default as LCHuv } from \"./lchuv.js\";\nexport { default as HSLuv } from \"./hsluv.js\";\nexport { default as HPLuv } from \"./hpluv.js\";\n\nexport * from \"./index-fn-hdr.js\";\n","/**\n * @packageDocumentation\n * @class Color\n * Class that represents a single color.\n * All of Color.js’s tree-shakeable methods are also available as instance methods on this class,\n * as well as static methods that take the color as the first argument.\n */\n\nimport * as util from \"./util.js\";\nimport hooks from \"./hooks.js\";\nimport defaults from \"./defaults.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport { WHITES } from \"./adapt.js\";\nimport {\n\tgetColor,\n\ttryColor,\n\tparse,\n\tto,\n\tserialize,\n\tinGamut,\n\ttoGamut,\n\tdistance,\n\tdeltas,\n\tequals,\n\tget,\n\tgetAll,\n\tset,\n\tsetAll,\n\tdisplay,\n} from \"./index-fn.js\";\n\nimport \"./spaces/xyz-d50.js\";\nimport \"./spaces/srgb.js\";\n\nexport default class Color {\n\t/**\n\t * Creates an instance of Color.\n\t * Signatures:\n\t * - `new Color(stringToParse)`\n\t * - `new Color(otherColor)`\n\t * - `new Color({space, coords, alpha})`\n\t * - `new Color(space, coords, alpha)`\n\t * - `new Color(spaceId, coords, alpha)`\n\t */\n\tconstructor (...args) {\n\t\tlet color;\n\n\t\tif (args.length === 1) {\n\t\t\tlet parseMeta = {};\n\t\t\t// Clone simple objects to avoid mutating original in getColor\n\t\t\tif (\n\t\t\t\ttypeof args[0] === \"object\" &&\n\t\t\t\tObject.getPrototypeOf(args[0]).constructor === Object\n\t\t\t) {\n\t\t\t\targs[0] = { ...args[0] };\n\t\t\t}\n\t\t\tcolor = getColor(args[0], { parseMeta });\n\n\t\t\tif (parseMeta.format) {\n\t\t\t\t// Color actually came from a string\n\t\t\t\tthis.parseMeta = parseMeta;\n\t\t\t}\n\t\t}\n\n\t\tlet space, coords, alpha;\n\n\t\tif (color) {\n\t\t\tspace = color.space || color.spaceId;\n\t\t\tcoords = color.coords;\n\t\t\talpha = color.alpha;\n\t\t}\n\t\telse {\n\t\t\t// default signature new Color(ColorSpace, array [, alpha])\n\t\t\t[space, coords, alpha] = args;\n\t\t}\n\n\t\tObject.defineProperty(this, \"space\", {\n\t\t\tvalue: ColorSpace.get(space),\n\t\t\twritable: false,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true, // see note in https://262.ecma-international.org/8.0/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver\n\t\t});\n\n\t\tthis.coords = coords ? coords.slice() : [0, 0, 0];\n\n\t\t// Clamp alpha to [0, 1]\n\t\tthis.alpha = util.isNone(alpha) ? alpha : alpha === undefined ? 1 : util.clamp(0, alpha, 1);\n\n\t\t// Define getters and setters for each coordinate\n\t\tfor (let id in this.space.coords) {\n\t\t\tObject.defineProperty(this, id, {\n\t\t\t\tget: () => this.get(id),\n\t\t\t\tset: value => this.set(id, value),\n\t\t\t});\n\t\t}\n\t}\n\n\tget spaceId () {\n\t\treturn this.space.id;\n\t}\n\n\tclone () {\n\t\treturn new Color(this.space, this.coords, this.alpha);\n\t}\n\n\ttoJSON () {\n\t\treturn {\n\t\t\tspaceId: this.spaceId,\n\t\t\tcoords: this.coords,\n\t\t\talpha: this.alpha,\n\t\t};\n\t}\n\n\tdisplay (...args) {\n\t\tlet ret = display(this, ...args);\n\n\t\t// Convert color object to Color instance\n\t\tret.color = new Color(ret.color);\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Get a color from the argument(s) passed\n\t * Basically gets us the same result as new Color(color) but doesn't clone an existing color object\n\t */\n\tstatic get (color, ...args) {\n\t\tif (util.isInstance(color, this)) {\n\t\t\treturn color;\n\t\t}\n\n\t\treturn new Color(color, ...args);\n\t}\n\n\t/**\n\t * Get a color instance from the argument passed or `null` if resolution fails (instead of throwing an error).\n\t * Additionally, it supports passing an element to resolve complex CSS colors through the DOM (slow).\n\t * @see {@link tryColor} for more details\n\t */\n\tstatic try (color, options) {\n\t\tif (util.isInstance(color, this)) {\n\t\t\treturn color;\n\t\t}\n\n\t\tlet ret = tryColor(color, options);\n\n\t\tif (ret) {\n\t\t\treturn new Color(ret);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic defineFunction (name, code, o = code) {\n\t\tlet { instance = true, returns } = o;\n\n\t\tlet func = function (...args) {\n\t\t\tlet ret = code(...args);\n\n\t\t\tif (returns === \"color\") {\n\t\t\t\tret = Color.get(ret);\n\t\t\t}\n\t\t\telse if (returns === \"function<color>\") {\n\t\t\t\tlet f = ret;\n\t\t\t\tret = function (...args) {\n\t\t\t\t\tlet ret = f(...args);\n\t\t\t\t\treturn Color.get(ret);\n\t\t\t\t};\n\t\t\t\t// Copy any function metadata\n\t\t\t\tObject.assign(ret, f);\n\t\t\t}\n\t\t\telse if (returns === \"array<color>\") {\n\t\t\t\tret = ret.map(c => Color.get(c));\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t};\n\n\t\tif (!(name in Color)) {\n\t\t\tColor[name] = func;\n\t\t}\n\n\t\tif (instance) {\n\t\t\tColor.prototype[name] = function (...args) {\n\t\t\t\treturn func(this, ...args);\n\t\t\t};\n\t\t}\n\t}\n\n\tstatic defineFunctions (o) {\n\t\tfor (let name in o) {\n\t\t\tColor.defineFunction(name, o[name], o[name]);\n\t\t}\n\t}\n\n\tstatic extend (exports) {\n\t\tif (exports.register) {\n\t\t\texports.register(Color);\n\t\t}\n\t\telse {\n\t\t\t// No register method, just add the module's functions\n\t\t\tfor (let name in exports) {\n\t\t\t\tColor.defineFunction(name, exports[name]);\n\t\t\t}\n\t\t}\n\t}\n}\n\nColor.defineFunctions({\n\tget,\n\tgetAll,\n\tset,\n\tsetAll,\n\tto,\n\tequals,\n\tinGamut,\n\ttoGamut,\n\tdistance,\n\tdeltas,\n\ttoString: serialize,\n});\n\nObject.assign(Color, {\n\tutil,\n\thooks,\n\tWHITES,\n\tSpace: ColorSpace,\n\tspaces: ColorSpace.registry,\n\tparse,\n\n\t// Global defaults one may want to configure\n\tdefaults,\n});\n","/**\n * @packageDocumentation\n * This module contains {@link spaces a namespace} with all the spaces built into Color.js.\n */\nimport ColorSpace from \"../ColorSpace.js\";\nimport * as spaces from \"./index-fn.js\";\n\nfor (let key of Object.keys(spaces)) {\n\tColorSpace.register(spaces[key]);\n}\n\nexport * as spaces from \"./index-fn.js\";\nexport default ColorSpace;\n","/**\n * This plugin defines getters and setters for color[spaceId]\n * e.g. color.lch on *any* color gives us the lch coords\n */\nimport ColorSpace from \"./ColorSpace.js\";\nimport Color from \"./color.js\";\nimport hooks from \"./hooks.js\";\n\n// Add space accessors to existing color spaces\nfor (let id in ColorSpace.registry) {\n\taddSpaceAccessors(id, ColorSpace.registry[id]);\n}\n\n// Add space accessors to color spaces not yet created\nhooks.add(\"colorspace-init-end\", space => {\n\taddSpaceAccessors(space.id, space);\n\tspace.aliases?.forEach(alias => {\n\t\taddSpaceAccessors(alias, space);\n\t});\n});\n\nfunction addSpaceAccessors (id, space) {\n\tlet propId = id.replace(/-/g, \"_\");\n\n\tObject.defineProperty(Color.prototype, propId, {\n\t\t// Convert coords to coords in another colorspace and return them\n\t\t// Source colorspace: this.spaceId\n\t\t// Target colorspace: id\n\t\tget () {\n\t\t\tlet ret = this.getAll(id);\n\n\t\t\tif (typeof Proxy === \"undefined\") {\n\t\t\t\t// If proxies are not supported, just return a static array\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Enable color.spaceId.coordName syntax\n\t\t\tlet proxy = new Proxy(ret, {\n\t\t\t\thas: /** @param {string} property */ (obj, property) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tColorSpace.resolveCoord([space, property]);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {}\n\n\t\t\t\t\treturn Reflect.has(obj, property);\n\t\t\t\t},\n\t\t\t\tget: (obj, property, receiver) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tproperty &&\n\t\t\t\t\t\ttypeof property !== \"symbol\" &&\n\t\t\t\t\t\t!(property in obj) &&\n\t\t\t\t\t\tproperty in proxy\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet { index } = ColorSpace.resolveCoord([space, property]);\n\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\treturn obj[index];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.get(obj, property, receiver);\n\t\t\t\t},\n\t\t\t\tset: (obj, property, value, receiver) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(property && typeof property !== \"symbol\" && !(property in obj)) ||\n\t\t\t\t\t\tNumber(property) >= 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet { index } = ColorSpace.resolveCoord([\n\t\t\t\t\t\t\tspace,\n\t\t\t\t\t\t\t/** @type {string} */ (property),\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\tobj[index] = value;\n\n\t\t\t\t\t\t\t// Update color.coords\n\t\t\t\t\t\t\tthis.setAll(id, obj);\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.set(obj, property, value, receiver);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn proxy;\n\t\t},\n\t\t// Convert coords in another colorspace to internal coords and set them\n\t\t// Target colorspace: this.spaceId\n\t\t// Source colorspace: id\n\t\tset (coords) {\n\t\t\tthis.setAll(id, coords);\n\t\t},\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t});\n}\n","/**\n * Entry point for the OOP flavor of the API\n * Import as `colorjs.io`\n */\nimport Color from \"./color.js\";\n\n// Import all color spaces\nimport \"./spaces/index.js\";\n\n// Import all DeltaE methods\nimport deltaE from \"./deltaE.js\";\nimport deltaEMethods from \"./deltaE/index.js\";\n\nColor.extend(deltaEMethods);\nColor.extend({ deltaE });\nObject.assign(Color, { deltaEMethods });\n\n// Import optional modules\nimport * as variations from \"./variations.js\";\nColor.extend(variations);\n\nimport contrast from \"./contrast.js\";\nColor.extend({ contrast });\n\nimport * as chromaticity from \"./chromaticity.js\";\nColor.extend(chromaticity);\n\nimport * as luminance from \"./luminance.js\";\nColor.extend(luminance);\n\nimport * as interpolation from \"./interpolation.js\";\nColor.extend(interpolation);\n\nimport * as contrastMethods from \"./contrast/index.js\";\nColor.extend(contrastMethods);\n\nimport \"./CATs.js\";\nimport \"./space-accessors.js\";\n\n// Re-export everything\nexport default Color;\n","/**\n * @name Darkmode主入口\n *\n * @function run 初始化Dark Mode配置并运行Dark Mode处理\n * @param {DOM Object Array} nodes 要处理的节点列表\n * @param {Object} opt Dark Mode配置,详见init配置说明\n * @return void\n *\n * @function init 初始化Dark Mode配置\n * @param {Function} opt.begin 开始处理时触发的回调\n * @param {Function} opt.showFirstPage 首屏处理完成时触发的回调\n * @param {Function} opt.error 发生error时触发的回调\n * @param {string} opt.mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @param {Object} opt.whitelist 节点白名单\n * @param {Array} opt.whitelist.tagName 标签名列表\n * @param {Array} opt.whitelist.attribute 属性列表\n * @param {boolean} opt.needJudgeFirstPage 是否需要判断首屏\n * @param {boolean} opt.delayBgJudge 是否延迟背景判断\n * @param {DOM Object} opt.container 延迟运行js时使用的容器\n * @param {string} opt.cssSelectorsPrefix css选择器前缀\n * @param {string} opt.defaultLightTextColor 非Dark Mode下字体颜色\n * @param {string} opt.defaultLightBgColor 非Dark Mode下背景颜色\n * @param {string} opt.defaultDarkTextColor Dark Mode下字体颜色\n * @param {string} opt.defaultDarkBgColor Dark Mode下背景颜色\n * @return void\n *\n * @function convertBg 处理背景\n * @param {DOM Object Array} nodes 要处理的节点列表\n * @return void\n *\n * @function updateStyle 更新节点Dark Mode样式\n * @param {DOM Object} node 要更新的节点\n * @param {Object} styles 更新的样式键值对对象,如:{ color: '#ddd' }\n * @return void\n *\n * @function getContrast 获取两个颜色的对比度\n * @param {string} color1 要计算颜色对比度的颜色1,支持css颜色格式\n * @param {string} color2 要计算颜色对比度的颜色2,支持css颜色格式\n * @return {number} 颜色对比度,取值范围为`[1, 21]`\n *\n * @function extend 挂载插件\n * @param {Array} pluginList 插件列表\n * @return void\n *\n */\n\n// 常量\nimport {\n MEDIA_QUERY,\n CLASS_PREFIX,\n HTML_CLASS,\n\n COLORATTR,\n BGCOLORATTR,\n ORIGINAL_COLORATTR,\n ORIGINAL_BGCOLORATTR,\n BGIMAGEATTR,\n COMPLEMENTARY_BGIMAGECOLORATTR,\n\n PAGE_HEIGHT,\n} from './modules/constant';\nconst classReg = new RegExp(`${CLASS_PREFIX}[^ ]+`, 'g');\n\n// Darkmode配置\nimport config from './modules/config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils, // 样式相关操作工具对象\n domUtils, // 节点相关操作工具对象\n sdk\n} from './modules/global';\n\nimport {\n getChildrenAndIt\n} from './modules/domUtils';\n\n// Dark Mode切换\nlet mql = null;\nconst switchToDarkmode = (mqlObj, opt = {\n type: 'dom'\n}) => {\n opt.force && (cssUtils.isFinish = false); // 如果是强制运行Dark Mode处理逻辑,则重置为未运行\n\n if (cssUtils.isFinish) return; // 已运行过Dark Mode处理逻辑则不再运行\n\n try {\n sdk.isDarkmode = config.mode ? (config.mode === 'dark') : mqlObj.matches;\n\n if (opt.type === 'dom') { // 处理节点\n sdk.isDarkmode && typeof config.begin === 'function' && config.begin(domUtils.hasDelay());\n\n Array.prototype.forEach.call(domUtils.get(), node => {\n if (sdk.isDarkmode && node.className && typeof node.className === 'string') {\n node.className = node.className.replace(classReg, ''); // 过滤掉原有的Dark Mode class,避免外部复制文章时把文章内的Dark Mode class也复制过去导致新文章在Dark Mode下样式错乱\n }\n\n if (sdk.isDarkmode || plugins.length) {\n if (!config.needJudgeFirstPage) { // 不需要判断首屏\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else { // 判断首屏\n const rect = node.getBoundingClientRect();\n const top = rect.top;\n const bottom = rect.bottom;\n if (top <= 0 && bottom <= 0) { // 首屏前面\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else if ((top > 0 && top < PAGE_HEIGHT) || (bottom > 0 && bottom < PAGE_HEIGHT)) { // 首屏\n domUtils.addFirstPageNode(node); // 记录首屏节点\n cssUtils.addCss(sdk.convert(node), true); // 写入首屏样式\n } else { // 首屏后面,理论上,这里最多只会进来一次\n config.needJudgeFirstPage = false; // 至此,不需要再判断首屏了\n\n // 显示首屏\n cssUtils.writeStyle(true); // 写入首屏样式表\n domUtils.showFirstPageNodes(); // 显示首屏节点\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n }\n }\n }\n });\n\n plugins.loopTimes++;\n } else if (opt.type === 'bg') { // 处理背景\n sdk.isDarkmode && tnQueue.forEach(text => bgStack.contains(text, bg => {\n cssUtils.addCss(cssUtils.genCss(bg.className, bg.cssKV)); // 写入非首屏样式\n typeof bg.cb === 'function' && bg.cb(bg);\n\n // 还得处理该背景下的所有新老节点\n const els = [bg.elOld];\n bg.elOld !== bg.el && els.push(bg.el);\n els.forEach(el => {\n const inheritAttrs = [\n [COLORATTR, el[COLORATTR] ?? null],\n [BGCOLORATTR, el[BGCOLORATTR] ?? null],\n [ORIGINAL_COLORATTR, el[ORIGINAL_COLORATTR] ?? null],\n [ORIGINAL_BGCOLORATTR, el[ORIGINAL_BGCOLORATTR] ?? null],\n [BGIMAGEATTR, el[BGIMAGEATTR] ?? null],\n [COMPLEMENTARY_BGIMAGECOLORATTR, el[COMPLEMENTARY_BGIMAGECOLORATTR] ?? null],\n ];\n const children = getChildrenAndIt(el, true);\n children.forEach(child => { // 重置继承属性\n inheritAttrs.forEach(([attr, value]) => {\n if (value === null) {\n delete child[attr];\n } else {\n child[attr] = value;\n }\n });\n });\n children.forEach(child => { // 重新运行Dark Mode处理逻辑\n cssUtils.addCss(sdk.convert(child, undefined, false, true));\n });\n });\n }));\n }\n\n if (config.needJudgeFirstPage || (!config.needJudgeFirstPage && !domUtils.showFirstPage)) {\n // config.needJudgeFirstPage === ture,表示需要判断首屏但是正文长度没超过一屏\n // config.needJudgeFirstPage === false && domUtils.showFirstPage === false,表示不需要判断首屏且没有做首屏优化\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n }\n cssUtils.writeStyle(); // 写入非首屏样式表\n domUtils.emptyFirstPageNodes(); // 清空记录的首屏节点\n\n if (!sdk.isDarkmode) { // 非Dark Mode\n // 首次加载页面时为非Dark Mode,标记为不需要判断首屏\n config.needJudgeFirstPage = false;\n\n // 首次加载页面时为非Dark Mode,标记为不延迟判断背景\n config.delayBgJudge = false;\n\n if (config.container === null && opt.type === 'dom' && domUtils.length) {\n domUtils.delay(); // 将节点转移到延迟处理队列里\n }\n }\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n};\n\n// 初始化Dark Mode配置并运行Dark Mode处理\nexport function run(nodes, opt) {\n init(opt); // 初始化配置\n\n domUtils.set(nodes);\n\n switchToDarkmode(mql, {\n force: true,\n type: 'dom'\n });\n};\n\n// 初始化Dark Mode配置\nexport function init(opt = {}) {\n if (config.hasInit) return; // 只可设置一次配置\n\n config.hasInit = true; // 记录为配置已设置\n\n const tagName = config.whitelist.tagName;\n const attribute = config.whitelist.attribute;\n if (opt.whitelist) {\n opt.whitelist.tagName instanceof Array && opt.whitelist.tagName.forEach(item => {\n item = item.toUpperCase();\n tagName.indexOf(item) === -1 && tagName.push(item);\n });\n opt.whitelist.attribute instanceof Array && opt.whitelist.attribute.forEach(item => {\n attribute.indexOf(item) === -1 && attribute.push(item);\n });\n }\n\n if (['dark', 'light'].indexOf(opt.mode) > -1) {\n config.set('string', opt, 'mode');\n opt.mode === 'dark' && document.getElementsByTagName('html')[0].classList.add(HTML_CLASS);\n }\n\n config.set('function', opt, 'begin');\n config.set('function', opt, 'showFirstPage');\n config.set('function', opt, 'error');\n config.set('boolean', opt, 'needJudgeFirstPage');\n config.set('boolean', opt, 'delayBgJudge');\n config.set('dom', opt, 'container');\n config.set('string', opt, 'cssSelectorsPrefix');\n config.set('string', opt, 'defaultLightTextColor');\n config.set('string', opt, 'defaultLightBgColor');\n config.set('string', opt, 'defaultDarkTextColor');\n config.set('string', opt, 'defaultDarkBgColor');\n\n sdk.init();\n\n if (!config.mode && mql === null && window.matchMedia) {\n // 匹配媒体查询\n mql = window.matchMedia(MEDIA_QUERY);\n mql.addListener(switchToDarkmode); // 监听\n }\n};\n\n// 处理背景\nexport function convertBg(nodes) {\n domUtils.set(nodes);\n\n if (config.container !== null) {\n bgStack.update(nodes); // 更新背景堆栈\n tnQueue.update(nodes); // 更新文字队列\n }\n\n switchToDarkmode(mql, {\n force: true,\n type: 'bg'\n });\n};\n\n// 更新节点Dark Mode样式\nexport function updateStyle(node, styles) {\n if (!cssUtils.isFinish) return; // 没有运行过Dark Mode处理逻辑则无需运行\n cssUtils.addCss(sdk.convert(node, styles ? Object.keys(styles).map(key => [key, styles[key]]) : undefined, true), false);\n cssUtils.writeStyle();\n};\n\n// 获取两个颜色的对比度\nexport function getContrast(color1, color2) {\n return sdk.getContrast(color1, color2);\n};\n\n// 挂载插件\nexport function extend(pluginList) {\n pluginList.forEach(plugin => plugins.extend(plugin));\n};\n","/**\n * @name 需要判断位置的背景节点堆栈\n *\n * @class BgNodeStack\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @method push 背景节点入栈\n * @param {DOM Object} el 背景节点对象\n * @param {string} cssKV css键值对\n * @return void\n *\n * @method contains 判断节点是否在背景节点的区域\n * @param {DOM Object} el 要判断的节点对象(非背景节点)\n * @param {Function} callback 如果在背景节点区域内,则执行该回调函数\n * @return void\n *\n * @method update 更新堆栈的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n * @return void\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class BgNodeStack {\n _stack = []; // 需要判断位置的背景堆栈,{ elOld, el, className, cssKV, updated, rect }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n this.classNameReg = new RegExp(`${this._prefix}\\\\d+`);\n }\n\n // 背景节点入栈\n push(el, cssKV, cb) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._stack.unshift({\n elOld: el,\n el,\n className,\n cssKV,\n updated: !config.delayBgJudge,\n cb\n });\n }\n\n // 判断节点是否在背景节点的区域\n contains(el, callback) {\n const rect = el.getBoundingClientRect();\n const idxStack = [];\n\n this._stack.forEach((item, i) => {\n if (item.updated) {\n if (!item.rect) item.rect = item.el.getBoundingClientRect();\n\n const bgRect = item.rect;\n if (!(\n rect.top >= bgRect.bottom\n || rect.bottom <= bgRect.top\n || rect.left >= bgRect.right\n || rect.right <= bgRect.left\n )) { // 表示节点在背景图内\n idxStack.unshift(i);\n }\n }\n });\n\n while (idxStack.length) {\n const idx = idxStack.shift();\n const item = this._stack.splice(idx, 1)[0];\n typeof callback === 'function' && callback(item);\n }\n }\n\n // 更新堆栈的节点对象,主要解决前后节点不一致的问题\n update(els) {\n this._stack.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n","/**\n * @name 颜色操作相关API\n *\n * @function ColorParser 实例化Color对象,传参非法时返回null\n * @param {string} color css色值\n * @return {Color Object | null} 实例化结果\n *\n * @function parseColorName 处理颜色,包括清除!important和转换英文定义颜色\n * @param {string} color css色值\n * @param {boolean} supportTransparent 是否支持转换transparent\n * @return {string} 处理后的rgb(a)格式css色值\n *\n * @function parseWebkitFillColorAndStrokeColor 处理-webkit-fill-color和-webkit-text-stroke-color,返回处理后的色值,无则返回空字符串\n * @param {string} color css色值\n * @return {string} 处理后的rgb(a)格式css色值,无则返回空字符串\n *\n * @function mixColors 计算混合颜色\n * @param {string} colors 用于计算的颜色数组\n * @param {string} type 使用的混合颜色算法,支持 mix(默认) | normal | multiply | screen | overlay | darken | lighten | colorDodge | colorBurn | hardLight | softLight | difference | exclusion | hue | saturation | color | luminosity\n * @return {Color Object | null} 混合结果\n *\n * @function getColorPerceivedBrightness 计算感知亮度\n * @param {RGB Array} rgb 要计算的颜色rgb数组,如:[255, 0, 0]\n * @return {number} 感知亮度\n *\n * @function adjustBrightnessTo 调整为指定感知亮度\n * @param {number} target 指定的感知亮度值\n * @param {RGB Array} rgb 要调整的颜色rgb数组,如:[255, 0, 0]\n * @return {Color Object} 调整后的颜色\n *\n */\n\nimport Color from 'color';\nimport ColorName from 'color-name';\nimport * as ColorBlend from 'color-blend';\nimport ColorJS from 'colorjs.io';\n\n// 常量\nimport {\n IMPORTANT_REGEXP,\n COLOR_REGEXP\n} from './constant';\n\nconst COLOR_NAME = {\n ...ColorName,\n windowtext: [0, 0, 0], // 补上这个colorName\n transparent: [255, 255, 255, 0], // 支持透明,暂定用白色透明度0来表示\n};\nconst COLOR_NAME_REG = new RegExp(Object.keys(COLOR_NAME).map(colorName => `\\\\b${colorName}\\\\b`).join('|'), 'ig'); // 生成正则表达式来匹配这些colorName\n\n// Color对象 => ColorBlend对象\nconst color2ColorBlend = color => {\n const obj = color.object();\n obj.a = obj.alpha || 1;\n delete obj.alpha;\n return obj;\n};\n\n// ColorBlend对象 => Color对象\nconst colorBlend2Color = colorBlend => {\n colorBlend.alpha = colorBlend.a;\n delete colorBlend.a;\n return ColorParser(colorBlend);\n};\n\n// 实例化Color对象,传参非法时返回null\nexport const ColorParser = color => {\n let res = null;\n try {\n res = color instanceof Color ? color : Color(color);\n } catch (e) {\n try {\n res = ColorParser(new ColorJS(color).to('srgb').toString()); // 对于lch、oklch、lab、oklab、color等色值尝试使用colorjs.io来解析,然后再转成Color对象\n } catch (e) {\n console.log(`ignore the invalid color: \\`${color}\\``);\n }\n }\n return res;\n};\n\n// 处理颜色,包括清除!important和转换英文定义颜色\nexport const parseColorName = (color, supportTransparent) => color.replace(IMPORTANT_REGEXP, '').replace(COLOR_NAME_REG, match => {\n if (!supportTransparent && match === 'transparent') return match; // 如果不支持转换transparent,直接返回transparent\n\n const color = COLOR_NAME[match.toLowerCase()];\n return `${color.length > 3 ? 'rgba' : 'rgb'}(${color.toString()})`;\n});\n\n// 处理-webkit-fill-color和-webkit-text-stroke-color,返回处理后的色值,无则返回空字符串\nexport const parseWebkitFillColorAndStrokeColor = color => {\n const newValue = parseColorName(color);\n return COLOR_REGEXP.test(newValue) ? newValue : '';\n};\n\n// 计算混合颜色\nexport const mixColors = (colors, type = 'mix') => {\n if (Object.prototype.toString.call(colors) !== '[object Array]' || colors.length < 1) return null;\n if (colors.length === 1) return colors[0];\n\n let color1 = ColorParser(colors.shift());\n let color2 = ColorParser(colors.shift());\n while (color2) {\n if (!color1 && color2) { // 如果当前色值非法,混入色值合法,则直接使用混入色值\n color1 = color2;\n } else if (!color1 && !color2) { // 如果两个色值都非法,则使用下一批色值\n if (colors.length === 0) break;\n color1 = ColorParser(colors.shift());\n } else if (color1 && color2) { // 如果两个色值都合法,执行mix\n color1 = (type === 'mix'\n ? color1.mix(color2, color2.alpha())\n : colorBlend2Color(ColorBlend[type](color2ColorBlend(color1), color2ColorBlend(color2))));\n } // 如果当前色值合法,混入色值非法,无需处理\n\n if (colors.length === 0) break;\n color2 = ColorParser(colors.shift());\n }\n\n return color1 || null;\n};\n\n// 计算感知亮度\nexport const getColorPerceivedBrightness = rgb => (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\n// 调整为指定感知亮度\nexport const adjustBrightnessTo = (target, rgb) => {\n const relativeBrightnessRatio = target / getColorPerceivedBrightness(rgb);\n let newTextR = Math.min(255, rgb[0] * relativeBrightnessRatio);\n let newTextG = Math.min(255, rgb[1] * relativeBrightnessRatio);\n let newTextB = Math.min(255, rgb[2] * relativeBrightnessRatio);\n if (newTextG === 0 || newTextR === 255 || newTextB === 255) {\n newTextG = (target * 1000 - newTextR * 299 - newTextB * 114) / 587;\n } else if (newTextR === 0) {\n newTextR = (target * 1000 - newTextG * 587 - newTextB * 114) / 299;\n } else if (newTextB === 0 || newTextG === 255) {\n newTextB = (target * 1000 - newTextR * 299 - newTextG * 587) / 114;\n }\n return Color.rgb(newTextR, newTextG, newTextB);\n};\n","/**\n * @name Darkmode配置\n *\n * @attr {boolean} hasInit 是否初始化过配置\n * @attr {Function} begin 开始处理时触发的回调\n * @attr {Function} showFirstPage 首屏处理完成时触发的回调\n * @attr {Function} error 发生error时触发的回调\n * @attr {string} mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @attr {Object} whitelist 节点白名单\n * @attr {string Array} whitelist.tagName 标签名列表\n * @attr {string Array} whitelist.attribute 属性列表\n * @attr {boolean} needJudgeFirstPage 是否需要判断首屏\n * @attr {boolean} delayBgJudge 是否延迟背景判断\n * @attr {DOM Object} container 延迟运行js时使用的容器\n * @attr {string} cssSelectorsPrefix css选择器前缀\n * @attr {string} defaultLightTextColor 非Dark Mode下字体颜色\n * @attr {string} defaultLightBgColor 非Dark Mode下背景颜色\n * @attr {string} defaultDarkTextColor Dark Mode下字体颜色\n * @attr {string} defaultDarkBgColor Dark Mode下背景颜色\n *\n * @method set 设置配置\n * @param {string} type 要处理的节点\n * @param {Object} opt 传入的配置对象\n * @param {string} key 配置名\n * @return void\n *\n */\n\n// 常量\nimport {\n DEFAULT_LIGHT_TEXTCOLOR,\n DEFAULT_LIGHT_BGCOLOR,\n DEFAULT_DARK_TEXTCOLOR,\n DEFAULT_DARK_BGCOLOR\n} from './constant';\n\nconst config = {\n hasInit: false, // 是否初始化过配置\n\n // hooks\n begin: null, // 开始处理时触发的回调\n showFirstPage: null, // 首屏处理完成时触发的回调\n error: null, // 发生error时触发的回调\n\n mode: '', // 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n whitelist: { // 节点白名单\n tagName: ['MPCPS', 'IFRAME'], // 标签名列表\n attribute: [], // 属性列表\n },\n needJudgeFirstPage: true, // 是否需要判断首屏\n delayBgJudge: false, // 是否延迟背景判断\n container: null, // 延迟运行js时使用的容器\n cssSelectorsPrefix: '', // css选择器前缀\n defaultLightTextColor: DEFAULT_LIGHT_TEXTCOLOR, // 非Dark Mode下字体颜色\n defaultLightBgColor: DEFAULT_LIGHT_BGCOLOR, // 非Dark Mode下背景颜色\n defaultDarkTextColor: DEFAULT_DARK_TEXTCOLOR, // Dark Mode下字体颜色\n defaultDarkBgColor: DEFAULT_DARK_BGCOLOR, // Dark Mode下背景颜色\n\n // 设置配置\n set(type, opt, key) {\n const value = opt[key];\n switch (type) {\n case 'boolean':\n typeof value === 'boolean' && (this[key] = value);\n break;\n case 'string':\n typeof value === 'string' && value !== '' && (this[key] = value);\n break;\n case 'function':\n typeof value === 'function' && (this[key] = value);\n break;\n case 'dom':\n value instanceof HTMLElement && (this[key] = value);\n break;\n default:\n }\n }\n};\n\nexport default config;\n","/**\n * @name 常量\n *\n */\n\nexport const MEDIA_QUERY = '(prefers-color-scheme: dark)'; // Dark Mode的CSS媒体查询\n\nexport const CLASS_PREFIX = 'js_darkmode__'; // Dark Mode class前缀\nexport const DM_CLASSNAME_REGEXP = new RegExp(`${CLASS_PREFIX}\\\\d+`);\n\nexport const HTML_CLASS = 'data_color_scheme_dark'; // 强制设置暗黑模式时给html加的class\n\nconst RANDOM = `${new Date() * 1}${Math.round(Math.random() * 10)}`; // 生成个随机数,格式为时间戳+随机数\nexport const COLORATTR = `data-darkmode-color-${RANDOM}`; // dm color,即算法生成的新色值,单个\nexport const BGCOLORATTR = `data-darkmode-bgcolor-${RANDOM}`; // dm bg-color,即算法生成的新色值,有多个,用BG_COLOR_DELIMITER分割\nexport const ORIGINAL_COLORATTR = `data-darkmode-original-color-${RANDOM}`; // lm color,即原色值,单个\nexport const ORIGINAL_BGCOLORATTR = `data-darkmode-original-bgcolor-${RANDOM}`; // lm bg-color,即原色值,有多个,用BG_COLOR_DELIMITER分割\nexport const BGIMAGEATTR = `data-darkmode-bgimage-${RANDOM}`;\nexport const COMPLEMENTARY_BGIMAGECOLORATTR = `data-darkmode-complementary-bgimagecolor-${RANDOM}`; // 背景图片的补色色值,单个\nexport const BG_COLOR_DELIMITER = '|';\n\nexport const DEFAULT_LIGHT_TEXTCOLOR = '#191919'; // 非Dark Mode下字体颜色\nexport const DEFAULT_LIGHT_BGCOLOR = '#fff'; // 非Dark Mode下背景颜色\nexport const DEFAULT_DARK_TEXTCOLOR = '#a3a3a3'; // Dark Mode下字体颜色,前景色:rgba(255,255,255,0.6) 背景色:#191919\nexport const DEFAULT_DARK_BGCOLOR = '#191919'; // Dark Mode下背景颜色\n\nexport const WHITE_LIKE_COLOR_BRIGHTNESS = 250; // 接近白色的感知亮度阈值\nexport const MAX_LIMIT_BGCOLOR_BRIGHTNESS = 190;\nexport const MIN_LIMIT_OFFSET_BRIGHTNESS = 65;\nexport const HIGH_BGCOLOR_BRIGHTNESS = 100;\nexport const HIGH_BLACKWHITE_HSL_BRIGHTNESS = 40;\nexport const LOW_BLACKWHITE_HSL_BRIGHTNESS = 22;\nexport const IGNORE_ALPHA = 0.05; // 忽略的透明度阈值\n\nexport const PAGE_HEIGHT = (window.getInnerHeight && window.getInnerHeight())\n || window.innerHeight\n || document.documentElement.clientHeight;\n\nexport const CSS_PROP_SERIES = { // 支持的css属性,按类型做分类\n BG_COLOR: [\n 'background-color',\n 'background-image',\n 'background',\n ],\n TEXT_SHADOW: [\n 'text-shadow',\n ],\n TEXT_COLOR: [\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'text-decoration',\n 'text-decoration-color',\n 'text-emphasis-color',\n 'color',\n '-webkit-text-fill-color',\n ],\n BORDER_COLOR: [\n 'border-image',\n '-webkit-border-image',\n 'border',\n 'border-top',\n 'border-right',\n 'border-bottom',\n 'border-left',\n 'border-color',\n 'border-top-color',\n 'border-right-color',\n 'border-bottom-color',\n 'border-left-color',\n 'border-block-color',\n 'border-block-start-color',\n 'border-block-end-color',\n 'border-inline-color',\n 'border-inline-start-color',\n 'border-inline-end-color',\n 'outline',\n 'outline-color',\n 'box-shadow', // TODO: 不知道为啥之前没处理,后面需要留意下\n 'column-rule',\n 'column-rule-color',\n ],\n // SVG_COLOR: [ // TODO: SVG后面再处理\n // 'fill',\n // 'stroke',\n // 'stop-color',\n // 'flood-color',\n // 'lighting-color',\n // ],\n // FILTER: [ // TODO: filter后面再考虑要不要处理\n // 'filter'\n // ],\n};\nexport const CSS_PROP_LIST = Object.keys(CSS_PROP_SERIES).map(key => CSS_PROP_SERIES[key].join('|')).join('|').split('|'); // 支持的css属性平铺列表\nexport const TABLE_NAME = ['TABLE', 'TR', 'TD', 'TH']; // 支持bgcolor属性的table标签列表\n\nexport const IMPORTANT_REGEXP = / !important$/; // !important\n\nexport const SEMICOLON_PLACEHOLDER = '<$#_SEMICOLON_#$>'; // 分号占位符\nexport const SEMICOLON_PLACEHOLDER_REGEXP = /<\\$#_SEMICOLON_#\\$>/g;\n\nconst COLOR_REGEXP_STR = '\\\\b((rgba?)|((ok)?lch)|((ok)?lab)|(color))\\\\([^)]+\\\\)';\nexport const COLOR_REGEXP = new RegExp(COLOR_REGEXP_STR, 'i');\nexport const COLOR_REGEXP_GLOBAL = new RegExp(COLOR_REGEXP_STR, 'ig');\n","/**\n * @name 样式相关操作工具对象\n *\n * @class CssUtils\n *\n * @attr {boolean} isFinish 是否运行过Dark Mode处理逻辑(写入过非首屏样式表则表示已运行过)\n *\n * @method genCssKV 生成css键值对\n * @param {string} key css属性\n * @param {string} val css值\n * @return {string} css键值对\n *\n * @method genCss 生成css,包括css选择器\n * @param {string} className DOM节点类名\n * @param {string} cssKV css键值对\n * @return {string} css\n *\n * @method addCss 加入css\n * @param {string} css css样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n * @return void\n *\n * @method writeStyle 写入样式表\n * @param {boolean} isFirstPageStyle 是否首屏样式\n * @return void\n *\n * @method watch 监听生成css键值对\n * @param {string} key css属性\n * @param {function} cb 回调函数\n * @return void\n *\n * @method unwatch 取消监听生成css键值对\n * @param {string} key css属性\n * @return void\n *\n */\n\n// 常量\nimport {\n MEDIA_QUERY,\n HTML_CLASS,\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n sdk\n} from './global';\n\nexport default class CssUtils {\n _firstPageStyle = ''; // 首屏样式\n _otherPageStyle = ''; // 非首屏样式\n _watcher = {}; // 监听器,用于监听生成css键值对\n\n isFinish = false; // 是否运行过Dark Mode处理逻辑(写入过非首屏样式表则表示已运行过)\n\n constructor() {}\n\n // 生成css键值对\n genCssKV(key, val) {\n this._watcher[key]?.();\n return `${key}: ${val} !important;`;\n }\n\n // 生成css,包括css选择器\n genCss(className, cssKV) {\n return `${config.mode === 'dark' ? `html.${HTML_CLASS} ` : ''}${config.cssSelectorsPrefix && `${config.cssSelectorsPrefix} `}.${className}{${cssKV}}`;\n }\n\n // 加入css\n addCss(css, isFirstPageStyle = false) {\n this[isFirstPageStyle ? '_firstPageStyle' : '_otherPageStyle'] += css;\n plugins.addCss(isFirstPageStyle);\n }\n\n // 写入样式表\n writeStyle(isFirstPageStyle = false) {\n !isFirstPageStyle && sdk.isDarkmode && (this.isFinish = true); // 在Dark Mode下一旦写入了非首屏样式表,则认为已经运行过Dark Mode处理逻辑\n\n // 获取样式表内容\n const styles = (sdk.isDarkmode ? [{\n target: this,\n key: ['_firstPageStyle', '_otherPageStyle'],\n needMediaQuery: true\n }] : []).concat([{\n target: plugins,\n key: ['firstPageStyle', 'otherPageStyle'],\n needMediaQuery: true\n }, {\n target: plugins,\n key: ['firstPageStyleNoMQ', 'otherPageStyleNoMQ'],\n needMediaQuery: false\n }]).map(({\n target,\n key: [first, other],\n needMediaQuery\n }) => {\n let styleKey = '';\n if (!isFirstPageStyle) { // 如果是写入非首屏样式表,则连同首屏样式一起写入\n target[other] = target[first] + target[other];\n target[first] = '';\n styleKey = other;\n } else {\n styleKey = first;\n }\n\n const style = target[styleKey];\n if (style) {\n target[styleKey] = ''; // 写入样式表后清空内存中的数据\n return (config.mode === 'dark' || !needMediaQuery) ? style : `@media ${MEDIA_QUERY} {${style}}`;\n }\n return '';\n }).join('');\n\n // 写入样式表\n styles && document.head.insertAdjacentHTML('beforeend', `<style type=\"text/css\">${styles}</style>`);\n }\n\n // 监听生成css键值对\n watch(key, cb) {\n this._watcher[key] = cb;\n }\n\n // 取消监听生成css键值对\n unwatch(key) {\n delete this._watcher[key];\n }\n};\n","/**\n * @name 节点相关操作工具API\n *\n * @function getChildrenAndIt 获取某个节点及它的所有子节点\n * @param {DOM Object} el 节点对象\n * @param {boolean} exceptIt 是否排除自身\n * @return {DOM Object Array} 节点对象列表\n *\n * @function hasTextNode 判断某个节点里是否包含文字节点\n * @param {DOM Object} el 节点对象\n * @return {boolean} 判断结果\n *\n * @function hasTableClass 判断table相关元素有没有指定class\n * @param {DOM Object} el 节点对象\n * @return {string | null} 判断结果,如果有,返回class对应的lm色值,否则返回null\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n sdk\n} from './global';\n\n// 获取某个节点及它的所有子节点\nexport function getChildrenAndIt(el, exceptIt = false) {\n return (exceptIt ? [] : [el]).concat(...el.querySelectorAll('*'));\n};\n\n// 判断某个节点里是否包含文字节点\nexport function hasTextNode(el) {\n // let cnt = '';\n // Array.prototype.forEach.call(el.childNodes, child => {\n // if (child.nodeType === 3) {\n // cnt += child.nodeValue.replace(/\\s/g, ''); // 不考虑空白字符\n // }\n // });\n // return cnt.length > 0;\n return el.textContent.replace(/\\s/g, '').length > 0;\n};\n\n// table的内部样式类对应的lm背景色\nconst tableClassObj = {\n 'ue-table-interlace-color-single': '#fcfcfc',\n 'ue-table-interlace-color-double': '#f7faff'\n};\n// 判断table相关元素有没有指定class\nexport function hasTableClass(el) {\n let color = null;\n\n Array.prototype.some.call(el.classList, className => {\n if (tableClassObj[className]) {\n color = tableClassObj[className];\n return true;\n }\n return false;\n });\n\n return color;\n};\n\n/**\n * @name 节点相关操作工具对象\n *\n * @class DomUtils\n *\n * @attr {number} length 要处理的节点列表长度\n * @attr {boolean} showFirstPage 是否已显示首屏\n *\n * @method set 设置要处理的节点列表\n * @param {DOM Object Array} els 要处理的节点列表\n * @return void\n *\n * @method get 获取要处理的节点列表(包含延迟节点、容器节点等逻辑)\n * @return {DOM Object Array} 要处理的节点列表\n *\n * @method delay 将所有要处理的节点转移到延迟处理队列里\n * @return void\n *\n * @method hasDelay 判断是否包含延迟处理的节点\n * @return {boolean} 判断结果\n *\n * @method addFirstPageNode 添加首屏节点\n * @param {DOM Object} el 要添加的首屏节点\n * @return void\n *\n * @method showFirstPageNodes 显示所有首屏节点\n * @return void\n *\n * @method emptyFirstPageNodes 清空记录的首屏节点\n * @return void\n *\n */\n\nexport class DomUtils {\n _els = []; // 要处理的节点列表\n _firstPageEls = []; // 首屏节点列表\n _delayEls = []; // 延迟处理的节点列表\n\n showFirstPage = false; // 是否已显示首屏\n\n constructor() {}\n\n // 要处理的节点列表长度\n get length() {\n return this._els.length;\n }\n\n // 设置要处理的节点列表\n set(els = []) {\n this._els = els;\n }\n\n // 获取要处理的节点列表(包含延迟节点、容器节点等逻辑)\n get() {\n let res = [];\n\n if (this._els.length) { // 有节点\n res = this._els;\n sdk.isDarkmode && (this._els = []);\n } else { // 如果没有节点\n if (this._delayEls.length) { // 有延迟节点,则使用延迟节点\n res = this._delayEls;\n this._delayEls = [];\n } else if (config.container) { // 没有延迟节点,但有容器,重新获取容器内的节点\n res = config.container.querySelectorAll('*');\n }\n }\n\n return res;\n }\n\n // 将所有要处理的节点转移到延迟处理队列里\n delay() {\n Array.prototype.forEach.call(this._els, el => this._delayEls.push(el)); // 转移到延迟处理的节点里\n this._els = []; // 转移后清空列表\n }\n\n // 判断是否包含延迟处理的节点\n hasDelay() {\n if (this._els.length) return false; // 有节点,即不含延迟处理的节点\n return this._delayEls.length > 0 || config.container !== null; // 否则需要判断延迟节点的列表和容器\n }\n\n // 添加首屏节点\n addFirstPageNode(el) {\n this._firstPageEls.push(el);\n }\n\n // 显示所有首屏节点\n showFirstPageNodes() {\n this._firstPageEls.forEach(el => !el.style.visibility && (el.style.visibility = 'visible')); // 显示首屏节点\n this.showFirstPage = true; // 记录为已显示首屏\n }\n\n // 清空记录的首屏节点\n emptyFirstPageNodes() {\n this._firstPageEls = [];\n }\n};\n","/**\n * @name 全局作用域\n *\n */\n\n// 常量\nimport {\n CLASS_PREFIX\n} from './constant';\n\n// 插件系统\nimport Plugins from './plugins';\nexport const plugins = new Plugins();\n\n// 文本节点队列\nimport TextNodeQueue from './textNodeQueue';\nexport const tnQueue = new TextNodeQueue(`${CLASS_PREFIX}text__`);\n\n// 需要判断位置的背景节点堆栈\nimport BgNodeStack from './bgNodeStack';\nexport const bgStack = new BgNodeStack(`${CLASS_PREFIX}bg__`);\n\n// 样式相关操作工具对象\nimport CssUtils from './cssUtils';\nexport const cssUtils = new CssUtils();\n\n// 节点相关操作工具对象\nimport {\n DomUtils\n} from './domUtils';\nexport const domUtils = new DomUtils();\n\n// sdk\nimport SDK from './sdk';\nexport const sdk = new SDK();\n","/**\n * @name 插件基类\n *\n * @class Plugin\n *\n * @attr {number} loopTimes 已遍历次数(全部节点遍历结束算一次)\n * @attr {boolean} isDarkmode 是否为Dark Mode\n *\n * @method addCss 添加样式\n * @param {string} className DOM节点类名\n * @param {Array} kvList css键值对列表\n * @param {string} kvList[0].key css属性\n * @param {string} kvList[0].value css值\n * @param {boolean} needMediaQuery 是否需要添加Dark Mode媒体查询\n *\n */\n\nimport {\n cssUtils, // 样式相关操作工具对象\n plugins, // 插件系统\n sdk\n} from './global';\n\nlet cssNeedMQ = [];\nlet cssNoMQ = [];\n\nclass Plugin {\n constructor() {}\n\n // 遍历次数(全部节点遍历结束算一次)\n get loopTimes() {\n return plugins.loopTimes;\n }\n\n // 是否为Dark Mode\n get isDarkmode() {\n return sdk.isDarkmode;\n }\n\n // 添加样式\n addCss(className, kvList, needMediaQuery = true) {\n (needMediaQuery ? cssNeedMQ : cssNoMQ).push(cssUtils.genCss(className, kvList.map(({\n key,\n value\n }) => cssUtils.genCssKV(key, value)).join('')));\n }\n}\n\n/**\n * @name 插件系统\n *\n * @class Plugins\n *\n * @attr {number} length 已挂载的插件数量\n * @attr {number} loopTimes 已遍历次数(全部节点遍历结束算一次)\n * @attr {string} firstPageStyle 首屏样式\n * @attr {string} otherPageStyle 非首屏样式\n * @attr {string} firstPageStyleNoMQ 首屏样式(不需要加媒体查询)\n * @attr {string} otherPageStyleNoMQ 非首屏样式(不需要加媒体查询)\n *\n * @method extend 挂载插件\n * @param {Function} plugin 插件构造函数\n * @return void\n *\n * @method emit 执行插件钩子\n * @param {string} name 钩子名称\n * @param {Any} args 钩子参数\n * @return void\n *\n * @method addCss 写入插件样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n * @return void\n *\n * @method resetCss 重置插件样式\n * @return void\n *\n */\n\nexport default class Plugins {\n _plugins = []; // 已挂载的插件列表\n\n length = 0; // 已挂载的插件数量\n loopTimes = 0; // 已遍历次数(全部节点遍历结束算一次)\n firstPageStyle = ''; // 首屏样式\n otherPageStyle = ''; // 非首屏样式\n firstPageStyleNoMQ = ''; // 首屏样式(不需要加媒体查询)\n otherPageStyleNoMQ = ''; // 非首屏样式(不需要加媒体查询)\n\n constructor() {}\n\n // 挂载插件\n extend(plugin) {\n this._plugins.push(new (plugin(Plugin))());\n this.length++;\n }\n\n // 执行插件钩子\n emit(name, ...args) {\n this._plugins.forEach(plugin => {\n typeof plugin[name] === 'function' && plugin[name](...args);\n });\n }\n\n // 写入插件样式\n addCss(isFirstPageStyle) {\n if (isFirstPageStyle) {\n this.firstPageStyle += cssNeedMQ.join('');\n this.firstPageStyleNoMQ += cssNoMQ.join('');\n } else {\n this.otherPageStyle += cssNeedMQ.join('');\n this.otherPageStyleNoMQ += cssNoMQ.join('');\n }\n }\n\n // 重置插件样式\n resetCss() {\n cssNeedMQ = [];\n cssNoMQ = [];\n }\n};\n","/**\n * @name 算法SDK\n *\n * @class SDK\n *\n * @attr {boolean} isDarkmode 当前是否需要运行Darkmode处理\n *\n * @method init 初始化\n * @return void\n *\n * @method convert 处理节点\n * @param {DOM Object} el 要处理的节点\n * @return {string} 处理后的css,包含css选择器\n *\n * @method getContrast 获取两个颜色的对比度\n * @param {string} colorStr1 颜色1\n * @param {string} colorStr2 颜色2\n * @return {number} 颜色对比度,取值范围为`[1, 21]`\n *\n */\n\n// 颜色操作相关API\nimport Color from 'color';\nimport {\n ColorParser,\n parseColorName,\n parseWebkitFillColorAndStrokeColor,\n mixColors,\n getColorPerceivedBrightness,\n adjustBrightnessTo\n} from './color';\n\n// 常量\nimport {\n CLASS_PREFIX,\n DM_CLASSNAME_REGEXP,\n\n COLORATTR,\n BGCOLORATTR,\n ORIGINAL_COLORATTR,\n ORIGINAL_BGCOLORATTR,\n BGIMAGEATTR,\n COMPLEMENTARY_BGIMAGECOLORATTR,\n BG_COLOR_DELIMITER,\n\n WHITE_LIKE_COLOR_BRIGHTNESS,\n MIN_LIMIT_OFFSET_BRIGHTNESS,\n MAX_LIMIT_BGCOLOR_BRIGHTNESS,\n HIGH_BGCOLOR_BRIGHTNESS,\n HIGH_BLACKWHITE_HSL_BRIGHTNESS,\n LOW_BLACKWHITE_HSL_BRIGHTNESS,\n IGNORE_ALPHA,\n\n CSS_PROP_SERIES,\n CSS_PROP_LIST,\n TABLE_NAME,\n\n IMPORTANT_REGEXP,\n\n SEMICOLON_PLACEHOLDER,\n SEMICOLON_PLACEHOLDER_REGEXP,\n\n COLOR_REGEXP,\n COLOR_REGEXP_GLOBAL\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils // 样式相关操作工具对象\n} from './global';\n\n// 节点相关操作工具API\nimport {\n getChildrenAndIt,\n hasTextNode,\n hasTableClass\n} from './domUtils';\n\nexport default class SDK {\n _idx = 0; // 索引值\n _defaultDarkTextColorRgb = null;\n _defaultDarkBgColorRgb = null;\n _defaultDarkBgColorHSL = null;\n _defaultDarkTextColorBrightness = null;\n _defaultDarkBgColorBrightness = null;\n _defaultDarkBgColorHslBrightness = null;\n _maxLimitOffsetBrightness = null;\n\n isDarkmode = false; // 当前是否需要运行Darkmode处理\n\n constructor() {}\n\n // 调整明度\n _adjustBrightness(color, el, options, isUpdate, needReset) {\n // 背景:\n // 处理原则:白背景改黑,其他高感知亮度背景调暗,低亮度适当提高亮度(感知亮度:https://www.w3.org/TR/AERT/#color-contrast)\n // 处理方法:\n // 黑白灰色(h=0,s=0)亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,做取反处理;\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,取MAX_LIMIT_BGCOLOR_BRIGHTNESS;\n // 其他亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS时,设为LOW_BLACKWHITE_HSL_BRIGHTNESS。\n\n // 字体、边框:\n // 处理原则:根据调整后的背景颜色和最小亮度差值算出字体颜色,接近白色字体颜色保持不变,带背景图片子元素字体颜色不变\n // 处理方法:亮度小于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,用(90%-该亮度),大于等于HIGH_BLACKWHITE_HSL_BRIGHTNESS则保持不变;\n\n // 字体阴影\n // 处理方法:按照背景的处理方法来处理\n\n const alpha = color.alpha();\n let newColor;\n let extStyle = '';\n\n if (options.isBgColor) { // 背景色\n if (alpha >= IGNORE_ALPHA) {\n // 如果设置背景颜色,取消背景图片的影响\n if (el[BGIMAGEATTR]) delete el[BGIMAGEATTR];\n\n // 如果有背景图片补色\n if (el[COMPLEMENTARY_BGIMAGECOLORATTR]) {\n // 背景图片补色和当前背景色一致,则无需处理\n // 根据最小可觉差Just-noticeable difference(即JND,表示人类或动物对于某一特定的感官刺激所能察觉的最小改变)和韦伯-费希纳定律,在特定条件下,人类能感知小至 0.5% - 2% 的变化,0.5%换算成对比度为1.1\n // https://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E5%8F%AF%E8%A6%BA%E5%B7%AE 最小可觉差wiki\n // https://zh.wikipedia.org/wiki/%E9%9F%8B%E4%BC%AF-%E8%B2%BB%E5%B8%8C%E7%B4%8D%E5%AE%9A%E7%90%86 韦伯-费希纳定理wiki\n if (el[COMPLEMENTARY_BGIMAGECOLORATTR] === color.toString() || this.getContrast(el[COMPLEMENTARY_BGIMAGECOLORATTR], color.toString()) < 1.1) {\n return {\n newColor: needReset ? color.toString() : '',\n extStyle,\n };\n }\n\n // 否则取消背景图片补色的影响\n getChildrenAndIt(el).forEach(dom => {\n delete dom[COMPLEMENTARY_BGIMAGECOLORATTR];\n });\n }\n }\n\n newColor = this._adjustBackgroundBrightness(color);\n\n if (!options.hasInlineColor) {\n const parentTextColorStr = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n const parentTextColor = ColorParser(parentTextColorStr);\n if (parentTextColor) {\n const ret = this._adjustBrightness(parentTextColor, el, {\n isTextColor: true,\n parentElementBgColorStr: newColor || color\n }, isUpdate, needReset);\n extStyle += cssUtils.genCssKV('color', ret.newColor || parentTextColor);\n getChildrenAndIt(el).forEach(dom => {\n dom[COLORATTR] = ret.newColor || parentTextColor;\n dom[ORIGINAL_COLORATTR] = parentTextColor;\n });\n }\n }\n } else if (options.isTextColor || options.isBorderColor) { // 字体色、边框色\n const parentElementBgColorStr = options.parentElementBgColorStr\n || (options.isTextColor && el[BGCOLORATTR])\n || config.defaultDarkBgColor;\n const parentElementBgColor = ColorParser(parentElementBgColorStr);\n\n // 无背景图片\n if (parentElementBgColor && !el[BGIMAGEATTR]) {\n newColor = this._adjustTextBrightness(color, parentElementBgColor);\n let emitNameSuffix = '';\n if (isUpdate) {\n emitNameSuffix = 'ByUpdateStyle';\n } else if (needReset) {\n emitNameSuffix = 'ByReset';\n }\n plugins.emit(`afterConvertTextColor${emitNameSuffix}`, el, {\n // fontColor: color,\n fontColor: newColor,\n bgColor: parentElementBgColor\n });\n }\n } else if (options.isTextShadow) { // 字体阴影\n // 无背景图片\n if (!el[BGIMAGEATTR]) {\n newColor = this._adjustBackgroundBrightness(color); // 按照背景色的方法来处理\n }\n }\n\n return {\n newColor: newColor && color.toString() !== newColor.toString() && newColor.alpha(alpha).rgb(),\n extStyle\n };\n }\n\n // 调整文本明度\n _adjustTextBrightness(textColor, bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n const bgColorWithOpacityPerceivedBrightness = bgColorPerceivedBrightness * bgColorAlpha\n + this._defaultDarkBgColorBrightness * (1 - bgColorAlpha);\n const textColorRgb = textColor.rgb().array();\n const textColorHSL = textColor.hsl().array();\n const textColorAlpha = textColor.alpha();\n const textPerceivedBrightness = getColorPerceivedBrightness(textColorRgb);\n const offsetPerceivedBrightness = Math.abs(bgColorWithOpacityPerceivedBrightness - textPerceivedBrightness);\n\n // 用户设置为高亮字体颜色(接近白色亮度),不处理,保持高亮\n if (textPerceivedBrightness >= WHITE_LIKE_COLOR_BRIGHTNESS) return textColor;\n\n if (offsetPerceivedBrightness > this._maxLimitOffsetBrightness\n && bgColorWithOpacityPerceivedBrightness <= this._defaultDarkBgColorBrightness + 2) {\n return adjustBrightnessTo(this._maxLimitOffsetBrightness + bgColorWithOpacityPerceivedBrightness\n , textColorRgb).alpha(textColorAlpha);\n }\n\n // 如果感知亮度差大于阈值,无需调整\n if (offsetPerceivedBrightness >= MIN_LIMIT_OFFSET_BRIGHTNESS) return textColor;\n\n if (bgColorWithOpacityPerceivedBrightness >= HIGH_BGCOLOR_BRIGHTNESS) { // 亮背景,调暗字体\n if (textColorHSL[2] > 90 - HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到降低感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessTo(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness - MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n } else { // 暗背景,调亮字体\n if (textColorHSL[2] <= HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到提高感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessTo(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness + MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n }\n }\n\n // 调整背景明度\n _adjustBackgroundBrightness(bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorHsl = bgColor.hsl().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n let newColor = bgColor;\n if ((bgColorHsl[1] === 0 && bgColorHsl[2] > HIGH_BLACKWHITE_HSL_BRIGHTNESS)\n || bgColorPerceivedBrightness > WHITE_LIKE_COLOR_BRIGHTNESS) {\n // 饱和度为0(黑白灰色),亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS或感知亮度大于WHITE_LIKE_COLOR_BRIGHTNESS(白色)时,做亮度取反处理\n newColor = Color.hsl(0, 0, Math.min(100, 100 + this._defaultDarkBgColorHslBrightness - bgColorHsl[2]));\n } else if (bgColorPerceivedBrightness > MAX_LIMIT_BGCOLOR_BRIGHTNESS) {\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,将感知亮度设为MAX_LIMIT_BGCOLOR_BRIGHTNESS\n newColor = adjustBrightnessTo(MAX_LIMIT_BGCOLOR_BRIGHTNESS, bgColorRgb).alpha(bgColorAlpha);\n // const ratio = (MAX_LIMIT_BGCOLOR_BRIGHTNESS * 1000)\n // / (bgColorRgb[0] * 299 + bgColorRgb[1] * 587 + bgColorRgb[2] * 114);\n // newColor = Color.rgb(bgColorRgb[0] * ratio, bgColorRgb[1] * ratio, bgColorRgb[2] * ratio);\n } else if (bgColorHsl[2] < LOW_BLACKWHITE_HSL_BRIGHTNESS) {\n // 亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS,将亮度设为LOW_BLACKWHITE_HSL_BRIGHTNESS,适当提高亮度\n bgColorHsl[2] = LOW_BLACKWHITE_HSL_BRIGHTNESS;\n newColor = Color.hsl(...bgColorHsl);\n }\n return newColor.alpha(bgColorAlpha).rgb();\n }\n\n // 叠加渐变色到背景色中,并更新背景色相关属性值以及文本颜色\n _updateBgWithGradient(gradientColor, el, className, cssKVList, hasInlineColor, isUpdate, needReset) {\n const newBgColor = mixColors([el[BGCOLORATTR] || config.defaultDarkBgColor, gradientColor], 'normal');\n const newOriginalBgColor = (el[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER).concat(gradientColor.toString()).join(BG_COLOR_DELIMITER);\n getChildrenAndIt(el).forEach(dom => {\n dom[BGCOLORATTR] = newBgColor;\n dom[ORIGINAL_BGCOLORATTR] = newOriginalBgColor;\n });\n const lastKV = cssKVList.slice(-1)[0];\n if (lastKV[0] === 'color') {\n const ret = this._adjustBrightness(ColorParser(parseColorName(lastKV[1])), el, {\n isBgColor: false,\n isTextShadow: false,\n isTextColor: true,\n isBorderColor: false,\n hasInlineColor\n }, isUpdate, needReset);\n if (ret.newColor) return cssUtils.genCss(className, cssUtils.genCssKV('color', ret.newColor));\n }\n return '';\n }\n\n _try(func) {\n try {\n return func();\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n }\n\n // 初始化\n init() {\n this._defaultDarkTextColorRgb = ColorParser(config.defaultDarkTextColor).rgb().array();\n this._defaultDarkBgColorRgb = ColorParser(config.defaultDarkBgColor).rgb().array();\n this._defaultDarkBgColorHSL = ColorParser(config.defaultDarkBgColor).hsl().array();\n this._defaultDarkTextColorBrightness = getColorPerceivedBrightness(this._defaultDarkTextColorRgb);\n this._defaultDarkBgColorBrightness = getColorPerceivedBrightness(this._defaultDarkBgColorRgb);\n this._defaultDarkBgColorHslBrightness = this._defaultDarkBgColorHSL[2];\n this._maxLimitOffsetBrightness = this._defaultDarkTextColorBrightness - this._defaultDarkBgColorBrightness;\n }\n\n // 处理节点\n convert(el, cssKVList, isUpdate, needReset) {\n plugins.resetCss();\n let emitNameSuffix = '';\n if (isUpdate) {\n emitNameSuffix = 'ByUpdateStyle';\n } else if (needReset) {\n emitNameSuffix = 'ByReset';\n }\n plugins.emit(`beforeConvertNode${emitNameSuffix}`, el);\n\n let css = ''; // css\n let bgCss = ''; // 文字底图css\n\n if (this.isDarkmode || isUpdate || needReset) {\n const nodeName = el.nodeName;\n\n if (config.whitelist.tagName.indexOf(nodeName) > -1) return '';\n if (config.whitelist.attribute.some(attribute => el.hasAttribute(attribute))) return '';\n\n const styles = el.style;\n\n if (!cssKVList) { // 没有传入cssKVList就从内联样式中提取\n // styles.cssText 读出来的颜色统一是rgba格式,除了用英文定义颜色(如:black、white)\n cssKVList = ((styles.cssText && styles.cssText.replace(/(\"[^;]*);([^;]*\")|('[^;]*);([^;]*')/g, `$1$3${SEMICOLON_PLACEHOLDER}$2$4`).split(';')) || []).map(cssStr => { // 将cssStr转换为[key, value],并清除各个元素的前后空白字符\n const splitIdx = cssStr.indexOf(':');\n return [cssStr.slice(0, splitIdx).toLowerCase(), cssStr.slice(splitIdx + 1).replace(SEMICOLON_PLACEHOLDER_REGEXP, ';')].map(item => (item || '').replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, ''));\n });\n }\n\n let hasInlineColor = false; // 是否有自定义字体颜色\n let hasInlineBackground = false;\n let hasInlineBackgroundImage = false;\n let elBackgroundPositionAttr = null;\n let elBackgroundSizeAttr = null;\n\n cssKVList = cssKVList.filter(([key, value]) => {\n if (key === 'color') {\n hasInlineColor = true;\n } else if (/background/i.test(key)) {\n hasInlineBackground = true;\n if (key === 'background-position') {\n elBackgroundPositionAttr = value;\n } else if (key === 'background-size') {\n elBackgroundSizeAttr = value;\n }\n }\n\n if ((/background/i.test(key) || /^(-webkit-)?border-image/.test(key)) && /url\\([^)]*\\)/i.test(value)) {\n hasInlineBackgroundImage = true;\n }\n\n // 过滤掉一些key\n return CSS_PROP_LIST.indexOf(key) > -1;\n }).sort(([key1], [key2]) => { // color属性放在最后\n if (key1 === 'color') {\n return 1;\n } else if (key1 === 'background-image' && key2 === 'background-color') { // 确保 background-image 在 background-color 后面\n return 1;\n } else if (key2.indexOf('-webkit-text') === 0) { // 把-webkit-text的属性放在最前面\n return 1;\n }\n return -1;\n });\n\n if (TABLE_NAME.indexOf(nodeName) > -1 && !hasInlineBackground) { // 如果table没有内联样式\n this._try(() => {\n let colorStr = hasTableClass(el); // 获取class对应的lm色值\n if (!colorStr) colorStr = el.getAttribute('bgcolor'); // 如果没有class则获取bgcolor的色值\n if (colorStr) { // 有色值(class对应的lm色值或者是bgcolor色值),则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.unshift(['background-color', color.toString()]);\n hasInlineBackground = true;\n }\n }\n });\n }\n\n if (nodeName === 'FONT' && !hasInlineColor) { // 如果是font标签且没有内联文本颜色样式\n this._try(() => {\n const colorStr = el.getAttribute('color'); // 获取color的色值\n if (colorStr) { // 有色值,则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.push(['color', color.toString()]);\n hasInlineColor = true;\n }\n }\n });\n }\n\n // 处理-webkit-text相关样式\n let webkitFillColor = '';\n let webkitStrokeColor = '';\n let webkitTextLen = 0;\n cssKVList.some(([key, value], idx) => this._try(() => {\n if (key.indexOf('-webkit-text') !== 0) { // 遍历到非-webkit-text样式\n webkitTextLen = idx; // 记录-webkit-text相关样式的长度\n return true; // 结束遍历\n }\n\n switch (key) {\n case '-webkit-text-fill-color':\n webkitFillColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n case '-webkit-text-stroke': { // 有-webkit-text-stroke时就不会有-webkit-text-stroke-color\n const newValue = value.split(' ');\n newValue.length === 2 && (webkitStrokeColor = parseWebkitFillColorAndStrokeColor(newValue[1]));\n break;\n }\n case '-webkit-text-stroke-color': // 有-webkit-text-stroke-color时就不会有-webkit-text-stroke\n webkitStrokeColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n }\n\n return false; // 继续遍历\n }));\n if (webkitFillColor) { // 有-webkit-text-fill-color,当做color对待\n if (hasInlineColor) { // 本来有color,替换为-webkit-text-fill-color\n cssKVList[cssKVList.length - 1] = ['-webkit-text-fill-color', webkitFillColor];\n } else { // 没有color,push一个-webkit-text-fill-color\n cssKVList.push(['-webkit-text-fill-color', webkitFillColor]);\n hasInlineColor = true;\n }\n }\n if (webkitTextLen) {\n cssKVList.splice(0, webkitTextLen); // 删掉-webkit-text相关样式\n webkitStrokeColor && cssKVList.unshift(['-webkit-text-stroke-color', webkitStrokeColor]); // 如果有-webkit-text-stroke-color,则插入到最前面\n }\n\n let dmClassName = '';\n let dmBgClassName = '';\n if ((isUpdate || needReset) && el.className && typeof el.className === 'string') {\n // 先提取dm className\n let matches = el.className.match(DM_CLASSNAME_REGEXP);\n if (matches) {\n dmClassName = matches[0];\n }\n\n // 再提取dm bg className\n matches = el.className.match(bgStack.classNameReg);\n if (matches) {\n dmBgClassName = matches[0];\n }\n }\n\n let cssKV = ''; // css键值对\n let noColor = needReset;\n noColor && cssUtils.watch('color', () => {\n noColor = false;\n cssUtils.unwatch('color');\n });\n cssKVList.forEach(([key, value]) => this._try(() => {\n const oldValue = value;\n let cssChange = false;\n\n // 找出色值来处理\n const isBgColor = CSS_PROP_SERIES.BG_COLOR.indexOf(key) > -1;\n const isTextShadow = CSS_PROP_SERIES.TEXT_SHADOW.indexOf(key) > -1;\n const textColorIdx = CSS_PROP_SERIES.TEXT_COLOR.indexOf(key);\n const isBorderColor = CSS_PROP_SERIES.BORDER_COLOR.indexOf(key) > -1;\n const isGradient = /gradient/.test(value);\n const gradientColors = [];\n let extStyle = '';\n let gradientMixColor;\n\n // 将英文定义颜色转换为rgb格式\n value = parseColorName(value, isGradient); // 渐变需要处理透明\n\n if (COLOR_REGEXP.test(value)) {\n if (isGradient) {\n // 把原渐变色取出来\n let matches = COLOR_REGEXP_GLOBAL.exec(value);\n while (matches) {\n gradientColors.push(matches[0]);\n matches = COLOR_REGEXP_GLOBAL.exec(value);\n }\n\n // 计算出一个mix颜色\n gradientMixColor = mixColors(gradientColors);\n }\n let replaceIndex = 0;\n value = value.replace(COLOR_REGEXP_GLOBAL, match => {\n // 渐变色统一改成mix纯色\n if (isGradient) {\n match = gradientMixColor;\n cssChange = true;\n }\n\n const matchColor = ColorParser(match);\n if (matchColor?.alpha() >= IGNORE_ALPHA) { // 忽略透明度低的色值\n // 使用颜色处理算法\n const ret = this._adjustBrightness(matchColor, el, {\n isBgColor,\n isTextShadow,\n isTextColor: textColorIdx > -1,\n isBorderColor,\n hasInlineColor\n }, isUpdate, needReset);\n const retColor = !hasInlineBackgroundImage && ret.newColor;\n\n extStyle += ret.extStyle;\n\n // 对背景颜色和文字颜色做继承传递,用于文字亮度计算\n if (isBgColor || textColorIdx >= 5) { // 只处理color及之后的属性\n const retColorStr = retColor ? retColor.toString() : match;\n replaceIndex === 0 && getChildrenAndIt(el).forEach(dom => {\n if (isBgColor) {\n dom[BGCOLORATTR] = retColorStr;\n dom[ORIGINAL_BGCOLORATTR] = (dom[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER).concat(match).join(BG_COLOR_DELIMITER);\n } else {\n dom[COLORATTR] = retColorStr;\n dom[ORIGINAL_COLORATTR] = match;\n }\n\n // 如果设置背景颜色,取消背景图片的影响\n const retColor = ColorParser(retColorStr);\n if (isBgColor && retColor?.alpha() >= IGNORE_ALPHA && dom[BGIMAGEATTR]) {\n delete dom[BGIMAGEATTR];\n }\n });\n }\n\n retColor && (cssChange = true);\n replaceIndex++;\n return retColor || match;\n }\n return match;\n }).replace(/\\s?!\\s?important/ig, '');\n }\n\n extStyle && (cssKV += extStyle);\n\n if (!(el instanceof SVGElement)) { // 先不处理SVG\n // 背景图片、边框图片\n const isBackgroundAttr = /^background/.test(key);\n const isBorderImageAttr = /^(-webkit-)?border-image/.test(key);\n if ((isBackgroundAttr || isBorderImageAttr) && /url\\([^)]*\\)/i.test(value)) {\n cssChange = true;\n const imgBgColor = mixColors((el[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER), 'normal').toString();\n // const imgBgColor = el[BGCOLORATTR] || config.defaultLightBgColor;\n\n // 在背景图片下加一层原背景颜色:\n // background-image使用多层背景(注意background-position也要多加一层 https://www.w3.org/TR/css-backgrounds-3/#layering);\n // border-image不支持多层背景,需要添加background-color\n value = value.replace(/^(.*?)url\\(([^)]*)\\)(.*)$/i, matches => {\n let newValue = matches;\n let tmpCssKvStr = '';\n\n if (!el[BGIMAGEATTR]) { // 避免重复set\n getChildrenAndIt(el).forEach(dom => {\n dom[BGIMAGEATTR] = true;\n });\n }\n\n // background-image\n if (isBackgroundAttr) {\n tmpCssKvStr = cssUtils.genCssKV(key, imgBgColor ? `${newValue},linear-gradient(${imgBgColor}, ${imgBgColor})` : newValue);\n if (elBackgroundPositionAttr) {\n cssKV += cssUtils.genCssKV('background-position', elBackgroundPositionAttr);\n tmpCssKvStr += cssUtils.genCssKV('background-position', imgBgColor ? `${elBackgroundPositionAttr},top left` : elBackgroundPositionAttr);\n }\n if (elBackgroundSizeAttr) {\n cssKV += cssUtils.genCssKV('background-size', elBackgroundSizeAttr);\n tmpCssKvStr += cssUtils.genCssKV('background-size', imgBgColor ? `${elBackgroundSizeAttr},100%` : elBackgroundSizeAttr);\n }\n if (!needReset) {\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n getChildrenAndIt(el).forEach(dom => {\n dom[COMPLEMENTARY_BGIMAGECOLORATTR] = imgBgColor || newValue;\n });\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr, bgStackItem => {\n const els = [bgStackItem.elOld];\n bgStackItem.el !== bgStackItem.elOld && els.push(bgStackItem.el);\n els.forEach(bgEl => { // 新老节点都要处理\n getChildrenAndIt(bgEl).forEach(dom => {\n dom[COMPLEMENTARY_BGIMAGECOLORATTR] = imgBgColor || newValue;\n });\n });\n });\n }\n }\n } else {\n // border-image元素,如果当前元素没有背景颜色,补背景颜色\n if (imgBgColor && !hasInlineBackground && !needReset) {\n tmpCssKvStr = cssUtils.genCssKV('background-image', `linear-gradient(${imgBgColor}, ${imgBgColor})`);\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr); // 背景图入栈\n }\n }\n }\n return newValue;\n });\n\n // 没有设置自定义字体颜色,则使用非 Dark Mode 下默认字体颜色\n if (!hasInlineColor) {\n const textColor = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n cssKV += cssUtils.genCssKV('color', textColor);\n getChildrenAndIt(el).forEach(dom => {\n dom[COLORATTR] = textColor;\n });\n }\n }\n }\n\n if (cssChange || needReset) {\n !isUpdate && !needReset && IMPORTANT_REGEXP.test(oldValue) && (styles[key] = oldValue.replace(IMPORTANT_REGEXP, '')); // 清除inline style的!important\n if (isGradient) {\n if (!needReset) {\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, cssUtils.genCssKV(key, value));\n if ((/^background/.test(key) && !/url\\([^)]*\\)/i.test(value))) { // 是无背景图的渐变,需要重新计算背景色\n css += this._updateBgWithGradient(gradientMixColor, el, dmBgClassName, cssKVList, hasInlineColor, isUpdate, needReset);\n }\n } else { // 否则渐变入栈\n bgStack.push(el, cssUtils.genCssKV(key, value), item => { // 渐变入栈\n if ((/^background/.test(key) && !/url\\([^)]*\\)/i.test(value))) { // 是无背景图的渐变,需要重新计算背景色\n css += this._updateBgWithGradient(gradientMixColor, el, item.className, cssKVList, hasInlineColor, isUpdate, needReset);\n }\n });\n }\n }\n } else {\n if (key === 'color') {\n noColor = false;\n cssUtils.unwatch('color');\n }\n cssKV += cssUtils.genCssKV(key, (!cssChange && needReset) ? el.style[key] : value);\n }\n }\n }));\n if (noColor) {\n cssKV += cssUtils.genCssKV('color', el.style.color || el[COLORATTR] || config.defaultDarkTextColor);\n cssUtils.unwatch('color');\n }\n\n if (cssKV) { // 有处理过或者是背景图片就加class以及css\n if (!dmClassName) {\n dmClassName = `${CLASS_PREFIX}${this._idx++}`;\n el.classList.add(dmClassName);\n }\n css += (cssKV ? cssUtils.genCss(dmClassName, cssKV) : '');\n }\n\n css += bgCss; // 追加文字底图样式,要在添加cssKV之后添加,避免被覆盖\n\n if (!isUpdate && hasTextNode(el) && !needReset) { // 如果节点里有文本,要判断是否在背景图里\n if (config.delayBgJudge) { // 延迟背景判断\n tnQueue.push(el); // 文字入队\n } else {\n bgStack.contains(el, item => {\n css += cssUtils.genCss(item.className, item.cssKV);\n typeof item.cb === 'function' && item.cb(item);\n });\n }\n }\n }\n\n plugins.emit(`afterConvertNode${emitNameSuffix}`, el);\n\n return css;\n }\n\n // 获取两个颜色的对比度\n getContrast(colorStr1, colorStr2) {\n const color1 = ColorParser(colorStr1);\n const color2 = ColorParser(colorStr2);\n return (color1 && color2) ? color1.contrast(color2) : 0;\n }\n};\n","/**\n * @name 文本节点队列\n *\n * @class TextNodeQueue\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @attr {number} length 队列长度\n *\n * @method push 文本节点入队\n * @param {DOM Object} el 文本节点对象\n * @return void\n *\n * @method forEach 遍历,遍历过的文本节点出队\n * @param {Function} callback 回调\n * @return void\n *\n * @method update 更新队列的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n * @return void\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class TextNodeQueue {\n _queue = []; // 文本节点队列,{ el, className, updated }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n }\n\n // 队列长度\n get length() {\n return this._queue.length;\n }\n\n // 文本节点入队\n push(el) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._queue.push({\n el,\n className,\n updated: !config.delayBgJudge\n });\n }\n\n // 遍历,遍历过的文本节点出队\n forEach(callback) {\n const idxStack = [];\n\n this._queue.forEach((item, idx) => {\n if (item.updated) {\n idxStack.unshift(idx);\n typeof callback && callback(item.el);\n }\n });\n\n while (idxStack.length) { // 处理完之后删除部分节点\n this._queue.splice(idxStack.shift(), 1);\n }\n }\n\n // 更新队列的节点对象,主要解决前后节点不一致的问题\n update(els) {\n this._queue.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://Darkmode/webpack/universalModuleDefinition","webpack://Darkmode/webpack/bootstrap","webpack://Darkmode/./node_modules/call-bind-apply-helpers/actualApply.js","webpack://Darkmode/./node_modules/call-bind-apply-helpers/functionApply.js","webpack://Darkmode/./node_modules/call-bind-apply-helpers/functionCall.js","webpack://Darkmode/./node_modules/call-bind-apply-helpers/index.js","webpack://Darkmode/./node_modules/call-bind-apply-helpers/reflectApply.js","webpack://Darkmode/./node_modules/call-bound/index.js","webpack://Darkmode/../src/separable-blend.ts","webpack://Darkmode/../src/separable-modes.ts","webpack://Darkmode/../src/helpers.ts","webpack://Darkmode/../src/non-separable-blend.ts","webpack://Darkmode/../src/non-separable-modes.ts","webpack://Darkmode/../src/index.ts","webpack://Darkmode/./node_modules/color-name/index.js","webpack://Darkmode/./node_modules/color-string/index.js","webpack://Darkmode/./node_modules/color/index.js","webpack://Darkmode/./node_modules/color/node_modules/color-convert/conversions.js","webpack://Darkmode/./node_modules/color/node_modules/color-convert/index.js","webpack://Darkmode/./node_modules/color/node_modules/color-convert/route.js","webpack://Darkmode/../src/multiply-matrices.js","webpack://Darkmode/../src/util.js","webpack://Darkmode/../src/hooks.js","webpack://Darkmode/../src/defaults.js","webpack://Darkmode/../src/Type.js","webpack://Darkmode/../src/Format.js","webpack://Darkmode/../src/adapt.js","webpack://Darkmode/../src/parse.js","webpack://Darkmode/../src/getColor.js","webpack://Darkmode/../src/ColorSpace.js","webpack://Darkmode/../src/spaces/xyz-d65.js","webpack://Darkmode/../src/RGBColorSpace.js","webpack://Darkmode/../src/tryColor.js","webpack://Darkmode/../src/getAll.js","webpack://Darkmode/../src/get.js","webpack://Darkmode/../src/setAll.js","webpack://Darkmode/../src/set.js","webpack://Darkmode/../src/spaces/xyz-d50.js","webpack://Darkmode/../src/spaces/lab.js","webpack://Darkmode/../src/angles.js","webpack://Darkmode/../src/spaces/lch.js","webpack://Darkmode/../src/deltaE/deltaE2000.js","webpack://Darkmode/../src/spaces/oklab.js","webpack://Darkmode/../src/deltaE/deltaEOK.js","webpack://Darkmode/../src/inGamut.js","webpack://Darkmode/../src/clone.js","webpack://Darkmode/../src/distance.js","webpack://Darkmode/../src/deltaE/deltaE76.js","webpack://Darkmode/../src/deltaE/deltaECMC.js","webpack://Darkmode/../src/spaces/xyz-abs-d65.js","webpack://Darkmode/../src/spaces/jzazbz.js","webpack://Darkmode/../src/spaces/jzczhz.js","webpack://Darkmode/../src/deltaE/deltaEJz.js","webpack://Darkmode/../src/spaces/ictcp.js","webpack://Darkmode/../src/deltaE/deltaEITP.js","webpack://Darkmode/../src/deltaE/deltaEOK2.js","webpack://Darkmode/../src/spaces/cam16.js","webpack://Darkmode/../src/spaces/hct.js","webpack://Darkmode/../src/deltaE/deltaEHCT.js","webpack://Darkmode/../src/deltaE/index.js","webpack://Darkmode/../src/toGamut.js","webpack://Darkmode/../src/to.js","webpack://Darkmode/../src/serialize.js","webpack://Darkmode/../src/spaces/rec2020-linear.js","webpack://Darkmode/../src/spaces/rec2020.js","webpack://Darkmode/../src/spaces/p3-linear.js","webpack://Darkmode/../src/spaces/srgb-linear.js","webpack://Darkmode/../src/keywords.js","webpack://Darkmode/../src/spaces/srgb.js","webpack://Darkmode/../src/spaces/p3.js","webpack://Darkmode/../src/display.js","webpack://Darkmode/../src/deltas.js","webpack://Darkmode/../src/equals.js","webpack://Darkmode/../src/luminance.js","webpack://Darkmode/../src/contrast/WCAG21.js","webpack://Darkmode/../src/contrast/APCA.js","webpack://Darkmode/../src/contrast/Michelson.js","webpack://Darkmode/../src/contrast/Weber.js","webpack://Darkmode/../src/contrast/Lstar.js","webpack://Darkmode/../src/spaces/lab-d65.js","webpack://Darkmode/../src/contrast/deltaPhi.js","webpack://Darkmode/../src/contrast/index.js","webpack://Darkmode/../src/contrast.js","webpack://Darkmode/../src/chromaticity.js","webpack://Darkmode/../src/deltaE.js","webpack://Darkmode/../src/variations.js","webpack://Darkmode/../src/interpolation.js","webpack://Darkmode/../src/spaces/hsl.js","webpack://Darkmode/../src/spaces/hsv.js","webpack://Darkmode/../src/spaces/hwb.js","webpack://Darkmode/../src/spaces/a98rgb-linear.js","webpack://Darkmode/../src/spaces/a98rgb.js","webpack://Darkmode/../src/spaces/prophoto-linear.js","webpack://Darkmode/../src/spaces/prophoto.js","webpack://Darkmode/../src/spaces/rec2020-oetf.js","webpack://Darkmode/../src/spaces/oklch.js","webpack://Darkmode/../src/spaces/okhsl.js","webpack://Darkmode/../src/spaces/oklrab.js","webpack://Darkmode/../src/spaces/oklrch.js","webpack://Darkmode/../src/spaces/okhsv.js","webpack://Darkmode/../src/spaces/luv.js","webpack://Darkmode/../src/spaces/lchuv.js","webpack://Darkmode/../src/spaces/hsluv.js","webpack://Darkmode/../src/spaces/hpluv.js","webpack://Darkmode/../src/spaces/rec2100-linear.js","webpack://Darkmode/../src/spaces/rec2100-pq.js","webpack://Darkmode/../src/spaces/rec2100-hlg.js","webpack://Darkmode/../src/CATs.js","webpack://Darkmode/../src/spaces/acescg.js","webpack://Darkmode/../src/spaces/acescc.js","webpack://Darkmode/../src/spaces/index-fn.js","webpack://Darkmode/../src/color.js","webpack://Darkmode/../src/spaces/index.js","webpack://Darkmode/../src/space-accessors.js","webpack://Darkmode/../src/index.js","webpack://Darkmode/./node_modules/define-data-property/index.js","webpack://Darkmode/./node_modules/define-properties/index.js","webpack://Darkmode/./node_modules/dunder-proto/get.js","webpack://Darkmode/./node_modules/es-abstract-get/GetMethod.js","webpack://Darkmode/./node_modules/es-abstract-get/GetV.js","webpack://Darkmode/./node_modules/es-abstract-get/isPropertyKey.js","webpack://Darkmode/./node_modules/es-abstract/2024/HasOwnProperty.js","webpack://Darkmode/./node_modules/es-abstract/2024/ToPrimitive.js","webpack://Darkmode/./node_modules/es-abstract/2024/ToPropertyKey.js","webpack://Darkmode/./node_modules/es-abstract/2024/ToString.js","webpack://Darkmode/./node_modules/es-abstract/helpers/isPropertyKey.js","webpack://Darkmode/./node_modules/es-define-property/index.js","webpack://Darkmode/./node_modules/es-errors/eval.js","webpack://Darkmode/./node_modules/es-errors/index.js","webpack://Darkmode/./node_modules/es-errors/range.js","webpack://Darkmode/./node_modules/es-errors/ref.js","webpack://Darkmode/./node_modules/es-errors/syntax.js","webpack://Darkmode/./node_modules/es-errors/type.js","webpack://Darkmode/./node_modules/es-errors/uri.js","webpack://Darkmode/./node_modules/es-object-atoms/RequireObjectCoercible.js","webpack://Darkmode/./node_modules/es-object-atoms/ToObject.js","webpack://Darkmode/./node_modules/es-object-atoms/index.js","webpack://Darkmode/./node_modules/es-object-atoms/isObject.js","webpack://Darkmode/./node_modules/es-to-primitive/es2015.js","webpack://Darkmode/./node_modules/es-to-primitive/helpers/isPrimitive.js","webpack://Darkmode/./node_modules/function-bind/implementation.js","webpack://Darkmode/./node_modules/function-bind/index.js","webpack://Darkmode/./node_modules/get-intrinsic/index.js","webpack://Darkmode/./node_modules/get-proto/Object.getPrototypeOf.js","webpack://Darkmode/./node_modules/get-proto/Reflect.getPrototypeOf.js","webpack://Darkmode/./node_modules/get-proto/index.js","webpack://Darkmode/./node_modules/gopd/gOPD.js","webpack://Darkmode/./node_modules/gopd/index.js","webpack://Darkmode/./node_modules/has-property-descriptors/index.js","webpack://Darkmode/./node_modules/has-symbols/index.js","webpack://Darkmode/./node_modules/has-symbols/shams.js","webpack://Darkmode/./node_modules/has-tostringtag/shams.js","webpack://Darkmode/./node_modules/hasown/index.js","webpack://Darkmode/./node_modules/is-callable/index.js","webpack://Darkmode/./node_modules/is-date-object/index.js","webpack://Darkmode/./node_modules/is-regex/index.js","webpack://Darkmode/./node_modules/is-symbol/index.js","webpack://Darkmode/./node_modules/math-intrinsics/abs.js","webpack://Darkmode/./node_modules/math-intrinsics/floor.js","webpack://Darkmode/./node_modules/math-intrinsics/isNaN.js","webpack://Darkmode/./node_modules/math-intrinsics/max.js","webpack://Darkmode/./node_modules/math-intrinsics/min.js","webpack://Darkmode/./node_modules/math-intrinsics/pow.js","webpack://Darkmode/./node_modules/math-intrinsics/round.js","webpack://Darkmode/./node_modules/math-intrinsics/sign.js","webpack://Darkmode/./node_modules/object-inspect/index.js","webpack://Darkmode/./node_modules/object-keys/implementation.js","webpack://Darkmode/./node_modules/object-keys/index.js","webpack://Darkmode/./node_modules/object-keys/isArguments.js","webpack://Darkmode/./node_modules/object.hasown/auto.js","webpack://Darkmode/./node_modules/object.hasown/implementation.js","webpack://Darkmode/./node_modules/object.hasown/polyfill.js","webpack://Darkmode/./node_modules/object.hasown/shim.js","webpack://Darkmode/./node_modules/safe-regex-test/index.js","webpack://Darkmode/(webpack)/buildin/global.js","webpack://Darkmode/./src/darkmode.js","webpack://Darkmode/./src/modules/bgNodeStack.js","webpack://Darkmode/./src/modules/color.js","webpack://Darkmode/./src/modules/config.js","webpack://Darkmode/./src/modules/constant.js","webpack://Darkmode/./src/modules/cssUtils.js","webpack://Darkmode/./src/modules/domUtils.js","webpack://Darkmode/./src/modules/global.js","webpack://Darkmode/./src/modules/plugins.js","webpack://Darkmode/./src/modules/sdk.js","webpack://Darkmode/./src/modules/textNodeQueue.js","webpack://Darkmode/./util.inspect (ignored)"],"names":["bind","require","$apply","$call","$reflectApply","module","exports","call","Function","prototype","apply","$TypeError","$actualApply","callBindBasic","args","length","Reflect","GetIntrinsic","$indexOf","callBoundIntrinsic","name","allowMissing","intrinsic","separableBlend","backdrop","source","callback","r","g","b","normal","screen","hardLight","Math","min","max","colorDodge","multiply","sqrt","abs","restrictNumber","value","from","to","restrictColor","color","a","convertFromUnit","convertToUnit","roundChannels","precision","multiplier","pow","round","alphaCompose","backdropAlpha","sourceAlpha","compositeAlpha","backdropColor","sourceColor","compositeColor","performBlend","abstractModeCallback","concreteModeCallback","options","unitInput","unitOutput","roundOutput","resultRGB","resultRGBA","roundChannelsBinaryFloat","nonSeparableBlend","getLuminosity","rgb","setLuminosity","luminosity","delta","lowestChannel","highestChannel","clipLowest","channel","clipHighest","clipColor","getSaturation","setSaturation","saturation","sortedChannels","sort","channelMin","channelMid","channelMax","result","hue","separableBlendModes","overlay","darken","lighten","difference","exclusion","nonSeparableBlendModes","colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","key","Object","freeze","reverseNames","create","colorNames","hasOwn","cs","get","string","prefix","slice","toLowerCase","model","hsl","hwb","abbr","hex","rgba","per","keyword","match","i","hexAlpha","i2","Number","parseInt","parseFloat","clamp","alpha","h","s","l","isNaN","w","hexDouble","arguments","undefined","percent","_len","Array","_key","number_","string_","toString","toUpperCase","skippedModels","hashedModelKeys","_i","_Object$keys","keys","convert","_toConsumableArray","labels","join","limiters","Color","object","Error","channels","valpha","colorString","newArray","zeroArray","splice","indexOf","hashedKeys","JSON","stringify","push","limit","toJSON","places","_colorString$to","self","arguments_","concat","percentString","_colorString$to$rgb","array","unitArray","unitObject","map","roundToPlace","getset","maxfn","saturationl","lightness","saturationv","chroma","wblack","x","y","z","_colorString$to2","hexa","_colorString$to3","rgbArray","alphaHex","rgbNumber","lum","_iterator","_createForOfIteratorHelper","entries","_step","n","done","_step$value","_slicedToArray","element","chan","err","e","f","contrast","color2","lum1","lum2","level","contrastRatio","isDark","yiq","isLight","negate","ratio","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","_typeof","color1","p","w1","w2","_loop","_Object$keys2","_i2","includes","assertArray","raw","_len2","_key2","_ret","roundTo","number","toFixed","modifier","isArray","_iterator2","_step2","m","v","reverseKeywords","cssKeywords","hsv","cmyk","xyz","lab","oklab","lch","oklch","ansi16","ansi256","hcg","apple","LAB_FT","srgbNonlinearTransform","c","cc","srgbNonlinearTransformInv","_convert$model","defineProperty","rdif","gdif","bdif","diff","diffc","lp","cbrt","mp","sp","aa","bb","k","comparativeDistance","reversed","currentClosestDistance","POSITIVE_INFINITY","currentClosestKeyword","_i3","_Object$keys3","distance","t3","t2","t1","smin","lmin","sv","hi","floor","q","t","vmin","sl","wh","bl","ll","y2","x2","z2","hr","atan2","PI","cos","sin","_args","ansi","mult","trunc","rem","integer","char","pure","mg","models","conversions","wrapRaw","fn","wrappedFn","arg0","conversion","wrapRounded","_models","fromModel","routes","route","routeModels","_routeModels","toModel","buildGraph","graph","parent","deriveBFS","queue","current","pop","adjacents","adjacent","node","unshift","link","wrapConversion","path","cur","multiplyMatrices","A","B","AM","BM","aVec","bVec","BM_cols","_","product","ret","row","col","dot3","multiply_v3_m3x3","input","matrix","out","isString","str","type","o","serializeNumber","unit","isNone","toPrecision","skipNone","digits","log10","interpolate","start","end","interpolateInv","mapRange","val","copySign","sign","spow","base","exp","zdiv","d","bisectLeft","arr","lo","mid","isInstance","arg","constructor","targetName","proto","getPrototypeOf","constructorName","_proto$constructor","Hooks","_classCallCheck","_createClass","first","add","forEach","env","context","hooks","gamut_mapping","deltaE","verbose","globalThis","process","_globalThis$process","_globalThis$process$e","NODE_ENV","_globalThis$process$e2","warn","msg","console","_globalThis$console","_globalThis$console$w","Type","coordMeta","_defineProperty","coordRange","range","refRange","params","trim","TypeError","groups","percentageRange","fromRange","computedRange","toRange","_this$range$","_this$range$2","scale","instance","Symbol","Format","format","space","assign","spaceCoords","values","coords","types","_this2","split","_types","_this3","serialize","id","providedType","_this4","find","coordName","_arg","resolve","WHITES","D50","D65","getWhite","adapt","adapt$2","W1","W2","XYZ","run","M","parse","String","_String","parsed","parseFunction","meta","parseMeta","argMeta","_env$parsed$argMeta$i","shift","alternateId","startsWith","substring","ids","ColorSpace","findFormat","didYouMean","registryId","registry","cssId","formats","_ColorSpace$registry$","_ColorSpace$registry$2","altColor","replace","defaults","formatId","commas","lastAlpha","alphaType","coordCount","coerceCoords","spaceId","all","spaceloop","test","formatObject","getFormat","units","deg","grad","rad","turn","regex","unitValue","RegExp","singleArgument","parseArgument","rawArg","_rawArg$match","unitless","NaN","parts","separators","$0","rawName","rawArgs","getColor","ε","aliases","fromBase","toBase","_this$formats$color","gamutSpace","isPolar","isUnbounded","inGamut","referred","getPath","reverse","writable","enumerable","configurable","_ref6$epsilon","epsilon","equals","every","coord","_this$formats","_this$formats$color3","myPath","otherPath","connectionSpace","connectionSpaceIndex","Set","_step3","alias","register","_iterator3","argType","alternatives","filters","spaces","_step4","matches","filterIds","some","_iterator4","ref","workingSpace","coordType","coordId","index","normalizedCoord","_meta$name","RGBColorSpace","_inherits","XYZ_D65","toXYZ_M","fromXYZ_M","_this5","tryColor","cssProperty","getColorOptions","error","CSS","getComputedStyle","supports","previousValue","style","computedColor","getPropertyValue","message","errorMeta","getAll","prop","resolveCoord","setAll","returns","set","ε3","κ","xyz_d50","L","Lab","constrain","angle","adjust","arc","angles","a1","a2","none1","util.isNone","none2","angleDiff","extent","isAchromatic","constrainAngle","C","Gfactor","π","r2d","d2r","pow7","x7","deltaE2000","sample","_ref11$kL","kL","_ref11$kC","kC","_ref11$kH","kH","_lab$from2","L1","b1","C1","_lab$from4","L2","b2","C2","Cbar","C7","G","adash1","adash2","Cdash1","Cdash2","h1","h2","ΔL","ΔC","hdiff","hsum","habs","Δh","ΔH","Ldash","Cdash","Cdash7","hdash","lsq","SL","SC","T","SH","Δθ","RC","RT","dE","XYZtoLMS_M","LMStoXYZ_M","LMStoLab_M","LabtoLMS_M","LMS","OKLab","LMSg","deltaEOK","_Oklab$from2","_Oklab$from4","Δa","Δb","_ref12$epsilon","clone","coords1","coords2","reduce","acc","c1","c2","deltaE76","deltaECMC","_ref13$l","_ref13$c","_lab$from6","_lch$from2","H1","_lab$from8","H2","C4","F","Yw","AbsXYZ","ninv","c3","pinv","d0","XYZtoCone_M","ConetoXYZ_M","ConetoIab_M","IabtoCone_M","jz","az","bz","XYZ_Abs_D65","Xa","Ya","Za","Xm","Ym","PQLMS","num","denom","_multiply_v3_m3x2","Iz","Jz","Jzazbz","_multiply_v3_m3x4","jzazbz","cz","hz","jzczhz","deltaEJz","_jzczhz$from2","Jz1","Cz1","Hz1","_jzczhz$from4","Jz2","Cz2","Hz2","ΔJ","m1","m2","im1","im2","LMStoIPT_M","IPTtoLMS_M","ct","cp","LMStoICtCp","ICtCp","ICtCptoLMS","ictcp","deltaEITP","_ictcp$from2","I1","T1","P1","_ictcp$from4","I2","T2","P2","deltaEOK2","abscale","_Oklab$from6","_Oklab$from8","adaptedCoef","adaptedCoefInv","tau","cat16","cat16Inv","surroundMap","dark","dim","average","hueQuadMap","H","rad2deg","deg2rad","adapt$1","fl","temp","unadapt","adapted","constant","cabs","hueQuadrature","hp","_hueQuadMap$h$slice2","hii","_hueQuadMap$e$slice2","ei","eii","Hi","invHueQuadrature","Hp","_hueQuadMap$h$slice4","_hueQuadMap$e$slice4","environment","refWhite","adaptingLuminance","backgroundLuminance","surround","discounting","xyzW","la","yb","yw","rgbW","nc","k4","flRoot","nbb","ncb","dRgb","dRgbInv","rgbCW","rgbAW","aW","viewingConditions","fromCam16","cam16","J","Q","hRad","cosh","sinh","Jroot","et","p1","p2","rgb_c","toCam16","xyzd65","xyz100","rgbA","j","xyz_d65","toLstar","fy","fromLstar","lstar","fromHct","threshold","max_attempts","attempt","last","Infinity","toHct","hct","ucsCoeff","convertUcsAb","log","hrad","deltaEHCT","_convertUcsAb2","_convertUcsAb4","calcEpsilon","jnd","order","GMAPPRESET","method","deltaEMethod","blackWhiteClamp","toGamut","_ref14$method","_ref14$space","_ref14$deltaEMethod","_ref14$jnd","_ref14$blackWhiteClam","util.isString","spaceColor","toGamutCSS","hasOwnProperty","de","deltaEMethods","clipped","channelMeta","mapSpace","mappedColor","bounds","low","high","COLORS","WHITE","BLACK","origin","JND","oklchSpace","origin_OKLCH","clip","_color","destColor","util.clamp","min_inGamut","E","_options$inGamut","coordFormat","alphaFormat","colorWithMeta","canSerialize","DEFAULT_FORMAT","checkInGamut","serializeCoords","_format$ids","include","_alphaFormat2","serializeAlpha","_alphaFormat3","_alphaFormat4","strAlpha","util.serializeNumber","REC2020Linear","RGB","coordGrammar","fill","coordGrammarNumber","sRGBLinear","rgb_number","rgba_number","component","_ref17$collapse","collapse","collapsible","padStart","KEYWORDS","P3Linear","sRGB","display_space","supportsNone","REC2020","P3","getMinCoords","display","_ref18$space","fallbackColor","hasNone","deltas","_ref19$hue","_map4","coord1","coord2","subtractCoords","getLuminance","setLuminance","register$2","contrastWCAG21","Y1","Y2","normBG","normTXT","revTXT","revBG","blkThrs","blkClmp","loClip","deltaYmin","scaleBoW","loBoWoffset","scaleWoB","fclamp","Y","linearize","contrastAPCA","background","foreground","S","Sapc","R","lumTxt","lumBg","Ytxt","Ybg","BoW","contrastMichelson","contrastWeber","contrastLstar","phi","contrastDeltaPhi","Lstr1","lab_d65","Lstr2","deltaPhiStar","SQRT2","algorithm","rest","algorithms","contrastAlgorithms","uv","_getAll2","X","Z","xy","_getAll4","sum","register$1","_o$method","amount","steps","colorRange","isRange","rangeArgs","maxDeltaE","_options$steps","_options$maxSteps","maxSteps","rangeOptions","totalDelta","actualSteps","ceil","step","maxDelta","ΔΕ","prev","outputSpace","progression","premultiplied","interpolationSpace","θ1","θ2","angles.adjust","defineFunction","hsla","HSV","A98Linear","XYZ_D50","Et","Et2","ProPhotoLinear","α","β","toSRGBLinear","RGBCoeff","floatMax","MAX_VALUE","K1","K2","K3","vdot","toe","toeInv","toSt","cusp","getStMid","oklabToLinearRGB","lmsToRgb","lms","findCusp","okCoeff","sCusp","computeMaxSaturation","lCusp","cCusp","findGamutIntersection","l1","l0","dl","dc","kl","km","ks","ldt_","mdt_","sdt_","l_","m_","s_","ldt","mdt","sdt","ldt2","mdt2","sdt2","r_","r1","r2","ur","tr","g_","g1","g2","ug","tg","b_","ub","tb","getCs","cMax","stMax","stMid","ca","cb","cMid","c0","k0","k1","k2","k3","wl","wm","ws","sat","lds","mds","sds","lds2","mds2","sds2","f1","f2","okhslToOklab","a_","_getCs2","midInv","oklabToOkhsl","εL","εS","_getCs4","achromatic","Oklab","oklrab","OKLrab","okhsvToOklab","_toSt2","sMax","tMax","s0","lv","cv","lvt","cvt","lNew","_oklabToLinearRGB2","rs","gs","bs","scaleL","oklabToOkhsv","_toSt4","_oklabToLinearRGB4","_uv2","U_PRIME_WHITE","V_PRIME_WHITE","u","_uv4","up","vp","isFinite","Luv","m_r0","m_r1","m_r2","m_g0","m_g1","m_g2","m_b0","m_b1","m_b2","distanceFromOriginAngle","slope","intercept","calculateBoundingLines","sub1","sub2","s1r","s2r","s3r","s1g","s2g","s3g","s1b","s2b","s3b","r0s","r0i","r1s","r1i","g0s","g0i","g1s","g1i","b0s","b0i","b1s","b1i","calcMaxChromaHsluv","lines","hueRad","r0","g0","b0","LCHuv","distanceFromOrigin","calcMaxChromaHpluv","REC_2020_Linear","minv","REC_2100_Linear","CATs","defineCAT","toCone_M","fromCone_M","_multiplyMatrices2","ρs","γs","βs","_multiplyMatrices4","ρd","γd","βd","scaled_cone_M","adapt_M","D55","D75","F2","F7","F11","ACES","ACES_min_nonzero","ACES_cc_max","log2","ACEScg","_this6","util.isInstance","code","func","defineFunctions","util","Space","addSpaceAccessors","_space$aliases","propId","Proxy","proxy","has","obj","property","receiver","_this7","extend","variations","chromaticity","luminance","interpolation","contrastMethods","iterator","$defineProperty","$SyntaxError","gopd","defineDataProperty","nonEnumerable","nonWritable","nonConfigurable","loose","desc","hasSymbols","toStr","isFunction","supportsDescriptors","predicate","defineProperties","predicates","props","getOwnPropertySymbols","callBind","gOPD","hasProtoAccessor","__proto__","$Object","$getPrototypeOf","getDunder","isCallable","inspect","GetV","isPropertyKey","GetMethod","O","P","V","argument","isObject","HasOwnProperty","toPrimitive","ToPrimitive","$String","ToString","ToPropertyKey","EvalError","RangeError","ReferenceError","SyntaxError","URIError","RequireObjectCoercible","ToObject","isDate","isSymbol","isPrimitive","OrdinaryToPrimitive","hint","methodNames","exoticToPrim","valueOf","ERROR_MESSAGE","funcType","concatty","slicy","arrLike","offset","joiny","joiner","that","target","bound","binder","boundLength","boundArgs","Empty","implementation","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","callee","calleeThrows","gOPDthrows","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Map","Promise","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","reflectGetProto","originalGetProto","getDunderProto","getOwnPropertyDescriptor","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","hasNativeSymbols","sym","symObj","symVal","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","hasToStringTagShams","toStringTag","$hasOwn","fnToStr","reflectApply","badArrayLike","isCallableMarker","constructorRegex","isES6ClassFn","isES6ClassFunction","fnStr","tryFunctionObject","tryFunctionToStr","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","hasToStringTag","isIE68","isDDA","isDocumentDotAll","document","strClass","callBound","getDay","tryDateObject","tryDateGetDayCall","dateClass","isDateObject","isRegexMarker","throwRegexMarker","badStringifier","isRegex","hasLastIndexDataProperty","$toString","regexClass","safeRegexTest","$symToStr","isSymString","isSymbolObject","isRealSymbolObject","$isNaN","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","quotes","single","quoteREs","inspect_","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","getIndent","noIndent","newOpts","isRegExp","nameOf","arrObjKeys","symString","markBoxed","isElement","nodeName","attrs","attributes","wrapQuotes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","window","global","ys","isPlainObject","protoTag","stringTag","constructorTag","tag","defaultStyle","quoteChar","canTrustToString","HTMLElement","getAttribute","remaining","trailer","quoteRE","lastIndex","lowbyte","charCodeAt","size","joinedEntries","baseIndent","lineJoiner","isArr","symMap","keysShim","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","isArguments","theKeys","skipProto","skipConstructor","origKeys","originalKeys","shim","shimObjectKeys","keysWorksWithArguments","getPolyfill","define","shimObjectHasOwn","polyfill","regexTester","classReg","CLASS_PREFIX","mql","switchToDarkmode","mqlObj","opt","force","cssUtils","isFinish","sdk","isDarkmode","config","mode","begin","domUtils","hasDelay","className","plugins","needJudgeFirstPage","addCss","rect","getBoundingClientRect","top","bottom","PAGE_HEIGHT","addFirstPageNode","writeStyle","showFirstPageNodes","showFirstPage","loopTimes","tnQueue","text","bgStack","contains","bg","genCss","cssKV","els","elOld","el","_el$COLORATTR","_el$BGCOLORATTR","_el$ORIGINAL_COLORATT","_el$ORIGINAL_BGCOLORA","_el$BGIMAGEATTR","_el$COMPLEMENTARY_BGI","inheritAttrs","COLORATTR","BGCOLORATTR","ORIGINAL_COLORATTR","ORIGINAL_BGCOLORATTR","BGIMAGEATTR","COMPLEMENTARY_BGIMAGECOLORATTR","children","getChildrenAndIt","child","_ref","_ref2","attr","emptyFirstPageNodes","delayBgJudge","container","delay","nodes","init","hasInit","tagName","whitelist","attribute","item","getElementsByTagName","classList","HTML_CLASS","matchMedia","MEDIA_QUERY","addListener","convertBg","update","updateStyle","styles","getContrast","pluginList","plugin","BgNodeStack","_prefix","classNameReg","_idx","_stack","updated","idxStack","bgRect","left","right","idx","nodeType","COLOR_NAME","_objectSpread","ColorName","windowtext","transparent","COLOR_NAME_REG","colorName","color2ColorBlend","colorBlend2Color","colorBlend","ColorParser","res","ColorJS","parseColorName","supportTransparent","IMPORTANT_REGEXP","parseWebkitFillColorAndStrokeColor","newValue","COLOR_REGEXP","mixColors","ColorBlend","getColorPerceivedBrightness","adjustBrightnessTo","relativeBrightnessRatio","newTextR","newTextG","newTextB","cssSelectorsPrefix","defaultLightTextColor","DEFAULT_LIGHT_TEXTCOLOR","defaultLightBgColor","DEFAULT_LIGHT_BGCOLOR","defaultDarkTextColor","DEFAULT_DARK_TEXTCOLOR","defaultDarkBgColor","DEFAULT_DARK_BGCOLOR","DM_CLASSNAME_REGEXP","RANDOM","random","BG_COLOR_DELIMITER","WHITE_LIKE_COLOR_BRIGHTNESS","MAX_LIMIT_BGCOLOR_BRIGHTNESS","MIN_LIMIT_OFFSET_BRIGHTNESS","HIGH_BGCOLOR_BRIGHTNESS","HIGH_BLACKWHITE_HSL_BRIGHTNESS","LOW_BLACKWHITE_HSL_BRIGHTNESS","IGNORE_ALPHA","getInnerHeight","innerHeight","documentElement","clientHeight","CSS_PROP_SERIES","BG_COLOR","TEXT_SHADOW","TEXT_COLOR","BORDER_COLOR","CSS_PROP_LIST","TABLE_NAME","SEMICOLON_PLACEHOLDER","SEMICOLON_PLACEHOLDER_REGEXP","COLOR_REGEXP_STR","COLOR_REGEXP_GLOBAL","CssUtils","genCssKV","_this$_watcher$key","_this$_watcher","_watcher","css","isFirstPageStyle","needMediaQuery","_ref$key","other","styleKey","head","insertAdjacentHTML","watch","unwatch","exceptIt","querySelectorAll","hasTextNode","textContent","tableClassObj","hasTableClass","DomUtils","_els","_delayEls","_this","_firstPageEls","visibility","Plugins","TextNodeQueue","SDK","cssNeedMQ","cssNoMQ","Plugin","kvList","_plugins","emit","firstPageStyle","firstPageStyleNoMQ","otherPageStyle","otherPageStyleNoMQ","resetCss","_adjustBrightness","isUpdate","needReset","newColor","extStyle","isBgColor","dom","_adjustBackgroundBrightness","hasInlineColor","parentTextColorStr","parentTextColor","isTextColor","parentElementBgColorStr","isBorderColor","parentElementBgColor","_adjustTextBrightness","emitNameSuffix","fontColor","bgColor","isTextShadow","textColor","bgColorRgb","bgColorAlpha","bgColorPerceivedBrightness","bgColorWithOpacityPerceivedBrightness","_defaultDarkBgColorBrightness","textColorRgb","textColorHSL","textColorAlpha","textPerceivedBrightness","offsetPerceivedBrightness","_maxLimitOffsetBrightness","tmpTextColor","bgColorHsl","_defaultDarkBgColorHslBrightness","_updateBgWithGradient","gradientColor","cssKVList","newBgColor","newOriginalBgColor","lastKV","_try","_defaultDarkTextColorRgb","_defaultDarkBgColorRgb","_defaultDarkBgColorHSL","_defaultDarkTextColorBrightness","bgCss","hasAttribute","cssText","cssStr","splitIdx","hasInlineBackground","hasInlineBackgroundImage","elBackgroundPositionAttr","elBackgroundSizeAttr","filter","_ref3","_ref4","_ref5","key1","_ref6","key2","colorStr","webkitFillColor","webkitStrokeColor","webkitTextLen","_ref7","_ref8","dmClassName","dmBgClassName","noColor","_ref9","_ref10","oldValue","cssChange","textColorIdx","isGradient","gradientColors","gradientMixColor","replaceIndex","matchColor","retColor","retColorStr","SVGElement","isBackgroundAttr","isBorderImageAttr","imgBgColor","tmpCssKvStr","bgStackItem","bgEl","colorStr1","colorStr2","_queue"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;;AAEb,IAAIA,IAAI,GAAGC,mBAAO,CAAC,4DAAe,CAAC;AAEnC,IAAIC,MAAM,GAAGD,mBAAO,CAAC,gFAAiB,CAAC;AACvC,IAAIE,KAAK,GAAGF,mBAAO,CAAC,8EAAgB,CAAC;AACrC,IAAIG,aAAa,GAAGH,mBAAO,CAAC,8EAAgB,CAAC;;AAE7C;AACAI,MAAM,CAACC,OAAO,GAAGF,aAAa,IAAIJ,IAAI,CAACO,IAAI,CAACJ,KAAK,EAAED,MAAM,CAAC,C;;;;;;;;;;;;ACT7C;;AAEb;AACAG,MAAM,CAACC,OAAO,GAAGE,QAAQ,CAACC,SAAS,CAACC,KAAK,C;;;;;;;;;;;;ACH5B;;AAEb;AACAL,MAAM,CAACC,OAAO,GAAGE,QAAQ,CAACC,SAAS,CAACF,IAAI,C;;;;;;;;;;;;ACH3B;;AAEb,IAAIP,IAAI,GAAGC,mBAAO,CAAC,4DAAe,CAAC;AACnC,IAAIU,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;AAE1C,IAAIE,KAAK,GAAGF,mBAAO,CAAC,8EAAgB,CAAC;AACrC,IAAIW,YAAY,GAAGX,mBAAO,CAAC,4EAAe,CAAC;;AAE3C;AACAI,MAAM,CAACC,OAAO,GAAG,SAASO,aAAaA,CAACC,IAAI,EAAE;EAC7C,IAAIA,IAAI,CAACC,MAAM,GAAG,CAAC,IAAI,OAAOD,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;IACrD,MAAM,IAAIH,UAAU,CAAC,wBAAwB,CAAC;EAC/C;EACA,OAAOC,YAAY,CAACZ,IAAI,EAAEG,KAAK,EAAEW,IAAI,CAAC;AACvC,CAAC,C;;;;;;;;;;;;ACdY;;AAEb;AACAT,MAAM,CAACC,OAAO,GAAG,OAAOU,OAAO,KAAK,WAAW,IAAIA,OAAO,IAAIA,OAAO,CAACN,KAAK,C;;;;;;;;;;;;ACH9D;;AAEb,IAAIO,YAAY,GAAGhB,mBAAO,CAAC,4DAAe,CAAC;AAE3C,IAAIY,aAAa,GAAGZ,mBAAO,CAAC,gFAAyB,CAAC;;AAEtD;AACA,IAAIiB,QAAQ,GAAGL,aAAa,CAAC,CAACI,YAAY,CAAC,4BAA4B,CAAC,CAAC,CAAC;;AAE1E;AACAZ,MAAM,CAACC,OAAO,GAAG,SAASa,kBAAkBA,CAACC,IAAI,EAAEC,YAAY,EAAE;EAChE;;EAEA,IAAIC,SAAS,GAAG,6DAA+DL,YAAY,CAACG,IAAI,EAAE,CAAC,CAACC,YAAY,CAAE;EAClH,IAAI,OAAOC,SAAS,KAAK,UAAU,IAAIJ,QAAQ,CAACE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE;IAC1E,OAAOP,aAAa,EAAC,oBAAsB,CAACS,SAAS,CAAE,CAAC;EACzD;EACA,OAAOA,SAAS;AACjB,CAAC,C;;;;;;;;;;;;ACTuBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,WACtBC,GACAC,GACAC;EAEA,OAAO;IACLC,GAAgD,MAA7CD,EAASF,EAASG,IAAI,KAAKF,EAAOE,IAAI;IACzCC,GAAgD,MAA7CF,EAASF,EAASI,IAAI,KAAKH,EAAOG,IAAI;IACzCC,GAAgD,MAA7CH,EAASF,EAASK,IAAI,KAAKJ,EAAOI,IAAI;EAAA;AAAA;AAAA,SCJ7BC,EAAON,GAAkBC;EACvC,OAAOA;AAAAA;AAUO,WAASD,GAAkBC;EACzC,OAAOD,IAAWC;AAAAA;AAAAA,SAUJM,EAAOP,GAAkBC;EACvC,OAAOD,IAAWC,IAASD,IAAWC;AAAAA;AAUxB,WAAQD,GAAkBC;EACxC,OAAOO,EAAUP,GAAQD;AAAAA;AAUX,WAAOA,GAAkBC;EACvC,OAAOQ,KAAKC,IAAIV,GAAUC;AAAAA;AAUZ,WAAQD,GAAkBC;EACxC,OAAOQ,KAAKC,IAAID,KAAKE,IAAIX,GAAUC,IAAS;AAAA;AAU9BW,WAAWZ,GAAkBC;EAC3C,OAAoB,MAAbD,IACH,IACW,MAAXC,IACA,IACAQ,KAAKC,IAAI,GAAGV,KAAY,IAAIC;AAAAA;AAUlB,WAAUD,GAAkBC;EAC1C,OAAoB,MAAbD,IACH,IACW,MAAXC,IACA,IACA,IAAIQ,KAAKC,IAAI,IAAI,IAAIV,KAAYC;AAAAA;AAAAA,SAUvBO,EAAUR,GAAkBC;EAC1C,OAAOA,KAAU,KACbY,EAASb,GAAU,IAAIC,KACvBM,EAAOP,GAAU,IAAIC,IAAS;AAAA;AAUpB,WAAUD,GAAkBC;EAC1C,OAAOA,KAAU,KACbD,KAAY,IAAI,IAAIC,KAAUD,KAAY,IAAIA,KAC9CA,KACG,IAAIC,IAAS,OACVD,KAAY,QACR,KAAKA,IAAW,MAAMA,IAAW,KAAKA,IACxCS,KAAKK,KAAKd,MACZA;AAAAA;AAUI,WAAWA,GAAkBC;EAC3C,OAAOQ,KAAKM,IAAIf,IAAWC;AAAAA;AAUb,WAAUD,GAAkBC;EAC1C,OAAOD,IAAWC,IAAS,IAAID,IAAWC;AAAAA;AC7I5C,SAASe,EAAeC,GAAeC,GAAcC;EACnD,OAAOV,KAAKC,IAAID,KAAKE,IAAIM,KAAS,GAAGC,IAAOC;AAAAA;AAQ9C,SAASC,EAAcC;EACrB,OAAO;IACLlB,GAAGa,EAAeK,EAAMlB,GAAG,GAAG;IAC9BC,GAAGY,EAAeK,EAAMjB,GAAG,GAAG;IAC9BC,GAAGW,EAAeK,EAAMhB,GAAG,GAAG;IAC9BiB,GAAGN,EAAeK,EAAMC,GAAG,GAAG;EAAA;AAAA;AAWlBC,WAAgBF;EAC9B,OAAO;IACLlB,GAAa,MAAVkB,EAAMlB;IACTC,GAAa,MAAViB,EAAMjB;IACTC,GAAa,MAAVgB,EAAMhB;IACTiB,GAAGD,EAAMC;EAAAA;AAAAA;AAWP,SAAUE,EAAcH;EAC5B,OAAO;IACLlB,GAAGkB,EAAMlB,IAAI;IACbC,GAAGiB,EAAMjB,IAAI;IACbC,GAAGgB,EAAMhB,IAAI;IACbiB,GAAGD,EAAMC;EAAAA;AAAAA;AAYb,SAASG,EAAcJ,GAAYK;EAAAA,qBAAoB;EACrD,IAAMC,IAAalB,KAAKmB,IAAI,IAAIF;EAEhC,OAAO;IACLvB,GAAGM,KAAKoB,MAAMR,EAAMlB,IAAIwB,KAAcA;IACtCvB,GAAGK,KAAKoB,MAAMR,EAAMjB,IAAIuB,KAAcA;IACtCtB,GAAGI,KAAKoB,MAAMR,EAAMhB,IAAIsB,KAAcA;IACtCL,GAAGD,EAAMC;EAAAA;AAAAA;AAwBb,SAASQ,EACPC,GACAC,GACAC,GACAC,GACAC,GACAC;EAEA,QACG,IAAIJ,IAAcC,KAAkBC,IACpCF,IAAcC,IACbxB,KAAKoB,OACF,IAAIE,KAAiBI,IAAcJ,IAAgBK;AAAAA;AA2C5CC,WACdrC,GACAC,GACAqC,GAKAC,GACAC;EAAAA,qBAAiC;IAC/BC,YAAW;IACXC,aAAY;IACZC,cAAa;EAAA,IAIXH,EAAQC,cACVzC,IAAWuB,EAAgBvB,IAC3BC,IAASsB,EAAgBtB,KAI3BD,IAAWoB,EAAcpB;EAIzB,IAAMsB,KAHNrB,IAASmB,EAAcnB,IAGNqB,IAAItB,EAASsB,IAAIrB,EAAOqB,IAAItB,EAASsB;IAGhDsB,IAAYN,EAAqBtC,GAAUC,GAAQsC;IAIrDM,IAAazB,EAAc;MAC7BjB,GAAG2B,EAAa9B,EAASsB,GAAGrB,EAAOqB,GAAGA,GAAGtB,EAASG,GAAGF,EAAOE,GAAGyC,EAAUzC;MACzEC,GAAG0B,EAAa9B,EAASsB,GAAGrB,EAAOqB,GAAGA,GAAGtB,EAASI,GAAGH,EAAOG,GAAGwC,EAAUxC;MACzEC,GAAGyB,EAAa9B,EAASsB,GAAGrB,EAAOqB,GAAGA,GAAGtB,EAASK,GAAGJ,EAAOI,GAAGuC,EAAUvC;MACzEiB,GAAGA;IAAAA;EAgBL,OAXEuB,IADEL,EAAQE,aACGlB,EAAcqB,KAGlBL,EAAQG,cACJlB,EAAcoB,KApH/B,UAAkCxB;IAChC,OAAOI,EAAcJ,GAAO;EAAA,CAuHbyB,CAAyBD,IAGjCA;AAAAA;ACtMeE,WACtB/C,GACAC,GACAC;EAEA,OAAOqB,EACLrB,EAASsB,EAAcxB,IAAWwB,EAAcvB;AAAAA;ACJpD,SAAS+C,EAAcC;EACrB,OAAO,KAAMA,EAAI9C,IAAI,MAAO8C,EAAI7C,IAAI,MAAO6C,EAAI5C;AAAAA;AAmDjD,SAAS6C,EAAcD,GAAUE;EAC/B,IAAMC,IAAQD,IAAaH,EAAcC;EAEzC,OA9CF,UAAmBA;IACjB,IAAME,IAAaH,EAAcC;MAC3B9C,IAAY8C,EAAZ9C;MAAGC,IAAS6C,EAAT7C;MAAGC,IAAM4C,EAAN5C;MAENgD,IAAgB5C,KAAKC,IAAIP,GAAGC,GAAGC;MAC/BiD,IAAiB7C,KAAKE,IAAIR,GAAGC,GAAGC;IAEtC,SAASkD,EAAWC;MAClB,OACEL,KACEK,IAAUL,KAAcA,KAAeA,IAAaE;IAAAA;IAI1D,SAASI,EAAYD;MACnB,OACEL,KACEK,IAAUL,MAAe,IAAIA,MAC5BG,IAAiBH;IAAAA;IAgBxB,OAZIE,IAAgB,MAClBlD,IAAIoD,EAAWpD,IACfC,IAAImD,EAAWnD,IACfC,IAAIkD,EAAWlD,KAGbiD,IAAiB,MACnBnD,IAAIsD,EAAYtD,IAChBC,IAAIqD,EAAYrD,IAChBC,IAAIoD,EAAYpD,KAGX;MAAEF;MAAGC;MAAGC;IAAAA;EAAAA,CAYRqD,CAAU;IACfvD,GAAG8C,EAAI9C,IAAIiD;IACXhD,GAAG6C,EAAI7C,IAAIgD;IACX/C,GAAG4C,EAAI5C,IAAI+C;EAAAA;AAAAA;AASf,SAASO,EAAcV;EACrB,OAAOxC,KAAKE,IAAIsC,EAAI9C,GAAG8C,EAAI7C,GAAG6C,EAAI5C,KAAKI,KAAKC,IAAIuC,EAAI9C,GAAG8C,EAAI7C,GAAG6C,EAAI5C;AAAAA;AASpE,SAASuD,EAAcX,GAAUY;EAC/B,IAAMC,IAAiB,CAAC,KAAK,KAAK,KAAKC,KACrC,UAACzC,GAAGjB;MAAM4C,SAAI3B,KAAkB2B,EAAI5C;IAAAA;IAEhC2D,IAAaF,EAAe;IAC5BG,IAAaH,EAAe;IAC5BI,IAAaJ,EAAe;IAE5BK,IAAS;MACbhE,GAAG8C,EAAI9C;MACPC,GAAG6C,EAAI7C;MACPC,GAAG4C,EAAI5C;IAAAA;EAcT,OAXI8D,EAAOD,KAAcC,EAAOH,MAC9BG,EAAOF,MACHE,EAAOF,KAAcE,EAAOH,MAAeH,KAC5CM,EAAOD,KAAcC,EAAOH,KAC/BG,EAAOD,KAAcL,KAErBM,EAAOF,KAAcE,EAAOD,KAAc,GAG5CC,EAAOH,KAAc,GAEdG;AAAAA;AAUOC,WAAIpE,GAAeC;EACjC,OAAOiD,EACLU,EAAc3D,GAAQ0D,EAAc3D,KACpCgD,EAAchD;AAAAA;AAWF6D,WAAW7D,GAAeC;EACxC,OAAOiD,EACLU,EAAc5D,GAAU2D,EAAc1D,KACtC+C,EAAchD;AAAAA;AAWFqB,WAAMrB,GAAeC;EACnC,OAAOiD,EAAcjD,GAAQ+C,EAAchD;AAAAA;AAAAA,SAU7BmD,EAAWnD,GAAeC;EACxC,OAAOiD,EAAclD,GAAUgD,EAAc/C;AAAAA;AAAAA,SCpJ/BK,EAAON,GAAgBC;EACrC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWYxD,WAASb,GAAgBC;EACvC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWY,WAAOrE,GAAgBC;EACrC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAAAA,SAWYC,EAAQtE,GAAgBC;EACtC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWYE,WAAOvE,GAAgBC;EACrC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWYG,WAAQxE,GAAgBC;EACtC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWYzD,WAAWZ,GAAgBC;EACzC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWY,WAAUrE,GAAgBC;EACxC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWY,WAAUrE,GAAgBC;EACxC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWY,WAAUrE,GAAgBC;EACxC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAAAA,SAWYI,EAAWzE,GAAgBC;EACzC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWYK,WAAU1E,GAAgBC;EACxC,OAAOoC,EACLrC,GACAC,GACAF,GACAsE;AAAAA;AAWYD,WAAIpE,GAAgBC;EAClC,OAAOoC,EACLrC,GACAC,GACA8C,GACA4B;AAAAA;AAWYd,WAAW7D,GAAgBC;EACzC,OAAOoC,EACLrC,GACAC,GACA8C,GACA4B;AAAAA;AAWY,WAAM3E,GAAgBC;EACpC,OAAOoC,EACLrC,GACAC,GACA8C,GACA4B;AAAAA;AAAAA,SAWYxB,EAAWnD,GAAgBC;EACzC,OAAOoC,EACLrC,GACAC,GACA8C,GACA4B;AAAAA;;;;;;;;;;;;;ACrQJ;AAAA,IAAMC,MAAM,GAAG;EACdC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACnBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAChBC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACjBC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC1BC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACpBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACzBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACzBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACrBC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACtBC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACnBC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACrBC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EAC7BC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EACtBC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EAC1BC,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EAC7BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACzBC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC1BC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACpBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;EAC5BC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EAC3BC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EAC3BC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACzBC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EACxBC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACxBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EAC1BC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACtBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACnBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACzBC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAClBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EAC3BC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACxBC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;EACpBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACxBC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrCC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,aAAa,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EACjBC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EACxBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACtBC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACnBC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACjCC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACvBC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC5BC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC7BC,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAChCC,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAChCC,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EAC/BC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC/BC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EACjBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACpBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACzBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACrBC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;EACvBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC9BC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EACpBC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;EACrBC,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EAC7BC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAChBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EAC1BC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;EAC1BC,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;EACvBC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACrBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;EACzBC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrBC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1BC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACpBC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;EACnBC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxBC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;EACzBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACvBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtBC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3BC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;EACrBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;AAC3B,CAAC;AAED,KAAK,IAAMC,GAAG,IAAIrJ,MAAM;EAAEsJ,MAAM,CAACC,MAAM,CAACvJ,MAAM,CAACqJ,GAAG,CAAC,CAAC;AAAC;AACtCC,qEAAM,CAACC,MAAM,CAACvJ,MAAM,CAAC,E;;;;;;;;;;;;ACxJpC;AAAA;AAAoC;AAEpC,IAAMwJ,YAAY,GAAGF,MAAM,CAACG,MAAM,CAAC,IAAI,CAAC;;AAExC;AACA,KAAK,IAAMzO,IAAI,IAAI0O,kDAAU,EAAE;EAC9B,IAAIJ,MAAM,CAACK,MAAM,CAACD,kDAAU,EAAE1O,IAAI,CAAC,EAAE;IACpCwO,YAAY,CAACE,kDAAU,CAAC1O,IAAI,CAAC,CAAC,GAAGA,IAAI;EACtC;AACD;AAEA,IAAM4O,EAAE,GAAG;EACVrN,EAAE,EAAE,CAAC,CAAC;EACNsN,GAAG,EAAE,CAAC;AACP,CAAC;AAEDD,EAAE,CAACC,GAAG,GAAG,UAAUC,MAAM,EAAE;EAC1B,IAAMC,MAAM,GAAGD,MAAM,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC/C,IAAI5N,KAAK;EACT,IAAI6N,KAAK;EACT,QAAQH,MAAM;IACb,KAAK,KAAK;MAAE;QACX1N,KAAK,GAAGuN,EAAE,CAACC,GAAG,CAACM,GAAG,CAACL,MAAM,CAAC;QAC1BI,KAAK,GAAG,KAAK;QACb;MACD;IAEA,KAAK,KAAK;MAAE;QACX7N,KAAK,GAAGuN,EAAE,CAACC,GAAG,CAACO,GAAG,CAACN,MAAM,CAAC;QAC1BI,KAAK,GAAG,KAAK;QACb;MACD;IAEA;MAAS;QACR7N,KAAK,GAAGuN,EAAE,CAACC,GAAG,CAACxL,GAAG,CAACyL,MAAM,CAAC;QAC1BI,KAAK,GAAG,KAAK;QACb;MACD;EACD;EAEA,IAAI,CAAC7N,KAAK,EAAE;IACX,OAAO,IAAI;EACZ;EAEA,OAAO;IAAC6N,KAAK,EAALA,KAAK;IAAE7N,KAAK,EAALA;EAAK,CAAC;AACtB,CAAC;AAEDuN,EAAE,CAACC,GAAG,CAACxL,GAAG,GAAG,UAAUyL,MAAM,EAAE;EAC9B,IAAI,CAACA,MAAM,EAAE;IACZ,OAAO,IAAI;EACZ;EAEA,IAAMO,IAAI,GAAG,oBAAoB;EACjC,IAAMC,GAAG,GAAG,+BAA+B;EAC3C,IAAMC,IAAI,GAAG,wMAAwM;EACrN,IAAMC,GAAG,GAAG,iHAAiH;EAC7H,IAAMC,OAAO,GAAG,SAAS;EAEzB,IAAIpM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACtB,IAAIqM,KAAK;EACT,IAAIC,CAAC;EACL,IAAIC,QAAQ;EAEZ,IAAIF,KAAK,GAAGZ,MAAM,CAACY,KAAK,CAACJ,GAAG,CAAC,EAAE;IAC9BM,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC;IACnBA,KAAK,GAAGA,KAAK,CAAC,CAAC,CAAC;IAEhB,KAAKC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACvB;MACA,IAAME,EAAE,GAAGF,CAAC,GAAG,CAAC;MAChBtM,GAAG,CAACsM,CAAC,CAAC,GAAGG,MAAM,CAACC,QAAQ,CAACL,KAAK,CAACV,KAAK,CAACa,EAAE,EAAEA,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IACtD;IAEA,IAAID,QAAQ,EAAE;MACbvM,GAAG,CAAC,CAAC,CAAC,GAAGyM,MAAM,CAACC,QAAQ,CAACH,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG;IAC7C;EACD,CAAC,MAAM,IAAIF,KAAK,GAAGZ,MAAM,CAACY,KAAK,CAACL,IAAI,CAAC,EAAE;IACtCK,KAAK,GAAGA,KAAK,CAAC,CAAC,CAAC;IAChBE,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC;IAEnB,KAAKC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACvBtM,GAAG,CAACsM,CAAC,CAAC,GAAGG,MAAM,CAACC,QAAQ,CAACL,KAAK,CAACC,CAAC,CAAC,GAAGD,KAAK,CAACC,CAAC,CAAC,EAAE,EAAE,CAAC;IAClD;IAEA,IAAIC,QAAQ,EAAE;MACbvM,GAAG,CAAC,CAAC,CAAC,GAAGyM,MAAM,CAACC,QAAQ,CAACH,QAAQ,GAAGA,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG;IACxD;EACD,CAAC,MAAM,IAAIF,KAAK,GAAGZ,MAAM,CAACY,KAAK,CAACH,IAAI,CAAC,EAAE;IACtC,KAAKI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACvBtM,GAAG,CAACsM,CAAC,CAAC,GAAGG,MAAM,CAACE,UAAU,CAACN,KAAK,CAACC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC;IAEA,IAAID,KAAK,CAAC,CAAC,CAAC,EAAE;MACbrM,GAAG,CAAC,CAAC,CAAC,GAAGqM,KAAK,CAAC,CAAC,CAAC,GAAGI,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGI,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF;EACD,CAAC,MAAM,IAAIA,KAAK,GAAGZ,MAAM,CAACY,KAAK,CAACF,GAAG,CAAC,EAAE;IACrC,KAAKG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MACvBtM,GAAG,CAACsM,CAAC,CAAC,GAAG9O,IAAI,CAACoB,KAAK,CAAC6N,MAAM,CAACE,UAAU,CAACN,KAAK,CAACC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5D;IAEA,IAAID,KAAK,CAAC,CAAC,CAAC,EAAE;MACbrM,GAAG,CAAC,CAAC,CAAC,GAAGqM,KAAK,CAAC,CAAC,CAAC,GAAGI,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGI,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF;EACD,CAAC,MAAM,IAAIA,KAAK,GAAGZ,MAAM,CAACG,WAAW,CAAC,CAAC,CAACS,KAAK,CAACD,OAAO,CAAC,EAAE;IACvD,IAAIC,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE;MAC/B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpB;IAEA,IAAI,CAACpB,MAAM,CAACK,MAAM,CAACD,kDAAU,EAAEgB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;MACzC,OAAO,IAAI;IACZ;;IAEA;IACArM,GAAG,GAAGqL,kDAAU,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACV,KAAK,CAAC,CAAC;IAClC3L,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEV,OAAOA,GAAG;EACX,CAAC,MAAM;IACN,OAAO,IAAI;EACZ;EAEA,KAAKsM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IACvBtM,GAAG,CAACsM,CAAC,CAAC,GAAGM,KAAK,CAAC5M,GAAG,CAACsM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;EAC/B;EAEAtM,GAAG,CAAC,CAAC,CAAC,GAAG4M,KAAK,CAAC5M,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAE5B,OAAOA,GAAG;AACX,CAAC;AAEDuL,EAAE,CAACC,GAAG,CAACM,GAAG,GAAG,UAAUL,MAAM,EAAE;EAC9B,IAAI,CAACA,MAAM,EAAE;IACZ,OAAO,IAAI;EACZ;EAEA,IAAMK,GAAG,GAAG,yKAAyK;EACrL,IAAMO,KAAK,GAAGZ,MAAM,CAACY,KAAK,CAACP,GAAG,CAAC;EAE/B,IAAIO,KAAK,EAAE;IACV,IAAMQ,KAAK,GAAGJ,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,IAAMS,CAAC,GAAG,CAAEL,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAI,GAAG,IAAI,GAAG;IAC3D,IAAMU,CAAC,GAAGH,KAAK,CAACH,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACpD,IAAMW,CAAC,GAAGJ,KAAK,CAACH,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACpD,IAAMhO,CAAC,GAAGuO,KAAK,CAACH,MAAM,CAACQ,KAAK,CAACJ,KAAK,CAAC,GAAG,CAAC,GAAGA,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAEtD,OAAO,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE3O,CAAC,CAAC;EACpB;EAEA,OAAO,IAAI;AACZ,CAAC;AAEDkN,EAAE,CAACC,GAAG,CAACO,GAAG,GAAG,UAAUN,MAAM,EAAE;EAC9B,IAAI,CAACA,MAAM,EAAE;IACZ,OAAO,IAAI;EACZ;EAEA,IAAMM,GAAG,GAAG,6KAA6K;EACzL,IAAMM,KAAK,GAAGZ,MAAM,CAACY,KAAK,CAACN,GAAG,CAAC;EAE/B,IAAIM,KAAK,EAAE;IACV,IAAMQ,KAAK,GAAGJ,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,IAAMS,CAAC,GAAG,CAAEL,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAI,GAAG,IAAI,GAAG;IAC3D,IAAMa,CAAC,GAAGN,KAAK,CAACH,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACpD,IAAMjP,CAAC,GAAGwP,KAAK,CAACH,MAAM,CAACE,UAAU,CAACN,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACpD,IAAMhO,CAAC,GAAGuO,KAAK,CAACH,MAAM,CAACQ,KAAK,CAACJ,KAAK,CAAC,GAAG,CAAC,GAAGA,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,OAAO,CAACC,CAAC,EAAEI,CAAC,EAAE9P,CAAC,EAAEiB,CAAC,CAAC;EACpB;EAEA,OAAO,IAAI;AACZ,CAAC;AAEDkN,EAAE,CAACrN,EAAE,CAAC+N,GAAG,GAAG,YAAmB;EAC9B,OACC,GAAG,GACHkB,SAAS,CAAAC,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAClBD,SAAS,CAAAC,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAClBD,SAAS,CAAAC,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,IACjB,CAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,OAAU,CAAC,GACRD,SAAS,CAAC3P,IAAI,CAACoB,KAAK,CAAC,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,OAAU,GAAG,CAAC,CAAC,GACrC,EAAE,CAAC;AAER,CAAC;AAED7B,EAAE,CAACrN,EAAE,CAAC8B,GAAG,GAAG,YAAmB;EAC9B,OAAOoN,SAAA,CAAK9Q,MAAM,GAAG,CAAC,IAAI,CAAA8Q,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,SAAY,CAAC,GACpC,MAAM,GAAG5P,IAAI,CAACoB,KAAK,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAAG,IAAI,GAAG5P,IAAI,CAACoB,KAAK,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAAG,IAAI,GAAG5P,IAAI,CAACoB,KAAK,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAAG,GAAG,GAC5F,OAAO,GAAG5P,IAAI,CAACoB,KAAK,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAAG,IAAI,GAAG5P,IAAI,CAACoB,KAAK,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAAG,IAAI,GAAG5P,IAAI,CAACoB,KAAK,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,GAAQ,CAAC,GAAG,IAAI,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,GAAG;AAClH,CAAC;AAED7B,EAAE,CAACrN,EAAE,CAAC8B,GAAG,CAACsN,OAAO,GAAG,YAAmB;EACtC,IAAMpQ,CAAC,GAAGM,IAAI,CAACoB,KAAK,CAAC,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,OAAU,GAAG,GAAG,GAAG,CAAC;EACzC,IAAMjQ,CAAC,GAAGK,IAAI,CAACoB,KAAK,CAAC,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,OAAU,GAAG,GAAG,GAAG,CAAC;EACzC,IAAMhQ,CAAC,GAAGI,IAAI,CAACoB,KAAK,CAAC,CAAAwO,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,OAAU,GAAG,GAAG,GAAG,CAAC;EAEzC,OAAOA,SAAA,CAAK9Q,MAAM,GAAG,CAAC,IAAI,CAAA8Q,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,SAAY,CAAC,GACpC,MAAM,GAAGlQ,CAAC,GAAG,KAAK,GAAGC,CAAC,GAAG,KAAK,GAAGC,CAAC,GAAG,IAAI,GACzC,OAAO,GAAGF,CAAC,GAAG,KAAK,GAAGC,CAAC,GAAG,KAAK,GAAGC,CAAC,GAAG,KAAK,IAAAgQ,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,GAAG;AAC/D,CAAC;AAED7B,EAAE,CAACrN,EAAE,CAAC4N,GAAG,GAAG,YAAmB;EAC9B,OAAOsB,SAAA,CAAK9Q,MAAM,GAAG,CAAC,IAAI,CAAA8Q,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,SAAY,CAAC,GACpC,MAAM,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,IAAI,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,KAAK,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,IAAI,GAC1D,OAAO,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,IAAI,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,KAAK,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,KAAK,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,GAAG;AAChF,CAAC;;AAED;AACA;AACA7B,EAAE,CAACrN,EAAE,CAAC6N,GAAG,GAAG,YAAmB;EAC9B,IAAI1N,CAAC,GAAG,EAAE;EACV,IAAI+O,SAAA,CAAK9Q,MAAM,IAAI,CAAC,IAAI,CAAA8Q,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,SAAY,CAAC,EAAE;IACtC/O,CAAC,GAAG,IAAI,IAAA+O,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU;EACnB;EAEA,OAAO,MAAM,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,IAAI,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,KAAK,IAAAA,SAAA,CAAA9Q,MAAA,QAAA+Q,SAAA,GAAAD,SAAA,IAAU,GAAG,GAAG,GAAG/O,CAAC,GAAG,GAAG;AAC3E,CAAC;AAEDkN,EAAE,CAACrN,EAAE,CAACkO,OAAO,GAAG,YAAkB;EAAA,SAAAmB,IAAA,GAAAH,SAAA,CAAA9Q,MAAA,EAAL0D,GAAG,OAAAwN,KAAA,CAAAD,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;IAAHzN,GAAG,CAAAyN,IAAA,IAAAL,SAAA,CAAAK,IAAA;EAAA;EAC/B,OAAOtC,YAAY,CAACnL,GAAG,CAAC2L,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC;;AAED;AACA,SAASiB,KAAKA,CAACc,OAAO,EAAEjQ,GAAG,EAAEC,GAAG,EAAE;EACjC,OAAOF,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAACD,GAAG,EAAEiQ,OAAO,CAAC,EAAEhQ,GAAG,CAAC;AAC7C;AAEA,SAASyP,SAASA,CAACO,OAAO,EAAE;EAC3B,IAAMC,OAAO,GAAGnQ,IAAI,CAACoB,KAAK,CAAC8O,OAAO,CAAC,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,WAAW,CAAC,CAAC;EAC9D,OAAQF,OAAO,CAACrR,MAAM,GAAG,CAAC,GAAI,GAAG,GAAGqR,OAAO,GAAGA,OAAO;AACtD;AAEepC,iEAAE,E;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtOsB;AACH;AAEpC,IAAMuC,aAAa,GAAG;AACrB;AACA,SAAS;AAET;AACA,MAAM;AAEN;AACA,KAAK,CACL;AAED,IAAMC,eAAe,GAAG,CAAC,CAAC;AAC1B,SAAAC,EAAA,MAAAC,YAAA,GAAoBhD,MAAM,CAACiD,IAAI,CAACC,qDAAO,CAAC,EAAAH,EAAA,GAAAC,YAAA,CAAA3R,MAAA,EAAA0R,EAAA,IAAE;EAArC,IAAMnC,KAAK,GAAAoC,YAAA,CAAAD,EAAA;EACfD,eAAe,CAACK,kBAAA,CAAID,qDAAO,CAACtC,KAAK,CAAC,CAACwC,MAAM,EAAEvN,IAAI,CAAC,CAAC,CAACwN,IAAI,CAAC,EAAE,CAAC,CAAC,GAAGzC,KAAK;AACpE;AAEA,IAAM0C,QAAQ,GAAG,CAAC,CAAC;AAEnB,SAASC,KAAKA,CAACC,MAAM,EAAE5C,KAAK,EAAE;EAC7B,IAAI,EAAE,IAAI,YAAY2C,KAAK,CAAC,EAAE;IAC7B,OAAO,IAAIA,KAAK,CAACC,MAAM,EAAE5C,KAAK,CAAC;EAChC;EAEA,IAAIA,KAAK,IAAIA,KAAK,IAAIiC,aAAa,EAAE;IACpCjC,KAAK,GAAG,IAAI;EACb;EAEA,IAAIA,KAAK,IAAI,EAAEA,KAAK,IAAIsC,qDAAO,CAAC,EAAE;IACjC,MAAM,IAAIO,KAAK,CAAC,iBAAiB,GAAG7C,KAAK,CAAC;EAC3C;EAEA,IAAIS,CAAC;EACL,IAAIqC,QAAQ;EAEZ,IAAIF,MAAM,IAAI,IAAI,EAAE;IAAE;IACrB,IAAI,CAAC5C,KAAK,GAAG,KAAK;IAClB,IAAI,CAACzN,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACtB,IAAI,CAACwQ,MAAM,GAAG,CAAC;EAChB,CAAC,MAAM,IAAIH,MAAM,YAAYD,KAAK,EAAE;IACnC,IAAI,CAAC3C,KAAK,GAAG4C,MAAM,CAAC5C,KAAK;IACzB,IAAI,CAACzN,KAAK,GAAAgQ,kBAAA,CAAOK,MAAM,CAACrQ,KAAK,CAAC;IAC9B,IAAI,CAACwQ,MAAM,GAAGH,MAAM,CAACG,MAAM;EAC5B,CAAC,MAAM,IAAI,OAAOH,MAAM,KAAK,QAAQ,EAAE;IACtC,IAAMvN,MAAM,GAAG2N,oDAAW,CAACrD,GAAG,CAACiD,MAAM,CAAC;IACtC,IAAIvN,MAAM,KAAK,IAAI,EAAE;MACpB,MAAM,IAAIwN,KAAK,CAAC,qCAAqC,GAAGD,MAAM,CAAC;IAChE;IAEA,IAAI,CAAC5C,KAAK,GAAG3K,MAAM,CAAC2K,KAAK;IACzB8C,QAAQ,GAAGR,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAAC8C,QAAQ;IACvC,IAAI,CAACvQ,KAAK,GAAG8C,MAAM,CAAClD,KAAK,CAAC2N,KAAK,CAAC,CAAC,EAAEgD,QAAQ,CAAC;IAC5C,IAAI,CAACC,MAAM,GAAG,OAAO1N,MAAM,CAAClD,KAAK,CAAC2Q,QAAQ,CAAC,KAAK,QAAQ,GAAGzN,MAAM,CAAClD,KAAK,CAAC2Q,QAAQ,CAAC,GAAG,CAAC;EACtF,CAAC,MAAM,IAAIF,MAAM,CAACnS,MAAM,GAAG,CAAC,EAAE;IAC7B,IAAI,CAACuP,KAAK,GAAGA,KAAK,IAAI,KAAK;IAC3B8C,QAAQ,GAAGR,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAAC8C,QAAQ;IACvC,IAAMG,QAAQ,GAAGtB,KAAK,CAACxR,SAAS,CAAC2P,KAAK,CAAC7P,IAAI,CAAC2S,MAAM,EAAE,CAAC,EAAEE,QAAQ,CAAC;IAChE,IAAI,CAACvQ,KAAK,GAAG2Q,SAAS,CAACD,QAAQ,EAAEH,QAAQ,CAAC;IAC1C,IAAI,CAACC,MAAM,GAAG,OAAOH,MAAM,CAACE,QAAQ,CAAC,KAAK,QAAQ,GAAGF,MAAM,CAACE,QAAQ,CAAC,GAAG,CAAC;EAC1E,CAAC,MAAM,IAAI,OAAOF,MAAM,KAAK,QAAQ,EAAE;IACtC;IACA,IAAI,CAAC5C,KAAK,GAAG,KAAK;IAClB,IAAI,CAACzN,KAAK,GAAG,CACXqQ,MAAM,IAAI,EAAE,GAAI,IAAI,EACpBA,MAAM,IAAI,CAAC,GAAI,IAAI,EACpBA,MAAM,GAAG,IAAI,CACb;IACD,IAAI,CAACG,MAAM,GAAG,CAAC;EAChB,CAAC,MAAM;IACN,IAAI,CAACA,MAAM,GAAG,CAAC;IAEf,IAAMV,IAAI,GAAGjD,MAAM,CAACiD,IAAI,CAACO,MAAM,CAAC;IAChC,IAAI,OAAO,IAAIA,MAAM,EAAE;MACtBP,IAAI,CAACc,MAAM,CAACd,IAAI,CAACe,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;MACrC,IAAI,CAACL,MAAM,GAAG,OAAOH,MAAM,CAAC5B,KAAK,KAAK,QAAQ,GAAG4B,MAAM,CAAC5B,KAAK,GAAG,CAAC;IAClE;IAEA,IAAMqC,UAAU,GAAGhB,IAAI,CAACpN,IAAI,CAAC,CAAC,CAACwN,IAAI,CAAC,EAAE,CAAC;IACvC,IAAI,EAAEY,UAAU,IAAInB,eAAe,CAAC,EAAE;MACrC,MAAM,IAAIW,KAAK,CAAC,qCAAqC,GAAGS,IAAI,CAACC,SAAS,CAACX,MAAM,CAAC,CAAC;IAChF;IAEA,IAAI,CAAC5C,KAAK,GAAGkC,eAAe,CAACmB,UAAU,CAAC;IAExC,IAAOb,MAAM,GAAIF,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAA7BwC,MAAM;IACb,IAAMjQ,KAAK,GAAG,EAAE;IAChB,KAAKkO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+B,MAAM,CAAC/R,MAAM,EAAEgQ,CAAC,EAAE,EAAE;MACnClO,KAAK,CAACiR,IAAI,CAACZ,MAAM,CAACJ,MAAM,CAAC/B,CAAC,CAAC,CAAC,CAAC;IAC9B;IAEA,IAAI,CAAClO,KAAK,GAAG2Q,SAAS,CAAC3Q,KAAK,CAAC;EAC9B;;EAEA;EACA,IAAImQ,QAAQ,CAAC,IAAI,CAAC1C,KAAK,CAAC,EAAE;IACzB8C,QAAQ,GAAGR,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAAC8C,QAAQ;IACvC,KAAKrC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqC,QAAQ,EAAErC,CAAC,EAAE,EAAE;MAC9B,IAAMgD,KAAK,GAAGf,QAAQ,CAAC,IAAI,CAAC1C,KAAK,CAAC,CAACS,CAAC,CAAC;MACrC,IAAIgD,KAAK,EAAE;QACV,IAAI,CAAClR,KAAK,CAACkO,CAAC,CAAC,GAAGgD,KAAK,CAAC,IAAI,CAAClR,KAAK,CAACkO,CAAC,CAAC,CAAC;MACrC;IACD;EACD;EAEA,IAAI,CAACsC,MAAM,GAAGpR,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,IAAI,CAACmR,MAAM,CAAC,CAAC;EAEnD,IAAI3D,MAAM,CAACC,MAAM,EAAE;IAClBD,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACpB;AACD;AAEAsD,KAAK,CAACxS,SAAS,GAAG;EACjB4R,QAAQ,WAAAA,SAAA,EAAG;IACV,OAAO,IAAI,CAACnC,MAAM,CAAC,CAAC;EACrB,CAAC;EAED8D,MAAM,WAAAA,OAAA,EAAG;IACR,OAAO,IAAI,CAAC,IAAI,CAAC1D,KAAK,CAAC,CAAC,CAAC;EAC1B,CAAC;EAEDJ,MAAM,WAAAA,OAAC+D,MAAM,EAAE;IAAA,IAAAC,eAAA;IACd,IAAIC,IAAI,GAAG,IAAI,CAAC7D,KAAK,IAAIgD,oDAAW,CAAC3Q,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC8B,GAAG,CAAC,CAAC;IAC3D0P,IAAI,GAAGA,IAAI,CAAC9Q,KAAK,CAAC,OAAO4Q,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,CAAC,CAAC;IAC1D,IAAMG,UAAU,GAAGD,IAAI,CAACd,MAAM,KAAK,CAAC,GAAGc,IAAI,CAACtR,KAAK,MAAAwR,MAAA,CAAAxB,kBAAA,CAAOsB,IAAI,CAACtR,KAAK,IAAE,IAAI,CAACwQ,MAAM,EAAC;IAChF,OAAO,CAAAa,eAAA,GAAAZ,oDAAW,CAAC3Q,EAAE,EAACwR,IAAI,CAAC7D,KAAK,CAAC,CAAA5P,KAAA,CAAAwT,eAAA,EAAArB,kBAAA,CAAIuB,UAAU,EAAC;EACjD,CAAC;EAEDE,aAAa,WAAAA,cAACL,MAAM,EAAE;IAAA,IAAAM,mBAAA;IACrB,IAAMJ,IAAI,GAAG,IAAI,CAAC1P,GAAG,CAAC,CAAC,CAACpB,KAAK,CAAC,OAAO4Q,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,CAAC,CAAC;IACtE,IAAMG,UAAU,GAAGD,IAAI,CAACd,MAAM,KAAK,CAAC,GAAGc,IAAI,CAACtR,KAAK,MAAAwR,MAAA,CAAAxB,kBAAA,CAAOsB,IAAI,CAACtR,KAAK,IAAE,IAAI,CAACwQ,MAAM,EAAC;IAChF,OAAO,CAAAkB,mBAAA,GAAAjB,oDAAW,CAAC3Q,EAAE,CAAC8B,GAAG,EAACsN,OAAO,CAAArR,KAAA,CAAA6T,mBAAA,EAAA1B,kBAAA,CAAIuB,UAAU,EAAC;EACjD,CAAC;EAEDI,KAAK,WAAAA,MAAA,EAAG;IACP,OAAO,IAAI,CAACnB,MAAM,KAAK,CAAC,GAAAR,kBAAA,CAAO,IAAI,CAAChQ,KAAK,OAAAwR,MAAA,CAAAxB,kBAAA,CAAQ,IAAI,CAAChQ,KAAK,IAAE,IAAI,CAACwQ,MAAM,EAAC;EAC1E,CAAC;EAEDH,MAAM,WAAAA,OAAA,EAAG;IACR,IAAMvN,MAAM,GAAG,CAAC,CAAC;IACjB,IAAOyN,QAAQ,GAAIR,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAA/B8C,QAAQ;IACf,IAAON,MAAM,GAAIF,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAA7BwC,MAAM;IAEb,KAAK,IAAI/B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqC,QAAQ,EAAErC,CAAC,EAAE,EAAE;MAClCpL,MAAM,CAACmN,MAAM,CAAC/B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAClO,KAAK,CAACkO,CAAC,CAAC;IAClC;IAEA,IAAI,IAAI,CAACsC,MAAM,KAAK,CAAC,EAAE;MACtB1N,MAAM,CAAC2L,KAAK,GAAG,IAAI,CAAC+B,MAAM;IAC3B;IAEA,OAAO1N,MAAM;EACd,CAAC;EAED8O,SAAS,WAAAA,UAAA,EAAG;IACX,IAAMhQ,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC,CAAC5B,KAAK;IAC5B4B,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;IACbA,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;IACbA,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;IAEb,IAAI,IAAI,CAAC4O,MAAM,KAAK,CAAC,EAAE;MACtB5O,GAAG,CAACqP,IAAI,CAAC,IAAI,CAACT,MAAM,CAAC;IACtB;IAEA,OAAO5O,GAAG;EACX,CAAC;EAEDiQ,UAAU,WAAAA,WAAA,EAAG;IACZ,IAAMjQ,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC,CAACyO,MAAM,CAAC,CAAC;IAC/BzO,GAAG,CAAC9C,CAAC,IAAI,GAAG;IACZ8C,GAAG,CAAC7C,CAAC,IAAI,GAAG;IACZ6C,GAAG,CAAC5C,CAAC,IAAI,GAAG;IAEZ,IAAI,IAAI,CAACwR,MAAM,KAAK,CAAC,EAAE;MACtB5O,GAAG,CAAC6M,KAAK,GAAG,IAAI,CAAC+B,MAAM;IACxB;IAEA,OAAO5O,GAAG;EACX,CAAC;EAEDpB,KAAK,WAAAA,MAAC4Q,MAAM,EAAE;IACbA,MAAM,GAAGhS,IAAI,CAACE,GAAG,CAAC8R,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,IAAIhB,KAAK,IAAAoB,MAAA,CAAAxB,kBAAA,CAAK,IAAI,CAAChQ,KAAK,CAAC8R,GAAG,CAACC,YAAY,CAACX,MAAM,CAAC,CAAC,IAAE,IAAI,CAACZ,MAAM,IAAG,IAAI,CAAC/C,KAAK,CAAC;EACrF,CAAC;EAEDgB,KAAK,WAAAA,MAAC7O,KAAK,EAAE;IACZ,IAAIA,KAAK,KAAKqP,SAAS,EAAE;MACxB,OAAO,IAAImB,KAAK,IAAAoB,MAAA,CAAAxB,kBAAA,CAAK,IAAI,CAAChQ,KAAK,IAAEZ,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEO,KAAK,CAAC,CAAC,IAAG,IAAI,CAAC6N,KAAK,CAAC;IAC/E;IAEA,OAAO,IAAI,CAAC+C,MAAM;EACnB,CAAC;EAED;EACAxF,GAAG,EAAEgH,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjCnL,KAAK,EAAEkL,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnChO,IAAI,EAAE+N,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAElClP,GAAG,EAAEiP,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,UAAApS,KAAK;IAAA,OAAI,CAAEA,KAAK,GAAG,GAAG,GAAI,GAAG,IAAI,GAAG;EAAA,EAAC;EAEzFsS,WAAW,EAAEF,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACzCE,SAAS,EAAEH,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAEvCG,WAAW,EAAEJ,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACzCrS,KAAK,EAAEoS,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAEnCI,MAAM,EAAEL,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACpCpL,IAAI,EAAEmL,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAElCzF,KAAK,EAAEwF,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnCK,MAAM,EAAEN,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAEpCrN,IAAI,EAAEoN,MAAM,CAAC,MAAM,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnCpJ,OAAO,EAAEmJ,MAAM,CAAC,MAAM,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtCvF,MAAM,EAAEsF,MAAM,CAAC,MAAM,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EACrClO,KAAK,EAAEiO,MAAM,CAAC,MAAM,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAEpCM,CAAC,EAAEP,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,MAAM,CAAC,CAAC;EAClCO,CAAC,EAAER,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC/BQ,CAAC,EAAET,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,OAAO,CAAC,CAAC;EAEnCrD,CAAC,EAAEoD,MAAM,CAAC,KAAK,EAAE,CAAC,EAAEC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC/BhS,CAAC,EAAE+R,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;EACnBhT,CAAC,EAAEgT,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;EAEnBhE,OAAO,WAAAA,QAACpO,KAAK,EAAE;IACd,IAAIA,KAAK,KAAKqP,SAAS,EAAE;MACxB,OAAO,IAAImB,KAAK,CAACxQ,KAAK,CAAC;IACxB;IAEA,OAAOmQ,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAACO,OAAO,CAAC,IAAI,CAAChO,KAAK,CAAC;EAC/C,CAAC;EAED6N,GAAG,WAAAA,IAACjO,KAAK,EAAE;IAAA,IAAA8S,gBAAA;IACV,IAAI9S,KAAK,KAAKqP,SAAS,EAAE;MACxB,OAAO,IAAImB,KAAK,CAACxQ,KAAK,CAAC;IACxB;IAEA,OAAO,CAAA8S,gBAAA,GAAAjC,oDAAW,CAAC3Q,EAAE,EAAC+N,GAAG,CAAAhQ,KAAA,CAAA6U,gBAAA,EAAA1C,kBAAA,CAAI,IAAI,CAACpO,GAAG,CAAC,CAAC,CAACpB,KAAK,CAAC,CAAC,CAACR,KAAK,EAAC;EACvD,CAAC;EAED2S,IAAI,WAAAA,KAAC/S,KAAK,EAAE;IAAA,IAAAgT,gBAAA;IACX,IAAIhT,KAAK,KAAKqP,SAAS,EAAE;MACxB,OAAO,IAAImB,KAAK,CAACxQ,KAAK,CAAC;IACxB;IAEA,IAAMiT,QAAQ,GAAG,IAAI,CAACjR,GAAG,CAAC,CAAC,CAACpB,KAAK,CAAC,CAAC,CAACR,KAAK;IAEzC,IAAI8S,QAAQ,GAAG1T,IAAI,CAACoB,KAAK,CAAC,IAAI,CAACgQ,MAAM,GAAG,GAAG,CAAC,CAAChB,QAAQ,CAAC,EAAE,CAAC,CAACC,WAAW,CAAC,CAAC;IACvE,IAAIqD,QAAQ,CAAC5U,MAAM,KAAK,CAAC,EAAE;MAC1B4U,QAAQ,GAAG,GAAG,GAAGA,QAAQ;IAC1B;IAEA,OAAO,CAAAF,gBAAA,GAAAnC,oDAAW,CAAC3Q,EAAE,EAAC+N,GAAG,CAAAhQ,KAAA,CAAA+U,gBAAA,EAAA5C,kBAAA,CAAI6C,QAAQ,EAAC,GAAGC,QAAQ;EAClD,CAAC;EAEDC,SAAS,WAAAA,UAAA,EAAG;IACX,IAAMnR,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC,CAAC5B,KAAK;IAC5B,OAAQ,CAAC4B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,GAAK,CAACA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAE,GAAIA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAK;EAC1E,CAAC;EAEDE,UAAU,WAAAA,WAAA,EAAG;IACZ;IACA,IAAMF,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC,CAAC5B,KAAK;IAE5B,IAAMgT,GAAG,GAAG,EAAE;IAAC,IAAAC,SAAA,GAAAC,0BAAA,CACYtR,GAAG,CAACuR,OAAO,CAAC,CAAC;MAAAC,KAAA;IAAA;MAAxC,KAAAH,SAAA,CAAAtE,CAAA,MAAAyE,KAAA,GAAAH,SAAA,CAAAI,CAAA,IAAAC,IAAA,GAA0C;QAAA,IAAAC,WAAA,GAAAC,cAAA,CAAAJ,KAAA,CAAAxT,KAAA;UAA9BsO,CAAC,GAAAqF,WAAA;UAAEE,OAAO,GAAAF,WAAA;QACrB,IAAMG,IAAI,GAAGD,OAAO,GAAG,GAAG;QAC1BT,GAAG,CAAC9E,CAAC,CAAC,GAAIwF,IAAI,IAAI,OAAO,GAAIA,IAAI,GAAG,KAAK,GAAAtU,IAAA,CAAAmB,GAAA,CAAI,CAACmT,IAAI,GAAG,KAAK,IAAI,KAAK,EAAK,GAAG;MAC5E;IAAC,SAAAC,GAAA;MAAAV,SAAA,CAAAW,CAAA,CAAAD,GAAA;IAAA;MAAAV,SAAA,CAAAY,CAAA;IAAA;IAED,OAAO,MAAM,GAAGb,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,GAAGA,GAAG,CAAC,CAAC,CAAC;EAC3D,CAAC;EAEDc,QAAQ,WAAAA,SAACC,MAAM,EAAE;IAChB;IACA,IAAMC,IAAI,GAAG,IAAI,CAAClS,UAAU,CAAC,CAAC;IAC9B,IAAMmS,IAAI,GAAGF,MAAM,CAACjS,UAAU,CAAC,CAAC;IAEhC,IAAIkS,IAAI,GAAGC,IAAI,EAAE;MAChB,OAAO,CAACD,IAAI,GAAG,IAAI,KAAKC,IAAI,GAAG,IAAI,CAAC;IACrC;IAEA,OAAO,CAACA,IAAI,GAAG,IAAI,KAAKD,IAAI,GAAG,IAAI,CAAC;EACrC,CAAC;EAEDE,KAAK,WAAAA,MAACH,MAAM,EAAE;IACb;IACA,IAAMI,aAAa,GAAG,IAAI,CAACL,QAAQ,CAACC,MAAM,CAAC;IAC3C,IAAII,aAAa,IAAI,CAAC,EAAE;MACvB,OAAO,KAAK;IACb;IAEA,OAAQA,aAAa,IAAI,GAAG,GAAI,IAAI,GAAG,EAAE;EAC1C,CAAC;EAEDC,MAAM,WAAAA,OAAA,EAAG;IACR;IACA,IAAMxS,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC,CAAC5B,KAAK;IAC5B,IAAMqU,GAAG,GAAG,CAACzS,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK;IAClE,OAAOyS,GAAG,GAAG,GAAG;EACjB,CAAC;EAEDC,OAAO,WAAAA,QAAA,EAAG;IACT,OAAO,CAAC,IAAI,CAACF,MAAM,CAAC,CAAC;EACtB,CAAC;EAEDG,MAAM,WAAAA,OAAA,EAAG;IACR,IAAM3S,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtB,KAAK,IAAIsM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC3BtM,GAAG,CAAC5B,KAAK,CAACkO,CAAC,CAAC,GAAG,GAAG,GAAGtM,GAAG,CAAC5B,KAAK,CAACkO,CAAC,CAAC;IAClC;IAEA,OAAOtM,GAAG;EACX,CAAC;EAEDuB,OAAO,WAAAA,QAACqR,KAAK,EAAE;IACd,IAAM9G,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtBA,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,IAAI0N,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,GAAGwU,KAAK;IACpC,OAAO9G,GAAG;EACX,CAAC;EAEDxK,MAAM,WAAAA,OAACsR,KAAK,EAAE;IACb,IAAM9G,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtBA,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,IAAI0N,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,GAAGwU,KAAK;IACpC,OAAO9G,GAAG;EACX,CAAC;EAED+G,QAAQ,WAAAA,SAACD,KAAK,EAAE;IACf,IAAM9G,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtBA,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,IAAI0N,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,GAAGwU,KAAK;IACpC,OAAO9G,GAAG;EACX,CAAC;EAEDgH,UAAU,WAAAA,WAACF,KAAK,EAAE;IACjB,IAAM9G,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtBA,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,IAAI0N,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,GAAGwU,KAAK;IACpC,OAAO9G,GAAG;EACX,CAAC;EAEDiH,MAAM,WAAAA,OAACH,KAAK,EAAE;IACb,IAAM7G,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtBA,GAAG,CAAC3N,KAAK,CAAC,CAAC,CAAC,IAAI2N,GAAG,CAAC3N,KAAK,CAAC,CAAC,CAAC,GAAGwU,KAAK;IACpC,OAAO7G,GAAG;EACX,CAAC;EAEDiH,OAAO,WAAAA,QAACJ,KAAK,EAAE;IACd,IAAM7G,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtBA,GAAG,CAAC3N,KAAK,CAAC,CAAC,CAAC,IAAI2N,GAAG,CAAC3N,KAAK,CAAC,CAAC,CAAC,GAAGwU,KAAK;IACpC,OAAO7G,GAAG;EACX,CAAC;EAEDkH,SAAS,WAAAA,UAAA,EAAG;IACX;IACA,IAAMjT,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC,CAAC5B,KAAK;IAC5B,IAAMJ,KAAK,GAAGgC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;IAC1D,OAAOwO,KAAK,CAACxO,GAAG,CAAChC,KAAK,EAAEA,KAAK,EAAEA,KAAK,CAAC;EACtC,CAAC;EAEDkV,IAAI,WAAAA,KAACN,KAAK,EAAE;IACX,OAAO,IAAI,CAAC/F,KAAK,CAAC,IAAI,CAAC+B,MAAM,GAAI,IAAI,CAACA,MAAM,GAAGgE,KAAM,CAAC;EACvD,CAAC;EAEDO,OAAO,WAAAA,QAACP,KAAK,EAAE;IACd,OAAO,IAAI,CAAC/F,KAAK,CAAC,IAAI,CAAC+B,MAAM,GAAI,IAAI,CAACA,MAAM,GAAGgE,KAAM,CAAC;EACvD,CAAC;EAEDQ,MAAM,WAAAA,OAACC,OAAO,EAAE;IACf,IAAMvH,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC,CAAC;IACtB,IAAI3K,GAAG,GAAG2K,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC;IACtB+C,GAAG,GAAG,CAACA,GAAG,GAAGkS,OAAO,IAAI,GAAG;IAC3BlS,GAAG,GAAGA,GAAG,GAAG,CAAC,GAAG,GAAG,GAAGA,GAAG,GAAGA,GAAG;IAC/B2K,GAAG,CAAC1N,KAAK,CAAC,CAAC,CAAC,GAAG+C,GAAG;IAClB,OAAO2K,GAAG;EACX,CAAC;EAEDwH,GAAG,WAAAA,IAACC,UAAU,EAAEC,MAAM,EAAE;IACvB;IACA;IACA,IAAI,CAACD,UAAU,IAAI,CAACA,UAAU,CAACvT,GAAG,EAAE;MACnC,MAAM,IAAI0O,KAAK,CAAC,wEAAwE,GAAA+E,OAAA,CAAUF,UAAU,EAAC;IAC9G;IAEA,IAAMG,MAAM,GAAGH,UAAU,CAACvT,GAAG,CAAC,CAAC;IAC/B,IAAMmS,MAAM,GAAG,IAAI,CAACnS,GAAG,CAAC,CAAC;IACzB,IAAM2T,CAAC,GAAGH,MAAM,KAAKnG,SAAS,GAAG,GAAG,GAAGmG,MAAM;IAE7C,IAAMtG,CAAC,GAAG,CAAC,GAAGyG,CAAC,GAAG,CAAC;IACnB,IAAMtV,CAAC,GAAGqV,MAAM,CAAC7G,KAAK,CAAC,CAAC,GAAGsF,MAAM,CAACtF,KAAK,CAAC,CAAC;IAEzC,IAAM+G,EAAE,GAAG,CAAC,CAAE1G,CAAC,GAAG7O,CAAC,KAAK,CAAC,CAAC,GAAI6O,CAAC,GAAG,CAACA,CAAC,GAAG7O,CAAC,KAAK,CAAC,GAAG6O,CAAC,GAAG7O,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACjE,IAAMwV,EAAE,GAAG,CAAC,GAAGD,EAAE;IAEjB,OAAOpF,KAAK,CAACxO,GAAG,CACf4T,EAAE,GAAGF,MAAM,CAACtK,GAAG,CAAC,CAAC,GAAGyK,EAAE,GAAG1B,MAAM,CAAC/I,GAAG,CAAC,CAAC,EACrCwK,EAAE,GAAGF,MAAM,CAACxO,KAAK,CAAC,CAAC,GAAG2O,EAAE,GAAG1B,MAAM,CAACjN,KAAK,CAAC,CAAC,EACzC0O,EAAE,GAAGF,MAAM,CAACrR,IAAI,CAAC,CAAC,GAAGwR,EAAE,GAAG1B,MAAM,CAAC9P,IAAI,CAAC,CAAC,EACvCqR,MAAM,CAAC7G,KAAK,CAAC,CAAC,GAAG8G,CAAC,GAAGxB,MAAM,CAACtF,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG8G,CAAC,CAAC,CAAC;EAChD;AACD,CAAC;;AAED;AAAA,IAAAG,KAAA,YAAAA,MAAA;EACK,IAAMjI,KAAK,GAAAkI,aAAA,CAAAC,GAAA;EACf,IAAIlG,aAAa,CAACmG,QAAQ,CAACpI,KAAK,CAAC,EAAE;IAClC;EACD;EAEA,IAAO8C,QAAQ,GAAIR,qDAAO,CAACtC,KAAK,CAAC,CAA1B8C,QAAQ;;EAEf;EACAH,KAAK,CAACxS,SAAS,CAAC6P,KAAK,CAAC,GAAG,YAAyB;IACjD,IAAI,IAAI,CAACA,KAAK,KAAKA,KAAK,EAAE;MACzB,OAAO,IAAI2C,KAAK,CAAC,IAAI,CAAC;IACvB;IAAC,SAAAjB,IAAA,GAAAH,SAAA,CAAA9Q,MAAA,EAHoCqT,UAAU,OAAAnC,KAAA,CAAAD,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;MAAVkC,UAAU,CAAAlC,IAAA,IAAAL,SAAA,CAAAK,IAAA;IAAA;IAK/C,IAAIkC,UAAU,CAACrT,MAAM,GAAG,CAAC,EAAE;MAC1B,OAAO,IAAIkS,KAAK,CAACmB,UAAU,EAAE9D,KAAK,CAAC;IACpC;IAEA,OAAO,IAAI2C,KAAK,IAAAoB,MAAA,CAAAxB,kBAAA,CAAK8F,WAAW,CAAC/F,qDAAO,CAAC,IAAI,CAACtC,KAAK,CAAC,CAACA,KAAK,CAAC,CAACsI,GAAG,CAAC,IAAI,CAAC/V,KAAK,CAAC,CAAC,IAAE,IAAI,CAACwQ,MAAM,IAAG/C,KAAK,CAAC;EACnG,CAAC;;EAED;EACA2C,KAAK,CAAC3C,KAAK,CAAC,GAAG,YAAyB;IAAA,SAAAuI,KAAA,GAAAhH,SAAA,CAAA9Q,MAAA,EAAZqT,UAAU,OAAAnC,KAAA,CAAA4G,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAV1E,UAAU,CAAA0E,KAAA,IAAAjH,SAAA,CAAAiH,KAAA;IAAA;IACrC,IAAIjW,KAAK,GAAGuR,UAAU,CAAC,CAAC,CAAC;IACzB,IAAI,OAAOvR,KAAK,KAAK,QAAQ,EAAE;MAC9BA,KAAK,GAAG2Q,SAAS,CAACY,UAAU,EAAEhB,QAAQ,CAAC;IACxC;IAEA,OAAO,IAAIH,KAAK,CAACpQ,KAAK,EAAEyN,KAAK,CAAC;EAC/B,CAAC;AAAC;AA5BH,SAAAmI,GAAA,MAAAD,aAAA,GAAoB9I,MAAM,CAACiD,IAAI,CAACC,qDAAO,CAAC,EAAA6F,GAAA,GAAAD,aAAA,CAAAzX,MAAA,EAAA0X,GAAA,IAAE;EAAA,IAAAM,IAAA,GAAAR,KAAA;EAAA,IAAAQ,IAAA,iBAExC;AA2BF;AAEA,SAASC,OAAOA,CAACC,MAAM,EAAEhF,MAAM,EAAE;EAChC,OAAO/C,MAAM,CAAC+H,MAAM,CAACC,OAAO,CAACjF,MAAM,CAAC,CAAC;AACtC;AAEA,SAASW,YAAYA,CAACX,MAAM,EAAE;EAC7B,OAAO,UAAUgF,MAAM,EAAE;IACxB,OAAOD,OAAO,CAACC,MAAM,EAAEhF,MAAM,CAAC;EAC/B,CAAC;AACF;AAEA,SAASY,MAAMA,CAACvE,KAAK,EAAEtL,OAAO,EAAEmU,QAAQ,EAAE;EACzC7I,KAAK,GAAG2B,KAAK,CAACmH,OAAO,CAAC9I,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC;EAAC,IAAA+I,UAAA,GAAAtD,0BAAA,CAE/BzF,KAAK;IAAAgJ,MAAA;EAAA;IAArB,KAAAD,UAAA,CAAA7H,CAAA,MAAA8H,MAAA,GAAAD,UAAA,CAAAnD,CAAA,IAAAC,IAAA,GAAuB;MAAA,IAAZoD,CAAC,GAAAD,MAAA,CAAA7W,KAAA;MACX,CAACuQ,QAAQ,CAACuG,CAAC,CAAC,KAAXvG,QAAQ,CAACuG,CAAC,CAAC,GAAK,EAAE,GAAEvU,OAAO,CAAC,GAAGmU,QAAQ;IACzC;EAAC,SAAA3C,GAAA;IAAA6C,UAAA,CAAA5C,CAAA,CAAAD,GAAA;EAAA;IAAA6C,UAAA,CAAA3C,CAAA;EAAA;EAEDpG,KAAK,GAAGA,KAAK,CAAC,CAAC,CAAC;EAEhB,OAAO,UAAU7N,KAAK,EAAE;IACvB,IAAIkD,MAAM;IAEV,IAAIlD,KAAK,KAAKqP,SAAS,EAAE;MACxB,IAAIqH,QAAQ,EAAE;QACb1W,KAAK,GAAG0W,QAAQ,CAAC1W,KAAK,CAAC;MACxB;MAEAkD,MAAM,GAAG,IAAI,CAAC2K,KAAK,CAAC,CAAC,CAAC;MACtB3K,MAAM,CAAC9C,KAAK,CAACmC,OAAO,CAAC,GAAGvC,KAAK;MAC7B,OAAOkD,MAAM;IACd;IAEAA,MAAM,GAAG,IAAI,CAAC2K,KAAK,CAAC,CAAC,CAAC,CAACzN,KAAK,CAACmC,OAAO,CAAC;IACrC,IAAImU,QAAQ,EAAE;MACbxT,MAAM,GAAGwT,QAAQ,CAACxT,MAAM,CAAC;IAC1B;IAEA,OAAOA,MAAM;EACd,CAAC;AACF;AAEA,SAASmP,KAAKA,CAAC3S,GAAG,EAAE;EACnB,OAAO,UAAUqX,CAAC,EAAE;IACnB,OAAOvX,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACC,GAAG,CAACC,GAAG,EAAEqX,CAAC,CAAC,CAAC;EACrC,CAAC;AACF;AAEA,SAASb,WAAWA,CAAClW,KAAK,EAAE;EAC3B,OAAOwP,KAAK,CAACmH,OAAO,CAAC3W,KAAK,CAAC,GAAGA,KAAK,GAAG,CAACA,KAAK,CAAC;AAC9C;AAEA,SAAS+Q,SAASA,CAACgB,KAAK,EAAEzT,MAAM,EAAE;EACjC,KAAK,IAAIgQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhQ,MAAM,EAAEgQ,CAAC,EAAE,EAAE;IAChC,IAAI,OAAOyD,KAAK,CAACzD,CAAC,CAAC,KAAK,QAAQ,EAAE;MACjCyD,KAAK,CAACzD,CAAC,CAAC,GAAG,CAAC;IACb;EACD;EAEA,OAAOyD,KAAK;AACb;AAEevB,oEAAK,E;;;;;;;;;;;;;;;;;;;;;;;;AC/epB;AACA;AACqC;;AAErC;AACA;AACA;;AAEA,IAAMwG,eAAe,GAAG,CAAC,CAAC;AAC1B,SAAAhH,EAAA,MAAAC,YAAA,GAAkBhD,MAAM,CAACiD,IAAI,CAAC+G,kDAAW,CAAC,EAAAjH,EAAA,GAAAC,YAAA,CAAA3R,MAAA,EAAA0R,EAAA,IAAE;EAAvC,IAAMhD,GAAG,GAAAiD,YAAA,CAAAD,EAAA;EACbgH,eAAe,CAACC,kDAAW,CAACjK,GAAG,CAAC,CAAC,GAAGA,GAAG;AACxC;AAEA,IAAMmD,OAAO,GAAG;EACfnO,GAAG,EAAE;IAAC2O,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAK,CAAC;EACjCvC,GAAG,EAAE;IAAC6C,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAK,CAAC;EACjC6G,GAAG,EAAE;IAACvG,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAK,CAAC;EACjCtC,GAAG,EAAE;IAAC4C,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAK,CAAC;EACjC8G,IAAI,EAAE;IAACxG,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAM,CAAC;EACnC+G,GAAG,EAAE;IAACzG,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAK,CAAC;EACjCgH,GAAG,EAAE;IAAC1G,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAK,CAAC;EACjCiH,KAAK,EAAE;IAAC3G,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK;EAAC,CAAC;EACnDkH,GAAG,EAAE;IAAC5G,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE;EAAK,CAAC;EACjCmH,KAAK,EAAE;IAAC7G,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK;EAAC,CAAC;EACnDpC,GAAG,EAAE;IAAC0C,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,KAAK;EAAC,CAAC;EACnCjC,OAAO,EAAE;IAACuC,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,SAAS;EAAC,CAAC;EAC3CoH,MAAM,EAAE;IAAC9G,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,QAAQ;EAAC,CAAC;EACzCqH,OAAO,EAAE;IAAC/G,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,SAAS;EAAC,CAAC;EAC3CsH,GAAG,EAAE;IAAChH,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;EAAC,CAAC;EAC3CuH,KAAK,EAAE;IAACjH,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK;EAAC,CAAC;EACnDpJ,IAAI,EAAE;IAAC0J,QAAQ,EAAE,CAAC;IAAEN,MAAM,EAAE,CAAC,MAAM;EAAC;AACrC,CAAC;AAEcF,sEAAO,EAAC;;AAEvB;AACA,IAAM0H,MAAM,GAAArY,IAAA,CAAAmB,GAAA,CAAI,CAAC,GAAG,EAAE,EAAK,CAAC;;AAE5B;AACA,SAASmX,sBAAsBA,CAACC,CAAC,EAAE;EAClC,IAAMC,EAAE,GAAGD,CAAC,GAAG,SAAW,GACrB,KAAK,GAAAvY,IAAA,CAAAmB,GAAA,CAAIoX,CAAC,EAAK,CAAC,GAAG,GAAG,CAAE,GAAI,KAAK,GACnCA,CAAC,GAAG,KAAK;EACZ,OAAOvY,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEsY,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC;AAEA,SAASC,yBAAyBA,CAACF,CAAC,EAAE;EACrC,OAAOA,CAAC,GAAG,OAAQ,GAAAvY,IAAA,CAAAmB,GAAA,CAAK,CAACoX,CAAC,GAAG,KAAK,IAAI,KAAK,EAAK,GAAG,IAAKA,CAAC,GAAG,KAAM;AACnE;;AAEA;AACA,SAAA/B,GAAA,MAAAD,aAAA,GAAoB9I,MAAM,CAACiD,IAAI,CAACC,OAAO,CAAC,EAAA6F,GAAA,GAAAD,aAAA,CAAAzX,MAAA,EAAA0X,GAAA,IAAE;EAArC,IAAMnI,KAAK,GAAAkI,aAAA,CAAAC,GAAA;EACf,IAAI,EAAE,UAAU,IAAI7F,OAAO,CAACtC,KAAK,CAAC,CAAC,EAAE;IACpC,MAAM,IAAI6C,KAAK,CAAC,6BAA6B,GAAG7C,KAAK,CAAC;EACvD;EAEA,IAAI,EAAE,QAAQ,IAAIsC,OAAO,CAACtC,KAAK,CAAC,CAAC,EAAE;IAClC,MAAM,IAAI6C,KAAK,CAAC,mCAAmC,GAAG7C,KAAK,CAAC;EAC7D;EAEA,IAAIsC,OAAO,CAACtC,KAAK,CAAC,CAACwC,MAAM,CAAC/R,MAAM,KAAK6R,OAAO,CAACtC,KAAK,CAAC,CAAC8C,QAAQ,EAAE;IAC7D,MAAM,IAAID,KAAK,CAAC,qCAAqC,GAAG7C,KAAK,CAAC;EAC/D;EAEA,IAAAqK,cAAA,GAA2B/H,OAAO,CAACtC,KAAK,CAAC;IAAlC8C,QAAQ,GAAAuH,cAAA,CAARvH,QAAQ;IAAEN,MAAM,GAAA6H,cAAA,CAAN7H,MAAM;EACvB,OAAOF,OAAO,CAACtC,KAAK,CAAC,CAAC8C,QAAQ;EAC9B,OAAOR,OAAO,CAACtC,KAAK,CAAC,CAACwC,MAAM;EAC5BpD,MAAM,CAACkL,cAAc,CAAChI,OAAO,CAACtC,KAAK,CAAC,EAAE,UAAU,EAAE;IAAC7N,KAAK,EAAE2Q;EAAQ,CAAC,CAAC;EACpE1D,MAAM,CAACkL,cAAc,CAAChI,OAAO,CAACtC,KAAK,CAAC,EAAE,QAAQ,EAAE;IAAC7N,KAAK,EAAEqQ;EAAM,CAAC,CAAC;AACjE;AAEAF,OAAO,CAACnO,GAAG,CAAC8L,GAAG,GAAG,UAAU9L,GAAG,EAAE;EAChC,IAAM9C,CAAC,GAAG8C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM7C,CAAC,GAAG6C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM5C,CAAC,GAAG4C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMvC,GAAG,GAAGD,IAAI,CAACC,GAAG,CAACP,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;EAC7B,IAAMM,GAAG,GAAGF,IAAI,CAACE,GAAG,CAACR,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;EAC7B,IAAM+C,KAAK,GAAGzC,GAAG,GAAGD,GAAG;EACvB,IAAIqP,CAAC;EACL,IAAIC,CAAC;EAEL,QAAQrP,GAAG;IACV,KAAKD,GAAG;MAAE;QACTqP,CAAC,GAAG,CAAC;QAEL;MACD;IAEA,KAAK5P,CAAC;MAAE;QACP4P,CAAC,GAAG,CAAC3P,CAAC,GAAGC,CAAC,IAAI+C,KAAK;QAEnB;MACD;IAEA,KAAKhD,CAAC;MAAE;QACP2P,CAAC,GAAG,CAAC,GAAG,CAAC1P,CAAC,GAAGF,CAAC,IAAIiD,KAAK;QAEvB;MACD;IAEA,KAAK/C,CAAC;MAAE;QACP0P,CAAC,GAAG,CAAC,GAAG,CAAC5P,CAAC,GAAGC,CAAC,IAAIgD,KAAK;QAEvB;MACD;IACD;EACA;;EAEA2M,CAAC,GAAGtP,IAAI,CAACC,GAAG,CAACqP,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;EAEzB,IAAIA,CAAC,GAAG,CAAC,EAAE;IACVA,CAAC,IAAI,GAAG;EACT;EAEA,IAAME,CAAC,GAAG,CAACvP,GAAG,GAAGC,GAAG,IAAI,CAAC;EAEzB,IAAIA,GAAG,KAAKD,GAAG,EAAE;IAChBsP,CAAC,GAAG,CAAC;EACN,CAAC,MAAM,IAAIC,CAAC,IAAI,GAAG,EAAE;IACpBD,CAAC,GAAG5M,KAAK,IAAIzC,GAAG,GAAGD,GAAG,CAAC;EACxB,CAAC,MAAM;IACNsP,CAAC,GAAG5M,KAAK,IAAI,CAAC,GAAGzC,GAAG,GAAGD,GAAG,CAAC;EAC5B;EAEA,OAAO,CAACqP,CAAC,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AAC7B,CAAC;AAEDmB,OAAO,CAACnO,GAAG,CAACkV,GAAG,GAAG,UAAUlV,GAAG,EAAE;EAChC,IAAIoW,IAAI;EACR,IAAIC,IAAI;EACR,IAAIC,IAAI;EACR,IAAIxJ,CAAC;EACL,IAAIC,CAAC;EAEL,IAAM7P,CAAC,GAAG8C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM7C,CAAC,GAAG6C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM5C,CAAC,GAAG4C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM+U,CAAC,GAAGvX,IAAI,CAACE,GAAG,CAACR,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;EAC3B,IAAMmZ,IAAI,GAAGxB,CAAC,GAAGvX,IAAI,CAACC,GAAG,CAACP,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;EAClC,IAAMoZ,KAAK,GAAG,SAARA,KAAKA,CAAaT,CAAC,EAAE;IAC1B,OAAO,CAAChB,CAAC,GAAGgB,CAAC,IAAI,CAAC,GAAGQ,IAAI,GAAG,CAAC,GAAG,CAAC;EAClC,CAAC;EAED,IAAIA,IAAI,KAAK,CAAC,EAAE;IACfzJ,CAAC,GAAG,CAAC;IACLC,CAAC,GAAG,CAAC;EACN,CAAC,MAAM;IACNA,CAAC,GAAGwJ,IAAI,GAAGxB,CAAC;IACZqB,IAAI,GAAGI,KAAK,CAACtZ,CAAC,CAAC;IACfmZ,IAAI,GAAGG,KAAK,CAACrZ,CAAC,CAAC;IACfmZ,IAAI,GAAGE,KAAK,CAACpZ,CAAC,CAAC;IAEf,QAAQ2X,CAAC;MACR,KAAK7X,CAAC;QAAE;UACP4P,CAAC,GAAGwJ,IAAI,GAAGD,IAAI;UAEf;QACD;MAEA,KAAKlZ,CAAC;QAAE;UACP2P,CAAC,GAAI,CAAC,GAAG,CAAC,GAAIsJ,IAAI,GAAGE,IAAI;UAEzB;QACD;MAEA,KAAKlZ,CAAC;QAAE;UACP0P,CAAC,GAAI,CAAC,GAAG,CAAC,GAAIuJ,IAAI,GAAGD,IAAI;UAEzB;QACD;MACD;IACA;;IAEA,IAAItJ,CAAC,GAAG,CAAC,EAAE;MACVA,CAAC,IAAI,CAAC;IACP,CAAC,MAAM,IAAIA,CAAC,GAAG,CAAC,EAAE;MACjBA,CAAC,IAAI,CAAC;IACP;EACD;EAEA,OAAO,CACNA,CAAC,GAAG,GAAG,EACPC,CAAC,GAAG,GAAG,EACPgI,CAAC,GAAG,GAAG,CACP;AACF,CAAC;AAED5G,OAAO,CAACnO,GAAG,CAAC+L,GAAG,GAAG,UAAU/L,GAAG,EAAE;EAChC,IAAM9C,CAAC,GAAG8C,GAAG,CAAC,CAAC,CAAC;EAChB,IAAM7C,CAAC,GAAG6C,GAAG,CAAC,CAAC,CAAC;EAChB,IAAI5C,CAAC,GAAG4C,GAAG,CAAC,CAAC,CAAC;EACd,IAAM8M,CAAC,GAAGqB,OAAO,CAACnO,GAAG,CAAC8L,GAAG,CAAC9L,GAAG,CAAC,CAAC,CAAC,CAAC;EACjC,IAAMkN,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG1P,IAAI,CAACC,GAAG,CAACP,CAAC,EAAEM,IAAI,CAACC,GAAG,CAACN,CAAC,EAAEC,CAAC,CAAC,CAAC;EAE/CA,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAGI,IAAI,CAACE,GAAG,CAACR,CAAC,EAAEM,IAAI,CAACE,GAAG,CAACP,CAAC,EAAEC,CAAC,CAAC,CAAC;EAE7C,OAAO,CAAC0P,CAAC,EAAEI,CAAC,GAAG,GAAG,EAAE9P,CAAC,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED+Q,OAAO,CAACnO,GAAG,CAACsV,KAAK,GAAG,UAAUtV,GAAG,EAAE;EAClC;EACA,IAAM9C,CAAC,GAAG+Y,yBAAyB,CAACjW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EACjD,IAAM7C,CAAC,GAAG8Y,yBAAyB,CAACjW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EACjD,IAAM5C,CAAC,GAAG6Y,yBAAyB,CAACjW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAEjD,IAAMyW,EAAE,GAAGjZ,IAAI,CAACkZ,IAAI,CAAC,YAAe,GAAGxZ,CAAC,GAAG,YAAe,GAAGC,CAAC,GAAG,YAAe,GAAGC,CAAC,CAAC;EACrF,IAAMuZ,EAAE,GAAGnZ,IAAI,CAACkZ,IAAI,CAAC,YAAe,GAAGxZ,CAAC,GAAG,YAAe,GAAGC,CAAC,GAAG,YAAe,GAAGC,CAAC,CAAC;EACrF,IAAMwZ,EAAE,GAAGpZ,IAAI,CAACkZ,IAAI,CAAC,YAAe,GAAGxZ,CAAC,GAAG,YAAe,GAAGC,CAAC,GAAG,YAAe,GAAGC,CAAC,CAAC;EAErF,IAAM4P,CAAC,GAAG,YAAe,GAAGyJ,EAAE,GAAG,WAAa,GAAGE,EAAE,GAAG,YAAe,GAAGC,EAAE;EAC1E,IAAMC,EAAE,GAAG,YAAe,GAAGJ,EAAE,GAAG,WAAa,GAAGE,EAAE,GAAG,YAAe,GAAGC,EAAE;EAC3E,IAAME,EAAE,GAAG,YAAe,GAAGL,EAAE,GAAG,YAAe,GAAGE,EAAE,GAAG,WAAa,GAAGC,EAAE;EAE3E,OAAO,CAAC5J,CAAC,GAAG,GAAG,EAAE6J,EAAE,GAAG,GAAG,EAAEC,EAAE,GAAG,GAAG,CAAC;AACrC,CAAC;AAED3I,OAAO,CAACnO,GAAG,CAACmV,IAAI,GAAG,UAAUnV,GAAG,EAAE;EACjC,IAAM9C,CAAC,GAAG8C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM7C,CAAC,GAAG6C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM5C,CAAC,GAAG4C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EAEtB,IAAM+W,CAAC,GAAGvZ,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGP,CAAC,EAAE,CAAC,GAAGC,CAAC,EAAE,CAAC,GAAGC,CAAC,CAAC;EACvC,IAAM2Y,CAAC,GAAG,CAAC,CAAC,GAAG7Y,CAAC,GAAG6Z,CAAC,KAAK,CAAC,GAAGA,CAAC,CAAC,IAAI,CAAC;EACpC,IAAMjC,CAAC,GAAG,CAAC,CAAC,GAAG3X,CAAC,GAAG4Z,CAAC,KAAK,CAAC,GAAGA,CAAC,CAAC,IAAI,CAAC;EACpC,IAAMnG,CAAC,GAAG,CAAC,CAAC,GAAGxT,CAAC,GAAG2Z,CAAC,KAAK,CAAC,GAAGA,CAAC,CAAC,IAAI,CAAC;EAEpC,OAAO,CAAChB,CAAC,GAAG,GAAG,EAAEjB,CAAC,GAAG,GAAG,EAAElE,CAAC,GAAG,GAAG,EAAEmG,CAAC,GAAG,GAAG,CAAC;AAC5C,CAAC;AAED,SAASC,mBAAmBA,CAACrG,CAAC,EAAEC,CAAC,EAAE;EAClC;AACD;AACA;EACC,OACCpT,IAAA,CAAAmB,GAAA,CAAEgS,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,EAAK,CAAC,IAAApT,IAAA,CAAAmB,GAAA,CACjBgS,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,EAAK,CAAC,CAAC,GAAApT,IAAA,CAAAmB,GAAA,CAClBgS,CAAC,CAAC,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAC,EAAK,CAAC,CAAC;AAEtB;AAEAzC,OAAO,CAACnO,GAAG,CAACoM,OAAO,GAAG,UAAUpM,GAAG,EAAE;EACpC,IAAMiX,QAAQ,GAAGjC,eAAe,CAAChV,GAAG,CAAC;EACrC,IAAIiX,QAAQ,EAAE;IACb,OAAOA,QAAQ;EAChB;EAEA,IAAIC,sBAAsB,GAAGzK,MAAM,CAAC0K,iBAAiB;EACrD,IAAIC,qBAAqB;EAEzB,SAAAC,GAAA,MAAAC,aAAA,GAAsBrM,MAAM,CAACiD,IAAI,CAAC+G,kDAAW,CAAC,EAAAoC,GAAA,GAAAC,aAAA,CAAAhb,MAAA,EAAA+a,GAAA,IAAE;IAA3C,IAAMjL,OAAO,GAAAkL,aAAA,CAAAD,GAAA;IACjB,IAAMrZ,KAAK,GAAGiX,kDAAW,CAAC7I,OAAO,CAAC;;IAElC;IACA,IAAMmL,QAAQ,GAAGP,mBAAmB,CAAChX,GAAG,EAAEhC,KAAK,CAAC;;IAEhD;IACA,IAAIuZ,QAAQ,GAAGL,sBAAsB,EAAE;MACtCA,sBAAsB,GAAGK,QAAQ;MACjCH,qBAAqB,GAAGhL,OAAO;IAChC;EACD;EAEA,OAAOgL,qBAAqB;AAC7B,CAAC;AAEDjJ,OAAO,CAAC/B,OAAO,CAACpM,GAAG,GAAG,UAAUoM,OAAO,EAAE;EACxC,OAAAgC,kBAAA,CAAW6G,kDAAW,CAAC7I,OAAO,CAAC;AAChC,CAAC;AAED+B,OAAO,CAACnO,GAAG,CAACoV,GAAG,GAAG,UAAUpV,GAAG,EAAE;EAChC;EACA,IAAM9C,CAAC,GAAG+Y,yBAAyB,CAACjW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EACjD,IAAM7C,CAAC,GAAG8Y,yBAAyB,CAACjW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EACjD,IAAM5C,CAAC,GAAG6Y,yBAAyB,CAACjW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAEjD,IAAM2Q,CAAC,GAAIzT,CAAC,GAAG,SAAW,GAAKC,CAAC,GAAG,SAAY,GAAIC,CAAC,GAAG,SAAY;EACnE,IAAMwT,CAAC,GAAI1T,CAAC,GAAG,SAAW,GAAKC,CAAC,GAAG,SAAY,GAAIC,CAAC,GAAG,QAAU;EACjE,IAAMyT,CAAC,GAAI3T,CAAC,GAAG,SAAW,GAAKC,CAAC,GAAG,QAAU,GAAIC,CAAC,GAAG,SAAY;EAEjE,OAAO,CAACuT,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED1C,OAAO,CAACnO,GAAG,CAACqV,GAAG,GAAG,UAAUrV,GAAG,EAAE;EAChC,IAAMoV,GAAG,GAAGjH,OAAO,CAACnO,GAAG,CAACoV,GAAG,CAACpV,GAAG,CAAC;EAChC,IAAI2Q,CAAC,GAAGyE,GAAG,CAAC,CAAC,CAAC;EACd,IAAIxE,CAAC,GAAGwE,GAAG,CAAC,CAAC,CAAC;EACd,IAAIvE,CAAC,GAAGuE,GAAG,CAAC,CAAC,CAAC;EAEdzE,CAAC,IAAI,MAAM;EACXC,CAAC,IAAI,GAAG;EACRC,CAAC,IAAI,OAAO;EAEZF,CAAC,GAAGA,CAAC,GAAGkF,MAAM,GAAArY,IAAA,CAAAmB,GAAA,CAAIgS,CAAC,EAAK,CAAC,GAAG,CAAC,IAAM,KAAK,GAAGA,CAAC,GAAK,EAAE,GAAG,GAAI;EAC1DC,CAAC,GAAGA,CAAC,GAAGiF,MAAM,GAAArY,IAAA,CAAAmB,GAAA,CAAIiS,CAAC,EAAK,CAAC,GAAG,CAAC,IAAM,KAAK,GAAGA,CAAC,GAAK,EAAE,GAAG,GAAI;EAC1DC,CAAC,GAAGA,CAAC,GAAGgF,MAAM,GAAArY,IAAA,CAAAmB,GAAA,CAAIkS,CAAC,EAAK,CAAC,GAAG,CAAC,IAAM,KAAK,GAAGA,CAAC,GAAK,EAAE,GAAG,GAAI;EAE1D,IAAM7D,CAAC,GAAI,GAAG,GAAG4D,CAAC,GAAI,EAAE;EACxB,IAAMvS,CAAC,GAAG,GAAG,IAAIsS,CAAC,GAAGC,CAAC,CAAC;EACvB,IAAMxT,CAAC,GAAG,GAAG,IAAIwT,CAAC,GAAGC,CAAC,CAAC;EAEvB,OAAO,CAAC7D,CAAC,EAAE3O,CAAC,EAAEjB,CAAC,CAAC;AACjB,CAAC;AAED+Q,OAAO,CAACrC,GAAG,CAAC9L,GAAG,GAAG,UAAU8L,GAAG,EAAE;EAChC,IAAMgB,CAAC,GAAGhB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMiB,CAAC,GAAGjB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMkB,CAAC,GAAGlB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAI0L,EAAE;EACN,IAAIxZ,KAAK;EAET,IAAI+O,CAAC,KAAK,CAAC,EAAE;IACZ/O,KAAK,GAAGgP,CAAC,GAAG,GAAG;IACf,OAAO,CAAChP,KAAK,EAAEA,KAAK,EAAEA,KAAK,CAAC;EAC7B;EAEA,IAAMyZ,EAAE,GAAGzK,CAAC,GAAG,GAAG,GAAGA,CAAC,IAAI,CAAC,GAAGD,CAAC,CAAC,GAAGC,CAAC,GAAGD,CAAC,GAAGC,CAAC,GAAGD,CAAC;EAEhD,IAAM2K,EAAE,GAAG,CAAC,GAAG1K,CAAC,GAAGyK,EAAE;EAErB,IAAMzX,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACrB,KAAK,IAAIsM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC3BkL,EAAE,GAAG1K,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAER,CAAC,GAAG,CAAC,CAAC;IACzB,IAAIkL,EAAE,GAAG,CAAC,EAAE;MACXA,EAAE,EAAE;IACL;IAEA,IAAIA,EAAE,GAAG,CAAC,EAAE;MACXA,EAAE,EAAE;IACL;IAEA,IAAI,CAAC,GAAGA,EAAE,GAAG,CAAC,EAAE;MACfxZ,KAAK,GAAG0Z,EAAE,GAAG,CAACD,EAAE,GAAGC,EAAE,IAAI,CAAC,GAAGF,EAAE;IAChC,CAAC,MAAM,IAAI,CAAC,GAAGA,EAAE,GAAG,CAAC,EAAE;MACtBxZ,KAAK,GAAGyZ,EAAE;IACX,CAAC,MAAM,IAAI,CAAC,GAAGD,EAAE,GAAG,CAAC,EAAE;MACtBxZ,KAAK,GAAG0Z,EAAE,GAAG,CAACD,EAAE,GAAGC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAGF,EAAE,CAAC,GAAG,CAAC;IAC1C,CAAC,MAAM;MACNxZ,KAAK,GAAG0Z,EAAE;IACX;IAEA1X,GAAG,CAACsM,CAAC,CAAC,GAAGtO,KAAK,GAAG,GAAG;EACrB;EAEA,OAAOgC,GAAG;AACX,CAAC;AAEDmO,OAAO,CAACrC,GAAG,CAACoJ,GAAG,GAAG,UAAUpJ,GAAG,EAAE;EAChC,IAAMgB,CAAC,GAAGhB,GAAG,CAAC,CAAC,CAAC;EAChB,IAAIiB,CAAC,GAAGjB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACpB,IAAIkB,CAAC,GAAGlB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACpB,IAAI6L,IAAI,GAAG5K,CAAC;EACZ,IAAM6K,IAAI,GAAGpa,IAAI,CAACE,GAAG,CAACsP,CAAC,EAAE,IAAI,CAAC;EAE9BA,CAAC,IAAI,CAAC;EACND,CAAC,IAAKC,CAAC,IAAI,CAAC,GAAIA,CAAC,GAAG,CAAC,GAAGA,CAAC;EACzB2K,IAAI,IAAIC,IAAI,IAAI,CAAC,GAAGA,IAAI,GAAG,CAAC,GAAGA,IAAI;EACnC,IAAM7C,CAAC,GAAG,CAAC/H,CAAC,GAAGD,CAAC,IAAI,CAAC;EACrB,IAAM8K,EAAE,GAAG7K,CAAC,KAAK,CAAC,GAAI,CAAC,GAAG2K,IAAI,IAAKC,IAAI,GAAGD,IAAI,CAAC,GAAI,CAAC,GAAG5K,CAAC,IAAKC,CAAC,GAAGD,CAAC,CAAC;EAEnE,OAAO,CAACD,CAAC,EAAE+K,EAAE,GAAG,GAAG,EAAE9C,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC;AAED5G,OAAO,CAAC+G,GAAG,CAAClV,GAAG,GAAG,UAAUkV,GAAG,EAAE;EAChC,IAAMpI,CAAC,GAAGoI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;EACrB,IAAMnI,CAAC,GAAGmI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAIH,CAAC,GAAGG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACpB,IAAM4C,EAAE,GAAGta,IAAI,CAACua,KAAK,CAACjL,CAAC,CAAC,GAAG,CAAC;EAE5B,IAAMmF,CAAC,GAAGnF,CAAC,GAAGtP,IAAI,CAACua,KAAK,CAACjL,CAAC,CAAC;EAC3B,IAAM6G,CAAC,GAAG,GAAG,GAAGoB,CAAC,IAAI,CAAC,GAAGhI,CAAC,CAAC;EAC3B,IAAMiL,CAAC,GAAG,GAAG,GAAGjD,CAAC,IAAI,CAAC,GAAIhI,CAAC,GAAGkF,CAAE,CAAC;EACjC,IAAMgG,CAAC,GAAG,GAAG,GAAGlD,CAAC,IAAI,CAAC,GAAIhI,CAAC,IAAI,CAAC,GAAGkF,CAAC,CAAE,CAAC;EACvC8C,CAAC,IAAI,GAAG;EAER,QAAQ+C,EAAE;IACT,KAAK,CAAC;MAAE;QACP,OAAO,CAAC/C,CAAC,EAAEkD,CAAC,EAAEtE,CAAC,CAAC;MACjB;IAEA,KAAK,CAAC;MAAE;QACP,OAAO,CAACqE,CAAC,EAAEjD,CAAC,EAAEpB,CAAC,CAAC;MACjB;IAEA,KAAK,CAAC;MAAE;QACP,OAAO,CAACA,CAAC,EAAEoB,CAAC,EAAEkD,CAAC,CAAC;MACjB;IAEA,KAAK,CAAC;MAAE;QACP,OAAO,CAACtE,CAAC,EAAEqE,CAAC,EAAEjD,CAAC,CAAC;MACjB;IAEA,KAAK,CAAC;MAAE;QACP,OAAO,CAACkD,CAAC,EAAEtE,CAAC,EAAEoB,CAAC,CAAC;MACjB;IAEA,KAAK,CAAC;MAAE;QACP,OAAO,CAACA,CAAC,EAAEpB,CAAC,EAAEqE,CAAC,CAAC;MACjB;EACD;AACD,CAAC;AAED7J,OAAO,CAAC+G,GAAG,CAACpJ,GAAG,GAAG,UAAUoJ,GAAG,EAAE;EAChC,IAAMpI,CAAC,GAAGoI,GAAG,CAAC,CAAC,CAAC;EAChB,IAAMnI,CAAC,GAAGmI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMH,CAAC,GAAGG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMgD,IAAI,GAAG1a,IAAI,CAACE,GAAG,CAACqX,CAAC,EAAE,IAAI,CAAC;EAC9B,IAAIoD,EAAE;EACN,IAAInL,CAAC;EAELA,CAAC,GAAG,CAAC,CAAC,GAAGD,CAAC,IAAIgI,CAAC;EACf,IAAM6C,IAAI,GAAG,CAAC,CAAC,GAAG7K,CAAC,IAAImL,IAAI;EAC3BC,EAAE,GAAGpL,CAAC,GAAGmL,IAAI;EACbC,EAAE,IAAKP,IAAI,IAAI,CAAC,GAAIA,IAAI,GAAG,CAAC,GAAGA,IAAI;EACnCO,EAAE,GAAGA,EAAE,IAAI,CAAC;EACZnL,CAAC,IAAI,CAAC;EAEN,OAAO,CAACF,CAAC,EAAEqL,EAAE,GAAG,GAAG,EAAEnL,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC;;AAED;AACAmB,OAAO,CAACpC,GAAG,CAAC/L,GAAG,GAAG,UAAU+L,GAAG,EAAE;EAChC,IAAMe,CAAC,GAAGf,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAIqM,EAAE,GAAGrM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACrB,IAAIsM,EAAE,GAAGtM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACrB,IAAM6G,KAAK,GAAGwF,EAAE,GAAGC,EAAE;EACrB,IAAIpG,CAAC;;EAEL;EACA,IAAIW,KAAK,GAAG,CAAC,EAAE;IACdwF,EAAE,IAAIxF,KAAK;IACXyF,EAAE,IAAIzF,KAAK;EACZ;EAEA,IAAMtG,CAAC,GAAG9O,IAAI,CAACua,KAAK,CAAC,CAAC,GAAGjL,CAAC,CAAC;EAC3B,IAAMiI,CAAC,GAAG,CAAC,GAAGsD,EAAE;EAChBpG,CAAC,GAAG,CAAC,GAAGnF,CAAC,GAAGR,CAAC;;EAEb;EACA,IAAI,CAACA,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;IACrB2F,CAAC,GAAG,CAAC,GAAGA,CAAC;EACV;EAEA,IAAMR,CAAC,GAAG2G,EAAE,GAAGnG,CAAC,IAAI8C,CAAC,GAAGqD,EAAE,CAAC,CAAC,CAAC;;EAE7B,IAAIlb,CAAC;EACL,IAAIC,CAAC;EACL,IAAIC,CAAC;EACL;EACA,QAAQkP,CAAC;IACR;IACA,KAAK,CAAC;IACN,KAAK,CAAC;MAAE;QAAEpP,CAAC,GAAG6X,CAAC;QAAG5X,CAAC,GAAGsU,CAAC;QAAGrU,CAAC,GAAGgb,EAAE;QAAE;MAClC;IAEA,KAAK,CAAC;MAAE;QAAElb,CAAC,GAAGuU,CAAC;QAAGtU,CAAC,GAAG4X,CAAC;QAAG3X,CAAC,GAAGgb,EAAE;QAAE;MAClC;IAEA,KAAK,CAAC;MAAE;QAAElb,CAAC,GAAGkb,EAAE;QAAEjb,CAAC,GAAG4X,CAAC;QAAG3X,CAAC,GAAGqU,CAAC;QAAE;MACjC;IAEA,KAAK,CAAC;MAAE;QAAEvU,CAAC,GAAGkb,EAAE;QAAEjb,CAAC,GAAGsU,CAAC;QAAGrU,CAAC,GAAG2X,CAAC;QAAE;MACjC;IAEA,KAAK,CAAC;MAAE;QAAE7X,CAAC,GAAGuU,CAAC;QAAGtU,CAAC,GAAGib,EAAE;QAAEhb,CAAC,GAAG2X,CAAC;QAAE;MACjC;IAEA,KAAK,CAAC;MAAE;QAAE7X,CAAC,GAAG6X,CAAC;QAAG5X,CAAC,GAAGib,EAAE;QAAEhb,CAAC,GAAGqU,CAAC;QAAE;MACjC;EACD;EACA;;EAEA,OAAO,CAACvU,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED+Q,OAAO,CAACgH,IAAI,CAACnV,GAAG,GAAG,UAAUmV,IAAI,EAAE;EAClC,IAAMY,CAAC,GAAGZ,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;EACvB,IAAML,CAAC,GAAGK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;EACvB,IAAMvE,CAAC,GAAGuE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;EACvB,IAAM4B,CAAC,GAAG5B,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;EAEvB,IAAMjY,CAAC,GAAG,CAAC,GAAGM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEsY,CAAC,IAAI,CAAC,GAAGgB,CAAC,CAAC,GAAGA,CAAC,CAAC;EAC1C,IAAM5Z,CAAC,GAAG,CAAC,GAAGK,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEqX,CAAC,IAAI,CAAC,GAAGiC,CAAC,CAAC,GAAGA,CAAC,CAAC;EAC1C,IAAM3Z,CAAC,GAAG,CAAC,GAAGI,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEmT,CAAC,IAAI,CAAC,GAAGmG,CAAC,CAAC,GAAGA,CAAC,CAAC;EAE1C,OAAO,CAAC7Z,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED+Q,OAAO,CAACiH,GAAG,CAACpV,GAAG,GAAG,UAAUoV,GAAG,EAAE;EAChC,IAAMzE,CAAC,GAAGyE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMxE,CAAC,GAAGwE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMvE,CAAC,GAAGuE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAIlY,CAAC;EACL,IAAIC,CAAC;EACL,IAAIC,CAAC;EAELF,CAAC,GAAIyT,CAAC,GAAG,SAAW,GAAKC,CAAC,GAAG,CAAC,SAAY,GAAIC,CAAC,GAAG,CAAC,SAAY;EAC/D1T,CAAC,GAAIwT,CAAC,GAAG,CAAC,QAAS,GAAKC,CAAC,GAAG,SAAY,GAAIC,CAAC,GAAG,QAAU;EAC1DzT,CAAC,GAAIuT,CAAC,GAAG,SAAW,GAAKC,CAAC,GAAG,CAAC,SAAY,GAAIC,CAAC,GAAG,SAAY;;EAE9D;EACA3T,CAAC,GAAG4Y,sBAAsB,CAAC5Y,CAAC,CAAC;EAC7BC,CAAC,GAAG2Y,sBAAsB,CAAC3Y,CAAC,CAAC;EAC7BC,CAAC,GAAG0Y,sBAAsB,CAAC1Y,CAAC,CAAC;EAE7B,OAAO,CAACF,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED+Q,OAAO,CAACiH,GAAG,CAACC,GAAG,GAAG,UAAUD,GAAG,EAAE;EAChC,IAAIzE,CAAC,GAAGyE,GAAG,CAAC,CAAC,CAAC;EACd,IAAIxE,CAAC,GAAGwE,GAAG,CAAC,CAAC,CAAC;EACd,IAAIvE,CAAC,GAAGuE,GAAG,CAAC,CAAC,CAAC;EAEdzE,CAAC,IAAI,MAAM;EACXC,CAAC,IAAI,GAAG;EACRC,CAAC,IAAI,OAAO;EAEZF,CAAC,GAAGA,CAAC,GAAGkF,MAAM,GAAArY,IAAA,CAAAmB,GAAA,CAAIgS,CAAC,EAAK,CAAC,GAAG,CAAC,IAAM,KAAK,GAAGA,CAAC,GAAK,EAAE,GAAG,GAAI;EAC1DC,CAAC,GAAGA,CAAC,GAAGiF,MAAM,GAAArY,IAAA,CAAAmB,GAAA,CAAIiS,CAAC,EAAK,CAAC,GAAG,CAAC,IAAM,KAAK,GAAGA,CAAC,GAAK,EAAE,GAAG,GAAI;EAC1DC,CAAC,GAAGA,CAAC,GAAGgF,MAAM,GAAArY,IAAA,CAAAmB,GAAA,CAAIkS,CAAC,EAAK,CAAC,GAAG,CAAC,IAAM,KAAK,GAAGA,CAAC,GAAK,EAAE,GAAG,GAAI;EAE1D,IAAM7D,CAAC,GAAI,GAAG,GAAG4D,CAAC,GAAI,EAAE;EACxB,IAAMvS,CAAC,GAAG,GAAG,IAAIsS,CAAC,GAAGC,CAAC,CAAC;EACvB,IAAMxT,CAAC,GAAG,GAAG,IAAIwT,CAAC,GAAGC,CAAC,CAAC;EAEvB,OAAO,CAAC7D,CAAC,EAAE3O,CAAC,EAAEjB,CAAC,CAAC;AACjB,CAAC;AAED+Q,OAAO,CAACiH,GAAG,CAACE,KAAK,GAAG,UAAUF,GAAG,EAAE;EAClC,IAAMzE,CAAC,GAAGyE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMxE,CAAC,GAAGwE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMvE,CAAC,GAAGuE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EAEtB,IAAMqB,EAAE,GAAGjZ,IAAI,CAACkZ,IAAI,CAAC,YAAe,GAAG/F,CAAC,GAAG,YAAe,GAAGC,CAAC,GAAG,YAAe,GAAGC,CAAC,CAAC;EACrF,IAAM8F,EAAE,GAAGnZ,IAAI,CAACkZ,IAAI,CAAC,YAAe,GAAG/F,CAAC,GAAG,YAAe,GAAGC,CAAC,GAAG,YAAe,GAAGC,CAAC,CAAC;EACrF,IAAM+F,EAAE,GAAGpZ,IAAI,CAACkZ,IAAI,CAAC,YAAe,GAAG/F,CAAC,GAAG,YAAe,GAAGC,CAAC,GAAG,WAAa,GAAGC,CAAC,CAAC;EAEnF,IAAM7D,CAAC,GAAG,YAAe,GAAGyJ,EAAE,GAAG,WAAa,GAAGE,EAAE,GAAG,YAAe,GAAGC,EAAE;EAC1E,IAAMvY,CAAC,GAAG,YAAe,GAAGoY,EAAE,GAAG,WAAa,GAAGE,EAAE,GAAG,YAAe,GAAGC,EAAE;EAC1E,IAAMxZ,CAAC,GAAG,YAAe,GAAGqZ,EAAE,GAAG,YAAe,GAAGE,EAAE,GAAG,WAAa,GAAGC,EAAE;EAE1E,OAAO,CAAC5J,CAAC,GAAG,GAAG,EAAE3O,CAAC,GAAG,GAAG,EAAEjB,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED+Q,OAAO,CAACmH,KAAK,CAACE,KAAK,GAAG,UAAUF,KAAK,EAAE;EACtC,OAAOnH,OAAO,CAACkH,GAAG,CAACE,GAAG,CAACD,KAAK,CAAC;AAC9B,CAAC;AAEDnH,OAAO,CAACmH,KAAK,CAACF,GAAG,GAAG,UAAUE,KAAK,EAAE;EACpC,IAAMgD,EAAE,GAAGhD,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;EACzB,IAAMjX,CAAC,GAAGiX,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;EACxB,IAAMlY,CAAC,GAAGkY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;EAExB,IAAMtI,CAAC,GAAAxP,IAAA,CAAAmB,GAAA,CAAI,WAAa,GAAG2Z,EAAE,GAAG,WAAa,GAAGja,CAAC,GAAG,WAAa,GAAGjB,CAAC,EAAK,CAAC;EAC3E,IAAM0X,CAAC,GAAAtX,IAAA,CAAAmB,GAAA,CAAI,WAAa,GAAG2Z,EAAE,GAAG,WAAa,GAAGja,CAAC,GAAG,WAAa,GAAGjB,CAAC,EAAK,CAAC;EAC3E,IAAM2P,CAAC,GAAAvP,IAAA,CAAAmB,GAAA,CAAI,WAAa,GAAG2Z,EAAE,GAAG,WAAa,GAAGja,CAAC,GAAG,WAAa,GAAGjB,CAAC,EAAK,CAAC;EAE3E,IAAMuT,CAAC,GAAG,WAAa,GAAG3D,CAAC,GAAG,UAAY,GAAG8H,CAAC,GAAG,WAAa,GAAG/H,CAAC;EAClE,IAAM6D,CAAC,GAAG,CAAC,WAAa,GAAG5D,CAAC,GAAG,UAAY,GAAG8H,CAAC,GAAG,WAAa,GAAG/H,CAAC;EACnE,IAAM8D,CAAC,GAAG,CAAC,WAAa,GAAG7D,CAAC,GAAG,WAAa,GAAG8H,CAAC,GAAG,UAAY,GAAG/H,CAAC;EAEnE,OAAO,CAAC4D,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED1C,OAAO,CAACmH,KAAK,CAACtV,GAAG,GAAG,UAAUsV,KAAK,EAAE;EACpC,IAAMgD,EAAE,GAAGhD,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;EACzB,IAAMuB,EAAE,GAAGvB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;EACzB,IAAMwB,EAAE,GAAGxB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;EAEzB,IAAMtI,CAAC,GAAAxP,IAAA,CAAAmB,GAAA,CAAI2Z,EAAE,GAAG,YAAe,GAAGzB,EAAE,GAAG,YAAe,GAAGC,EAAE,EAAK,CAAC;EACjE,IAAMhC,CAAC,GAAAtX,IAAA,CAAAmB,GAAA,CAAI2Z,EAAE,GAAG,YAAe,GAAGzB,EAAE,GAAG,YAAe,GAAGC,EAAE,EAAK,CAAC;EACjE,IAAM/J,CAAC,GAAAvP,IAAA,CAAAmB,GAAA,CAAI2Z,EAAE,GAAG,YAAe,GAAGzB,EAAE,GAAG,WAAa,GAAGC,EAAE,EAAK,CAAC;;EAE/D;EACA,IAAM5Z,CAAC,GAAG4Y,sBAAsB,CAAC,YAAe,GAAG9I,CAAC,GAAG,YAAe,GAAG8H,CAAC,GAAG,YAAe,GAAG/H,CAAC,CAAC;EACjG,IAAM5P,CAAC,GAAG2Y,sBAAsB,CAAC,CAAC,YAAe,GAAG9I,CAAC,GAAG,YAAe,GAAG8H,CAAC,GAAG,YAAe,GAAG/H,CAAC,CAAC;EAClG,IAAM3P,CAAC,GAAG0Y,sBAAsB,CAAC,CAAC,YAAe,GAAG9I,CAAC,GAAG,YAAe,GAAG8H,CAAC,GAAG,WAAa,GAAG/H,CAAC,CAAC;EAEhG,OAAO,CAAC7P,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED+Q,OAAO,CAACqH,KAAK,CAACF,KAAK,GAAG,UAAUE,KAAK,EAAE;EACtC,OAAOrH,OAAO,CAACoH,GAAG,CAACF,GAAG,CAACG,KAAK,CAAC;AAC9B,CAAC;AAEDrH,OAAO,CAACkH,GAAG,CAACD,GAAG,GAAG,UAAUC,GAAG,EAAE;EAChC,IAAMrI,CAAC,GAAGqI,GAAG,CAAC,CAAC,CAAC;EAChB,IAAMhX,CAAC,GAAGgX,GAAG,CAAC,CAAC,CAAC;EAChB,IAAMjY,CAAC,GAAGiY,GAAG,CAAC,CAAC,CAAC;EAChB,IAAI1E,CAAC;EACL,IAAIC,CAAC;EACL,IAAIC,CAAC;EAELD,CAAC,GAAG,CAAC5D,CAAC,GAAG,EAAE,IAAI,GAAG;EAClB2D,CAAC,GAAGtS,CAAC,GAAG,GAAG,GAAGuS,CAAC;EACfC,CAAC,GAAGD,CAAC,GAAGxT,CAAC,GAAG,GAAG;EAEf,IAAMmb,EAAE,GAAA/a,IAAA,CAAAmB,GAAA,CAAGiS,CAAC,EAAI,CAAC;EACjB,IAAM4H,EAAE,GAAAhb,IAAA,CAAAmB,GAAA,CAAGgS,CAAC,EAAI,CAAC;EACjB,IAAM8H,EAAE,GAAAjb,IAAA,CAAAmB,GAAA,CAAGkS,CAAC,EAAI,CAAC;EACjBD,CAAC,GAAG2H,EAAE,GAAG1C,MAAM,GAAG0C,EAAE,GAAG,CAAC3H,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK;EAC7CD,CAAC,GAAG6H,EAAE,GAAG3C,MAAM,GAAG2C,EAAE,GAAG,CAAC7H,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK;EAC7CE,CAAC,GAAG4H,EAAE,GAAG5C,MAAM,GAAG4C,EAAE,GAAG,CAAC5H,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,KAAK;;EAE7C;EACA;EACAF,CAAC,IAAI,MAAM;EACXC,CAAC,IAAI,GAAG;EACRC,CAAC,IAAI,OAAO;EAEZ,OAAO,CAACF,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AACjB,CAAC;AAED1C,OAAO,CAACkH,GAAG,CAACE,GAAG,GAAG,UAAUF,GAAG,EAAE;EAChC,IAAMrI,CAAC,GAAGqI,GAAG,CAAC,CAAC,CAAC;EAChB,IAAMhX,CAAC,GAAGgX,GAAG,CAAC,CAAC,CAAC;EAChB,IAAMjY,CAAC,GAAGiY,GAAG,CAAC,CAAC,CAAC;EAChB,IAAIvI,CAAC;EAEL,IAAM4L,EAAE,GAAGlb,IAAI,CAACmb,KAAK,CAACvb,CAAC,EAAEiB,CAAC,CAAC;EAC3ByO,CAAC,GAAG4L,EAAE,GAAG,GAAG,GAAG,CAAC,GAAGlb,IAAI,CAACob,EAAE;EAE1B,IAAI9L,CAAC,GAAG,CAAC,EAAE;IACVA,CAAC,IAAI,GAAG;EACT;EAEA,IAAMiJ,CAAC,GAAGvY,IAAI,CAACK,IAAI,CAACQ,CAAC,GAAGA,CAAC,GAAGjB,CAAC,GAAGA,CAAC,CAAC;EAElC,OAAO,CAAC4P,CAAC,EAAE+I,CAAC,EAAEjJ,CAAC,CAAC;AACjB,CAAC;AAEDqB,OAAO,CAACoH,GAAG,CAACF,GAAG,GAAG,UAAUE,GAAG,EAAE;EAChC,IAAMvI,CAAC,GAAGuI,GAAG,CAAC,CAAC,CAAC;EAChB,IAAMQ,CAAC,GAAGR,GAAG,CAAC,CAAC,CAAC;EAChB,IAAMzI,CAAC,GAAGyI,GAAG,CAAC,CAAC,CAAC;EAEhB,IAAMmD,EAAE,GAAG5L,CAAC,GAAG,GAAG,GAAG,CAAC,GAAGtP,IAAI,CAACob,EAAE;EAChC,IAAMva,CAAC,GAAG0X,CAAC,GAAGvY,IAAI,CAACqb,GAAG,CAACH,EAAE,CAAC;EAC1B,IAAMtb,CAAC,GAAG2Y,CAAC,GAAGvY,IAAI,CAACsb,GAAG,CAACJ,EAAE,CAAC;EAE1B,OAAO,CAAC1L,CAAC,EAAE3O,CAAC,EAAEjB,CAAC,CAAC;AACjB,CAAC;AAED+Q,OAAO,CAACnO,GAAG,CAACyV,MAAM,GAAG,UAAUpZ,IAAI,EAAqB;EAAA,IAAnBuE,UAAU,GAAAwM,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;EACrD,IAAA2L,KAAA,GAAAnH,cAAA,CAAkBvV,IAAI;IAAfa,CAAC,GAAA6b,KAAA;IAAE5b,CAAC,GAAA4b,KAAA;IAAE3b,CAAC,GAAA2b,KAAA;EACd,IAAI/a,KAAK,GAAG4C,UAAU,KAAK,IAAI,GAAGuN,OAAO,CAACnO,GAAG,CAACkV,GAAG,CAAC7Y,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGuE,UAAU,CAAC,CAAC;;EAEzE5C,KAAK,GAAGR,IAAI,CAACoB,KAAK,CAACZ,KAAK,GAAG,EAAE,CAAC;EAE9B,IAAIA,KAAK,KAAK,CAAC,EAAE;IAChB,OAAO,EAAE;EACV;EAEA,IAAIgb,IAAI,GAAG;EACV,mCACIxb,IAAI,CAACoB,KAAK,CAACxB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GACzBI,IAAI,CAACoB,KAAK,CAACzB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAE,GAC1BK,IAAI,CAACoB,KAAK,CAAC1B,CAAC,GAAG,GAAG,CAAC,CAAC;EACtB;;EAED,IAAIc,KAAK,KAAK,CAAC,EAAE;IAChBgb,IAAI,IAAI,EAAE;EACX;EAEA,OAAOA,IAAI;AACZ,CAAC;AAED7K,OAAO,CAAC+G,GAAG,CAACO,MAAM,GAAG,UAAUpZ,IAAI,EAAE;EACpC;EACA;EACA,OAAO8R,OAAO,CAACnO,GAAG,CAACyV,MAAM,CAACtH,OAAO,CAAC+G,GAAG,CAAClV,GAAG,CAAC3D,IAAI,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED8R,OAAO,CAACnO,GAAG,CAAC0V,OAAO,GAAG,UAAUrZ,IAAI,EAAE;EACrC,IAAMa,CAAC,GAAGb,IAAI,CAAC,CAAC,CAAC;EACjB,IAAMc,CAAC,GAAGd,IAAI,CAAC,CAAC,CAAC;EACjB,IAAMe,CAAC,GAAGf,IAAI,CAAC,CAAC,CAAC;;EAEjB;EACA;EACA;EACA,IAAIa,CAAC,IAAI,CAAC,KAAKC,CAAC,IAAI,CAAC,IAAIA,CAAC,IAAI,CAAC,KAAKC,CAAC,IAAI,CAAC,EAAE;IAC3C,IAAIF,CAAC,GAAG,CAAC,EAAE;MACV,OAAO,EAAE;IACV;IAEA,IAAIA,CAAC,GAAG,GAAG,EAAE;MACZ,OAAO,GAAG;IACX;IAEA,OAAOM,IAAI,CAACoB,KAAK,CAAE,CAAC1B,CAAC,GAAG,CAAC,IAAI,GAAG,GAAI,EAAE,CAAC,GAAG,GAAG;EAC9C;EAEA,IAAM8b,IAAI,GAAG,EAAE,GACX,EAAE,GAAGxb,IAAI,CAACoB,KAAK,CAAC1B,CAAC,GAAG,GAAG,GAAG,CAAC,CAAE,GAC7B,CAAC,GAAGM,IAAI,CAACoB,KAAK,CAACzB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAE,GAC7BK,IAAI,CAACoB,KAAK,CAACxB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EAE1B,OAAO4b,IAAI;AACZ,CAAC;AAED7K,OAAO,CAACsH,MAAM,CAACzV,GAAG,GAAG,UAAU3D,IAAI,EAAE;EACpCA,IAAI,GAAGA,IAAI,CAAC,CAAC,CAAC;EAEd,IAAI+B,KAAK,GAAG/B,IAAI,GAAG,EAAE;;EAErB;EACA,IAAI+B,KAAK,KAAK,CAAC,IAAIA,KAAK,KAAK,CAAC,EAAE;IAC/B,IAAI/B,IAAI,GAAG,EAAE,EAAE;MACd+B,KAAK,IAAI,GAAG;IACb;IAEAA,KAAK,GAAGA,KAAK,GAAG,IAAI,GAAG,GAAG;IAE1B,OAAO,CAACA,KAAK,EAAEA,KAAK,EAAEA,KAAK,CAAC;EAC7B;EAEA,IAAM6a,IAAI,GAAG,CAACzb,IAAI,CAAC0b,KAAK,CAAC7c,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG;EAC9C;EACA,IAAMa,CAAC,GAAI,CAACkB,KAAK,GAAG,CAAC,IAAI6a,IAAI,GAAI,GAAG;EACpC,IAAM9b,CAAC,GAAI,CAAEiB,KAAK,IAAI,CAAC,GAAI,CAAC,IAAI6a,IAAI,GAAI,GAAG;EAC3C,IAAM7b,CAAC,GAAI,CAAEgB,KAAK,IAAI,CAAC,GAAI,CAAC,IAAI6a,IAAI,GAAI,GAAG;EAC3C;;EAEA,OAAO,CAAC/b,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AACjB,CAAC;AAED+Q,OAAO,CAACuH,OAAO,CAAC1V,GAAG,GAAG,UAAU3D,IAAI,EAAE;EACrCA,IAAI,GAAGA,IAAI,CAAC,CAAC,CAAC;;EAEd;EACA,IAAIA,IAAI,IAAI,GAAG,EAAE;IAChB,IAAM0Z,CAAC,GAAG,CAAC1Z,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC;IAC/B,OAAO,CAAC0Z,CAAC,EAAEA,CAAC,EAAEA,CAAC,CAAC;EACjB;EAEA1Z,IAAI,IAAI,EAAE;EAEV,IAAI8c,GAAG;EACP,IAAMjc,CAAC,GAAGM,IAAI,CAACua,KAAK,CAAC1b,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG;EACzC,IAAMc,CAAC,GAAGK,IAAI,CAACua,KAAK,CAAC,CAACoB,GAAG,GAAG9c,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACrD,IAAMe,CAAC,GAAI+b,GAAG,GAAG,CAAC,GAAI,CAAC,GAAG,GAAG;EAE7B,OAAO,CAACjc,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AACjB,CAAC;AAED+Q,OAAO,CAACnO,GAAG,CAACiM,GAAG,GAAG,UAAU5P,IAAI,EAAE;EACjC;EACA,IAAM+c,OAAO,GAAG,CAAC,CAAC5b,IAAI,CAACoB,KAAK,CAACvC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,KAC/C,CAACmB,IAAI,CAACoB,KAAK,CAACvC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAClCmB,IAAI,CAACoB,KAAK,CAACvC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAC/B;;EAEA,IAAMoP,MAAM,GAAG2N,OAAO,CAACxL,QAAQ,CAAC,EAAE,CAAC,CAACC,WAAW,CAAC,CAAC;EACjD,OAAO,QAAQ,CAAClC,KAAK,CAACF,MAAM,CAACnP,MAAM,CAAC,GAAGmP,MAAM;AAC9C,CAAC;AAED0C,OAAO,CAAClC,GAAG,CAACjM,GAAG,GAAG,UAAU3D,IAAI,EAAE;EACjC,IAAMgQ,KAAK,GAAGhQ,IAAI,CAACuR,QAAQ,CAAC,EAAE,CAAC,CAACvB,KAAK,CAAC,wBAAwB,CAAC;EAC/D,IAAI,CAACA,KAAK,EAAE;IACX,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACjB;EAEA,IAAIwC,WAAW,GAAGxC,KAAK,CAAC,CAAC,CAAC;EAE1B,IAAIA,KAAK,CAAC,CAAC,CAAC,CAAC/P,MAAM,KAAK,CAAC,EAAE;IAC1BuS,WAAW,GAAGT,kBAAA,CAAIS,WAAW,EAAEqB,GAAG,CAAC,UAAAmJ,KAAI;MAAA,OAAIA,KAAI,GAAGA,KAAI;IAAA,EAAC,CAAC/K,IAAI,CAAC,EAAE,CAAC;EACjE;EAEA,IAAM8K,OAAO,GAAG3M,MAAM,CAACC,QAAQ,CAACmC,WAAW,EAAE,EAAE,CAAC;EAChD;EACA,IAAM3R,CAAC,GAAIkc,OAAO,IAAI,EAAE,GAAI,IAAI;EAChC,IAAMjc,CAAC,GAAIic,OAAO,IAAI,CAAC,GAAI,IAAI;EAC/B,IAAMhc,CAAC,GAAGgc,OAAO,GAAG,IAAI;EACxB;;EAEA,OAAO,CAAClc,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AACjB,CAAC;AAED+Q,OAAO,CAACnO,GAAG,CAAC2V,GAAG,GAAG,UAAU3V,GAAG,EAAE;EAChC,IAAM9C,CAAC,GAAG8C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM7C,CAAC,GAAG6C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM5C,CAAC,GAAG4C,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMtC,GAAG,GAAGF,IAAI,CAACE,GAAG,CAACF,IAAI,CAACE,GAAG,CAACR,CAAC,EAAEC,CAAC,CAAC,EAAEC,CAAC,CAAC;EACvC,IAAMK,GAAG,GAAGD,IAAI,CAACC,GAAG,CAACD,IAAI,CAACC,GAAG,CAACP,CAAC,EAAEC,CAAC,CAAC,EAAEC,CAAC,CAAC;EACvC,IAAMqT,MAAM,GAAI/S,GAAG,GAAGD,GAAI;EAC1B,IAAI0D,GAAG;EAEP,IAAM8R,SAAS,GAAGxC,MAAM,GAAG,CAAC,GAAGhT,GAAG,IAAI,CAAC,GAAGgT,MAAM,CAAC,GAAG,CAAC;EAErD,IAAIA,MAAM,IAAI,CAAC,EAAE;IAChBtP,GAAG,GAAG,CAAC;EACR,CAAC,MAAM,IAAIzD,GAAG,KAAKR,CAAC,EAAE;IACrBiE,GAAG,GAAI,CAAChE,CAAC,GAAGC,CAAC,IAAIqT,MAAM,GAAI,CAAC;EAC7B,CAAC,MAAM,IAAI/S,GAAG,KAAKP,CAAC,EAAE;IACrBgE,GAAG,GAAG,CAAC,GAAG,CAAC/D,CAAC,GAAGF,CAAC,IAAIuT,MAAM;EAC3B,CAAC,MAAM;IACNtP,GAAG,GAAG,CAAC,GAAG,CAACjE,CAAC,GAAGC,CAAC,IAAIsT,MAAM;EAC3B;EAEAtP,GAAG,IAAI,CAAC;EACRA,GAAG,IAAI,CAAC;EAER,OAAO,CAACA,GAAG,GAAG,GAAG,EAAEsP,MAAM,GAAG,GAAG,EAAEwC,SAAS,GAAG,GAAG,CAAC;AAClD,CAAC;AAED9E,OAAO,CAACrC,GAAG,CAAC6J,GAAG,GAAG,UAAU7J,GAAG,EAAE;EAChC,IAAMiB,CAAC,GAAGjB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMkB,CAAC,GAAGlB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EAEtB,IAAMiK,CAAC,GAAG/I,CAAC,GAAG,GAAG,GAAI,CAAC,GAAGD,CAAC,GAAGC,CAAC,GAAK,CAAC,GAAGD,CAAC,IAAI,CAAC,GAAGC,CAAC,CAAE;EAEnD,IAAIiF,CAAC,GAAG,CAAC;EACT,IAAI8D,CAAC,GAAG,CAAC,EAAE;IACV9D,CAAC,GAAG,CAACjF,CAAC,GAAG,GAAG,GAAG+I,CAAC,KAAK,CAAC,GAAGA,CAAC,CAAC;EAC5B;EAEA,OAAO,CAACjK,GAAG,CAAC,CAAC,CAAC,EAAEiK,CAAC,GAAG,GAAG,EAAE9D,CAAC,GAAG,GAAG,CAAC;AAClC,CAAC;AAED9D,OAAO,CAAC+G,GAAG,CAACS,GAAG,GAAG,UAAUT,GAAG,EAAE;EAChC,IAAMnI,CAAC,GAAGmI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMH,CAAC,GAAGG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EAEtB,IAAMa,CAAC,GAAGhJ,CAAC,GAAGgI,CAAC;EACf,IAAI9C,CAAC,GAAG,CAAC;EAET,IAAI8D,CAAC,GAAG,CAAC,EAAE;IACV9D,CAAC,GAAG,CAAC8C,CAAC,GAAGgB,CAAC,KAAK,CAAC,GAAGA,CAAC,CAAC;EACtB;EAEA,OAAO,CAACb,GAAG,CAAC,CAAC,CAAC,EAAEa,CAAC,GAAG,GAAG,EAAE9D,CAAC,GAAG,GAAG,CAAC;AAClC,CAAC;AAED9D,OAAO,CAACwH,GAAG,CAAC3V,GAAG,GAAG,UAAU2V,GAAG,EAAE;EAChC,IAAM7I,CAAC,GAAG6I,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMI,CAAC,GAAGJ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMxY,CAAC,GAAGwY,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EAEtB,IAAII,CAAC,KAAK,CAAC,EAAE;IACZ,OAAO,CAAC5Y,CAAC,GAAG,GAAG,EAAEA,CAAC,GAAG,GAAG,EAAEA,CAAC,GAAG,GAAG,CAAC;EACnC;EAEA,IAAMmc,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACtB,IAAMxB,EAAE,GAAIhL,CAAC,GAAG,CAAC,GAAI,CAAC;EACtB,IAAMiI,CAAC,GAAG+C,EAAE,GAAG,CAAC;EAChB,IAAM5K,CAAC,GAAG,CAAC,GAAG6H,CAAC;EACf,IAAIwE,EAAE,GAAG,CAAC;;EAEV;EACA,QAAQ/b,IAAI,CAACua,KAAK,CAACD,EAAE,CAAC;IACrB,KAAK,CAAC;MAAE;QACPwB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAGvE,CAAC;QAAEuE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE;MACxC;IAEA,KAAK,CAAC;MAAE;QACPA,IAAI,CAAC,CAAC,CAAC,GAAGpM,CAAC;QAAEoM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE;MACxC;IAEA,KAAK,CAAC;MAAE;QACPA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAGvE,CAAC;QAAE;MACxC;IAEA,KAAK,CAAC;MAAE;QACPuE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAGpM,CAAC;QAAEoM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE;MACxC;IAEA,KAAK,CAAC;MAAE;QACPA,IAAI,CAAC,CAAC,CAAC,GAAGvE,CAAC;QAAEuE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE;MACxC;IAEA;MAAS;QACRA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAAEA,IAAI,CAAC,CAAC,CAAC,GAAGpM,CAAC;MACtC;EACD;EACA;;EAEAqM,EAAE,GAAG,CAAC,CAAC,GAAGxD,CAAC,IAAI5Y,CAAC;EAEhB,OAAO,CACN,CAAC4Y,CAAC,GAAGuD,IAAI,CAAC,CAAC,CAAC,GAAGC,EAAE,IAAI,GAAG,EACxB,CAACxD,CAAC,GAAGuD,IAAI,CAAC,CAAC,CAAC,GAAGC,EAAE,IAAI,GAAG,EACxB,CAACxD,CAAC,GAAGuD,IAAI,CAAC,CAAC,CAAC,GAAGC,EAAE,IAAI,GAAG,CACxB;AACF,CAAC;AAEDpL,OAAO,CAACwH,GAAG,CAACT,GAAG,GAAG,UAAUS,GAAG,EAAE;EAChC,IAAMI,CAAC,GAAGJ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMxY,CAAC,GAAGwY,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EAEtB,IAAMZ,CAAC,GAAGgB,CAAC,GAAG5Y,CAAC,IAAI,CAAC,GAAG4Y,CAAC,CAAC;EACzB,IAAI9D,CAAC,GAAG,CAAC;EAET,IAAI8C,CAAC,GAAG,CAAC,EAAE;IACV9C,CAAC,GAAG8D,CAAC,GAAGhB,CAAC;EACV;EAEA,OAAO,CAACY,GAAG,CAAC,CAAC,CAAC,EAAE1D,CAAC,GAAG,GAAG,EAAE8C,CAAC,GAAG,GAAG,CAAC;AAClC,CAAC;AAED5G,OAAO,CAACwH,GAAG,CAAC7J,GAAG,GAAG,UAAU6J,GAAG,EAAE;EAChC,IAAMI,CAAC,GAAGJ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMxY,CAAC,GAAGwY,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EAEtB,IAAM3I,CAAC,GAAG7P,CAAC,IAAI,CAAC,GAAG4Y,CAAC,CAAC,GAAG,GAAG,GAAGA,CAAC;EAC/B,IAAIhJ,CAAC,GAAG,CAAC;EAET,IAAIC,CAAC,GAAG,CAAC,IAAIA,CAAC,GAAG,GAAG,EAAE;IACrBD,CAAC,GAAGgJ,CAAC,IAAI,CAAC,GAAG/I,CAAC,CAAC;EAChB,CAAC,MAAM,IAAIA,CAAC,IAAI,GAAG,IAAIA,CAAC,GAAG,CAAC,EAAE;IAC7BD,CAAC,GAAGgJ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG/I,CAAC,CAAC,CAAC;EACtB;EAEA,OAAO,CAAC2I,GAAG,CAAC,CAAC,CAAC,EAAE5I,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;AAClC,CAAC;AAEDmB,OAAO,CAACwH,GAAG,CAAC5J,GAAG,GAAG,UAAU4J,GAAG,EAAE;EAChC,IAAMI,CAAC,GAAGJ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMxY,CAAC,GAAGwY,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMZ,CAAC,GAAGgB,CAAC,GAAG5Y,CAAC,IAAI,CAAC,GAAG4Y,CAAC,CAAC;EACzB,OAAO,CAACJ,GAAG,CAAC,CAAC,CAAC,EAAE,CAACZ,CAAC,GAAGgB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGhB,CAAC,IAAI,GAAG,CAAC;AAC9C,CAAC;AAED5G,OAAO,CAACpC,GAAG,CAAC4J,GAAG,GAAG,UAAU5J,GAAG,EAAE;EAChC,IAAMmB,CAAC,GAAGnB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAM3O,CAAC,GAAG2O,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;EACtB,IAAMgJ,CAAC,GAAG,CAAC,GAAG3X,CAAC;EACf,IAAM2Y,CAAC,GAAGhB,CAAC,GAAG7H,CAAC;EACf,IAAI/P,CAAC,GAAG,CAAC;EAET,IAAI4Y,CAAC,GAAG,CAAC,EAAE;IACV5Y,CAAC,GAAG,CAAC4X,CAAC,GAAGgB,CAAC,KAAK,CAAC,GAAGA,CAAC,CAAC;EACtB;EAEA,OAAO,CAAChK,GAAG,CAAC,CAAC,CAAC,EAAEgK,CAAC,GAAG,GAAG,EAAE5Y,CAAC,GAAG,GAAG,CAAC;AAClC,CAAC;AAEDgR,OAAO,CAACyH,KAAK,CAAC5V,GAAG,GAAG,UAAU4V,KAAK,EAAE;EACpC,OAAO,CAAEA,KAAK,CAAC,CAAC,CAAC,GAAG,KAAM,GAAI,GAAG,EAAGA,KAAK,CAAC,CAAC,CAAC,GAAG,KAAM,GAAI,GAAG,EAAGA,KAAK,CAAC,CAAC,CAAC,GAAG,KAAM,GAAI,GAAG,CAAC;AACzF,CAAC;AAEDzH,OAAO,CAACnO,GAAG,CAAC4V,KAAK,GAAG,UAAU5V,GAAG,EAAE;EAClC,OAAO,CAAEA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAI,KAAM,EAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAI,KAAM,EAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAI,KAAM,CAAC;AACnF,CAAC;AAEDmO,OAAO,CAAClJ,IAAI,CAACjF,GAAG,GAAG,UAAU3D,IAAI,EAAE;EAClC,OAAO,CAACA,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAEA,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAEA,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AACvE,CAAC;AAED8R,OAAO,CAAClJ,IAAI,CAAC6G,GAAG,GAAG,UAAUzP,IAAI,EAAE;EAClC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED8R,OAAO,CAAClJ,IAAI,CAACiQ,GAAG,GAAG/G,OAAO,CAAClJ,IAAI,CAAC6G,GAAG;AAEnCqC,OAAO,CAAClJ,IAAI,CAAC8G,GAAG,GAAG,UAAU9G,IAAI,EAAE;EAClC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAEDkJ,OAAO,CAAClJ,IAAI,CAACkQ,IAAI,GAAG,UAAUlQ,IAAI,EAAE;EACnC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAEDkJ,OAAO,CAAClJ,IAAI,CAACoQ,GAAG,GAAG,UAAUpQ,IAAI,EAAE;EAClC,OAAO,CAACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC;AAEDkJ,OAAO,CAAClJ,IAAI,CAACgH,GAAG,GAAG,UAAUhH,IAAI,EAAE;EAClC;EACA,IAAMjH,KAAK,GAAGR,IAAI,CAACoB,KAAK,CAACqG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI;EACpD,IAAMmU,OAAO,GAAG,CAACpb,KAAK,IAAI,EAAE,KAAKA,KAAK,IAAI,CAAC,CAAC,GAAGA,KAAK;EACpD;;EAEA,IAAMyN,MAAM,GAAG2N,OAAO,CAACxL,QAAQ,CAAC,EAAE,CAAC,CAACC,WAAW,CAAC,CAAC;EACjD,OAAO,QAAQ,CAAClC,KAAK,CAACF,MAAM,CAACnP,MAAM,CAAC,GAAGmP,MAAM;AAC9C,CAAC;AAED0C,OAAO,CAACnO,GAAG,CAACiF,IAAI,GAAG,UAAUjF,GAAG,EAAE;EACjC,IAAMhC,KAAK,GAAG,CAACgC,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;EAC5C,OAAO,CAAChC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3B,CAAC,C;;;;;;;;;;;;;;;;ACn9B0C;AACZ;AAE/B,IAAMmQ,OAAO,GAAG,CAAC,CAAC;AAElB,IAAMqL,MAAM,GAAGvO,MAAM,CAACiD,IAAI,CAACuL,uDAAW,CAAC;AAEvC,SAASC,OAAOA,CAACC,EAAE,EAAE;EACpB,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAA,EAAsB;IAAA,SAAArM,IAAA,GAAAH,SAAA,CAAA9Q,MAAA,EAAND,IAAI,OAAAmR,KAAA,CAAAD,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;MAAJpR,IAAI,CAAAoR,IAAA,IAAAL,SAAA,CAAAK,IAAA;IAAA;IAClC,IAAMoM,IAAI,GAAGxd,IAAI,CAAC,CAAC,CAAC;IACpB,IAAIwd,IAAI,KAAKxM,SAAS,IAAIwM,IAAI,KAAK,IAAI,EAAE;MACxC,OAAOA,IAAI;IACZ;IAEA,IAAIA,IAAI,CAACvd,MAAM,GAAG,CAAC,EAAE;MACpBD,IAAI,GAAGwd,IAAI;IACZ;IAEA,OAAOF,EAAE,CAACtd,IAAI,CAAC;EAChB,CAAC;;EAED;EACA,IAAI,YAAY,IAAIsd,EAAE,EAAE;IACvBC,SAAS,CAACE,UAAU,GAAGH,EAAE,CAACG,UAAU;EACrC;EAEA,OAAOF,SAAS;AACjB;AAEA,SAASG,WAAWA,CAACJ,EAAE,EAAE;EACxB,IAAMC,SAAS,GAAG,SAAZA,SAASA,CAAA,EAAsB;IAAA,SAAAxF,KAAA,GAAAhH,SAAA,CAAA9Q,MAAA,EAAND,IAAI,OAAAmR,KAAA,CAAA4G,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJhY,IAAI,CAAAgY,KAAA,IAAAjH,SAAA,CAAAiH,KAAA;IAAA;IAClC,IAAMwF,IAAI,GAAGxd,IAAI,CAAC,CAAC,CAAC;IAEpB,IAAIwd,IAAI,KAAKxM,SAAS,IAAIwM,IAAI,KAAK,IAAI,EAAE;MACxC,OAAOA,IAAI;IACZ;IAEA,IAAIA,IAAI,CAACvd,MAAM,GAAG,CAAC,EAAE;MACpBD,IAAI,GAAGwd,IAAI;IACZ;IAEA,IAAM3Y,MAAM,GAAGyY,EAAE,CAACtd,IAAI,CAAC;;IAEvB;IACA;IACA;IACA,IAAIoX,OAAA,CAAOvS,MAAM,MAAK,QAAQ,EAAE;MAC/B,KAAS,IAAC5E,MAAM,GAAI4E,MAAM,CAAhB5E,MAAM,EAAYgQ,CAAC,GAAG,CAAN,EAASA,CAAC,GAAGhQ,MAAM,EAAEgQ,CAAC,EAAE,EAAE;QACnDpL,MAAM,CAACoL,CAAC,CAAC,GAAG9O,IAAI,CAACoB,KAAK,CAACsC,MAAM,CAACoL,CAAC,CAAC,CAAC;MAClC;IACD;IAEA,OAAOpL,MAAM;EACd,CAAC;;EAED;EACA,IAAI,YAAY,IAAIyY,EAAE,EAAE;IACvBC,SAAS,CAACE,UAAU,GAAGH,EAAE,CAACG,UAAU;EACrC;EAEA,OAAOF,SAAS;AACjB;AAEA,SAAA5L,EAAA,MAAAgM,OAAA,GAAwBR,MAAM,EAAAxL,EAAA,GAAAgM,OAAA,CAAA1d,MAAA,EAAA0R,EAAA,IAAE;EAA3B,IAAMiM,SAAS,GAAAD,OAAA,CAAAhM,EAAA;EACnBG,OAAO,CAAC8L,SAAS,CAAC,GAAG,CAAC,CAAC;EAEvBhP,MAAM,CAACkL,cAAc,CAAChI,OAAO,CAAC8L,SAAS,CAAC,EAAE,UAAU,EAAE;IAACjc,KAAK,EAAEyb,uDAAW,CAACQ,SAAS,CAAC,CAACtL;EAAQ,CAAC,CAAC;EAC/F1D,MAAM,CAACkL,cAAc,CAAChI,OAAO,CAAC8L,SAAS,CAAC,EAAE,QAAQ,EAAE;IAACjc,KAAK,EAAEyb,uDAAW,CAACQ,SAAS,CAAC,CAAC5L;EAAM,CAAC,CAAC;EAE3F,IAAM6L,MAAM,GAAGC,yDAAK,CAACF,SAAS,CAAC;EAC/B,IAAMG,WAAW,GAAGnP,MAAM,CAACiD,IAAI,CAACgM,MAAM,CAAC;EAEvC,SAAAlG,GAAA,MAAAqG,YAAA,GAAsBD,WAAW,EAAApG,GAAA,GAAAqG,YAAA,CAAA/d,MAAA,EAAA0X,GAAA,IAAE;IAA9B,IAAMsG,OAAO,GAAAD,YAAA,CAAArG,GAAA;IACjB,IAAM2F,EAAE,GAAGO,MAAM,CAACI,OAAO,CAAC;IAE1BnM,OAAO,CAAC8L,SAAS,CAAC,CAACK,OAAO,CAAC,GAAGP,WAAW,CAACJ,EAAE,CAAC;IAC7CxL,OAAO,CAAC8L,SAAS,CAAC,CAACK,OAAO,CAAC,CAACnG,GAAG,GAAGuF,OAAO,CAACC,EAAE,CAAC;EAC9C;AACD;AAEexL,sEAAO,E;;;;;;;;;;;;AChFtB;AAAA;AAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASoM,UAAUA,CAAA,EAAG;EACrB,IAAMC,KAAK,GAAG,CAAC,CAAC;EAChB;EACA,IAAMhB,MAAM,GAAGvO,MAAM,CAACiD,IAAI,CAACuL,uDAAW,CAAC;EAEvC,KAAS,IAACnd,MAAM,GAAIkd,MAAM,CAAhBld,MAAM,EAAYgQ,CAAC,GAAG,CAAN,EAASA,CAAC,GAAGhQ,MAAM,EAAEgQ,CAAC,EAAE,EAAE;IACnDkO,KAAK,CAAChB,MAAM,CAAClN,CAAC,CAAC,CAAC,GAAG;MAClB;MACA;MACAiL,QAAQ,EAAE,CAAC,CAAC;MACZkD,MAAM,EAAE;IACT,CAAC;EACF;EAEA,OAAOD,KAAK;AACb;;AAEA;AACA,SAASE,SAASA,CAACT,SAAS,EAAE;EAC7B,IAAMO,KAAK,GAAGD,UAAU,CAAC,CAAC;EAC1B,IAAMI,KAAK,GAAG,CAACV,SAAS,CAAC,CAAC,CAAC;;EAE3BO,KAAK,CAACP,SAAS,CAAC,CAAC1C,QAAQ,GAAG,CAAC;EAE7B,OAAOoD,KAAK,CAACre,MAAM,GAAG,CAAC,EAAE;IACxB,IAAMse,OAAO,GAAGD,KAAK,CAACE,GAAG,CAAC,CAAC;IAC3B,IAAMC,SAAS,GAAG7P,MAAM,CAACiD,IAAI,CAACuL,uDAAW,CAACmB,OAAO,CAAC,CAAC;IAEnD,KAAS,IAACte,MAAM,GAAIwe,SAAS,CAAnBxe,MAAM,EAAegQ,CAAC,GAAG,CAAN,EAASA,CAAC,GAAGhQ,MAAM,EAAEgQ,CAAC,EAAE,EAAE;MACtD,IAAMyO,QAAQ,GAAGD,SAAS,CAACxO,CAAC,CAAC;MAC7B,IAAM0O,IAAI,GAAGR,KAAK,CAACO,QAAQ,CAAC;MAE5B,IAAIC,IAAI,CAACzD,QAAQ,KAAK,CAAC,CAAC,EAAE;QACzByD,IAAI,CAACzD,QAAQ,GAAGiD,KAAK,CAACI,OAAO,CAAC,CAACrD,QAAQ,GAAG,CAAC;QAC3CyD,IAAI,CAACP,MAAM,GAAGG,OAAO;QACrBD,KAAK,CAACM,OAAO,CAACF,QAAQ,CAAC;MACxB;IACD;EACD;EAEA,OAAOP,KAAK;AACb;AAEA,SAASU,IAAIA,CAACjd,IAAI,EAAEC,EAAE,EAAE;EACvB,OAAO,UAAU7B,IAAI,EAAE;IACtB,OAAO6B,EAAE,CAACD,IAAI,CAAC5B,IAAI,CAAC,CAAC;EACtB,CAAC;AACF;AAEA,SAAS8e,cAAcA,CAACb,OAAO,EAAEE,KAAK,EAAE;EACvC,IAAMY,IAAI,GAAG,CAACZ,KAAK,CAACF,OAAO,CAAC,CAACG,MAAM,EAAEH,OAAO,CAAC;EAC7C,IAAIX,EAAE,GAAGF,uDAAW,CAACe,KAAK,CAACF,OAAO,CAAC,CAACG,MAAM,CAAC,CAACH,OAAO,CAAC;EAEpD,IAAIe,GAAG,GAAGb,KAAK,CAACF,OAAO,CAAC,CAACG,MAAM;EAC/B,OAAOD,KAAK,CAACa,GAAG,CAAC,CAACZ,MAAM,EAAE;IACzBW,IAAI,CAACH,OAAO,CAACT,KAAK,CAACa,GAAG,CAAC,CAACZ,MAAM,CAAC;IAC/Bd,EAAE,GAAGuB,IAAI,CAACzB,uDAAW,CAACe,KAAK,CAACa,GAAG,CAAC,CAACZ,MAAM,CAAC,CAACY,GAAG,CAAC,EAAE1B,EAAE,CAAC;IAClD0B,GAAG,GAAGb,KAAK,CAACa,GAAG,CAAC,CAACZ,MAAM;EACxB;EAEAd,EAAE,CAACG,UAAU,GAAGsB,IAAI;EACpB,OAAOzB,EAAE;AACV;AAEA,SAASQ,KAAKA,CAACF,SAAS,EAAE;EACzB,IAAMO,KAAK,GAAGE,SAAS,CAACT,SAAS,CAAC;EAClC,IAAMH,UAAU,GAAG,CAAC,CAAC;EAErB,IAAMN,MAAM,GAAGvO,MAAM,CAACiD,IAAI,CAACsM,KAAK,CAAC;EACjC,KAAS,IAACle,MAAM,GAAIkd,MAAM,CAAhBld,MAAM,EAAYgQ,CAAC,GAAG,CAAN,EAASA,CAAC,GAAGhQ,MAAM,EAAEgQ,CAAC,EAAE,EAAE;IACnD,IAAMgO,OAAO,GAAGd,MAAM,CAAClN,CAAC,CAAC;IACzB,IAAM0O,IAAI,GAAGR,KAAK,CAACF,OAAO,CAAC;IAE3B,IAAIU,IAAI,CAACP,MAAM,KAAK,IAAI,EAAE;MACzB;MACA;IACD;IAEAX,UAAU,CAACQ,OAAO,CAAC,GAAGa,cAAc,CAACb,OAAO,EAAEE,KAAK,CAAC;EACrD;EAEA,OAAOV,UAAU;AAClB;AAEeK,oEAAK,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASmB,gBAAgBA,CAAEC,CAAC,EAAEC,CAAC,EAAE;EAC/C,IAAI1G,CAAC,GAAGyG,CAAC,CAACjf,MAAM;EACjB;EACC,IAAImf,EAAE;EACP;EACC,IAAIC,EAAE;EACN,IAAIC,IAAI,GAAG,KAAK;EAChB,IAAIC,IAAI,GAAG,KAAK;EAEhB,IAAI,CAACpO,KAAK,CAACmH,OAAO,CAAC4G,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IAC3B;IACEE,EAAE,GAAG,wBAA0BF,CAAC,CAAE;IAClCzG,CAAC,GAAG2G,EAAE,CAACnf,MAAM;IACbqf,IAAI,GAAG,IAAI;EACb,OACM;IACJF,EAAE,4BAA8BF,CAAE;EACpC;EAEC,IAAI,CAAC/N,KAAK,CAACmH,OAAO,CAAC6G,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IAC3B;IACEE,EAAE,GAAGF,CAAC,CAAClf,MAAM,GAAG,CAAC,GAAGkf,CAAC,CAACtL,GAAG,CAAC,WAAC;MAAA,OAAI,CAACS,CAAC,CAAC;IAAA,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3CiL,IAAI,GAAG,IAAI;EACb,OACM;IACJF,EAAE,4BAA8BF,CAAE;EACpC;EAEC,IAAI7H,CAAC,GAAG+H,EAAE,CAAC,CAAC,CAAC,CAACpf,MAAM;EACpB,IAAIuf,OAAO,GAAGH,EAAE,CAAC,CAAC,CAAC,CAACxL,GAAG,CAAC,UAAC4L,CAAC,EAAExP,CAAC;IAAA,OAAKoP,EAAE,CAACxL,GAAG,CAAC,WAAC;MAAA,OAAIS,CAAC,CAACrE,CAAC,CAAC;IAAA,EAAC;EAAA,EAAC,CAAC;EACtD;EACC,IAAIyP,OAAO,GAAGN,EAAE,CAACvL,GAAG,CAAC,aAAG;IAAA,OACvB2L,OAAO,CAAC3L,GAAG,CAAC,aAAG,EAAI;MAClB,IAAI8L,GAAG,GAAG,CAAC;MAEX,IAAI,CAACxO,KAAK,CAACmH,OAAO,CAACsH,GAAG,CAAC,EAAE;QAAA,2CACVC,GAAG;UAAA1K;QAAA;UAAjB,oDAAmB;YAAA,IAAVuE,EAAC;YACTiG,GAAG,IAAIC,GAAG,GAAGlG,EAAC;UACnB;QAAA;UAAA1E;QAAA;UAAAA;QAAA;QAEI,OAAO2K,GAAG;MACd;MAEG,KAAK,IAAI1P,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2P,GAAG,CAAC3f,MAAM,EAAEgQ,CAAC,EAAE,EAAE;QACpC0P,GAAG,IAAIC,GAAG,CAAC3P,CAAC,CAAC,IAAI4P,GAAG,CAAC5P,CAAC,CAAC,IAAI,CAAC,CAAC;MACjC;MAEG,OAAO0P,GAAG;IACb,CAAG,CAAC;EAAA,EAAC;EAEJ,IAAIlH,CAAC,KAAK,CAAC,IAAI6G,IAAI,EAAE;IACpBI,OAAO,GAAGA,OAAO,CAAC,CAAC,CAAC,CAAC;EACvB;;EACC,IAAIpI,CAAC,KAAK,CAAC,IAAIiI,IAAI,EAAE;IACpB,IAAI9G,CAAC,KAAK,CAAC,IAAI6G,IAAI,EAAE;MACpB,OAAOI,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,OACO;MACJ,OAAOA,OAAO,CAAC7L,GAAG,CAAC,WAAC;QAAA,OAAIS,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC,CAAC;IACjC;EACA;;EAEC,OAAOoL,OAAO;AACf;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,IAAIA,CAAE9d,CAAC,EAAEjB,CAAC,EAAE;EACpB,OAAOiB,CAAC,CAAC,CAAC,CAAC,GAAGjB,CAAC,CAAC,CAAC,CAAC,GAAGiB,CAAC,CAAC,CAAC,CAAC,GAAGjB,CAAC,CAAC,CAAC,CAAC,GAAGiB,CAAC,CAAC,CAAC,CAAC,GAAGjB,CAAC,CAAC,CAAC,CAAC;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASgf,gBAAgBA,CAAEC,KAAK,EAAEC,MAAM,EAAmB;EAAA,IAAjBC,GAAG,uEAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC/D,IAAM5L,CAAC,GAAGwL,IAAI,CAACE,KAAK,EAAEC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChC,IAAM1L,CAAC,GAAGuL,IAAI,CAACE,KAAK,EAAEC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChC,IAAMzL,CAAC,GAAGsL,IAAI,CAACE,KAAK,EAAEC,MAAM,CAAC,CAAC,CAAC,CAAC;EAChCC,GAAG,CAAC,CAAC,CAAC,GAAG5L,CAAC;EACV4L,GAAG,CAAC,CAAC,CAAC,GAAG3L,CAAC;EACV2L,GAAG,CAAC,CAAC,CAAC,GAAG1L,CAAC;EACV,OAAO0L,GAAG;AACX;;ACvJA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAAEC,GAAG,EAAE;EAC9B,OAAOC,IAAI,CAACD,GAAG,CAAC,KAAK,QAAQ;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAAEC,CAAC,EAAE;EACxB,IAAIF,GAAG,GAAGxR,MAAM,CAACjP,SAAS,CAAC4R,QAAQ,CAAC9R,IAAI,CAAC6gB,CAAC,CAAC;EAE3C,OAAO,CAACF,GAAG,CAACpQ,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAET,WAAW,EAAE;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASgR,eAAeA,CAAEnL,CAAC,QAA4B;EAAA,0BAAxBhT,SAAS;IAATA,SAAS,+BAAG,EAAE;IAAEoe,IAAI,QAAJA,IAAI;EACzD,IAAIC,MAAM,CAACrL,CAAC,CAAC,EAAE;IACd,OAAO,MAAM;EACf;EAECA,CAAC,GAAG,CAACsL,WAAW,CAACtL,CAAC,EAAEhT,SAAS,CAAC;EAE9B,OAAOgT,CAAC,IAAIoL,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAI,EAAE,CAAC;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,MAAMA,CAAErL,CAAC,EAAE;EAC1B,OAAOA,CAAC,KAAK,IAAI;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASuL,QAAQA,CAAEvL,CAAC,EAAE;EAC5B,OAAOqL,MAAM,CAACrL,CAAC,CAAC,GAAG,CAAC,GAAGA,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASsL,WAAWA,CAAEtL,CAAC,EAAEhT,SAAS,EAAE;EAC1C,IAAIgT,CAAC,KAAK,CAAC,EAAE;IACZ,OAAO,CAAC;EACV;EACC,IAAI2H,OAAO,GAAG,CAAC,CAAC3H,CAAC;EACjB,IAAIwL,MAAM,GAAG,CAAC;EACd,IAAI7D,OAAO,IAAI3a,SAAS,EAAE;IACzBwe,MAAM,GAAG,CAAC,CAACzf,IAAI,CAAC0f,KAAK,CAAC1f,IAAI,CAACM,GAAG,CAACsb,OAAO,CAAC,CAAC,GAAG,CAAC;EAC9C;EACC,IAAM1a,UAAU,YAAG,IAAI,EAAKD,SAAS,GAAGwe,MAAM,CAAC;EAC/C,OAAOzf,IAAI,CAACua,KAAK,CAACtG,CAAC,GAAG/S,UAAU,GAAG,GAAG,CAAC,GAAGA,UAAU;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASye,WAAWA,CAAEC,KAAK,EAAEC,GAAG,EAAE1J,CAAC,EAAE;EAC3C,IAAI1G,KAAK,CAACmQ,KAAK,CAAC,EAAE;IACjB,OAAOC,GAAG;EACZ;EAEC,IAAIpQ,KAAK,CAACoQ,GAAG,CAAC,EAAE;IACf,OAAOD,KAAK;EACd;EAEC,OAAOA,KAAK,GAAG,CAACC,GAAG,GAAGD,KAAK,IAAIzJ,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS2J,cAAcA,CAAEF,KAAK,EAAEC,GAAG,EAAErf,KAAK,EAAE;EAClD,OAAO,CAACA,KAAK,GAAGof,KAAK,KAAKC,GAAG,GAAGD,KAAK,CAAC;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASG,QAAQA,CAAEtf,IAAI,EAAEC,EAAE,EAAEF,KAAK,EAAE;EAC1C,IACC,CAACC,IAAI,IACL,CAACC,EAAE,IACHD,IAAI,KAAKC,EAAE,IACVD,IAAI,CAAC,CAAC,CAAC,KAAKC,EAAE,CAAC,CAAC,CAAC,IAAID,IAAI,CAAC,CAAC,CAAC,KAAKC,EAAE,CAAC,CAAC,CAAE,IACxC+O,KAAK,CAACjP,KAAK,CAAC,IACZA,KAAK,KAAK,MACT;IACH;IACE,OAAOA,KAAK;EACd;EAEC,OAAOmf,WAAW,CAACjf,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,EAAEof,cAAc,CAACrf,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAED,KAAK,CAAC,CAAC;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4O,KAAKA,CAAEnP,GAAG,EAAE+f,GAAG,EAAE9f,GAAG,EAAE;EACrC,OAAOF,IAAI,CAACE,GAAG,CAACF,IAAI,CAACC,GAAG,CAACC,GAAG,EAAE8f,GAAG,CAAC,EAAE/f,GAAG,CAAC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASggB,QAAQA,CAAEvf,EAAE,EAAED,IAAI,EAAE;EACnC,OAAOT,IAAI,CAACkgB,IAAI,CAACxf,EAAE,CAAC,KAAKV,IAAI,CAACkgB,IAAI,CAACzf,IAAI,CAAC,GAAGC,EAAE,GAAG,CAACA,EAAE;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASyf,IAAIA,CAAEC,IAAI,EAAEC,GAAG,EAAE;EAChC,OAAOJ,QAAQ,UAACjgB,IAAI,CAACM,GAAG,CAAC8f,IAAI,CAAC,EAAIC,GAAG,GAAED,IAAI,CAAC;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,IAAIA,CAAErM,CAAC,EAAEsM,CAAC,EAAE;EAC3B,OAAOA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAGtM,CAAC,GAAGsM,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAAEC,GAAG,EAAEjgB,KAAK,EAA2B;EAAA,IAAzBkgB,EAAE,uEAAG,CAAC;EAAA,IAAEpG,EAAE,uEAAGmG,GAAG,CAAC3hB,MAAM;EAC9D,OAAO4hB,EAAE,GAAGpG,EAAE,EAAE;IACf,IAAMqG,GAAG,GAAID,EAAE,GAAGpG,EAAE,IAAK,CAAC;IAC1B,IAAImG,GAAG,CAACE,GAAG,CAAC,GAAGngB,KAAK,EAAE;MACrBkgB,EAAE,GAAGC,GAAG,GAAG,CAAC;IACf,OACO;MACJrG,EAAE,GAAGqG,GAAG;IACX;EACA;EACC,OAAOD,EAAE;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,UAAUA,CAAEC,GAAG,EAAEC,WAAW,EAAE;EAC7C,IAAID,GAAG,YAAYC,WAAW,EAAE;IAC/B,OAAO,IAAI;EACb;EAEC,IAAMC,UAAU,GAAGD,WAAW,CAAC3hB,IAAI;EAEnC,OAAO0hB,GAAG,EAAE;IAAA;IACX,IAAMG,KAAK,GAAGvT,MAAM,CAACwT,cAAc,CAACJ,GAAG,CAAC;IACxC,IAAMK,eAAe,GAAGF,KAAK,aAALA,KAAK,6CAALA,KAAK,CAAEF,WAAW,uDAAlBK,mBAAoBhiB,IAAI;IAChD,IAAI+hB,eAAe,KAAKH,UAAU,EAAE;MACnC,OAAO,IAAI;IACd;IACE,IAAI,CAACG,eAAe,IAAIA,eAAe,KAAK,QAAQ,EAAE;MACrD,OAAO,KAAK;IACf;IACEL,GAAG,GAAGG,KAAK;EACb;EAEC,OAAO,KAAK;AACb;;;;;;;;;;;;;;;;;;;;;;ACnNA;AACA;AACA;AAFA,IAGaI,KAAK;EAAA;IAAAC;EAAA;EAAAC;IAAA9T;IAAAhN,OACjB,aAAKrB,IAAI,EAAEM,QAAQ,EAAE8hB,KAAK,EAAE;MAC3B,IAAI,OAAO3R,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;QACvC;QACG,KAAK,IAAIzQ,IAAI,IAAIyQ,SAAS,CAAC,CAAC,CAAC,EAAE;UAC9B,IAAI,CAAC4R,GAAG,CAACriB,IAAI,EAAEyQ,SAAS,CAAC,CAAC,CAAC,CAACzQ,IAAI,CAAC,EAAEyQ,SAAS,CAAC,CAAC,CAAC,CAAC;QACpD;QAEG;MACH;MAEE,CAACI,KAAK,CAACmH,OAAO,CAAChY,IAAI,CAAC,GAAGA,IAAI,GAAG,CAACA,IAAI,CAAC,EAAEsiB,OAAO,CAAC,UAAUtiB,IAAI,EAAE;QAC7D,IAAI,CAACA,IAAI,CAAC,GAAG,IAAI,CAACA,IAAI,CAAC,IAAI,EAAE;QAE7B,IAAIM,QAAQ,EAAE;UACb,IAAI,CAACN,IAAI,CAAC,CAACoiB,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC9hB,QAAQ,CAAC;QACpD;MACA,CAAG,EAAE,IAAI,CAAC;IACV;EAAA;IAAA+N;IAAAhN,OAEC,aAAKrB,IAAI,EAAEuiB,GAAG,EAAE;MACf,IAAI,CAACviB,IAAI,CAAC,GAAG,IAAI,CAACA,IAAI,CAAC,IAAI,EAAE;MAC7B,IAAI,CAACA,IAAI,CAAC,CAACsiB,OAAO,CAAC,UAAUhiB,QAAQ,EAAE;QACtCA,QAAQ,CAACnB,IAAI,CAACojB,GAAG,IAAIA,GAAG,CAACC,OAAO,GAAGD,GAAG,CAACC,OAAO,GAAGD,GAAG,EAAEA,GAAG,CAAC;MAC7D,CAAG,CAAC;IACJ;EAAA;EAAA;AAAA;AAGA;AACA;AACA;AACA,IAAME,KAAK,GAAG,IAAIR,KAAK,EAAE;;AClCzB;AACA,eAAe;EACdS,aAAa,EAAE,KAAK;EACpB5gB,SAAS,EAAE,CAAC;EACZ6gB,MAAM,EAAE,IAAI;EAAA;EACZC,OAAO,EAAE,WAAU,aAAVC,UAAU,8CAAVA,UAAU,CAAEC,OAAO,iFAAnBC,oBAAqBR,GAAG,oFAAxBS,sBAA0BC,QAAQ,2DAAlCC,uBAAoCjU,WAAW,EAAE,MAAK,MAAM;EACrEkU,IAAI,EAAE,SAASA,IAAIA,CAAEC,GAAG,EAAE;IACzB,IAAI,IAAI,CAACR,OAAO,EAAE;MAAA;MACjBC,UAAU,aAAVA,UAAU,8CAAVA,UAAU,CAAEQ,OAAO,iFAAnBC,oBAAqBH,IAAI,0DAAzBI,gDAA4BH,GAAG,CAAC;IACnC;EACA;AACA,CAAC;AAAA,ICToBI,IAAI;EACzB;;EAIA;;EAGA;AACA;AACA;AACA;EACC,cAAazD,IAAI,EAAE0D,SAAS,EAAE;IAAAvB;IAAAwB;IAAAA;IAAAA;IAAAA;IAC7B,IAAI5M,QAAOiJ,IAAI,MAAK,QAAQ,EAAE;MAC7B,IAAI,CAAC0D,SAAS,GAAG1D,IAAI;IACxB;IAEE,IAAI0D,SAAS,EAAE;MAAA;MACd,IAAI,CAACA,SAAS,GAAGA,SAAS;MAC1B,IAAI,CAACE,UAAU,uBAAGF,SAAS,CAACG,KAAK,+DAAIH,SAAS,CAACI,QAAQ;IAC1D;IAEE,IAAI,OAAO9D,IAAI,KAAK,QAAQ,EAAE;MAC7B,IAAI+D,MAAM,GAAG/D,KACXgE,IAAI,GACJrU,KAAK,2BAAC,mDAAgE;QAAAqQ;QAAAjf;QAAAC;MAAA,GAAC;MAEzE,IAAI,CAAC+iB,MAAM,EAAE;QACZ,MAAM,IAAIE,SAAS,wBAAiBjE,IAAI,2BAAwB,CAAC;MACrE;MAEG,IAAI,CAACA,IAAI,GAAG+D,MAAM,CAACG,MAAM,CAAClE,IAAI;MAC9B,qBAAmB+D,MAAM,CAACG,MAAM;QAA1BnjB,GAAG,kBAAHA,GAAG;QAAEC,IAAG,kBAAHA,GAAG;MAEd,IAAID,GAAG,IAAIC,IAAG,EAAE;QACf,IAAI,CAAC6iB,KAAK,GAAG,CAAC,CAAC9iB,GAAG,EAAE,CAACC,IAAG,CAAC;MAC7B;IACA;EACA;;EAEA;EAAAohB;IAAA9T;IAAAQ,KACC,eAAqB;MACpB,IAAI,IAAI,CAAC+U,KAAK,EAAE;QACf,OAAO,IAAI,CAACA,KAAK;MACpB;MACE,IAAI,IAAI,CAAC7D,IAAI,KAAK,cAAc,EAAE;QACjC,OAAO,IAAI,CAACmE,eAAe,EAAE;MAChC,OACO,IAAI,IAAI,CAACnE,IAAI,KAAK,SAAS,EAAE;QACjC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB;MACE,OAAO,IAAI;IACb;EAAA;IAAA1R;IAAAQ,KAEC,eAAY;MACX,IAAI,IAAI,CAACkR,IAAI,KAAK,cAAc,EAAE;QACjC,OAAO,GAAG;MACb,OACO,IAAI,IAAI,CAACA,IAAI,KAAK,SAAS,EAAE;QACjC,OAAO,KAAK;MACf;MAEE,OAAO,EAAE;IACX;;IAEA;AACA;AACA;AACA;EAHA;IAAA1R;IAAAhN,OAIC,iBAASwW,MAAM,EAAE;MAChB,IAAI,IAAI,CAACkI,IAAI,KAAK,SAAS,EAAE;QAC5B,OAAOlI,MAAM;MAChB;MAEE,IAAIsM,SAAS,GAAG,IAAI,CAACC,aAAa;MAClC,IAAIC,OAAO,GAAG,IAAI,CAACV,UAAU;MAE7B,IAAI,IAAI,CAAC5D,IAAI,KAAK,cAAc,EAAE;QAAA;QACjC,mBAAO,+CAAPsE,OAAO,GAAK,IAAI,CAACH,eAAe,EAAE;MACrC;MAEE,OAAOtD,QAAQ,CAACuD,SAAS,EAAEE,OAAO,EAAExM,MAAM,CAAC;IAC7C;;IAEA;AACA;AACA;AACA;AACA;EAJA;IAAAxJ;IAAAhN,OAKC,mBAAWwW,MAAM,EAAE/V,SAAS,EAAE;MAC7B,IAAIuiB,OAAO,GAAG,IAAI,CAACtE,IAAI,KAAK,cAAc,GAAG,IAAI,CAACmE,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAACE,aAAa;MAE3F,IAAIlE,IAAI,GAAG,IAAI,CAACA,IAAI;MAEpBrI,MAAM,GAAG+I,QAAQ,CAAC,IAAI,CAAC+C,UAAU,EAAEU,OAAO,EAAExM,MAAM,CAAC;MACnD,OAAOoI,eAAe,CAACpI,MAAM,EAAE;QAAEqI,IAAI,EAAJA,IAAI;QAAEpe,SAAS,EAATA;MAAS,CAAE,CAAC;IACrD;EAAA;IAAAuM;IAAAhN,OAEC,oBAAY;MACX,IAAIge,GAAG,GAAG,IAAI,CAACU,IAAI;MAEnB,IAAI,IAAI,CAAC6D,KAAK,EAAE;QACf,iCAA2B,IAAI,CAACA,KAAK;UAAAU;UAAhCxjB,GAAG,6BAAG,EAAE;UAAAyjB;UAAExjB,KAAG,8BAAG,EAAE;QACvBse,GAAG,eAAQve,GAAG,cAAIC,KAAG,MAAG;MAC3B;MAEE,OAAOse,GAAG;IACZ;;IAEA;AACA;AACA;AACA;AACA;EAJA;IAAAhR;IAAAhN,OAKC,2BAA4B;MAAA,IAAXmjB,KAAK,uEAAG,CAAC;MACzB,IAAIZ,KAAK;MACT,IACE,IAAI,CAACH,SAAS,IAAI,IAAI,CAACA,SAAS,CAACG,KAAK,IACtC,IAAI,CAACD,UAAU,IAAI,IAAI,CAACA,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAC1C;QACDC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;MACjB,OACO;QACJA,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;MAClB;MACE,OAAO,CAACA,KAAK,CAAC,CAAC,CAAC,GAAGY,KAAK,EAAEZ,KAAK,CAAC,CAAC,CAAC,GAAGY,KAAK,CAAC;IAC7C;EAAA;IAAAnW;IAAAhN,OAEC,aAAY0e,IAAI,EAAE0D,SAAS,EAAE;MAC5B,IAAIhC,UAAU,CAAC1B,IAAI,EAAE,IAAI,CAAC,EAAE;QAC3B,OAAOA,IAAI;MACd;MAEE,OAAO,IAAI,IAAI,CAACA,IAAI,EAAE0D,SAAS,CAAC;IAClC;EAAA;EAAA;AAAA;ACrIA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMgB,QAAQ,GAAGC,MAAM,CAAC,UAAU,CAAC;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAJA,IAKqBC,MAAM;EAC3B;;EAIA;;EAEA;;EAEA;;EAGA;AACA;AACA;AACA;EACC,gBAAaC,MAAM,EAAwB;IAAA;IAAA,IAAtBC,KAAK,uEAAGD,MAAM,CAACC,KAAK;IAAA3C;IAAAwB;IAAAA;IAAAA;IAAAA;IAAAA;IAAAA;IACxCkB,MAAM,CAACH,QAAQ,CAAC,GAAG,IAAI;IACvB,IAAI,CAAC1E,IAAI,GAAG,UAAU;IACtB,IAAI,CAAC/f,IAAI,GAAG,OAAO;IAEnBsO,MAAM,CAACwW,MAAM,CAAC,IAAI,EAAEF,MAAM,CAAC;IAE3B,IAAI,CAACC,KAAK,GAAGA,KAAK;IAElB,IAAI,IAAI,CAAC9E,IAAI,KAAK,QAAQ,EAAE;MAC9B;MACG;IACH;IAEE,IAAI,CAACgF,WAAW,GAAGzW,MAAM,CAAC0W,MAAM,CAACH,KAAK,CAACI,MAAM,CAAC;IAE9C,IAAI,CAAC,IAAI,CAACA,MAAM,EAAE;MACpB;MACG,IAAI,CAACA,MAAM,GAAG,IAAI,CAACF,WAAW,CAACxR,GAAG,CAAC,mBAAS,EAAI;QAC/C,IAAI8L,GAAG,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC;QAEtC,IAAIoE,SAAS,CAAC1D,IAAI,KAAK,OAAO,EAAE;UAC/BV,GAAG,CAAC3M,IAAI,CAAC,SAAS,CAAC;QACxB;QAEI,OAAO2M,GAAG;MACd,CAAI,CAAC;IACL;IAEE,IAAI,CAAC4F,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC1R,GAAG,EAC/B,gDAAoD,UAAC2R,KAAK,EAAEvV,CAAC,EAAK;MAC9D,IAAI8T,SAAS,GAAG0B,MAAI,CAACJ,WAAW,CAACpV,CAAC,CAAC;MAEnC,IAAI,OAAOuV,KAAK,KAAK,QAAQ,EAAE;QAC9BA,KAAK,GAAGA,KAAK,CAACnB,IAAI,EAAE,CAACqB,KAAK,CAAC,UAAU,CAAC;MAC3C;MAEI,OAAOF,KAAK,CAAC3R,GAAG,CAAC,cAAI;QAAA,OAAIiQ,IAAI,CAAC3U,GAAG,CAACkR,IAAI,EAAE0D,SAAS,CAAC;MAAA,EAAC;IACvD,CACA,CAAG;EACH;;EAEA;AACA;AACA;AACA;AACA;EAJAtB;IAAA9T;IAAAhN,OAKC,yBAAiB4jB,MAAM,EAAEnjB,SAAS,EAAEojB,KAAK,EAAE;MAAA;MAC1CA,KAAK,GAAGD,MAAM,CAAC1R,GAAG,CAAC,UAAC4L,CAAC,EAAExP,CAAC;QAAA;QAAA,OACvB6T,IAAI,CAAC3U,GAAG,uBAACqW,KAAK,2CAALG,OAAQ1V,CAAC,CAAC,+CAAI2V,MAAI,CAACL,MAAM,CAACtV,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE2V,MAAI,CAACP,WAAW,CAACpV,CAAC,CAAC,CAAC;MAAA,EAAC;MAChE,OAAOsV,MAAM,CAAC1R,GAAG,CAAC,UAAC6F,CAAC,EAAEzJ,CAAC;QAAA,OAAKuV,KAAK,CAACvV,CAAC,CAAC,CAAC4V,SAAS,CAACnM,CAAC,EAAEtX,SAAS,CAAC;MAAA,EAAC;IAC/D;;IAEA;AACA;AACA;AACA;AACA;AACA;EALA;IAAAuM;IAAAhN,OAMC,sBAAc4jB,MAAM,EAAEC,KAAK,EAAE;MAAA;MAC5B,OAAO5W,MAAM,CAACsG,OAAO,CAAC,IAAI,CAACiQ,KAAK,CAACI,MAAM,CAAC,CAAC1R,GAAG,CAAC,iBAAkB5D,CAAC,EAAK;QAAA;UAAtB6V,EAAE;UAAE/B,SAAS;QAC3D,IAAI/B,GAAG,GAAGuD,MAAM,CAACtV,CAAC,CAAC;QAEnB,IAAIwQ,MAAM,CAACuB,GAAG,CAAC,IAAIpR,KAAK,CAACoR,GAAG,CAAC,EAAE;UAClC;UACI,OAAOA,GAAG;QACd;;QAEA;QACA;QACG,IAAI+D,YAAY,GAAGP,KAAK,CAACvV,CAAC,CAAC;QAC3B,IAAIoQ,IAAI,GAAG2F,MAAI,CAACT,MAAM,CAACtV,CAAC,CAAC,CAACgW,IAAI,CAAC,WAAC;UAAA,OAAIvM,CAAC,CAAC2G,IAAI,IAAI0F,YAAY;QAAA,EAAC;;QAE9D;QACG,IAAI,CAAC1F,IAAI,EAAE;UAAA;UACd;UACI,IAAI6F,SAAS,GAAGnC,SAAS,CAACzjB,IAAI,IAAIwlB,EAAE;UACpC,MAAM,IAAIxB,SAAS,oBACfyB,YAAY,aAAZA,YAAY,cAAZA,YAAY,6BAAwB/D,GAAG,yCAAJmE,KAAOrO,GAAG,yCAAIkK,GAAG,8BAAoBkE,SAAS,iBAAOF,MAAI,CAAC1lB,IAAI,OACzG,CAAK;QACL;QAEG0hB,GAAG,GAAG3B,IAAI,CAAC+F,OAAO,CAACpE,GAAG,CAAC;QAEvB,IAAI3B,IAAI,CAAC6D,KAAK,EAAE;UACnB;UACIsB,KAAK,CAACvV,CAAC,CAAC,GAAGoQ,IAAI,CAAC9O,QAAQ,EAAE;QAC9B;QAEG,OAAOyQ,GAAG;MACb,CAAG,CAAC;IACJ;;IAEA;AACA;AACA;EAFA;IAAArT;IAAAhN,OAGC,wBAAgB;MACf,OAAO,IAAI,CAAC0e,IAAI,KAAK,UAAU,sBAAwB,IAAI,CAAEwF,SAAS;IACxE;;IAEA;AACA;AACA;AACA;EAHA;IAAAlX;IAAAhN,OAIC,eAAOye,GAAG,EAAE;MACX,OAAO,IAAI;IACb;;IAEA;AACA;AACA;AACA;AACA;EAJA;IAAAzR;IAAAhN,OAKC,aAAYujB,MAAM,EAAW;MAC5B,IAAI,CAACA,MAAM,IAAInD,UAAU,CAACmD,MAAM,EAAE,IAAI,CAAC,EAAE;QACxC,6BAA8BA;QAAM;MACvC;MAEE,IAAIA,MAAM,CAACH,QAAQ,CAAC,EAAE;QACrB,OAAOG,MAAM,CAACH,QAAQ,CAAC;MAC1B;MAAA,kCAPwB/kB,IAAI;QAAJA,IAAI;MAAA;MAS1B,kBAAWilB,MAAM,GAACC,MAAM,SAAKllB,IAAI;IACnC;EAAA;EAAA;AAAA,KClKA;AACA;AAEA;AACA;AACO,IAAMqmB,MAAM,GAAG;EACtB;EACCC,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC;EACjEC,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,MAAM;AACjE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAAElmB,IAAI,EAAE;EAC/B,IAAI6Q,KAAK,CAACmH,OAAO,CAAChY,IAAI,CAAC,EAAE;IACxB,OAAOA,IAAI;EACb;EAEC,OAAO+lB,MAAM,CAAC/lB,IAAI,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASmmB,OAAKC,CAAEC,EAAE,EAAEC,EAAE,EAAEC,GAAG,EAAgB;EAAA,IAAd3jB,OAAO,uEAAG,EAAE;EACvDyjB,EAAE,GAAGH,QAAQ,CAACG,EAAE,CAAC;EACjBC,EAAE,GAAGJ,QAAQ,CAACI,EAAE,CAAC;EAEjB,IAAI,CAACD,EAAE,IAAI,CAACC,EAAE,EAAE;IACf,MAAM,IAAItC,SAAS,0CACgB,CAACqC,EAAE,GAAG,MAAM,GAAG,EAAE,SAAG,CAACA,EAAE,IAAI,CAACC,EAAE,GAAG,GAAG,GAAG,EAAE,SAAG,CAACA,EAAE,GAAG,IAAI,GAAG,EAAE,CAChG,CAAG;EACH;EAEC,IAAID,EAAE,KAAKC,EAAE,EAAE;IAChB;IACE,OAAOC,GAAG;EACZ;EAEC,IAAIhE,GAAG,GAAG;IAAE8D,EAAE,EAAFA,EAAE;IAAEC,EAAE,EAAFA,EAAE;IAAEC,GAAG,EAAHA,GAAG;IAAE3jB,OAAO,EAAPA;EAAO,CAAE;EAElC6f,KAAK,CAAC+D,GAAG,CAAC,4BAA4B,EAAEjE,GAAG,CAAC;EAE5C,IAAI,CAACA,GAAG,CAACkE,CAAC,EAAE;IACX,IAAIlE,GAAG,CAAC8D,EAAE,KAAKN,MAAM,CAACE,GAAG,IAAI1D,GAAG,CAAC+D,EAAE,KAAKP,MAAM,CAACC,GAAG,EAAE;MACtD;MACGzD,GAAG,CAACkE,CAAC,GAAG,CACP,CAAG,kBAAkB,EAAI,oBAAoB,EAAE,CAAC,mBAAmB,CAAG,EACtE,CAAG,mBAAmB,EAAG,kBAAkB,EAAI,CAAC,oBAAoB,CAAE,EACtE,CAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAG,kBAAkB,CAAI,CACtE;IACJ,OACO,IAAIlE,GAAG,CAAC8D,EAAE,KAAKN,MAAM,CAACC,GAAG,IAAIzD,GAAG,CAAC+D,EAAE,KAAKP,MAAM,CAACE,GAAG,EAAE;MAC3D;MACG1D,GAAG,CAACkE,CAAC,GAAG,CACP,CAAG,iBAAiB,EAAK,CAAC,mBAAmB,EAAG,mBAAmB,CAAG,EACtE,CAAE,CAAC,kBAAkB,EAAK,kBAAkB,EAAI,oBAAoB,CAAE,EACtE,CAAG,oBAAoB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAK,CACtE;IACJ;EACA;EAEChE,KAAK,CAAC+D,GAAG,CAAC,0BAA0B,EAAEjE,GAAG,CAAC;EAE1C,IAAIA,GAAG,CAACkE,CAAC,EAAE;IACV,OAAOhH,gBAAgB,CAAC8C,GAAG,CAACgE,GAAG,EAAEhE,GAAG,CAACkE,CAAC,CAAC;EACzC,OACM;IACJ,MAAM,IAAIzC,SAAS,CAAC,oEAAoE,CAAC;EAC3F;AACA;;AC5EA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS0C,KAAKA,CAAE5G,GAAG,EAAEld,OAAO,EAAE;EAAA;EAC5C,IAAI2f,GAAG,GAAG;IACTzC,GAAG,aAAE6G,MAAM,CAAC7G,GAAG,CAAC,4CAAX8G,QAAa7C,IAAI,EAAE;IACxBnhB,OAAO,EAAPA;EACF,CAAE;EAED6f,KAAK,CAAC+D,GAAG,CAAC,aAAa,EAAEjE,GAAG,CAAC;EAE7B,IAAIA,GAAG,CAAC9gB,KAAK,EAAE;IACd,OAAO8gB,GAAG,CAAC9gB,KAAK;EAClB;EAEC8gB,GAAG,CAACsE,MAAM,GAAGC,aAAa,CAACvE,GAAG,CAACzC,GAAG,CAAC;EACnC,IAAIT,GAAG;EACP,IAAI0H,IAAI,GAAGxE,GAAG,CAAC3f,OAAO,4BAAI2f,GAAG,CAAC3f,OAAO,CAACokB,SAAS,yEAAIzE,GAAG,CAAC3f,OAAO,CAACmkB,IAAI,GAAI,IAAI;EAE3E,IAAIxE,GAAG,CAACsE,MAAM,EAAE;IACjB;IACE,IAAI7mB,IAAI,GAAGuiB,GAAG,CAACsE,MAAM,CAAC7mB,IAAI;IAC1B,IAAI4kB,OAAM;IACV,IAAIC,KAAK;IACT,IAAII,MAAM,GAAG1C,GAAG,CAACsE,MAAM,CAACnnB,IAAI;IAC5B,IAAIwlB,KAAK,GAAGD,MAAM,CAAC1R,GAAG,CAAC,UAAC6F,CAAC,EAAEzJ,CAAC;MAAA;MAAA,gCAAK4S,GAAG,CAACsE,MAAM,CAACI,OAAO,CAACtX,CAAC,CAAC,0DAArBuX,sBAAuBnH,IAAI;IAAA,EAAC;IAE7D,IAAI/f,IAAI,KAAK,OAAO,EAAE;MACxB;MACG,IAAIwlB,EAAE,GAAGP,MAAM,CAACkC,KAAK,EAAE;MACvBjC,KAAK,CAACiC,KAAK,EAAE;MAChB;MACG,IAAIC,WAAW,GAAG5B,EAAE,CAAC6B,UAAU,CAAC,IAAI,CAAC,GAAG7B,EAAE,CAAC8B,SAAS,CAAC,CAAC,CAAC,eAAQ9B,EAAE,CAAE;MACnE,IAAI+B,GAAG,GAAG,CAAC/B,EAAE,EAAE4B,WAAW,CAAC;MAC3BxC,OAAM,GAAG4C,UAAU,CAACC,UAAU,CAAC;QAAEznB,IAAI,EAAJA,IAAI;QAAEwlB,EAAE,EAAE+B,GAAG;QAAExH,IAAI,EAAE;MAAU,CAAE,CAAC;MAEnE,IAAI,CAAC6E,OAAM,EAAE;QAAA;QAChB;QACI,IAAI8C,UAAU;QAEd,IAAIC,UAAU,GAAGnC,EAAE,IAAIgC,UAAU,CAACI,QAAQ,GAAGpC,EAAE,GAAG4B,WAAW;QAC7D,IAAIO,UAAU,IAAIH,UAAU,CAACI,QAAQ,EAAE;UAAA;UAC3C;UACK,IAAIC,KAAK,4BAAGL,UAAU,CAACI,QAAQ,CAACD,UAAU,CAAC,CAACG,OAAO,oFAAvCC,sBAAyCtmB,KAAK,2DAA9CumB,uBAAgDxC,EAAE;UAE9D,IAAIqC,KAAK,EAAE;YACV,IAAII,QAAQ,GAAGnI,GAAG,CAACoI,OAAO,CAAC,QAAQ,GAAG1C,EAAE,EAAE,QAAQ,GAAGqC,KAAK,CAAC;YAC3DH,UAAU,0BAAmBO,QAAQ,MAAG;UAC9C;QACA;QAEI,MAAM,IAAIjE,SAAS,CAClB,uBAAgBzB,GAAG,CAACzC,GAAG,0BAAQ4H,UAAU,qDAAI,mBAAmB,CACrE,CAAK;MACL;MAEG7C,KAAK,GAAGD,OAAM,CAACC,KAAK;MAEpB,IAAID,OAAM,CAACY,EAAE,CAAC6B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC7B,EAAE,CAAC6B,UAAU,CAAC,IAAI,CAAC,EAAE;QACvDc,QAAQ,CAAChF,IAAI,CACZ,UAAG0B,KAAK,CAAC7kB,IAAI,2GACU4kB,OAAM,CAACY,EAAE,gCAAsBA,EAAE,OAC7D,CAAK;MACL;MACG,IAAIA,EAAE,CAAC6B,UAAU,CAAC,IAAI,CAAC,IAAI,CAACzC,OAAM,CAACY,EAAE,CAAC6B,UAAU,CAAC,IAAI,CAAC,EAAE;QACvDc,QAAQ,CAAChF,IAAI,CACZ,UAAG0B,KAAK,CAAC7kB,IAAI,gFACC4kB,OAAM,CAACY,EAAE,yCAA+BA,EAAE,OAC7D,CAAK;MACL;IACA,OACO;MACJZ,OAAM,GAAG4C,UAAU,CAACC,UAAU,CAAC;QAAEznB,IAAI,EAAJA,IAAI;QAAE+f,IAAI,EAAE;MAAU,CAAE,CAAC;MAC1D8E,KAAK,GAAGD,OAAM,CAACC,KAAK;IACvB;IAEE,IAAIkC,IAAI,EAAE;MACTzY,MAAM,CAACwW,MAAM,CAACiC,IAAI,EAAE;QACnBnC,MAAM,EAANA,OAAM;QACNwD,QAAQ,EAAExD,OAAM,CAAC5kB,IAAI;QACrBklB,KAAK,EAALA,KAAK;QACLmD,MAAM,EAAE9F,GAAG,CAACsE,MAAM,CAACwB;MACvB,CAAI,CAAC;IACL;IAEE,IAAInY,KAAK,GAAG,CAAC;IAEb,IAAIqS,GAAG,CAACsE,MAAM,CAACyB,SAAS,EAAE;MACzBpY,KAAK,GAAGqS,GAAG,CAACsE,MAAM,CAACnnB,IAAI,CAACwe,GAAG,EAAE;MAE7B,IAAI6I,IAAI,EAAE;QACTA,IAAI,CAACwB,SAAS,GAAGrD,KAAK,CAAChH,GAAG,EAAE;MAChC;IACA;IAEE,IAAIsK,UAAU,GAAG5D,OAAM,CAACK,MAAM,CAACtlB,MAAM;IAErC,IAAIslB,MAAM,CAACtlB,MAAM,KAAK6oB,UAAU,EAAE;MACjC,MAAM,IAAIxE,SAAS,oBACNwE,UAAU,8BAAoB3D,KAAK,CAACW,EAAE,iBAAOjD,GAAG,CAACzC,GAAG,oBAAUmF,MAAM,CAACtlB,MAAM,CAC3F,CAAI;IACJ;IAEEslB,MAAM,GAAGL,OAAM,CAAC6D,YAAY,CAACxD,MAAM,EAAEC,KAAK,CAAC;IAE3C7F,GAAG,GAAG;MAAEqJ,OAAO,EAAE7D,KAAK,CAACW,EAAE;MAAEP,MAAM,EAANA,MAAM;MAAE/U,KAAK,EAALA;IAAK,CAAE;EAC5C,OACM;IACN;IAAA,4CAC+BsX,UAAU,CAACmB,GAAG;MAAAzQ;IAAA;MAA3C0Q,SAAS,EAAE,uDAAkC;QAAA,IAAzB/D,MAAK;QACxB,KAAK,IAAIuD,QAAQ,IAAIvD,MAAK,CAACiD,OAAO,EAAE;UACnC,IAAIlD,QAAM,GAAGC,MAAK,CAACiD,OAAO,CAACM,QAAQ,CAAC;UAEpC,IAAIxD,QAAM,CAAC7E,IAAI,KAAK,QAAQ,EAAE;YAC7B;UACL;UAEI,IAAI6E,QAAM,CAACiE,IAAI,IAAI,CAACjE,QAAM,CAACiE,IAAI,CAACtG,GAAG,CAACzC,GAAG,CAAC,EAAE;YACzC;UACL;;UAEA;UACI,IAAIgJ,YAAY,GAAGjE,MAAK,CAACkE,SAAS,CAACnE,QAAM,CAAC;UAE1C,IAAInjB,KAAK,GAAGqnB,YAAY,CAACpC,KAAK,CAACnE,GAAG,CAACzC,GAAG,CAAC;UAEvC,IAAIre,KAAK,EAAE;YACV,IAAIslB,IAAI,EAAE;cACTzY,MAAM,CAACwW,MAAM,CAACiC,IAAI,EAAE;gBAAEnC,MAAM,EAAEkE,YAAY;gBAAEV,QAAQ,EAARA;cAAQ,CAAE,CAAC;YAC7D;YAEK/I,GAAG,GAAG5d,KAAK;YACX,MAAMmnB,SAAS;UACpB;QACA;MACA;IAAA;MAAA3Q;IAAA;MAAAA;IAAA;EACA;EAEC,IAAI,CAACoH,GAAG,EAAE;IACX;IACE,MAAM,IAAI2E,SAAS,2BAAoBlE,GAAG,mCAAgC,CAAC;EAC7E;;EAEA;EACCT,GAAG,CAACnP,KAAK,GAAGiQ,MAAM,CAACd,GAAG,CAACnP,KAAK,IACzBmP,GAAG,CAACnP,QACJmP,GAAG,CAACnP,KAAK,KAAKQ,YACb,IACAT,KAAK,CAAC,CAAC,EAAEoP,GAAG,CAACnP,KAAK,EAAE,CAAC,CAAC;EAE1B,OAAOmP,GAAG;AACX;;AAEA;AACA;AACA;AACO,IAAM2J,KAAK,GAAG;EACpB,GAAG,EAAE,IAAI;EACTC,GAAG,EAAE,CAAC;EACNC,IAAI,EAAE,GAAG;EACTC,GAAG,EAAE,GAAG,GAAGtoB,IAAI,CAACob,EAAE;EAClBmN,IAAI,EAAE;AACP,CAAC;AAEM,IAAMC,KAAK,GAAG;EACrB;EACC,YAAU,sCAAsC;EAChDxR,MAAM,EAAE,8CAA8C;EACtDyR,SAAS,EAAEC,MAAM,YAAKjb,MAAM,CAACiD,IAAI,CAACyX,KAAK,CAAC,CAACrX,IAAI,CAAC,GAAG,CAAC,OAAI,CAAC;EAExD;EACC6X,cAAc,EAAE;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAAEC,MAAM,EAAE;EAAA;EACvC;EACC,IAAI3C,IAAI,GAAG,EAAE;EACb,IAAI7G,IAAI,oBAAGwJ,MAAM,CAACha,KAAK,CAAC2Z,KAAK,CAACC,SAAS,CAAC,kDAA7BK,cAAgC,CAAC,CAAC;EAC9C;EACC,IAAItoB,KAAK,GAAI0lB,IAAI,CAACvP,GAAG,GAAGkS,MAAO;EAE/B,IAAIxJ,IAAI,EAAE;IACX;IACE6G,IAAI,CAAChH,IAAI,GAAGG,IAAI,KAAK,GAAG,GAAG,cAAc,GAAG,SAAS;IACrD6G,IAAI,CAAC7G,IAAI,GAAGA,IAAI;IAChB6G,IAAI,CAAC6C,QAAQ,GAAG9Z,MAAM,CAACzO,KAAK,CAAC2N,KAAK,CAAC,CAAC,EAAE,CAACkR,IAAI,CAACvgB,MAAM,CAAC,CAAC,CAAC;;IAErD0B,KAAK,GAAG0lB,IAAI,CAAC6C,QAAQ,GAAGZ,KAAK,CAAC9I,IAAI,CAAC;EACrC,OACM,IAAImJ,KAAK,CAACxR,MAAM,CAACgR,IAAI,CAACxnB,KAAK,CAAC,EAAE;IACpC;IACA;IACEA,KAAK,GAAGyO,MAAM,CAACzO,KAAK,CAAC;IACrB0lB,IAAI,CAAChH,IAAI,GAAG,UAAU;EACxB,OACM,IAAI1e,KAAK,KAAK,MAAM,EAAE;IAC1BA,KAAK,GAAG,IAAI;EACd,OACM,IAAIA,KAAK,KAAK,KAAK,IAAIA,KAAK,KAAK,WAAW,EAAE;IAClDA,KAAK,GAAGwoB,GAAG;IACX9C,IAAI,CAAChH,IAAI,GAAG,UAAU;EACxB,OACM;IACJgH,IAAI,CAAChH,IAAI,GAAG,SAAS;EACvB;EAEC,OAAO;IAAE1e,KAAK,uBAAyBA,KAAM;IAAE0lB,IAAI,6BAA+BA;EAAK,CAAE;AAC1F;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASD,aAAaA,CAAEhH,GAAG,EAAE;EACnC,IAAI,CAACA,GAAG,EAAE;IACT;EACF;EAECA,GAAG,GAAGA,GAAG,CAACiE,IAAI,EAAE;EAEhB,IAAI+F,KAAK,GAAGhK,GAAG,CAACpQ,KAAK,CAAC2Z,KAAK,YAAS,CAAC;EAErC,IAAIS,KAAK,EAAE;IACZ;IACE,IAAIpqB,IAAI,GAAG,EAAE;IACb,IAAIunB,OAAO,GAAG,EAAE;IAChB,IAAIqB,SAAS,GAAG,KAAK;IACrB,IAAItoB,IAAI,GAAG8pB,KAAK,CAAC,CAAC,CAAC,CAAC7a,WAAW,EAAE;IAEjC,IAAI8a,UAAU,GAAGD,KAAK,CAAC,CAAC,CAAC,CAAC5B,OAAO,CAACmB,KAAK,CAACG,cAAc,EAAE,UAACQ,EAAE,EAAEN,MAAM,EAAK;MACvE,qBAAsBD,aAAa,CAACC,MAAM,CAAC;QAArCroB,KAAK,kBAALA,KAAK;QAAE0lB,IAAI,kBAAJA,IAAI;MAEjB;MACH;MACIiD,EAAE,CAAC3C,UAAU,CAAC,GAAG,CAAC;MACtB;MACKrnB,IAAI,KAAK,OAAO,IAAIN,IAAI,CAACC,MAAM,KAAK,CAAC,EACrC;QACL;QACI2oB,SAAS,GAAG,IAAI;MACpB;MAEG5oB,IAAI,CAACgT,IAAI,CAACrR,KAAK,CAAC;MAChB4lB,OAAO,CAACvU,IAAI,CAACqU,IAAI,CAAC;MAClB,OAAO,EAAE;IACZ,CAAG,CAAC;IAEF,OAAO;MACN/mB,IAAI,EAAJA,IAAI;MACJN,IAAI,EAAJA,IAAI;MACJunB,OAAO,EAAPA,OAAO;MACPqB,SAAS,EAATA,SAAS;MACTD,MAAM,EAAE0B,UAAU,CAACzS,QAAQ,CAAC,GAAG,CAAC;MAChC2S,OAAO,EAAEH,KAAK,CAAC,CAAC,CAAC;MACjBI,OAAO,EAAEJ,KAAK,CAAC,CAAC;IACnB,CAAG;EACH;AACA;;AClRA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASK,QAAQA,CAAE1oB,KAAK,EAAEmB,OAAO,EAAE;EACjD,IAAIiO,KAAK,CAACmH,OAAO,CAACvW,KAAK,CAAC,EAAE;IACzB,OAAOA,KAAK,CAAC8R,GAAG,CAAC,WAAC;MAAA,OAAI4W,QAAQ,CAAC/Q,CAAC,EAAExW,OAAO,CAAC;IAAA,EAAC;EAC7C;EAEC,IAAI,CAACnB,KAAK,EAAE;IACX,MAAM,IAAIuiB,SAAS,CAAC,uBAAuB,CAAC;EAC9C;EAEC,IAAInE,QAAQ,CAACpe,KAAK,CAAC,EAAE;IACpBA,KAAK,GAAGilB,KAAK,CAACjlB,KAAK,EAAEmB,OAAO,CAAC;EAC/B;;EAEA;EACC,IAAIiiB,KAAK,GAAGpjB,KAAK,CAACojB,KAAK,IAAIpjB,KAAK,CAACinB,OAAO;EAExC,IAAI,OAAO7D,KAAK,KAAK,QAAQ,EAAE;IAChC;IACEpjB,KAAK,CAACojB,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;EACrC;EAEC,IAAIpjB,KAAK,CAACyO,KAAK,KAAKQ,SAAS,EAAE;IAC9BjP,KAAK,CAACyO,KAAK,GAAG,CAAC;EACjB;EAEC,OAAOzO,KAAK;AACb;;AC7CA;AACA;AACA;AACA;AACA;;AAOA,IAAM2oB,GAAC,GAAG,QAAQ;;AAElB;AACA;AACA;AAFA,IAGqB5C,UAAU;EAC9B,oBAAa5kB,OAAO,EAAE;IAAA;IAAAsf;IACrB,IAAI,CAACsD,EAAE,GAAG5iB,OAAO,CAAC4iB,EAAE;IACpB,IAAI,CAACxlB,IAAI,GAAG4C,OAAO,CAAC5C,IAAI;IACxB,IAAI,CAACihB,IAAI,GAAGre,OAAO,CAACqe,IAAI,GAAGuG,UAAU,CAAC3Y,GAAG,CAACjM,OAAO,CAACqe,IAAI,CAAC,GAAG,IAAI;IAC9D,IAAI,CAACoJ,OAAO,GAAGznB,OAAO,CAACynB,OAAO;IAE9B,IAAI,IAAI,CAACpJ,IAAI,EAAE;MACd,IAAI,CAACqJ,QAAQ,GAAG1nB,OAAO,CAAC0nB,QAAQ;MAChC,IAAI,CAACC,MAAM,GAAG3nB,OAAO,CAAC2nB,MAAM;IAC/B;;IAEA;;IAEE,IAAItF,MAAM,sBAAGriB,OAAO,CAACqiB,MAAM,6DAAI,IAAI,CAAChE,IAAI,CAACgE,MAAM;IAE/C,KAAK,IAAIjlB,IAAI,IAAIilB,MAAM,EAAE;MACxB,IAAI,EAAE,MAAM,IAAIA,MAAM,CAACjlB,IAAI,CAAC,CAAC,EAAE;QAC9BilB,MAAM,CAACjlB,IAAI,CAAC,CAACA,IAAI,GAAGA,IAAI;MAC5B;IACA;IACE,IAAI,CAACilB,MAAM,GAAGA,MAAM;;IAEtB;;IAEE,IAAIhX,KAAK,8BAAGrL,OAAO,CAACqL,KAAK,2DAAI,IAAI,CAACgT,IAAI,CAAChT,KAAK,yCAAI,KAAK;IACrD,IAAI,CAACA,KAAK,GAAGiY,QAAQ,CAACjY,KAAK,CAAC;;IAE9B;;IAEE,IAAI,CAAC6Z,OAAO,uBAAGllB,OAAO,CAACklB,OAAO,+DAAI,EAAE;IAEpC,KAAK,IAAI9nB,KAAI,IAAI,IAAI,CAAC8nB,OAAO,EAAE;MAC9B,IAAIlD,QAAM,GAAG,IAAI,CAACkD,OAAO,CAAC9nB,KAAI,CAAC;MAC/B4kB,QAAM,CAAC7E,IAAI,KAAX6E,QAAM,CAAC7E,IAAI,GAAK,UAAU;MAC1B6E,QAAM,CAAC5kB,IAAI,KAAX4kB,QAAM,CAAC5kB,IAAI,GAAKA,KAAI;IACvB;IAEE,IAAI,yBAAC,IAAI,CAAC8nB,OAAO,CAACrmB,KAAK,gDAAlB+oB,oBAAoBhF,EAAE,GAAE;MAAA;MAC5B,IAAI,CAACsC,OAAO,CAACrmB,KAAK,2DACb,IAAI,CAACqmB,OAAO,CAACrmB,KAAK,uEAAI,EAAE;QAC5B+jB,EAAE,EAAE5iB,OAAO,CAACilB,KAAK,IAAI,IAAI,CAACrC;MAAE,EAC5B;IACJ;;IAEA;;IAEE,IAAI5iB,OAAO,CAAC6nB,UAAU,EAAE;MAC1B;MACG,IAAI,CAACA,UAAU,GACd7nB,OAAO,CAAC6nB,UAAU,KAAK,MAAM,GAAG,IAAI,GAAGjD,UAAU,CAAC3Y,GAAG,CAACjM,OAAO,CAAC6nB,UAAU,CAAC;IAC7E,OACO;MACP;MACG,IAAI,IAAI,CAACC,OAAO,EAAE;QACrB;QACI,IAAI,CAACD,UAAU,GAAG,IAAI,CAACxJ,IAAI;MAC/B,OACQ;QACJ,IAAI,CAACwJ,UAAU,GAAG,IAAI;MAC1B;IACA;;IAEA;IACE,IAAI,IAAI,CAACA,UAAU,CAACE,WAAW,EAAE;MAChC,IAAI,CAACC,OAAO,GAAG,UAAC3F,MAAM,EAAEriB,OAAO,EAAK;QACnC,OAAO,IAAI;MACf,CAAI;IACJ;;IAEA;IACE,IAAI,CAACioB,QAAQ,GAAGjoB,OAAO,CAACioB,QAAQ;;IAElC;IACEvc,MAAM,CAACkL,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;MACnCnY,KAAK,EAAEypB,OAAO,CAAC,IAAI,CAAC,CAACC,OAAO,EAAE;MAC9BC,QAAQ,EAAE,KAAK;MACfC,UAAU,EAAE,IAAI;MAChBC,YAAY,EAAE;IACjB,CAAG,CAAC;IAEFzI,KAAK,CAAC+D,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC;EACxC;EAAArE;IAAA9T;IAAAhN,OAEC,iBAAS4jB,MAAM,EAAwB;MAAA,gFAAJ,EAAE;QAAAkG,sBAAlBC,OAAO;QAAPA,OAAO,8BAAGhB,GAAC;MAC7B,IAAI,CAAC,IAAI,CAACiB,MAAM,CAAC,IAAI,CAACZ,UAAU,CAAC,EAAE;QAClCxF,MAAM,GAAG,IAAI,CAAC1jB,EAAE,CAAC,IAAI,CAACkpB,UAAU,EAAExF,MAAM,CAAC;QACzC,OAAO,IAAI,CAACwF,UAAU,CAACG,OAAO,CAAC3F,MAAM,EAAE;UAAEmG,OAAO,EAAPA;QAAO,CAAE,CAAC;MACtD;MAEE,IAAI3H,SAAS,GAAGnV,MAAM,CAAC0W,MAAM,CAAC,IAAI,CAACC,MAAM,CAAC;MAE1C,OAAOA,MAAM,CAACqG,KAAK,CAAC,UAAClS,CAAC,EAAEzJ,CAAC,EAAK;QAC7B,IAAIoX,IAAI,GAAGtD,SAAS,CAAC9T,CAAC,CAAC;QAEvB,IAAIoX,IAAI,CAAChH,IAAI,KAAK,OAAO,IAAIgH,IAAI,CAACnD,KAAK,EAAE;UACxC,IAAIzD,MAAM,CAAC/G,CAAC,CAAC,EAAE;YACnB;YACK,OAAO,IAAI;UAChB;UAEI,iCAAiB2N,IAAI,CAACnD,KAAK;YAAtB9iB,GAAG;YAAEC,KAAG;UACb,OACC,CAACD,GAAG,KAAK4P,SAAS,IAAI0I,CAAC,IAAItY,GAAG,GAAGsqB,OAAO,MACvCrqB,KAAG,KAAK2P,SAAS,IAAI0I,CAAC,IAAIrY,KAAG,GAAGqqB,OAAO;QAE7C;QAEG,OAAO,IAAI;MACd,CAAG,CAAC;IACJ;EAAA;IAAA/c;IAAAQ,KAEC,eAAmB;MAClB,OAAOP,MAAM,CAAC0W,MAAM,CAAC,IAAI,CAACC,MAAM,CAAC,CAACqG,KAAK,CAAC,eAAK;QAAA,OAAI,EAAE,OAAO,IAAIC,KAAK,CAAC;MAAA,EAAC;IACvE;EAAA;IAAAld;IAAAQ,KAEC,eAAa;MAAA;MACZ,OAAO,sBAAI,CAACiZ,OAAO,0EAAZ0D,cAAc/pB,KAAK,yDAAnBgqB,qBAAqBjG,EAAE,KAAI,IAAI,CAACA,EAAE;IAC3C;EAAA;IAAAnX;IAAAQ,KAEC,eAAe;MACd,KAAK,IAAI2W,EAAE,IAAI,IAAI,CAACP,MAAM,EAAE;QAC3B,IAAI,IAAI,CAACA,MAAM,CAACO,EAAE,CAAC,CAACzF,IAAI,KAAK,OAAO,EAAE;UACrC,OAAO,IAAI;QACf;MACA;MAEE,OAAO,KAAK;IACd;;IAEA;AACA;AACA;AACA;AACA;EAJA;IAAA1R;IAAAhN,OAKC,mBAAWujB,MAAM,EAAE;MAClB,IAAI,CAACA,MAAM,EAAE;QACZ,OAAO,IAAI;MACd;MAEE,IAAIA,MAAM,KAAK,SAAS,EAAE;QACzBA,MAAM,GAAGtW,MAAM,CAAC0W,MAAM,CAAC,IAAI,CAAC8C,OAAO,CAAC,CAAC,CAAC,CAAC;MAC1C,OACO,IAAI,OAAOlD,MAAM,KAAK,QAAQ,EAAE;QACpCA,MAAM,GAAG,IAAI,CAACkD,OAAO,CAAClD,MAAM,CAAC;MAChC;MAEE,IAAIvF,GAAG,GAAGsF,MAAM,CAAC9V,GAAG,CAAC+V,MAAM,EAAE,IAAI,CAAC;MAElC,IAAIvF,GAAG,KAAKuF,MAAM,IAAIA,MAAM,CAAC5kB,IAAI,IAAI,IAAI,CAAC8nB,OAAO,EAAE;QACrD;QACG,IAAI,CAACA,OAAO,CAAClD,MAAM,CAAC5kB,IAAI,CAAC,GAAGqf,GAAG;MAClC;MAEE,OAAOA,GAAG;IACZ;;IAEA;AACA;AACA;AACA;AACA;AACA;EALA;IAAAhR;IAAAhN,OAMC,gBAAQwjB,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,EAAE;QACX,OAAO,KAAK;MACf;MAEE,OAAO,IAAI,KAAKA,KAAK,IAAI,IAAI,CAACW,EAAE,KAAKX,KAAK,IAAI,IAAI,CAACW,EAAE,KAAKX,KAAK,CAACW,EAAE;IACpE;EAAA;IAAAnX;IAAAhN,OAEC,YAAIwjB,KAAK,EAAEI,MAAM,EAAE;MAClB,IAAIxU,SAAS,CAAC9Q,MAAM,KAAK,CAAC,EAAE;QAC3B,IAAM8B,KAAK,GAAG0oB,QAAQ,CAACtF,KAAK,CAAC;QAAA,YACX,CAACpjB,KAAK,CAACojB,KAAK,EAAEpjB,KAAK,CAACwjB,MAAM,CAAC;QAA5CJ,KAAK;QAAEI,MAAM;MACjB;MAEEJ,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;MAE7B,IAAI,IAAI,CAACwG,MAAM,CAACxG,KAAK,CAAC,EAAE;QAC1B;QACG,OAAOI,MAAM;MAChB;;MAEA;MACEA,MAAM,GAAGA,MAAM,CAAC1R,GAAG,CAAC,WAAC;QAAA,OAAK4M,MAAM,CAAC/G,CAAC,CAAC,GAAG,CAAC,GAAGA,CAAC;MAAA,CAAC,CAAC;;MAE/C;MACE,IAAIsS,MAAM,GAAG,IAAI,CAACjN,IAAI;MACtB,IAAIkN,SAAS,GAAG9G,KAAK,CAACpG,IAAI;MAE1B,IAAImN,eAAe,EAAEC,oBAAoB;MAEzC,KAAK,IAAIlc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+b,MAAM,CAAC/rB,MAAM,EAAEgQ,CAAC,EAAE,EAAE;QACvC,IAAI+b,MAAM,CAAC/b,CAAC,CAAC,CAAC0b,MAAM,CAACM,SAAS,CAAChc,CAAC,CAAC,CAAC,EAAE;UACnCic,eAAe,GAAGF,MAAM,CAAC/b,CAAC,CAAC;UAC3Bkc,oBAAoB,GAAGlc,CAAC;QAC5B,OACQ;UACJ;QACJ;MACA;MAEE,IAAI,CAACic,eAAe,EAAE;QACxB;QACG,MAAM,IAAI7Z,KAAK,+CACyB,IAAI,kBAAQ8S,KAAK,oCAC5D,CAAI;MACJ;;MAEA;MACE,KAAK,IAAIlV,GAAC,GAAG+b,MAAM,CAAC/rB,MAAM,GAAG,CAAC,EAAEgQ,GAAC,GAAGkc,oBAAoB,EAAElc,GAAC,EAAE,EAAE;QAC9DsV,MAAM,GAAGyG,MAAM,CAAC/b,GAAC,CAAC,CAAC4a,MAAM,CAACtF,MAAM,CAAC;MACpC;;MAEA;MACE,KAAK,IAAItV,GAAC,GAAGkc,oBAAoB,GAAG,CAAC,EAAElc,GAAC,GAAGgc,SAAS,CAAChsB,MAAM,EAAEgQ,GAAC,EAAE,EAAE;QACjEsV,MAAM,GAAG0G,SAAS,CAAChc,GAAC,CAAC,CAAC2a,QAAQ,CAACrF,MAAM,CAAC;MACzC;MAEE,OAAOA,MAAM;IACf;EAAA;IAAA5W;IAAAhN,OAEC,cAAMwjB,KAAK,EAAEI,MAAM,EAAE;MACpB,IAAIxU,SAAS,CAAC9Q,MAAM,KAAK,CAAC,EAAE;QAC3B,IAAM8B,KAAK,GAAG0oB,QAAQ,CAACtF,KAAK,CAAC;QAAA,YACX,CAACpjB,KAAK,CAACojB,KAAK,EAAEpjB,KAAK,CAACwjB,MAAM,CAAC;QAA5CJ,KAAK;QAAEI,MAAM;MACjB;MAEEJ,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;MAE7B,OAAOA,KAAK,CAACtjB,EAAE,CAAC,IAAI,EAAE0jB,MAAM,CAAC;IAC/B;EAAA;IAAA5W;IAAAhN,OAEC,oBAAY;MACX,iBAAU,IAAI,CAACrB,IAAI,eAAK,IAAI,CAACwlB,EAAE;IACjC;EAAA;IAAAnX;IAAAhN,OAEC,wBAAgB;MACf,IAAIge,GAAG,GAAG,EAAE;MAEZ,KAAK,IAAImG,EAAE,IAAI,IAAI,CAACP,MAAM,EAAE;QAAA;QAC3B,IAAI8B,IAAI,GAAG,IAAI,CAAC9B,MAAM,CAACO,EAAE,CAAC;QAC1B,IAAI5B,MAAK,GAAGmD,IAAI,CAACnD,KAAK,IAAImD,IAAI,CAAClD,QAAQ;QACvCxE,GAAG,CAAC3M,IAAI,eAACkR,MAAK,aAALA,MAAK,uBAALA,MAAK,CAAE9iB,GAAG,mDAAI,CAAC,CAAC;MAC5B;MAEE,OAAOue,GAAG;IACZ;EAAA;IAAAhR;IAAAQ;IAIA;IACC,eAAkB;MACjB,0BAAW,IAAIid,GAAG,CAACxd,MAAM,CAAC0W,MAAM,CAACwC,UAAU,CAACI,QAAQ,CAAC,CAAC;IACxD;EAAA;IAAAvZ;IAAAhN,OAEC,kBAAiBmkB,EAAE,EAAEX,KAAK,EAAE;MAC3B,IAAIpU,SAAS,CAAC9Q,MAAM,KAAK,CAAC,EAAE;QAC3BklB,KAAK,GAAGpU,SAAS,CAAC,CAAC,CAAC;QACpB+U,EAAE,GAAGX,KAAK,CAACW,EAAE;MAChB;MAEEX,KAAK,GAAG,IAAI,CAAChW,GAAG,CAACgW,KAAK,CAAC;MAEvB,IAAI,IAAI,CAAC+C,QAAQ,CAACpC,EAAE,CAAC,IAAI,IAAI,CAACoC,QAAQ,CAACpC,EAAE,CAAC,KAAKX,KAAK,EAAE;QACrD,MAAM,IAAI9S,KAAK,gDAAyCyT,EAAE,MAAG,CAAC;MACjE;MACE,IAAI,CAACoC,QAAQ,CAACpC,EAAE,CAAC,GAAGX,KAAK;;MAE3B;MACE,IAAIpU,SAAS,CAAC9Q,MAAM,KAAK,CAAC,IAAIklB,KAAK,CAACwF,OAAO,EAAE;QAAA,4CAC1BxF,KAAK,CAACwF,OAAO;UAAA0B;QAAA;UAA/B,uDAAiC;YAAA,IAAxBC,KAAK;YACb,IAAI,CAACC,QAAQ,CAACD,KAAK,EAAEnH,KAAK,CAAC;UAC/B;QAAA;UAAAqH;QAAA;UAAAA;QAAA;MACA;MAEE,OAAOrH,KAAK;IACd;;IAEA;AACA;AACA;AACA;EAHA;IAAAxW;IAAAhN,OAIC,aAAYwjB,KAAK,EAAmB;MACnC,IAAI,CAACA,KAAK,IAAIpD,UAAU,CAACoD,KAAK,EAAE,IAAI,CAAC,EAAE;QACtC,OAAOA,KAAK;MACf;MAEE,IAAIsH,OAAO,GAAGpM,IAAI,CAAC8E,KAAK,CAAC;MAEzB,IAAIsH,OAAO,KAAK,QAAQ,EAAE;QAC5B;QACG,IAAI9M,GAAG,GAAGmI,UAAU,CAACI,QAAQ,CAAC/C,KAAK,CAAC5V,WAAW,EAAE,CAAC;QAElD,IAAI,CAACoQ,GAAG,EAAE;UACT,MAAM,IAAI2E,SAAS,4CAAoCa,KAAK,OAAG,CAAC;QACpE;QAEG,OAAOxF,GAAG;MACb;MAAA,mCAhBuB+M,YAAY;QAAZA,YAAY;MAAA;MAkBjC,IAAIA,YAAY,CAACzsB,MAAM,EAAE;QACxB,OAAO6nB,UAAU,CAAC3Y,GAAG,OAAd2Y,UAAU,EAAQ4E,YAAY,CAAC;MACzC;MAEE,MAAM,IAAIpI,SAAS,WAAIa,KAAK,gCAA6B,CAAC;IAC5D;;IAEA;AACA;AACA;AACA;AACA;AACA;EALA;IAAAxW;IAAAhN,OAMC,oBAAmBgrB,OAAO,EAA2B;MAAA,IAAzBC,MAAM,uEAAG9E,UAAU,CAACmB,GAAG;MAClD,IAAI,CAAC0D,OAAO,EAAE;QACb,OAAO,IAAI;MACd;MAEE,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;QAChCA,OAAO,GAAG;UAAErsB,IAAI,EAAEqsB;QAAO,CAAE;MAC9B;MAAA,4CAEoBC,MAAM;QAAAC;MAAA;QAAxB,uDAA0B;UAAA,IAAjB1H,KAAK;UACb,oCAA2BvW,MAAM,CAACsG,OAAO,CAACiQ,KAAK,CAACiD,OAAO,CAAC,uCAAE;YAAA;YAArD;cAAK9nB,IAAI;cAAE4kB,QAAM;YACrB,yBAAM,CAAC5kB,IAAI,yDAAX4kB,QAAM,CAAC5kB,IAAI,GAAKA,IAAI;YACpB,yBAAM,CAAC+f,IAAI,yDAAX6E,QAAM,CAAC7E,IAAI,GAAK,UAAU;YAE1B,IAAIyM,OAAO,GACV,CAAC,CAACH,OAAO,CAACrsB,IAAI,IAAI4kB,QAAM,CAAC5kB,IAAI,KAAKqsB,OAAO,CAACrsB,IAAI,MAC7C,CAACqsB,OAAO,CAACtM,IAAI,IAAI6E,QAAM,CAAC7E,IAAI,KAAKsM,OAAO,CAACtM,IAAI,CAAC;YAEhD,IAAIsM,OAAO,CAAC7G,EAAE,EAAE;cAAA;gBACf,IAAI+B,GAAG,GAAG3C,QAAM,CAAC2C,GAAG,IAAI,CAAC3C,QAAM,CAACY,EAAE,CAAC;gBACnC,IAAIiH,SAAS,GAAG5b,KAAK,CAACmH,OAAO,CAACqU,OAAO,CAAC7G,EAAE,CAAC,GAAG6G,OAAO,CAAC7G,EAAE,GAAG,CAAC6G,OAAO,CAAC7G,EAAE,CAAC;gBACrEgH,OAAO,KAAPA,OAAO,GAAKC,SAAS,CAACC,IAAI,CAAC,YAAE;kBAAA,OAAInF,GAAG,CAACjQ,QAAQ,CAACkO,EAAE,CAAC;gBAAA,EAAC;cAAA;YACvD;YAEI,IAAIgH,OAAO,EAAE;cACZ,IAAInN,GAAG,GAAGsF,MAAM,CAAC9V,GAAG,CAAC+V,QAAM,EAAEC,KAAK,CAAC;cAEnC,IAAIxF,GAAG,KAAKuF,QAAM,EAAE;gBACnBC,KAAK,CAACiD,OAAO,CAAClD,QAAM,CAAC5kB,IAAI,CAAC,GAAGqf,GAAG;cACtC;cAEK,OAAOA,GAAG;YACf;UACA;QACA;MAAA;QAAAsN;MAAA;QAAAA;MAAA;MAEE,OAAO,IAAI;IACb;;IAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAPA;IAAAte;IAAAhN,OAQC,sBAAqBurB,GAAG,EAAEC,YAAY,EAAE;MACvC,IAAIC,SAAS,GAAG/M,IAAI,CAAC6M,GAAG,CAAC;MACzB,IAAI/H,KAAK,EAAE0G,KAAK;MAEhB,IAAIuB,SAAS,KAAK,QAAQ,EAAE;QAC3B,IAAIF,GAAG,CAACtV,QAAQ,CAAC,GAAG,CAAC,EAAE;UAC1B;UAAA,iBACqBsV,GAAG,CAACxH,KAAK,CAAC,GAAG,CAAC;UAAA;UAA9BP,KAAK;UAAE0G,KAAK;QACjB,OACQ;UACR;UACK1G,KAAK;UAAE0G,KAAK,GAAOqB,GAAG;QAC3B;MACA,OACO,IAAI/b,KAAK,CAACmH,OAAO,CAAC4U,GAAG,CAAC,EAAE;QAAA,2BACXA,GAAG;QAAnB/H,KAAK;QAAE0G,KAAK;MAChB,OACO;QACP;QACG1G,KAAK,GAAG+H,GAAG,CAAC/H,KAAK;QACjB0G,KAAK,GAAGqB,GAAG,CAACG,OAAO;MACtB;MAEElI,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;MAE7B,IAAI,CAACA,KAAK,EAAE;QACXA,KAAK,GAAGgI,YAAY;MACvB;MAEE,IAAI,CAAChI,KAAK,EAAE;QACX,MAAM,IAAIb,SAAS,+CACqB4I,GAAG,4EAC9C,CAAI;MACJ;MAEEE,SAAS,GAAG/M,IAAI,CAACwL,KAAK,CAAC;MAEvB,IAAIuB,SAAS,KAAK,QAAQ,IAAKA,SAAS,KAAK,QAAQ,IAAIvB,KAAK,IAAI,CAAE,EAAE;QACxE;QACG,IAAIxE,IAAI,GAAGzY,MAAM,CAACsG,OAAO,CAACiQ,KAAK,CAACI,MAAM,CAAC,CAACsG,KAAK,CAAC;QAE9C,IAAIxE,IAAI,EAAE;UACT;YAASlC,KAAK,EAALA,KAAK;YAAEW,EAAE,EAAEuB,IAAI,CAAC,CAAC,CAAC;YAAEiG,KAAK,EAAEzB;UAAK,GAAKxE,IAAI,CAAC,CAAC,CAAC;QACzD;MACA;MAEElC,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;MAE7B,IAAIoI,eAAe,GAAG1B,KAAK,CAACtc,WAAW,EAAE;MAEzC,IAAIU,CAAC,GAAG,CAAC;MACT,KAAK,IAAI6V,EAAE,IAAIX,KAAK,CAACI,MAAM,EAAE;QAAA;QAC5B,IAAI8B,KAAI,GAAGlC,KAAK,CAACI,MAAM,CAACO,EAAE,CAAC;QAE3B,IACCA,EAAE,CAACvW,WAAW,EAAE,KAAKge,eAAe,IACpC,oBAAI,CAACjtB,IAAI,+CAATktB,WAAWje,WAAW,EAAE,MAAKge,iBAC5B;UACD;YAASpI,KAAK,EAALA,KAAK;YAAEW,EAAE,EAAFA,EAAE;YAAEwH,KAAK,EAAErd;UAAC,GAAKoX,KAAI;QACzC;QAEGpX,CAAC,EAAE;MACN;MAEE,MAAM,IAAIqU,SAAS,gBACXuH,KAAK,oCAAyB1G,KAAK,CAAC7kB,IAAI,oCAA0BsO,MAAM,CAACiD,IAAI,CAACsT,KAAK,CAACI,MAAM,CAAC,CAACtT,IAAI,CAAC,IAAI,CAAC,CAChH,CAAG;IACH;EAAA;EAAA;AAAA;AAAA+R,gBA7aqB8D,UAAU,cA0PZ,EAAE;AAAA9D,gBA1PA8D,UAAU,oBA+aN;EACvBzH,IAAI,EAAE,WAAW;EACjB/f,IAAI,EAAE;AACR,CAAE;AAGF,SAAS8qB,OAAOA,CAAEjG,KAAK,EAAE;EACxB,IAAIxF,GAAG,GAAG,CAACwF,KAAK,CAAC;EAEjB,KAAK,IAAIzU,CAAC,GAAGyU,KAAK,EAAGzU,CAAC,GAAGA,CAAC,CAAC6Q,IAAI,GAAK;IACnC5B,GAAG,CAAC3M,IAAI,CAACtC,CAAC,CAAC;EACb;EAEC,OAAOiP,GAAG;AACX;AC3cA,cAAe,IAAImI,UAAU,CAAC;EAC7BhC,EAAE,EAAE,SAAS;EACbxlB,IAAI,EAAE,SAAS;EACfilB,MAAM,EAAE;IACPjR,CAAC,EAAE;MACF6P,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACDiU,CAAC,EAAE;MACF4P,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACDkU,CAAC,EAAE;MACF2P,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT;EACA,CAAE;EACDiO,KAAK,EAAE,KAAK;EACZ6Z,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN8lB,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK;IACzB;EACA,CAAE;EACD8C,OAAO,EAAE,CAAC,KAAK;AAChB,CAAC,CAAC;;ACrBF;AACA;;AAEA;AAAA,IACqB8C,aAAa;EAAAC;EAAA;EAClC;AACA;AACA;AACA;AACA;AACA;AACA;EACC,uBAAaxqB,OAAO,EAAE;IAAA;IAAA;IAAAsf;IACrB,IAAI,CAACtf,OAAO,CAACqiB,MAAM,EAAE;MACpBriB,OAAO,CAACqiB,MAAM,GAAG;QAChB1kB,CAAC,EAAE;UACFqjB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;UACb5jB,IAAI,EAAE;QACX,CAAK;QACDQ,CAAC,EAAE;UACFojB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;UACb5jB,IAAI,EAAE;QACX,CAAK;QACDS,CAAC,EAAE;UACFmjB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;UACb5jB,IAAI,EAAE;QACX;MACA,CAAI;IACJ;IAEE,IAAI,CAAC4C,OAAO,CAACqe,IAAI,EAAE;MAClBre,OAAO,CAACqe,IAAI,GAAGoM,OAAO;IACzB;IAEE,IAAIzqB,OAAO,CAAC0qB,OAAO,IAAI1qB,OAAO,CAAC2qB,SAAS,EAAE;MAAA;MACzC,0BAAO,CAAChD,MAAM,6DAAd3nB,OAAO,CAAC2nB,MAAM,GAAK,aAAG,EAAI;QACzB,IAAI9R,GAAG,GAAGgH,gBAAgB,CAACpc,GAAG,EAAET,OAAO,CAAC0qB,OAAO,CAAC;QAEhD,IAAIE,OAAKvf,KAAK,KAAKuf,OAAKvM,IAAI,CAAChT,KAAK,EAAE;UACxC;UACKwK,GAAG,GAAG0N,OAAK,CAACqH,OAAKvf,KAAK,EAAEuf,OAAKvM,IAAI,CAAChT,KAAK,EAAEwK,GAAG,CAAC;QAClD;QAEI,OAAOA,GAAG;MACd,CAAI;MAED,4BAAO,CAAC6R,QAAQ,iEAAhB1nB,OAAO,CAAC0nB,QAAQ,GAAK,aAAG,EAAI;QAC3B7R,GAAG,GAAG0N,OAAK,CAACqH,OAAKvM,IAAI,CAAChT,KAAK,EAAEuf,OAAKvf,KAAK,EAAEwK,GAAG,CAAC;QAC7C,OAAOgH,gBAAgB,CAAChH,GAAG,EAAE7V,OAAO,CAAC2qB,SAAS,CAAC;MACnD,CAAI;IACJ;IAEE,4BAAO,CAAC1C,QAAQ,iEAAhBjoB,OAAO,CAACioB,QAAQ,GAAK,SAAS;IAAA,mCAExBjoB,OAAO;EACf;EAAA;AAAA,EAnD2C4kB,UAAU;ACNrD;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASiG,QAAQA,CAAEhsB,KAAK,EAAgB;EAAA,IAAdmB,OAAO,uEAAG,EAAE;EACpD,IAAIiO,KAAK,CAACmH,OAAO,CAACvW,KAAK,CAAC,EAAE;IACzB,OAAOA,KAAK,CAAC8R,GAAG,CAAC,WAAC;MAAA,OAAIka,QAAQ,CAACrU,CAAC,EAAExW,OAAO,CAAC;IAAA,EAAC;EAC7C;EAEC,2BAAwEA,OAAO,CAAzE8qB,WAAW;IAAXA,WAAW,qCAAG,kBAAkB;IAAExY,OAAO,GAAyBtS,OAAO,CAAvCsS,OAAO;IAAKyY,eAAe,4BAAK/qB,OAAO;EAC/E,IAAIgrB,KAAK,GAAG,IAAI;EAChB,IAAI;IACH,OAAOzD,QAAQ,CAAC1oB,KAAK,EAAEksB,eAAe,CAAC;EACzC,EACC,OAAOtY,CAAC,EAAE;IACTuY,KAAK,GAAGvY,CAAC;EACX;EAEC,IAAMwY,GAAG,GAAuBhL,UAAU,CAApCgL,GAAG;IAAEC,gBAAgB,GAAKjL,UAAU,CAA/BiL,gBAAgB;EAC3B,IAAIjO,QAAQ,CAACpe,KAAK,CAAC,IAAIyT,OAAO,IAAI2Y,GAAG,IAAIC,gBAAgB,EAAE;IAC5D;IACE,IAAID,GAAG,CAACE,QAAQ,CAACL,WAAW,EAAEjsB,KAAK,CAAC,EAAE;MACrC,IAAIusB,aAAa,GAAG9Y,OAAO,CAAC+Y,KAAK,CAACP,WAAW,CAAC;MAE9C,IAAIjsB,KAAK,KAAKusB,aAAa,EAAE;QAC5B9Y,OAAO,CAAC+Y,KAAK,CAACP,WAAW,CAAC,GAAGjsB,KAAK;MACtC;MAEG,IAAIysB,aAAa,GAAGJ,gBAAgB,CAAC5Y,OAAO,CAAC,CAACiZ,gBAAgB,CAACT,WAAW,CAAC;MAE3E,IAAIjsB,KAAK,KAAKusB,aAAa,EAAE;QAC5B9Y,OAAO,CAAC+Y,KAAK,CAACP,WAAW,CAAC,GAAGM,aAAa;MAC9C;MAEG,IAAIE,aAAa,KAAKzsB,KAAK,EAAE;QAChC;QACI,IAAI;UACH,OAAO0oB,QAAQ,CAAC+D,aAAa,EAAEP,eAAe,CAAC;QACpD,EACI,OAAOtY,CAAC,EAAE;UACTuY,KAAK,GAAGvY,CAAC;QACd;MACA,OACQ;QACR;QACIuY,KAAK,GAAG;UACPQ,OAAO,EAAE;QACd,CAAK;MACL;IACA;EACA;;EAEA;EACC,IAAIxrB,OAAO,CAACyrB,SAAS,EAAE;IACtBzrB,OAAO,CAACyrB,SAAS,CAACT,KAAK,GAAGA,KAAK;EACjC;EAEC,OAAO,IAAI;AACZ;;ACzEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASU,MAAMA,CAAE7sB,KAAK,EAAEmB,OAAO,EAAE;EAC/CnB,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EAEvB,IAAIojB,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACjM,OAAO,EAAEA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEiiB,KAAK,CAAC;EACnD,IAAI/iB,SAAS,GAAGc,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEd,SAAS;EAElC,IAAImjB,MAAM;EACV,IAAI,CAACJ,KAAK,IAAIpjB,KAAK,CAACojB,KAAK,CAACwG,MAAM,CAACxG,KAAK,CAAC,EAAE;IAC1C;IACEI,MAAM,GAAGxjB,KAAK,CAACwjB,MAAM,CAACjW,KAAK,EAAE;EAC/B,OACM;IACJiW,MAAM,GAAGJ,KAAK,CAACvjB,IAAI,CAACG,KAAK,CAAC;EAC5B;EAEC,OAAOK,SAAS,KAAK4O,SAAS,GAAGuU,MAAM,GAAGA,MAAM,CAAC1R,GAAG,CAAC,eAAK;IAAA,OAAI6M,WAAW,CAACmL,KAAK,EAAEzpB,SAAS,CAAC;EAAA,EAAC;AAC7F;;ACxCA;;AAEA;AACA;AACA;AACA;AACA;AACe,SAAS+M,GAAGA,CAAEpN,KAAK,EAAE8sB,IAAI,EAAE;EACzC9sB,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EAEvB,IAAI8sB,IAAI,KAAK,OAAO,EAAE;IAAA;IACrB,uBAAO9sB,KAAK,CAACyO,KAAK,uDAAI,CAAC;EACzB;EAEC,4BAAuBsX,UAAU,CAACgH,YAAY,CAACD,IAAI,EAAE9sB,KAAK,CAACojB,KAAK,CAAC;IAA3DA,KAAK,yBAALA,KAAK;IAAEmI,KAAK,yBAALA,KAAK;EAClB,IAAI/H,MAAM,GAAGqJ,MAAM,CAAC7sB,KAAK,EAAEojB,KAAK,CAAC;EACjC,OAAOI,MAAM,CAAC+H,KAAK,CAAC;AACrB;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASyB,MAAMA,CAAEhtB,KAAK,EAAEojB,KAAK,EAAEI,MAAM,EAAE/U,KAAK,EAAE;EAC5DzO,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EAEvB,IAAIoP,KAAK,CAACmH,OAAO,CAAC6M,KAAK,CAAC,EAAE;IAC3B;IAAA,aAC2B,CAACpjB,KAAK,CAACojB,KAAK,EAAEA,KAAK,EAAEI,MAAM,CAAC;IAApDJ,KAAK;IAAEI,MAAM;IAAE/U,KAAK;EACvB;EAEC2U,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC,CAAC;EAC9BpjB,KAAK,CAACwjB,MAAM,GAAGJ,KAAK,KAAKpjB,KAAK,CAACojB,KAAK,GAAGI,MAAM,CAACjW,KAAK,EAAE,GAAG6V,KAAK,CAACtjB,EAAE,CAACE,KAAK,CAACojB,KAAK,EAAEI,MAAM,CAAC;EAErF,IAAI/U,KAAK,KAAKQ,SAAS,EAAE;IACxBjP,KAAK,CAACyO,KAAK,GAAGA,KAAK;EACrB;EAEC,OAAOzO,KAAK;AACb;;AAEA;AACAgtB,MAAM,CAACC,OAAO,GAAG,OAAO;;AClCxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,GAAGA,CAAEltB,KAAK,EAAE8sB,IAAI,EAAEltB,KAAK,EAAE;EAChDI,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EAEvB,IAAIgP,SAAS,CAAC9Q,MAAM,KAAK,CAAC,IAAIogB,IAAI,CAACtP,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;IAChE;IACE,IAAIqB,MAAM,GAAGrB,SAAS,CAAC,CAAC,CAAC;IACzB,KAAK,IAAIuG,EAAC,IAAIlF,MAAM,EAAE;MACrB6c,GAAG,CAACltB,KAAK,EAAEuV,EAAC,EAAElF,MAAM,CAACkF,EAAC,CAAC,CAAC;IAC3B;EACA,OACM;IACJ,IAAI,OAAO3V,KAAK,KAAK,UAAU,EAAE;MAChCA,KAAK,GAAGA,KAAK,CAACwN,GAAG,CAACpN,KAAK,EAAE8sB,IAAI,CAAC,CAAC;IAClC;IAEE,IAAIA,IAAI,KAAK,OAAO,EAAE;MACrB9sB,KAAK,CAACyO,KAAK,GAAG7O,KAAK;IACtB,OACO;MACJ,6BAAuBmmB,UAAU,CAACgH,YAAY,CAACD,IAAI,EAAE9sB,KAAK,CAACojB,KAAK,CAAC;QAA3DA,KAAK,0BAALA,KAAK;QAAEmI,KAAK,0BAALA,KAAK;MAClB,IAAI/H,MAAM,GAAGqJ,MAAM,CAAC7sB,KAAK,EAAEojB,KAAK,CAAC;MACjCI,MAAM,CAAC+H,KAAK,CAAC,GAAG3rB,KAAK;MACrBotB,MAAM,CAAChtB,KAAK,EAAEojB,KAAK,EAAEI,MAAM,CAAC;IAC/B;EACA;EAEC,OAAOxjB,KAAK;AACb;;AAEA;AACAktB,GAAG,CAACD,OAAO,GAAG,OAAO;ACjDrB,cAAe,IAAIlH,UAAU,CAAC;EAC7BhC,EAAE,EAAE,SAAS;EACbxlB,IAAI,EAAE,SAAS;EACfiO,KAAK,EAAE,KAAK;EACZgT,IAAI,EAAEoM,OAAO;EACb/C,QAAQ,EAAE,wBAAM;IAAA,OAAInE,OAAK,CAACkH,OAAO,CAACpf,KAAK,EAAE,KAAK,EAAEgX,MAAM,CAAC;EAAA;EACvDsF,MAAM,EAAE,sBAAM;IAAA,OAAIpE,OAAK,CAAC,KAAK,EAAEkH,OAAO,CAACpf,KAAK,EAAEgX,MAAM,CAAC;EAAA;AACtD,CAAC,CAAC;;ACPF;AACA,IAAMmF,GAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AACtB,IAAMwE,IAAE,GAAG,EAAE,GAAG,GAAG;AACnB,IAAMC,GAAC,GAAG,KAAK,GAAG,EAAE,CAAC;;AAErB,IAAI5gB,OAAK,GAAG8X,MAAM,CAACC,GAAG;AAEtB,UAAe,IAAIwB,UAAU,CAAC;EAC7BhC,EAAE,EAAE,KAAK;EACTxlB,IAAI,EAAE,KAAK;EACXilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACD0B,CAAC,EAAE;MACFmiB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB,CAAG;IACDpjB,CAAC,EAAE;MACFojB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB;EACA,CAAE;EAEF;EACA;EACA5V,OAACA,OAAK;EAELgT,IAAI,EAAE6N,OAAO;EACd;EACA;EACCxE,QAAQ,oBAAE/D,GAAG,EAAE;IAChB;IACE,IAAI9N,GAAG,GAAG8N,GAAG,CAAChT,GAAG,CAAC,UAAClS,KAAK,EAAEsO,CAAC;MAAA,OAAKtO,KAAK,GAAG4M,OAAK,CAAC0B,CAAC,CAAC;IAAA,EAAC;IACjD,IAAI2F,CAAC,GAAGmD,GAAG,CAAClF,GAAG,CAAC,eAAK;MAAA,OAAKlS,KAAK,GAAG+oB,GAAC,GAAGvpB,IAAI,CAACkZ,IAAI,CAAC1Y,KAAK,CAAC,GAAG,CAACwtB,GAAC,GAAGxtB,KAAK,GAAG,EAAE,IAAI,GAAG;IAAA,CAAC,CAAC;IAEjF,IAAI0tB,CAAC,GAAG,GAAG,GAAGzZ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;IACvB,IAAI5T,CAAC,GAAG,GAAG,IAAI4T,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI7U,CAAC,GAAG,GAAG,IAAI6U,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3B,OAAO,CAACyZ,CAAC,EAAErtB,CAAC,EAAEjB,CAAC,CAAC;EAClB,CAAE;EACF;EACA;EACA;EACC8pB,MAAM,kBAAEyE,GAAG,EAAE;IACd;IACE,0BAAgBA,GAAG;MAAdD,CAAC;MAAErtB,CAAC;MAAEjB,CAAC;IACZ,IAAI6U,CAAC,GAAG,EAAE;IACVA,CAAC,CAAC,CAAC,CAAC,GAAG,CAACyZ,CAAC,GAAG,EAAE,IAAI,GAAG;IACrBzZ,CAAC,CAAC,CAAC,CAAC,GAAG5T,CAAC,GAAG,GAAG,GAAG4T,CAAC,CAAC,CAAC,CAAC;IACrBA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAG7U,CAAC,GAAG,GAAG;;IAEvB;IACA;IACE,IAAIgY,GAAG,GAAG,CACTnD,CAAC,CAAC,CAAC,CAAC,GAAKsZ,IAAE,GAAG/tB,IAAI,CAACmB,GAAG,CAACsT,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAkB,CAAC,GAAG,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAIuZ,GAAC,EACtEG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAInuB,IAAI,CAACmB,GAAG,CAAC,CAACgtB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGH,GAAC,EAC3DvZ,CAAC,CAAC,CAAC,CAAC,GAAKsZ,IAAE,GAAG/tB,IAAI,CAACmB,GAAG,CAACsT,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAkB,CAAC,GAAG,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAIuZ,GAAC,CACtE;;IAEH;IACE,OAAOpW,GAAG,CAAClF,GAAG,CAAC,UAAClS,KAAK,EAAEsO,CAAC;MAAA,OAAKtO,KAAK,GAAG4M,OAAK,CAAC0B,CAAC,CAAC;IAAA,EAAC;EAChD,CAAE;EAEDmY,OAAO,EAAE;IACRpP,GAAG,EAAE;MACJuM,MAAM,EAAE,CACP,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB;IAE7B;EACA;AACA,CAAC,CAAC;;AC3EF;AACA;AACA;AACA;AACA;AACO,SAASgK,SAASA,CAAEC,KAAK,EAAE;EACjC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC9B,OAAOA,KAAK;EACd;EAEC,OAAO,CAAEA,KAAK,GAAG,GAAG,GAAI,GAAG,IAAI,GAAG;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,MAAMA,CAAEC,GAAG,EAAEC,MAAM,EAAE;EACpC,6BAAeA,MAAM;IAAhBC,EAAE;IAAEC,EAAE;EAEX,IAAIC,KAAK,GAAGC,MAAW,CAACH,EAAE,CAAC;EAC3B,IAAII,KAAK,GAAGD,MAAW,CAACF,EAAE,CAAC;EAE3B,IAAIC,KAAK,IAAIE,KAAK,EAAE;IACnB,OAAO,CAACJ,EAAE,EAAEC,EAAE,CAAC;EACjB,OACM,IAAIC,KAAK,EAAE;IACfF,EAAE,GAAGC,EAAE;EACT,OACM,IAAIG,KAAK,EAAE;IACfH,EAAE,GAAGD,EAAE;EACT;EAEC,IAAIF,GAAG,KAAK,KAAK,EAAE;IAClB,OAAOC,MAAM;EACf;EAECC,EAAE,GAAGL,SAAS,CAACK,EAAE,CAAC;EAClBC,EAAE,GAAGN,SAAS,CAACM,EAAE,CAAC;EAElB,IAAII,SAAS,GAAGJ,EAAE,GAAGD,EAAE;EAEvB,IAAIF,GAAG,KAAK,YAAY,EAAE;IACzB,IAAIO,SAAS,GAAG,CAAC,EAAE;MAClBJ,EAAE,IAAI,GAAG;IACZ;EACA,OACM,IAAIH,GAAG,KAAK,YAAY,EAAE;IAC9B,IAAIO,SAAS,GAAG,CAAC,EAAE;MAClBL,EAAE,IAAI,GAAG;IACZ;EACA,OACM,IAAIF,GAAG,KAAK,QAAQ,EAAE;IAC1B,IAAI,CAAC,GAAG,GAAGO,SAAS,IAAIA,SAAS,GAAG,GAAG,EAAE;MACxC,IAAIA,SAAS,GAAG,CAAC,EAAE;QAClBL,EAAE,IAAI,GAAG;MACb,OACQ;QACJC,EAAE,IAAI,GAAG;MACb;IACA;EACA,OACM,IAAIH,GAAG,KAAK,SAAS,EAAE;IAC3B,IAAIO,SAAS,GAAG,GAAG,EAAE;MACpBL,EAAE,IAAI,GAAG;IACZ,OACO,IAAIK,SAAS,GAAG,CAAC,GAAG,EAAE;MAC1BJ,EAAE,IAAI,GAAG;IACZ;EACA;EAEC,OAAO,CAACD,EAAE,EAAEC,EAAE,CAAC;AAChB;ACtEA,UAAe,IAAI/H,UAAU,CAAC;EAC7BhC,EAAE,EAAE,KAAK;EACTxlB,IAAI,EAAE,KAAK;EACXilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDoZ,CAAC,EAAE;MACFyK,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDmQ,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAE+N,GAAG;EACT1E,QAAQ,oBAAE0E,GAAG,EAAE;IAChB;IACE,IAAI,IAAI,CAAC5E,CAAC,KAAK1Z,SAAS,EAAE;MAC5B;MACG,IAAIkT,OAAK,GAAGtV,MAAM,CAAC0W,MAAM,CAAC,IAAI,CAAC/D,IAAI,CAACgE,MAAM,CAAC,CAAC,CAAC,CAAC,CAACpB,QAAQ;MACvD,IAAI+L,MAAM,GAAGhM,OAAK,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,CAAC,CAAC;MAChC,IAAI,CAACwG,CAAC,GAAGwF,MAAM,GAAG,MAAM;IAC3B;;IAEA;IACE,2BAAgBZ,GAAG;MAAdD,CAAC;MAAErtB,CAAC;MAAEjB,CAAC;IACZ,IAAIovB,YAAY,GAAGhvB,IAAI,CAACM,GAAG,CAACO,CAAC,CAAC,GAAG,IAAI,CAAC0oB,CAAC,IAAIvpB,IAAI,CAACM,GAAG,CAACV,CAAC,CAAC,GAAG,IAAI,CAAC2pB,CAAC;IAC/D,IAAIja,CAAC,GAAG0f,YAAY,GAAG,IAAI,GAAGC,SAAc,CAAEjvB,IAAI,CAACmb,KAAK,CAACvb,CAAC,EAAEiB,CAAC,CAAC,GAAG,GAAG,GAAIb,IAAI,CAACob,EAAE,CAAC;IAChF,IAAI8T,CAAC,GAAGF,YAAY,GAAG,CAAC,GAAGhvB,IAAI,CAACK,IAAI,CAACL,UAAC,EAAI,CAAC,aAAGJ,CAAC,EAAI,CAAC,EAAC;IAErD,OAAO,CAACsuB,CAAC,EAAEgB,CAAC,EAAE5f,CAAC,CAAC;EAClB,CAAE;EACDoa,MAAM,kBAAE3R,GAAG,EAAE;IACd;IACE,0BAAgBA,GAAG;MAAdmW,CAAC;MAAEgB,CAAC;MAAE5f,CAAC;IACZ,IAAIzO,CAAC,GAAG,IAAI;MACXjB,CAAC,GAAG,IAAI;IAET,IAAI,CAAC0f,MAAM,CAAChQ,CAAC,CAAC,EAAE;MACf4f,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAG,CAAC,GAAGA,CAAC,CAAC;MAClBruB,CAAC,GAAGquB,CAAC,GAAGlvB,IAAI,CAACqb,GAAG,CAAE/L,CAAC,GAAGtP,IAAI,CAACob,EAAE,GAAI,GAAG,CAAC;MACrCxb,CAAC,GAAGsvB,CAAC,GAAGlvB,IAAI,CAACsb,GAAG,CAAEhM,CAAC,GAAGtP,IAAI,CAACob,EAAE,GAAI,GAAG,CAAC;IACxC;IAEE,OAAO,CAAC8S,CAAC,EAAErtB,CAAC,EAAEjB,CAAC,CAAC;EAClB,CAAE;EAEDqnB,OAAO,EAAE;IACRlP,GAAG,EAAE;MACJqM,MAAM,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,EAAE,oBAAoB;IACtF;EACA;AACA,CAAC,CAAC;;ACzDF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAM+K,OAAO,YAAG,EAAE,EAAI,CAAC;AACvB,IAAMC,GAAC,GAAGpvB,IAAI,CAACob,EAAE;AACjB,IAAMiU,GAAG,GAAG,GAAG,GAAGD,GAAC;AACnB,IAAME,KAAG,GAAGF,GAAC,GAAG,GAAG;AAEnB,SAASG,IAAIA,CAAEpc,CAAC,EAAE;EAClB;;EAEC,IAAM6H,EAAE,GAAG7H,CAAC,GAAGA,CAAC;EAChB,IAAMqc,EAAE,GAAGxU,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG7H,CAAC;EAE3B,OAAOqc,EAAE;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACe,mBAAQC,CAAE7uB,KAAK,EAAE8uB,MAAM,EAAmC;EAAA,iFAAJ,EAAE;IAAAC,mBAA7BC,EAAE;IAAFA,EAAE,0BAAG,CAAC;IAAAC,mBAAEC,EAAE;IAAFA,EAAE,0BAAG,CAAC;IAAAC,mBAAEC,EAAE;IAAFA,EAAE,0BAAG,CAAC;EAGhE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAAA,gBAXmB1G,QAAQ,CAAC,CAAC1oB,KAAK,EAAE8uB,MAAM,CAAC,CAAC;EAAA;EAA1C9uB,KAAK;EAAE8uB,MAAM;EAad,gBAAmB7X,GAAG,CAACpX,IAAI,CAACG,KAAK,CAAC;IAAAqvB;IAA7BC,EAAE;IAAEzB,EAAE;IAAE0B,EAAE;EACf,IAAIC,EAAE,GAAGrY,GAAG,CAACtX,IAAI,CAACoX,GAAG,EAAE,CAACqY,EAAE,EAAEzB,EAAE,EAAE0B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,iBAAmBtY,GAAG,CAACpX,IAAI,CAACivB,MAAM,CAAC;IAAAW;IAA9BC,EAAE;IAAE5B,EAAE;IAAE6B,EAAE;EACf,IAAIC,EAAE,GAAGzY,GAAG,CAACtX,IAAI,CAACoX,GAAG,EAAE,CAACyY,EAAE,EAAE5B,EAAE,EAAE6B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;;EAExC;EACA;EACA;;EAEC,IAAIH,EAAE,GAAG,CAAC,EAAE;IACXA,EAAE,GAAG,CAAC;EACR;EACC,IAAII,EAAE,GAAG,CAAC,EAAE;IACXA,EAAE,GAAG,CAAC;EACR;EAEC,IAAIC,IAAI,GAAG,CAACL,EAAE,GAAGI,EAAE,IAAI,CAAC,CAAC;;EAE1B;EACA;EACC,IAAIE,EAAE,GAAGnB,IAAI,CAACkB,IAAI,CAAC;EAEnB,IAAIE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG3wB,IAAI,CAACK,IAAI,CAACqwB,EAAE,IAAIA,EAAE,GAAGvB,OAAO,CAAC,CAAC,CAAC;;EAEnD;EACA;EACC,IAAIyB,MAAM,GAAG,CAAC,CAAC,GAAGD,CAAC,IAAIlC,EAAE;EACzB,IAAIoC,MAAM,GAAG,CAAC,CAAC,GAAGF,CAAC,IAAIjC,EAAE;;EAE1B;EACC,IAAIoC,MAAM,GAAG9wB,IAAI,CAACK,IAAI,CAACL,eAAM,EAAI,CAAC,aAAGmwB,EAAE,EAAI,CAAC,EAAC;EAC7C,IAAIY,MAAM,GAAG/wB,IAAI,CAACK,IAAI,CAACL,eAAM,EAAI,CAAC,aAAGuwB,EAAE,EAAI,CAAC,EAAC;;EAE9C;EACA;;EAEC,IAAIS,EAAE,GAAGJ,MAAM,KAAK,CAAC,IAAIT,EAAE,KAAK,CAAC,GAAG,CAAC,GAAGnwB,IAAI,CAACmb,KAAK,CAACgV,EAAE,EAAES,MAAM,CAAC;EAC9D,IAAIK,EAAE,GAAGJ,MAAM,KAAK,CAAC,IAAIN,EAAE,KAAK,CAAC,GAAG,CAAC,GAAGvwB,IAAI,CAACmb,KAAK,CAACoV,EAAE,EAAEM,MAAM,CAAC;EAE9D,IAAIG,EAAE,GAAG,CAAC,EAAE;IACXA,EAAE,IAAI,CAAC,GAAG5B,GAAC;EACb;EACC,IAAI6B,EAAE,GAAG,CAAC,EAAE;IACXA,EAAE,IAAI,CAAC,GAAG7B,GAAC;EACb;EAEC4B,EAAE,IAAI3B,GAAG;EACT4B,EAAE,IAAI5B,GAAG;;EAEV;EACC,IAAI6B,EAAE,GAAGZ,EAAE,GAAGJ,EAAE;EAChB,IAAIiB,EAAE,GAAGJ,MAAM,GAAGD,MAAM;;EAEzB;EACC,IAAIM,KAAK,GAAGH,EAAE,GAAGD,EAAE;EACnB,IAAIK,IAAI,GAAGL,EAAE,GAAGC,EAAE;EAClB,IAAIK,IAAI,GAAGtxB,IAAI,CAACM,GAAG,CAAC8wB,KAAK,CAAC;EAC1B,IAAIG,EAAE;EAEN,IAAIT,MAAM,GAAGC,MAAM,KAAK,CAAC,EAAE;IAC1BQ,EAAE,GAAG,CAAC;EACR,OACM,IAAID,IAAI,IAAI,GAAG,EAAE;IACrBC,EAAE,GAAGH,KAAK;EACZ,OACM,IAAIA,KAAK,GAAG,GAAG,EAAE;IACrBG,EAAE,GAAGH,KAAK,GAAG,GAAG;EAClB,OACM,IAAIA,KAAK,GAAG,CAAC,GAAG,EAAE;IACtBG,EAAE,GAAGH,KAAK,GAAG,GAAG;EAClB,OACM;IACJ9J,QAAQ,CAAChF,IAAI,CAAC,8BAA8B,CAAC;EAC/C;;EAEA;EACC,IAAIkP,EAAE,GAAG,CAAC,GAAGxxB,IAAI,CAACK,IAAI,CAAC0wB,MAAM,GAAGD,MAAM,CAAC,GAAG9wB,IAAI,CAACsb,GAAG,CAAEiW,EAAE,GAAGjC,KAAG,GAAI,CAAC,CAAC;;EAEnE;EACC,IAAImC,KAAK,GAAG,CAACvB,EAAE,GAAGI,EAAE,IAAI,CAAC;EACzB,IAAIoB,KAAK,GAAG,CAACZ,MAAM,GAAGC,MAAM,IAAI,CAAC;EACjC,IAAIY,MAAM,GAAGpC,IAAI,CAACmC,KAAK,CAAC;;EAEzB;EACA;EACA;EACC,IAAIE,KAAK;EACT,IAAId,MAAM,GAAGC,MAAM,KAAK,CAAC,EAAE;IAC1Ba,KAAK,GAAGP,IAAI,CAAC;EACf,OACM,IAAIC,IAAI,IAAI,GAAG,EAAE;IACrBM,KAAK,GAAGP,IAAI,GAAG,CAAC;EAClB,OACM,IAAIA,IAAI,GAAG,GAAG,EAAE;IACpBO,KAAK,GAAG,CAACP,IAAI,GAAG,GAAG,IAAI,CAAC;EAC1B,OACM;IACJO,KAAK,GAAG,CAACP,IAAI,GAAG,GAAG,IAAI,CAAC;EAC1B;;EAEA;EACA;;EAEA;EACA;EACC,IAAIQ,GAAG,YAAIJ,KAAK,GAAG,EAAE,EAAK,CAAC;EAC3B,IAAIK,EAAE,GAAG,CAAC,GAAI,KAAK,GAAGD,GAAG,GAAI7xB,IAAI,CAACK,IAAI,CAAC,EAAE,GAAGwxB,GAAG,CAAC;;EAEjD;EACC,IAAIE,EAAE,GAAG,CAAC,GAAG,KAAK,GAAGL,KAAK;;EAE3B;EACC,IAAIM,CAAC,GAAG,CAAC;EACTA,CAAC,IAAI,IAAI,GAAGhyB,IAAI,CAACqb,GAAG,CAAC,CAACuW,KAAK,GAAG,EAAE,IAAItC,KAAG,CAAC;EACxC0C,CAAC,IAAI,IAAI,GAAGhyB,IAAI,CAACqb,GAAG,CAAC,CAAC,GAAGuW,KAAK,GAAGtC,KAAG,CAAC;EACrC0C,CAAC,IAAI,IAAI,GAAGhyB,IAAI,CAACqb,GAAG,CAAC,CAAC,CAAC,GAAGuW,KAAK,GAAG,CAAC,IAAItC,KAAG,CAAC;EAC3C0C,CAAC,IAAI,GAAG,GAAGhyB,IAAI,CAACqb,GAAG,CAAC,CAAC,CAAC,GAAGuW,KAAK,GAAG,EAAE,IAAItC,KAAG,CAAC;;EAE5C;EACA;EACC,IAAI2C,EAAE,GAAG,CAAC,GAAG,KAAK,GAAGP,KAAK,GAAGM,CAAC;;EAE/B;EACA;EACA;EACA;EACC,IAAIE,EAAE,GAAG,EAAE,GAAGlyB,IAAI,CAACqgB,GAAG,CAAC,CAAC,CAAC,YAAI,CAACuR,KAAK,GAAG,GAAG,IAAI,EAAE,EAAK,CAAC,EAAC;EACtD,IAAIO,EAAE,GAAG,CAAC,GAAGnyB,IAAI,CAACK,IAAI,CAACsxB,MAAM,IAAIA,MAAM,GAAGxC,OAAO,CAAC,CAAC;EACnD,IAAIiD,EAAE,GAAG,CAAC,CAAC,GAAGpyB,IAAI,CAACsb,GAAG,CAAC,CAAC,GAAG4W,EAAE,GAAG5C,KAAG,CAAC,GAAG6C,EAAE;;EAE1C;EACC,IAAIE,EAAE,YAAInB,EAAE,IAAItB,EAAE,GAAGkC,EAAE,CAAC,EAAK,CAAC;EAC9BO,EAAE,aAAKlB,EAAE,IAAIrB,EAAE,GAAGiC,EAAE,CAAC,EAAK,CAAC;EAC3BM,EAAE,aAAKb,EAAE,IAAIxB,EAAE,GAAGiC,EAAE,CAAC,EAAK,CAAC;EAC3BI,EAAE,IAAID,EAAE,IAAIjB,EAAE,IAAIrB,EAAE,GAAGiC,EAAE,CAAC,CAAC,IAAIP,EAAE,IAAIxB,EAAE,GAAGiC,EAAE,CAAC,CAAC;EAC9C,OAAOjyB,IAAI,CAACK,IAAI,CAACgyB,EAAE,CAAC;EACrB;AACA;;ACpLA;;AAEA;AACA;AACA;AACA;AACA,IAAMC,YAAU,GAAG,CAClB,CAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,EAC/D,CAAE,kBAAkB,EAAE,kBAAkB,EAAG,kBAAkB,CAAE,EAC/D,CAAE,kBAAkB,EAAE,kBAAkB,EAAG,kBAAkB,CAAE,CAC/D;AACD;AACA;AACA;AACA,IAAMC,YAAU,GAAG,CAClB,CAAG,kBAAkB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAE,EACjE,CAAE,CAAC,kBAAkB,EAAG,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,EACjE,CAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAE,CACjE;AACD;AACA;AACO,IAAMC,UAAU,GAAG,CACzB,CAAE,kBAAkB,EAAG,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,EAChE,CAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAE,EAChE,CAAE,kBAAkB,EAAG,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,CAChE;AACD;AACA;AACA;AACO,IAAMC,UAAU,GAAG,CACzB,CAAE,kBAAkB,EAAG,kBAAkB,EAAG,kBAAkB,CAAE,EAChE,CAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,EAChE,CAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,CAChE;AAED,YAAe,IAAI9L,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACbilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACD0B,CAAC,EAAE;MACFmiB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB,CAAG;IACDpjB,CAAC,EAAE;MACFojB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB;EACA,CAAE;EAEF;EACC5V,KAAK,EAAE,KAAK;EACZgT,IAAI,EAAEoM,OAAO;EACb/C,QAAQ,oBAAE/D,GAAG,EAAE;IAChB;IACE,IAAIgN,GAAG,GAAG9T,gBAAgB,CAAC8G,GAAG,EAAE4M,YAAU,CAAC;;IAE7C;IACEI,GAAG,CAAC,CAAC,CAAC,GAAG1yB,IAAI,CAACkZ,IAAI,CAACwZ,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1BA,GAAG,CAAC,CAAC,CAAC,GAAG1yB,IAAI,CAACkZ,IAAI,CAACwZ,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1BA,GAAG,CAAC,CAAC,CAAC,GAAG1yB,IAAI,CAACkZ,IAAI,CAACwZ,GAAG,CAAC,CAAC,CAAC,CAAC;IAE1B,OAAO9T,gBAAgB,CAAC8T,GAAG,EAAEF,UAAU,EAAEE,GAAG,CAAC;EAC/C,CAAE;EACDhJ,MAAM,kBAAEiJ,KAAK,EAAE;IAChB;IACE,IAAIC,IAAI,GAAGhU,gBAAgB,CAAC+T,KAAK,EAAEF,UAAU,CAAC;;IAEhD;IACEG,IAAI,CAAC,CAAC,CAAC,YAAGA,IAAI,CAAC,CAAC,CAAC,EAAI,CAAC;IACtBA,IAAI,CAAC,CAAC,CAAC,YAAGA,IAAI,CAAC,CAAC,CAAC,EAAI,CAAC;IACtBA,IAAI,CAAC,CAAC,CAAC,YAAGA,IAAI,CAAC,CAAC,CAAC,EAAI,CAAC;IAEtB,OAAOhU,gBAAgB,CAACgU,IAAI,EAAEL,YAAU,EAAEK,IAAI,CAAC;EACjD,CAAE;EAED3L,OAAO,EAAE;IACRnP,KAAK,EAAE;MACNsM,MAAM,EAAE,CACP,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB;IAE7B;EACA;AACA,CAAC,CAAC;;ACvFF;AACA;AACA;AACA;AACA;AACA;AACA;AACe,iBAAQyO,CAAEjyB,KAAK,EAAE8uB,MAAM,EAAE;EAGxC;EACA;EACA;EAAA,iBAJmBpG,QAAQ,CAAC,CAAC1oB,KAAK,EAAE8uB,MAAM,CAAC,CAAC;EAAA;EAA1C9uB,KAAK;EAAE8uB,MAAM;EAKd,kBAAmB5X,KAAK,CAACrX,IAAI,CAACG,KAAK,CAAC;IAAAkyB;IAA/B5C,EAAE;IAAEzB,EAAE;IAAE0B,EAAE;EACf,mBAAmBrY,KAAK,CAACrX,IAAI,CAACivB,MAAM,CAAC;IAAAqD;IAAhCzC,EAAE;IAAE5B,EAAE;IAAE6B,EAAE;EACf,IAAIW,EAAE,GAAGhB,EAAE,GAAGI,EAAE;EAChB,IAAI0C,EAAE,GAAGvE,EAAE,GAAGC,EAAE;EAChB,IAAIuE,EAAE,GAAG9C,EAAE,GAAGI,EAAE;EAChB,OAAOvwB,IAAI,CAACK,IAAI,CAACL,WAAE,EAAI,CAAC,aAAGgzB,EAAE,EAAI,CAAC,aAAGC,EAAE,EAAI,CAAC,EAAC;AAC9C;;ACnBA;;AAEA,IAAM1J,GAAC,GAAG,QAAQ;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASQ,OAAOA,CAAEnpB,KAAK,EAAEojB,KAAK,EAAwB;EAAA,iFAAJ,EAAE;IAAAkP,wBAAlB3I,OAAO;IAAPA,OAAO,+BAAGhB,GAAC;EAC3D3oB,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EAEvB,IAAI,CAACojB,KAAK,EAAE;IACXA,KAAK,GAAGpjB,KAAK,CAACojB,KAAK;EACrB;EAECA,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;EAC7B,IAAII,MAAM,GAAGxjB,KAAK,CAACwjB,MAAM;EAEzB,IAAIJ,KAAK,KAAKpjB,KAAK,CAACojB,KAAK,EAAE;IAC1BI,MAAM,GAAGJ,KAAK,CAACvjB,IAAI,CAACG,KAAK,CAAC;EAC5B;EAEC,OAAOojB,KAAK,CAAC+F,OAAO,CAAC3F,MAAM,EAAE;IAAEmG,OAAO,EAAPA;EAAO,CAAE,CAAC;AAC1C;;AC7BA;;AAEA;AACA;AACA;AACA;AACe,SAAS4I,KAAKA,CAAEvyB,KAAK,EAAE;EACrC,OAAO;IACNojB,KAAK,EAAEpjB,KAAK,CAACojB,KAAK;IAClBI,MAAM,uBAAyBxjB,KAAK,CAACwjB,MAAM,CAACjW,KAAK,EAAG;IACpDkB,KAAK,EAAEzO,KAAK,CAACyO;EACf,CAAE;AACF;;ACTA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS0K,QAAQA,CAAE7D,MAAM,EAAEvB,MAAM,EAAiB;EAAA,IAAfqP,KAAK,uEAAG,KAAK;EAC9DA,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;;EAE9B;EACC,IAAIoP,OAAO,GAAGpP,KAAK,CAACvjB,IAAI,CAACyV,MAAM,CAAC;EAChC,IAAImd,OAAO,GAAGrP,KAAK,CAACvjB,IAAI,CAACkU,MAAM,CAAC;EAEhC,OAAO3U,IAAI,CAACK,IAAI,CACf+yB,OAAO,CAACE,MAAM,CAAC,UAACC,GAAG,EAAEC,EAAE,EAAE1kB,CAAC,EAAK;IAC9B,IAAI2kB,EAAE,GAAGJ,OAAO,CAACvkB,CAAC,CAAC;IACnB,IAAIwQ,MAAM,CAACkU,EAAE,CAAC,IAAIlU,MAAM,CAACmU,EAAE,CAAC,EAAE;MAC7B,OAAOF,GAAG;IACd;IAEG,OAAOA,GAAG,YAAIE,EAAE,GAAGD,EAAE,EAAK,CAAC;EAC9B,CAAG,EAAE,CAAC,CACN,CAAE;AACF;;AC1BA;AACA;AACA;AACA;AACA;AACe,SAASE,QAAQA,CAAE9yB,KAAK,EAAE8uB,MAAM,EAAE;EACjD;EACC,OAAO3V,QAAQ,CAACnZ,KAAK,EAAE8uB,MAAM,EAAE,KAAK,CAAC;AACtC;;ACNA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAMN,CAAC,GAAGpvB,IAAI,CAACob,EAAE;AACjB,IAAMkU,GAAG,GAAGF,CAAC,GAAG,GAAG;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACe,kBAAQuE,CAAE/yB,KAAK,EAAE8uB,MAAM,EAAyB;EAAA,iFAAJ,EAAE;IAAAkE,kBAAnBpkB,CAAC;IAADA,CAAC,yBAAG,CAAC;IAAAqkB,kBAAEtb,CAAC;IAADA,CAAC,yBAAG,CAAC;EAGtD;EACA;EACA;EAEA;EACA;EACA;EAAA,iBARmB+Q,QAAQ,CAAC,CAAC1oB,KAAK,EAAE8uB,MAAM,CAAC,CAAC;EAAA;EAA1C9uB,KAAK;EAAE8uB,MAAM;EAUd,iBAAmB7X,GAAG,CAACpX,IAAI,CAACG,KAAK,CAAC;IAAAkzB;IAA7B5D,EAAE;IAAEzB,EAAE;IAAE0B,EAAE;EACf,gBAAiBpY,GAAG,CAACtX,IAAI,CAACoX,GAAG,EAAE,CAACqY,EAAE,EAAEzB,EAAE,EAAE0B,EAAE,CAAC,CAAC;IAAA4D;IAArC3D,EAAE;IAAE4D,EAAE;EACb,iBAAmBnc,GAAG,CAACpX,IAAI,CAACivB,MAAM,CAAC;IAAAuE;IAA9B3D,EAAE;IAAE5B,EAAE;IAAE6B,EAAE;EACf,IAAIC,EAAE,GAAGzY,GAAG,CAACtX,IAAI,CAACoX,GAAG,EAAE,CAACyY,EAAE,EAAE5B,EAAE,EAAE6B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;;EAExC;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;;EAEC,IAAIH,EAAE,GAAG,CAAC,EAAE;IACXA,EAAE,GAAG,CAAC;EACR;EACC,IAAII,EAAE,GAAG,CAAC,EAAE;IACXA,EAAE,GAAG,CAAC;EACR;;EAEA;;EAEA;EACA;EACC,IAAIU,EAAE,GAAGhB,EAAE,GAAGI,EAAE;EAChB,IAAIa,EAAE,GAAGf,EAAE,GAAGI,EAAE;EAEhB,IAAIwC,EAAE,GAAGvE,EAAE,GAAGC,EAAE;EAChB,IAAIuE,EAAE,GAAG9C,EAAE,GAAGI,EAAE;;EAEjB;;EAEC,IAAI2D,EAAE,GAAGl0B,WAAE,EAAI,CAAC,aAAGizB,EAAE,EAAI,CAAC,aAAG9B,EAAE,EAAI,CAAC;EACrC;EACA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;;EAEA;EACA;;EAEA;EACC,IAAIW,EAAE,GAAG,KAAK,CAAC;EACf,IAAI5B,EAAE,IAAI,EAAE,EAAE;IACf;IACE4B,EAAE,GAAI,QAAQ,GAAG5B,EAAE,IAAK,CAAC,GAAG,OAAO,GAAGA,EAAE,CAAC;EAC3C;;EAEA;EACC,IAAI6B,EAAE,GAAI,MAAM,GAAG3B,EAAE,IAAK,CAAC,GAAG,MAAM,GAAGA,EAAE,CAAC,GAAG,KAAK;;EAEnD;EACC,IAAI4B,CAAC;EACL,IAAI1S,MAAM,CAAC0U,EAAE,CAAC,EAAE;IACfA,EAAE,GAAG,CAAC;EACR;EAEC,IAAIA,EAAE,IAAI,GAAG,IAAIA,EAAE,IAAI,GAAG,EAAE;IAC3BhC,CAAC,GAAG,IAAI,GAAGhyB,IAAI,CAACM,GAAG,CAAC,GAAG,GAAGN,IAAI,CAACqb,GAAG,CAAC,CAAC2Y,EAAE,GAAG,GAAG,IAAI1E,GAAG,CAAC,CAAC;EACvD,OACM;IACJ0C,CAAC,GAAG,IAAI,GAAGhyB,IAAI,CAACM,GAAG,CAAC,GAAG,GAAGN,IAAI,CAACqb,GAAG,CAAC,CAAC2Y,EAAE,GAAG,EAAE,IAAI1E,GAAG,CAAC,CAAC;EACtD;EACA;;EAEA;EACC,IAAI6E,EAAE,GAAGn0B,IAAI,CAACmB,GAAG,CAACivB,EAAE,EAAE,CAAC,CAAC;EACxB,IAAIgE,CAAC,GAAGp0B,IAAI,CAACK,IAAI,CAAC8zB,EAAE,IAAIA,EAAE,GAAG,IAAI,CAAC,CAAC;EACnC,IAAIlC,EAAE,GAAGF,EAAE,IAAIqC,CAAC,GAAGpC,CAAC,GAAG,CAAC,GAAGoC,CAAC,CAAC;;EAE9B;EACC,IAAI/B,EAAE,YAAInB,EAAE,IAAI1hB,CAAC,GAAGsiB,EAAE,CAAC,EAAK,CAAC;EAC7BO,EAAE,aAAKlB,EAAE,IAAI5Y,CAAC,GAAGwZ,EAAE,CAAC,EAAK,CAAC;EAC1BM,EAAE,IAAI6B,EAAE,YAAGjC,EAAE,EAAI,CAAC;EACnB;EACC,OAAOjyB,IAAI,CAACK,IAAI,CAACgyB,EAAE,CAAC;EACrB;AACA;;ACtHA,IAAMgC,IAAE,GAAG,GAAG,CAAC;;AAEf,kBAAe,IAAI1N,UAAU,CAAC;EAC9B;EACA;EACA;EACA;EACChC,EAAE,EAAE,aAAa;EACjBqC,KAAK,EAAE,eAAe;EACtB7nB,IAAI,EAAE,kBAAkB;EACxBilB,MAAM,EAAE;IACPjR,CAAC,EAAE;MACF6P,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;MACrB7jB,IAAI,EAAE;IACT,CAAG;IACDiU,CAAC,EAAE;MACF4P,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;MACpB7jB,IAAI,EAAE;IACT,CAAG;IACDkU,CAAC,EAAE;MACF2P,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;MACtB7jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAEoM,OAAO;EACb/C,QAAQ,oBAAE/D,GAAG,EAAE;IAChB;IACA;IACA;IACE,OAAOA,GAAG,CAAChT,GAAG,CAAC,WAAC;MAAA,OAAI6E,CAAC,GAAG8c,IAAE;IAAA,EAAC;EAC7B,CAAE;EACD3K,MAAM,kBAAE4K,MAAM,EAAE;IACjB;IACE,OAAOA,MAAM,CAAC5hB,GAAG,CAAC,WAAC;MAAA,OAAI6E,CAAC,GAAG8c,IAAE;IAAA,EAAC;EAChC;AACA,CAAC,CAAC;;AClCF;;AAEA,IAAMz0B,GAAC,GAAG,IAAI;AACd,IAAMD,CAAC,GAAG,IAAI;AACd,IAAMsU,GAAC,GAAG,IAAI,YAAG,CAAC,EAAI,EAAE;AACxB,IAAMsgB,MAAI,GAAGv0B,UAAC,EAAI,EAAE,IAAG,IAAI;AAC3B,IAAMwzB,IAAE,GAAG,IAAI,YAAG,CAAC,EAAI,EAAE;AACzB,IAAMC,IAAE,GAAG,IAAI,YAAG,CAAC,EAAI,CAAC;AACxB,IAAMe,IAAE,GAAG,IAAI,YAAG,CAAC,EAAI,CAAC;AACxB,IAAMre,CAAC,GAAI,GAAG,GAAG,IAAI,YAAI,CAAC,EAAI,CAAC;AAC/B,IAAMse,IAAI,GAAGz0B,UAAC,EAAI,CAAC,KAAI,GAAG,GAAG,IAAI,CAAC;AAClC,IAAMugB,CAAC,GAAG,CAAC,IAAI;AACf,IAAMmU,EAAE,GAAG,sBAAsB;;AAEjC;AACA;AACA,IAAMC,WAAW,GAAG,CACnB,CAAG,UAAU,EAAE,QAAQ,EAAG,SAAS,CAAE,EACrC,CAAE,CAAC,SAAS,EAAG,QAAQ,EAAG,SAAS,CAAE,EACrC,CAAE,CAAC,SAAS,EAAG,QAAQ,EAAG,SAAS,CAAE,CACrC;AACD;AACA;AACA;AACA,IAAMC,WAAW,GAAG,CACnB,CAAG,kBAAkB,EAAG,CAAC,kBAAkB,EAAG,iBAAiB,CAAI,EACnE,CAAG,mBAAmB,EAAG,kBAAkB,EAAE,CAAC,mBAAmB,CAAE,EACnE,CAAE,CAAC,mBAAmB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAG,CACnE;AACD;AACA;AACA,IAAMC,WAAW,GAAG,CACnB,CAAG,GAAG,EAAQ,GAAG,EAAQ,CAAC,CAAS,EACnC,CAAG,QAAQ,EAAE,CAAC,QAAQ,EAAG,QAAQ,CAAE,EACnC,CAAG,QAAQ,EAAG,QAAQ,EAAE,CAAC,QAAQ,CAAE,CACnC;AACD;AACA;AACA;AACA,IAAMC,WAAW,GAAG,CACnB,CAAE,CAAC,EAAoB,mBAAmB,EAAI,mBAAmB,CAAE,EACnE,CAAE,CAAC,EAAmB,CAAC,kBAAkB,EAAI,CAAC,oBAAoB,CAAE,EACpE,CAAE,CAAC,EAAmB,CAAC,mBAAmB,EAAG,CAAC,mBAAmB,CAAG,CACpE;AAED,aAAe,IAAInO,UAAU,CAAC;EAC7BhC,EAAE,EAAE,QAAQ;EACZxlB,IAAI,EAAE,QAAQ;EACdilB,MAAM,EAAE;IACP2Q,EAAE,EAAE;MACH/R,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACD61B,EAAE,EAAE;MACHhS,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI;IACzB,CAAG;IACDiS,EAAE,EAAE;MACHjS,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI;IACzB;EACA,CAAE;EAED5C,IAAI,EAAE8U,WAAW;EACjBzL,QAAQ,oBAAE/D,GAAG,EAAE;IAChB;IACA;IACA;IACA;;IAEE,0BAAmBA,GAAG;MAAjByP,EAAE;MAAEC,EAAE;MAAEC,EAAE;;IAEjB;IACE,IAAIC,EAAE,GAAG11B,GAAC,GAAGu1B,EAAE,GAAG,CAACv1B,GAAC,GAAG,CAAC,IAAIy1B,EAAE;IAC9B,IAAIE,EAAE,GAAG51B,CAAC,GAAGy1B,EAAE,GAAG,CAACz1B,CAAC,GAAG,CAAC,IAAIw1B,EAAE;;IAEhC;IACE,IAAIzC,GAAG,GAAG9T,gBAAgB,CAAC,CAAC0W,EAAE,EAAEC,EAAE,EAAEF,EAAE,CAAC,EAAEV,WAAW,CAAC;;IAEvD;IACE,IAAIa,KAAK;IACR9C,GAAG,CAAChgB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MACtB,IAAIyV,GAAG,GAAGjC,IAAE,GAAGC,IAAE,GAAGtT,IAAI,CAACH,GAAG,GAAG,KAAK,EAAE/L,GAAC,CAAC;MACxC,IAAIyhB,KAAK,GAAG,CAAC,GAAGlB,IAAE,GAAGrU,IAAI,CAACH,GAAG,GAAG,KAAK,EAAE/L,GAAC,CAAC;MAEzC,OAAOkM,IAAI,CAACsV,GAAG,GAAGC,KAAK,EAAEvf,CAAC,CAAC;IAC/B,CAAI,CACD;;IAEH;IACE,uBAAmByI,gBAAgB,CAAC4W,KAAK,EAAEX,WAAW,CAAC;MAAAc;MAAlDC,EAAE;MAAEZ,EAAE;MAAEC,EAAE;IACjB;;IAEE,IAAIY,EAAE,GAAI,CAAC,CAAC,GAAGtV,CAAC,IAAIqV,EAAE,IAAK,CAAC,GAAGrV,CAAC,GAAGqV,EAAE,CAAC,GAAGlB,EAAE;IAC3C,OAAO,CAACmB,EAAE,EAAEb,EAAE,EAAEC,EAAE,CAAC;EACrB,CAAE;EACDvL,MAAM,kBAAEoM,MAAM,EAAE;IACf,6BAAmBA,MAAM;MAApBD,EAAE;MAAEb,EAAE;MAAEC,EAAE;IACf,IAAIW,EAAE,GAAG,CAACC,EAAE,GAAGnB,EAAE,KAAK,CAAC,GAAGnU,CAAC,GAAGA,CAAC,IAAIsV,EAAE,GAAGnB,EAAE,CAAC,CAAC;;IAE9C;IACE,IAAIc,KAAK,GAAG5W,gBAAgB,CAAC,CAACgX,EAAE,EAAEZ,EAAE,EAAEC,EAAE,CAAC,EAAEH,WAAW,CAAC;;IAEzD;IACE,IAAIpC,GAAG;IACN8C,KAAK,CAAC9iB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MACxB,IAAIyV,GAAG,GAAGjC,IAAE,GAAGrT,IAAI,CAACH,GAAG,EAAEyU,IAAI,CAAC;MAC9B,IAAIiB,KAAK,GAAGlB,IAAE,GAAGrU,IAAI,CAACH,GAAG,EAAEyU,IAAI,CAAC,GAAGhB,IAAE;MACrC,IAAItgB,CAAC,GAAG,KAAK,GAAGgN,IAAI,CAACsV,GAAG,GAAGC,KAAK,EAAEnB,MAAI,CAAC;MAEvC,OAAOphB,CAAC,CAAC;IACb,CAAI,CACD;;IAEH;IACE,wBAAmByL,gBAAgB,CAAC8T,GAAG,EAAEkC,WAAW,CAAC;MAAAmB;MAAhDT,EAAE;MAAEC,EAAE;MAAEF,EAAE;;IAEjB;IACE,IAAIF,EAAE,GAAG,CAACG,EAAE,GAAG,CAAC11B,GAAC,GAAG,CAAC,IAAIy1B,EAAE,IAAIz1B,GAAC;IAChC,IAAIw1B,EAAE,GAAG,CAACG,EAAE,GAAG,CAAC51B,CAAC,GAAG,CAAC,IAAIw1B,EAAE,IAAIx1B,CAAC;IAChC,OAAO,CAACw1B,EAAE,EAAEC,EAAE,EAAEC,EAAE,CAAC;EACrB,CAAE;EAEDpO,OAAO,EAAE;IACV;IACE+O,MAAM,EAAE;MACP5R,MAAM,EAAE,CACP,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB;IAE7B;EACA;AACA,CAAC,CAAC;ACpIF,aAAe,IAAIuC,UAAU,CAAC;EAC7BhC,EAAE,EAAE,QAAQ;EACZxlB,IAAI,EAAE,QAAQ;EACdilB,MAAM,EAAE;IACP2Q,EAAE,EAAE;MACH/R,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACD82B,EAAE,EAAE;MACHjT,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;MACnB7jB,IAAI,EAAE;IACT,CAAG;IACD+2B,EAAE,EAAE;MACHlT,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAE0V,MAAM;EACZrM,QAAQ,EAAE1R,GAAG,CAAC0R,QAAQ;EACtBC,MAAM,EAAE3R,GAAG,CAAC2R,MAAM;EAElBzC,OAAO,EAAE;IACV;IACEkP,MAAM,EAAE;MACP/R,MAAM,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,EAAE,oBAAoB;IACtF;EACA;AACA,CAAC,CAAC;;AC7BF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,iBAAQgS,CAAEx1B,KAAK,EAAE8uB,MAAM,EAAE;EAGxC;EACA;EACA;EAAA,iBAJmBpG,QAAQ,CAAC,CAAC1oB,KAAK,EAAE8uB,MAAM,CAAC,CAAC;EAAA;EAA1C9uB,KAAK;EAAE8uB,MAAM;EAKd,mBAAsByG,MAAM,CAAC11B,IAAI,CAACG,KAAK,CAAC;IAAAy1B;IAAnCC,GAAG;IAAEC,GAAG;IAAEC,GAAG;EAClB,oBAAsBL,MAAM,CAAC11B,IAAI,CAACivB,MAAM,CAAC;IAAA+G;IAApCC,GAAG;IAAEC,GAAG;IAAEC,GAAG;;EAEnB;EACA;EACC,IAAIC,EAAE,GAAGP,GAAG,GAAGI,GAAG;EAClB,IAAIvF,EAAE,GAAGoF,GAAG,GAAGI,GAAG;;EAEnB;EACC,IAAIrX,MAAM,CAACkX,GAAG,CAAC,IAAIlX,MAAM,CAACsX,GAAG,CAAC,EAAE;IACjC;IACEJ,GAAG,GAAG,CAAC;IACPI,GAAG,GAAG,CAAC;EACT,OACM,IAAItX,MAAM,CAACkX,GAAG,CAAC,EAAE;IACvB;IACEA,GAAG,GAAGI,GAAG;EACX,OACM,IAAItX,MAAM,CAACsX,GAAG,CAAC,EAAE;IACrBA,GAAG,GAAGJ,GAAG;EACX;EAEC,IAAIjF,EAAE,GAAGiF,GAAG,GAAGI,GAAG;EAClB,IAAIpF,EAAE,GAAG,CAAC,GAAGxxB,IAAI,CAACK,IAAI,CAACk2B,GAAG,GAAGI,GAAG,CAAC,GAAG32B,IAAI,CAACsb,GAAG,CAAEiW,EAAE,GAAG,CAAC,IAAKvxB,IAAI,CAACob,EAAE,GAAG,GAAG,CAAC,CAAC;EAExE,OAAOpb,IAAI,CAACK,IAAI,CAACL,WAAE,EAAI,CAAC,aAAGmxB,EAAE,EAAI,CAAC,aAAGK,EAAE,EAAI,CAAC,EAAC;AAC9C;;AC3CA;;AAEA,IAAMgC,IAAE,GAAG,IAAI,GAAG,IAAI;AACtB,IAAMC,IAAE,GAAG,IAAI,GAAG,GAAG;AACrB,IAAMe,IAAE,GAAG,IAAI,GAAG,GAAG;AACrB,IAAMsC,IAAE,GAAG,IAAI,GAAG,KAAK;AACvB,IAAMC,EAAE,GAAG,IAAI,GAAG,EAAE;AACpB,IAAMC,GAAG,GAAG,KAAK,GAAG,IAAI;AACxB,IAAMC,GAAG,GAAG,EAAE,GAAG,IAAI;;AAErB;AACA;AACA;AACA;AACA,IAAM3E,UAAU,GAAG,CAClB,CAAG,kBAAkB,EAAG,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,EACjE,CAAE,CAAC,kBAAkB,EAAG,kBAAkB,EAAG,kBAAkB,CAAE,EACjE,CAAG,kBAAkB,EAAG,kBAAkB,EAAG,kBAAkB,CAAE,CACjE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM4E,UAAU,GAAG,CAClB,CAAG,IAAI,GAAG,IAAI,EAAI,IAAI,GAAG,IAAI,EAAQ,CAAC,CAAO,EAC7C,CAAG,IAAI,GAAG,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,EAAG,IAAI,GAAG,IAAI,CAAE,EAC7C,CAAE,KAAK,GAAG,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,EAAG,CAAC,GAAG,GAAG,IAAI,CAAE,CAC7C;;AAED;AACA;AACA;AACA,IAAMC,UAAU,GAAG,CAClB,CAAE,kBAAkB,EAAG,kBAAkB,EAAG,kBAAkB,CAAE,EAChE,CAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,EAChE,CAAE,kBAAkB,EAAG,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,CAChE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM5E,UAAU,GAAG,CAClB,CAAG,kBAAkB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAE,EACjE,CAAG,kBAAkB,EAAG,kBAAkB,EAAE,CAAC,kBAAkB,CAAE,EACjE,CAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAE,CACjE;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAe,IAAI5L,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACCilB,MAAM,EAAE;IACPtV,CAAC,EAAE;MACFkU,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAAA;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACDi4B,EAAE,EAAE;MACHpU,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;MAAA;MACrB7jB,IAAI,EAAE;IACT,CAAG;IACDk4B,EAAE,EAAE;MACHrU,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;MACrB7jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAE8U,WAAW;EACjBzL,QAAQ,oBAAE/D,GAAG,EAAE;IAChB;IACE,IAAIgN,GAAG,GAAG9T,gBAAgB,CAAC8G,GAAG,EAAE4M,UAAU,CAAC;IAE3C,OAAOgF,UAAU,CAAC5E,GAAG,CAAC;EACxB,CAAE;EACDhJ,MAAM,kBAAE6N,KAAK,EAAE;IACd,IAAI7E,GAAG,GAAG8E,UAAU,CAACD,KAAK,CAAC;IAE3B,OAAO3Y,gBAAgB,CAAC8T,GAAG,EAAEH,UAAU,CAAC;EAC1C,CAAE;EAEDtL,OAAO,EAAE;IACRwQ,KAAK,EAAE;MACNrT,MAAM,EAAE,CACP,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB;IAE7B;EACA;AACA,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,SAASkT,UAAUA,CAAE5E,GAAG,EAAE;EAC1B;EACA;EACC,IAAI8C,KAAK;EACR9C,GAAG,CAAChgB,GAAG,CAAC,UAAUsN,GAAG,EAAE;IACtB,IAAIyV,GAAG,GAAGjC,IAAE,GAAGC,IAAE,YAAIzT,GAAG,GAAG,KAAK,EAAK8W,IAAE;IACvC,IAAIpB,KAAK,GAAG,CAAC,GAAGlB,IAAE,YAAIxU,GAAG,GAAG,KAAK,EAAK8W,IAAE;IAExC,gBAAQrB,GAAG,GAAGC,KAAK,EAAKqB,EAAE;EAC7B,CAAG,CACD;;EAEF;EACC,OAAOnY,gBAAgB,CAAC4W,KAAK,EAAE0B,UAAU,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASM,UAAUA,CAAED,KAAK,EAAE;EAC3B,IAAI/B,KAAK,GAAG5W,gBAAgB,CAAC2Y,KAAK,EAAEJ,UAAU,CAAC;;EAEhD;EACC,IAAIzE,GAAG;EACN8C,KAAK,CAAC9iB,GAAG,CAAC,UAAUsN,GAAG,EAAE;IACxB,IAAIyV,GAAG,GAAGz1B,IAAI,CAACE,GAAG,CAACF,YAAG,EAAIi3B,GAAG,IAAGzD,IAAE,EAAE,CAAC,CAAC;IACtC,IAAIkC,KAAK,GAAGjC,IAAE,GAAGe,IAAE,YAAGxU,GAAG,EAAIiX,GAAG;IAChC,OAAO,KAAK,YAAIxB,GAAG,GAAGC,KAAK,EAAKsB,GAAG;EACtC,CAAG,CACD;EAED,OAAOtE,GAAG;AACX;;ACpKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,kBAAQgF,CAAE92B,KAAK,EAAE8uB,MAAM,EAAE;EAGxC;EACA;EACA;EACA;EAAA,iBALmBpG,QAAQ,CAAC,CAAC1oB,KAAK,EAAE8uB,MAAM,CAAC,CAAC;EAAA;EAA1C9uB,KAAK;EAAE8uB,MAAM;EAOd,kBAAmB+H,KAAK,CAACh3B,IAAI,CAACG,KAAK,CAAC;IAAA+2B;IAA/BC,EAAE;IAAEC,EAAE;IAAEC,EAAE;EACf,mBAAmBL,KAAK,CAACh3B,IAAI,CAACivB,MAAM,CAAC;IAAAqI;IAAhCC,EAAE;IAAEC,EAAE;IAAEC,EAAE;;EAEhB;EACA;EACA;;EAEC,OAAO,GAAG,GAAGl4B,IAAI,CAACK,IAAI,CAACL,SAAC43B,EAAE,GAAGI,EAAE,EAAK,CAAC,IAAG,IAAI,YAAIH,EAAE,GAAGI,EAAE,EAAK,CAAC,aAAIH,EAAE,GAAGI,EAAE,EAAK,CAAC,EAAC;AAChF;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,kBAAQC,CAAEv3B,KAAK,EAAE8uB,MAAM,EAAE;EAGxC;EACA;EACA;EAAA,kBAJmBpG,QAAQ,CAAC,CAAC1oB,KAAK,EAAE8uB,MAAM,CAAC,CAAC;EAAA;EAA1C9uB,KAAK;EAAE8uB,MAAM;EAKd,IAAI0I,OAAO,GAAG,CAAC;EACf,mBAAmBtgB,KAAK,CAACrX,IAAI,CAACG,KAAK,CAAC;IAAAy3B;IAA/BnI,EAAE;IAAEzB,EAAE;IAAE0B,EAAE;EACf,mBAAmBrY,KAAK,CAACrX,IAAI,CAACivB,MAAM,CAAC;IAAA4I;IAAhChI,EAAE;IAAE5B,EAAE;IAAE6B,EAAE;EACf,IAAIW,EAAE,GAAGhB,EAAE,GAAGI,EAAE;EAChB,IAAI0C,EAAE,GAAGoF,OAAO,IAAI3J,EAAE,GAAGC,EAAE,CAAC;EAC5B,IAAIuE,EAAE,GAAGmF,OAAO,IAAIjI,EAAE,GAAGI,EAAE,CAAC;EAC5B,OAAOvwB,IAAI,CAACK,IAAI,CAACL,WAAE,EAAI,CAAC,aAAGgzB,EAAE,EAAI,CAAC,aAAGC,EAAE,EAAI,CAAC,EAAC;AAC9C;;ACxBA;;AAEA;AACA;AACA;AACA;;AAEA,IAAM7lB,OAAK,GAAG8X,MAAM,CAACE,GAAG;AACxB,IAAMmT,WAAW,GAAG,IAAI;AACxB,IAAMC,cAAc,GAAG,CAAC,GAAGD,WAAW;AACtC,IAAME,KAAG,GAAG,CAAC,GAAGz4B,IAAI,CAACob,EAAE;;AAEvB;AACA;AACA,IAAMsd,KAAK,GAAG,CACb,CAAG,QAAQ,EAAG,QAAQ,EAAE,CAAC,QAAQ,CAAE,EACnC,CAAE,CAAC,QAAQ,EAAG,QAAQ,EAAG,QAAQ,CAAE,EACnC,CAAE,CAAC,QAAQ,EAAG,QAAQ,EAAG,QAAQ,CAAE,CACnC;;AAED;AACA,IAAMC,QAAQ,GAAG,CAChB,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,EAC9D,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,oBAAoB,CAAC,EAChE,CAAC,CAAC,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CACjE;;AAED;AACA,IAAM7B,EAAE,GAAG,CACV,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EACrB,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EACvB,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CACxB;AAED,IAAM8B,WAAW,GAAG;EACnBC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;EACvBC,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;EACrBC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AACrB,CAAC;AAED,IAAMC,UAAU,GAAG;EACnB;EACC1pB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;EACxCkF,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC5BykB,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AACpC,CAAC;AAED,IAAMC,OAAO,GAAG,GAAG,GAAGl5B,IAAI,CAACob,EAAE;AAC7B,IAAM+d,SAAO,GAAGn5B,IAAI,CAACob,EAAE,GAAG,GAAG;;AAE7B;AACA;AACA;AACA;AACA;AACO,SAASkK,OAAK8T,CAAEhV,MAAM,EAAEiV,EAAE,EAAE;EAClC,IAAMC,IAAI;EACTlV,MAAM,CAAC1R,GAAG,CAAC,WAAC,EAAI;IACf,IAAMS,CAAC,GAAGgN,IAAI,CAACkZ,EAAE,GAAGr5B,IAAI,CAACM,GAAG,CAACiY,CAAC,CAAC,GAAG,IAAI,EAAEggB,WAAW,CAAC;IACpD,OAAQ,GAAG,GAAGtY,QAAQ,CAAC9M,CAAC,EAAEoF,CAAC,CAAC,IAAKpF,CAAC,GAAG,KAAK,CAAC;EAC9C,CAAG,CACD;EACD,OAAOmmB,IAAI;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,OAAOA,CAAEC,OAAO,EAAEH,EAAE,EAAE;EACrC,IAAMI,QAAQ,GAAI,GAAG,GAAGJ,EAAE,YAAI,KAAK,EAAIb,cAAc;EACrD;IACCgB,OAAO,CAAC9mB,GAAG,CAAC,WAAC,EAAI;MAChB,IAAMgnB,IAAI,GAAG15B,IAAI,CAACM,GAAG,CAACiY,CAAC,CAAC;MACxB,OAAO0H,QAAQ,CAACwZ,QAAQ,GAAGtZ,IAAI,CAACuZ,IAAI,IAAI,GAAG,GAAGA,IAAI,CAAC,EAAElB,cAAc,CAAC,EAAEjgB,CAAC,CAAC;IAC3E,CAAG;EAAA;AAEH;;AAEA;AACA;AACA;AACO,SAASohB,aAAaA,CAAErqB,CAAC,EAAE;EACjC,IAAIsqB,EAAE,GAAGxL,SAAS,CAAC9e,CAAC,CAAC;EACrB,IAAIsqB,EAAE,IAAIZ,UAAU,CAAC1pB,CAAC,CAAC,CAAC,CAAC,EAAE;IAC1BsqB,EAAE,IAAI,GAAG;EACX;EAEC,IAAM9qB,CAAC,GAAG0R,UAAU,CAACwY,UAAU,CAAC1pB,CAAC,EAAEsqB,EAAE,CAAC,GAAG,CAAC;EAC1C,0BAAkBZ,UAAU,CAAC1pB,CAAC,CAACnB,KAAK,CAACW,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC;IAAA+qB;IAAvCvf,EAAE;IAAEwf,GAAG;EACd,0BAAkBd,UAAU,CAACxkB,CAAC,CAACrG,KAAK,CAACW,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC;IAAAirB;IAAvCC,EAAE;IAAEC,GAAG;EACd,IAAMC,EAAE,GAAGlB,UAAU,CAACC,CAAC,CAACnqB,CAAC,CAAC;EAE1B,IAAM2L,CAAC,GAAG,CAACmf,EAAE,GAAGtf,EAAE,IAAI0f,EAAE;EACxB,OAAOE,EAAE,GAAI,GAAG,GAAGzf,CAAC,IAAKA,CAAC,GAAG,CAACqf,GAAG,GAAGF,EAAE,IAAIK,GAAG,CAAC;AAC/C;;AAEA;AACA;AACA;AACO,SAASE,gBAAgBA,CAAElB,CAAC,EAAE;EACpC,IAAImB,EAAE,GAAG,CAAEnB,CAAC,GAAG,GAAG,GAAI,GAAG,IAAI,GAAG;EAChC,IAAMnqB,CAAC,GAAG9O,IAAI,CAACua,KAAK,CAAC,IAAI,GAAG6f,EAAE,CAAC;EAC/BA,EAAE,GAAGA,EAAE,GAAG,GAAG;EACb,2BAAkBpB,UAAU,CAAC1pB,CAAC,CAACnB,KAAK,CAACW,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC;IAAAurB;IAAvC/f,EAAE;IAAEwf,GAAG;EACd,2BAAkBd,UAAU,CAACxkB,CAAC,CAACrG,KAAK,CAACW,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC;IAAAwrB;IAAvCN,EAAE;IAAEC,GAAG;EAEd,OAAO7L,SAAS,CAAC,CAACgM,EAAE,IAAIH,GAAG,GAAG3f,EAAE,GAAG0f,EAAE,GAAGF,GAAG,CAAC,GAAG,GAAG,GAAGxf,EAAE,GAAG2f,GAAG,KAAKG,EAAE,IAAIH,GAAG,GAAGD,EAAE,CAAC,GAAG,GAAG,GAAGC,GAAG,CAAC,CAAC;AAChG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,WAAWA,CAC1BC,QAAQ,EACRC,iBAAiB,EACjBC,mBAAmB,EACnBC,QAAQ,EACRC,WAAW,EACV;EACD,IAAMlZ,GAAG,GAAG,EAAE;EAEdA,GAAG,CAACkZ,WAAW,GAAGA,WAAW;EAC7BlZ,GAAG,CAAC8Y,QAAQ,GAAGA,QAAQ;EACvB9Y,GAAG,CAACiZ,QAAQ,GAAGA,QAAQ;EACvB,IAAME,IAAI;EACTL,QAAQ,CAAC9nB,GAAG,CAAC,WAAC,EAAI;IACjB,OAAO6F,CAAC,GAAG,GAAG;EACjB,CAAG,CACD;;EAEF;EACCmJ,GAAG,CAACoZ,EAAE,GAAGL,iBAAiB;EAC3B;EACC/Y,GAAG,CAACqZ,EAAE,GAAGL,mBAAmB;EAC7B;EACC,IAAMM,EAAE,GAAGH,IAAI,CAAC,CAAC,CAAC;;EAEnB;EACC,IAAMI,IAAI,GAAGrc,gBAAgB,CAACic,IAAI,EAAEnC,KAAK,CAAC;;EAE3C;EACC,IAAIvU,MAAM,GAAGyU,WAAW,CAAClX,GAAG,CAACiZ,QAAQ,CAAC;EACtC,IAAMlmB,CAAC,GAAG0P,MAAM,CAAC,CAAC,CAAC;EACnBzC,GAAG,CAACnJ,CAAC,GAAG4L,MAAM,CAAC,CAAC,CAAC;EACjBzC,GAAG,CAACwZ,EAAE,GAAG/W,MAAM,CAAC,CAAC,CAAC;EAElB,IAAM5K,CAAC,GAAG,CAAC,IAAI,CAAC,GAAGmI,GAAG,CAACoZ,EAAE,GAAG,CAAC,CAAC;EAC9B,IAAMK,EAAE,YAAG5hB,CAAC,EAAI,CAAC;;EAElB;EACCmI,GAAG,CAAC2X,EAAE,GAAG8B,EAAE,GAAGzZ,GAAG,CAACoZ,EAAE,GAAG,GAAG,IAAI,CAAC,GAAGK,EAAE,CAAC,IAAI,CAAC,GAAGA,EAAE,CAAC,GAAGn7B,IAAI,CAACkZ,IAAI,CAAC,CAAC,GAAGwI,GAAG,CAACoZ,EAAE,CAAC;EACxEpZ,GAAG,CAAC0Z,MAAM,YAAG1Z,GAAG,CAAC2X,EAAE,EAAI,IAAI;EAE3B3X,GAAG,CAACzN,CAAC,GAAGyN,GAAG,CAACqZ,EAAE,GAAGC,EAAE;EACnBtZ,GAAG,CAACrO,CAAC,GAAG,IAAI,GAAGrT,IAAI,CAACK,IAAI,CAACqhB,GAAG,CAACzN,CAAC,CAAC;EAC/ByN,GAAG,CAAC2Z,GAAG,GAAG,KAAK,YAAG3Z,GAAG,CAACzN,CAAC,EAAI,CAAC,GAAG;EAC/ByN,GAAG,CAAC4Z,GAAG,GAAG5Z,GAAG,CAAC2Z,GAAG;;EAElB;EACA;EACC,IAAM9a,CAAC,GAEJvgB,IAAI,CAACE,GAAG,CAACF,IAAI,CAACC,GAAG,CAACwU,CAAC,IAAI,CAAC,GAAI,CAAC,GAAG,GAAG,GAAIzU,IAAI,CAACqgB,GAAG,CAAC,CAAC,CAACqB,GAAG,CAACoZ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAChFpZ,GAAG,CAAC6Z,IAAI;EACPN,IAAI,CAACvoB,GAAG,CAAC,WAAC,EAAI;IACb,OAAOiN,WAAW,CAAC,CAAC,EAAEqb,EAAE,GAAGziB,CAAC,EAAEgI,CAAC,CAAC;EACnC,CAAG,CACD;EACDmB,GAAG,CAAC8Z,OAAO;EACV9Z,GAAG,CAAC6Z,IAAI,CAAC7oB,GAAG,CAAC,WAAC,EAAI;IACjB,OAAO,CAAC,GAAG6F,CAAC;EACf,CAAG,CACD;;EAEF;EACC,IAAMkjB,KAAK;EACVR,IAAI,CAACvoB,GAAG,CAAC,UAAC6F,CAAC,EAAEzJ,CAAC,EAAK;IAClB,OAAOyJ,CAAC,GAAGmJ,GAAG,CAAC6Z,IAAI,CAACzsB,CAAC,CAAC;EACzB,CAAG,CACD;EACD,IAAM4sB,KAAK,GAAGpW,OAAK,CAACmW,KAAK,EAAE/Z,GAAG,CAAC2X,EAAE,CAAC;EAClC3X,GAAG,CAACia,EAAE,GAAGja,GAAG,CAAC2Z,GAAG,IAAI,CAAC,GAAGK,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAC;;EAE/D;;EAEC,OAAOha,GAAG;AACX;;AAEA;AACA,IAAMka,mBAAiB,GAAGrB,WAAW,CAACntB,OAAK,EAAG,EAAE,GAAGpN,IAAI,CAACob,EAAE,GAAI,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC;;AAExF;AACA;AACA;AACA;AACA;AACO,SAASygB,SAASA,CAAEC,KAAK,EAAEpa,GAAG,EAAE;EACvC;EACA;EACA;EACC,IAAI,EAAGoa,KAAK,CAACC,CAAC,KAAKlsB,SAAS,GAAKisB,KAAK,CAACE,CAAC,KAAKnsB,SAAU,CAAC,EAAE;IACzD,MAAM,IAAIqB,KAAK,CAAC,kDAAkD,CAAC;EACrE;;EAEA;EACC,IAAI,EAAG4qB,KAAK,CAAC5M,CAAC,KAAKrf,SAAS,GAAKisB,KAAK,CAAClW,CAAC,KAAK/V,SAAU,GAAIisB,KAAK,CAACvsB,CAAC,KAAKM,SAAU,CAAC,EAAE;IACnF,MAAM,IAAIqB,KAAK,CAAC,uDAAuD,CAAC;EAC1E;;EAEA;EACA;EACC,IAAI,EAAG4qB,KAAK,CAACxsB,CAAC,KAAKO,SAAS,GAAKisB,KAAK,CAAC7C,CAAC,KAAKppB,SAAU,CAAC,EAAE;IACzD,MAAM,IAAIqB,KAAK,CAAC,kDAAkD,CAAC;EACrE;;EAEA;EACC,IAAI4qB,KAAK,CAACC,CAAC,KAAK,GAAG,IAAID,KAAK,CAACE,CAAC,KAAK,GAAG,EAAE;IACvC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxB;;EAEA;EACC,IAAIC,IAAI,GAAG,GAAG;EACd,IAAIH,KAAK,CAACxsB,CAAC,KAAKO,SAAS,EAAE;IAC1BosB,IAAI,GAAG7N,SAAS,CAAC0N,KAAK,CAACxsB,CAAC,CAAC,GAAG6pB,SAAO;EACrC,OACM;IACJ8C,IAAI,GAAG9B,gBAAgB,CAAC2B,KAAK,CAAC7C,CAAC,CAAC,GAAGE,SAAO;EAC5C;EAEC,IAAM+C,IAAI,GAAGl8B,IAAI,CAACqb,GAAG,CAAC4gB,IAAI,CAAC;EAC3B,IAAME,IAAI,GAAGn8B,IAAI,CAACsb,GAAG,CAAC2gB,IAAI,CAAC;;EAE5B;EACC,IAAIG,KAAK,GAAG,GAAG;EACf,IAAIN,KAAK,CAACC,CAAC,KAAKlsB,SAAS,EAAE;IAC1BusB,KAAK,GAAGjc,IAAI,CAAC2b,KAAK,CAACC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;EACpC,OACM,IAAID,KAAK,CAACE,CAAC,KAAKnsB,SAAS,EAAE;IAC/BusB,KAAK,GAAI,IAAI,GAAG1a,GAAG,CAACnJ,CAAC,GAAGujB,KAAK,CAACE,CAAC,IAAK,CAACta,GAAG,CAACia,EAAE,GAAG,CAAC,IAAIja,GAAG,CAAC0Z,MAAM,CAAC;EAChE;;EAEA;EACC,IAAI/rB,KAAK,GAAG,GAAG;EACf,IAAIysB,KAAK,CAAC5M,CAAC,KAAKrf,SAAS,EAAE;IAC1BR,KAAK,GAAGysB,KAAK,CAAC5M,CAAC,GAAGkN,KAAK;EACzB,OACM,IAAIN,KAAK,CAAClW,CAAC,KAAK/V,SAAS,EAAE;IAC/BR,KAAK,GAAGysB,KAAK,CAAClW,CAAC,GAAGlE,GAAG,CAAC0Z,MAAM,GAAGgB,KAAK;EACtC,OACM,IAAIN,KAAK,CAACvsB,CAAC,KAAKM,SAAS,EAAE;IAC/BR,KAAK,GAAI,MAAM,YAAGysB,KAAK,CAACvsB,CAAC,EAAI,CAAC,KAAImS,GAAG,CAACia,EAAE,GAAG,CAAC,CAAC,GAAIja,GAAG,CAACnJ,CAAC;EACxD;EACC,IAAMkC,CAAC,GAAG0F,IAAI,CAAC9Q,KAAK,GAAGrP,IAAI,CAACmB,GAAG,CAAC,IAAI,GAAGnB,IAAI,CAACmB,GAAG,CAAC,IAAI,EAAEugB,GAAG,CAACzN,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;;EAE9E;EACC,IAAMooB,EAAE,GAAG,IAAI,IAAIr8B,IAAI,CAACqb,GAAG,CAAC4gB,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;;EAE7C;EACC,IAAMle,CAAC,GAAG2D,GAAG,CAACia,EAAE,GAAGxb,IAAI,CAACic,KAAK,EAAE,CAAC,GAAG1a,GAAG,CAACnJ,CAAC,GAAGmJ,GAAG,CAACrO,CAAC,CAAC;;EAElD;EACC,IAAMipB,EAAE,GAAI,GAAG,GAAG,EAAE,GAAI5a,GAAG,CAACwZ,EAAE,GAAGxZ,GAAG,CAAC4Z,GAAG,GAAGe,EAAE;EAC7C,IAAME,EAAE,GAAGxe,CAAC,GAAG2D,GAAG,CAAC2Z,GAAG;EACtB,IAAM37B,CAAC,GAAG,EAAE,IAAI68B,EAAE,GAAG,KAAK,CAAC,GAAGjc,IAAI,CAAC7F,CAAC,EAAE,EAAE,GAAG6hB,EAAE,GAAG7hB,CAAC,IAAI,EAAE,GAAGyhB,IAAI,GAAG,GAAG,GAAGC,IAAI,CAAC,CAAC;EAC7E,IAAMt7B,CAAC,GAAGnB,CAAC,GAAGw8B,IAAI;EAClB,IAAMt8B,CAAC,GAAGF,CAAC,GAAGy8B,IAAI;;EAEnB;EACC,IAAMK,KAAK,GAAGjD,OAAO,EACtB;;EAEG3a,gBAAgB,CAAC,CAAC2d,EAAE,EAAE17B,CAAC,EAAEjB,CAAC,CAAC,EAAEk3B,EAAE,CAAC,CAACpkB,GAAG,CAAC,WAAC,EAAI;IACzC,OAAQ6F,CAAC,GAAG,CAAC,GAAI,IAAI;EACzB,CAAI,GAEFmJ,GAAG,CAAC2X,EACN,CAAE;EACD;IACCza,gBAAgB,EAClB;IACI4d,KAAK,CAAC9pB,GAAG,CAAC,UAAC6F,CAAC,EAAEzJ,CAAC,EAAK;MACnB,OAAOyJ,CAAC,GAAGmJ,GAAG,CAAC8Z,OAAO,CAAC1sB,CAAC,CAAC;IAC9B,CAAK,GAEF6pB,QACH,CAAG,CAACjmB,GAAG,CAAC,WAAC,EAAI;MACV,OAAO6F,CAAC,GAAG,GAAG;IACjB,CAAG;EAAA;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASkkB,OAAOA,CAAEC,MAAM,EAAEhb,GAAG,EAAE;EACtC;EACC,IAAMib,MAAM;EACXD,MAAM,CAAChqB,GAAG,CAAC,WAAC,EAAI;IACf,OAAO6F,CAAC,GAAG,GAAG;EACjB,CAAG,CACD;EACD,IAAMqkB,IAAI,GAAGtX,OAAK,EACnB;;EAEG1G,gBAAgB,CAAC+d,MAAM,EAAEjE,KAAK,CAAC,CAAChmB,GAAG,CAAC,UAAC6F,CAAC,EAAEzJ,CAAC,EAAK;IAC7C,OAAOyJ,CAAC,GAAGmJ,GAAG,CAAC6Z,IAAI,CAACzsB,CAAC,CAAC;EAC1B,CAAI,GAEF4S,GAAG,CAAC2X,EACN,CAAE;;EAEF;EACC,IAAMx4B,CAAC,GAAG+7B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;EAClD,IAAMh9B,CAAC,GAAG,CAACg9B,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;EAC/C,IAAMX,IAAI,GAAG,CAAEj8B,IAAI,CAACmb,KAAK,CAACvb,CAAC,EAAEiB,CAAC,CAAC,GAAG43B,KAAG,GAAIA,KAAG,IAAIA,KAAG;;EAEpD;EACC,IAAM4D,EAAE,GAAG,IAAI,IAAIr8B,IAAI,CAACqb,GAAG,CAAC4gB,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EAE5C,IAAMxhB,CAAC,GACL,GAAG,GAAG,EAAE,GACTiH,GAAG,CAACwZ,EAAE,GACNxZ,GAAG,CAAC4Z,GAAG,GACPhb,IAAI,CAAC+b,EAAE,GAAGr8B,IAAI,CAACK,IAAI,CAACL,UAAC,EAAI,CAAC,aAAGJ,CAAC,EAAI,CAAC,EAAC,EAAEg9B,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAClF,IAAMvtB,KAAK,GAAG8Q,IAAI,CAAC1F,CAAC,EAAE,GAAG,CAAC,GAAGza,IAAI,CAACmB,GAAG,CAAC,IAAI,GAAGnB,IAAI,CAACmB,GAAG,CAAC,IAAI,EAAEugB,GAAG,CAACzN,CAAC,CAAC,EAAE,IAAI,CAAC;;EAE1E;EACC,IAAM8J,CAAC,GAAG2D,GAAG,CAAC2Z,GAAG,IAAI,CAAC,GAAGuB,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGA,IAAI,CAAC,CAAC,CAAC,CAAC;EAE5D,IAAMR,KAAK,GAAGjc,IAAI,CAACpC,CAAC,GAAG2D,GAAG,CAACia,EAAE,EAAE,GAAG,GAAGja,GAAG,CAACnJ,CAAC,GAAGmJ,GAAG,CAACrO,CAAC,CAAC;;EAEpD;EACC,IAAM0oB,CAAC,GAAG,GAAG,GAAG5b,IAAI,CAACic,KAAK,EAAE,CAAC,CAAC;;EAE/B;EACC,IAAMJ,CAAC,GAAI,CAAC,GAAGta,GAAG,CAACnJ,CAAC,GAAI6jB,KAAK,IAAI1a,GAAG,CAACia,EAAE,GAAG,CAAC,CAAC,GAAGja,GAAG,CAAC0Z,MAAM;;EAE1D;EACC,IAAMlM,CAAC,GAAG7f,KAAK,GAAG+sB,KAAK;;EAExB;EACC,IAAMxW,CAAC,GAAGsJ,CAAC,GAAGxN,GAAG,CAAC0Z,MAAM;;EAEzB;EACC,IAAM9rB,CAAC,GAAG8e,SAAS,CAAC6N,IAAI,GAAG/C,OAAO,CAAC;;EAEpC;EACC,IAAMD,CAAC,GAAGU,aAAa,CAACrqB,CAAC,CAAC;;EAE3B;EACC,IAAMC,CAAC,GAAG,EAAE,GAAG4Q,IAAI,CAAEuB,GAAG,CAACnJ,CAAC,GAAGlJ,KAAK,IAAKqS,GAAG,CAACia,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;;EAE3D;;EAEC,OAAO;IAAEI,CAAC,EAAEA,CAAC;IAAE7M,CAAC,EAAEA,CAAC;IAAE5f,CAAC,EAAEA,CAAC;IAAEC,CAAC,EAAEA,CAAC;IAAEysB,CAAC,EAAEA,CAAC;IAAEpW,CAAC,EAAEA,CAAC;IAAEqT,CAAC,EAAEA;EAAC,CAAE;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAe,IAAItS,UAAU,CAAC;EAC7BhC,EAAE,EAAE,WAAW;EACfqC,KAAK,EAAE,aAAa;EACpB7nB,IAAI,EAAE,WAAW;EACjBilB,MAAM,EAAE;IACPyY,CAAC,EAAE;MACF7Z,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDmY,CAAC,EAAE;MACF0L,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;MACpB7jB,IAAI,EAAE;IACT,CAAG;IACDmQ,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAE0c,OAAO;EAEbrT,QAAQ,oBAAE7R,GAAG,EAAE;IAChB;IACE,IAAI,IAAI,CAAC2R,CAAC,KAAK1Z,SAAS,EAAE;MACzB,IAAI,CAAC0Z,CAAC,GAAG9b,MAAM,CAAC0W,MAAM,CAAC,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACpB,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM;IAC9D;IACE,IAAM8Y,KAAK,GAAGW,OAAO,CAAC7kB,GAAG,EAAEgkB,mBAAiB,CAAC;IAC7C,IAAM5M,YAAY,GAAGhvB,IAAI,CAACM,GAAG,CAACw7B,KAAK,CAAClW,CAAC,CAAC,GAAG,IAAI,CAAC2D,CAAC;IAC/C,OAAO,CAACuS,KAAK,CAACC,CAAC,EAAE/M,YAAY,GAAG,CAAC,GAAG8M,KAAK,CAAClW,CAAC,EAAEoJ,YAAY,GAAG,IAAI,GAAG8M,KAAK,CAACxsB,CAAC,CAAC;EAC7E,CAAE;EACDoa,MAAM,kBAAEoS,KAAK,EAAE;IACd,OAAOD,SAAS,CAAC;MAAEE,CAAC,EAAED,KAAK,CAAC,CAAC,CAAC;MAAElW,CAAC,EAAEkW,KAAK,CAAC,CAAC,CAAC;MAAExsB,CAAC,EAAEwsB,KAAK,CAAC,CAAC;IAAC,CAAE,EAAEF,mBAAiB,CAAC;EAChF;AACA,CAAC,CAAC;ACtZF,IAAMxuB,OAAK,GAAG8X,MAAM,CAACE,GAAG;AACxB,IAAMmE,GAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AACtB,IAAMyE,GAAC,GAAG,KAAK,GAAG,EAAE,CAAC;;AAErB,SAAS+O,OAAOA,CAAE3pB,CAAC,EAAE;EACrB;;EAEC,IAAM4pB,EAAE,GAAG5pB,CAAC,GAAGmW,GAAC,GAAGvpB,IAAI,CAACkZ,IAAI,CAAC9F,CAAC,CAAC,GAAG,CAAC4a,GAAC,GAAG5a,CAAC,GAAG,EAAE,IAAI,GAAG;EACpD,OAAO,KAAK,GAAG4pB,EAAE,GAAG,IAAI;AACzB;AAEA,SAASC,SAASA,CAAEC,KAAK,EAAE;EAC3B;;EAEC,OAAOA,KAAK,GAAG,CAAC,GAAGl9B,IAAI,CAACmB,GAAG,CAAC,CAAC+7B,KAAK,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGA,KAAK,GAAGlP,GAAC;AAC/D;AAEA,SAASmP,OAAOA,CAAE/Y,MAAM,EAAE1C,GAAG,EAAE;EAC/B;EACA;EACA;EACA;EACA;EACA;EACA;;EAEC,6BAAgB0C,MAAM;IAAjB9U,CAAC;IAAEiJ,CAAC;IAAEkC,CAAC;EACZ,IAAI7C,GAAG,GAAG,EAAE;EACZ,IAAIilB,CAAC,GAAG,CAAC;;EAEV;EACC,IAAIpiB,CAAC,KAAK,CAAC,EAAE;IACZ,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxB;;EAEA;EACC,IAAIrH,CAAC,GAAG6pB,SAAS,CAACxiB,CAAC,CAAC;;EAErB;EACA;EACC,IAAIA,CAAC,GAAG,CAAC,EAAE;IACVoiB,CAAC,GAAG,mBAAmB,YAAGpiB,CAAC,EAAI,CAAC,IAAG,iBAAiB,GAAGA,CAAC,GAAG,kBAAkB;EAC/E,OACM;IACJoiB,CAAC,GAAG,oBAAoB,YAAGpiB,CAAC,EAAI,CAAC,IAAG,mBAAmB,GAAGA,CAAC,GAAG,kBAAkB;EAClF;;EAEA;EACA;EACA;EACA;EACA;EACC,IAAM2iB,SAAS,GAAG,KAAK;EACvB,IAAMC,YAAY,GAAG,EAAE;EAEvB,IAAIC,OAAO,GAAG,CAAC;EACf,IAAIC,IAAI,GAAGC,QAAQ;;EAGpB;EACC,OAAOF,OAAO,IAAID,YAAY,EAAE;IAC/BzlB,GAAG,GAAGikB,SAAS,CAAC;MAAEE,CAAC,EAAEc,CAAC;MAAE3N,CAAC,EAAE3W,CAAC;MAAEjJ,CAAC,EAAEA;IAAC,CAAE,EAAEoS,GAAG,CAAC;;IAE5C;IACA;IACE,IAAM/e,KAAK,GAAG3C,IAAI,CAACM,GAAG,CAACsX,GAAG,CAAC,CAAC,CAAC,GAAGxE,CAAC,CAAC;IAClC,IAAIzQ,KAAK,GAAG46B,IAAI,EAAE;MACjB,IAAI56B,KAAK,IAAIy6B,SAAS,EAAE;QACvB,OAAOxlB,GAAG;MACd;MAEG2lB,IAAI,GAAG56B,KAAK;IACf;;IAEA;IACA;IACA;IACA;IACA;IACEk6B,CAAC,GAAGA,CAAC,GAAI,CAACjlB,GAAG,CAAC,CAAC,CAAC,GAAGxE,CAAC,IAAIypB,CAAC,IAAK,CAAC,GAAGjlB,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzC0lB,OAAO,IAAI,CAAC;EACd;;EAEA;EACA;EACC,OAAOzB,SAAS,CAAC;IAAEE,CAAC,EAAEc,CAAC;IAAE3N,CAAC,EAAE3W,CAAC;IAAEjJ,CAAC,EAAEA;EAAC,CAAE,EAAEoS,GAAG,CAAC;AAC5C;AAEA,SAAS+b,KAAKA,CAAE7lB,GAAG,EAAE8J,GAAG,EAAE;EAC1B;;EAEC,IAAMjH,CAAC,GAAGsiB,OAAO,CAACnlB,GAAG,CAAC,CAAC,CAAC,CAAC;EACzB,IAAI6C,CAAC,KAAK,GAAG,EAAE;IACd,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACxB;EACC,IAAMqhB,KAAK,GAAGW,OAAO,CAAC7kB,GAAG,EAAEgkB,iBAAiB,CAAC;EAC7C,OAAO,CAACxN,SAAS,CAAC0N,KAAK,CAACxsB,CAAC,CAAC,EAAEwsB,KAAK,CAAC5M,CAAC,EAAEzU,CAAC,CAAC;AACxC;;AAEA;AACO,IAAMmhB,iBAAiB,GAAGrB,WAAW,CAC3CntB,OAAK,EACJ,GAAG,GAAGpN,IAAI,CAACob,EAAE,GAAI6hB,SAAS,CAAC,IAAI,CAAC,EACjCA,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,EACrB,SAAS,EACT,KACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAe,IAAItW,UAAU,CAAC;EAC7BhC,EAAE,EAAE,KAAK;EACTxlB,IAAI,EAAE,KAAK;EACXilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDoZ,CAAC,EAAE;MACFyK,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDsb,CAAC,EAAE;MACFuI,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAE0c,OAAO;EAEbrT,QAAQ,oBAAE7R,GAAG,EAAE;IACd,IAAI,IAAI,CAAC2R,CAAC,KAAK1Z,SAAS,EAAE;MACzB,IAAI,CAAC0Z,CAAC,GAAG9b,MAAM,CAAC0W,MAAM,CAAC,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACpB,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM;IAC9D;IACE,IAAI0a,GAAG,GAAGD,KAAK,CAAC7lB,GAAsB,CAAC;IACvC,IAAI8lB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAACnU,CAAC,EAAE;MACpBmU,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;MACZA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;IAChB;IACE,OAAOA,GAAG;EACZ,CAAE;EACDhU,MAAM,kBAAEgU,GAAG,EAAE;IACZ,OAAOP,OAAO,CAACO,GAAG,EAAE9B,iBAAiB,CAAC;EACxC,CAAE;EACD3U,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,OAAO;MACXP,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF;EACA;AACA,CAAC,CAAC;AC9JF,IAAM+U,OAAO,GAAGn5B,IAAI,CAACob,EAAE,GAAG,GAAG;AAC7B,IAAMuiB,QAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAAExZ,MAAM,EAAE;EAC/B;EACA;EACA;EACA;EACA;EACC,IAAIA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAClBA,MAAM,GAAGsZ,GAAG,CAACjU,QAAQ,CAACiU,GAAG,CAAChU,MAAM,CAACtF,MAAM,CAAC,CAAC;EAC3C;;EAEA;EACA;EACA;EACC,IAAMwB,CAAC,GACN5lB,IAAI,CAAC69B,GAAG,CAAC79B,IAAI,CAACE,GAAG,CAAC,CAAC,GAAGy9B,QAAQ,CAAC,CAAC,CAAC,GAAGvZ,MAAM,CAAC,CAAC,CAAC,GAAGwX,iBAAiB,CAACR,MAAM,EAAE,GAAG,CAAC,CAAC,GAC/EuC,QAAQ,CAAC,CAAC,CAAC;EACZ,IAAMG,IAAI,GAAG1Z,MAAM,CAAC,CAAC,CAAC,GAAG+U,OAAO;EAChC,IAAMt4B,CAAC,GAAG+kB,CAAC,GAAG5lB,IAAI,CAACqb,GAAG,CAACyiB,IAAI,CAAC;EAC5B,IAAMl+B,CAAC,GAAGgmB,CAAC,GAAG5lB,IAAI,CAACsb,GAAG,CAACwiB,IAAI,CAAC;EAE5B,OAAO,CAAC1Z,MAAM,CAAC,CAAC,CAAC,EAAEvjB,CAAC,EAAEjB,CAAC,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACe,kBAAQm+B,CAAEn9B,KAAK,EAAE8uB,MAAM,EAAE;EAAA,kBACrBpG,QAAQ,CAAC,CAAC1oB,KAAK,EAAE8uB,MAAM,CAAC,CAAC;EAAA;EAA1C9uB,KAAK;EAAE8uB,MAAM;EAEd,oBAAmBkO,YAAY,CAACF,GAAG,CAACj9B,IAAI,CAACG,KAAK,CAAC,CAAC;IAAAo9B;IAA3C9jB,EAAE;IAAEuU,EAAE;IAAE0B,EAAE;EACf,qBAAmByN,YAAY,CAACF,GAAG,CAACj9B,IAAI,CAACivB,MAAM,CAAC,CAAC;IAAAuO;IAA5ChkB,EAAE;IAAEyU,EAAE;IAAE6B,EAAE;;EAEhB;EACA;EACC,OAAOvwB,IAAI,CAACK,IAAI,CAACL,SAACka,EAAE,GAAGD,EAAE,EAAK,CAAC,aAAIwU,EAAE,GAAGC,EAAE,EAAK,CAAC,aAAIyB,EAAE,GAAGI,EAAE,EAAK,CAAC,EAAC;AACnE;;ACrDA;AACA;AACA;AACA;;AAYA,oBAAe;EACdmD,QAAQ,EAARA,QAAQ;EACRC,SAAS,EAATA,SAAS;EACTlE,UAAU,EAAVA,UAAU;EACV2G,QAAQ,EAARA,QAAQ;EACRsB,SAAS,EAATA,SAAS;EACT7E,QAAQ,EAARA,QAAQ;EACRsF,SAAS,EAATA,SAAS;EACT4F,SAAS,EAATA;AACD,CAAC;;AAED;;ACXA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASG,WAAWA,CAAEC,GAAG,EAAE;EAC3B;;EAEC,IAAMC,KAAK,GAAG,CAACD,GAAG,GAAG,CAAC,GAAGn+B,IAAI,CAACua,KAAK,CAACva,IAAI,CAAC0f,KAAK,CAAC1f,IAAI,CAACM,GAAG,CAAC69B,GAAG,CAAC,CAAC,CAAC;EAC/D;EACC,OAAOn+B,IAAI,CAACE,GAAG,CAACiP,UAAU,aAAMivB,KAAK,GAAG,CAAC,CAAE,CAAC,EAAE,IAAI,CAAC;AACpD;AAEA,IAAMC,UAAU,GAAG;EAClBX,GAAG,EAAE;IACJY,MAAM,EAAE,OAAO;IACfH,GAAG,EAAE,CAAC;IACNI,YAAY,EAAE,KAAK;IACnBC,eAAe,EAAE;EACnB,CAAE;EACD,WAAW,EAAE;IACZF,MAAM,EAAE,OAAO;IACfH,GAAG,EAAE,CAAC;IACNI,YAAY,EAAE,KAAK;IACnBC,eAAe,EAAE;MAAEz7B,OAAO,EAAE,OAAO;MAAE9C,GAAG,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAG;EACvD;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASu+B,OAAOA,CAC9B79B,KAAK,EAQJ;EAAA,iFADG,EAAE;IAAA89B,uBALLJ,MAAM;IAANA,MAAM,8BAAGhX,QAAQ,CAACzF,aAAa;IAAA8c,sBAC/B3a,KAAK;IAALA,KAAK,6BAAGnU,SAAS;IAAA+uB,6BACjBL,YAAY;IAAZA,YAAY,oCAAG,EAAE;IAAAM,oBACjBV,GAAG;IAAHA,GAAG,2BAAG,CAAC;IAAAW,+BACPN,eAAe;IAAfA,eAAe,sCAAG3uB,SAAS;EAG5BjP,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EAEvB,IAAIm+B,QAAa,CAACnvB,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;IAChCoU,KAAK,GAAGpU,SAAS,CAAC,CAAC,CAAC;EACtB,OACM,IAAI,CAACoU,KAAK,EAAE;IAChBA,KAAK,GAAGpjB,KAAK,CAACojB,KAAK;EACrB;EAECA,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;;EAE9B;EACA;EACA;EACA;;EAEC,IAAI+F,OAAO,CAACnpB,KAAK,EAAEojB,KAAK,EAAE;IAAEuG,OAAO,EAAE;EAAC,CAAE,CAAC,EAAE;IAC1C,uCAAwC3pB;IAAK;EAC/C;EAEC,IAAIo+B,UAAU;EACd,IAAIV,MAAM,KAAK,KAAK,EAAE;IACrBU,UAAU,GAAGC,UAAU,CAACr+B,KAAK,EAAE;MAAEojB,KAAK,EAALA;IAAK,CAAE,CAAC;EAC3C,OACM;IACJ,IAAIsa,MAAM,KAAK,MAAM,IAAI,CAACvU,OAAO,CAACnpB,KAAK,EAAEojB,KAAK,CAAC,EAAE;MAChD,IAAIvW,MAAM,CAACjP,SAAS,CAAC0gC,cAAc,CAAC5gC,IAAI,CAAC+/B,UAAU,EAAEC,MAAM,CAAC,EAAE;QAAA,yBACXD,UAAU,CAACC,MAAM,CAAC;QAAjEA,MAAM,sBAANA,MAAM;QAAEH,GAAG,sBAAHA,GAAG;QAAEI,YAAY,sBAAZA,YAAY;QAAEC,eAAe,sBAAfA,eAAe;MACjD;;MAEA;MACG,IAAIW,EAAE,GAAG1P,UAAU;MACnB,IAAI8O,YAAY,KAAK,EAAE,EAAE;QACxB,KAAK,IAAIjnB,EAAC,IAAI8nB,aAAa,EAAE;UAC5B,IAAI,QAAQ,GAAGb,YAAY,CAACnwB,WAAW,EAAE,KAAKkJ,EAAC,CAAClJ,WAAW,EAAE,EAAE;YAC9D+wB,EAAE,GAAGC,aAAa,CAAC9nB,EAAC,CAAC;YACrB;UACN;QACA;MACA;MAEG,IAAI6mB,GAAG,KAAK,CAAC,EAAE;QACdA,GAAG,GAAG,KAAK;MACf;MAEG,IAAIkB,OAAO,GAAGZ,OAAO,CAAC/9B,EAAE,CAACE,KAAK,EAAEojB,KAAK,CAAC,EAAE;QAAEsa,MAAM,EAAE,MAAM;QAAEta,KAAK,EAALA;MAAK,CAAE,CAAC;MAClE,IAAImb,EAAE,CAACv+B,KAAK,EAAEy+B,OAAO,CAAC,GAAGlB,GAAG,EAAE;QACjC;QACI,IAAIK,eAAe,IAAI/wB,MAAM,CAACiD,IAAI,CAAC8tB,eAAe,CAAC,CAAC1/B,MAAM,KAAK,CAAC,EAAE;UACjE,IAAIwgC,WAAW,GAAG3Y,UAAU,CAACgH,YAAY,CAAC6Q,eAAe,CAACz7B,OAAO,CAAC;UAClE,IAAIA,OAAO,GAAGiL,GAAG,CAACtN,EAAE,CAACE,KAAK,EAAE0+B,WAAW,CAACtb,KAAK,CAAC,EAAEsb,WAAW,CAAC3a,EAAE,CAAC;UAC/D,IAAIiK,MAAW,CAAC7rB,OAAO,CAAC,EAAE;YACzBA,OAAO,GAAG,CAAC;UACjB;UACK,IAAIA,OAAO,IAAIy7B,eAAe,CAACt+B,GAAG,EAAE;YACnC,OAAOQ,EAAE,CAAC;cAAEsjB,KAAK,EAAE,SAAS;cAAEI,MAAM,EAAEc,MAAM,CAAC,KAAK;YAAC,CAAE,EAAEtkB,KAAK,CAACojB,KAAK,CAAC;UACzE,OACU,IAAIjhB,OAAO,IAAIy7B,eAAe,CAACv+B,GAAG,EAAE;YACxC,OAAOS,EAAE,CAAC;cAAEsjB,KAAK,EAAE,SAAS;cAAEI,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAAC,CAAE,EAAExjB,KAAK,CAACojB,KAAK,CAAC;UACrE;QACA;;QAEA;QACI,IAAIpB,SAAS,GAAG+D,UAAU,CAACgH,YAAY,CAAC2Q,MAAM,CAAC;QAC/C,IAAIiB,QAAQ,GAAG3c,SAAS,CAACoB,KAAK;QAC9B,IAAIkI,OAAO,GAAGtJ,SAAS,CAAC+B,EAAE;QAE1B,IAAI6a,WAAW,GAAG9+B,EAAE,CAACE,KAAK,EAAE2+B,QAAQ,CAAC;QACzC;QACIC,WAAW,CAACpb,MAAM,CAAC3C,OAAO,CAAC,UAAClJ,CAAC,EAAEzJ,CAAC,EAAK;UACpC,IAAI8f,MAAW,CAACrW,CAAC,CAAC,EAAE;YACnBinB,WAAW,CAACpb,MAAM,CAACtV,CAAC,CAAC,GAAG,CAAC;UAC/B;QACA,CAAK,CAAC;QACF,IAAI2wB,MAAM,GAAG7c,SAAS,CAACG,KAAK,IAAIH,SAAS,CAACI,QAAQ;QAClD,IAAI/iB,GAAG,GAAGw/B,MAAM,CAAC,CAAC,CAAC;QACnB,IAAIlW,EAAC,GAAG2U,WAAW,CAACC,GAAG,CAAC;QACxB,IAAIuB,GAAG,GAAGz/B,GAAG;QACb,IAAI0/B,IAAI,GAAG3xB,GAAG,CAACwxB,WAAW,EAAEtT,OAAO,CAAC;QAEpC,OAAOyT,IAAI,GAAGD,GAAG,GAAGnW,EAAC,EAAE;UACtB,IAAI8V,QAAO,GAAGlM,KAAK,CAACqM,WAAW,CAAC;UAChCH,QAAO,GAAGZ,OAAO,CAACY,QAAO,EAAE;YAAErb,KAAK,EAALA,KAAK;YAAEsa,MAAM,EAAE;UAAM,CAAE,CAAC;UACrD,IAAIxc,OAAM,GAAGqd,EAAE,CAACK,WAAW,EAAEH,QAAO,CAAC;UAErC,IAAIvd,OAAM,GAAGqc,GAAG,GAAG5U,EAAC,EAAE;YACrBmW,GAAG,GAAG1xB,GAAG,CAACwxB,WAAW,EAAEtT,OAAO,CAAC;UACrC,OACU;YACJyT,IAAI,GAAG3xB,GAAG,CAACwxB,WAAW,EAAEtT,OAAO,CAAC;UACtC;UAEK4B,GAAG,CAAC0R,WAAW,EAAEtT,OAAO,EAAE,CAACwT,GAAG,GAAGC,IAAI,IAAI,CAAC,CAAC;QAChD;QAEIX,UAAU,GAAGt+B,EAAE,CAAC8+B,WAAW,EAAExb,KAAK,CAAC;MACvC,OACQ;QACJgb,UAAU,GAAGK,OAAO;MACxB;IACA,OACO;MACJL,UAAU,GAAGt+B,EAAE,CAACE,KAAK,EAAEojB,KAAK,CAAC;IAChC;IAEE,IACCsa,MAAM,KAAK,MAAM;IAAA;IACpB;IACG,CAACvU,OAAO,CAACiV,UAAU,EAAEhb,KAAK,EAAE;MAAEuG,OAAO,EAAE;IAAC,CAAE,GACzC;MACD,IAAIkV,OAAM,GAAGhyB,MAAM,CAAC0W,MAAM,CAACH,KAAK,CAACI,MAAM,CAAC,CAAC1R,GAAG,CAAC,WAAC;QAAA,OAAI6F,CAAC,CAACwK,KAAK,IAAI,EAAE;MAAA,EAAC;MAEhEic,UAAU,CAAC5a,MAAM;MAChB4a,UAAU,CAAC5a,MAAM,CAAC1R,GAAG,CAAC,UAAC6F,CAAC,EAAEzJ,CAAC,EAAK;QAC/B,+BAAiB2wB,OAAM,CAAC3wB,CAAC,CAAC;UAArB7O,GAAG;UAAEC,GAAG;QAEb,IAAID,GAAG,KAAK4P,SAAS,EAAE;UACtB0I,CAAC,GAAGvY,IAAI,CAACE,GAAG,CAACD,GAAG,EAAEsY,CAAC,CAAC;QAC1B;QAEK,IAAIrY,GAAG,KAAK2P,SAAS,EAAE;UACtB0I,CAAC,GAAGvY,IAAI,CAACC,GAAG,CAACsY,CAAC,EAAErY,GAAG,CAAC;QAC1B;QAEK,OAAOqY,CAAC;MACb,CAAK,CACD;IACJ;EACA;EAEC,IAAIyL,KAAK,KAAKpjB,KAAK,CAACojB,KAAK,EAAE;IAC1Bgb,UAAU,GAAGt+B,EAAE,CAACs+B,UAAU,EAAEp+B,KAAK,CAACojB,KAAK,CAAC;EAC1C;EAECpjB,KAAK,CAACwjB,MAAM,GAAG4a,UAAU,CAAC5a,MAAM;EAChC,uCAAwCxjB;EAAK;AAC9C;;AAEA;AACA69B,OAAO,CAAC5Q,OAAO,GAAG,OAAO;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA,IAAM+R,MAAM,GAAG;EACdC,KAAK,EAAE;IAAE7b,KAAK,EAAElM,KAAK;IAAEsM,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAAE/U,KAAK,EAAE;EAAC,CAAE;EACpDywB,KAAK,EAAE;IAAE9b,KAAK,EAAElM,KAAK;IAAEsM,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAAE/U,KAAK,EAAE;EAAC;AACnD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4vB,UAAUA,CAAEc,MAAM,EAAkB;EAAA,iFAAJ,EAAE;IAAZ/b,KAAK,UAALA,KAAK;EAC1C,IAAMgc,GAAG,GAAG,IAAI;EAChB,IAAMzW,CAAC,GAAG,MAAM;EAEhBwW,MAAM,GAAGzW,QAAQ,CAACyW,MAAM,CAAC;EAEzB,IAAI,CAAC/b,KAAK,EAAE;IACXA,KAAK,GAAG+b,MAAM,CAAC/b,KAAK;EACtB;EAECA,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;EAC7B,IAAMic,UAAU,GAAGtZ,UAAU,CAAC3Y,GAAG,CAAC,OAAO,CAAC;EAE1C,IAAIgW,KAAK,CAAC8F,WAAW,EAAE;IACtB,OAAOppB,EAAE,CAACq/B,MAAM,EAAE/b,KAAK,CAAC;EAC1B;EAEC,IAAMkc,YAAY,GAAGx/B,EAAE,CAACq/B,MAAM,EAAEE,UAAU,CAAC;EAC3C,IAAI/R,CAAC,GAAGgS,YAAY,CAAC9b,MAAM,CAAC,CAAC,CAAC;;EAE/B;EACC,IAAI8J,CAAC,IAAI,CAAC,EAAE;IACX,IAAM9gB,MAAK,GAAG1M,EAAE,CAACk/B,MAAM,CAACC,KAAK,EAAE7b,KAAK,CAAC;IACrC5W,MAAK,CAACiC,KAAK,GAAG0wB,MAAM,CAAC1wB,KAAK;IAC1B,OAAO3O,EAAE,CAAC0M,MAAK,EAAE4W,KAAK,CAAC;EACzB;EACC,IAAIkK,CAAC,IAAI,CAAC,EAAE;IACX,IAAMvpB,KAAK,GAAGjE,EAAE,CAACk/B,MAAM,CAACE,KAAK,EAAE9b,KAAK,CAAC;IACrCrf,KAAK,CAAC0K,KAAK,GAAG0wB,MAAM,CAAC1wB,KAAK;IAC1B,OAAO3O,EAAE,CAACiE,KAAK,EAAEqf,KAAK,CAAC;EACzB;EAEC,IAAI+F,OAAO,CAACmW,YAAY,EAAElc,KAAK,EAAE;IAAEuG,OAAO,EAAE;EAAC,CAAE,CAAC,EAAE;IACjD,OAAO7pB,EAAE,CAACw/B,YAAY,EAAElc,KAAK,CAAC;EAChC;EAEC,SAASmc,IAAIA,CAAEC,MAAM,EAAE;IACtB,IAAMC,SAAS,GAAG3/B,EAAE,CAAC0/B,MAAM,EAAEpc,KAAK,CAAC;IACnC,IAAME,WAAW,GAAGzW,MAAM,CAAC0W,MAAM,2BAA4BH,KAAK,CAAEI,MAAM,CAAC;IAC3Eic,SAAS,CAACjc,MAAM;IACfic,SAAS,CAACjc,MAAM,CAAC1R,GAAG,CAAC,UAACgY,KAAK,EAAEyB,KAAK,EAAK;MACtC,IAAI,OAAO,IAAIjI,WAAW,CAACiI,KAAK,CAAC,EAAE;QAClC,2CAAmBjI,WAAW,CAACiI,KAAK,CAAC,CAACpJ,KAAK;UAApC9iB,IAAG;UAAEC,KAAG;QACf,OAAOogC,KAAU,CAACrgC,IAAG,EAAEyqB,KAAK,EAAExqB,KAAG,CAAC;MACvC;MACI,OAAOwqB,KAAK;IAChB,CAAI,CACD;IACD,OAAO2V,SAAS;EAClB;EACC,IAAIpgC,GAAG,GAAG,CAAC;EACX,IAAIC,GAAG,GAAGggC,YAAY,CAAC9b,MAAM,CAAC,CAAC,CAAC;EAChC,IAAImc,WAAW,GAAG,IAAI;EACtB,IAAInjB,OAAO,GAAG+V,KAAK,CAAC+M,YAAY,CAAC;EACjC,IAAIb,OAAO,GAAGc,IAAI,CAAC/iB,OAAO,CAAC;EAE3B,IAAIojB,CAAC,GAAG3N,QAAQ,CAACwM,OAAO,EAAEjiB,OAAO,CAAC;EAClC,IAAIojB,CAAC,GAAGR,GAAG,EAAE;IACZ,OAAOX,OAAO;EAChB;EAEC,OAAOn/B,GAAG,GAAGD,GAAG,GAAGspB,CAAC,EAAE;IACrB,IAAMtW,MAAM,GAAG,CAAChT,GAAG,GAAGC,GAAG,IAAI,CAAC;IAC9Bkd,OAAO,CAACgH,MAAM,CAAC,CAAC,CAAC,GAAGnR,MAAM;IAC1B,IAAIstB,WAAW,IAAIxW,OAAO,CAAC3M,OAAO,EAAE4G,KAAK,EAAE;MAAEuG,OAAO,EAAE;IAAC,CAAE,CAAC,EAAE;MAC3DtqB,GAAG,GAAGgT,MAAM;IACf,OACO;MACJosB,OAAO,GAAGc,IAAI,CAAC/iB,OAAO,CAAC;MACvBojB,CAAC,GAAG3N,QAAQ,CAACwM,OAAO,EAAEjiB,OAAO,CAAC;MAC9B,IAAIojB,CAAC,GAAGR,GAAG,EAAE;QACZ,IAAIA,GAAG,GAAGQ,CAAC,GAAGjX,CAAC,EAAE;UAChB;QACL,OACS;UACJgX,WAAW,GAAG,KAAK;UACnBtgC,GAAG,GAAGgT,MAAM;QACjB;MACA,OACQ;QACJ/S,GAAG,GAAG+S,MAAM;MAChB;IACA;EACA;EACC,OAAOosB,OAAO;AACf;;AC/TA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS3+B,EAAEA,CAAEE,KAAK,EAAEojB,KAAK,EAAoB;EAAA,iFAAJ,EAAE;IAAd+F,OAAO,UAAPA,OAAO;EAClDnpB,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EACvBojB,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;EAE7B,IAAII,MAAM,GAAGJ,KAAK,CAACvjB,IAAI,CAACG,KAAK,CAAC;EAC9B,IAAI4d,GAAG,GAAG;IAAEwF,KAAK,EAALA,KAAK;IAAEI,MAAM,EAANA,MAAM;IAAE/U,KAAK,EAAEzO,KAAK,CAACyO;EAAK,CAAE;EAE/C,IAAI0a,OAAO,EAAE;IACZvL,GAAG,GAAGigB,OAAO,CAACjgB,GAAG,EAAEuL,OAAO,KAAK,IAAI,GAAGla,SAAS,GAAGka,OAAO,CAAC;EAC5D;EAEC,OAAOvL,GAAG;AACX;;AAEA;AACA9d,EAAE,CAACmtB,OAAO,GAAG,OAAO;;AC5BpB;;AAWA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACe,SAASnJ,SAASA,CAAE9jB,KAAK,EAAgB;EAAA,IAAdmB,OAAO,uEAAG,EAAE;EACrD,yBAOIA,OAAO,CANVd,SAAS;IAATA,SAAS,mCAAGqmB,QAAQ,CAACrmB,SAAS;IAC9B8iB,MAAM,GAKHhiB,OAAO,CALVgiB,MAAM;IAAA0c,mBAKH1+B,OAAO,CAJZgoB;IAAEA,SAAO,iCAAG,IAAI;IACN2W,WAAW,GAGhB3+B,OAAO,CAHVqiB,MAAM;IACCuc,WAAW,GAEf5+B,OAAO,CAFVsN,KAAK;IACLmY,MAAM,GACHzlB,OAAO,CADVylB,MAAM;EAEP,IAAIhJ,GAAG;EAEP,IAAIoiB,aAAa,iDAAmDtX,QAAQ,CAAC1oB,KAAK,CAAE;EAEpF,IAAI2mB,QAAQ,GAAGxD,MAAM;EACrB,IAAIoC,SAAS,GAAGya,aAAa,CAACza,SAAS;EAEvC,IAAIA,SAAS,IAAI,CAACpC,MAAM,EAAE;IAAA;IACzB,IAAIoC,SAAS,CAACpC,MAAM,CAAC8c,YAAY,EAAE,EAAE;MACpC9c,MAAM,GAAGoC,SAAS,CAACpC,MAAM;MACzBwD,QAAQ,GAAGpB,SAAS,CAACoB,QAAQ;IAChC;IAEE,2BAAW,uDAAXmZ,WAAW,GAAKva,SAAS,CAAC9B,KAAK;IAC/B,2BAAW,uDAAXsc,WAAW,GAAKxa,SAAS,CAACuB,SAAS;IACnC,iBAAM,6CAANF,MAAM,GAAKrB,SAAS,CAACqB,MAAM;EAC7B;EAEC,IAAID,QAAQ,EAAE;IAAA;IACf;IACExD,MAAM,4BAAG6c,aAAa,CAAC5c,KAAK,CAACkE,SAAS,CAACnE,MAAM,CAAC,yEAAI4C,UAAU,CAACC,UAAU,CAACW,QAAQ,CAAC;EACnF;EAEC,IAAI,CAACxD,MAAM,EAAE;IAAA;IACd;IACEA,MAAM,6BAAG6c,aAAa,CAAC5c,KAAK,CAACkE,SAAS,CAAC,SAAS,CAAC,2EAAIvB,UAAU,CAACma,cAAc;IAC9EvZ,QAAQ,GAAGxD,MAAM,CAAC5kB,IAAI;EACxB;EAEC,IAAI4kB,MAAM,IAAIA,MAAM,CAACC,KAAK,IAAID,MAAM,CAACC,KAAK,KAAK4c,aAAa,CAAC5c,KAAK,EAAE;IACrE;IACA;IACE4c,aAAa,GAAGlgC,EAAE,CAACkgC,aAAa,EAAE7c,MAAM,CAACC,KAAK,CAAC;EACjD;;EAEA;EACA;EACA;;EAEC,IAAII,MAAM,GAAGwc,aAAa,CAACxc,MAAM,CAACjW,KAAK,EAAE,CAAC;;EAE1C4b,SAAO,KAAPA,SAAO,GAAKhG,MAAM,CAAC0a,OAAO;EAE1B,IAAI1U,SAAO,IAAI,CAACgX,OAAY,CAACH,aAAa,CAAC,EAAE;IAC9C;IACExc,MAAM,GAAGqa,OAAO,CAACtL,KAAK,CAACyN,aAAa,CAAC,EAAE7W,SAAO,KAAK,IAAI,GAAGla,SAAS,GAAGka,SAAO,CAAC,CAAC3F,MAAM;EACvF;EAEC,IAAIL,MAAM,CAAC7E,IAAI,KAAK,QAAQ,EAAE;IAC7B,IAAI6E,MAAM,CAACW,SAAS,EAAE;MACrBlG,GAAG,GAAGuF,MAAM,CAACW,SAAS,CAACN,MAAM,EAAEwc,aAAa,CAACvxB,KAAK,EAAEtN,OAAO,CAAC;IAC/D,OACO;MACJ,MAAM,IAAIohB,SAAS,kBACRoE,QAAQ,6DACtB,CAAI;IACJ;EACA,OACM;IAAA;IACN;IACE,IAAIpoB,IAAI,GAAG4kB,MAAM,CAAC5kB,IAAI,IAAI,OAAO;IAEjC,IAAIN,IAAI,GAAGklB,MAAM,CAACid,eAAe,CAAC5c,MAAM,EAAEnjB,SAAS,EAAEy/B,WAAW,CAAC;IAEjE,IAAIvhC,IAAI,KAAK,OAAO,EAAE;MAAA;MACxB;MACG,IAAI6nB,KAAK,GACRjD,MAAM,CAACY,EAAE,oBAAIZ,MAAM,CAAC2C,GAAG,gDAAVua,YAAa,CAAC,CAAC,KAAIL,aAAa,CAAC5c,KAAK,CAACgD,KAAK,IAAI4Z,aAAa,CAAC5c,KAAK,CAACW,EAAE;MACpF9lB,IAAI,CAAC4e,OAAO,CAACuJ,KAAK,CAAC;IACtB;;IAEA;IACA;IACE,IAAI3X,KAAK,GAAGuxB,aAAa,CAACvxB,KAAK;IAE/B,IAAIsxB,WAAW,KAAK9wB,SAAS,IAAI,EAAEoG,QAAO0qB,WAAW,MAAK,QAAQ,CAAC,EAAE;MACpEA,WAAW,GACV,OAAOA,WAAW,KAAK,QAAQ,GAAG;QAAEzhB,IAAI,EAAEyhB;MAAW,CAAE,GAAG;QAAEO,OAAO,EAAEP;MAAW,CAAE;IACtF;IAEE,IAAIjZ,SAAS,yCAAGiZ,WAAW,kDAAXQ,cAAajiB,IAAI,iEAAI,UAAU;IAC/C,IAAIkiB,cAAc,GACjB,6BAAW,kDAAXC,cAAaH,OAAO,MAAK,IAAI,IAC7Bnd,MAAM,CAAC1U,KAAK,KAAK,IAAI,IACpB,6BAAW,kDAAXiyB,cAAaJ,OAAO,MAAK,KAAK,IAAInd,MAAM,CAAC1U,KAAK,KAAK,KAAK,IAAIA,KAAK,GAAG,CAAE;IACxE,IAAIkyB,QAAQ,GAAG,EAAE;IAEjB,kBAAM,+CAAN/Z,MAAM,GAAKzD,MAAM,CAACyD,MAAM;IAExB,IAAI4Z,cAAc,EAAE;MACnB,IAAIngC,SAAS,KAAK,IAAI,EAAE;QACvB,IAAIoe,IAAI;QAER,IAAIqI,SAAS,KAAK,cAAc,EAAE;UACjCrI,IAAI,GAAG,GAAG;UACVhQ,KAAK,IAAI,GAAG;QACjB;QAEIA,KAAK,GAAGmyB,eAAoB,CAACnyB,KAAK,EAAE;UAAEpO,SAAS,EAATA,SAAS;UAAEoe,IAAI,EAAJA;QAAI,CAAE,CAAC;MAC5D;MAEGkiB,QAAQ,aAAM/Z,MAAM,GAAG,GAAG,GAAG,IAAI,cAAInY,KAAK,CAAE;IAC/C;IAEEmP,GAAG,aAAMrf,IAAI,cAAIN,IAAI,CAACiS,IAAI,CAAC0W,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,SAAG+Z,QAAQ,MAAG;EAC/D;EAEC,OAAO/iB,GAAG;AACX;;ACzIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMiO,SAAO,GAAG,CACf,CAAE,kBAAkB,EAAE,mBAAmB,EAAG,kBAAkB,CAAG,EACjE,CAAE,kBAAkB,EAAE,kBAAkB,EAAI,mBAAmB,CAAE,EACjE,CAAE,iBAAiB,EAAG,oBAAoB,EAAE,iBAAiB,CAAI,CACjE;;AAED;AACA;AACA;AACA,IAAMC,WAAS,GAAG,CACjB,CAAG,iBAAiB,EAAG,CAAC,iBAAiB,EAAE,CAAC,iBAAiB,CAAG,EAChE,CAAE,CAAC,iBAAiB,EAAI,iBAAiB,EAAG,kBAAkB,CAAE,EAChE,CAAG,iBAAiB,EAAG,CAAC,iBAAiB,EAAG,iBAAiB,CAAG,CAChE;AAED,sBAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,gBAAgB;EACpBqC,KAAK,EAAE,kBAAkB;EACzB7nB,IAAI,EAAE,iBAAiB;EACvBiO,KAAK,EAAE,KAAK;EACbqf,SAACA,SAAO;EACRC,WAACA;AACD,CAAC,CAAC;;AC9BF;;AAEA,cAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,SAAS;EACbxlB,IAAI,EAAE,UAAU;EAChBihB,IAAI,EAAEqhB,eAAa;EACpB;EACA;EACA;EACC/X,MAAM,kBAAEgY,GAAG,EAAE;IACZ,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAIE,IAAI,GAAGF,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3B,IAAI1f,GAAG,GAAG0f,GAAG,GAAGE,IAAI;MACpB,OAAOA,IAAI,GAAGlgB,IAAI,CAACmB,GAAG,CAACb,GAAG,EAAE,GAAG,CAAC;IACnC,CAAG,CAAC;EACJ,CAAE;EACDmpB,QAAQ,oBAAEiY,GAAG,EAAE;IACd,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAIE,IAAI,GAAGF,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3B,IAAI1f,GAAG,GAAG0f,GAAG,GAAGE,IAAI;MACpB,OAAOA,IAAI,GAAGlgB,IAAI,CAACmB,GAAG,CAACb,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IACvC,CAAG,CAAC;EACJ;AACA,CAAC,CAAC;;ACvBF;;AAEA;AACA;AACA,IAAMmsB,SAAO,GAAG,CACf,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAC7D,CAAC,kBAAkB,EAAE,kBAAkB,EAAG,iBAAiB,CAAC,EAC5D,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAC5D;;AAED;AACA;AACA,IAAMC,WAAS,GAAG,CACjB,CAAE,iBAAiB,EAAI,CAAC,kBAAkB,EAAE,CAAC,mBAAmB,CAAC,EACjE,CAAC,CAAC,kBAAkB,EAAI,kBAAkB,EAAG,oBAAoB,CAAC,EAClE,CAAE,mBAAmB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAChE;AAED,eAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,WAAW;EACfqC,KAAK,EAAE,mBAAmB;EAC1B7nB,IAAI,EAAE,WAAW;EACjBiO,KAAK,EAAE,KAAK;EACbqf,SAACA,SAAO;EACRC,WAACA;AACD,CAAC,CAAC;;ACzBF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAMD,SAAO,GAAG,CACf,CAAE,mBAAmB,EAAE,iBAAiB,EAAI,kBAAkB,CAAG,EACjE,CAAE,mBAAmB,EAAE,iBAAiB,EAAI,mBAAmB,CAAE,EACjE,CAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,CAAG,CACjE;;AAED;AACA;AACA;AACA;AACO,IAAMC,WAAS,GAAG,CACxB,CAAG,kBAAkB,EAAG,CAAC,iBAAiB,EAAI,CAAC,kBAAkB,CAAG,EACpE,CAAE,CAAC,kBAAkB,EAAI,kBAAkB,EAAI,mBAAmB,CAAE,EACpE,CAAG,mBAAmB,EAAE,CAAC,mBAAmB,EAAG,kBAAkB,CAAG,CACpE;AAED,iBAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,aAAa;EACjBxlB,IAAI,EAAE,aAAa;EACnBiO,KAAK,EAAE,KAAK;EACbqf,SAACA,SAAO;EACRC,WAACA;AACD,CAAC,CAAC;;ACnCF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;EACdtoB,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EACpCC,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/CC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACfC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACrCC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACxBC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACxCC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACjCC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAChBC,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACzCC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACfC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EACtCC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7BC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC3CC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC/BC,cAAc,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACjDC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACnCC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EACxCC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACfC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3BC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACnCC,aAAa,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC/CC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EAC5BC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,WAAW,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACtCC,cAAc,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC/CC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EAC7BC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAC1BC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC7CC,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/CC,aAAa,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC9CC,aAAa,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC7CC,aAAa,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC7CC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACxCC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACrCC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAClCC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EAC9BC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC1CC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC1CC,UAAU,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EACpCC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC1CC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACtCC,WAAW,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC5CC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAClBC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EACrCC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EACvBC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC3CC,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACvCC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EACxBC,WAAW,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC;EACrCC,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACvCC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACnCC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAClCC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC1CC,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EAChCC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACxBC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACxCC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACxCC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EACpCC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACvCC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC7CC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EAC5BC,oBAAoB,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACvDC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC7CC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACpCC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACtCC,aAAa,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/CC,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/CC,cAAc,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACjDC,cAAc,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACjDC,cAAc,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACjDC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EAC9BC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACfC,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC1CC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACxCC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAClBC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;EACzBC,gBAAgB,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACnDC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EAC7BC,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC9CC,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/CC,cAAc,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAChDC,eAAe,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAClDC,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,eAAe,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACjDC,eAAe,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACjDC,YAAY,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC7CC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACpCC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACpCC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACnCC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACtCC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACvBC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC1CC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EAChCC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC3CC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;EACzBC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;EAC3BC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACzCC,aAAa,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAChDC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,aAAa,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAChDC,aAAa,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAChDC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACrCC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACpCC,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EACtCC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/BC,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACvCC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC7CC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EACjCC,aAAa,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/CC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACdC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,WAAW,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC5CC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACzCC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC5CC,QAAQ,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EACzCC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACnCC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EACvCC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACzCC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC1CC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC5CC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/BC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;EAC9BC,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACtCC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC/BC,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC1CC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC;EAC/BC,SAAS,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC3CC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACzCC,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EACxCC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAChBC,UAAU,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;EAC7CC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACjBC,WAAW,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG;AAC7C,CAAC;;AC3JD;;AAEA,IAAIo0B,YAAY,GAAG3xB,KAAK,CAAC,CAAC,CAAC,CAAC4xB,IAAI,CAAC,iCAAiC,CAAC;AACnE,IAAIC,kBAAkB,GAAG7xB,KAAK,CAAC,CAAC,CAAC,CAAC4xB,IAAI,CAAC,kBAAkB,CAAC;AAE1D,WAAe,IAAItV,aAAa,CAAC;EAChC3H,EAAE,EAAE,MAAM;EACVxlB,IAAI,EAAE,MAAM;EACZihB,IAAI,EAAE0hB,UAAU;EAChBrY,QAAQ,EAAE,qBAAG,EAAI;IAClB;IACA;IACA;IACE,OAAOjnB,GAAG,CAACkQ,GAAG,CAAC,aAAG,EAAI;MACrB,IAAIwN,IAAI,GAAGF,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3B,IAAI1f,GAAG,GAAG0f,GAAG,GAAGE,IAAI;MAEpB,IAAI5f,GAAG,GAAG,SAAS,EAAE;QACpB,OAAO4f,IAAI,IAAI,KAAK,YAAG5f,GAAG,EAAK,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;MACpD;MAEG,OAAO,KAAK,GAAG0f,GAAG;IACrB,CAAG,CAAC;EACJ,CAAE;EACD0J,MAAM,EAAE,mBAAG,EAAI;IAChB;IACA;IACA;IACE,OAAOlnB,GAAG,CAACkQ,GAAG,CAAC,aAAG,EAAI;MACrB,IAAIwN,IAAI,GAAGF,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3B,IAAI1f,GAAG,GAAG0f,GAAG,GAAGE,IAAI;MAEpB,IAAI5f,GAAG,IAAI,OAAO,EAAE;QACnB,OAAO0f,GAAG,GAAG,KAAK;MACtB;MAEG,OAAOE,IAAI,YAAI,CAAC5f,GAAG,GAAG,KAAK,IAAI,KAAK,EAAK,GAAG;IAC/C,CAAG,CAAC;EACJ,CAAE;EACD2mB,OAAO,EAAE;IACRzkB,GAAG,EAAE;MACJ4hB,MAAM,EAAEud;IACX,CAAG;IACDI,UAAU,EAAE;MACX5iC,IAAI,EAAE,KAAK;MACXqoB,MAAM,EAAE,IAAI;MACZpD,MAAM,EAAEyd,kBAAkB;MAC1BxyB,KAAK,EAAE;IACV,CAAG;IACDzO,KAAK,EAAE;MACT;IAAA,CACG;IACD8N,IAAI,EAAE;MACL0V,MAAM,EAAEud,YAAY;MACpBna,MAAM,EAAE,IAAI;MACZnY,KAAK,EAAE;IACV,CAAG;IACD2yB,WAAW,EAAE;MACZ7iC,IAAI,EAAE,MAAM;MACZqoB,MAAM,EAAE,IAAI;MACZpD,MAAM,EAAEyd;IACX,CAAG;IACDpzB,GAAG,EAAE;MACJyQ,IAAI,EAAE,QAAQ;MACduf,OAAO,EAAE,IAAI;MACbzW,IAAI,EAAE,iBAAG;QAAA,OAAI,wCAAwC,CAACA,IAAI,CAAC/I,GAAG,CAAC;MAAA;MAC/D4G,KAAK,iBAAE5G,GAAG,EAAE;QACX,IAAIA,GAAG,CAACngB,MAAM,IAAI,CAAC,EAAE;UACzB;UACKmgB,GAAG,GAAGA,GAAG,CAACoI,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QAC5C;;QAEA;QACI,IAAI3Y,IAAI,GAAG,EAAE;QACjB;QACIuQ,GAAG,CAACoI,OAAO,CAAC,eAAe,EAAE,mBAAS,EAAI;UACzC3Y,IAAI,CAACmD,IAAI,CAAC3C,QAAQ,CAAC+yB,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;QAC7C,CAAK,CAAC;QAEF,OAAO;UACNpa,OAAO,EAAE,MAAM;UACfzD,MAAM,uBAAyB1V,IAAI,CAACP,KAAK,CAAC,CAAC,EAAE,CAAC,CAAE;UAChDkB,KAAK,uBAAyBX,IAAI,CAACP,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAK;MACL,CAAI;MACDuW,SAAS,EAAE,mBACVN,MAAM,EACN/U,KAAK,EAKD;QAAA,iFADA,EAAE;UAAA6yB,yBAFLC,QAAQ;UAARA,QAAQ,gCAAG,IAAI;UACRxB,WAAW,UAAlBtxB,KAAK;QAGN,IAAKsxB,WAAW,KAAK,KAAK,IAAItxB,KAAK,GAAG,CAAC,IAAKsxB,WAAW,KAAK,IAAI,EAAE;UACjEvc,MAAM,CAACvS,IAAI,CAACxC,KAAK,CAAC;QACvB;QAEI+U,MAAM;QACLA,MAAM,CAAC1R,GAAG,CAAC,WAAC;UAAA,OAAI1S,IAAI,CAACoB,KAAK,CAACmX,CAAC,GAAG,GAAG,CAAC;QAAA,EACnC;QAED,IAAI6pB,WAAW,GAAGD,QAAQ,IAAI/d,MAAM,CAACqG,KAAK,CAAC,WAAC;UAAA,OAAIlS,CAAC,GAAG,EAAE,KAAK,CAAC;QAAA,EAAC;QAE7D,IAAI9J,GAAG,GAAG2V,OACR1R,GAAG,CAAC,WAAC,EAAI;UACT,IAAI0vB,WAAW,EAAE;YAChB,OAAO,CAAC7pB,CAAC,GAAG,EAAE,EAAEnI,QAAQ,CAAC,EAAE,CAAC;UACnC;UAEM,OAAOmI,CAAC,CAACnI,QAAQ,CAAC,EAAE,CAAC,CAACiyB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5C,CAAM,EACAvxB,IAAI,CAAC,EAAE,CAAC;QAEV,OAAO,GAAG,GAAGrC,GAAG;MACpB;IACA,CAAG;IACDG,OAAO,EAAE;MACRsQ,IAAI,EAAE,QAAQ;MACd8I,IAAI,EAAE,iBAAG;QAAA,OAAI,WAAW,CAACA,IAAI,CAAC/I,GAAG,CAAC;MAAA;MAClC4G,KAAK,iBAAE5G,GAAG,EAAE;QACXA,GAAG,GAAGA,GAAG,CAAC7Q,WAAW,EAAE;QACvB,IAAIoQ,GAAG,GAAG;UAAEqJ,OAAO,EAAE,MAAM;UAAEzD,MAAM,EAAE,IAAI;UAAE/U,KAAK,EAAE;QAAC,CAAE;QAErD,IAAI4P,GAAG,KAAK,aAAa,EAAE;UAC1BT,GAAG,CAAC4F,MAAM,GAAGke,QAAQ,CAAC39B,KAAK;UAC3B6Z,GAAG,CAACnP,KAAK,GAAG,CAAC;QAClB,OACS;UACJmP,GAAG,CAAC4F,MAAM,GAAGke,QAAQ,CAACrjB,GAAG,CAAC;QAC/B;QAEI,IAAIT,GAAG,CAAC4F,MAAM,EAAE;UACf,OAAO5F,GAAG;QACf;MACA;IACA;EACA;AACA,CAAC,CAAC;ACzIF,SAAe,IAAI8N,aAAa,CAAC;EAChC3H,EAAE,EAAE,IAAI;EACRqC,KAAK,EAAE,YAAY;EACnB7nB,IAAI,EAAE,IAAI;EACVihB,IAAI,EAAEmiB,QAAQ;EACf;EACC9Y,QAAQ,EAAE+Y,IAAI,CAAC/Y,QAAQ;EACvBC,MAAM,EAAE8Y,IAAI,CAAC9Y;AACd,CAAC,CAAC;;ACDF;AACA;;AAEA;AACA;;AAEA;AACApC,QAAQ,CAACmb,aAAa,GAAGD,IAAI;AAE7B,IAAIE,YAAY;AAEhB,IAAI,OAAO1V,GAAG,KAAK,WAAW,IAAIA,GAAG,CAACE,QAAQ,EAAE;EAChD;EACC,0BAAkB,CAACiB,GAAG,EAAEwU,OAAO,EAAEC,EAAE,CAAC,6BAAE;IAAjC,IAAI5e,KAAK;IACb,IAAII,MAAM,GAAGJ,KAAK,CAAC6e,YAAY,EAAE;IACjC,IAAIjiC,KAAK,GAAG;MAAEojB,KAAK,EAALA,KAAK;MAAEI,MAAM,EAANA,MAAM;MAAE/U,KAAK,EAAE;IAAC,CAAE;IACvC,IAAI4P,GAAG,GAAGyF,SAAS,CAAC9jB,KAAK,CAAC;IAE1B,IAAIosB,GAAG,CAACE,QAAQ,CAAC,OAAO,EAAEjO,GAAG,CAAC,EAAE;MAC/BqI,QAAQ,CAACmb,aAAa,GAAGze,KAAK;MAC9B;IACH;EACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS8e,QAAOA,CAAEliC,KAAK,EAAuD;EAAA,iFAAJ,EAAE;IAAAmiC,sBAAjD/e,KAAK;IAALA,KAAK,6BAAGsD,QAAQ,CAACmb,aAAa;IAAK1gC,OAAO;EACnFnB,KAAK,GAAG0oB,QAAQ,CAAC1oB,KAAK,CAAC;EAEvB,IAAI4d,GAAG,yBAA2BkG,SAAS,CAAC9jB,KAAK,EAAEmB,OAAO,CAAE;EAE5D,IACC,OAAOirB,GAAG,KAAK,WAAW,IAC1BA,GAAG,CAACE,QAAQ,CAAC,OAAO,uBAAyB1O,GAAG,CAAE,IAClD,CAAC8I,QAAQ,CAACmb,eACT;IACDjkB,GAAG,yBAA2B,IAAIsH,MAAM,CAACtH,GAAG,CAAE;IAC9CA,GAAG,CAAC5d,KAAK,kCAAoCA,KAAM;EACrD,OACM;IACN;IACE,IAAIoiC,aAAa,kCAAoCpiC,KAAM;;IAE7D;IACE,IAAIqiC,OAAO,GAAGriC,KAAK,CAACwjB,MAAM,CAACyH,IAAI,CAACvM,MAAM,CAAC,IAAIA,MAAM,CAAC1e,KAAK,CAACyO,KAAK,CAAC;IAE9D,IAAI4zB,OAAO,EAAE;MAAA;MACf;MACG,IAAI,mBAAEP,YAAY,yDAAZA,YAAY,GAAK1V,GAAG,CAACE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,EAAE;QACvE;QACI8V,aAAa,GAAG7P,KAAK,iCAAkCvyB,KAAK,CAAE;QAC9DoiC,aAAa,CAAC5e,MAAM;QACnB4e,aAAa,CAAC5e,MAAM,CAAC1R,GAAG,CAAC8M,QAAQ,CACjC;QACDwjB,aAAa,CAAC3zB,KAAK,GAAGmQ,QAAQ,CAACwjB,aAAa,CAAC3zB,KAAK,CAAC;;QAEvD;QACImP,GAAG,GAAGkG,SAAS,CAACse,aAAa,EAAEjhC,OAAO,CAAC;QAEvC,IAAIirB,GAAG,CAACE,QAAQ,CAAC,OAAO,uBAAyB1O,GAAG,CAAE,EAAE;UAC5D;UACKA,GAAG,yBAA2B,IAAIsH,MAAM,CAACtH,GAAG,CAAE;UAC9CA,GAAG,CAAC5d,KAAK,GAAGoiC,aAAa;UACzB,OAAOxkB,GAAG;QACf;MACA;IACA;;IAEA;IACA;IACEwkB,aAAa,GAAGtiC,EAAE,CAACsiC,aAAa,EAAEhf,KAAK,CAAC;IACxCxF,GAAG,yBAA2B,IAAIsH,MAAM,CAACpB,SAAS,CAACse,aAAa,EAAEjhC,OAAO,CAAC,CAAE;IAC5Eyc,GAAG,CAAC5d,KAAK,GAAGoiC,aAAa;EAC3B;EAEC,OAAOxkB,GAAG;AACX;;AC3FA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS0kB,MAAMA,CAAE1P,EAAE,EAAEC,EAAE,EAAmC;EAAA,iFAAJ,EAAE;IAA7BzP,KAAK,UAALA,KAAK;IAAAmf,oBAAEx/B,GAAG;IAAHA,GAAG,2BAAG,SAAS;EAC/D6vB,EAAE,GAAGlK,QAAQ,CAACkK,EAAE,CAAC;EACjBxP,KAAK,KAALA,KAAK,GAAKwP,EAAE,CAACxP,KAAK;EAClBA,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;EAC7B,IAAIE,WAAW,GAAGzW,MAAM,CAAC0W,MAAM,CAACH,KAAK,CAACI,MAAM,CAAC;EAAA,WAElC,CAACoP,EAAE,EAAEC,EAAE,CAAC,CAAC/gB,GAAG,CAAC,WAAC;IAAA,OAAIhS,EAAE,CAAC6X,CAAC,EAAEyL,KAAK,CAAC;EAAA,EAAC;EAAA;EAAzCwP,EAAE;EAAEC,EAAE;EACP,YAAyB,CAACD,EAAE,EAAEC,EAAE,CAAC,CAAC/gB,GAAG,CAAC,WAAC;MAAA,OAAI6F,CAAC,CAAC6L,MAAM;IAAA,EAAC;IAAAgf;IAA/ChQ,OAAO;IAAEC,OAAO;EAErB,IAAIjP,MAAM;EACTgP,OAAO,CAAC1gB,GAAG,CAAC,UAAC2wB,MAAM,EAAEv0B,CAAC,EAAK;IAC1B,IAAI8T,SAAS,GAAGsB,WAAW,CAACpV,CAAC,CAAC;IAC9B,IAAIw0B,MAAM,GAAGjQ,OAAO,CAACvkB,CAAC,CAAC;IAEvB,IAAI8T,SAAS,CAAC1D,IAAI,KAAK,OAAO,EAAE;MAAA,cACZoP,MAAM,CAAC3qB,GAAG,EAAE,CAAC0/B,MAAM,EAAEC,MAAM,CAAC,CAAC;MAAA;MAA/CD,MAAM;MAAEC,MAAM;IACnB;IAEG,OAAOC,cAAc,CAACF,MAAM,EAAEC,MAAM,CAAC;EACxC,CAAG,CACD;EAED,IAAIj0B,KAAK,GAAGk0B,cAAc,CAAC/P,EAAE,CAACnkB,KAAK,EAAEokB,EAAE,CAACpkB,KAAK,CAAC;EAE9C,OAAO;IAAE2U,KAAK,2BAA6BA,KAAM;IAAEI,MAAM,EAANA,MAAM;IAAE/U,KAAK,EAALA;EAAK,CAAE;AACnE;AAEA,SAASk0B,cAAcA,CAAE/P,EAAE,EAAEC,EAAE,EAAE;EAChC,IAAInU,MAAM,CAACkU,EAAE,CAAC,IAAIlU,MAAM,CAACmU,EAAE,CAAC,EAAE;IAC7B,OAAOD,EAAE,KAAKC,EAAE,GAAG,IAAI,GAAG,CAAC;EAC7B;EAEC,OAAOD,EAAE,GAAGC,EAAE;AACf;;ACnDA;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASjJ,MAAMA,CAAEtU,MAAM,EAAEvB,MAAM,EAAE;EAC/CuB,MAAM,GAAGoT,QAAQ,CAACpT,MAAM,CAAC;EACzBvB,MAAM,GAAG2U,QAAQ,CAAC3U,MAAM,CAAC;EAEzB,OACCuB,MAAM,CAAC8N,KAAK,KAAKrP,MAAM,CAACqP,KAAK,IAC7B9N,MAAM,CAAC7G,KAAK,KAAKsF,MAAM,CAACtF,KAAK,IAC7B6G,MAAM,CAACkO,MAAM,CAACqG,KAAK,CAAC,UAAClS,CAAC,EAAEzJ,CAAC;IAAA,OAAKyJ,CAAC,KAAK5D,MAAM,CAACyP,MAAM,CAACtV,CAAC,CAAC;EAAA;AAEtD;;AClBA;AACA;AACA;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAS00B,YAAYA,CAAE5iC,KAAK,EAAE;EACrC;EACC,OAAOoN,GAAG,CAACpN,KAAK,EAAE,CAACk8B,OAAO,EAAE,GAAG,CAAC,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACO,SAAS2G,YAAYA,CAAE7iC,KAAK,EAAEJ,KAAK,EAAE;EAC5C;EACCstB,GAAG,CAACltB,KAAK,EAAE,CAACk8B,OAAO,EAAE,GAAG,CAAC,EAAEt8B,KAAK,CAAC;AAClC;;AAEA;AACA;AACA;AACO,SAAS4qB,UAAQsY,CAAE1yB,KAAK,EAAE;EAChCvD,MAAM,CAACkL,cAAc,CAAC3H,KAAK,CAACxS,SAAS,EAAE,WAAW,EAAE;IACnDwP,GAAG,iBAAI;MACN,OAAOw1B,YAAY,CAAC,IAAI,CAAC;IAC5B,CAAG;IACD1V,GAAG,eAAEttB,KAAK,EAAE;MACXijC,YAAY,CAAC,IAAI,EAAEjjC,KAAK,CAAC;IAC5B;EACA,CAAE,CAAC;AACH;;;;;;;;ACxCA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACe,SAASmjC,cAAcA,CAAEztB,MAAM,EAAEvB,MAAM,EAAE;EACvDuB,MAAM,GAAGoT,QAAQ,CAACpT,MAAM,CAAC;EACzBvB,MAAM,GAAG2U,QAAQ,CAAC3U,MAAM,CAAC;EAEzB,IAAIivB,EAAE,GAAG5jC,IAAI,CAACE,GAAG,CAACsjC,YAAY,CAACttB,MAAM,CAAC,EAAE,CAAC,CAAC;EAC1C,IAAI2tB,EAAE,GAAG7jC,IAAI,CAACE,GAAG,CAACsjC,YAAY,CAAC7uB,MAAM,CAAC,EAAE,CAAC,CAAC;EAE1C,IAAIkvB,EAAE,GAAGD,EAAE,EAAE;IAAA,aACD,CAACC,EAAE,EAAED,EAAE,CAAC;IAAlBA,EAAE;IAAEC,EAAE;EACT;EAEC,OAAO,CAACD,EAAE,GAAG,IAAI,KAAKC,EAAE,GAAG,IAAI,CAAC;AACjC;;ACxBA;AACA;AACA;;AAMA;AACA,IAAMC,MAAM,GAAG,IAAI;AACnB,IAAMC,OAAO,GAAG,IAAI;AACpB,IAAMC,MAAM,GAAG,IAAI;AACnB,IAAMC,KAAK,GAAG,IAAI;;AAElB;AACA,IAAMC,OAAO,GAAG,KAAK;AACrB,IAAMC,OAAO,GAAG,KAAK;AACrB,IAAMC,MAAM,GAAG,GAAG;AAClB,IAAMC,SAAS,GAAG,MAAM;;AAExB;AACA;AACA,IAAMC,QAAQ,GAAG,IAAI;AACrB,IAAMC,WAAW,GAAG,KAAK;AACzB,IAAMC,QAAQ,GAAG,IAAI;AAGrB,SAASC,MAAMA,CAAEC,CAAC,EAAE;EACnB,IAAIA,CAAC,IAAIR,OAAO,EAAE;IACjB,OAAOQ,CAAC;EACV;EACC,OAAOA,CAAC,YAAIR,OAAO,GAAGQ,CAAC,EAAKP,OAAO;AACpC;AAEA,SAASQ,SAASA,CAAE3kB,GAAG,EAAE;EACxB,IAAIE,IAAI,GAAGF,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;EAC3B,IAAI1f,GAAG,GAAGN,IAAI,CAACM,GAAG,CAAC0f,GAAG,CAAC;EACvB,OAAOE,IAAI,GAAGlgB,IAAI,CAACmB,GAAG,CAACb,GAAG,EAAE,GAAG,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACe,SAASskC,YAAYA,CAAEC,UAAU,EAAEC,UAAU,EAAE;EAC7DA,UAAU,GAAGxb,QAAQ,CAACwb,UAAU,CAAC;EACjCD,UAAU,GAAGvb,QAAQ,CAACub,UAAU,CAAC;EAEjC,IAAIE,CAAC;EACL,IAAI7V,CAAC;EACL,IAAI8V,IAAI;;EAET;EACC,IAAIC,CAAC,EAAEtU,CAAC,EAAE3S,CAAC;EAEX8mB,UAAU,GAAGpkC,EAAE,CAACokC,UAAU,EAAE,MAAM,CAAC;EACpC;;EAEA;EACA;EAAA,4BACaA,UAAU,CAAC1gB,MAAM,CAAC1R,GAAG,CAAC,WAAC,EAAI;IACtC,OAAO4M,MAAM,CAAC/G,CAAC,CAAC,GAAG,CAAC,GAAGA,CAAC;EAC1B,CAAE,CAAC;EAAA;EAFD0sB,CAAC;EAAEtU,CAAC;EAAE3S,CAAC;EAGR,IAAIknB,MAAM,GAAGP,SAAS,CAACM,CAAC,CAAC,GAAG,SAAS,GAAGN,SAAS,CAAChU,CAAC,CAAC,GAAG,SAAS,GAAGgU,SAAS,CAAC3mB,CAAC,CAAC,GAAG,QAAQ;EAE1F6mB,UAAU,GAAGnkC,EAAE,CAACmkC,UAAU,EAAE,MAAM,CAAC;EAAA,4BACvBA,UAAU,CAACzgB,MAAM,CAAC1R,GAAG,CAAC,WAAC,EAAI;IACtC,OAAO4M,MAAM,CAAC/G,CAAC,CAAC,GAAG,CAAC,GAAGA,CAAC;EAC1B,CAAE,CAAC;EAAA;EAFD0sB,CAAC;EAAEtU,CAAC;EAAE3S,CAAC;EAGR,IAAImnB,KAAK,GAAGR,SAAS,CAACM,CAAC,CAAC,GAAG,SAAS,GAAGN,SAAS,CAAChU,CAAC,CAAC,GAAG,SAAS,GAAGgU,SAAS,CAAC3mB,CAAC,CAAC,GAAG,QAAQ;;EAE1F;EACC,IAAIonB,IAAI,GAAGX,MAAM,CAACS,MAAM,CAAC;EACzB,IAAIG,GAAG,GAAGZ,MAAM,CAACU,KAAK,CAAC;;EAExB;EACC,IAAIG,GAAG,GAAGD,GAAG,GAAGD,IAAI;;EAErB;EACA;EACA;EACC,IAAIplC,IAAI,CAACM,GAAG,CAAC+kC,GAAG,GAAGD,IAAI,CAAC,GAAGf,SAAS,EAAE;IACrCnV,CAAC,GAAG,CAAC;EACP,OACM;IACJ,IAAIoW,GAAG,EAAE;MACX;MACGP,CAAC,GAAG/kC,YAAG,EAAI8jC,MAAM,aAAGsB,IAAI,EAAIrB,OAAO;MACnC7U,CAAC,GAAG6V,CAAC,GAAGT,QAAQ;IACnB,OACO;MACP;MACGS,CAAC,GAAG/kC,YAAG,EAAIikC,KAAK,aAAGmB,IAAI,EAAIpB,MAAM;MACjC9U,CAAC,GAAG6V,CAAC,GAAGP,QAAQ;IACnB;EACA;EACC,IAAIxkC,IAAI,CAACM,GAAG,CAAC4uB,CAAC,CAAC,GAAGkV,MAAM,EAAE;IACzBY,IAAI,GAAG,CAAC;EACV,OACM,IAAI9V,CAAC,GAAG,CAAC,EAAE;IACjB;IACA;IACE8V,IAAI,GAAG9V,CAAC,GAAGqV,WAAW;EACxB,OACM;IACJS,IAAI,GAAG9V,CAAC,GAAGqV,WAAW;EACxB;EAEC,OAAOS,IAAI,GAAG,GAAG;AAClB;;AC/GA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACe,SAASO,iBAAiBA,CAAErvB,MAAM,EAAEvB,MAAM,EAAE;EAC1DuB,MAAM,GAAGoT,QAAQ,CAACpT,MAAM,CAAC;EACzBvB,MAAM,GAAG2U,QAAQ,CAAC3U,MAAM,CAAC;EAEzB,IAAIivB,EAAE,GAAG5jC,IAAI,CAACE,GAAG,CAACsjC,YAAY,CAACttB,MAAM,CAAC,EAAE,CAAC,CAAC;EAC1C,IAAI2tB,EAAE,GAAG7jC,IAAI,CAACE,GAAG,CAACsjC,YAAY,CAAC7uB,MAAM,CAAC,EAAE,CAAC,CAAC;EAE1C,IAAIkvB,EAAE,GAAGD,EAAE,EAAE;IAAA,aACD,CAACC,EAAE,EAAED,EAAE,CAAC;IAAlBA,EAAE;IAAEC,EAAE;EACT;EAEC,IAAInO,KAAK,GAAGkO,EAAE,GAAGC,EAAE;EACnB,OAAOnO,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAACkO,EAAE,GAAGC,EAAE,IAAInO,KAAK;AAC3C;;AC1BA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA,IAAMx1B,GAAG,GAAG,KAAK;;AAEjB;AACA;AACA;AACA;AACA;AACe,SAASslC,aAAaA,CAAEtvB,MAAM,EAAEvB,MAAM,EAAE;EACtDuB,MAAM,GAAGoT,QAAQ,CAACpT,MAAM,CAAC;EACzBvB,MAAM,GAAG2U,QAAQ,CAAC3U,MAAM,CAAC;EAEzB,IAAIivB,EAAE,GAAG5jC,IAAI,CAACE,GAAG,CAACsjC,YAAY,CAACttB,MAAM,CAAC,EAAE,CAAC,CAAC;EAC1C,IAAI2tB,EAAE,GAAG7jC,IAAI,CAACE,GAAG,CAACsjC,YAAY,CAAC7uB,MAAM,CAAC,EAAE,CAAC,CAAC;EAE1C,IAAIkvB,EAAE,GAAGD,EAAE,EAAE;IAAA,aACD,CAACC,EAAE,EAAED,EAAE,CAAC;IAAlBA,EAAE;IAAEC,EAAE;EACT;EAEC,OAAOA,EAAE,KAAK,CAAC,GAAG3jC,GAAG,GAAG,CAAC0jC,EAAE,GAAGC,EAAE,IAAIA,EAAE;AACvC;;AC/BA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACe,SAAS4B,aAAaA,CAAEvvB,MAAM,EAAEvB,MAAM,EAAE;EACtDuB,MAAM,GAAGoT,QAAQ,CAACpT,MAAM,CAAC;EACzBvB,MAAM,GAAG2U,QAAQ,CAAC3U,MAAM,CAAC;EAEzB,IAAIub,EAAE,GAAGliB,GAAG,CAACkI,MAAM,EAAE,CAAC2B,GAAG,EAAE,GAAG,CAAC,CAAC;EAChC,IAAIyY,EAAE,GAAGtiB,GAAG,CAAC2G,MAAM,EAAE,CAACkD,GAAG,EAAE,GAAG,CAAC,CAAC;EAEhC,OAAO7X,IAAI,CAACM,GAAG,CAAC4vB,EAAE,GAAGI,EAAE,CAAC;AACzB;;ACjBA;AACA,IAAM/G,GAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AACtB,IAAMwE,EAAE,GAAG,EAAE,GAAG,GAAG;AACnB,IAAMC,GAAC,GAAG,KAAK,GAAG,EAAE,CAAC;;AAErB,IAAI5gB,OAAK,GAAG8X,MAAM,CAACE,GAAG;AAEtB,cAAe,IAAIuB,UAAU,CAAC;EAC7BhC,EAAE,EAAE,SAAS;EACbxlB,IAAI,EAAE,SAAS;EACfilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACD0B,CAAC,EAAE;MACFmiB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB,CAAG;IACDpjB,CAAC,EAAE;MACFojB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB;EACA,CAAE;EAEF;EACA;EACA5V,OAACA,OAAK;EAELgT,IAAI,EAAE0c,OAAO;EACd;EACA;EACCrT,QAAQ,oBAAE/D,GAAG,EAAE;IAChB;IACE,IAAI9N,GAAG,GAAG8N,GAAG,CAAChT,GAAG,CAAC,UAAClS,KAAK,EAAEsO,CAAC;MAAA,OAAKtO,KAAK,GAAG4M,OAAK,CAAC0B,CAAC,CAAC;IAAA,EAAC;;IAEnD;IACE,IAAI2F,CAAC,GAAGmD,GAAG,CAAClF,GAAG,CAAC,eAAK;MAAA,OAAKlS,KAAK,GAAG+oB,GAAC,GAAGvpB,IAAI,CAACkZ,IAAI,CAAC1Y,KAAK,CAAC,GAAG,CAACwtB,GAAC,GAAGxtB,KAAK,GAAG,EAAE,IAAI,GAAG;IAAA,CAAC,CAAC;IAEjF,OAAO,CACN,GAAG,GAAGiU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;IAAA;IACf,GAAG,IAAIA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA;IACnB,GAAG,IAAIA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,CACnB;EACH,CAAE;EACF;EACA;EACA;EACCiV,MAAM,kBAAEyE,GAAG,EAAE;IACd;IACE,IAAI1Z,CAAC,GAAG,EAAE;IACVA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC0Z,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG;IAC1B1Z,CAAC,CAAC,CAAC,CAAC,GAAG0Z,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG1Z,CAAC,CAAC,CAAC,CAAC;IAC1BA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAG0Z,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;;IAE5B;IACE,IAAIvW,GAAG,GAAG,CACTnD,CAAC,CAAC,CAAC,CAAC,GAAGsZ,EAAE,GAAG/tB,IAAI,CAACmB,GAAG,CAACsT,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAIuZ,GAAC,EACrDG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGnuB,IAAI,CAACmB,GAAG,CAAC,CAACgtB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGH,GAAC,EAC1DvZ,CAAC,CAAC,CAAC,CAAC,GAAGsZ,EAAE,GAAG/tB,IAAI,CAACmB,GAAG,CAACsT,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAIuZ,GAAC,CACrD;;IAEH;IACE,OAAOpW,GAAG,CAAClF,GAAG,CAAC,UAAClS,KAAK,EAAEsO,CAAC;MAAA,OAAKtO,KAAK,GAAG4M,OAAK,CAAC0B,CAAC,CAAC;IAAA,EAAC;EAChD,CAAE;EAEDmY,OAAO,EAAE;IACR,SAAS,EAAE;MACV7C,MAAM,EAAE,CACP,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB;IAE7B;EACA;AACA,CAAC,CAAC;;AC7EF;AACA;AACA;AACA;;AAMA,IAAMshB,GAAG,GAAG1lC,IAAI,CAACmB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACe,SAASwkC,gBAAgBA,CAAEzvB,MAAM,EAAEvB,MAAM,EAAE;EACzDuB,MAAM,GAAGoT,QAAQ,CAACpT,MAAM,CAAC;EACzBvB,MAAM,GAAG2U,QAAQ,CAAC3U,MAAM,CAAC;EAEzB,IAAIixB,KAAK,GAAG53B,GAAG,CAACkI,MAAM,EAAE,CAAC2vB,OAAO,EAAE,GAAG,CAAC,CAAC;EACvC,IAAIC,KAAK,GAAG93B,GAAG,CAAC2G,MAAM,EAAE,CAACkxB,OAAO,EAAE,GAAG,CAAC,CAAC;EAEvC,IAAIE,YAAY,GAAG/lC,IAAI,CAACM,GAAG,CAACN,IAAI,CAACmB,GAAG,CAACykC,KAAK,EAAEF,GAAG,CAAC,GAAG1lC,IAAI,CAACmB,GAAG,CAAC2kC,KAAK,EAAEJ,GAAG,CAAC,CAAC;EAExE,IAAIhxB,QAAQ,GAAG1U,IAAI,CAACmB,GAAG,CAAC4kC,YAAY,EAAE,CAAC,GAAGL,GAAG,CAAC,GAAG1lC,IAAI,CAACgmC,KAAK,GAAG,EAAE;EAEhE,OAAOtxB,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAGA,QAAQ;AACvC;;ACrBA;;;;;;;;;;;;ACFA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,QAAQA,CAAEmwB,UAAU,EAAEC,UAAU,EAAE3lB,CAAC,EAAE;EAC5D,IAAIH,QAAQ,CAACG,CAAC,CAAC,EAAE;IAChBA,CAAC,GAAG;MAAE8mB,SAAS,EAAE9mB;IAAC,CAAE;EACtB;EAEC,aAA6BA,CAAC,IAAI,EAAE;IAA9B8mB,SAAS,UAATA,SAAS;IAAKC,IAAI;EAExB,IAAI,CAACD,SAAS,EAAE;IACf,IAAIE,UAAU,GAAG14B,MAAM,CAACiD,IAAI,CAAC01B,eAAkB,EAC7C1zB,GAAG,CAAC,WAAC;MAAA,OAAI7R,CAAC,CAACwmB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IAAA,GACnCvW,IAAI,CAAC,IAAI,CAAC;IACZ,MAAM,IAAIqS,SAAS,kFACwDgjB,UAAU,CACvF,CAAG;EACH;EAECtB,UAAU,GAAGvb,QAAQ,CAACub,UAAU,CAAC;EACjCC,UAAU,GAAGxb,QAAQ,CAACwb,UAAU,CAAC;EAEjC,KAAK,IAAIjkC,EAAC,IAAIulC,eAAkB,EAAE;IACjC,IAAI,UAAU,GAAGH,SAAS,CAAC73B,WAAW,EAAE,KAAKvN,EAAC,CAACuN,WAAW,EAAE,EAAE;MAC7D,OAAOg4B,eAAkB,CAACvlC,EAAC,CAAC,CAACgkC,UAAU,EAAEC,UAAU,EAAEoB,IAAI,CAAC;IAC7D;EACA;EAEC,MAAM,IAAI/iB,SAAS,uCAAgC8iB,SAAS,CAAE,CAAC;AAChE;;AC1CA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASI,EAAEA,CAAEzlC,KAAK,EAAE;EAC3B;EACC,cAAgB6sB,MAAM,CAAC7sB,KAAK,EAAEk8B,OAAO,CAAC;IAAAwJ;IAAjCC,CAAC;IAAE7B,CAAC;IAAE8B,CAAC;EACZ,IAAI9Q,KAAK,GAAG6Q,CAAC,GAAG,EAAE,GAAG7B,CAAC,GAAG,CAAC,GAAG8B,CAAC;EAC9B,OAAO,CAAE,CAAC,GAAGD,CAAC,GAAI7Q,KAAK,EAAG,CAAC,GAAGgP,CAAC,GAAIhP,KAAK,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACO,SAAS+Q,EAAEA,CAAE7lC,KAAK,EAAE;EAC3B;EACC,eAAgB6sB,MAAM,CAAC7sB,KAAK,EAAEk8B,OAAO,CAAC;IAAA4J;IAAjCH,CAAC;IAAE7B,CAAC;IAAE8B,CAAC;EACZ,IAAIG,GAAG,GAAGJ,CAAC,GAAG7B,CAAC,GAAG8B,CAAC;EACnB,OAAO,CAACD,CAAC,GAAGI,GAAG,EAAEjC,CAAC,GAAGiC,GAAG,CAAC;AAC1B;;AAEA;AACA;AACA;AACO,SAASvb,UAAQwb,CAAE51B,KAAK,EAAE;EACjC;EACA;EACCvD,MAAM,CAACkL,cAAc,CAAC3H,KAAK,CAACxS,SAAS,EAAE,IAAI,EAAE;IAC5CwP,GAAG,iBAAI;MACN,OAAOq4B,EAAE,CAAC,IAAI,CAAC;IAClB;EACA,CAAE,CAAC;EAEF54B,MAAM,CAACkL,cAAc,CAAC3H,KAAK,CAACxS,SAAS,EAAE,IAAI,EAAE;IAC5CwP,GAAG,iBAAI;MACN,OAAOy4B,EAAE,CAAC,IAAI,CAAC;IAClB;EACA,CAAE,CAAC;AACH;;;;;;;;ACzCA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS3kB,MAAMA,CAAE0R,EAAE,EAAEC,EAAE,EAAU;EAAA,IAARtU,CAAC,uEAAG,EAAE;EAC7C,IAAIH,QAAQ,CAACG,CAAC,CAAC,EAAE;IAChBA,CAAC,GAAG;MAAEmf,MAAM,EAAEnf;IAAC,CAAE;EACnB;EAEC,SAA4CA,CAAC;IAAA0nB,eAAvCvI,MAAM;IAANA,MAAM,0BAAGhX,QAAQ,CAACxF,MAAM;IAAKokB,IAAI;EAEvC,KAAK,IAAI5uB,GAAC,IAAI8nB,aAAa,EAAE;IAC5B,IAAI,QAAQ,GAAGd,MAAM,CAAClwB,WAAW,EAAE,KAAKkJ,GAAC,CAAClJ,WAAW,EAAE,EAAE;MACxD,OAAOgxB,aAAa,CAAC9nB,GAAC,CAAC,CAACkc,EAAE,EAAEC,EAAE,EAAEyS,IAAI,CAAC;IACxC;EACA;EAEC,MAAM,IAAI/iB,SAAS,kCAA2Bmb,MAAM,CAAE,CAAC;AACxD;;AC7BA;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASv6B,OAAOA,CAAEnD,KAAK,EAAiB;EAAA,IAAfkmC,MAAM,uEAAG,IAAI;EAC5C,IAAI9iB,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;EAC1C,sBAAuB+E,SAAS,GAAG,CAACiR,KAAK,EAAE,GAAG,CAAC;EAC/C,OAAO8J,GAAG,CAACltB,KAAK,EAAEmS,SAAS,EAAE,WAAC;IAAA,OAAIvD,CAAC,IAAI,CAAC,GAAGs3B,MAAM,CAAC;EAAA,EAAC;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACO,SAAShjC,MAAMA,CAAElD,KAAK,EAAiB;EAAA,IAAfkmC,MAAM,uEAAG,IAAI;EAC3C,IAAI9iB,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;EAC1C,sBAAuB+E,SAAS,GAAG,CAACiR,KAAK,EAAE,GAAG,CAAC;EAC/C,OAAO8J,GAAG,CAACltB,KAAK,EAAEmS,SAAS,EAAE,WAAC;IAAA,OAAIvD,CAAC,IAAI,CAAC,GAAGs3B,MAAM,CAAC;EAAA,EAAC;AACpD;;AAEA;AACA/iC,OAAO,CAAC8pB,OAAO,GAAG,OAAO;;AAEzB;AACA/pB,MAAM,CAAC+pB,OAAO,GAAG,OAAO;;;;;;;AC/BxB;AACA;AACA;;AAaA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS/X,GAAGA,CAAE0d,EAAE,EAAEC,EAAE,EAAEtd,CAAC,EAAU;EAAA;EAAA,IAARgJ,CAAC,uEAAG,EAAE;EAAA,aAC1B,CAACmK,QAAQ,CAACkK,EAAE,CAAC,EAAElK,QAAQ,CAACmK,EAAE,CAAC,CAAC;EAAtCD,EAAE;EAAEC,EAAE;EAEP,IAAIvU,IAAI,CAAC/I,CAAC,CAAC,KAAK,QAAQ,EAAE;IAAA,aAChB,CAAC,GAAG,EAAEA,CAAC,CAAC;IAAhBA,CAAC;IAAEgJ,CAAC;EACP;EAEC,IAAIzf,CAAC,GAAGqjB,KAAK,CAACyQ,EAAE,EAAEC,EAAE,EAAEtU,CAAC,CAAC;EACxB,OAAOzf,CAAC,QAACyW,CAAC,qCAAI,GAAG,CAAC,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS4wB,KAAKA,CAAEvT,EAAE,EAAEC,EAAE,EAAgB;EAAA,IAAd1xB,OAAO,uEAAG,EAAE;EAC1C,IAAIilC,UAAU;EAEd,IAAIC,OAAO,CAACzT,EAAE,CAAC,EAAE;IAClB;IACGwT,UAAU,GAAcxT,EAAE;IAAdzxB,OAAO,GAAS0xB,EAAE;IAAA,2CACpBuT,UAAU,CAACE,SAAS,CAAC/iC,MAAM;IAArCqvB,EAAE;IAAEC,EAAE;EACT;EAEC,eAA+E1xB,OAAO;IAAhFolC,SAAS,YAATA,SAAS;IAAE5I,YAAY,YAAZA,YAAY;IAAA6I,0BAAEL,KAAK;IAALA,KAAK,+BAAG,CAAC;IAAAM,6BAAEC,QAAQ;IAARA,QAAQ,kCAAG,IAAI;IAAKC,YAAY;EAE1E,IAAI,CAACP,UAAU,EAAE;IAAA,aACL,CAAC1d,QAAQ,CAACkK,EAAE,CAAC,EAAElK,QAAQ,CAACmK,EAAE,CAAC,CAAC;IAAtCD,EAAE;IAAEC,EAAE;IACPuT,UAAU,GAAGjkB,KAAK,CAACyQ,EAAE,EAAEC,EAAE,EAAE8T,YAAY,CAAC;EAC1C;EAEC,IAAIC,UAAU,GAAG1lB,MAAM,CAAC0R,EAAE,EAAEC,EAAE,CAAC;EAC/B,IAAIgU,WAAW,GACdN,SAAS,GAAG,CAAC,GAAGnnC,IAAI,CAACE,GAAG,CAAC6mC,KAAK,EAAE/mC,IAAI,CAAC0nC,IAAI,CAACF,UAAU,GAAGL,SAAS,CAAC,GAAG,CAAC,CAAC,GAAGJ,KAAK;EAC/E,IAAIvoB,GAAG,GAAG,EAAE;EAEZ,IAAI8oB,QAAQ,KAAKz3B,SAAS,EAAE;IAC3B43B,WAAW,GAAGznC,IAAI,CAACC,GAAG,CAACwnC,WAAW,EAAEH,QAAQ,CAAC;EAC/C;EAEC,IAAIG,WAAW,KAAK,CAAC,EAAE;IACtBjpB,GAAG,GAAG,CAAC;MAAErI,CAAC,EAAE,GAAG;MAAEvV,KAAK,EAAEomC,UAAU,CAAC,GAAG;IAAC,CAAE,CAAC;EAC5C,OACM;IACJ,IAAIW,IAAI,GAAG,CAAC,IAAIF,WAAW,GAAG,CAAC,CAAC;IAChCjpB,GAAG,GAAGxO,KAAK,CAACvP,IAAI,CAAC;MAAE3B,MAAM,EAAE2oC;IAAW,CAAE,EAAE,UAACnpB,CAAC,EAAExP,CAAC,EAAK;MACnD,IAAIqH,CAAC,GAAGrH,CAAC,GAAG64B,IAAI;MAChB,OAAO;QAAExxB,CAAC,EAADA,CAAC;QAAEvV,KAAK,EAAEomC,UAAU,CAAC7wB,CAAC;MAAC,CAAE;IACrC,CAAG,CAAC;EACJ;EAEC,IAAIgxB,SAAS,GAAG,CAAC,EAAE;IACpB;IACE,IAAIS,QAAQ,GAAGppB,GAAG,CAAC8U,MAAM,CAAC,UAACC,GAAG,EAAE1V,GAAG,EAAE/O,CAAC,EAAK;MAC1C,IAAIA,CAAC,KAAK,CAAC,EAAE;QACZ,OAAO,CAAC;MACZ;MAEG,IAAI+4B,EAAE,GAAG/lB,MAAM,CAACjE,GAAG,CAACjd,KAAK,EAAE4d,GAAG,CAAC1P,CAAC,GAAG,CAAC,CAAC,CAAClO,KAAK,EAAE29B,YAAY,CAAC;MAC1D,OAAOv+B,IAAI,CAACE,GAAG,CAACqzB,GAAG,EAAEsU,EAAE,CAAC;IAC3B,CAAG,EAAE,CAAC,CAAC;IAEL,OAAOD,QAAQ,GAAGT,SAAS,EAAE;MAC/B;MACA;MACGS,QAAQ,GAAG,CAAC;MAEZ,KAAK,IAAI94B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0P,GAAG,CAAC1f,MAAM,IAAI0f,GAAG,CAAC1f,MAAM,GAAGwoC,QAAQ,EAAEx4B,CAAC,EAAE,EAAE;QAC7D,IAAIg5B,IAAI,GAAGtpB,GAAG,CAAC1P,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI+O,GAAG,GAAGW,GAAG,CAAC1P,CAAC,CAAC;QAEhB,IAAIqH,GAAC,GAAG,CAAC0H,GAAG,CAAC1H,CAAC,GAAG2xB,IAAI,CAAC3xB,CAAC,IAAI,CAAC;QAC5B,IAAIvV,OAAK,GAAGomC,UAAU,CAAC7wB,GAAC,CAAC;QACzByxB,QAAQ,GAAG5nC,IAAI,CAACE,GAAG,CAAC0nC,QAAQ,EAAE9lB,MAAM,CAAClhB,OAAK,EAAEknC,IAAI,CAAClnC,KAAK,CAAC,EAAEkhB,MAAM,CAAClhB,OAAK,EAAEid,GAAG,CAACjd,KAAK,CAAC,CAAC;QAClF4d,GAAG,CAAChN,MAAM,CAAC1C,CAAC,EAAE,CAAC,EAAE;UAAEqH,CAAC,EAADA,GAAC;UAAEvV,KAAK,EAAEomC,UAAU,CAAC7wB,GAAC;QAAC,CAAE,CAAC;QAC7CrH,CAAC,EAAE;MACP;IACA;EACA;EAEC0P,GAAG,GAAGA,GAAG,CAAC9L,GAAG,CAAC,WAAC;IAAA,OAAI7R,CAAC,CAACD,KAAK;EAAA,EAAC;EAE3B,OAAO4d,GAAG;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASuE,KAAKA,CAAE7M,MAAM,EAAEvB,MAAM,EAAgB;EAAA,IAAd5S,OAAO,uEAAG,EAAE;EAClD,IAAIklC,OAAO,CAAC/wB,MAAM,CAAC,EAAE;IACtB;IACE,IAAKxW,CAAC,GAAcwW,MAAM;MAAlBnU,SAAO,GAAa4S,MAAM;IAElC,OAAOoO,KAAK,kCAAIrjB,CAAC,CAACwnC,SAAS,CAAC/iC,MAAM,0CAAOzE,CAAC,CAACwnC,SAAS,CAACnlC,OAAO,GAAKA,SAAO,GAAE,CAAC;EAC7E;EAEC,IAAMiiB,KAAK,GAA8CjiB,OAAO,CAA1DiiB,KAAK;IAAE+jB,WAAW,GAAiChmC,OAAO,CAAnDgmC,WAAW;IAAEC,WAAW,GAAoBjmC,OAAO,CAAtCimC,WAAW;IAAEC,aAAa,GAAKlmC,OAAO,CAAzBkmC,aAAa;EAEpD/xB,MAAM,GAAGoT,QAAQ,CAACpT,MAAM,CAAC;EACzBvB,MAAM,GAAG2U,QAAQ,CAAC3U,MAAM,CAAC;;EAE1B;EACCuB,MAAM,GAAGid,KAAK,CAACjd,MAAM,CAAC;EACtBvB,MAAM,GAAGwe,KAAK,CAACxe,MAAM,CAAC;EAEtB,IAAIuyB,SAAS,GAAG;IAAE/iC,MAAM,EAAE,CAAC+R,MAAM,EAAEvB,MAAM,CAAC;IAAE5S,OAAO,EAAPA;EAAO,CAAE;EAErD,IAAIiiB,KAAK,EAAE;IACVA,KAAK,GAAG2C,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;EAC/B,OACM;IACJA,KAAK,GAAG2C,UAAU,CAACI,QAAQ,CAACO,QAAQ,CAAC4gB,kBAAkB,CAAC,IAAIhyB,MAAM,CAAC8N,KAAK;EAC1E;EAEC+jB,WAAW,GAAGA,WAAW,GAAGphB,UAAU,CAAC3Y,GAAG,CAAC+5B,WAAW,CAAC,GAAG/jB,KAAK;EAE/D9N,MAAM,GAAGxV,EAAE,CAACwV,MAAM,EAAE8N,KAAK,CAAC;EAC1BrP,MAAM,GAAGjU,EAAE,CAACiU,MAAM,EAAEqP,KAAK,CAAC;;EAE3B;EACC9N,MAAM,GAAGuoB,OAAO,CAACvoB,MAAM,CAAC;EACxBvB,MAAM,GAAG8pB,OAAO,CAAC9pB,MAAM,CAAC;;EAEzB;EACA;EACC,IAAIqP,KAAK,CAACI,MAAM,CAAC9U,CAAC,IAAI0U,KAAK,CAACI,MAAM,CAAC9U,CAAC,CAAC4P,IAAI,KAAK,OAAO,EAAE;IACtD,IAAIqP,GAAG,GAAIxsB,OAAO,CAAC4B,GAAG,GAAG5B,OAAO,CAAC4B,GAAG,IAAI,SAAU;IAElD,sBAAuBA,GAAG,GAAG,CAACqgB,KAAK,EAAE,GAAG,CAAC;IACzC,aAAe,CAAChW,GAAG,CAACkI,MAAM,EAAEvS,GAAG,CAAC,EAAEqK,GAAG,CAAC2G,MAAM,EAAEhR,GAAG,CAAC,CAAC;MAA9CwkC,EAAE;MAAEC,EAAE;IACb;IACA;IACA;IACE,IAAI9oB,MAAM,CAAC6oB,EAAE,CAAC,IAAI,CAAC7oB,MAAM,CAAC8oB,EAAE,CAAC,EAAE;MAC9BD,EAAE,GAAGC,EAAE;IACV,OACO,IAAI9oB,MAAM,CAAC8oB,EAAE,CAAC,IAAI,CAAC9oB,MAAM,CAAC6oB,EAAE,CAAC,EAAE;MACnCC,EAAE,GAAGD,EAAE;IACV;IAAA,eACaE,MAAa,CAAC9Z,GAAG,EAAE,CAAC4Z,EAAE,EAAEC,EAAE,CAAC,CAAC;IAAA;IAAtCD,EAAE;IAAEC,EAAE;IACPta,GAAG,CAAC5X,MAAM,EAAEvS,GAAG,EAAEwkC,EAAE,CAAC;IACpBra,GAAG,CAACnZ,MAAM,EAAEhR,GAAG,EAAEykC,EAAE,CAAC;EACtB;EAEC,IAAIH,aAAa,EAAE;IACpB;IACE/xB,MAAM,CAACkO,MAAM;IACZlO,MAAM,CAACkO,MAAM,CAAC1R,GAAG,CAAC,WAAC;MAAA,OAAI6F,CAAC,GAAGrC,MAAM,CAAC7G,KAAK;IAAA,EACvC;IACDsF,MAAM,CAACyP,MAAM;IACZzP,MAAM,CAACyP,MAAM,CAAC1R,GAAG,CAAC,WAAC;MAAA,OAAI6F,CAAC,GAAG5D,MAAM,CAACtF,KAAK;IAAA,EACvC;EACH;EAEC,OAAO5B,MAAM,CAACwW,MAAM,CACnB,WAAC,EAAI;IACJ9N,CAAC,GAAG6xB,WAAW,GAAGA,WAAW,CAAC7xB,CAAC,CAAC,GAAGA,CAAC;IACpC,IAAIiO,MAAM,GAAGlO,MAAM,CAACkO,MAAM,CAAC1R,GAAG,CAAC,UAACkN,KAAK,EAAE9Q,CAAC,EAAK;MAC5C,IAAI+Q,GAAG,GAAGlL,MAAM,CAACyP,MAAM,CAACtV,CAAC,CAAC;MAC1B,OAAO6Q,WAAW,CAACC,KAAK,EAAEC,GAAG,EAAE1J,CAAC,CAAC;IACrC,CAAI,CAAC;IAEF,IAAI9G,KAAK,GAAGsQ,WAAW,CAACzJ,MAAM,CAAC7G,KAAK,EAAEsF,MAAM,CAACtF,KAAK,EAAE8G,CAAC,CAAC;IACtD,IAAIqI,GAAG,GAAG;MAAEwF,KAAK,EAALA,KAAK;MAAEI,MAAM,EAANA,MAAM;MAAE/U,KAAK,EAALA;IAAK,CAAE;IAElC,IAAI44B,aAAa,EAAE;MACtB;MACIzpB,GAAG,CAAC4F,MAAM,GAAG5F,GAAG,CAAC4F,MAAM,CAAC1R,GAAG,CAAC,WAAC;QAAA,OAAI6F,CAAC,GAAGlJ,KAAK;MAAA,EAAC;IAC/C;IAEG,IAAI04B,WAAW,KAAK/jB,KAAK,EAAE;MAC1BxF,GAAG,GAAG9d,EAAE,CAAC8d,GAAG,EAAEupB,WAAW,CAAC;IAC9B;IAEG,OAAOvpB,GAAG;EACb,CAAG,EACD;IACC0oB,SAAS,EAATA;EACH,CACA,CAAE;AACF;;AAEA;AACA;AACA;AACA;AACO,SAASD,OAAOA,CAAEjnB,GAAG,EAAE;EAC7B,OAAOd,IAAI,CAACc,GAAG,CAAC,KAAK,UAAU,IAAI,CAAC,CAACA,GAAG,CAACknB,SAAS;AACnD;AAEA5f,QAAQ,CAAC4gB,kBAAkB,GAAG,KAAK;;AAEnC;AACA;AACA;AACO,SAAS9c,QAAQA,CAAEpa,KAAK,EAAE;EAChCA,KAAK,CAACs3B,cAAc,CAAC,KAAK,EAAExyB,GAAG,EAAE;IAAE+X,OAAO,EAAE;EAAO,CAAE,CAAC;EACtD7c,KAAK,CAACs3B,cAAc,CAAC,OAAO,EAAEvlB,KAAK,EAAE;IAAE8K,OAAO,EAAE;EAAiB,CAAE,CAAC;EACpE7c,KAAK,CAACs3B,cAAc,CAAC,OAAO,EAAEvB,KAAK,EAAE;IAAElZ,OAAO,EAAE;EAAc,CAAE,CAAC;AAClE;;;;;;;;;ACnQA,UAAe,IAAIlH,UAAU,CAAC;EAC7BhC,EAAE,EAAE,KAAK;EACTxlB,IAAI,EAAE,KAAK;EACXilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDoQ,CAAC,EAAE;MACFwT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT,CAAG;IACDqQ,CAAC,EAAE;MACFuT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAEoiB,IAAI;EAEX;EACC/Y,QAAQ,EAAE,qBAAG,EAAI;IAChB,IAAIvpB,GAAG,GAAGF,IAAI,CAACE,GAAG,OAARF,IAAI,qBAAQwC,GAAG,EAAC;IAC1B,IAAIvC,GAAG,GAAGD,IAAI,CAACC,GAAG,OAARD,IAAI,qBAAQwC,GAAG,EAAC;IAC1B,0BAAgBA,GAAG;MAAd9C,CAAC;MAAEC,CAAC;MAAEC,CAAC;IACZ,IAAK0P,CAAC,GAAW,IAAI;MAAbC,CAAC,GAAc,CAAC;MAAbC,CAAC,GAAc,CAACvP,GAAG,GAAGC,GAAG,IAAI,CAAC;IACzC,IAAIqgB,CAAC,GAAGrgB,GAAG,GAAGD,GAAG;IAEjB,IAAIsgB,CAAC,KAAK,CAAC,EAAE;MACZhR,CAAC,GAAGC,CAAC,KAAK,CAAC,IAAIA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAACtP,GAAG,GAAGsP,CAAC,IAAIxP,IAAI,CAACC,GAAG,CAACuP,CAAC,EAAE,CAAC,GAAGA,CAAC,CAAC;MAE3D,QAAQtP,GAAG;QACV,KAAKR,CAAC;UACL4P,CAAC,GAAG,CAAC3P,CAAC,GAAGC,CAAC,IAAI2gB,CAAC,IAAI5gB,CAAC,GAAGC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UACjC;QACD,KAAKD,CAAC;UACL2P,CAAC,GAAG,CAAC1P,CAAC,GAAGF,CAAC,IAAI6gB,CAAC,GAAG,CAAC;UACnB;QACD,KAAK3gB,CAAC;UACL0P,CAAC,GAAG,CAAC5P,CAAC,GAAGC,CAAC,IAAI4gB,CAAC,GAAG,CAAC;MACxB;MAEGjR,CAAC,GAAGA,CAAC,GAAG,EAAE;IACb;;IAEA;IACA;IACA;IACE,IAAIC,CAAC,GAAG,CAAC,EAAE;MACVD,CAAC,IAAI,GAAG;MACRC,CAAC,GAAGvP,IAAI,CAACM,GAAG,CAACiP,CAAC,CAAC;IAClB;IAEE,IAAID,CAAC,IAAI,GAAG,EAAE;MACbA,CAAC,IAAI,GAAG;IACX;IAEE,OAAO,CAACA,CAAC,EAAEC,CAAC,GAAG,GAAG,EAAEC,CAAC,GAAG,GAAG,CAAC;EAC9B,CAAE;EAEF;EACCka,MAAM,EAAE,mBAAG,EAAI;IACd,0BAAgBpb,GAAG;MAAdgB,CAAC;MAAEC,CAAC;MAAEC,CAAC;IACZF,CAAC,GAAGA,CAAC,GAAG,GAAG;IAEX,IAAIA,CAAC,GAAG,CAAC,EAAE;MACVA,CAAC,IAAI,GAAG;IACX;IAEEC,CAAC,IAAI,GAAG;IACRC,CAAC,IAAI,GAAG;IAER,SAASiF,CAACA,CAAER,CAAC,EAAE;MACd,IAAIsF,CAAC,GAAG,CAACtF,CAAC,GAAG3E,CAAC,GAAG,EAAE,IAAI,EAAE;MACzB,IAAIzO,CAAC,GAAG0O,CAAC,GAAGvP,IAAI,CAACC,GAAG,CAACuP,CAAC,EAAE,CAAC,GAAGA,CAAC,CAAC;MAC9B,OAAOA,CAAC,GAAG3O,CAAC,GAAGb,IAAI,CAACE,GAAG,CAAC,CAAC,CAAC,EAAEF,IAAI,CAACC,GAAG,CAACsZ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGA,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD;IAEE,OAAO,CAAC9E,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,CAAE;EAEDwS,OAAO,EAAE;IACR3Y,GAAG,EAAE;MACJ8V,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF,CAAG;IACDmkB,IAAI,EAAE;MACLnkB,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB,CAAC;MACpFoD,MAAM,EAAE,IAAI;MACZnY,KAAK,EAAE;IACV;EACA;AACA,CAAC,CAAC;;AC5FF;AACA;;AAEA,UAAe,IAAIsX,UAAU,CAAC;EAC7BhC,EAAE,EAAE,KAAK;EACTxlB,IAAI,EAAE,KAAK;EACXilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDoQ,CAAC,EAAE;MACFwT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT,CAAG;IACDoY,CAAC,EAAE;MACFwL,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAEoiB,IAAI;EACX;EACC/Y,QAAQ,oBAAEjnB,GAAG,EAAE;IACd,IAAItC,GAAG,GAAGF,IAAI,CAACE,GAAG,OAARF,IAAI,qBAAQwC,GAAG,EAAC;IAC1B,IAAIvC,GAAG,GAAGD,IAAI,CAACC,GAAG,OAARD,IAAI,qBAAQwC,GAAG,EAAC;IAC1B,2BAAgBA,GAAG;MAAd9C,CAAC;MAAEC,CAAC;MAAEC,CAAC;IACZ,IAAK0P,CAAC,GAAW,IAAI;MAAbC,CAAC,GAAc,CAAC;MAAbgI,CAAC,GAAcrX,GAAG;IAC7B,IAAIqgB,CAAC,GAAGrgB,GAAG,GAAGD,GAAG;IAEjB,IAAIsgB,CAAC,KAAK,CAAC,EAAE;MACZ,QAAQrgB,GAAG;QACV,KAAKR,CAAC;UACL4P,CAAC,GAAG,CAAC3P,CAAC,GAAGC,CAAC,IAAI2gB,CAAC,IAAI5gB,CAAC,GAAGC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UACjC;QACD,KAAKD,CAAC;UACL2P,CAAC,GAAG,CAAC1P,CAAC,GAAGF,CAAC,IAAI6gB,CAAC,GAAG,CAAC;UACnB;QACD,KAAK3gB,CAAC;UACL0P,CAAC,GAAG,CAAC5P,CAAC,GAAGC,CAAC,IAAI4gB,CAAC,GAAG,CAAC;MACxB;MAEGjR,CAAC,GAAGA,CAAC,GAAG,EAAE;IACb;IAEE,IAAIiI,CAAC,EAAE;MACNhI,CAAC,GAAGgR,CAAC,GAAGhJ,CAAC;IACZ;IAEE,IAAIjI,CAAC,IAAI,GAAG,EAAE;MACbA,CAAC,IAAI,GAAG;IACX;IAEE,OAAO,CAACA,CAAC,EAAEC,CAAC,GAAG,GAAG,EAAEgI,CAAC,GAAG,GAAG,CAAC;EAC9B,CAAE;EACF;EACCmS,MAAM,kBAAEhS,GAAG,EAAE;IACZ,0BAAgBA,GAAG;MAAdpI,CAAC;MAAEC,CAAC;MAAEgI,CAAC;IACZjI,CAAC,GAAGA,CAAC,GAAG,GAAG;IAEX,IAAIA,CAAC,GAAG,CAAC,EAAE;MACVA,CAAC,IAAI,GAAG;IACX;IAEEC,CAAC,IAAI,GAAG;IACRgI,CAAC,IAAI,GAAG;IAER,SAAS9C,CAACA,CAAER,CAAC,EAAE;MACd,IAAIsF,CAAC,GAAG,CAACtF,CAAC,GAAG3E,CAAC,GAAG,EAAE,IAAI,CAAC;MACxB,OAAOiI,CAAC,GAAGA,CAAC,GAAGhI,CAAC,GAAGvP,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACC,GAAG,CAACsZ,CAAC,EAAE,CAAC,GAAGA,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD;IAEE,OAAO,CAAC9E,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,CAAE;EAEDwS,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,OAAO;MACXP,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF;EACA;AACA,CAAC,CAAC;;AClFF;AACA;AACA;AACA;;AAEA,UAAe,IAAIuC,UAAU,CAAC;EAC7BhC,EAAE,EAAE,KAAK;EACTxlB,IAAI,EAAE,KAAK;EACXilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDuQ,CAAC,EAAE;MACFqT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT,CAAG;IACDS,CAAC,EAAE;MACFmjB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAEooB,GAAG;EACT/e,QAAQ,oBAAE/R,GAAG,EAAE;IACd,2BAAgBA,GAAG;MAAdpI,CAAC;MAAEC,CAAC;MAAEgI,CAAC;IAEZ,OAAO,CAACjI,CAAC,EAAGiI,CAAC,IAAI,GAAG,GAAGhI,CAAC,CAAC,GAAI,GAAG,EAAE,GAAG,GAAGgI,CAAC,CAAC;EAC5C,CAAE;EACDmS,MAAM,kBAAEnb,GAAG,EAAE;IACZ,0BAAgBA,GAAG;MAAde,CAAC;MAAEI,CAAC;MAAE9P,CAAC;;IAEd;IACE8P,CAAC,IAAI,GAAG;IACR9P,CAAC,IAAI,GAAG;;IAEV;IACE,IAAI+mC,GAAG,GAAGj3B,CAAC,GAAG9P,CAAC;IACf,IAAI+mC,GAAG,IAAI,CAAC,EAAE;MACb,IAAIl/B,IAAI,GAAGiI,CAAC,GAAGi3B,GAAG;MAClB,OAAO,CAACr3B,CAAC,EAAE,CAAC,EAAE7H,IAAI,GAAG,GAAG,CAAC;IAC5B;IAEE,IAAI8P,CAAC,GAAG,CAAC,GAAG3X,CAAC;IACb,IAAI2P,CAAC,GAAGgI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG7H,CAAC,GAAG6H,CAAC;IAC/B,OAAO,CAACjI,CAAC,EAAEC,CAAC,GAAG,GAAG,EAAEgI,CAAC,GAAG,GAAG,CAAC;EAC9B,CAAE;EAED0P,OAAO,EAAE;IACR1Y,GAAG,EAAE;MACJ6V,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF;EACA;AACA,CAAC,CAAC;;ACvDF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAMqI,SAAO,GAAG,CACf,CAAE,kBAAkB,EAAI,kBAAkB,EAAI,kBAAkB,CAAG,EACnE,CAAE,mBAAmB,EAAG,kBAAkB,EAAI,mBAAmB,CAAE,EACnE,CAAE,mBAAmB,EAAG,mBAAmB,EAAG,kBAAkB,CAAG,CACnE;;AAED;AACA;AACA,IAAMC,WAAS,GAAG,CACjB,CAAG,kBAAkB,EAAK,CAAC,kBAAkB,EAAI,CAAC,mBAAmB,CAAE,EACvE,CAAE,CAAC,kBAAkB,EAAM,kBAAkB,EAAK,mBAAmB,CAAE,EACvE,CAAG,oBAAoB,EAAG,CAAC,mBAAmB,EAAI,kBAAkB,CAAG,CACvE;AAED,gBAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,eAAe;EACnBqC,KAAK,EAAE,kBAAkB;EACzB7nB,IAAI,EAAE,iCAAiC;EACvCiO,KAAK,EAAE,KAAK;EACbqf,SAACA,SAAO;EACRC,WAACA;AACD,CAAC,CAAC;AC/BF,aAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,QAAQ;EACZqC,KAAK,EAAE,SAAS;EAChB7nB,IAAI,EAAE,0BAA0B;EAChCihB,IAAI,EAAEqoB,SAAS;EACf/e,MAAM,EAAE,mBAAG;IAAA,OAAIgY,GAAG,CAAChvB,GAAG,CAAC,aAAG;MAAA,OAAI1S,IAAI,CAACmB,GAAG,CAACnB,IAAI,CAACM,GAAG,CAAC0f,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,GAAGhgB,IAAI,CAACkgB,IAAI,CAACF,GAAG,CAAC;IAAA,EAAC;EAAA;EAClFyJ,QAAQ,EAAE,qBAAG;IAAA,OAAIiY,GAAG,CAAChvB,GAAG,CAAC,aAAG;MAAA,OAAI1S,IAAI,CAACmB,GAAG,CAACnB,IAAI,CAACM,GAAG,CAAC0f,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,GAAGhgB,IAAI,CAACkgB,IAAI,CAACF,GAAG,CAAC;IAAA,EAAC;EAAA;AACrF,CAAC,CAAC;;ACPF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMyM,SAAO,GAAG,CACf,CAAE,mBAAmB,EAAG,mBAAmB,EAAG,mBAAmB,CAAE,EACnE,CAAE,mBAAmB,EAAG,mBAAmB,EAAG,mBAAmB,CAAE,EACnE,CAAE,mBAAmB,EAAG,mBAAmB,EAAG,mBAAmB,CAAE,CACnE;;AAED;AACA;AACA,IAAMC,WAAS,GAAG,CACjB,CAAG,mBAAmB,EAAE,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,CAAE,EACpE,CAAE,CAAC,mBAAmB,EAAG,mBAAmB,EAAG,mBAAmB,CAAE,EACpE,CAAG,mBAAmB,EAAG,mBAAmB,EAAG,mBAAmB,CAAE,CACpE;AAED,qBAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,iBAAiB;EACrBqC,KAAK,EAAE,uBAAuB;EAC9B7nB,IAAI,EAAE,iBAAiB;EACvBiO,KAAK,EAAE,KAAK;EACZgT,IAAI,EAAEsoB,OAAO;EACdjc,SAACA,SAAO;EACRC,WAACA;AACD,CAAC,CAAC;AC9BF,IAAMic,EAAE,GAAG,CAAC,GAAG,GAAG;AAClB,IAAMC,GAAG,GAAG,EAAE,GAAG,GAAG;AAEpB,eAAe,IAAItc,aAAa,CAAC;EAChC3H,EAAE,EAAE,UAAU;EACdqC,KAAK,EAAE,cAAc;EACrB7nB,IAAI,EAAE,UAAU;EAChBihB,IAAI,EAAEyoB,cAAc;EACpBnf,MAAM,kBAAEgY,GAAG,EAAE;IACd;IACE,OAAOA,GAAG,CAAChvB,GAAG,CAAC,WAAC,EAAI;MACnB,IAAIwN,IAAI,GAAG3I,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MACzB,IAAIjX,GAAG,GAAGiX,CAAC,GAAG2I,IAAI;MAElB,IAAI5f,GAAG,GAAGsoC,GAAG,EAAE;QACd,OAAOrxB,CAAC,GAAG,EAAE;MACjB;MAEG,OAAO2I,IAAI,YAAG5f,GAAG,EAAI,GAAG;IAC3B,CAAG,CAAC;EACJ,CAAE;EACDmpB,QAAQ,oBAAEiY,GAAG,EAAE;IACd,OAAOA,GAAG,CAAChvB,GAAG,CAAC,WAAC,EAAI;MACnB,IAAIwN,IAAI,GAAG3I,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MACzB,IAAIjX,GAAG,GAAGiX,CAAC,GAAG2I,IAAI;MAElB,IAAI5f,GAAG,IAAIqoC,EAAE,EAAE;QACd,OAAOzoB,IAAI,YAAG5f,GAAG,EAAK,CAAC,GAAG,GAAG,CAAC;MAClC;MAEG,OAAO,EAAE,GAAGiX,CAAC;IAChB,CAAG,CAAC;EACJ;AACA,CAAC,CAAC;;AClCF;;AAEA,IAAMuxB,CAAC,GAAG,gBAAgB;AAC1B,IAAMC,CAAC,GAAG,iBAAiB;AAE3B,kBAAe,IAAIzc,aAAa,CAAC;EAChC3H,EAAE,EAAE,gBAAgB;EACpBxlB,IAAI,EAAE,yBAAyB;EAC/BihB,IAAI,EAAEqhB,eAAa;EACnBzX,QAAQ,EAAE,OAAO;EAClB;EACCN,MAAM,kBAAEgY,GAAG,EAAE;IACZ,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAIE,IAAI,GAAGF,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3B,IAAI1f,GAAG,GAAG0f,GAAG,GAAGE,IAAI;MAEpB,IAAI5f,GAAG,GAAGyoC,CAAC,GAAG,GAAG,EAAE;QAClB,OAAO/oB,GAAG,GAAG,GAAG;MACpB;MAEG,OAAOE,IAAI,GAAGlgB,IAAI,CAACmB,GAAG,CAAC,CAACb,GAAG,GAAGwoC,CAAC,GAAG,CAAC,IAAIA,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACtD,CAAG,CAAC;EACJ,CAAE;EACDrf,QAAQ,oBAAEiY,GAAG,EAAE;IACd,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAIE,IAAI,GAAGF,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;MAC3B,IAAI1f,GAAG,GAAG0f,GAAG,GAAGE,IAAI;MAEpB,IAAI5f,GAAG,IAAIyoC,CAAC,EAAE;QACb,OAAO7oB,IAAI,IAAI4oB,CAAC,GAAG9oC,IAAI,CAACmB,GAAG,CAACb,GAAG,EAAE,IAAI,CAAC,IAAIwoC,CAAC,GAAG,CAAC,CAAC,CAAC;MACrD;MAEG,OAAO,GAAG,GAAG9oB,GAAG;IACnB,CAAG,CAAC;EACJ;AACA,CAAC,CAAC;ACjCF,YAAe,IAAI2G,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACbilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACDoZ,CAAC,EAAE;MACFyK,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDmQ,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT;EACA,CAAE;EACDiO,KAAK,EAAE,KAAK;EAEZgT,IAAI,EAAEuS,KAAK;EACXlJ,QAAQ,EAAE1R,GAAG,CAAC0R,QAAQ;EACtBC,MAAM,EAAE3R,GAAG,CAAC2R,MAAM;EAElBzC,OAAO,EAAE;IACRjP,KAAK,EAAE;MACNoM,MAAM,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,EAAE,oBAAoB;IACtF;EACA;AACA,CAAC,CAAC;;ACjCF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;;AAEA;AACA;;AAEO,IAAMqU,GAAG,GAAG,CAAC,GAAGz4B,IAAI,CAACob,EAAE;;AAU9B;AACA;AACO,IAAM4tB,YAAY,GAAG,CAC3B,CAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAC,EAC/D,CAAC,CAAC,kBAAkB,EAAG,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,EAC/D,CAAC,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAAG,kBAAkB,CAAC,CAC/D;;AAED;AACO,IAAMC,QAAQ,GAAG;AACxB;AACC;AACD;AACE,CAAC,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC;AAC3B;AACE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAC5D;AACF;AACC;AACD;AACE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC;AAC1B;AACE,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,CAC9D;AACF;AACC;AACD;AACE,CAAC,UAAU,EAAE,UAAU,CAAC;AAC1B;AACE,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAC9D,CACD;AAED,IAAMC,QAAQ,GAAGj6B,MAAM,CAACk6B,SAAS;AACjC,IAAMC,EAAE,GAAG,KAAK;AAChB,IAAMC,EAAE,GAAG,IAAI;AACf,IAAMC,EAAE,GAAG,CAAC,GAAG,GAAGF,EAAE,KAAK,GAAG,GAAGC,EAAE,CAAC;AAElC,SAASE,IAAIA,CAAE1oC,CAAC,EAAEjB,CAAC,EAAE;EACrB;;EAEC,IAAI4P,CAAC,GAAG3O,CAAC,CAAC/B,MAAM;EAChB,IAAI0Q,CAAC,KAAK5P,CAAC,CAACd,MAAM,EAAE;IACnB,MAAM,IAAIoS,KAAK,2BAAoB1B,CAAC,kBAAQ5P,CAAC,CAACd,MAAM,qBAAkB,CAAC;EACzE;EAEC,IAAIyQ,CAAC,GAAG,GAAG;EACX1O,CAAC,CAAC4gB,OAAO,CAAC,UAAClJ,CAAC,EAAEzJ,CAAC,EAAK;IACnBS,CAAC,IAAIgJ,CAAC,GAAG3Y,CAAC,CAACkP,CAAC,CAAC;EACf,CAAE,CAAC;EAEF,OAAOS,CAAC;AACT;;AAEA;AACA;AACA;AACA;AACO,SAASi6B,GAAGA,CAAEr2B,CAAC,EAAE;EACvB,OAAO,GAAG,IAAIm2B,EAAE,GAAGn2B,CAAC,GAAGi2B,EAAE,GAAGppC,IAAI,CAACK,IAAI,CAAC,CAACipC,EAAE,GAAGn2B,CAAC,GAAGi2B,EAAE,KAAKE,EAAE,GAAGn2B,CAAC,GAAGi2B,EAAE,CAAC,GAAG,CAAC,GAAGC,EAAE,GAAGC,EAAE,GAAGn2B,CAAC,CAAC,CAAC;AACxF;;AAEA;AACA;AACA;AACA;AACO,SAASs2B,MAAMA,CAAEt2B,CAAC,EAAE;EAC1B,OAAO,CAACnT,UAAC,EAAI,CAAC,IAAGopC,EAAE,GAAGj2B,CAAC,KAAKm2B,EAAE,IAAIn2B,CAAC,GAAGk2B,EAAE,CAAC,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACO,SAASK,IAAIA,CAAEC,IAAI,EAAE;EAC5B;;EAEC,2BAAaA,IAAI;IAAZn6B,CAAC;IAAE+I,CAAC;EACT,OAAO,CAACA,CAAC,GAAG/I,CAAC,EAAE+I,CAAC,IAAI,CAAC,GAAG/I,CAAC,CAAC,CAAC;AAC5B;AAEA,SAASo6B,QAAQA,CAAE/oC,CAAC,EAAEjB,CAAC,EAAE;EACzB;EACA;EACA;EACA;;EAEA;EACC,IAAI2P,CAAC,GAAG,UAAU,GAAG,GAAG,IACvB,UAAU,GAAG,UAAU,GAAG3P,CAAC,GAC3BiB,CAAC,IACA,CAAC,UAAU,GAAG,UAAU,GAAGjB,CAAC,GAC5BiB,CAAC,IACA,CAAC,UAAU,GAAG,WAAW,GAAGjB,CAAC,GAC7BiB,CAAC,IACA,CAAC,UAAU,GAAG,UAAU,GAAGjB,CAAC,GAAG,UAAU,GAAGiB,EACjD,CACA,CACA,CACE;;EAEF;EACC,IAAI4Z,CAAC,GAAG,UAAU,GAAG,GAAG,IACvB,UAAU,GAAG,UAAU,GAAG7a,CAAC,GAC3BiB,CAAC,IACA,UAAU,GAAG,UAAU,GAAGjB,CAAC,GAC3BiB,CAAC,IACA,CAAC,UAAU,GAAG,UAAU,GAAGjB,CAAC,GAC5BiB,CAAC,IACA,UAAU,GAAG,UAAU,GAAGjB,CAAC,GAAG,UAAU,GAAGiB,EAChD,CACA,CACA,CACE;EAED,OAAO,CAAC0O,CAAC,EAAEkL,CAAC,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACO,SAASovB,gBAAgBA,CAAEhyB,GAAG,EAAEiyB,QAAQ,EAAE;EACjD;EACA;EACA;EACA;;EAEC,IAAIC,GAAG,GAAGnrB,gBAAgB,CAAC/G,GAAG,EAAE4a,UAAU,CAAC;EAE3CsX,GAAG,CAAC,CAAC,CAAC,YAAGA,GAAG,CAAC,CAAC,CAAC,EAAI,CAAC;EACpBA,GAAG,CAAC,CAAC,CAAC,YAAGA,GAAG,CAAC,CAAC,CAAC,EAAI,CAAC;EACpBA,GAAG,CAAC,CAAC,CAAC,YAAGA,GAAG,CAAC,CAAC,CAAC,EAAI,CAAC;EAEpB,OAAOnrB,gBAAgB,CAACmrB,GAAG,EAAED,QAAQ,EAAEC,GAAG,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAAEnpC,CAAC,EAAEjB,CAAC,EAAEkqC,QAAQ,EAAEG,OAAO,EAAE;EACnD;EACA;EACA;;EAEA;EACC,IAAIC,KAAK,GAAGC,oBAAoB,CAACtpC,CAAC,EAAEjB,CAAC,EAAEkqC,QAAQ,EAAEG,OAAO,CAAC;;EAE1D;EACC,IAAIznC,GAAG,GAAGqnC,gBAAgB,CAAC,CAAC,CAAC,EAAEK,KAAK,GAAGrpC,CAAC,EAAEqpC,KAAK,GAAGtqC,CAAC,CAAC,EAAEkqC,QAAQ,CAAC;EAC/D,IAAIM,KAAK,GAAGjqB,IAAI,CAAC,GAAG,GAAGngB,IAAI,CAACE,GAAG,OAARF,IAAI,qBAAQwC,GAAG,EAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAC/C,IAAI6nC,KAAK,GAAGD,KAAK,GAAGF,KAAK;EAEzB,OAAO,CAACE,KAAK,EAAEC,KAAK,CAAC;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAEzpC,CAAC,EAAEjB,CAAC,EAAE2qC,EAAE,EAAE/W,EAAE,EAAEgX,EAAE,EAAEV,QAAQ,EAAEG,OAAO,EAAEN,IAAI,EAAE;EAClF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEC,IAAIlvB,CAAC;EAEL,IAAIkvB,IAAI,KAAK95B,SAAS,EAAE;IACvB85B,IAAI,GAAGK,QAAQ,CAACnpC,CAAC,EAAEjB,CAAC,EAAEkqC,QAAQ,EAAEG,OAAO,CAAC;EAC1C;;EAEA;EACC,IAAI,CAACM,EAAE,GAAGC,EAAE,IAAIb,IAAI,CAAC,CAAC,CAAC,GAAG,CAACA,IAAI,CAAC,CAAC,CAAC,GAAGa,EAAE,IAAIhX,EAAE,IAAI,GAAG,EAAE;IACvD;IACE/Y,CAAC,GAAIkvB,IAAI,CAAC,CAAC,CAAC,GAAGa,EAAE,IAAKhX,EAAE,GAAGmW,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,IAAIa,EAAE,GAAGD,EAAE,CAAC,CAAC;EAC3D,OACM;IACN;;IAEA;IACE9vB,CAAC,GAAIkvB,IAAI,CAAC,CAAC,CAAC,IAAIa,EAAE,GAAG,GAAG,CAAC,IAAKhX,EAAE,IAAImW,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,IAAIa,EAAE,GAAGD,EAAE,CAAC,CAAC;;IAE3E;IACE,IAAIE,EAAE,GAAGF,EAAE,GAAGC,EAAE;IAChB,IAAIE,EAAE,GAAGlX,EAAE;IAEX,IAAImX,EAAE,GAAGpB,IAAI,CAAC9W,UAAU,CAAC,CAAC,CAAC,CAACtkB,KAAK,CAAC,CAAC,CAAC,EAAE,CAACtN,CAAC,EAAEjB,CAAC,CAAC,CAAC;IAC7C,IAAIgrC,EAAE,GAAGrB,IAAI,CAAC9W,UAAU,CAAC,CAAC,CAAC,CAACtkB,KAAK,CAAC,CAAC,CAAC,EAAE,CAACtN,CAAC,EAAEjB,CAAC,CAAC,CAAC;IAC7C,IAAIirC,EAAE,GAAGtB,IAAI,CAAC9W,UAAU,CAAC,CAAC,CAAC,CAACtkB,KAAK,CAAC,CAAC,CAAC,EAAE,CAACtN,CAAC,EAAEjB,CAAC,CAAC,CAAC;IAE7C,IAAIkrC,IAAI,GAAGL,EAAE,GAAGC,EAAE,GAAGC,EAAE;IACvB,IAAII,IAAI,GAAGN,EAAE,GAAGC,EAAE,GAAGE,EAAE;IACvB,IAAII,IAAI,GAAGP,EAAE,GAAGC,EAAE,GAAGG,EAAE;;IAEzB;IACE,IAAI3c,CAAC,GAAGsc,EAAE,IAAI,GAAG,GAAG/vB,CAAC,CAAC,GAAGA,CAAC,GAAG8vB,EAAE;IAC/B,IAAIrb,CAAC,GAAGzU,CAAC,GAAG+Y,EAAE;IAEd,IAAIyX,EAAE,GAAG/c,CAAC,GAAGgB,CAAC,GAAGyb,EAAE;IACnB,IAAIO,EAAE,GAAGhd,CAAC,GAAGgB,CAAC,GAAG0b,EAAE;IACnB,IAAIO,EAAE,GAAGjd,CAAC,GAAGgB,CAAC,GAAG2b,EAAE;IAEnB,IAAIr7B,CAAC,YAAGy7B,EAAE,EAAI,CAAC;IACf,IAAI3zB,GAAC,YAAG4zB,EAAE,EAAI,CAAC;IACf,IAAI37B,CAAC,YAAG47B,EAAE,EAAI,CAAC;IAEf,IAAIC,GAAG,GAAG,CAAC,GAAGN,IAAI,YAAGG,EAAE,EAAI,CAAC;IAC5B,IAAII,GAAG,GAAG,CAAC,GAAGN,IAAI,YAAGG,EAAE,EAAI,CAAC;IAC5B,IAAII,GAAG,GAAG,CAAC,GAAGN,IAAI,YAAGG,EAAE,EAAI,CAAC;IAE5B,IAAII,IAAI,GAAG,CAAC,YAAGT,IAAI,EAAI,CAAC,IAAGG,EAAE;IAC7B,IAAIO,IAAI,GAAG,CAAC,YAAGT,IAAI,EAAI,CAAC,IAAGG,EAAE;IAC7B,IAAIO,IAAI,GAAG,CAAC,YAAGT,IAAI,EAAI,CAAC,IAAGG,EAAE;IAE7B,IAAIO,EAAE,GAAGnC,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACt6B,CAAC,EAAE8H,GAAC,EAAE/H,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,IAAIo8B,EAAE,GAAGpC,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACsB,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC,CAAC;IAC3C,IAAIM,EAAE,GAAGrC,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACyB,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,CAAC;IAE9C,IAAII,EAAE,GAAGF,EAAE,IAAIA,EAAE,GAAGA,EAAE,GAAG,GAAG,GAAGD,EAAE,GAAGE,EAAE,CAAC;IACvC,IAAIE,EAAE,GAAG,CAACJ,EAAE,GAAGG,EAAE;IAEjB,IAAIE,EAAE,GAAGxC,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACt6B,CAAC,EAAE8H,GAAC,EAAE/H,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,IAAIy8B,EAAE,GAAGzC,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACsB,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC,CAAC;IAC3C,IAAIW,EAAE,GAAG1C,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACyB,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,CAAC;IAE9C,IAAIS,EAAE,GAAGF,EAAE,IAAIA,EAAE,GAAGA,EAAE,GAAG,GAAG,GAAGD,EAAE,GAAGE,EAAE,CAAC;IACvC,IAAIE,EAAE,GAAG,CAACJ,EAAE,GAAGG,EAAE;IAEjB,IAAIE,EAAE,GAAG7C,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACt6B,CAAC,EAAE8H,GAAC,EAAE/H,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,IAAI4gB,EAAE,GAAGoZ,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACsB,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC,CAAC;IAC3C,IAAI/a,EAAE,GAAGgZ,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAACyB,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,CAAC;IAE9C,IAAIY,EAAE,GAAGlc,EAAE,IAAIA,EAAE,GAAGA,EAAE,GAAG,GAAG,GAAGic,EAAE,GAAG7b,EAAE,CAAC;IACvC,IAAI+b,EAAE,GAAG,CAACF,EAAE,GAAGC,EAAE;IAEjBP,EAAE,GAAGD,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAG5C,QAAQ;IAC9BiD,EAAE,GAAGD,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAGjD,QAAQ;IAC9BoD,EAAE,GAAGD,EAAE,IAAI,GAAG,GAAGC,EAAE,GAAGpD,QAAQ;IAE9BzuB,CAAC,IAAIza,IAAI,CAACC,GAAG,CAAC6rC,EAAE,EAAE9rC,IAAI,CAACC,GAAG,CAACksC,EAAE,EAAEG,EAAE,CAAC,CAAC;EACrC;EAEC,OAAO7xB,CAAC;AACT;AAEA,SAAS8xB,KAAKA,CAAE10B,GAAG,EAAEiyB,QAAQ,EAAEG,OAAO,EAAE;EACxC;;EAEC,0BAAgBpyB,GAAG;IAAdrI,CAAC;IAAE3O,CAAC;IAAEjB,CAAC;EAEZ,IAAI+pC,IAAI,GAAGK,QAAQ,CAACnpC,CAAC,EAAEjB,CAAC,EAAEkqC,QAAQ,EAAEG,OAAO,CAAC;EAE5C,IAAIuC,IAAI,GAAGlC,qBAAqB,CAACzpC,CAAC,EAAEjB,CAAC,EAAE4P,CAAC,EAAE,CAAC,EAAEA,CAAC,EAAEs6B,QAAQ,EAAEG,OAAO,EAAEN,IAAI,CAAC;EACxE,IAAI8C,KAAK,GAAG/C,IAAI,CAACC,IAAI,CAAC;;EAEvB;EACC,IAAIpwB,CAAC,GAAGizB,IAAI,GAAGxsC,IAAI,CAACC,GAAG,CAACuP,CAAC,GAAGi9B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGj9B,CAAC,IAAIi9B,KAAK,CAAC,CAAC,CAAC,CAAC;EAEzD,IAAIC,KAAK,GAAG9C,QAAQ,CAAC/oC,CAAC,EAAEjB,CAAC,CAAC;;EAE3B;EACC,IAAI+sC,EAAE,GAAGn9B,CAAC,GAAGk9B,KAAK,CAAC,CAAC,CAAC;EACrB,IAAIE,EAAE,GAAG,CAAC,GAAG,GAAGp9B,CAAC,IAAIk9B,KAAK,CAAC,CAAC,CAAC;EAC7B,IAAIG,IAAI,GAAG,GAAG,GAAGtzB,CAAC,GAAGvZ,IAAI,CAACK,IAAI,CAACL,IAAI,CAACK,IAAI,CAAC,GAAG,IAAI,GAAG,YAAGssC,EAAE,EAAI,CAAC,IAAG,GAAG,YAAGC,EAAE,EAAI,CAAC,EAAC,CAAC,CAAC;;EAEjF;EACA;EACCD,EAAE,GAAGn9B,CAAC,GAAG,GAAG;EACZo9B,EAAE,GAAG,CAAC,GAAG,GAAGp9B,CAAC,IAAI,GAAG;;EAErB;EACC,IAAIs9B,EAAE,GAAG9sC,IAAI,CAACK,IAAI,CAAC,GAAG,IAAI,GAAG,YAAGssC,EAAE,EAAI,CAAC,IAAG,GAAG,YAAGC,EAAE,EAAI,CAAC,EAAC,CAAC;EAEzD,OAAO,CAACE,EAAE,EAAED,IAAI,EAAEL,IAAI,CAAC;AACxB;AAEA,SAASrC,oBAAoBA,CAAEtpC,CAAC,EAAEjB,CAAC,EAAEkqC,QAAQ,EAAEG,OAAO,EAAE;EACxD;EACA;EACA;EACA;;EAEA;;EAEA;;EAEC,IAAI8C,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE/R,EAAE,EAAEgS,EAAE,EAAEC,EAAE,EAAEC,EAAE;EAElC,IAAI9D,IAAI,CAACU,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAACppC,CAAC,EAAEjB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IACtC;IAAA,iCACyBqqC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAnC8C,EAAE;IAAEC,EAAE;IAAEC,EAAE;IAAEC,EAAE;IAAE/R,EAAE;IAAA,gCACJ2O,QAAQ,CAAC,CAAC,CAAC;IAAzBqD,EAAE;IAAEC,EAAE;IAAEC,EAAE;EACb,OACM,IAAI9D,IAAI,CAACU,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAACppC,CAAC,EAAEjB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAC3C;IAAA,iCACyBqqC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAnC8C,EAAE;IAAEC,EAAE;IAAEC,EAAE;IAAEC,EAAE;IAAE/R,EAAE;IAAA,iCACJ2O,QAAQ,CAAC,CAAC,CAAC;IAAzBqD,EAAE;IAAEC,EAAE;IAAEC,EAAE;EACb,OACM;IACN;IAAA,iCACyBpD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAnC8C,EAAE;IAAEC,EAAE;IAAEC,EAAE;IAAEC,EAAE;IAAE/R,EAAE;IAAA,iCACJ2O,QAAQ,CAAC,CAAC,CAAC;IAAzBqD,EAAE;IAAEC,EAAE;IAAEC,EAAE;EACb;;EAEA;EACC,IAAIC,GAAG,GAAGP,EAAE,GAAGC,EAAE,GAAGnsC,CAAC,GAAGosC,EAAE,GAAGrtC,CAAC,GAAGstC,EAAE,YAAGrsC,CAAC,EAAI,CAAC,IAAGs6B,EAAE,GAAGt6B,CAAC,GAAGjB,CAAC;;EAE1D;EACA;EACA;;EAEC,IAAI+qC,EAAE,GAAGpB,IAAI,CAAC9W,UAAU,CAAC,CAAC,CAAC,CAACtkB,KAAK,CAAC,CAAC,CAAC,EAAE,CAACtN,CAAC,EAAEjB,CAAC,CAAC,CAAC;EAC7C,IAAIgrC,EAAE,GAAGrB,IAAI,CAAC9W,UAAU,CAAC,CAAC,CAAC,CAACtkB,KAAK,CAAC,CAAC,CAAC,EAAE,CAACtN,CAAC,EAAEjB,CAAC,CAAC,CAAC;EAC7C,IAAIirC,EAAE,GAAGtB,IAAI,CAAC9W,UAAU,CAAC,CAAC,CAAC,CAACtkB,KAAK,CAAC,CAAC,CAAC,EAAE,CAACtN,CAAC,EAAEjB,CAAC,CAAC,CAAC;EAE7C,IAAIqrC,EAAE,GAAG,GAAG,GAAGqC,GAAG,GAAG3C,EAAE;EACvB,IAAIO,EAAE,GAAG,GAAG,GAAGoC,GAAG,GAAG1C,EAAE;EACvB,IAAIO,EAAE,GAAG,GAAG,GAAGmC,GAAG,GAAGzC,EAAE;EAEvB,IAAIr7B,CAAC,YAAGy7B,EAAE,EAAI,CAAC;EACf,IAAI3zB,CAAC,YAAG4zB,EAAE,EAAI,CAAC;EACf,IAAI37B,CAAC,YAAG47B,EAAE,EAAI,CAAC;EAEf,IAAIoC,GAAG,GAAG,GAAG,GAAG5C,EAAE,YAAGM,EAAE,EAAI,CAAC;EAC5B,IAAIuC,GAAG,GAAG,GAAG,GAAG5C,EAAE,YAAGM,EAAE,EAAI,CAAC;EAC5B,IAAIuC,GAAG,GAAG,GAAG,GAAG5C,EAAE,YAAGM,EAAE,EAAI,CAAC;EAE5B,IAAIuC,IAAI,GAAG,GAAG,YAAG/C,EAAE,EAAI,CAAC,IAAGM,EAAE;EAC7B,IAAI0C,IAAI,GAAG,GAAG,YAAG/C,EAAE,EAAI,CAAC,IAAGM,EAAE;EAC7B,IAAI0C,IAAI,GAAG,GAAG,YAAG/C,EAAE,EAAI,CAAC,IAAGM,EAAE;EAE7B,IAAI12B,CAAC,GAAG04B,EAAE,GAAG39B,CAAC,GAAG49B,EAAE,GAAG91B,CAAC,GAAG+1B,EAAE,GAAG99B,CAAC;EAChC,IAAIs+B,EAAE,GAAGV,EAAE,GAAGI,GAAG,GAAGH,EAAE,GAAGI,GAAG,GAAGH,EAAE,GAAGI,GAAG;EACvC,IAAIK,EAAE,GAAGX,EAAE,GAAGO,IAAI,GAAGN,EAAE,GAAGO,IAAI,GAAGN,EAAE,GAAGO,IAAI;EAE1CN,GAAG,GAAGA,GAAG,GAAI74B,CAAC,GAAGo5B,EAAE,IAAK7tC,WAAE,EAAI,CAAC,IAAG,GAAG,GAAGyU,CAAC,GAAGq5B,EAAE,CAAC;EAE/C,OAAOR,GAAG;AACX;AAEA,SAASS,YAAYA,CAAEz/B,GAAG,EAAEw7B,QAAQ,EAAEG,OAAO,EAAE;EAC/C;;EAEC,2BAAgB37B,GAAG;IAAdgB,CAAC;IAAEC,CAAC;IAAEC,CAAC;EACZ,IAAI0e,CAAC,GAAGub,MAAM,CAACj6B,CAAC,CAAC;EACjB,IAAI3O,CAAC,GAAG,IAAI;EACZ,IAAIjB,CAAC,GAAG,IAAI;EACZ0P,CAAC,GAAG8e,SAAS,CAAC9e,CAAC,CAAC,GAAG,KAAK;EAExB,IAAI4e,CAAC,KAAK,GAAG,IAAIA,CAAC,KAAK,GAAG,IAAI3e,CAAC,KAAK,CAAC,EAAE;IACtC,IAAIy+B,EAAE,GAAGhuC,IAAI,CAACqb,GAAG,CAACod,GAAG,GAAGnpB,CAAC,CAAC;IAC1B,IAAI88B,EAAE,GAAGpsC,IAAI,CAACsb,GAAG,CAACmd,GAAG,GAAGnpB,CAAC,CAAC;IAE1B,aAAuBi9B,KAAK,CAAC,CAACre,CAAC,EAAE8f,EAAE,EAAE5B,EAAE,CAAC,EAAEtC,QAAQ,EAAEG,OAAO,CAAC;MAAAgE;MAAvDnB,EAAE;MAAED,IAAI;MAAEL,IAAI;;IAErB;IACA;IACA;IACA;IACA;IACA;;IAEE,IAAI7rB,GAAG,GAAG,GAAG;IACb,IAAIutB,MAAM,GAAG,IAAI;IACjB,IAAIzzB,CAAC,EAAEsyB,EAAE,EAAEC,EAAE,EAAEC,EAAE;IAEjB,IAAI19B,CAAC,GAAGoR,GAAG,EAAE;MACZlG,CAAC,GAAGyzB,MAAM,GAAG3+B,CAAC;MACdw9B,EAAE,GAAG,GAAG;MACRC,EAAE,GAAGrsB,GAAG,GAAGmsB,EAAE;MACbG,EAAE,GAAG,GAAG,GAAGD,EAAE,GAAGH,IAAI;IACvB,OACO;MACJpyB,CAAC,GAAG,CAAC,IAAIlL,CAAC,GAAG,GAAG,CAAC;MACjBw9B,EAAE,GAAGF,IAAI;MACTG,EAAE,GAAI,GAAG,YAAGH,IAAI,EAAI,CAAC,aAAG,IAAI,EAAI,CAAC,IAAIC,EAAE;MACvCG,EAAE,GAAG,GAAG,GAAGD,EAAE,IAAIR,IAAI,GAAGK,IAAI,CAAC;IAChC;IAEE,IAAIt0B,GAAC,GAAGw0B,EAAE,GAAItyB,CAAC,GAAGuyB,EAAE,IAAK,GAAG,GAAGC,EAAE,GAAGxyB,CAAC,CAAC;IAEtC5Z,CAAC,GAAG0X,GAAC,GAAGy1B,EAAE;IACVpuC,CAAC,GAAG2Y,GAAC,GAAG6zB,EAAE;EACZ;EAEC,OAAO,CAACle,CAAC,EAAErtB,CAAC,EAAEjB,CAAC,CAAC;AACjB;AAEA,SAASuuC,YAAYA,CAAEt2B,GAAG,EAAEiyB,QAAQ,EAAEG,OAAO,EAAE;EAC/C;;EAEA;EACA;EACC,IAAImE,EAAE,GAAG,IAAI;EACb,IAAIC,EAAE,GAAG,IAAI;EACb,IAAIngB,CAAC,GAAGrW,GAAG,CAAC,CAAC,CAAC;EACd,IAAItI,CAAC,GAAG,GAAG;EACX,IAAIC,CAAC,GAAGg6B,GAAG,CAACtb,CAAC,CAAC;EAEd,IAAI3V,CAAC,GAAGvY,IAAI,CAACK,IAAI,CAACL,YAAG,CAAC,CAAC,CAAC,EAAI,CAAC,aAAG6X,GAAG,CAAC,CAAC,CAAC,EAAI,CAAC,EAAC;EAC5C,IAAIvI,CAAC,GAAG,GAAG,GAAGtP,IAAI,CAACmb,KAAK,CAAC,CAACtD,GAAG,CAAC,CAAC,CAAC,EAAE,CAACA,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG4gB,GAAG;EAEhD,IAAIjpB,CAAC,KAAK,GAAG,IAAIA,CAAC,KAAK,GAAG,IAAI+I,CAAC,KAAK,CAAC,EAAE;IACtC,IAAIy1B,EAAE,GAAGn2B,GAAG,CAAC,CAAC,CAAC,GAAGU,CAAC;IACnB,IAAI6zB,EAAE,GAAGv0B,GAAG,CAAC,CAAC,CAAC,GAAGU,CAAC;IAEnB,cAAuBg0B,KAAK,CAAC,CAACre,CAAC,EAAE8f,EAAE,EAAE5B,EAAE,CAAC,EAAEtC,QAAQ,EAAEG,OAAO,CAAC;MAAAqE;MAAvDxB,EAAE;MAAED,IAAI;MAAEL,IAAI;IAEnB,IAAI7rB,GAAG,GAAG,GAAG;IACb,IAAIutB,MAAM,GAAG,IAAI;IACjB,IAAInB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAExyB,CAAC;IAEjB,IAAIlC,CAAC,GAAGs0B,IAAI,EAAE;MACbG,EAAE,GAAGrsB,GAAG,GAAGmsB,EAAE;MACbG,EAAE,GAAG,GAAG,GAAGD,EAAE,GAAGH,IAAI;MAEpBpyB,CAAC,GAAGlC,CAAC,IAAIy0B,EAAE,GAAGC,EAAE,GAAG10B,CAAC,CAAC;MACrBhJ,CAAC,GAAGkL,CAAC,GAAGkG,GAAG;IACd,OACO;MACJosB,EAAE,GAAGF,IAAI;MACTG,EAAE,GAAI,GAAG,YAAGH,IAAI,EAAI,CAAC,aAAGqB,MAAM,EAAI,CAAC,IAAIpB,EAAE;MACzCG,EAAE,GAAG,GAAG,GAAGD,EAAE,IAAIR,IAAI,GAAGK,IAAI,CAAC;MAE7BpyB,CAAC,GAAG,CAAClC,CAAC,GAAGw0B,EAAE,KAAKC,EAAE,GAAGC,EAAE,IAAI10B,CAAC,GAAGw0B,EAAE,CAAC,CAAC;MACnCx9B,CAAC,GAAGoR,GAAG,GAAG,GAAG,GAAGlG,CAAC;IACpB;EACA;EAEC,IAAM8zB,UAAU,GAAGvuC,IAAI,CAACM,GAAG,CAACiP,CAAC,CAAC,GAAG8+B,EAAE;EACnC,IAAIE,UAAU,IAAI/+B,CAAC,KAAK,GAAG,IAAIxP,IAAI,CAACM,GAAG,CAAC,CAAC,GAAGkP,CAAC,CAAC,GAAG4+B,EAAE,EAAE;IACpD9+B,CAAC,GAAG,IAAI;IACV;IACA;IACA;IACE,IAAI,CAACi/B,UAAU,EAAE;MAChBh/B,CAAC,GAAG,GAAG;IACV;EACA,OACM;IACJD,CAAC,GAAG8e,SAAS,CAAC9e,CAAC,GAAG,GAAG,CAAC;EACxB;EAEC,OAAO,CAACA,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AACjB;AAEA,YAAe,IAAImX,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACbilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDoQ,CAAC,EAAE;MACFwT,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MACb5jB,IAAI,EAAE;IACT,CAAG;IACDqQ,CAAC,EAAE;MACFuT,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MACb5jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAEouB,KAAK;EACX5kB,UAAU,EAAE,MAAM;EAEnB;EACCH,QAAQ,oBAAE5R,GAAG,EAAE;IACd,OAAOs2B,YAAY,CAACt2B,GAAG,EAAEmxB,YAAY,EAAEC,QAAQ,CAAC;EAClD,CAAE;EAEF;EACCvf,MAAM,kBAAEpb,GAAG,EAAE;IACZ,OAAOy/B,YAAY,CAACz/B,GAAG,EAAE06B,YAAY,EAAEC,QAAQ,CAAC;EAClD,CAAE;EAEDhiB,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,SAAS;MACbP,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF;EACA;AACA,CAAC,CAAC;AChiBF,aAAe,IAAIuC,UAAU,CAAC;EAC7BhC,EAAE,EAAE,QAAQ;EACZxlB,IAAI,EAAE,QAAQ;EACdilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACD0B,CAAC,EAAE;MACFmiB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB,CAAG;IACDpjB,CAAC,EAAE;MACFojB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB;EACA,CAAE;EAEF;EACC5V,KAAK,EAAE,KAAK;EAEZgT,IAAI,EAAEuS,KAAK;EACXlJ,QAAQ,oBAAE3R,KAAK,EAAE;IAChB,OAAO,CAAC0xB,GAAG,CAAC1xB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5C,CAAE;EACD4R,MAAM,kBAAE+kB,MAAM,EAAE;IACf,OAAO,CAAChF,MAAM,CAACgF,MAAM,CAAC,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;EAClD,CAAE;EAEDxnB,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACNwjB,MAAM,EAAE,CACP,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B;IAEnC;EACA;AACA,CAAC,CAAC;ACpCF,aAAe,IAAIuC,UAAU,CAAC;EAC7BhC,EAAE,EAAE,QAAQ;EACZxlB,IAAI,EAAE,QAAQ;EACdilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB7jB,IAAI,EAAE;IACT,CAAG;IACDoZ,CAAC,EAAE;MACFyK,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDmQ,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT;EACA,CAAE;EACDiO,KAAK,EAAE,KAAK;EAEZgT,IAAI,EAAEsuB,MAAM;EACZjlB,QAAQ,EAAE1R,GAAG,CAAC0R,QAAQ;EACtBC,MAAM,EAAE3R,GAAG,CAAC2R,MAAM;EAElBzC,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACNwjB,MAAM,EAAE,CACP,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB;IAExB;EACA;AACA,CAAC,CAAC;;ACrCF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAgBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASuqB,YAAYA,CAAEj3B,GAAG,EAAEoyB,QAAQ,EAAEG,OAAO,EAAE;EAC/C;;EAEC,2BAAgBvyB,GAAG;IAAdpI,CAAC;IAAEC,CAAC;IAAEgI,CAAC;EACZjI,CAAC,GAAG8e,SAAS,CAAC9e,CAAC,CAAC,GAAG,KAAK;EAExB,IAAIE,CAAC,GAAGi6B,MAAM,CAAClyB,CAAC,CAAC;EACjB,IAAI1W,CAAC,GAAG,IAAI;EACZ,IAAIjB,CAAC,GAAG,IAAI;;EAEb;EACC,IAAI4P,CAAC,KAAK,GAAG,IAAID,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAIy+B,EAAE,GAAGhuC,IAAI,CAACqb,GAAG,CAACod,GAAG,GAAGnpB,CAAC,CAAC;IAC1B,IAAI88B,EAAE,GAAGpsC,IAAI,CAACsb,GAAG,CAACmd,GAAG,GAAGnpB,CAAC,CAAC;IAE1B,IAAIq6B,IAAI,GAAGK,QAAQ,CAACgE,EAAE,EAAE5B,EAAE,EAAEtC,QAAQ,EAAEG,OAAO,CAAC;IAC9C,YAAmBP,IAAI,CAACC,IAAI,CAAC;MAAAiF;MAAxBC,IAAI;MAAEC,IAAI;IACf,IAAIC,EAAE,GAAG,GAAG;IACZ,IAAIx1B,CAAC,GAAG,CAAC,GAAGw1B,EAAE,GAAGF,IAAI;;IAEvB;;IAEA;IACE,IAAIG,EAAE,GAAG,CAAC,GAAIz/B,CAAC,GAAGw/B,EAAE,IAAKA,EAAE,GAAGD,IAAI,GAAGA,IAAI,GAAGv1B,CAAC,GAAGhK,CAAC,CAAC;IAClD,IAAI0/B,EAAE,GAAI1/B,CAAC,GAAGu/B,IAAI,GAAGC,EAAE,IAAKA,EAAE,GAAGD,IAAI,GAAGA,IAAI,GAAGv1B,CAAC,GAAGhK,CAAC,CAAC;IAErDC,CAAC,GAAG+H,CAAC,GAAGy3B,EAAE;IACV,IAAIz2B,GAAC,GAAGhB,CAAC,GAAG03B,EAAE;;IAEhB;IACE,IAAIC,GAAG,GAAGzF,MAAM,CAACuF,EAAE,CAAC;IACpB,IAAIG,GAAG,GAAIF,EAAE,GAAGC,GAAG,GAAIF,EAAE;IAEzB,IAAII,IAAI,GAAG3F,MAAM,CAACj6B,CAAC,CAAC;IACpB+I,GAAC,GAAIA,GAAC,GAAG62B,IAAI,GAAI5/B,CAAC;IAClBA,CAAC,GAAG4/B,IAAI;;IAEV;IACE,wBAAmBvF,gBAAgB,CAAC,CAACqF,GAAG,EAAElB,EAAE,GAAGmB,GAAG,EAAE/C,EAAE,GAAG+C,GAAG,CAAC,EAAErF,QAAQ,CAAC;MAAAuF;MAAnEC,EAAE;MAAEC,EAAE;MAAEC,EAAE;IACf,IAAIC,MAAM,GAAGtvB,IAAI,CAAC,GAAG,GAAGngB,IAAI,CAACE,GAAG,CAACF,IAAI,CAACE,GAAG,CAACovC,EAAE,EAAEC,EAAE,CAAC,EAAEvvC,IAAI,CAACE,GAAG,CAACsvC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAE7EhgC,CAAC,GAAGA,CAAC,GAAGigC,MAAM;IACdl3B,GAAC,GAAGA,GAAC,GAAGk3B,MAAM;IAEd5uC,CAAC,GAAG0X,GAAC,GAAGy1B,EAAE;IACVpuC,CAAC,GAAG2Y,GAAC,GAAG6zB,EAAE;EACZ;EAEC,OAAO,CAAC58B,CAAC,EAAE3O,CAAC,EAAEjB,CAAC,CAAC;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS8vC,YAAYA,CAAE73B,GAAG,EAAEiyB,QAAQ,EAAEG,OAAO,EAAE;EAC/C;;EAEA;EACC,IAAI1gB,CAAC,GAAG,IAAI;EACZ,IAAI/Z,CAAC,GAAGqI,GAAG,CAAC,CAAC,CAAC;EACd,IAAItI,CAAC,GAAG,GAAG;EACX,IAAIgI,CAAC,GAAGiyB,GAAG,CAACh6B,CAAC,CAAC;EACd,IAAI+I,CAAC,GAAGvY,IAAI,CAACK,IAAI,CAACL,YAAG,CAAC,CAAC,CAAC,EAAI,CAAC,aAAG6X,GAAG,CAAC,CAAC,CAAC,EAAI,CAAC,EAAC;EAC5C,IAAIvI,CAAC,GAAG,GAAG,GAAGtP,IAAI,CAACmb,KAAK,CAAC,CAACtD,GAAG,CAAC,CAAC,CAAC,EAAE,CAACA,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG4gB,GAAG;EAEhD,IAAIjpB,CAAC,KAAK,GAAG,IAAIA,CAAC,KAAK,CAAC,IAAI+I,CAAC,KAAK,GAAG,EAAE;IACtC,IAAIy1B,EAAE,GAAGn2B,GAAG,CAAC,CAAC,CAAC,GAAGU,CAAC;IACnB,IAAI6zB,EAAE,GAAGv0B,GAAG,CAAC,CAAC,CAAC,GAAGU,CAAC;IAEnB,IAAIoxB,IAAI,GAAGK,QAAQ,CAACgE,EAAE,EAAE5B,EAAE,EAAEtC,QAAQ,EAAEG,OAAO,CAAC;IAC9C,aAAmBP,IAAI,CAACC,IAAI,CAAC;MAAAgG;MAAxBd,IAAI;MAAEC,IAAI;IACf,IAAIC,EAAE,GAAG,GAAG;IACZ,IAAIx1B,CAAC,GAAG,CAAC,GAAGw1B,EAAE,GAAGF,IAAI;;IAEvB;IACE,IAAIp0B,CAAC,GAAGq0B,IAAI,IAAIv2B,CAAC,GAAG/I,CAAC,GAAGs/B,IAAI,CAAC;IAC7B,IAAIE,EAAE,GAAGv0B,CAAC,GAAGjL,CAAC;IACd,IAAIy/B,EAAE,GAAGx0B,CAAC,GAAGlC,CAAC;IAEd,IAAI22B,GAAG,GAAGzF,MAAM,CAACuF,EAAE,CAAC;IACpB,IAAIG,GAAG,GAAIF,EAAE,GAAGC,GAAG,GAAIF,EAAE;;IAE3B;IACA;IACE,yBAAmBnF,gBAAgB,CAAC,CAACqF,GAAG,EAAElB,EAAE,GAAGmB,GAAG,EAAE/C,EAAE,GAAG+C,GAAG,CAAC,EAAErF,QAAQ,CAAC;MAAA8F;MAAnEN,EAAE;MAAEC,EAAE;MAAEC,EAAE;IACf,IAAIC,MAAM,GAAGtvB,IAAI,CAAC,GAAG,GAAGngB,IAAI,CAACE,GAAG,CAACF,IAAI,CAACE,GAAG,CAACovC,EAAE,EAAEC,EAAE,CAAC,EAAEvvC,IAAI,CAACE,GAAG,CAACsvC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAE7EhgC,CAAC,GAAGA,CAAC,GAAGigC,MAAM;IACdl3B,CAAC,GAAGA,CAAC,GAAGk3B,MAAM;IAEdl3B,CAAC,GAAIA,CAAC,GAAGixB,GAAG,CAACh6B,CAAC,CAAC,GAAIA,CAAC;IACpBA,CAAC,GAAGg6B,GAAG,CAACh6B,CAAC,CAAC;;IAEZ;IACE+H,CAAC,GAAG/H,CAAC,GAAGw/B,EAAE;IACVz/B,CAAC,GAAI,CAACw/B,EAAE,GAAGD,IAAI,IAAIG,EAAE,IAAKH,IAAI,GAAGC,EAAE,GAAGD,IAAI,GAAGv1B,CAAC,GAAG01B,EAAE,CAAC;EACtD;EAEC,IAAIjvC,IAAI,CAACM,GAAG,CAACiP,CAAC,CAAC,GAAGga,CAAC,IAAIhS,CAAC,KAAK,GAAG,EAAE;IACjCjI,CAAC,GAAG,IAAI;EACV,OACM;IACJA,CAAC,GAAG8e,SAAS,CAAC9e,CAAC,GAAG,GAAG,CAAC;EACxB;EAEC,OAAO,CAACA,CAAC,EAAEC,CAAC,EAAEgI,CAAC,CAAC;AACjB;AAEA,YAAe,IAAIoP,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACbilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDoQ,CAAC,EAAE;MACFwT,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MACb5jB,IAAI,EAAE;IACT,CAAG;IACDoY,CAAC,EAAE;MACFwL,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MACb5jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAEouB,KAAK;EACX5kB,UAAU,EAAE,MAAM;EAEnB;EACCH,QAAQ,oBAAE5R,GAAG,EAAE;IACd,OAAO63B,YAAY,CAAC73B,GAAG,EAAEmxB,YAAY,EAAEC,QAAQ,CAAC;EAClD,CAAE;EAEF;EACCvf,MAAM,kBAAEpb,GAAG,EAAE;IACZ,OAAOqgC,YAAY,CAACrgC,GAAG,EAAE06B,YAAY,EAAEC,QAAQ,CAAC;EAClD,CAAE;EAEDhiB,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,SAAS;MACbP,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF;EACA;AACA,CAAC,CAAC;AC/LF,IAAIhX,KAAK,GAAG8X,MAAM,CAACE,GAAG;AAEtB,IAAMmE,GAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AACtB,IAAMyE,GAAC,GAAG,KAAK,GAAG,EAAE,CAAC;AACrB,UAAuCqY,EAAE,CAAC;IAAEriB,KAAK,EAAE8Y,OAAO;IAAE1Y,MAAM,EAAEhX;EAAK,CAAE,CAAC;EAAAyiC;EAArEC,aAAa;EAAEC,aAAa;AAEnC,UAAe,IAAIppB,UAAU,CAAC;EAC7BhC,EAAE,EAAE,KAAK;EACTxlB,IAAI,EAAE,KAAK;EACXilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACH;IACE6wC,CAAC,EAAE;MACFhtB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB,CAAG;IACDzL,CAAC,EAAE;MACFyL,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG;IACvB;EACA,CAAE;EAED5V,KAAK,EAAEA,KAAK;EACZgT,IAAI,EAAE0c,OAAO;EAEd;EACA;EACCrT,QAAQ,oBAAE/D,GAAG,EAAE;IACd,IAAI9N,GAAG,0CAA4C,CAClD4H,QAAQ,CAACkG,GAAG,CAAC,CAAC,CAAC,CAAC,EAChBlG,QAAQ,CAACkG,GAAG,CAAC,CAAC,CAAC,CAAC,EAChBlG,QAAQ,CAACkG,GAAG,CAAC,CAAC,CAAC,CAAC,CACf;IACF,IAAItS,CAAC,GAAGwE,GAAG,CAAC,CAAC,CAAC;IAEd,WAAeyuB,EAAE,CAAC;QAAEriB,KAAK,EAAE8Y,OAAO;QAAE1Y,MAAM,EAAExM;MAAG,CAAE,CAAC;MAAAq4B;MAA7CC,EAAE;MAAEC,EAAE;;IAEb;IACE,IAAI,CAAClhC,MAAM,CAACmhC,QAAQ,CAACF,EAAE,CAAC,IAAI,CAACjhC,MAAM,CAACmhC,QAAQ,CAACD,EAAE,CAAC,EAAE;MACjD,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnB;IAEE,IAAIjiB,CAAC,GAAG9a,CAAC,IAAImW,GAAC,GAAGyE,GAAC,GAAG5a,CAAC,GAAG,GAAG,GAAGpT,IAAI,CAACkZ,IAAI,CAAC9F,CAAC,CAAC,GAAG,EAAE;IAChD,OAAO,CAAC8a,CAAC,EAAE,EAAE,GAAGA,CAAC,IAAIgiB,EAAE,GAAGJ,aAAa,CAAC,EAAE,EAAE,GAAG5hB,CAAC,IAAIiiB,EAAE,GAAGJ,aAAa,CAAC,CAAC;EAC1E,CAAE;EAEF;EACA;EACCrmB,MAAM,kBAAE2mB,GAAG,EAAE;IACZ,0BAAgBA,GAAG;MAAdniB,CAAC;MAAE8hB,CAAC;MAAEz4B,CAAC;;IAEd;IACE,IAAI2W,CAAC,KAAK,CAAC,IAAI5O,MAAM,CAAC4O,CAAC,CAAC,EAAE;MACzB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnB;IAEE8hB,CAAC,GAAGxwB,QAAQ,CAACwwB,CAAC,CAAC;IACfz4B,CAAC,GAAGiI,QAAQ,CAACjI,CAAC,CAAC;IAEf,IAAI24B,EAAE,GAAGF,CAAC,IAAI,EAAE,GAAG9hB,CAAC,CAAC,GAAG4hB,aAAa;IACrC,IAAIK,EAAE,GAAG54B,CAAC,IAAI,EAAE,GAAG2W,CAAC,CAAC,GAAG6hB,aAAa;IAErC,IAAI38B,CAAC,GAAG8a,CAAC,IAAI,CAAC,GAAGA,CAAC,GAAGF,GAAC,GAAGhuB,IAAI,CAACmB,GAAG,CAAC,CAAC+sB,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAEpD,OAAO,CAAC9a,CAAC,IAAK,CAAC,GAAG88B,EAAE,IAAK,CAAC,GAAGC,EAAE,CAAC,CAAC,EAAE/8B,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG88B,EAAE,GAAG,EAAE,GAAGC,EAAE,KAAK,CAAC,GAAGA,EAAE,CAAC,CAAC,CAAC;EACjF,CAAE;EAEDlpB,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,OAAO;MACXP,MAAM,EAAE,CACP,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB;IAE7B;EACA;AACA,CAAC,CAAC;AChFF,YAAe,IAAIuC,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACbilB,MAAM,EAAE;IACP5U,CAAC,EAAE;MACFwT,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDoZ,CAAC,EAAE;MACFyK,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB7jB,IAAI,EAAE;IACT,CAAG;IACDmQ,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAEiwB,GAAG;EACT5mB,QAAQ,EAAE1R,GAAG,CAAC0R,QAAQ;EACtBC,MAAM,EAAE3R,GAAG,CAAC2R,MAAM;EAElBzC,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,SAAS;MACbP,MAAM,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,EAAE,oBAAoB;IACtF;EACA;AACA,CAAC,CAAC;;ACjCF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,IAAMmF,GAAC,GAAG,GAAG,GAAG,KAAK,CAAC;AACtB,IAAMyE,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;;AAErB,IAAMsiB,IAAI,GAAG5jB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAM6jB,IAAI,GAAG7jB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAM8jB,IAAI,GAAG9jB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAM+jB,IAAI,GAAG/jB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAMgkB,IAAI,GAAGhkB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAMikB,IAAI,GAAGjkB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAMkkB,IAAI,GAAGlkB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAMmkB,IAAI,GAAGnkB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAMokB,IAAI,GAAGpkB,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5B,SAASqkB,uBAAuBA,CAAEC,KAAK,EAAEC,SAAS,EAAE5iB,KAAK,EAAE;EAC1D,IAAM9N,CAAC,GAAG0wB,SAAS,IAAIjxC,IAAI,CAACsb,GAAG,CAAC+S,KAAK,CAAC,GAAG2iB,KAAK,GAAGhxC,IAAI,CAACqb,GAAG,CAACgT,KAAK,CAAC,CAAC;EACjE,OAAO9N,CAAC,GAAG,CAAC,GAAGid,QAAQ,GAAGjd,CAAC;AAC5B;;AAEA;AACA;AACA;AACO,SAAS2wB,sBAAsBA,CAAE1hC,CAAC,EAAE;EAC1C,IAAM2hC,IAAI,GAAGnxC,IAAI,CAACmB,GAAG,CAACqO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO;EAC1C,IAAM4hC,IAAI,GAAGD,IAAI,GAAG5nB,GAAC,GAAG4nB,IAAI,GAAG3hC,CAAC,GAAGwe,CAAC;EACpC,IAAMqjB,GAAG,GAAGD,IAAI,IAAI,MAAM,GAAGd,IAAI,GAAG,KAAK,GAAGE,IAAI,CAAC;EACjD,IAAMc,GAAG,GAAGF,IAAI,IAAI,MAAM,GAAGZ,IAAI,GAAG,MAAM,GAAGD,IAAI,GAAG,MAAM,GAAGD,IAAI,CAAC;EAClE,IAAMiB,GAAG,GAAGH,IAAI,IAAI,MAAM,GAAGZ,IAAI,GAAG,MAAM,GAAGD,IAAI,CAAC;EAClD,IAAMiB,GAAG,GAAGJ,IAAI,IAAI,MAAM,GAAGX,IAAI,GAAG,KAAK,GAAGE,IAAI,CAAC;EACjD,IAAMc,GAAG,GAAGL,IAAI,IAAI,MAAM,GAAGT,IAAI,GAAG,MAAM,GAAGD,IAAI,GAAG,MAAM,GAAGD,IAAI,CAAC;EAClE,IAAMiB,GAAG,GAAGN,IAAI,IAAI,MAAM,GAAGT,IAAI,GAAG,MAAM,GAAGD,IAAI,CAAC;EAClD,IAAMiB,GAAG,GAAGP,IAAI,IAAI,MAAM,GAAGR,IAAI,GAAG,KAAK,GAAGE,IAAI,CAAC;EACjD,IAAMc,GAAG,GAAGR,IAAI,IAAI,MAAM,GAAGN,IAAI,GAAG,MAAM,GAAGD,IAAI,GAAG,MAAM,GAAGD,IAAI,CAAC;EAClE,IAAMiB,GAAG,GAAGT,IAAI,IAAI,MAAM,GAAGN,IAAI,GAAG,MAAM,GAAGD,IAAI,CAAC;EAElD,OAAO;IACNiB,GAAG,EAAET,GAAG,GAAGE,GAAG;IACdQ,GAAG,EAAGT,GAAG,GAAG9hC,CAAC,GAAI+hC,GAAG;IACpBS,GAAG,EAAEX,GAAG,IAAIE,GAAG,GAAG,MAAM,CAAC;IACzBU,GAAG,EAAG,CAACX,GAAG,GAAG,MAAM,IAAI9hC,CAAC,IAAK+hC,GAAG,GAAG,MAAM,CAAC;IAC1CW,GAAG,EAAEV,GAAG,GAAGE,GAAG;IACdS,GAAG,EAAGV,GAAG,GAAGjiC,CAAC,GAAIkiC,GAAG;IACpBU,GAAG,EAAEZ,GAAG,IAAIE,GAAG,GAAG,MAAM,CAAC;IACzBW,GAAG,EAAG,CAACZ,GAAG,GAAG,MAAM,IAAIjiC,CAAC,IAAKkiC,GAAG,GAAG,MAAM,CAAC;IAC1CY,GAAG,EAAEX,GAAG,GAAGE,GAAG;IACdU,GAAG,EAAGX,GAAG,GAAGpiC,CAAC,GAAIqiC,GAAG;IACpBW,GAAG,EAAEb,GAAG,IAAIE,GAAG,GAAG,MAAM,CAAC;IACzBY,GAAG,EAAG,CAACb,GAAG,GAAG,MAAM,IAAIpiC,CAAC,IAAKqiC,GAAG,GAAG,MAAM;EAC3C,CAAE;AACF;AAEA,SAASa,kBAAkBA,CAAEC,KAAK,EAAErjC,CAAC,EAAE;EACtC,IAAMsjC,MAAM,GAAItjC,CAAC,GAAG,GAAG,GAAItP,IAAI,CAACob,EAAE,GAAG,CAAC;EACtC,IAAMy3B,EAAE,GAAG9B,uBAAuB,CAAC4B,KAAK,CAACb,GAAG,EAAEa,KAAK,CAACZ,GAAG,EAAEa,MAAM,CAAC;EAChE,IAAMjH,EAAE,GAAGoF,uBAAuB,CAAC4B,KAAK,CAACX,GAAG,EAAEW,KAAK,CAACV,GAAG,EAAEW,MAAM,CAAC;EAChE,IAAME,EAAE,GAAG/B,uBAAuB,CAAC4B,KAAK,CAACT,GAAG,EAAES,KAAK,CAACR,GAAG,EAAES,MAAM,CAAC;EAChE,IAAM5G,EAAE,GAAG+E,uBAAuB,CAAC4B,KAAK,CAACP,GAAG,EAAEO,KAAK,CAACN,GAAG,EAAEO,MAAM,CAAC;EAChE,IAAMG,EAAE,GAAGhC,uBAAuB,CAAC4B,KAAK,CAACL,GAAG,EAAEK,KAAK,CAACJ,GAAG,EAAEK,MAAM,CAAC;EAChE,IAAMziB,EAAE,GAAG4gB,uBAAuB,CAAC4B,KAAK,CAACH,GAAG,EAAEG,KAAK,CAACF,GAAG,EAAEG,MAAM,CAAC;EAEhE,OAAO5yC,IAAI,CAACC,GAAG,CAAC4yC,EAAE,EAAElH,EAAE,EAAEmH,EAAE,EAAE9G,EAAE,EAAE+G,EAAE,EAAE5iB,EAAE,CAAC;AACxC;AAEA,YAAe,IAAIxJ,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACbilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDoQ,CAAC,EAAE;MACFwT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT,CAAG;IACDqQ,CAAC,EAAE;MACFuT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAE4yB,KAAK;EACXppB,UAAU,EAAE4Y,IAAI;EAEjB;EACC/Y,QAAQ,oBAAE1R,GAAG,EAAE;IACd,aAAgB,CAACyH,QAAQ,CAACzH,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEyH,QAAQ,CAACzH,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEyH,QAAQ,CAACzH,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAAjEvI,CAAC;MAAE+I,CAAC;MAAEjJ,CAAC;IACZ,IAAIC,CAAC;IAEL,IAAIC,CAAC,GAAG,UAAU,EAAE;MACnBD,CAAC,GAAG,CAAC;MACLC,CAAC,GAAG,GAAG;IACV,OACO,IAAIA,CAAC,GAAG,UAAU,EAAE;MACxBD,CAAC,GAAG,CAAC;MACLC,CAAC,GAAG,CAAC;IACR,OACO;MACJ,IAAImjC,KAAK,GAAGzB,sBAAsB,CAAC1hC,CAAC,CAAC;MACrC,IAAItP,KAAG,GAAGwyC,kBAAkB,CAACC,KAAK,EAAErjC,CAAC,CAAC;MACtCC,CAAC,GAAIgJ,CAAC,GAAGrY,KAAG,GAAI,GAAG;IACtB;IAEE,OAAO,CAACoP,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;EAClB,CAAE;EAEF;EACCka,MAAM,kBAAEpb,GAAG,EAAE;IACZ,aAAgB,CAACkR,QAAQ,CAAClR,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEkR,QAAQ,CAAClR,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEkR,QAAQ,CAAClR,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAAjEgB,CAAC;MAAEC,CAAC;MAAEC,CAAC;IACZ,IAAI+I,CAAC;IAEL,IAAI/I,CAAC,GAAG,UAAU,EAAE;MACnBA,CAAC,GAAG,GAAG;MACP+I,CAAC,GAAG,CAAC;IACR,OACO,IAAI/I,CAAC,GAAG,UAAU,EAAE;MACxBA,CAAC,GAAG,CAAC;MACL+I,CAAC,GAAG,CAAC;IACR,OACO;MACJ,IAAIo6B,KAAK,GAAGzB,sBAAsB,CAAC1hC,CAAC,CAAC;MACrC,IAAItP,KAAG,GAAGwyC,kBAAkB,CAACC,KAAK,EAAErjC,CAAC,CAAC;MACtCiJ,CAAC,GAAIrY,KAAG,GAAG,GAAG,GAAIqP,CAAC;IACtB;IAEE,OAAO,CAACC,CAAC,EAAE+I,CAAC,EAAEjJ,CAAC,CAAC;EAClB,CAAE;EAED2X,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,SAAS;MACbP,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF;EACA;AACA,CAAC,CAAC;;ACpKF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWasI,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACdA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3B,SAASumB,kBAAkBA,CAAEjC,KAAK,EAAEC,SAAS,EAAE;EAC9C,OAAOjxC,IAAI,CAACM,GAAG,CAAC2wC,SAAS,CAAC,GAAGjxC,IAAI,CAACK,IAAI,CAACL,IAAI,CAACmB,GAAG,CAAC6vC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/D;AAEA,SAASkC,kBAAkBA,CAAEP,KAAK,EAAE;EACnC,IAAIE,EAAE,GAAGI,kBAAkB,CAACN,KAAK,CAACb,GAAG,EAAEa,KAAK,CAACZ,GAAG,CAAC;EACjD,IAAIpG,EAAE,GAAGsH,kBAAkB,CAACN,KAAK,CAACX,GAAG,EAAEW,KAAK,CAACV,GAAG,CAAC;EACjD,IAAIa,EAAE,GAAGG,kBAAkB,CAACN,KAAK,CAACT,GAAG,EAAES,KAAK,CAACR,GAAG,CAAC;EACjD,IAAInG,EAAE,GAAGiH,kBAAkB,CAACN,KAAK,CAACP,GAAG,EAAEO,KAAK,CAACN,GAAG,CAAC;EACjD,IAAIU,EAAE,GAAGE,kBAAkB,CAACN,KAAK,CAACL,GAAG,EAAEK,KAAK,CAACJ,GAAG,CAAC;EACjD,IAAIpiB,EAAE,GAAG8iB,kBAAkB,CAACN,KAAK,CAACH,GAAG,EAAEG,KAAK,CAACF,GAAG,CAAC;EAEjD,OAAOzyC,IAAI,CAACC,GAAG,CAAC4yC,EAAE,EAAElH,EAAE,EAAEmH,EAAE,EAAE9G,EAAE,EAAE+G,EAAE,EAAE5iB,EAAE,CAAC;AACxC;AAEA,YAAe,IAAIxJ,UAAU,CAAC;EAC7BhC,EAAE,EAAE,OAAO;EACXxlB,IAAI,EAAE,OAAO;EACbilB,MAAM,EAAE;IACP9U,CAAC,EAAE;MACF0T,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MAClB9D,IAAI,EAAE,OAAO;MACb/f,IAAI,EAAE;IACT,CAAG;IACDoQ,CAAC,EAAE;MACFwT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT,CAAG;IACDqQ,CAAC,EAAE;MACFuT,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;MACf5jB,IAAI,EAAE;IACT;EACA,CAAE;EAEDihB,IAAI,EAAE4yB,KAAK;EACXppB,UAAU,EAAE,MAAM;EAEnB;EACCH,QAAQ,oBAAE1R,GAAG,EAAE;IACd,aAAgB,CAACyH,QAAQ,CAACzH,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEyH,QAAQ,CAACzH,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEyH,QAAQ,CAACzH,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAAjEvI,CAAC;MAAE+I,CAAC;MAAEjJ,CAAC;IACZ,IAAIC,CAAC;IAEL,IAAIC,CAAC,GAAG,UAAU,EAAE;MACnBD,CAAC,GAAG,CAAC;MACLC,CAAC,GAAG,GAAG;IACV,OACO,IAAIA,CAAC,GAAG,UAAU,EAAE;MACxBD,CAAC,GAAG,CAAC;MACLC,CAAC,GAAG,CAAC;IACR,OACO;MACJ,IAAImjC,KAAK,GAAGzB,sBAAsB,CAAC1hC,CAAC,CAAC;MACrC,IAAItP,KAAG,GAAGgzC,kBAAkB,CAACP,KAAK,CAAC;MACnCpjC,CAAC,GAAIgJ,CAAC,GAAGrY,KAAG,GAAI,GAAG;IACtB;IACE,OAAO,CAACoP,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;EAClB,CAAE;EAEF;EACCka,MAAM,kBAAEpb,GAAG,EAAE;IACZ,aAAgB,CAACkR,QAAQ,CAAClR,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEkR,QAAQ,CAAClR,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEkR,QAAQ,CAAClR,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAAjEgB,CAAC;MAAEC,CAAC;MAAEC,CAAC;IACZ,IAAI+I,CAAC;IAEL,IAAI/I,CAAC,GAAG,UAAU,EAAE;MACnBA,CAAC,GAAG,GAAG;MACP+I,CAAC,GAAG,CAAC;IACR,OACO,IAAI/I,CAAC,GAAG,UAAU,EAAE;MACxBA,CAAC,GAAG,CAAC;MACL+I,CAAC,GAAG,CAAC;IACR,OACO;MACJ,IAAIo6B,KAAK,GAAGzB,sBAAsB,CAAC1hC,CAAC,CAAC;MACrC,IAAItP,KAAG,GAAGgzC,kBAAkB,CAACP,KAAK,CAAC;MACnCp6B,CAAC,GAAIrY,KAAG,GAAG,GAAG,GAAIqP,CAAC;IACtB;IAEE,OAAO,CAACC,CAAC,EAAE+I,CAAC,EAAEjJ,CAAC,CAAC;EAClB,CAAE;EAED2X,OAAO,EAAE;IACRrmB,KAAK,EAAE;MACN+jB,EAAE,EAAE,SAAS;MACbP,MAAM,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,yBAAyB;IACtF;EACA;AACA,CAAC,CAAC;AC9HF,sBAAe,IAAIkI,aAAa,CAAC;EAChC3H,EAAE,EAAE,gBAAgB;EACpBxlB,IAAI,EAAE,iBAAiB;EACvBiO,KAAK,EAAE,KAAK;EACZsc,MAAM,EAAEypB,eAAe,CAACzpB,MAAM;EAC9BD,QAAQ,EAAE0pB,eAAe,CAAC1pB;AAC3B,CAAC,CAAC;ACNF,IAAM4K,EAAE,GAAG,GAAG,CAAC;AACf,IAAMpgB,CAAC,GAAG,IAAI,YAAG,CAAC,EAAI,EAAE;AACxB,IAAMsgB,IAAI,GAAGv0B,UAAC,EAAI,EAAE,IAAG,IAAI;AAC3B,IAAMsX,CAAC,GAAG,IAAI,YAAG,CAAC,EAAI,CAAC;AACvB,IAAM87B,IAAI,GAAGpzC,UAAC,EAAI,CAAC,IAAG,IAAI;AAC1B,IAAMwzB,EAAE,GAAG,IAAI,YAAG,CAAC,EAAI,EAAE;AACzB,IAAMC,EAAE,GAAG,IAAI,YAAG,CAAC,EAAI,CAAC;AACxB,IAAMe,EAAE,GAAG,IAAI,YAAG,CAAC,EAAI,CAAC;AAExB,gBAAe,IAAIlI,aAAa,CAAC;EAChC3H,EAAE,EAAE,WAAW;EACfqC,KAAK,EAAE,YAAY;EACnB7nB,IAAI,EAAE,aAAa;EACnBihB,IAAI,EAAEizB,eAAe;EACrB3pB,MAAM,kBAAEgY,GAAG,EAAE;IACd;IACA;IACE,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAI7M,CAAC,YAAInT,IAAI,CAACE,GAAG,CAACF,YAAG,EAAIozC,IAAI,IAAG5f,EAAE,EAAE,CAAC,CAAC,IAAIC,EAAE,GAAGe,EAAE,YAAGxU,GAAG,EAAIozB,IAAI,EAAC,EAAK7e,IAAI;MACzE,OAAQphB,CAAC,GAAG,KAAK,GAAIkhB,EAAE,CAAC;IAC3B,CAAG,CAAC;EACJ,CAAE;EACD5K,QAAQ,oBAAEiY,GAAG,EAAE;IAChB;IACA;IACE,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAI7M,CAAC,GAAGnT,IAAI,CAACE,GAAG,CAAE8f,GAAG,GAAGqU,EAAE,GAAI,KAAK,EAAE,CAAC,CAAC,CAAC;MACxC,IAAIoB,GAAG,GAAGjC,EAAE,GAAGC,EAAE,YAAGtgB,CAAC,EAAIc,CAAC;MAC1B,IAAIyhB,KAAK,GAAG,CAAC,GAAGlB,EAAE,YAAGrhB,CAAC,EAAIc,CAAC;MAE3B,gBAAQwhB,GAAG,GAAGC,KAAK,EAAKpe,CAAC;IAC5B,CAAG,CAAC;EACJ;AACA,CAAC,CAAC;AChCF,IAAMzW,CAAC,GAAG,UAAU;AACpB,IAAMjB,CAAC,GAAG,UAAU,CAAC;AACrB,IAAM2Y,CAAC,GAAG,UAAU,CAAC;;AAErB,IAAMoL,KAAK,GAAG,MAAM,CAAC;;AAErB,iBAAe,IAAI2I,aAAa,CAAC;EAChC3H,EAAE,EAAE,YAAY;EAChBqC,KAAK,EAAE,aAAa;EACpB7nB,IAAI,EAAE,cAAc;EACpB6qB,QAAQ,EAAE,OAAO;EAEjB5J,IAAI,EAAEizB,eAAe;EACrB3pB,MAAM,kBAAEgY,GAAG,EAAE;IACd;IACA;IACE,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAChC;MACA;MACA;MACA;MACG,IAAIA,GAAG,IAAI,GAAG,EAAE;QACf,OAAQhgB,YAAG,EAAI,CAAC,IAAG,CAAC,GAAI2jB,KAAK;MACjC;MACG,OAAQ,CAAC3jB,IAAI,CAACqgB,GAAG,CAAC,CAACL,GAAG,GAAGzH,CAAC,IAAI1X,CAAC,CAAC,GAAGjB,CAAC,IAAI,EAAE,GAAI+jB,KAAK;IACtD,CAAG,CAAC;EACJ,CAAE;EACD8F,QAAQ,oBAAEiY,GAAG,EAAE;IAChB;IACA;IACA;IACE,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAChC;MACGA,GAAG,IAAI2D,KAAK;MACf;MACA;MACA;MACG,IAAI3D,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;QAClB,OAAOG,IAAI,CAAC,CAAC,GAAGH,GAAG,EAAE,GAAG,CAAC;MAC7B;MACG,OAAOnf,CAAC,GAAGb,IAAI,CAAC69B,GAAG,CAAC,EAAE,GAAG7d,GAAG,GAAGpgB,CAAC,CAAC,GAAG2Y,CAAC;IACxC,CAAG,CAAC;EACJ;AACA,CAAC,CAAC;;AC3CF;;AAEA;AACA;;AAEA;AACO,IAAM+6B,IAAI,GAAG,EAAE;AAEtB1xB,KAAK,CAACJ,GAAG,CAAC,4BAA4B,EAAE,aAAG,EAAI;EAC9C,IAAIE,GAAG,CAAC3f,OAAO,CAACu8B,MAAM,EAAE;IACvB5c,GAAG,CAACkE,CAAC,GAAGN,KAAK,CAAC5D,GAAG,CAAC8D,EAAE,EAAE9D,GAAG,CAAC+D,EAAE,EAAE/D,GAAG,CAAC3f,OAAO,CAACu8B,MAAM,CAAC;EACnD;AACA,CAAC,CAAC;AAEF1c,KAAK,CAACJ,GAAG,CAAC,0BAA0B,EAAE,aAAG,EAAI;EAC5C,IAAI,CAACE,GAAG,CAACkE,CAAC,EAAE;IACXlE,GAAG,CAACkE,CAAC,GAAGN,KAAK,CAAC5D,GAAG,CAAC8D,EAAE,EAAE9D,GAAG,CAAC+D,EAAE,EAAE/D,GAAG,CAAC3f,OAAO,CAACu8B,MAAM,CAAC;EACnD;AACA,CAAC,CAAC;AAEK,SAASiV,SAASA,4BAAmD;EAAA,IAA5B5uB,EAAE,UAAFA,EAAE;IAAE6uB,QAAQ,UAARA,QAAQ;IAAEC,UAAU,UAAVA,UAAU;EACxE;EACCH,IAAI,CAAC3uB,EAAE,CAAC,GAAG/U,SAAS,CAAC,CAAC,CAAC;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS0V,KAAKA,CAAEE,EAAE,EAAEC,EAAE,EAAmB;EAAA,IAAjBd,EAAE,uEAAG,UAAU;EAC9C;EACA;EACA;EACA;EACC,IAAI2Z,MAAM,GAAGgV,IAAI,CAAC3uB,EAAE,CAAC;EAErB,wBAAmB7G,gBAAgB,CAACwgB,MAAM,CAACkV,QAAQ,EAAEhuB,EAAE,CAAC;IAAAkuB;IAAnDC,EAAE;IAAEC,EAAE;IAAEC,EAAE;EACf,yBAAmB/1B,gBAAgB,CAACwgB,MAAM,CAACkV,QAAQ,EAAE/tB,EAAE,CAAC;IAAAquB;IAAnDC,EAAE;IAAEC,EAAE;IAAEC,EAAE;;EAEhB;EACA;EACC,IAAItwB,KAAK,GAAG,CACX,CAACowB,EAAE,GAAGJ,EAAE,EAAG,CAAC,EAAS,CAAC,CAAO,EAC7B,CAAC,CAAC,EAASK,EAAE,GAAGJ,EAAE,EAAG,CAAC,CAAO,EAC7B,CAAC,CAAC,EAAS,CAAC,EAASK,EAAE,GAAGJ,EAAE,CAAC,CAC7B;EACF;;EAEC,IAAIK,aAAa,GAAGp2B,gBAAgB,CAAC6F,KAAK,EAAE2a,MAAM,CAACkV,QAAQ,CAAC;EAC5D,IAAIW,OAAO,GAAGr2B,gBAAgB,CAACwgB,MAAM,CAACmV,UAAU,EAAES,aAAa,CAAC;EACjE;EACC,OAAOC,OAAO;AACf;;AAEA;AACAZ,SAAS,CAAC;EACT5uB,EAAE,EAAE,WAAW;EACf6uB,QAAQ,EAAE,CACT,CAAG,SAAS,EAAG,SAAS,EAAE,CAAC,SAAS,CAAE,EACtC,CAAE,CAAC,SAAS,EAAG,SAAS,EAAG,SAAS,CAAE,EACtC,CAAG,SAAS,EAAG,SAAS,EAAG,SAAS,CAAE,CACtC;EACDC,UAAU,EAAE,CACX,CAAE,kBAAkB,EAAE,CAAC,kBAAkB,EAAI,mBAAmB,CAAM,EACtE,CAAE,kBAAkB,EAAG,kBAAkB,EAAG,CAAC,uBAAuB,CAAE,EACtE,CAAE,CAAC,EAAoB,CAAC,EAAqB,kBAAkB,CAAO;AAExE,CAAC,CAAC;;AAEF;AACAF,SAAS,CAAC;EACT5uB,EAAE,EAAE,UAAU;EACf;EACA;EACC6uB,QAAQ,EAAE,CACT,CAAG,SAAS,EAAG,SAAS,EAAE,CAAC,SAAS,CAAE,EACtC,CAAE,CAAC,SAAS,EAAG,SAAS,EAAG,SAAS,CAAE,EACtC,CAAG,SAAS,EAAE,CAAC,SAAS,EAAG,SAAS,CAAE,CACtC;EACF;EACCC,UAAU,EAAE,CACX,CAAG,kBAAkB,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAG,EACnE,CAAG,kBAAkB,EAAG,kBAAkB,EAAG,oBAAoB,CAAE,EACnE,CAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,CAAM;AAErE,CAAC,CAAC;;AAEF;AACAF,SAAS,CAAC;EACT5uB,EAAE,EAAE,OAAO;EACZ;EACC6uB,QAAQ,EAAE,CACT,CAAG,SAAS,EAAG,SAAS,EAAE,CAAC,SAAS,CAAE,EACtC,CAAE,CAAC,SAAS,EAAG,SAAS,EAAG,SAAS,CAAE,EACtC,CAAG,SAAS,EAAG,SAAS,EAAG,SAAS,CAAE,CACtC;EACDC,UAAU,EAAE,CACX,CAAG,kBAAkB,EAAI,CAAC,mBAAmB,EAAE,mBAAmB,CAAE,EACpE,CAAG,kBAAkB,EAAK,kBAAkB,EAAG,mBAAmB,CAAE,EACpE,CAAE,CAAC,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAG;AAEtE,CAAC,CAAC;;AAEF;AACAF,SAAS,CAAC;EACT5uB,EAAE,EAAE,OAAO;EACX6uB,QAAQ,EAAE,CACT,CAAG,QAAQ,EAAG,QAAQ,EAAE,CAAC,QAAQ,CAAE,EACnC,CAAE,CAAC,QAAQ,EAAG,QAAQ,EAAG,QAAQ,CAAE,EACnC,CAAE,CAAC,QAAQ,EAAG,QAAQ,EAAG,QAAQ,CAAE,CACnC;EACF;EACCC,UAAU,EAAE,CACX,CAAG,iBAAiB,EAAI,CAAC,kBAAkB,EAAG,mBAAmB,CAAG,EACpE,CAAG,kBAAkB,EAAI,kBAAkB,EAAE,CAAC,oBAAoB,CAAE,EACpE,CAAE,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAI;AAEtE,CAAC,CAAC;;AAEF;AACAhmC,MAAM,CAACwW,MAAM,CAACiB,MAAM,EAAE;EACtB;EACA;EACA;EACCnH,CAAC,EAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAEjC;EACCmR,CAAC,EAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;EAElC;EACA;EACA;EACCklB,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAChCC,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAEjC;EACC7T,CAAC,EAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAEjC;EACC8T,EAAE,EAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAChCC,EAAE,EAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;EAChCC,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO;AAChC,CAAC,CAAC;;ACjJF;;AAEA;AACA;AACA;AACA;AACAtvB,MAAM,CAACuvB,IAAI,GAAG,CAAC,OAAO,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC;;AAE3E;AACA;AACA;AACA,IAAMhoB,OAAO,GAAG,CACf,CAAG,kBAAkB,EAAI,mBAAmB,EAAG,kBAAkB,CAAG,EACpE,CAAG,mBAAmB,EAAG,kBAAkB,EAAI,mBAAmB,CAAE,EACpE,CAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,CAAG,CACpE;AACD;AACA;AACA,IAAMC,SAAS,GAAG,CACjB,CAAG,kBAAkB,EAAI,CAAC,gBAAgB,EAAK,CAAC,mBAAmB,CAAG,EACtE,CAAE,CAAC,kBAAkB,EAAK,kBAAkB,EAAI,oBAAoB,CAAE,EACtE,CAAG,oBAAoB,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAI,CACtE;AAED,aAAe,IAAIJ,aAAa,CAAC;EAChC3H,EAAE,EAAE,QAAQ;EACZqC,KAAK,EAAE,UAAU;EACjB7nB,IAAI,EAAE,QAAQ;EAEf;EACA;EACA;EACCilB,MAAM,EAAE;IACP1kB,CAAC,EAAE;MACFqjB,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;MACjB5jB,IAAI,EAAE;IACT,CAAG;IACDQ,CAAC,EAAE;MACFojB,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;MACjB5jB,IAAI,EAAE;IACT,CAAG;IACDS,CAAC,EAAE;MACFmjB,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;MACjB5jB,IAAI,EAAE;IACT;EACA,CAAE;EAED6qB,QAAQ,EAAE,OAAO;EAEjB5c,KAAK,EAAE8X,MAAM,CAACuvB,IAAI;EAElBhoB,OAAO,EAAPA,OAAO;EACPC,SAAS,EAATA;AACD,CAAC,CAAC;;AAEF;;ACvDA,IAAMnD,CAAC,YAAG,CAAC,EAAI,CAAC,EAAE;;AAElB;AACA;AACA,IAAMmrB,gBAAgB,GAAG,CAAC,UAAU;;AAEpC;AACA,IAAMC,WAAW,GAAG,CAAC30C,IAAI,CAAC40C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;;AAEtD,aAAe,IAAItoB,aAAa,CAAC;EAChC3H,EAAE,EAAE,QAAQ;EACZqC,KAAK,EAAE,UAAU;EACjB7nB,IAAI,EAAE,QAAQ;EACf;EACA;EACA;;EAEA;EACA;EACA;EACA;EACCilB,MAAM,EAAE;IACP1kB,CAAC,EAAE;MACFqjB,KAAK,EAAE,CAAC2xB,gBAAgB,EAAEC,WAAW,CAAC;MACtCx1C,IAAI,EAAE;IACT,CAAG;IACDQ,CAAC,EAAE;MACFojB,KAAK,EAAE,CAAC2xB,gBAAgB,EAAEC,WAAW,CAAC;MACtCx1C,IAAI,EAAE;IACT,CAAG;IACDS,CAAC,EAAE;MACFmjB,KAAK,EAAE,CAAC2xB,gBAAgB,EAAEC,WAAW,CAAC;MACtCx1C,IAAI,EAAE;IACT;EACA,CAAE;EACD6qB,QAAQ,EAAE,OAAO;EAEjB5J,IAAI,EAAEy0B,MAAM;EACb;EACCnrB,MAAM,kBAAEgY,GAAG,EAAE;IACZ,IAAMhC,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,KAAK,CAAC;;IAEhC,OAAOgC,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAIA,GAAG,IAAI0f,GAAG,EAAE;QACf,OAAO,CAAC1/B,UAAC,EAAKggB,GAAG,GAAG,KAAK,GAAG,IAAI,IAAIuJ,CAAC,IAAI,CAAC,CAAC;MAC/C,OACQ,IAAIvJ,GAAG,GAAG20B,WAAW,EAAE;QAC3B,gBAAO,CAAC,EAAK30B,GAAG,GAAG,KAAK,GAAG,IAAI;MACnC,OACQ;QACR;QACI,OAAO,KAAK;MAChB;IACA,CAAG,CAAC;EACJ,CAAE;EAEF;EACCyJ,QAAQ,oBAAEiY,GAAG,EAAE;IACd,OAAOA,GAAG,CAAChvB,GAAG,CAAC,UAAUsN,GAAG,EAAE;MAC7B,IAAIA,GAAG,IAAI,CAAC,EAAE;QACb,OAAO,CAAChgB,IAAI,CAAC40C,IAAI,CAACrrB,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;MACzC,OACQ,IAAIvJ,GAAG,GAAGuJ,CAAC,EAAE;QACjB,OAAO,CAACvpB,IAAI,CAAC40C,IAAI,CAACrrB,CAAC,GAAGvJ,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK;MACpD,OACQ;QACR;QACI,OAAO,CAAChgB,IAAI,CAAC40C,IAAI,CAAC50B,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK;MAC1C;IACA,CAAG,CAAC;EACJ,CAAE,CACF;EACA;AACA,CAAC,CAAC;;AC7EF;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAkCqBhP,KAAK;EAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACC,iBAAsB;IAAA;IAAAqQ;IACrB,IAAIzgB,KAAK;IAAA,mCADM/B,IAAI;MAAJA,IAAI;IAAA;IAGnB,IAAIA,IAAI,CAACC,MAAM,KAAK,CAAC,EAAE;MACtB,IAAIqnB,SAAS,GAAG,EAAE;MACrB;MACG,IACClQ,QAAOpX,IAAI,CAAC,CAAC,CAAC,MAAK,QAAQ,IAC3B4O,MAAM,CAACwT,cAAc,CAACpiB,IAAI,CAAC,CAAC,CAAC,CAAC,CAACiiB,WAAW,KAAKrT,QAC9C;QACD5O,IAAI,CAAC,CAAC,CAAC,qBAAQA,IAAI,CAAC,CAAC,CAAC,CAAE;MAC5B;MACG+B,KAAK,GAAG0oB,QAAQ,CAACzqB,IAAI,CAAC,CAAC,CAAC,EAAE;QAAEsnB,SAAS,EAATA;MAAS,CAAE,CAAC;MAExC,IAAIA,SAAS,CAACpC,MAAM,EAAE;QACzB;QACI,IAAI,CAACoC,SAAS,GAAGA,SAAS;MAC9B;IACA;IAEE,IAAInC,KAAK,EAAEI,MAAM,EAAE/U,KAAK;IAExB,IAAIzO,KAAK,EAAE;MACVojB,KAAK,GAAGpjB,KAAK,CAACojB,KAAK,IAAIpjB,KAAK,CAACinB,OAAO;MACpCzD,MAAM,GAAGxjB,KAAK,CAACwjB,MAAM;MACrB/U,KAAK,GAAGzO,KAAK,CAACyO,KAAK;IACtB,OACO;MACP;MACI2U,KAAK,GAAmBnlB,IAAI;MAArBulB,MAAM,GAAWvlB,IAAI;MAAbwQ,KAAK,GAAIxQ,IAAI;IAChC;IAEE4O,MAAM,CAACkL,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;MACpCnY,KAAK,EAAEmmB,UAAU,CAAC3Y,GAAG,CAACgW,KAAK,CAAC;MAC5BmG,QAAQ,EAAE,KAAK;MACfC,UAAU,EAAE,IAAI;MAChBC,YAAY,EAAE,IAAI;IACrB,CAAG,CAAC;;IAEF,IAAI,CAACjG,MAAM,GAAGA,MAAM,GAAGA,MAAM,CAACjW,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;IAEnD;IACE,IAAI,CAACkB,KAAK,GAAGuf,MAAW,CAACvf,KAAK,CAAC,GAAGA,KAAK,GAAGA,KAAK,KAAKQ,SAAS,GAAG,CAAC,GAAGywB,KAAU,CAAC,CAAC,EAAEjxB,KAAK,EAAE,CAAC,CAAC;;IAE7F;IAAA,2BACWsV,EAAE;MACVlX,MAAM,CAACkL,cAAc,CAACm8B,MAAI,EAAEnwB,EAAE,EAAE;QAC/B3W,GAAG,EAAE;UAAA,OAAM8mC,MAAI,CAAC9mC,GAAG,CAAC2W,EAAE,CAAC;QAAA;QACvBmJ,GAAG,EAAE,kBAAK;UAAA,OAAIgnB,MAAI,CAAChnB,GAAG,CAACnJ,EAAE,EAAEnkB,KAAK,CAAC;QAAA;MACrC,CAAI,CAAC;IAAA;IAJH,KAAK,IAAImkB,EAAE,IAAI,IAAI,CAACX,KAAK,CAACI,MAAM,EAAE;MAAA9N,MAAzBqO,EAAE;IAKb;EACA;EAAArD;IAAA9T;IAAAQ,KAEC,eAAe;MACd,OAAO,IAAI,CAACgW,KAAK,CAACW,EAAE;IACtB;EAAA;IAAAnX;IAAAhN,OAEC,iBAAS;MACR,OAAO,IAAIwQ,KAAK,CAAC,IAAI,CAACgT,KAAK,EAAE,IAAI,CAACI,MAAM,EAAE,IAAI,CAAC/U,KAAK,CAAC;IACvD;EAAA;IAAA7B;IAAAhN,OAEC,kBAAU;MACT,OAAO;QACNqnB,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBzD,MAAM,EAAE,IAAI,CAACA,MAAM;QACnB/U,KAAK,EAAE,IAAI,CAACA;MACf,CAAG;IACH;EAAA;IAAA7B;IAAAhN,OAEC,mBAAkB;MAAA,mCAAN3B,IAAI;QAAJA,IAAI;MAAA;MACf,IAAI2f,GAAG,GAAGskB,QAAO,gBAAC,IAAI,SAAKjkC,IAAI,EAAC;;MAElC;MACE2f,GAAG,CAAC5d,KAAK,GAAG,IAAIoQ,KAAK,CAACwN,GAAG,CAAC5d,KAAK,CAAC;MAEhC,OAAO4d,GAAG;IACZ;;IAEA;AACA;AACA;AACA;EAHA;IAAAhR;IAAAhN,OAIC,aAAYI,KAAK,EAAW;MAC3B,IAAIm0C,UAAe,CAACn0C,KAAK,EAAE,IAAI,CAAC,EAAE;QACjC,OAAOA,KAAK;MACf;MAAA,mCAHuB/B,IAAI;QAAJA,IAAI;MAAA;MAKzB,kBAAWmS,KAAK,GAACpQ,KAAK,SAAK/B,IAAI;IACjC;;IAEA;AACA;AACA;AACA;AACA;EAJA;IAAA2O;IAAAhN,OAKC,cAAYI,KAAK,EAAEmB,OAAO,EAAE;MAC3B,IAAIgzC,UAAe,CAACn0C,KAAK,EAAE,IAAI,CAAC,EAAE;QACjC,OAAOA,KAAK;MACf;MAEE,IAAI4d,GAAG,GAAGoO,QAAQ,CAAChsB,KAAK,EAAEmB,OAAO,CAAC;MAElC,IAAIyc,GAAG,EAAE;QACR,OAAO,IAAIxN,KAAK,CAACwN,GAAG,CAAC;MACxB;MAEE,OAAO,IAAI;IACb;EAAA;IAAAhR;IAAAhN,OAEC,wBAAuBrB,IAAI,EAAE61C,IAAI,EAAY;MAAA,IAAV71B,CAAC,uEAAG61B,IAAI;MAC1C,kBAAmC71B,CAAC,CAA9ByE,QAAQ;QAARA,QAAQ,4BAAG,IAAI;QAAEiK,OAAO,GAAK1O,CAAC,CAAb0O,OAAO;MAE9B,IAAIonB,IAAI,GAAG,SAAPA,IAAIA,GAAsB;QAC7B,IAAIz2B,GAAG,GAAGw2B,IAAI,wBAAQ,CAAC;QAEvB,IAAInnB,OAAO,KAAK,OAAO,EAAE;UACxBrP,GAAG,GAAGxN,KAAK,CAAChD,GAAG,CAACwQ,GAAG,CAAC;QACxB,OACQ,IAAIqP,OAAO,KAAK,iBAAiB,EAAE;UACvC,IAAIpZ,CAAC,GAAG+J,GAAG;UACXA,GAAG,GAAG,eAAmB;YACxB,IAAIA,GAAG,GAAG/J,CAAC,wBAAQ,CAAC;YACpB,OAAOzD,KAAK,CAAChD,GAAG,CAACwQ,GAAG,CAAC;UAC1B,CAAK;UACL;UACI/Q,MAAM,CAACwW,MAAM,CAACzF,GAAG,EAAE/J,CAAC,CAAC;QACzB,OACQ,IAAIoZ,OAAO,KAAK,cAAc,EAAE;UACpCrP,GAAG,GAAGA,GAAG,CAAC9L,GAAG,CAAC,WAAC;YAAA,OAAI1B,KAAK,CAAChD,GAAG,CAACuK,CAAC,CAAC;UAAA,EAAC;QACpC;QAEG,OAAOiG,GAAG;MACb,CAAG;MAED,IAAI,EAAErf,IAAI,IAAI6R,KAAK,CAAC,EAAE;QACrBA,KAAK,CAAC7R,IAAI,CAAC,GAAG81C,IAAI;MACrB;MAEE,IAAIrxB,QAAQ,EAAE;QACb5S,KAAK,CAACxS,SAAS,CAACW,IAAI,CAAC,GAAG,YAAmB;UAAA,mCAANN,IAAI;YAAJA,IAAI;UAAA;UACxC,OAAOo2C,IAAI,gBAAC,IAAI,SAAKp2C,IAAI,EAAC;QAC9B,CAAI;MACJ;IACA;EAAA;IAAA2O;IAAAhN,OAEC,yBAAwB2e,CAAC,EAAE;MAC1B,KAAK,IAAIhgB,IAAI,IAAIggB,CAAC,EAAE;QACnBnO,KAAK,CAACs3B,cAAc,CAACnpC,IAAI,EAAEggB,CAAC,CAAChgB,IAAI,CAAC,EAAEggB,CAAC,CAAChgB,IAAI,CAAC,CAAC;MAC/C;IACA;EAAA;IAAAqO;IAAAhN,OAEC,gBAAenC,OAAO,EAAE;MACvB,IAAIA,OAAO,CAAC+sB,QAAQ,EAAE;QACrB/sB,OAAO,CAAC+sB,QAAQ,CAACpa,KAAK,CAAC;MAC1B,OACO;QACP;QACG,KAAK,IAAI7R,IAAI,IAAId,OAAO,EAAE;UACzB2S,KAAK,CAACs3B,cAAc,CAACnpC,IAAI,EAAEd,OAAO,CAACc,IAAI,CAAC,CAAC;QAC7C;MACA;IACA;EAAA;EAAA;AAAA;AAGA6R,KAAK,CAACkkC,eAAe,CAAC;EACrBlnC,GAAG,EAAHA,GAAG;EACHyf,MAAM,EAANA,MAAM;EACNK,GAAG,EAAHA,GAAG;EACHF,MAAM,EAANA,MAAM;EACNltB,EAAE,EAAFA,EAAE;EACF8pB,MAAM,EAANA,MAAM;EACNT,OAAO,EAAPA,OAAO;EACP0U,OAAO,EAAPA,OAAO;EACP1kB,QAAQ,EAARA,QAAQ;EACRmpB,MAAM,EAANA,MAAM;EACN9yB,QAAQ,EAAEsU;AACX,CAAC,CAAC;AAEFjX,MAAM,CAACwW,MAAM,CAACjT,KAAK,EAAE;EACpBmkC,IAAI,EAAJA,IAAI;EACJvzB,KAAK,EAALA,KAAK;EACLsD,MAAM,EAANA,MAAM;EACNkwB,KAAK,EAAEzuB,UAAU;EACjB8E,MAAM,EAAE9E,UAAU,CAACI,QAAQ;EAC3BlB,KAAK,EAALA,KAAK;EAEN;EACCyB,QAAQ,EAARA;AACD,CAAC,CAAC;;ACxOF;AACA;AACA;AACA;;AAIA,iCAAgB7Z,MAAM,CAACiD,IAAI,CAAC+a,MAAM,CAAC,oCAAE;EAAhC,IAAIje,GAAG;EACXmZ,UAAU,CAACyE,QAAQ,CAACK,MAAM,CAACje,GAAG,CAAC,CAAC;AACjC;;ACTA;AACA;AACA;AACA;;AAKA;AACA,KAAK,IAAImX,EAAE,IAAIgC,UAAU,CAACI,QAAQ,EAAE;EACnCsuB,iBAAiB,CAAC1wB,EAAE,EAAEgC,UAAU,CAACI,QAAQ,CAACpC,EAAE,CAAC,CAAC;AAC/C;;AAEA;AACA/C,KAAK,CAACJ,GAAG,CAAC,qBAAqB,EAAE,eAAK,EAAI;EAAA;EACzC6zB,iBAAiB,CAACrxB,KAAK,CAACW,EAAE,EAAEX,KAAK,CAAC;EAClC,uBAAK,CAACwF,OAAO,mDAAb8rB,eAAe7zB,OAAO,CAAC,eAAK,EAAI;IAC/B4zB,iBAAiB,CAAClqB,KAAK,EAAEnH,KAAK,CAAC;EACjC,CAAE,CAAC;AACH,CAAC,CAAC;AAEF,SAASqxB,iBAAiBA,CAAE1wB,EAAE,EAAEX,KAAK,EAAE;EACtC,IAAIuxB,MAAM,GAAG5wB,EAAE,CAAC0C,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;EAElC5Z,MAAM,CAACkL,cAAc,CAAC3H,KAAK,CAACxS,SAAS,EAAE+2C,MAAM,EAAE;IAChD;IACA;IACA;IACEvnC,GAAG,iBAAI;MAAA;MACN,IAAIwQ,GAAG,GAAG,IAAI,CAACiP,MAAM,CAAC9I,EAAE,CAAC;MAEzB,IAAI,OAAO6wB,KAAK,KAAK,WAAW,EAAE;QACrC;QACI,OAAOh3B,GAAG;MACd;;MAEA;MACG,IAAIi3B,KAAK,GAAG,IAAID,KAAK,CAACh3B,GAAG,EAAE;QAC1Bk3B,GAAG,iCAAkC,aAACC,GAAG,EAAEC,QAAQ,EAAK;UACvD,IAAI;YACHjvB,UAAU,CAACgH,YAAY,CAAC,CAAC3J,KAAK,EAAE4xB,QAAQ,CAAC,CAAC;YAC1C,OAAO,IAAI;UACjB,EACK,OAAOphC,CAAC,EAAE;UAEV,OAAOzV,OAAO,CAAC22C,GAAG,CAACC,GAAG,EAAEC,QAAQ,CAAC;QACtC,CAAK;QACD5nC,GAAG,EAAE,aAAC2nC,GAAG,EAAEC,QAAQ,EAAEC,QAAQ,EAAK;UACjC,IACCD,QAAQ,IACR3/B,QAAO2/B,QAAQ,MAAK,QAAQ,IAC5B,EAAEA,QAAQ,IAAID,GAAG,CAAC,IAClBC,QAAQ,IAAIH,OACX;YACD,6BAAgB9uB,UAAU,CAACgH,YAAY,CAAC,CAAC3J,KAAK,EAAE4xB,QAAQ,CAAC,CAAC;cAApDzpB,KAAK,0BAALA,KAAK;YAEX,IAAIA,KAAK,IAAI,CAAC,EAAE;cACf,OAAOwpB,GAAG,CAACxpB,KAAK,CAAC;YACxB;UACA;UAEK,OAAOptB,OAAO,CAACiP,GAAG,CAAC2nC,GAAG,EAAEC,QAAQ,EAAEC,QAAQ,CAAC;QAChD,CAAK;QACD/nB,GAAG,EAAE,aAAC6nB,GAAG,EAAEC,QAAQ,EAAEp1C,KAAK,EAAEq1C,QAAQ,EAAK;UACxC,IACED,QAAQ,IAAI3/B,QAAO2/B,QAAQ,MAAK,QAAQ,IAAI,EAAEA,QAAQ,IAAID,GAAG,CAAC,IAC/D1mC,MAAM,CAAC2mC,QAAQ,CAAC,IAAI,GACnB;YACD,6BAAgBjvB,UAAU,CAACgH,YAAY,CAAC,CACvC3J,KAAK,EACZ,qBAA8B4xB,QAAQ,CAC/B,CAAC;cAHIzpB,KAAK,0BAALA,KAAK;YAKX,IAAIA,KAAK,IAAI,CAAC,EAAE;cACfwpB,GAAG,CAACxpB,KAAK,CAAC,GAAG3rB,KAAK;;cAEzB;cACOs1C,MAAI,CAACloB,MAAM,CAACjJ,EAAE,EAAEgxB,GAAG,CAAC;cAEpB,OAAO,IAAI;YAClB;UACA;UAEK,OAAO52C,OAAO,CAAC+uB,GAAG,CAAC6nB,GAAG,EAAEC,QAAQ,EAAEp1C,KAAK,EAAEq1C,QAAQ,CAAC;QACvD;MACA,CAAI,CAAC;MAEF,OAAOJ,KAAK;IACf,CAAG;IACH;IACA;IACA;IACE3nB,GAAG,eAAE1J,MAAM,EAAE;MACZ,IAAI,CAACwJ,MAAM,CAACjJ,EAAE,EAAEP,MAAM,CAAC;IAC1B,CAAG;IACDiG,YAAY,EAAE,IAAI;IAClBD,UAAU,EAAE;EACd,CAAE,CAAC;AACH;;AClGA;AACA;AACA;AACA;;AAUApZ,KAAK,CAAC+kC,MAAM,CAAC3W,aAAa,CAAC;AAC3BpuB,KAAK,CAAC+kC,MAAM,CAAC;EAAEj0B,MAAM,EAANA;AAAM,CAAE,CAAC;AACxBrU,MAAM,CAACwW,MAAM,CAACjT,KAAK,EAAE;EAAEouB,aAAa,EAAbA;AAAa,CAAE,CAAC;AAIvCpuB,KAAK,CAAC+kC,MAAM,CAACC,UAAU,CAAC;AAGxBhlC,KAAK,CAAC+kC,MAAM,CAAC;EAAErhC,QAAQ,EAARA;AAAQ,CAAE,CAAC;AAG1B1D,KAAK,CAAC+kC,MAAM,CAACE,YAAY,CAAC;AAG1BjlC,KAAK,CAAC+kC,MAAM,CAACG,SAAS,CAAC;AAGvBllC,KAAK,CAAC+kC,MAAM,CAACI,aAAa,CAAC;AAG3BnlC,KAAK,CAAC+kC,MAAM,CAACK,eAAe,CAAC;;;;;;;;;;;;;AClChB;;AAAA,SAAAngC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIW,eAAe,GAAGt4C,mBAAO,CAAC,sEAAoB,CAAC;AAEnD,IAAIu4C,YAAY,GAAGv4C,mBAAO,CAAC,4DAAkB,CAAC;AAC9C,IAAIU,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;AAE1C,IAAIw4C,IAAI,GAAGx4C,mBAAO,CAAC,0CAAM,CAAC;;AAE1B;AACAI,MAAM,CAACC,OAAO,GAAG,SAASo4C,kBAAkBA,CAC3Cd,GAAG,EACHC,QAAQ,EACRp1C,KAAK,EACJ;EACD,IAAI,CAACm1C,GAAG,IAAK1/B,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,IAAI,OAAOA,GAAG,KAAK,UAAW,EAAE;IACnE,MAAM,IAAIj3C,UAAU,CAAC,wCAAwC,CAAC;EAC/D;EACA,IAAI,OAAOk3C,QAAQ,KAAK,QAAQ,IAAI3/B,OAAA,CAAO2/B,QAAQ,MAAK,QAAQ,EAAE;IACjE,MAAM,IAAIl3C,UAAU,CAAC,0CAA0C,CAAC;EACjE;EACA,IAAIkR,SAAS,CAAC9Q,MAAM,GAAG,CAAC,IAAI,OAAO8Q,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;IACvF,MAAM,IAAIlR,UAAU,CAAC,yDAAyD,CAAC;EAChF;EACA,IAAIkR,SAAS,CAAC9Q,MAAM,GAAG,CAAC,IAAI,OAAO8Q,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;IACvF,MAAM,IAAIlR,UAAU,CAAC,uDAAuD,CAAC;EAC9E;EACA,IAAIkR,SAAS,CAAC9Q,MAAM,GAAG,CAAC,IAAI,OAAO8Q,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,IAAIA,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;IACvF,MAAM,IAAIlR,UAAU,CAAC,2DAA2D,CAAC;EAClF;EACA,IAAIkR,SAAS,CAAC9Q,MAAM,GAAG,CAAC,IAAI,OAAO8Q,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;IAC9D,MAAM,IAAIlR,UAAU,CAAC,yCAAyC,CAAC;EAChE;EAEA,IAAIg4C,aAAa,GAAG9mC,SAAS,CAAC9Q,MAAM,GAAG,CAAC,GAAG8Q,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;EAC9D,IAAI+mC,WAAW,GAAG/mC,SAAS,CAAC9Q,MAAM,GAAG,CAAC,GAAG8Q,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;EAC5D,IAAIgnC,eAAe,GAAGhnC,SAAS,CAAC9Q,MAAM,GAAG,CAAC,GAAG8Q,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;EAChE,IAAIinC,KAAK,GAAGjnC,SAAS,CAAC9Q,MAAM,GAAG,CAAC,GAAG8Q,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;;EAEvD;EACA,IAAIknC,IAAI,GAAG,CAAC,CAACN,IAAI,IAAIA,IAAI,CAACb,GAAG,EAAEC,QAAQ,CAAC;EAExC,IAAIU,eAAe,EAAE;IACpBA,eAAe,CAACX,GAAG,EAAEC,QAAQ,EAAE;MAC9BvrB,YAAY,EAAEusB,eAAe,KAAK,IAAI,IAAIE,IAAI,GAAGA,IAAI,CAACzsB,YAAY,GAAG,CAACusB,eAAe;MACrFxsB,UAAU,EAAEssB,aAAa,KAAK,IAAI,IAAII,IAAI,GAAGA,IAAI,CAAC1sB,UAAU,GAAG,CAACssB,aAAa;MAC7El2C,KAAK,EAAEA,KAAK;MACZ2pB,QAAQ,EAAEwsB,WAAW,KAAK,IAAI,IAAIG,IAAI,GAAGA,IAAI,CAAC3sB,QAAQ,GAAG,CAACwsB;IAC3D,CAAC,CAAC;EACH,CAAC,MAAM,IAAIE,KAAK,IAAK,CAACH,aAAa,IAAI,CAACC,WAAW,IAAI,CAACC,eAAgB,EAAE;IACzE;IACAjB,GAAG,CAACC,QAAQ,CAAC,GAAGp1C,KAAK,CAAC,CAAC;EACxB,CAAC,MAAM;IACN,MAAM,IAAI+1C,YAAY,CAAC,6GAA6G,CAAC;EACtI;AACD,CAAC,C;;;;;;;;;;;;ACvDY;;AAAA,SAAAtgC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIjlC,IAAI,GAAG1S,mBAAO,CAAC,wDAAa,CAAC;AACjC,IAAI+4C,UAAU,GAAG,OAAOlzB,MAAM,KAAK,UAAU,IAAI5N,OAAA,CAAO4N,MAAM,CAAC,KAAK,CAAC,MAAK,QAAQ;AAElF,IAAImzB,KAAK,GAAGvpC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ;AACrC,IAAIgC,MAAM,GAAGpC,KAAK,CAACxR,SAAS,CAAC4T,MAAM;AACnC,IAAIqkC,kBAAkB,GAAGz4C,mBAAO,CAAC,0EAAsB,CAAC;AAExD,IAAIi5C,UAAU,GAAG,SAAbA,UAAUA,CAAa96B,EAAE,EAAE;EAC9B,OAAO,OAAOA,EAAE,KAAK,UAAU,IAAI66B,KAAK,CAAC14C,IAAI,CAAC6d,EAAE,CAAC,KAAK,mBAAmB;AAC1E,CAAC;AAED,IAAI+6B,mBAAmB,GAAGl5C,mBAAO,CAAC,kFAA0B,CAAC,CAAC,CAAC;AAE/D,IAAI2a,cAAc,GAAG,SAAjBA,cAAcA,CAAa1H,MAAM,EAAE9R,IAAI,EAAEqB,KAAK,EAAE22C,SAAS,EAAE;EAC9D,IAAIh4C,IAAI,IAAI8R,MAAM,EAAE;IACnB,IAAIkmC,SAAS,KAAK,IAAI,EAAE;MACvB,IAAIlmC,MAAM,CAAC9R,IAAI,CAAC,KAAKqB,KAAK,EAAE;QAC3B;MACD;IACD,CAAC,MAAM,IAAI,CAACy2C,UAAU,CAACE,SAAS,CAAC,IAAI,CAACA,SAAS,CAAC,CAAC,EAAE;MAClD;IACD;EACD;EAEA,IAAID,mBAAmB,EAAE;IACxBT,kBAAkB,CAACxlC,MAAM,EAAE9R,IAAI,EAAEqB,KAAK,EAAE,IAAI,CAAC;EAC9C,CAAC,MAAM;IACNi2C,kBAAkB,CAACxlC,MAAM,EAAE9R,IAAI,EAAEqB,KAAK,CAAC;EACxC;AACD,CAAC;AAED,IAAI42C,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAanmC,MAAM,EAAEyB,GAAG,EAAE;EAC7C,IAAI2kC,UAAU,GAAGznC,SAAS,CAAC9Q,MAAM,GAAG,CAAC,GAAG8Q,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACzD,IAAI0nC,KAAK,GAAG5mC,IAAI,CAACgC,GAAG,CAAC;EACrB,IAAIqkC,UAAU,EAAE;IACfO,KAAK,GAAGllC,MAAM,CAAC9T,IAAI,CAACg5C,KAAK,EAAE7pC,MAAM,CAAC8pC,qBAAqB,CAAC7kC,GAAG,CAAC,CAAC;EAC9D;EACA,KAAK,IAAI5D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwoC,KAAK,CAACx4C,MAAM,EAAEgQ,CAAC,IAAI,CAAC,EAAE;IACzC6J,cAAc,CAAC1H,MAAM,EAAEqmC,KAAK,CAACxoC,CAAC,CAAC,EAAE4D,GAAG,CAAC4kC,KAAK,CAACxoC,CAAC,CAAC,CAAC,EAAEuoC,UAAU,CAACC,KAAK,CAACxoC,CAAC,CAAC,CAAC,CAAC;EACtE;AACD,CAAC;AAEDsoC,gBAAgB,CAACF,mBAAmB,GAAG,CAAC,CAACA,mBAAmB;AAE5D94C,MAAM,CAACC,OAAO,GAAG+4C,gBAAgB,C;;;;;;;;;;;;AC9CpB;;AAAA,SAAAnhC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAI6B,QAAQ,GAAGx5C,mBAAO,CAAC,gFAAyB,CAAC;AACjD,IAAIy5C,IAAI,GAAGz5C,mBAAO,CAAC,0CAAM,CAAC;AAE1B,IAAI05C,gBAAgB;AACpB,IAAI;EACH;EACAA,gBAAgB,GAAG,qDAAuD,EAAE,CAAEC,SAAS,KAAK3nC,KAAK,CAACxR,SAAS;AAC5G,CAAC,CAAC,OAAOgW,CAAC,EAAE;EACX,IAAI,CAACA,CAAC,IAAIyB,OAAA,CAAOzB,CAAC,MAAK,QAAQ,IAAI,EAAE,MAAM,IAAIA,CAAC,CAAC,IAAIA,CAAC,CAACwgC,IAAI,KAAK,kBAAkB,EAAE;IACnF,MAAMxgC,CAAC;EACR;AACD;;AAEA;AACA,IAAIsiC,IAAI,GAAG,CAAC,CAACY,gBAAgB,IAAID,IAAI,IAAIA,IAAI,CAAChqC,MAAM,CAACjP,SAAS,EAAE,4CAA8C,WAAY,CAAC;AAE3H,IAAIo5C,OAAO,GAAGnqC,MAAM;AACpB,IAAIoqC,eAAe,GAAGD,OAAO,CAAC32B,cAAc;;AAE5C;AACA7iB,MAAM,CAACC,OAAO,GAAGy4C,IAAI,IAAI,OAAOA,IAAI,CAAC9oC,GAAG,KAAK,UAAU,GACpDwpC,QAAQ,CAAC,CAACV,IAAI,CAAC9oC,GAAG,CAAC,CAAC,GACpB,OAAO6pC,eAAe,KAAK,UAAU,GACpC,8BAA+B,SAASC,SAASA,CAACt3C,KAAK,EAAE;EAC1D;EACA,OAAOq3C,eAAe,CAACr3C,KAAK,IAAI,IAAI,GAAGA,KAAK,GAAGo3C,OAAO,CAACp3C,KAAK,CAAC,CAAC;AAC/D,CAAC,GACC,KAAK,C;;;;;;;;;;;;AC7BI;;AAEb,IAAI9B,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;AAE1C,IAAI+5C,UAAU,GAAG/5C,mBAAO,CAAC,wDAAa,CAAC;AAEvC,IAAIg6C,OAAO,GAAGh6C,mBAAO,CAAC,8DAAgB,CAAC;AAEvC,IAAIi6C,IAAI,GAAGj6C,mBAAO,CAAC,sDAAQ,CAAC;AAC5B,IAAIk6C,aAAa,GAAGl6C,mBAAO,CAAC,wEAAiB,CAAC;;AAE9C;;AAEA;AACAI,MAAM,CAACC,OAAO,GAAG,SAAS85C,SAASA,CAACC,CAAC,EAAEC,CAAC,EAAE;EACzC;EACA,IAAI,CAACH,aAAa,CAACG,CAAC,CAAC,EAAE;IACtB,MAAM,IAAI35C,UAAU,CAAC,2CAA2C,CAAC;EAClE;;EAEA;EACA,IAAIu2C,IAAI,GAAGgD,IAAI,CAACG,CAAC,EAAEC,CAAC,CAAC;;EAErB;EACA,IAAIpD,IAAI,IAAI,IAAI,EAAE;IACjB,OAAO,KAAK,CAAC;EACd;;EAEA;EACA,IAAI,CAAC8C,UAAU,CAAC9C,IAAI,CAAC,EAAE;IACtB,MAAM,IAAIv2C,UAAU,CAACs5C,OAAO,CAACK,CAAC,CAAC,GAAG,sBAAsB,GAAGL,OAAO,CAAC/C,IAAI,CAAC,CAAC;EAC1E;;EAEA;EACA,OAAOA,IAAI;AACZ,CAAC,C;;;;;;;;;;;;ACnCY;;AAEb,IAAIv2C,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;AAE1C,IAAIg6C,OAAO,GAAGh6C,mBAAO,CAAC,8DAAgB,CAAC;AAEvC,IAAIk6C,aAAa,GAAGl6C,mBAAO,CAAC,wEAAiB,CAAC;;AAE9C;;AAEA;AACAI,MAAM,CAACC,OAAO,GAAG,SAAS45C,IAAIA,CAACK,CAAC,EAAED,CAAC,EAAE;EACpC;EACA,IAAI,CAACH,aAAa,CAACG,CAAC,CAAC,EAAE;IACtB,MAAM,IAAI35C,UAAU,CAAC,iDAAiD,GAAGs5C,OAAO,CAACK,CAAC,CAAC,CAAC;EACrF;;EAEA;EACA;;EAEA;EACA,OAAO,yCAA0CC,CAAC,CAAED,CAAC;EAAC,EAAC,CAAC;AACzD,CAAC,C;;;;;;;;;;;;ACtBY;;AAEb;AAAA,SAAApiC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AACAv3C,MAAM,CAACC,OAAO,GAAG,SAAS65C,aAAaA,CAACK,QAAQ,EAAE;EACjD,OAAO,OAAOA,QAAQ,KAAK,QAAQ,IAAItiC,OAAA,CAAOsiC,QAAQ,MAAK,QAAQ;AACpE,CAAC,C;;;;;;;;;;;;ACLY;;AAEb,IAAI75C,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;AAE1C,IAAI8P,MAAM,GAAG9P,mBAAO,CAAC,8CAAQ,CAAC;AAC9B,IAAIw6C,QAAQ,GAAGx6C,mBAAO,CAAC,4EAA0B,CAAC;AAElD,IAAIk6C,aAAa,GAAGl6C,mBAAO,CAAC,qFAA0B,CAAC;;AAEvD;;AAEAI,MAAM,CAACC,OAAO,GAAG,SAASo6C,cAAcA,CAACL,CAAC,EAAEC,CAAC,EAAE;EAC9C,IAAI,CAACG,QAAQ,CAACJ,CAAC,CAAC,EAAE;IACjB,MAAM,IAAI15C,UAAU,CAAC,yCAAyC,CAAC;EAChE;EACA,IAAI,CAACw5C,aAAa,CAACG,CAAC,CAAC,EAAE;IACtB,MAAM,IAAI35C,UAAU,CAAC,8CAA8C,CAAC;EACrE;EACA,OAAOoP,MAAM,CAACsqC,CAAC,EAAEC,CAAC,CAAC;AACpB,CAAC,C;;;;;;;;;;;;ACnBY;;AAEb,IAAIK,WAAW,GAAG16C,mBAAO,CAAC,wEAAwB,CAAC;;AAEnD;;AAEAI,MAAM,CAACC,OAAO,GAAG,SAASs6C,WAAWA,CAAC95B,KAAK,EAAE;EAC5C,IAAIjP,SAAS,CAAC9Q,MAAM,GAAG,CAAC,EAAE;IACzB,OAAO45C,WAAW,CAAC75B,KAAK,EAAEjP,SAAS,CAAC,CAAC,CAAC,CAAC;EACxC;EACA,OAAO8oC,WAAW,CAAC75B,KAAK,CAAC;AAC1B,CAAC,C;;;;;;;;;;;;ACXY;;AAAA,SAAA5I,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAI32C,YAAY,GAAGhB,mBAAO,CAAC,4DAAe,CAAC;AAE3C,IAAI46C,OAAO,GAAG55C,YAAY,CAAC,UAAU,CAAC;AAEtC,IAAI25C,WAAW,GAAG36C,mBAAO,CAAC,qEAAe,CAAC;AAC1C,IAAI66C,QAAQ,GAAG76C,mBAAO,CAAC,+DAAY,CAAC;;AAEpC;;AAEAI,MAAM,CAACC,OAAO,GAAG,SAASy6C,aAAaA,CAACP,QAAQ,EAAE;EACjD,IAAI/qC,GAAG,GAAGmrC,WAAW,CAACJ,QAAQ,EAAEK,OAAO,CAAC;EACxC,OAAO3iC,OAAA,CAAOzI,GAAG,MAAK,QAAQ,GAAGA,GAAG,GAAGqrC,QAAQ,CAACrrC,GAAG,CAAC;AACrD,CAAC,C;;;;;;;;;;;;ACdY;;AAAA,SAAAyI,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAI32C,YAAY,GAAGhB,mBAAO,CAAC,4DAAe,CAAC;AAE3C,IAAI46C,OAAO,GAAG55C,YAAY,CAAC,UAAU,CAAC;AACtC,IAAIN,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;;AAE1C;;AAEAI,MAAM,CAACC,OAAO,GAAG,SAASw6C,QAAQA,CAACN,QAAQ,EAAE;EAC5C,IAAItiC,OAAA,CAAOsiC,QAAQ,MAAK,QAAQ,EAAE;IACjC,MAAM,IAAI75C,UAAU,CAAC,2CAA2C,CAAC;EAClE;EACA,OAAOk6C,OAAO,CAACL,QAAQ,CAAC;AACzB,CAAC,C;;;;;;;;;;;;ACdY;;AAAA,SAAAtiC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEbv3C,MAAM,CAACC,OAAO,GAAG,SAAS65C,aAAaA,CAACK,QAAQ,EAAE;EACjD,OAAO,OAAOA,QAAQ,KAAK,QAAQ,IAAItiC,OAAA,CAAOsiC,QAAQ,MAAK,QAAQ;AACpE,CAAC,C;;;;;;;;;;;;ACJY;;AAEb;AACA,IAAIjC,eAAe,GAAG7oC,MAAM,CAACkL,cAAc,IAAI,KAAK;AACpD,IAAI29B,eAAe,EAAE;EACpB,IAAI;IACHA,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;MAAE91C,KAAK,EAAE;IAAE,CAAC,CAAC;EACvC,CAAC,CAAC,OAAOgU,CAAC,EAAE;IACX;IACA8hC,eAAe,GAAG,KAAK;EACxB;AACD;AAEAl4C,MAAM,CAACC,OAAO,GAAGi4C,eAAe,C;;;;;;;;;;;;ACbnB;;AAEb;AACAl4C,MAAM,CAACC,OAAO,GAAG06C,SAAS,C;;;;;;;;;;;;ACHb;;AAEb;AACA36C,MAAM,CAACC,OAAO,GAAG6S,KAAK,C;;;;;;;;;;;;ACHT;;AAEb;AACA9S,MAAM,CAACC,OAAO,GAAG26C,UAAU,C;;;;;;;;;;;;ACHd;;AAEb;AACA56C,MAAM,CAACC,OAAO,GAAG46C,cAAc,C;;;;;;;;;;;;ACHlB;;AAEb;AACA76C,MAAM,CAACC,OAAO,GAAG66C,WAAW,C;;;;;;;;;;;;ACHf;;AAEb;AACA96C,MAAM,CAACC,OAAO,GAAG8kB,SAAS,C;;;;;;;;;;;;ACHb;;AAEb;AACA/kB,MAAM,CAACC,OAAO,GAAG86C,QAAQ,C;;;;;;;;;;;;ACHZ;;AAEb,IAAIz6C,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;;AAE1C;AACAI,MAAM,CAACC,OAAO,GAAG,SAAS+6C,sBAAsBA,CAAC54C,KAAK,EAAE;EACvD,IAAIA,KAAK,IAAI,IAAI,EAAE;IAClB,MAAM,IAAI9B,UAAU,CAAEkR,SAAS,CAAC9Q,MAAM,GAAG,CAAC,IAAI8Q,SAAS,CAAC,CAAC,CAAC,IAAM,wBAAwB,GAAGpP,KAAM,CAAC;EACnG;EACA,OAAOA,KAAK;AACb,CAAC,C;;;;;;;;;;;;ACVY;;AAEb,IAAIo3C,OAAO,GAAG55C,mBAAO,CAAC,mDAAI,CAAC;AAC3B,IAAIo7C,sBAAsB,GAAGp7C,mBAAO,CAAC,0FAA0B,CAAC;;AAEhE;AACAI,MAAM,CAACC,OAAO,GAAG,SAASg7C,QAAQA,CAAC74C,KAAK,EAAE;EACzC44C,sBAAsB,CAAC54C,KAAK,CAAC;EAC7B,OAAOo3C,OAAO,CAACp3C,KAAK,CAAC;AACtB,CAAC,C;;;;;;;;;;;;ACTY;;AAEb;AACApC,MAAM,CAACC,OAAO,GAAGoP,MAAM,C;;;;;;;;;;;;ACHV;;AAEb;AAAA,SAAAwI,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AACAv3C,MAAM,CAACC,OAAO,GAAG,SAASm6C,QAAQA,CAACrlC,CAAC,EAAE;EACrC,OAAO,CAAC,CAACA,CAAC,KAAK,OAAOA,CAAC,KAAK,UAAU,IAAI8C,OAAA,CAAO9C,CAAC,MAAK,QAAQ,CAAC;AACjE,CAAC,C;;;;;;;;;;;;ACLY;;AAAA,SAAA8C,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIoB,UAAU,GAAG,OAAOlzB,MAAM,KAAK,UAAU,IAAI5N,OAAA,CAAO4N,MAAM,CAACwyB,QAAQ,MAAK,QAAQ;AAEpF,IAAI0B,UAAU,GAAG/5C,mBAAO,CAAC,wDAAa,CAAC;AACvC,IAAIs7C,MAAM,GAAGt7C,mBAAO,CAAC,8DAAgB,CAAC;AACtC,IAAIu7C,QAAQ,GAAGv7C,mBAAO,CAAC,oDAAW,CAAC;AACnC,IAAIU,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;AAE1C,IAAIw7C,WAAW,GAAGx7C,mBAAO,CAAC,oFAAuB,CAAC;;AAElD;;AAEA;AACA,SAASy7C,mBAAmBA,CAACrB,CAAC,EAAEsB,IAAI,EAAE;EACrC,IAAI,OAAOtB,CAAC,KAAK,WAAW,IAAIA,CAAC,KAAK,IAAI,EAAE;IAC3C,MAAM,IAAI15C,UAAU,CAAC,wBAAwB,GAAG05C,CAAC,CAAC;EACnD;EACA,IAAI,OAAOsB,IAAI,KAAK,QAAQ,IAAKA,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,QAAS,EAAE;IACzE,MAAM,IAAIh7C,UAAU,CAAC,mCAAmC,CAAC;EAC1D;EACA;EACA,IAAIi7C,WAAW,GAAGD,IAAI,KAAK,QAAQ,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC;EACvF,IAAIpb,MAAM,EAAE56B,MAAM,EAAEoL,CAAC;EACrB,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6qC,WAAW,CAAC76C,MAAM,EAAE,EAAEgQ,CAAC,EAAE;IACxCwvB,MAAM,GAAG8Z,CAAC,CAACuB,WAAW,CAAC7qC,CAAC,CAAC,CAAC;IAC1B,IAAIipC,UAAU,CAACzZ,MAAM,CAAC,EAAE;MACvB56B,MAAM,GAAG46B,MAAM,CAAChgC,IAAI,CAAC85C,CAAC,CAAC;MACvB,IAAIoB,WAAW,CAAC91C,MAAM,CAAC,EAAE;QACxB,OAAO,4BAA6BA;QAAM;MAC3C;IACD;EACD;EACA,MAAM,IAAIhF,UAAU,CAAC,kBAAkB,CAAC;AACzC;AAEA,IAAIy5C,SAAS,GAAGn6C,mBAAO,CAAC,8EAA2B,CAAC;;AAEpD;AACA;AACAI,MAAM,CAACC,OAAO,GAAG,SAASs6C,WAAWA,CAAC95B,KAAK,EAAE;EAC5C,IAAI26B,WAAW,CAAC36B,KAAK,CAAC,EAAE;IACvB,OAAO,4BAA6BA;IAAK;EAC1C;EACA;EACA,IAAI66B,IAAI,GAAG,SAAS;EACpB,IAAI9pC,SAAS,CAAC9Q,MAAM,GAAG,CAAC,EAAE;IACzB,IAAI8Q,SAAS,CAAC,CAAC,CAAC,KAAKkW,MAAM,EAAE;MAC5B4zB,IAAI,GAAG,QAAQ;IAChB,CAAC,MAAM,IAAI9pC,SAAS,CAAC,CAAC,CAAC,KAAKX,MAAM,EAAE;MACnCyqC,IAAI,GAAG,QAAQ;IAChB;EACD;EAEA,IAAIE,YAAY;EAChB,IAAI7C,UAAU,EAAE;IACf,IAAIlzB,MAAM,CAAC60B,WAAW,EAAE;MAEvBkB,YAAY,GAAGzB,SAAS,EACvB;MACCt5B,KAAK,EACNgF,MAAM,CAAC60B,WACR,CAAC;IACF,CAAC,MAAM,IAAIa,QAAQ,CAAC16B,KAAK,CAAC,EAAE;MAC3B+6B,YAAY,GAAG/1B,MAAM,CAACrlB,SAAS,CAACq7C,OAAO;IACxC;EACD;EACA,IAAI,OAAOD,YAAY,KAAK,WAAW,EAAE;IACxC,IAAIl2C,MAAM,GAAGk2C,YAAY,CAACt7C,IAAI,CAACugB,KAAK,EAAE66B,IAAI,CAAC;IAC3C,IAAIF,WAAW,CAAC91C,MAAM,CAAC,EAAE;MACxB,OAAO,4BAA6BA;MAAM;IAC3C;IACA,MAAM,IAAIhF,UAAU,CAAC,8CAA8C,CAAC;EACrE;EACA,IAAIg7C,IAAI,KAAK,SAAS,KAAKJ,MAAM,CAACz6B,KAAK,CAAC,IAAI06B,QAAQ,CAAC16B,KAAK,CAAC,CAAC,EAAE;IAC7D66B,IAAI,GAAG,oBAAsB,QAAS;EACvC;EAEA,OAAOD,mBAAmB,CAAC56B,KAAK,EAAE66B,IAAI,KAAK,SAAS,GAAG,QAAQ,GAAGA,IAAI,CAAC;AACxE,CAAC,C;;;;;;;;;;;;AC/EY;;AAEb;AACA;;AAEA;AAAA,SAAAzjC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AACAv3C,MAAM,CAACC,OAAO,GAAG,SAASm7C,WAAWA,CAACh5C,KAAK,EAAE;EAC5C,OAAOA,KAAK,KAAK,IAAI,IAAK,OAAOA,KAAK,KAAK,UAAU,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAS;AACpF,CAAC,C;;;;;;;;;;;;ACRY;;AAEb;AAEA,IAAIs5C,aAAa,GAAG,iDAAiD;AACrE,IAAI9C,KAAK,GAAGvpC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ;AACrC,IAAIlQ,GAAG,GAAGF,IAAI,CAACE,GAAG;AAClB,IAAI65C,QAAQ,GAAG,mBAAmB;AAElC,IAAIC,QAAQ,GAAG,SAASA,QAAQA,CAACn5C,CAAC,EAAEjB,CAAC,EAAE;EACnC,IAAI6gB,GAAG,GAAG,EAAE;EAEZ,KAAK,IAAI3R,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGjO,CAAC,CAAC/B,MAAM,EAAEgQ,CAAC,IAAI,CAAC,EAAE;IAClC2R,GAAG,CAAC3R,CAAC,CAAC,GAAGjO,CAAC,CAACiO,CAAC,CAAC;EACjB;EACA,KAAK,IAAI+tB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGj9B,CAAC,CAACd,MAAM,EAAE+9B,CAAC,IAAI,CAAC,EAAE;IAClCpc,GAAG,CAACoc,CAAC,GAAGh8B,CAAC,CAAC/B,MAAM,CAAC,GAAGc,CAAC,CAACi9B,CAAC,CAAC;EAC5B;EAEA,OAAOpc,GAAG;AACd,CAAC;AAED,IAAIw5B,KAAK,GAAG,SAASA,KAAKA,CAACC,OAAO,EAAEC,MAAM,EAAE;EACxC,IAAI15B,GAAG,GAAG,EAAE;EACZ,KAAK,IAAI3R,CAAC,GAAGqrC,MAAM,IAAI,CAAC,EAAEtd,CAAC,GAAG,CAAC,EAAE/tB,CAAC,GAAGorC,OAAO,CAACp7C,MAAM,EAAEgQ,CAAC,IAAI,CAAC,EAAE+tB,CAAC,IAAI,CAAC,EAAE;IACjEpc,GAAG,CAACoc,CAAC,CAAC,GAAGqd,OAAO,CAACprC,CAAC,CAAC;EACvB;EACA,OAAO2R,GAAG;AACd,CAAC;AAED,IAAI25B,KAAK,GAAG,SAARA,KAAKA,CAAa35B,GAAG,EAAE45B,MAAM,EAAE;EAC/B,IAAIp7B,GAAG,GAAG,EAAE;EACZ,KAAK,IAAInQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2R,GAAG,CAAC3hB,MAAM,EAAEgQ,CAAC,IAAI,CAAC,EAAE;IACpCmQ,GAAG,IAAIwB,GAAG,CAAC3R,CAAC,CAAC;IACb,IAAIA,CAAC,GAAG,CAAC,GAAG2R,GAAG,CAAC3hB,MAAM,EAAE;MACpBmgB,GAAG,IAAIo7B,MAAM;IACjB;EACJ;EACA,OAAOp7B,GAAG;AACd,CAAC;AAED7gB,MAAM,CAACC,OAAO,GAAG,SAASN,IAAIA,CAACu8C,IAAI,EAAE;EACjC,IAAIC,MAAM,GAAG,IAAI;EACjB,IAAI,OAAOA,MAAM,KAAK,UAAU,IAAIvD,KAAK,CAACv4C,KAAK,CAAC87C,MAAM,CAAC,KAAKR,QAAQ,EAAE;IAClE,MAAM,IAAI52B,SAAS,CAAC22B,aAAa,GAAGS,MAAM,CAAC;EAC/C;EACA,IAAI17C,IAAI,GAAGo7C,KAAK,CAACrqC,SAAS,EAAE,CAAC,CAAC;EAE9B,IAAI4qC,KAAK;EACT,IAAIC,MAAM,GAAG,SAATA,MAAMA,CAAA,EAAe;IACrB,IAAI,IAAI,YAAYD,KAAK,EAAE;MACvB,IAAI92C,MAAM,GAAG62C,MAAM,CAAC97C,KAAK,CACrB,IAAI,EACJu7C,QAAQ,CAACn7C,IAAI,EAAE+Q,SAAS,CAC5B,CAAC;MACD,IAAInC,MAAM,CAAC/J,MAAM,CAAC,KAAKA,MAAM,EAAE;QAC3B,OAAOA,MAAM;MACjB;MACA,OAAO,IAAI;IACf;IACA,OAAO62C,MAAM,CAAC97C,KAAK,CACf67C,IAAI,EACJN,QAAQ,CAACn7C,IAAI,EAAE+Q,SAAS,CAC5B,CAAC;EAEL,CAAC;EAED,IAAI8qC,WAAW,GAAGx6C,GAAG,CAAC,CAAC,EAAEq6C,MAAM,CAACz7C,MAAM,GAAGD,IAAI,CAACC,MAAM,CAAC;EACrD,IAAI67C,SAAS,GAAG,EAAE;EAClB,KAAK,IAAI7rC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4rC,WAAW,EAAE5rC,CAAC,EAAE,EAAE;IAClC6rC,SAAS,CAAC7rC,CAAC,CAAC,GAAG,GAAG,GAAGA,CAAC;EAC1B;EAEA0rC,KAAK,GAAGj8C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG67C,KAAK,CAACO,SAAS,EAAE,GAAG,CAAC,GAAG,2CAA2C,CAAC,CAACF,MAAM,CAAC;EAE7H,IAAIF,MAAM,CAAC/7C,SAAS,EAAE;IAClB,IAAIo8C,KAAK,GAAG,SAASA,KAAKA,CAAA,EAAG,CAAC,CAAC;IAC/BA,KAAK,CAACp8C,SAAS,GAAG+7C,MAAM,CAAC/7C,SAAS;IAClCg8C,KAAK,CAACh8C,SAAS,GAAG,IAAIo8C,KAAK,CAAC,CAAC;IAC7BA,KAAK,CAACp8C,SAAS,GAAG,IAAI;EAC1B;EAEA,OAAOg8C,KAAK;AAChB,CAAC,C;;;;;;;;;;;;ACnFY;;AAEb,IAAIK,cAAc,GAAG78C,mBAAO,CAAC,wEAAkB,CAAC;AAEhDI,MAAM,CAACC,OAAO,GAAGE,QAAQ,CAACC,SAAS,CAACT,IAAI,IAAI88C,cAAc,C;;;;;;;;;;;;ACJ7C;;AAAA,SAAA5kC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAI9lC,SAAS;AAEb,IAAI+nC,OAAO,GAAG55C,mBAAO,CAAC,gEAAiB,CAAC;AAExC,IAAI88C,MAAM,GAAG98C,mBAAO,CAAC,oDAAW,CAAC;AACjC,IAAI+8C,UAAU,GAAG/8C,mBAAO,CAAC,wDAAgB,CAAC;AAC1C,IAAIg9C,WAAW,GAAGh9C,mBAAO,CAAC,0DAAiB,CAAC;AAC5C,IAAIi9C,eAAe,GAAGj9C,mBAAO,CAAC,sDAAe,CAAC;AAC9C,IAAIu4C,YAAY,GAAGv4C,mBAAO,CAAC,4DAAkB,CAAC;AAC9C,IAAIU,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;AAC1C,IAAIk9C,SAAS,GAAGl9C,mBAAO,CAAC,sDAAe,CAAC;AAExC,IAAIsC,GAAG,GAAGtC,mBAAO,CAAC,kEAAqB,CAAC;AACxC,IAAIuc,KAAK,GAAGvc,mBAAO,CAAC,sEAAuB,CAAC;AAC5C,IAAIkC,GAAG,GAAGlC,mBAAO,CAAC,kEAAqB,CAAC;AACxC,IAAIiC,GAAG,GAAGjC,mBAAO,CAAC,kEAAqB,CAAC;AACxC,IAAImD,GAAG,GAAGnD,mBAAO,CAAC,kEAAqB,CAAC;AACxC,IAAIoD,KAAK,GAAGpD,mBAAO,CAAC,sEAAuB,CAAC;AAC5C,IAAIkiB,IAAI,GAAGliB,mBAAO,CAAC,oEAAsB,CAAC;AAE1C,IAAIm9C,SAAS,GAAG58C,QAAQ;;AAExB;AACA,IAAI68C,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAaC,gBAAgB,EAAE;EACvD,IAAI;IACH,OAAOF,SAAS,CAAC,wBAAwB,GAAGE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC;EACnF,CAAC,CAAC,OAAO7mC,CAAC,EAAE,CAAC;AACd,CAAC;AAED,IAAI8mC,KAAK,GAAGt9C,mBAAO,CAAC,0CAAM,CAAC;AAC3B,IAAIs4C,eAAe,GAAGt4C,mBAAO,CAAC,sEAAoB,CAAC;AAEnD,IAAIu9C,cAAc,GAAG,SAAjBA,cAAcA,CAAA,EAAe;EAChC,MAAM,IAAI78C,UAAU,CAAC,CAAC;AACvB,CAAC;AACD,IAAI88C,cAAc,GAAGF,KAAK,GACtB,YAAY;EACd,IAAI;IACH;IACA1rC,SAAS,CAAC6rC,MAAM,CAAC,CAAC;IAClB,OAAOF,cAAc;EACtB,CAAC,CAAC,OAAOG,YAAY,EAAE;IACtB,IAAI;MACH;MACA,OAAOJ,KAAK,CAAC1rC,SAAS,EAAE,QAAQ,CAAC,CAAC5B,GAAG;IACtC,CAAC,CAAC,OAAO2tC,UAAU,EAAE;MACpB,OAAOJ,cAAc;IACtB;EACD;AACD,CAAC,CAAC,CAAC,GACDA,cAAc;AAEjB,IAAIxE,UAAU,GAAG/4C,mBAAO,CAAC,wDAAa,CAAC,CAAC,CAAC;AAEzC,IAAI49C,QAAQ,GAAG59C,mBAAO,CAAC,oDAAW,CAAC;AACnC,IAAI69C,UAAU,GAAG79C,mBAAO,CAAC,0FAAiC,CAAC;AAC3D,IAAI89C,WAAW,GAAG99C,mBAAO,CAAC,4FAAkC,CAAC;AAE7D,IAAIC,MAAM,GAAGD,mBAAO,CAAC,sGAAuC,CAAC;AAC7D,IAAIE,KAAK,GAAGF,mBAAO,CAAC,oGAAsC,CAAC;AAE3D,IAAI+9C,SAAS,GAAG,CAAC,CAAC;AAElB,IAAIC,UAAU,GAAG,OAAOC,UAAU,KAAK,WAAW,IAAI,CAACL,QAAQ,GAAG/rC,SAAS,GAAG+rC,QAAQ,CAACK,UAAU,CAAC;AAElG,IAAIC,UAAU,GAAG;EAChBvE,SAAS,EAAE,IAAI;EACf,kBAAkB,EAAE,OAAOwE,cAAc,KAAK,WAAW,GAAGtsC,SAAS,GAAGssC,cAAc;EACtF,SAAS,EAAEnsC,KAAK;EAChB,eAAe,EAAE,OAAOosC,WAAW,KAAK,WAAW,GAAGvsC,SAAS,GAAGusC,WAAW;EAC7E,0BAA0B,EAAErF,UAAU,IAAI6E,QAAQ,GAAGA,QAAQ,CAAC,EAAE,CAAC/3B,MAAM,CAACwyB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAGxmC,SAAS;EAChG,kCAAkC,EAAEA,SAAS;EAC7C,iBAAiB,EAAEksC,SAAS;EAC5B,kBAAkB,EAAEA,SAAS;EAC7B,0BAA0B,EAAEA,SAAS;EACrC,0BAA0B,EAAEA,SAAS;EACrC,WAAW,EAAE,OAAOM,OAAO,KAAK,WAAW,GAAGxsC,SAAS,GAAGwsC,OAAO;EACjE,UAAU,EAAE,OAAOC,MAAM,KAAK,WAAW,GAAGzsC,SAAS,GAAGysC,MAAM;EAC9D,iBAAiB,EAAE,OAAOC,aAAa,KAAK,WAAW,GAAG1sC,SAAS,GAAG0sC,aAAa;EACnF,kBAAkB,EAAE,OAAOC,cAAc,KAAK,WAAW,GAAG3sC,SAAS,GAAG2sC,cAAc;EACtF,WAAW,EAAEC,OAAO;EACpB,YAAY,EAAE,OAAOC,QAAQ,KAAK,WAAW,GAAG7sC,SAAS,GAAG6sC,QAAQ;EACpE,QAAQ,EAAEC,IAAI;EACd,aAAa,EAAEC,SAAS;EACxB,sBAAsB,EAAEC,kBAAkB;EAC1C,aAAa,EAAEC,SAAS;EACxB,sBAAsB,EAAEC,kBAAkB;EAC1C,SAAS,EAAEjC,MAAM;EACjB,QAAQ,EAAEkC,IAAI;EAAE;EAChB,aAAa,EAAEjC,UAAU;EACzB,gBAAgB,EAAE,OAAOkC,YAAY,KAAK,WAAW,GAAGptC,SAAS,GAAGotC,YAAY;EAChF,gBAAgB,EAAE,OAAOC,YAAY,KAAK,WAAW,GAAGrtC,SAAS,GAAGqtC,YAAY;EAChF,gBAAgB,EAAE,OAAOC,YAAY,KAAK,WAAW,GAAGttC,SAAS,GAAGstC,YAAY;EAChF,wBAAwB,EAAE,OAAOC,oBAAoB,KAAK,WAAW,GAAGvtC,SAAS,GAAGutC,oBAAoB;EACxG,YAAY,EAAEjC,SAAS;EACvB,qBAAqB,EAAEY,SAAS;EAChC,aAAa,EAAE,OAAOsB,SAAS,KAAK,WAAW,GAAGxtC,SAAS,GAAGwtC,SAAS;EACvE,cAAc,EAAE,OAAOC,UAAU,KAAK,WAAW,GAAGztC,SAAS,GAAGytC,UAAU;EAC1E,cAAc,EAAE,OAAOC,UAAU,KAAK,WAAW,GAAG1tC,SAAS,GAAG0tC,UAAU;EAC1E,YAAY,EAAEnN,QAAQ;EACtB,SAAS,EAAE3gC,KAAK;EAChB,qBAAqB,EAAEsnC,UAAU,IAAI6E,QAAQ,GAAGA,QAAQ,CAACA,QAAQ,CAAC,EAAE,CAAC/3B,MAAM,CAACwyB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGxmC,SAAS;EACrG,QAAQ,EAAE,QAAO8B,IAAI,iCAAAsE,OAAA,CAAJtE,IAAI,OAAK,QAAQ,GAAGA,IAAI,GAAG9B,SAAS;EACrD,OAAO,EAAE,OAAO2tC,GAAG,KAAK,WAAW,GAAG3tC,SAAS,GAAG2tC,GAAG;EACrD,wBAAwB,EAAE,OAAOA,GAAG,KAAK,WAAW,IAAI,CAACzG,UAAU,IAAI,CAAC6E,QAAQ,GAAG/rC,SAAS,GAAG+rC,QAAQ,CAAC,IAAI4B,GAAG,CAAC,CAAC,CAAC35B,MAAM,CAACwyB,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrI,QAAQ,EAAEr2C,IAAI;EACd,UAAU,EAAEiP,MAAM;EAClB,UAAU,EAAE2oC,OAAO;EACnB,mCAAmC,EAAE0D,KAAK;EAC1C,cAAc,EAAEnsC,UAAU;EAC1B,YAAY,EAAED,QAAQ;EACtB,WAAW,EAAE,OAAOuuC,OAAO,KAAK,WAAW,GAAG5tC,SAAS,GAAG4tC,OAAO;EACjE,SAAS,EAAE,OAAOjI,KAAK,KAAK,WAAW,GAAG3lC,SAAS,GAAG2lC,KAAK;EAC3D,cAAc,EAAEwF,WAAW;EAC3B,kBAAkB,EAAEC,eAAe;EACnC,WAAW,EAAE,OAAOl8C,OAAO,KAAK,WAAW,GAAG8Q,SAAS,GAAG9Q,OAAO;EACjE,UAAU,EAAE2pB,MAAM;EAClB,OAAO,EAAE,OAAOuC,GAAG,KAAK,WAAW,GAAGpb,SAAS,GAAGob,GAAG;EACrD,wBAAwB,EAAE,OAAOA,GAAG,KAAK,WAAW,IAAI,CAAC8rB,UAAU,IAAI,CAAC6E,QAAQ,GAAG/rC,SAAS,GAAG+rC,QAAQ,CAAC,IAAI3wB,GAAG,CAAC,CAAC,CAACpH,MAAM,CAACwyB,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrI,qBAAqB,EAAE,OAAOqH,iBAAiB,KAAK,WAAW,GAAG7tC,SAAS,GAAG6tC,iBAAiB;EAC/F,UAAU,EAAE53B,MAAM;EAClB,2BAA2B,EAAEixB,UAAU,IAAI6E,QAAQ,GAAGA,QAAQ,CAAC,EAAE,CAAC/3B,MAAM,CAACwyB,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAGxmC,SAAS;EACjG,UAAU,EAAEknC,UAAU,GAAGlzB,MAAM,GAAGhU,SAAS;EAC3C,eAAe,EAAE0mC,YAAY;EAC7B,kBAAkB,EAAEiF,cAAc;EAClC,cAAc,EAAEQ,UAAU;EAC1B,aAAa,EAAEt9C,UAAU;EACzB,cAAc,EAAE,OAAOu9C,UAAU,KAAK,WAAW,GAAGpsC,SAAS,GAAGosC,UAAU;EAC1E,qBAAqB,EAAE,OAAO0B,iBAAiB,KAAK,WAAW,GAAG9tC,SAAS,GAAG8tC,iBAAiB;EAC/F,eAAe,EAAE,OAAOC,WAAW,KAAK,WAAW,GAAG/tC,SAAS,GAAG+tC,WAAW;EAC7E,eAAe,EAAE,OAAOC,WAAW,KAAK,WAAW,GAAGhuC,SAAS,GAAGguC,WAAW;EAC7E,YAAY,EAAE3C,SAAS;EACvB,WAAW,EAAE,OAAO4C,OAAO,KAAK,WAAW,GAAGjuC,SAAS,GAAGiuC,OAAO;EACjE,WAAW,EAAE,OAAOC,OAAO,KAAK,WAAW,GAAGluC,SAAS,GAAGkuC,OAAO;EACjE,WAAW,EAAE,OAAOC,OAAO,KAAK,WAAW,GAAGnuC,SAAS,GAAGmuC,OAAO;EAEjE,2BAA2B,EAAE9/C,KAAK;EAClC,4BAA4B,EAAED,MAAM;EACpC,yBAAyB,EAAEq4C,eAAe;EAC1C,yBAAyB,EAAEuF,UAAU;EACrC,YAAY,EAAEv7C,GAAG;EACjB,cAAc,EAAEia,KAAK;EACrB,YAAY,EAAEra,GAAG;EACjB,YAAY,EAAED,GAAG;EACjB,YAAY,EAAEkB,GAAG;EACjB,cAAc,EAAEC,KAAK;EACrB,aAAa,EAAE8e,IAAI;EACnB,0BAA0B,EAAE47B;AAC7B,CAAC;AAED,IAAIF,QAAQ,EAAE;EACb,IAAI;IACH,IAAI,CAAC7uB,KAAK,CAAC,CAAC;EACb,CAAC,CAAC,OAAOvY,CAAC,EAAE;IACX;IACA,IAAIypC,UAAU,GAAGrC,QAAQ,CAACA,QAAQ,CAACpnC,CAAC,CAAC,CAAC;IACtC0nC,UAAU,CAAC,mBAAmB,CAAC,GAAG+B,UAAU;EAC7C;AACD;AAEA,IAAIC,MAAM,GAAG,SAASA,MAAMA,CAAC/+C,IAAI,EAAE;EAClC,IAAIqB,KAAK;EACT,IAAIrB,IAAI,KAAK,iBAAiB,EAAE;IAC/BqB,KAAK,GAAG46C,qBAAqB,CAAC,sBAAsB,CAAC;EACtD,CAAC,MAAM,IAAIj8C,IAAI,KAAK,qBAAqB,EAAE;IAC1CqB,KAAK,GAAG46C,qBAAqB,CAAC,iBAAiB,CAAC;EACjD,CAAC,MAAM,IAAIj8C,IAAI,KAAK,0BAA0B,EAAE;IAC/CqB,KAAK,GAAG46C,qBAAqB,CAAC,uBAAuB,CAAC;EACvD,CAAC,MAAM,IAAIj8C,IAAI,KAAK,kBAAkB,EAAE;IACvC,IAAIgd,EAAE,GAAG+hC,MAAM,CAAC,0BAA0B,CAAC;IAC3C,IAAI/hC,EAAE,EAAE;MACP3b,KAAK,GAAG2b,EAAE,CAAC3d,SAAS;IACrB;EACD,CAAC,MAAM,IAAIW,IAAI,KAAK,0BAA0B,EAAE;IAC/C,IAAIg/C,GAAG,GAAGD,MAAM,CAAC,kBAAkB,CAAC;IACpC,IAAIC,GAAG,IAAIvC,QAAQ,EAAE;MACpBp7C,KAAK,GAAGo7C,QAAQ,CAACuC,GAAG,CAAC3/C,SAAS,CAAC;IAChC;EACD;EAEA09C,UAAU,CAAC/8C,IAAI,CAAC,GAAGqB,KAAK;EAExB,OAAOA,KAAK;AACb,CAAC;AAED,IAAI49C,cAAc,GAAG;EACpBzG,SAAS,EAAE,IAAI;EACf,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;EACtD,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;EAC1C,sBAAsB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC;EACzD,sBAAsB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC;EACzD,mBAAmB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;EACnD,qBAAqB,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;EACvD,0BAA0B,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;EAC1D,kBAAkB,EAAE,CAAC,wBAAwB,EAAE,WAAW,CAAC;EAC3D,2BAA2B,EAAE,CAAC,wBAAwB,EAAE,WAAW,EAAE,WAAW,CAAC;EACjF,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;EAC9C,qBAAqB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;EAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;EACxC,kBAAkB,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;EAC1C,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;EAClD,yBAAyB,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;EACxD,yBAAyB,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;EACxD,qBAAqB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;EAChD,aAAa,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;EACjD,sBAAsB,EAAE,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,CAAC;EACvE,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;EAClD,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;EACpD,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;EACpD,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;EAChC,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;EACxC,gBAAgB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;EACtC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EAC5C,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EAC5C,qBAAqB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC;EAC1D,oBAAoB,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC;EACxD,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;EAC9C,qBAAqB,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;EACvD,eAAe,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;EACnC,kBAAkB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;EACzC,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;EAC3C,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;EACpD,2BAA2B,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC;EAC5D,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EAC5C,gBAAgB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;EACtC,8BAA8B,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;EAClE,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EAC5C,mBAAmB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EAC5C,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;EACtD,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;EACpD,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;EAClD,uBAAuB,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;EACpD,8BAA8B,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC;EAClE,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;EACtD,wBAAwB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;EACtD,qBAAqB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;EAChD,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;EAC9C,oBAAoB,EAAE,CAAC,SAAS,EAAE,WAAW;AAC9C,CAAC;AAED,IAAI55C,IAAI,GAAGC,mBAAO,CAAC,4DAAe,CAAC;AACnC,IAAI8P,MAAM,GAAG9P,mBAAO,CAAC,8CAAQ,CAAC;AAC9B,IAAIqgD,OAAO,GAAGtgD,IAAI,CAACO,IAAI,CAACJ,KAAK,EAAE8R,KAAK,CAACxR,SAAS,CAAC4T,MAAM,CAAC;AACtD,IAAIksC,YAAY,GAAGvgD,IAAI,CAACO,IAAI,CAACL,MAAM,EAAE+R,KAAK,CAACxR,SAAS,CAACgT,MAAM,CAAC;AAC5D,IAAI+sC,QAAQ,GAAGxgD,IAAI,CAACO,IAAI,CAACJ,KAAK,EAAE4nB,MAAM,CAACtnB,SAAS,CAAC6oB,OAAO,CAAC;AACzD,IAAIm3B,SAAS,GAAGzgD,IAAI,CAACO,IAAI,CAACJ,KAAK,EAAE4nB,MAAM,CAACtnB,SAAS,CAAC2P,KAAK,CAAC;AACxD,IAAIswC,KAAK,GAAG1gD,IAAI,CAACO,IAAI,CAACJ,KAAK,EAAEwqB,MAAM,CAAClqB,SAAS,CAACkgD,IAAI,CAAC;;AAEnD;AACA,IAAIC,UAAU,GAAG,oGAAoG;AACrH,IAAIC,YAAY,GAAG,UAAU,CAAC,CAAC;AAC/B,IAAIC,YAAY,GAAG,SAASA,YAAYA,CAAC5wC,MAAM,EAAE;EAChD,IAAIsT,KAAK,GAAGi9B,SAAS,CAACvwC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;EACnC,IAAIsvB,IAAI,GAAGihB,SAAS,CAACvwC,MAAM,EAAE,CAAC,CAAC,CAAC;EAChC,IAAIsT,KAAK,KAAK,GAAG,IAAIgc,IAAI,KAAK,GAAG,EAAE;IAClC,MAAM,IAAIgZ,YAAY,CAAC,gDAAgD,CAAC;EACzE,CAAC,MAAM,IAAIhZ,IAAI,KAAK,GAAG,IAAIhc,KAAK,KAAK,GAAG,EAAE;IACzC,MAAM,IAAIg1B,YAAY,CAAC,gDAAgD,CAAC;EACzE;EACA,IAAI7yC,MAAM,GAAG,EAAE;EACf66C,QAAQ,CAACtwC,MAAM,EAAE0wC,UAAU,EAAE,UAAU9vC,KAAK,EAAEmI,MAAM,EAAE8nC,KAAK,EAAEC,SAAS,EAAE;IACvEr7C,MAAM,CAACA,MAAM,CAAC5E,MAAM,CAAC,GAAGggD,KAAK,GAAGP,QAAQ,CAACQ,SAAS,EAAEH,YAAY,EAAE,IAAI,CAAC,GAAG5nC,MAAM,IAAInI,KAAK;EAC1F,CAAC,CAAC;EACF,OAAOnL,MAAM;AACd,CAAC;AACD;;AAEA,IAAIs7C,gBAAgB,GAAG,SAASA,gBAAgBA,CAAC7/C,IAAI,EAAEC,YAAY,EAAE;EACpE,IAAI6/C,aAAa,GAAG9/C,IAAI;EACxB,IAAIgsB,KAAK;EACT,IAAIrd,MAAM,CAACswC,cAAc,EAAEa,aAAa,CAAC,EAAE;IAC1C9zB,KAAK,GAAGizB,cAAc,CAACa,aAAa,CAAC;IACrCA,aAAa,GAAG,GAAG,GAAG9zB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;EACrC;EAEA,IAAIrd,MAAM,CAACouC,UAAU,EAAE+C,aAAa,CAAC,EAAE;IACtC,IAAIz+C,KAAK,GAAG07C,UAAU,CAAC+C,aAAa,CAAC;IACrC,IAAIz+C,KAAK,KAAKu7C,SAAS,EAAE;MACxBv7C,KAAK,GAAG09C,MAAM,CAACe,aAAa,CAAC;IAC9B;IACA,IAAI,OAAOz+C,KAAK,KAAK,WAAW,IAAI,CAACpB,YAAY,EAAE;MAClD,MAAM,IAAIV,UAAU,CAAC,YAAY,GAAGS,IAAI,GAAG,sDAAsD,CAAC;IACnG;IAEA,OAAO;MACNgsB,KAAK,EAAEA,KAAK;MACZhsB,IAAI,EAAE8/C,aAAa;MACnBz+C,KAAK,EAAEA;IACR,CAAC;EACF;EAEA,MAAM,IAAI+1C,YAAY,CAAC,YAAY,GAAGp3C,IAAI,GAAG,kBAAkB,CAAC;AACjE,CAAC;AAEDf,MAAM,CAACC,OAAO,GAAG,SAASW,YAAYA,CAACG,IAAI,EAAEC,YAAY,EAAE;EAC1D,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACL,MAAM,KAAK,CAAC,EAAE;IAClD,MAAM,IAAIJ,UAAU,CAAC,2CAA2C,CAAC;EAClE;EACA,IAAIkR,SAAS,CAAC9Q,MAAM,GAAG,CAAC,IAAI,OAAOM,YAAY,KAAK,SAAS,EAAE;IAC9D,MAAM,IAAIV,UAAU,CAAC,2CAA2C,CAAC;EAClE;EAEA,IAAI+/C,KAAK,CAAC,aAAa,EAAEt/C,IAAI,CAAC,KAAK,IAAI,EAAE;IACxC,MAAM,IAAIo3C,YAAY,CAAC,oFAAoF,CAAC;EAC7G;EACA,IAAIttB,KAAK,GAAG41B,YAAY,CAAC1/C,IAAI,CAAC;EAC9B,IAAI+/C,iBAAiB,GAAGj2B,KAAK,CAACnqB,MAAM,GAAG,CAAC,GAAGmqB,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;EAExD,IAAI5pB,SAAS,GAAG2/C,gBAAgB,CAAC,GAAG,GAAGE,iBAAiB,GAAG,GAAG,EAAE9/C,YAAY,CAAC;EAC7E,IAAI+/C,iBAAiB,GAAG9/C,SAAS,CAACF,IAAI;EACtC,IAAIqB,KAAK,GAAGnB,SAAS,CAACmB,KAAK;EAC3B,IAAI4+C,kBAAkB,GAAG,KAAK;EAE9B,IAAIj0B,KAAK,GAAG9rB,SAAS,CAAC8rB,KAAK;EAC3B,IAAIA,KAAK,EAAE;IACV+zB,iBAAiB,GAAG/zB,KAAK,CAAC,CAAC,CAAC;IAC5BmzB,YAAY,CAACr1B,KAAK,EAAEo1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAElzB,KAAK,CAAC,CAAC;EAC5C;EAEA,KAAK,IAAIrc,CAAC,GAAG,CAAC,EAAEuwC,KAAK,GAAG,IAAI,EAAEvwC,CAAC,GAAGma,KAAK,CAACnqB,MAAM,EAAEgQ,CAAC,IAAI,CAAC,EAAE;IACvD,IAAIwwC,IAAI,GAAGr2B,KAAK,CAACna,CAAC,CAAC;IACnB,IAAIyS,KAAK,GAAGi9B,SAAS,CAACc,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACjC,IAAI/hB,IAAI,GAAGihB,SAAS,CAACc,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9B,IACC,CACE/9B,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,GAAG,IAAIA,KAAK,KAAK,GAAG,IAC5Cgc,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAI,KAE/Chc,KAAK,KAAKgc,IAAI,EAChB;MACD,MAAM,IAAIgZ,YAAY,CAAC,sDAAsD,CAAC;IAC/E;IACA,IAAI+I,IAAI,KAAK,aAAa,IAAI,CAACD,KAAK,EAAE;MACrCD,kBAAkB,GAAG,IAAI;IAC1B;IAEAF,iBAAiB,IAAI,GAAG,GAAGI,IAAI;IAC/BH,iBAAiB,GAAG,GAAG,GAAGD,iBAAiB,GAAG,GAAG;IAEjD,IAAIpxC,MAAM,CAACouC,UAAU,EAAEiD,iBAAiB,CAAC,EAAE;MAC1C3+C,KAAK,GAAG07C,UAAU,CAACiD,iBAAiB,CAAC;IACtC,CAAC,MAAM,IAAI3+C,KAAK,IAAI,IAAI,EAAE;MACzB,IAAI,EAAE8+C,IAAI,IAAI9+C,KAAK,CAAC,EAAE;QACrB,IAAI,CAACpB,YAAY,EAAE;UAClB,MAAM,IAAIV,UAAU,CAAC,qBAAqB,GAAGS,IAAI,GAAG,6CAA6C,CAAC;QACnG;QACA,OAAO,KAAK0Q,SAAS;MACtB;MACA,IAAIyrC,KAAK,IAAKxsC,CAAC,GAAG,CAAC,IAAKma,KAAK,CAACnqB,MAAM,EAAE;QACrC,IAAIg4C,IAAI,GAAGwE,KAAK,CAAC96C,KAAK,EAAE8+C,IAAI,CAAC;QAC7BD,KAAK,GAAG,CAAC,CAACvI,IAAI;;QAEd;QACA;QACA;QACA;QACA;QACA;QACA;QACA,IAAIuI,KAAK,IAAI,KAAK,IAAIvI,IAAI,IAAI,EAAE,eAAe,IAAIA,IAAI,CAAC9oC,GAAG,CAAC,EAAE;UAC7DxN,KAAK,GAAGs2C,IAAI,CAAC9oC,GAAG;QACjB,CAAC,MAAM;UACNxN,KAAK,GAAGA,KAAK,CAAC8+C,IAAI,CAAC;QACpB;MACD,CAAC,MAAM;QACND,KAAK,GAAGvxC,MAAM,CAACtN,KAAK,EAAE8+C,IAAI,CAAC;QAC3B9+C,KAAK,GAAGA,KAAK,CAAC8+C,IAAI,CAAC;MACpB;MAEA,IAAID,KAAK,IAAI,CAACD,kBAAkB,EAAE;QACjClD,UAAU,CAACiD,iBAAiB,CAAC,GAAG3+C,KAAK;MACtC;IACD;EACD;EACA,OAAOA,KAAK;AACb,CAAC,C;;;;;;;;;;;;ACzXY;;AAEb,IAAIo3C,OAAO,GAAG55C,mBAAO,CAAC,gEAAiB,CAAC;;AAExC;AACAI,MAAM,CAACC,OAAO,GAAGu5C,OAAO,CAAC32B,cAAc,IAAI,IAAI,C;;;;;;;;;;;;ACLlC;;AAEb;AACA7iB,MAAM,CAACC,OAAO,GAAI,OAAOU,OAAO,KAAK,WAAW,IAAIA,OAAO,CAACkiB,cAAc,IAAK,IAAI,C;;;;;;;;;;;;ACHtE;;AAAA,SAAAhL,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAI4J,eAAe,GAAGvhD,mBAAO,CAAC,oFAA0B,CAAC;AACzD,IAAIwhD,gBAAgB,GAAGxhD,mBAAO,CAAC,kFAAyB,CAAC;AAEzD,IAAIyhD,cAAc,GAAGzhD,mBAAO,CAAC,4DAAkB,CAAC;;AAEhD;AACAI,MAAM,CAACC,OAAO,GAAGkhD,eAAe,GAC7B,SAAS3D,QAAQA,CAACxD,CAAC,EAAE;EACtB;EACA,OAAOmH,eAAe,CAACnH,CAAC,CAAC;AAC1B,CAAC,GACCoH,gBAAgB,GACf,SAAS5D,QAAQA,CAACxD,CAAC,EAAE;EACtB,IAAI,CAACA,CAAC,IAAKniC,OAAA,CAAOmiC,CAAC,MAAK,QAAQ,IAAI,OAAOA,CAAC,KAAK,UAAW,EAAE;IAC7D,MAAM,IAAIj1B,SAAS,CAAC,yBAAyB,CAAC;EAC/C;EACA;EACA,OAAOq8B,gBAAgB,CAACpH,CAAC,CAAC;AAC3B,CAAC,GACCqH,cAAc,GACb,SAAS7D,QAAQA,CAACxD,CAAC,EAAE;EACtB;EACA,OAAOqH,cAAc,CAACrH,CAAC,CAAC;AACzB,CAAC,GACC,IAAI,C;;;;;;;;;;;;AC1BI;;AAEb;AACAh6C,MAAM,CAACC,OAAO,GAAGoP,MAAM,CAACiyC,wBAAwB,C;;;;;;;;;;;;ACHnC;;AAEb;AACA,IAAIpE,KAAK,GAAGt9C,mBAAO,CAAC,2CAAQ,CAAC;AAE7B,IAAIs9C,KAAK,EAAE;EACV,IAAI;IACHA,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC;EACpB,CAAC,CAAC,OAAO9mC,CAAC,EAAE;IACX;IACA8mC,KAAK,GAAG,IAAI;EACb;AACD;AAEAl9C,MAAM,CAACC,OAAO,GAAGi9C,KAAK,C;;;;;;;;;;;;ACdT;;AAEb,IAAIhF,eAAe,GAAGt4C,mBAAO,CAAC,sEAAoB,CAAC;AAEnD,IAAI2hD,sBAAsB,GAAG,SAASA,sBAAsBA,CAAA,EAAG;EAC9D,OAAO,CAAC,CAACrJ,eAAe;AACzB,CAAC;AAEDqJ,sBAAsB,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EACnF;EACA,IAAI,CAACtJ,eAAe,EAAE;IACrB,OAAO,IAAI;EACZ;EACA,IAAI;IACH,OAAOA,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE;MAAE91C,KAAK,EAAE;IAAE,CAAC,CAAC,CAAC1B,MAAM,KAAK,CAAC;EAChE,CAAC,CAAC,OAAO0V,CAAC,EAAE;IACX;IACA,OAAO,IAAI;EACZ;AACD,CAAC;AAEDpW,MAAM,CAACC,OAAO,GAAGshD,sBAAsB,C;;;;;;;;;;;;ACrB1B;;AAAA,SAAA1pC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIkK,UAAU,GAAG,OAAOh8B,MAAM,KAAK,WAAW,IAAIA,MAAM;AACxD,IAAIi8B,aAAa,GAAG9hD,mBAAO,CAAC,oDAAS,CAAC;;AAEtC;AACAI,MAAM,CAACC,OAAO,GAAG,SAAS0hD,gBAAgBA,CAAA,EAAG;EAC5C,IAAI,OAAOF,UAAU,KAAK,UAAU,EAAE;IAAE,OAAO,KAAK;EAAE;EACtD,IAAI,OAAOh8B,MAAM,KAAK,UAAU,EAAE;IAAE,OAAO,KAAK;EAAE;EAClD,IAAI5N,OAAA,CAAO4pC,UAAU,CAAC,KAAK,CAAC,MAAK,QAAQ,EAAE;IAAE,OAAO,KAAK;EAAE;EAC3D,IAAI5pC,OAAA,CAAO4N,MAAM,CAAC,KAAK,CAAC,MAAK,QAAQ,EAAE;IAAE,OAAO,KAAK;EAAE;EAEvD,OAAOi8B,aAAa,CAAC,CAAC;AACvB,CAAC,C;;;;;;;;;;;;ACbY;;AAEb;AACA;AAAA,SAAA7pC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AACAv3C,MAAM,CAACC,OAAO,GAAG,SAAS04C,UAAUA,CAAA,EAAG;EACtC,IAAI,OAAOlzB,MAAM,KAAK,UAAU,IAAI,OAAOpW,MAAM,CAAC8pC,qBAAqB,KAAK,UAAU,EAAE;IAAE,OAAO,KAAK;EAAE;EACxG,IAAIthC,OAAA,CAAO4N,MAAM,CAACwyB,QAAQ,MAAK,QAAQ,EAAE;IAAE,OAAO,IAAI;EAAE;;EAExD;EACA,IAAIV,GAAG,GAAG,CAAC,CAAC;EACZ,IAAIqK,GAAG,GAAGn8B,MAAM,CAAC,MAAM,CAAC;EACxB,IAAIo8B,MAAM,GAAGxyC,MAAM,CAACuyC,GAAG,CAAC;EACxB,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAAE,OAAO,KAAK;EAAE;EAE7C,IAAIvyC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ,CAAC9R,IAAI,CAAC0hD,GAAG,CAAC,KAAK,iBAAiB,EAAE;IAAE,OAAO,KAAK;EAAE;EAC/E,IAAIvyC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ,CAAC9R,IAAI,CAAC2hD,MAAM,CAAC,KAAK,iBAAiB,EAAE;IAAE,OAAO,KAAK;EAAE;;EAElF;EACA;EACA;EACA;;EAEA;EACA;;EAEA,IAAIC,MAAM,GAAG,EAAE;EACfvK,GAAG,CAACqK,GAAG,CAAC,GAAGE,MAAM;EACjB,KAAK,IAAI5hC,CAAC,IAAIq3B,GAAG,EAAE;IAAE,OAAO,KAAK;EAAE,CAAC,CAAC;EACrC,IAAI,OAAOloC,MAAM,CAACiD,IAAI,KAAK,UAAU,IAAIjD,MAAM,CAACiD,IAAI,CAACilC,GAAG,CAAC,CAAC72C,MAAM,KAAK,CAAC,EAAE;IAAE,OAAO,KAAK;EAAE;EAExF,IAAI,OAAO2O,MAAM,CAAC0yC,mBAAmB,KAAK,UAAU,IAAI1yC,MAAM,CAAC0yC,mBAAmB,CAACxK,GAAG,CAAC,CAAC72C,MAAM,KAAK,CAAC,EAAE;IAAE,OAAO,KAAK;EAAE;EAEtH,IAAIshD,IAAI,GAAG3yC,MAAM,CAAC8pC,qBAAqB,CAAC5B,GAAG,CAAC;EAC5C,IAAIyK,IAAI,CAACthD,MAAM,KAAK,CAAC,IAAIshD,IAAI,CAAC,CAAC,CAAC,KAAKJ,GAAG,EAAE;IAAE,OAAO,KAAK;EAAE;EAE1D,IAAI,CAACvyC,MAAM,CAACjP,SAAS,CAAC6hD,oBAAoB,CAAC/hD,IAAI,CAACq3C,GAAG,EAAEqK,GAAG,CAAC,EAAE;IAAE,OAAO,KAAK;EAAE;EAE3E,IAAI,OAAOvyC,MAAM,CAACiyC,wBAAwB,KAAK,UAAU,EAAE;IAC1D;IACA,IAAIY,UAAU,GAAG,iCAAmC7yC,MAAM,CAACiyC,wBAAwB,CAAC/J,GAAG,EAAEqK,GAAG,CAAE;IAC9F,IAAIM,UAAU,CAAC9/C,KAAK,KAAK0/C,MAAM,IAAII,UAAU,CAACl2B,UAAU,KAAK,IAAI,EAAE;MAAE,OAAO,KAAK;IAAE;EACpF;EAEA,OAAO,IAAI;AACZ,CAAC,C;;;;;;;;;;;;AC5CY;;AAEb,IAAI2sB,UAAU,GAAG/4C,mBAAO,CAAC,8DAAmB,CAAC;;AAE7C;AACAI,MAAM,CAACC,OAAO,GAAG,SAASkiD,mBAAmBA,CAAA,EAAG;EAC/C,OAAOxJ,UAAU,CAAC,CAAC,IAAI,CAAC,CAAClzB,MAAM,CAAC28B,WAAW;AAC5C,CAAC,C;;;;;;;;;;;;ACPY;;AAEb,IAAIliD,IAAI,GAAGC,QAAQ,CAACC,SAAS,CAACF,IAAI;AAClC,IAAImiD,OAAO,GAAGhzC,MAAM,CAACjP,SAAS,CAAC0gC,cAAc;AAC7C,IAAInhC,IAAI,GAAGC,mBAAO,CAAC,4DAAe,CAAC;;AAEnC;AACAI,MAAM,CAACC,OAAO,GAAGN,IAAI,CAACO,IAAI,CAACA,IAAI,EAAEmiD,OAAO,CAAC,C;;;;;;;;;;;;ACP5B;;AAAA,SAAAxqC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAI+K,OAAO,GAAGniD,QAAQ,CAACC,SAAS,CAAC4R,QAAQ;AACzC,IAAIuwC,YAAY,GAAG,QAAO5hD,OAAO,iCAAAkX,OAAA,CAAPlX,OAAO,OAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,IAAIA,OAAO,CAACN,KAAK;AACnF,IAAImiD,YAAY;AAChB,IAAIC,gBAAgB;AACpB,IAAI,OAAOF,YAAY,KAAK,UAAU,IAAI,OAAOlzC,MAAM,CAACkL,cAAc,KAAK,UAAU,EAAE;EACtF,IAAI;IACHioC,YAAY,GAAGnzC,MAAM,CAACkL,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE;MAClD3K,GAAG,EAAE,SAAAA,IAAA,EAAY;QAChB,MAAM6yC,gBAAgB;MACvB;IACD,CAAC,CAAC;IACFA,gBAAgB,GAAG,CAAC,CAAC;IACrB;IACAF,YAAY,CAAC,YAAY;MAAE,MAAM,EAAE;IAAE,CAAC,EAAE,IAAI,EAAEC,YAAY,CAAC;EAC5D,CAAC,CAAC,OAAOtiC,CAAC,EAAE;IACX,IAAIA,CAAC,KAAKuiC,gBAAgB,EAAE;MAC3BF,YAAY,GAAG,IAAI;IACpB;EACD;AACD,CAAC,MAAM;EACNA,YAAY,GAAG,IAAI;AACpB;AAEA,IAAIG,gBAAgB,GAAG,aAAa;AACpC,IAAIC,YAAY,GAAG,SAASC,kBAAkBA,CAACxgD,KAAK,EAAE;EACrD,IAAI;IACH,IAAIygD,KAAK,GAAGP,OAAO,CAACpiD,IAAI,CAACkC,KAAK,CAAC;IAC/B,OAAOsgD,gBAAgB,CAAC94B,IAAI,CAACi5B,KAAK,CAAC;EACpC,CAAC,CAAC,OAAOzsC,CAAC,EAAE;IACX,OAAO,KAAK,CAAC,CAAC;EACf;AACD,CAAC;;AAED,IAAI0sC,iBAAiB,GAAG,SAASC,gBAAgBA,CAAC3gD,KAAK,EAAE;EACxD,IAAI;IACH,IAAIugD,YAAY,CAACvgD,KAAK,CAAC,EAAE;MAAE,OAAO,KAAK;IAAE;IACzCkgD,OAAO,CAACpiD,IAAI,CAACkC,KAAK,CAAC;IACnB,OAAO,IAAI;EACZ,CAAC,CAAC,OAAOgU,CAAC,EAAE;IACX,OAAO,KAAK;EACb;AACD,CAAC;AACD,IAAIwiC,KAAK,GAAGvpC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ;AACrC,IAAIgxC,WAAW,GAAG,iBAAiB;AACnC,IAAIC,OAAO,GAAG,mBAAmB;AACjC,IAAIC,QAAQ,GAAG,4BAA4B;AAC3C,IAAIC,QAAQ,GAAG,4BAA4B,CAAC,CAAC;AAC7C,IAAIC,SAAS,GAAG,kCAAkC;AAClD,IAAIC,SAAS,GAAG,yBAAyB,CAAC,CAAC;AAC3C,IAAIC,cAAc,GAAG,OAAO79B,MAAM,KAAK,UAAU,IAAI,CAAC,CAACA,MAAM,CAAC28B,WAAW,CAAC,CAAC;;AAE3E,IAAImB,MAAM,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;;AAE1B,IAAIC,KAAK,GAAG,SAASC,gBAAgBA,CAAA,EAAG;EAAE,OAAO,KAAK;AAAE,CAAC;AACzD,IAAI,QAAOC,QAAQ,iCAAA7rC,OAAA,CAAR6rC,QAAQ,OAAK,QAAQ,EAAE;EACjC;EACA,IAAIh6B,GAAG,GAAGg6B,QAAQ,CAACh6B,GAAG;EACtB,IAAIkvB,KAAK,CAAC14C,IAAI,CAACwpB,GAAG,CAAC,KAAKkvB,KAAK,CAAC14C,IAAI,CAACwjD,QAAQ,CAACh6B,GAAG,CAAC,EAAE;IACjD85B,KAAK,GAAG,SAASC,gBAAgBA,CAACrhD,KAAK,EAAE;MACxC;MACA;MACA,IAAI,CAACmhD,MAAM,IAAI,CAACnhD,KAAK,MAAM,OAAOA,KAAK,KAAK,WAAW,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,CAAC,EAAE;QACtF,IAAI;UACH,IAAIye,GAAG,GAAG+3B,KAAK,CAAC14C,IAAI,CAACkC,KAAK,CAAC;UAC3B,OAAO,CACNye,GAAG,KAAKsiC,QAAQ,IACbtiC,GAAG,KAAKuiC,SAAS,IACjBviC,GAAG,KAAKwiC,SAAS,CAAC;UAAA,GAClBxiC,GAAG,KAAKmiC,WAAW,CAAC;UAAA,KACnB5gD,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;QACzB,CAAC,CAAC,OAAOgU,CAAC,EAAE,CAAE;MACf;MACA,OAAO,KAAK;IACb,CAAC;EACF;AACD;AAEApW,MAAM,CAACC,OAAO,GAAGsiD,YAAY,GAC1B,SAAS5I,UAAUA,CAACv3C,KAAK,EAAE;EAC5B,IAAIohD,KAAK,CAACphD,KAAK,CAAC,EAAE;IAAE,OAAO,IAAI;EAAE;EACjC,IAAI,CAACA,KAAK,EAAE;IAAE,OAAO,KAAK;EAAE;EAC5B,IAAI,OAAOA,KAAK,KAAK,UAAU,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,EAAE;IAAE,OAAO,KAAK;EAAE;EAC9E,IAAI;IACHmgD,YAAY,CAACngD,KAAK,EAAE,IAAI,EAAEogD,YAAY,CAAC;EACxC,CAAC,CAAC,OAAOpsC,CAAC,EAAE;IACX,IAAIA,CAAC,KAAKqsC,gBAAgB,EAAE;MAAE,OAAO,KAAK;IAAE;EAC7C;EACA,OAAO,CAACE,YAAY,CAACvgD,KAAK,CAAC,IAAI0gD,iBAAiB,CAAC1gD,KAAK,CAAC;AACxD,CAAC,GACC,SAASu3C,UAAUA,CAACv3C,KAAK,EAAE;EAC5B,IAAIohD,KAAK,CAACphD,KAAK,CAAC,EAAE;IAAE,OAAO,IAAI;EAAE;EACjC,IAAI,CAACA,KAAK,EAAE;IAAE,OAAO,KAAK;EAAE;EAC5B,IAAI,OAAOA,KAAK,KAAK,UAAU,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,EAAE;IAAE,OAAO,KAAK;EAAE;EAC9E,IAAIkhD,cAAc,EAAE;IAAE,OAAOR,iBAAiB,CAAC1gD,KAAK,CAAC;EAAE;EACvD,IAAIugD,YAAY,CAACvgD,KAAK,CAAC,EAAE;IAAE,OAAO,KAAK;EAAE;EACzC,IAAIuhD,QAAQ,GAAG/K,KAAK,CAAC14C,IAAI,CAACkC,KAAK,CAAC;EAChC,IAAIuhD,QAAQ,KAAKV,OAAO,IAAIU,QAAQ,KAAKT,QAAQ,IAAI,CAAE,gBAAgB,CAAEt5B,IAAI,CAAC+5B,QAAQ,CAAC,EAAE;IAAE,OAAO,KAAK;EAAE;EACzG,OAAOb,iBAAiB,CAAC1gD,KAAK,CAAC;AAChC,CAAC,C;;;;;;;;;;;;ACpGW;;AAAA,SAAAyV,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIqM,SAAS,GAAGhkD,mBAAO,CAAC,sDAAY,CAAC;AAErC,IAAIikD,MAAM,GAAGD,SAAS,CAAC,uBAAuB,CAAC;AAC/C;AACA,IAAIE,aAAa,GAAG,SAASC,iBAAiBA,CAAC3hD,KAAK,EAAE;EACrD,IAAI;IACHyhD,MAAM,CAACzhD,KAAK,CAAC;IACb,OAAO,IAAI;EACZ,CAAC,CAAC,OAAOgU,CAAC,EAAE;IACX,OAAO,KAAK;EACb;AACD,CAAC;;AAED;AACA,IAAIwiC,KAAK,GAAGgL,SAAS,CAAC,2BAA2B,CAAC;AAClD,IAAII,SAAS,GAAG,eAAe;AAC/B,IAAIV,cAAc,GAAG1jD,mBAAO,CAAC,sEAAuB,CAAC,CAAC,CAAC;;AAEvD;AACAI,MAAM,CAACC,OAAO,GAAG,SAASgkD,YAAYA,CAAC7hD,KAAK,EAAE;EAC7C,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;IAChD,OAAO,KAAK;EACb;EACA,OAAOkhD,cAAc,GAAGQ,aAAa,CAAC1hD,KAAK,CAAC,GAAGw2C,KAAK,CAACx2C,KAAK,CAAC,KAAK4hD,SAAS;AAC1E,CAAC,C;;;;;;;;;;;;AC1BY;;AAAA,SAAAnsC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIqM,SAAS,GAAGhkD,mBAAO,CAAC,sDAAY,CAAC;AACrC,IAAI0jD,cAAc,GAAG1jD,mBAAO,CAAC,sEAAuB,CAAC,CAAC,CAAC;AACvD,IAAI8P,MAAM,GAAG9P,mBAAO,CAAC,8CAAQ,CAAC;AAC9B,IAAIy5C,IAAI,GAAGz5C,mBAAO,CAAC,0CAAM,CAAC;;AAE1B;AACA,IAAIme,EAAE;AAEN,IAAIulC,cAAc,EAAE;EACnB;EACA,IAAIjD,KAAK,GAAGuD,SAAS,CAAC,uBAAuB,CAAC;EAC9C;EACA,IAAIM,aAAa,GAAG,CAAC,CAAC;EAEtB,IAAIC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAe;IAClC,MAAMD,aAAa;EACpB,CAAC;EACD;EACA,IAAIE,cAAc,GAAG;IACpBpyC,QAAQ,EAAEmyC,gBAAgB;IAC1B1I,OAAO,EAAE0I;EACV,CAAC;EAED,IAAItsC,OAAA,CAAO4N,MAAM,CAAC60B,WAAW,MAAK,QAAQ,EAAE;IAC3C8J,cAAc,CAAC3+B,MAAM,CAAC60B,WAAW,CAAC,GAAG6J,gBAAgB;EACtD;;EAEA;EACA;EACA;EACApmC,EAAE,GAAG,SAASsmC,OAAOA,CAACjiD,KAAK,EAAE;IAC5B,IAAI,CAACA,KAAK,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,EAAE;MACxC,OAAO,KAAK;IACb;;IAEA;IACA,IAAI8/C,UAAU,GAAG,uCAAyC7I,IAAI,EAAE,sCAAwCj3C,KAAK,EAAG,WAAW,CAAC;IAC5H,IAAIkiD,wBAAwB,GAAGpC,UAAU,IAAIxyC,MAAM,CAACwyC,UAAU,EAAE,OAAO,CAAC;IACxE,IAAI,CAACoC,wBAAwB,EAAE;MAC9B,OAAO,KAAK;IACb;IAEA,IAAI;MACH;MACAjE,KAAK,CAACj+C,KAAK,EAAE,sBAAuB,sBAAwBgiD,cAAgB,CAAC;IAC9E,CAAC,CAAC,OAAOhuC,CAAC,EAAE;MACX,OAAOA,CAAC,KAAK8tC,aAAa;IAC3B;EACD,CAAC;AACF,CAAC,MAAM;EACN;EACA,IAAIK,SAAS,GAAGX,SAAS,CAAC,2BAA2B,CAAC;EACtD;EACA,IAAIY,UAAU,GAAG,iBAAiB;;EAElC;EACAzmC,EAAE,GAAG,SAASsmC,OAAOA,CAACjiD,KAAK,EAAE;IAC5B;IACA,IAAI,CAACA,KAAK,IAAKyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,UAAW,EAAE;MACzE,OAAO,KAAK;IACb;IAEA,OAAOmiD,SAAS,CAACniD,KAAK,CAAC,KAAKoiD,UAAU;EACvC,CAAC;AACF;AAEAxkD,MAAM,CAACC,OAAO,GAAG8d,EAAE,C;;;;;;;;;;;;ACpEN;;AAAA,SAAAlG,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIqM,SAAS,GAAGhkD,mBAAO,CAAC,sDAAY,CAAC;AACrC,IAAI2kD,SAAS,GAAGX,SAAS,CAAC,2BAA2B,CAAC;AACtD,IAAIjL,UAAU,GAAG/4C,mBAAO,CAAC,wDAAa,CAAC,CAAC,CAAC;AACzC,IAAI6kD,aAAa,GAAG7kD,mBAAO,CAAC,gEAAiB,CAAC;AAE9C,IAAI+4C,UAAU,EAAE;EACf,IAAI+L,SAAS,GAAGd,SAAS,CAAC,2BAA2B,CAAC;EACtD,IAAIe,WAAW,GAAGF,aAAa,CAAC,gBAAgB,CAAC;;EAEjD;EACA,IAAIG,cAAc,GAAG,SAASC,kBAAkBA,CAACziD,KAAK,EAAE;IACvD,IAAIyV,OAAA,CAAOzV,KAAK,CAACq5C,OAAO,CAAC,CAAC,MAAK,QAAQ,EAAE;MACxC,OAAO,KAAK;IACb;IACA,OAAOkJ,WAAW,CAACD,SAAS,CAACtiD,KAAK,CAAC,CAAC;EACrC,CAAC;;EAED;EACApC,MAAM,CAACC,OAAO,GAAG,SAASk7C,QAAQA,CAAC/4C,KAAK,EAAE;IACzC,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,EAAE;MAC9B,OAAO,IAAI;IACZ;IACA,IAAI,CAACA,KAAK,IAAIyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,IAAImiD,SAAS,CAACniD,KAAK,CAAC,KAAK,iBAAiB,EAAE;MAClF,OAAO,KAAK;IACb;IACA,IAAI;MACH,OAAOwiD,cAAc,CAACxiD,KAAK,CAAC;IAC7B,CAAC,CAAC,OAAOgU,CAAC,EAAE;MACX,OAAO,KAAK;IACb;EACD,CAAC;AACF,CAAC,MAAM;EACN;EACApW,MAAM,CAACC,OAAO,GAAG,SAASk7C,QAAQA,CAAC/4C,KAAK,EAAE;IACzC;IACA,OAAO,MAAK,IAAIA,KAAK;EACtB,CAAC;AACF,C;;;;;;;;;;;;ACvCa;;AAEb;AACApC,MAAM,CAACC,OAAO,GAAG2B,IAAI,CAACM,GAAG,C;;;;;;;;;;;;ACHZ;;AAEb;AACAlC,MAAM,CAACC,OAAO,GAAG2B,IAAI,CAACua,KAAK,C;;;;;;;;;;;;ACHd;;AAEb;AACAnc,MAAM,CAACC,OAAO,GAAG4Q,MAAM,CAACQ,KAAK,IAAI,SAASA,KAAKA,CAAC5O,CAAC,EAAE;EAClD,OAAOA,CAAC,KAAKA,CAAC;AACf,CAAC,C;;;;;;;;;;;;ACLY;;AAEb;AACAzC,MAAM,CAACC,OAAO,GAAG2B,IAAI,CAACE,GAAG,C;;;;;;;;;;;;ACHZ;;AAEb;AACA9B,MAAM,CAACC,OAAO,GAAG2B,IAAI,CAACC,GAAG,C;;;;;;;;;;;;ACHZ;;AAEb;AACA7B,MAAM,CAACC,OAAO,GAAG2B,IAAI,CAACmB,GAAG,C;;;;;;;;;;;;ACHZ;;AAEb;AACA/C,MAAM,CAACC,OAAO,GAAG2B,IAAI,CAACoB,KAAK,C;;;;;;;;;;;;ACHd;;AAEb,IAAI8hD,MAAM,GAAGllD,mBAAO,CAAC,wDAAS,CAAC;;AAE/B;AACAI,MAAM,CAACC,OAAO,GAAG,SAAS6hB,IAAIA,CAAClJ,MAAM,EAAE;EACtC,IAAIksC,MAAM,CAAClsC,MAAM,CAAC,IAAIA,MAAM,KAAK,CAAC,EAAE;IACnC,OAAOA,MAAM;EACd;EACA,OAAOA,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,C;;;;;;;;;;;;ACVD,IAAImsC,MAAM,GAAG,OAAO3F,GAAG,KAAK,UAAU,IAAIA,GAAG,CAACh/C,SAAS;AACvD,IAAI4kD,iBAAiB,GAAG31C,MAAM,CAACiyC,wBAAwB,IAAIyD,MAAM,GAAG11C,MAAM,CAACiyC,wBAAwB,CAAClC,GAAG,CAACh/C,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI;AACjI,IAAI6kD,OAAO,GAAGF,MAAM,IAAIC,iBAAiB,IAAI,OAAOA,iBAAiB,CAACp1C,GAAG,KAAK,UAAU,GAAGo1C,iBAAiB,CAACp1C,GAAG,GAAG,IAAI;AACvH,IAAIs1C,UAAU,GAAGH,MAAM,IAAI3F,GAAG,CAACh/C,SAAS,CAACijB,OAAO;AAChD,IAAI8hC,MAAM,GAAG,OAAOt4B,GAAG,KAAK,UAAU,IAAIA,GAAG,CAACzsB,SAAS;AACvD,IAAIglD,iBAAiB,GAAG/1C,MAAM,CAACiyC,wBAAwB,IAAI6D,MAAM,GAAG91C,MAAM,CAACiyC,wBAAwB,CAACz0B,GAAG,CAACzsB,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI;AACjI,IAAIilD,OAAO,GAAGF,MAAM,IAAIC,iBAAiB,IAAI,OAAOA,iBAAiB,CAACx1C,GAAG,KAAK,UAAU,GAAGw1C,iBAAiB,CAACx1C,GAAG,GAAG,IAAI;AACvH,IAAI01C,UAAU,GAAGH,MAAM,IAAIt4B,GAAG,CAACzsB,SAAS,CAACijB,OAAO;AAChD,IAAIkiC,UAAU,GAAG,OAAO7F,OAAO,KAAK,UAAU,IAAIA,OAAO,CAACt/C,SAAS;AACnE,IAAIolD,UAAU,GAAGD,UAAU,GAAG7F,OAAO,CAACt/C,SAAS,CAACk3C,GAAG,GAAG,IAAI;AAC1D,IAAImO,UAAU,GAAG,OAAO7F,OAAO,KAAK,UAAU,IAAIA,OAAO,CAACx/C,SAAS;AACnE,IAAIslD,UAAU,GAAGD,UAAU,GAAG7F,OAAO,CAACx/C,SAAS,CAACk3C,GAAG,GAAG,IAAI;AAC1D,IAAIqO,UAAU,GAAG,OAAOhG,OAAO,KAAK,UAAU,IAAIA,OAAO,CAACv/C,SAAS;AACnE,IAAIwlD,YAAY,GAAGD,UAAU,GAAGhG,OAAO,CAACv/C,SAAS,CAACylD,KAAK,GAAG,IAAI;AAC9D,IAAIC,cAAc,GAAGzH,OAAO,CAACj+C,SAAS,CAACq7C,OAAO;AAC9C,IAAIsK,cAAc,GAAG12C,MAAM,CAACjP,SAAS,CAAC4R,QAAQ;AAC9C,IAAIg0C,gBAAgB,GAAG7lD,QAAQ,CAACC,SAAS,CAAC4R,QAAQ;AAClD,IAAIi0C,MAAM,GAAGv+B,MAAM,CAACtnB,SAAS,CAACqQ,KAAK;AACnC,IAAIy1C,MAAM,GAAGx+B,MAAM,CAACtnB,SAAS,CAAC2P,KAAK;AACnC,IAAIowC,QAAQ,GAAGz4B,MAAM,CAACtnB,SAAS,CAAC6oB,OAAO;AACvC,IAAIk9B,YAAY,GAAGz+B,MAAM,CAACtnB,SAAS,CAAC6R,WAAW;AAC/C,IAAIm0C,YAAY,GAAG1+B,MAAM,CAACtnB,SAAS,CAAC4P,WAAW;AAC/C,IAAIq2C,KAAK,GAAG/7B,MAAM,CAAClqB,SAAS,CAACwpB,IAAI;AACjC,IAAIq2B,OAAO,GAAGruC,KAAK,CAACxR,SAAS,CAAC4T,MAAM;AACpC,IAAIsyC,KAAK,GAAG10C,KAAK,CAACxR,SAAS,CAACsS,IAAI;AAChC,IAAI6zC,SAAS,GAAG30C,KAAK,CAACxR,SAAS,CAAC2P,KAAK;AACrC,IAAIy2C,MAAM,GAAG5kD,IAAI,CAACua,KAAK;AACvB,IAAIsqC,aAAa,GAAG,OAAOvI,MAAM,KAAK,UAAU,GAAGA,MAAM,CAAC99C,SAAS,CAACq7C,OAAO,GAAG,IAAI;AAClF,IAAIiL,IAAI,GAAGr3C,MAAM,CAAC8pC,qBAAqB;AACvC,IAAIwN,WAAW,GAAG,OAAOlhC,MAAM,KAAK,UAAU,IAAI5N,OAAA,CAAO4N,MAAM,CAACwyB,QAAQ,MAAK,QAAQ,GAAGxyB,MAAM,CAACrlB,SAAS,CAAC4R,QAAQ,GAAG,IAAI;AACxH,IAAI40C,iBAAiB,GAAG,OAAOnhC,MAAM,KAAK,UAAU,IAAI5N,OAAA,CAAO4N,MAAM,CAACwyB,QAAQ,MAAK,QAAQ;AAC3F;AACA,IAAImK,WAAW,GAAG,OAAO38B,MAAM,KAAK,UAAU,IAAIA,MAAM,CAAC28B,WAAW,KAAKvqC,OAAA,CAAO4N,MAAM,CAAC28B,WAAW,MAAKwE,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC,GACzInhC,MAAM,CAAC28B,WAAW,GAClB,IAAI;AACV,IAAIyE,YAAY,GAAGx3C,MAAM,CAACjP,SAAS,CAAC6hD,oBAAoB;AAExD,IAAI6E,GAAG,GAAG,CAAC,OAAOnmD,OAAO,KAAK,UAAU,GAAGA,OAAO,CAACkiB,cAAc,GAAGxT,MAAM,CAACwT,cAAc,MACrF,EAAE,CAAC02B,SAAS,KAAK3nC,KAAK,CAACxR,SAAS,CAAC;AAAA,EAC3B,UAAU45C,CAAC,EAAE;EACX,OAAOA,CAAC,CAACT,SAAS,CAAC,CAAC;AACxB,CAAC,GACC,IAAI,CACb;AAED,SAASwN,mBAAmBA,CAAC1vB,GAAG,EAAExW,GAAG,EAAE;EACnC,IACIwW,GAAG,KAAK+H,QAAQ,IACb/H,GAAG,KAAK,CAAC+H,QAAQ,IACjB/H,GAAG,KAAKA,GAAG,IACVA,GAAG,IAAIA,GAAG,GAAG,CAAC,IAAI,IAAIA,GAAG,GAAG,IAAK,IAClCgvB,KAAK,CAACnmD,IAAI,CAAC,GAAG,EAAE2gB,GAAG,CAAC,EACzB;IACE,OAAOA,GAAG;EACd;EACA,IAAImmC,QAAQ,GAAG,kCAAkC;EACjD,IAAI,OAAO3vB,GAAG,KAAK,QAAQ,EAAE;IACzB,IAAI4vB,IAAG,GAAG5vB,GAAG,GAAG,CAAC,GAAG,CAACmvB,MAAM,CAAC,CAACnvB,GAAG,CAAC,GAAGmvB,MAAM,CAACnvB,GAAG,CAAC,CAAC,CAAC;IACjD,IAAI4vB,IAAG,KAAK5vB,GAAG,EAAE;MACb,IAAI6vB,MAAM,GAAGx/B,MAAM,CAACu/B,IAAG,CAAC;MACxB,IAAIE,GAAG,GAAGjB,MAAM,CAAChmD,IAAI,CAAC2gB,GAAG,EAAEqmC,MAAM,CAACxmD,MAAM,GAAG,CAAC,CAAC;MAC7C,OAAOy/C,QAAQ,CAACjgD,IAAI,CAACgnD,MAAM,EAAEF,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG7G,QAAQ,CAACjgD,IAAI,CAACigD,QAAQ,CAACjgD,IAAI,CAACinD,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;IAC3H;EACJ;EACA,OAAOhH,QAAQ,CAACjgD,IAAI,CAAC2gB,GAAG,EAAEmmC,QAAQ,EAAE,KAAK,CAAC;AAC9C;AAEA,IAAII,WAAW,GAAGxnD,mBAAO,CAAC,uBAAgB,CAAC;AAC3C,IAAIynD,aAAa,GAAGD,WAAW,CAACE,MAAM;AACtC,IAAIC,aAAa,GAAGpM,QAAQ,CAACkM,aAAa,CAAC,GAAGA,aAAa,GAAG,IAAI;AAElE,IAAIG,MAAM,GAAG;EACTjO,SAAS,EAAE,IAAI;EACf,QAAQ,EAAE,GAAG;EACbkO,MAAM,EAAE;AACZ,CAAC;AACD,IAAIC,QAAQ,GAAG;EACXnO,SAAS,EAAE,IAAI;EACf,QAAQ,EAAE,UAAU;EACpBkO,MAAM,EAAE;AACZ,CAAC;AAEDznD,MAAM,CAACC,OAAO,GAAG,SAAS0nD,QAAQA,CAACpQ,GAAG,EAAE5zC,OAAO,EAAEikD,KAAK,EAAEC,IAAI,EAAE;EAC1D,IAAIC,IAAI,GAAGnkD,OAAO,IAAI,CAAC,CAAC;EAExB,IAAI2zC,GAAG,CAACwQ,IAAI,EAAE,YAAY,CAAC,IAAI,CAACxQ,GAAG,CAACkQ,MAAM,EAAEM,IAAI,CAACC,UAAU,CAAC,EAAE;IAC1D,MAAM,IAAIhjC,SAAS,CAAC,kDAAkD,CAAC;EAC3E;EACA,IACIuyB,GAAG,CAACwQ,IAAI,EAAE,iBAAiB,CAAC,KAAK,OAAOA,IAAI,CAACE,eAAe,KAAK,QAAQ,GACnEF,IAAI,CAACE,eAAe,GAAG,CAAC,IAAIF,IAAI,CAACE,eAAe,KAAK5oB,QAAQ,GAC7D0oB,IAAI,CAACE,eAAe,KAAK,IAAI,CAClC,EACH;IACE,MAAM,IAAIjjC,SAAS,CAAC,wFAAwF,CAAC;EACjH;EACA,IAAIkjC,aAAa,GAAG3Q,GAAG,CAACwQ,IAAI,EAAE,eAAe,CAAC,GAAGA,IAAI,CAACG,aAAa,GAAG,IAAI;EAC1E,IAAI,OAAOA,aAAa,KAAK,SAAS,IAAIA,aAAa,KAAK,QAAQ,EAAE;IAClE,MAAM,IAAIljC,SAAS,CAAC,+EAA+E,CAAC;EACxG;EAEA,IACIuyB,GAAG,CAACwQ,IAAI,EAAE,QAAQ,CAAC,IAChBA,IAAI,CAACI,MAAM,KAAK,IAAI,IACpBJ,IAAI,CAACI,MAAM,KAAK,IAAI,IACpB,EAAEp3C,QAAQ,CAACg3C,IAAI,CAACI,MAAM,EAAE,EAAE,CAAC,KAAKJ,IAAI,CAACI,MAAM,IAAIJ,IAAI,CAACI,MAAM,GAAG,CAAC,CAAC,EACpE;IACE,MAAM,IAAInjC,SAAS,CAAC,0DAA0D,CAAC;EACnF;EACA,IAAIuyB,GAAG,CAACwQ,IAAI,EAAE,kBAAkB,CAAC,IAAI,OAAOA,IAAI,CAACK,gBAAgB,KAAK,SAAS,EAAE;IAC7E,MAAM,IAAIpjC,SAAS,CAAC,mEAAmE,CAAC;EAC5F;EACA,IAAIojC,gBAAgB,GAAGL,IAAI,CAACK,gBAAgB;EAE5C,IAAI,OAAO5Q,GAAG,KAAK,WAAW,EAAE;IAC5B,OAAO,WAAW;EACtB;EACA,IAAIA,GAAG,KAAK,IAAI,EAAE;IACd,OAAO,MAAM;EACjB;EACA,IAAI,OAAOA,GAAG,KAAK,SAAS,EAAE;IAC1B,OAAOA,GAAG,GAAG,MAAM,GAAG,OAAO;EACjC;EAEA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IACzB,OAAO6Q,aAAa,CAAC7Q,GAAG,EAAEuQ,IAAI,CAAC;EACnC;EACA,IAAI,OAAOvQ,GAAG,KAAK,QAAQ,EAAE;IACzB,IAAIA,GAAG,KAAK,CAAC,EAAE;MACX,OAAOnY,QAAQ,GAAGmY,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI;IAC1C;IACA,IAAI12B,GAAG,GAAG6G,MAAM,CAAC6vB,GAAG,CAAC;IACrB,OAAO4Q,gBAAgB,GAAGpB,mBAAmB,CAACxP,GAAG,EAAE12B,GAAG,CAAC,GAAGA,GAAG;EACjE;EACA,IAAI,OAAO02B,GAAG,KAAK,QAAQ,EAAE;IACzB,IAAI8Q,SAAS,GAAG3gC,MAAM,CAAC6vB,GAAG,CAAC,GAAG,GAAG;IACjC,OAAO4Q,gBAAgB,GAAGpB,mBAAmB,CAACxP,GAAG,EAAE8Q,SAAS,CAAC,GAAGA,SAAS;EAC7E;EAEA,IAAIC,QAAQ,GAAG,OAAOR,IAAI,CAACF,KAAK,KAAK,WAAW,GAAG,CAAC,GAAGE,IAAI,CAACF,KAAK;EACjE,IAAI,OAAOA,KAAK,KAAK,WAAW,EAAE;IAAEA,KAAK,GAAG,CAAC;EAAE;EAC/C,IAAIA,KAAK,IAAIU,QAAQ,IAAIA,QAAQ,GAAG,CAAC,IAAIzwC,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,EAAE;IAC9D,OAAOx+B,OAAO,CAACw+B,GAAG,CAAC,GAAG,SAAS,GAAG,UAAU;EAChD;EAEA,IAAI2Q,MAAM,GAAGK,SAAS,CAACT,IAAI,EAAEF,KAAK,CAAC;EAEnC,IAAI,OAAOC,IAAI,KAAK,WAAW,EAAE;IAC7BA,IAAI,GAAG,EAAE;EACb,CAAC,MAAM,IAAIx0C,OAAO,CAACw0C,IAAI,EAAEtQ,GAAG,CAAC,IAAI,CAAC,EAAE;IAChC,OAAO,YAAY;EACvB;EAEA,SAASqC,OAAOA,CAACx3C,KAAK,EAAEC,IAAI,EAAEmmD,QAAQ,EAAE;IACpC,IAAInmD,IAAI,EAAE;MACNwlD,IAAI,GAAGtB,SAAS,CAACrmD,IAAI,CAAC2nD,IAAI,CAAC;MAC3BA,IAAI,CAACp0C,IAAI,CAACpR,IAAI,CAAC;IACnB;IACA,IAAImmD,QAAQ,EAAE;MACV,IAAIC,OAAO,GAAG;QACVb,KAAK,EAAEE,IAAI,CAACF;MAChB,CAAC;MACD,IAAItQ,GAAG,CAACwQ,IAAI,EAAE,YAAY,CAAC,EAAE;QACzBW,OAAO,CAACV,UAAU,GAAGD,IAAI,CAACC,UAAU;MACxC;MACA,OAAOJ,QAAQ,CAACvlD,KAAK,EAAEqmD,OAAO,EAAEb,KAAK,GAAG,CAAC,EAAEC,IAAI,CAAC;IACpD;IACA,OAAOF,QAAQ,CAACvlD,KAAK,EAAE0lD,IAAI,EAAEF,KAAK,GAAG,CAAC,EAAEC,IAAI,CAAC;EACjD;EAEA,IAAI,OAAOtQ,GAAG,KAAK,UAAU,IAAI,CAACmR,QAAQ,CAACnR,GAAG,CAAC,EAAE;IAAE;IAC/C,IAAIx2C,IAAI,GAAG4nD,MAAM,CAACpR,GAAG,CAAC;IACtB,IAAIjlC,IAAI,GAAGs2C,UAAU,CAACrR,GAAG,EAAEqC,OAAO,CAAC;IACnC,OAAO,WAAW,IAAI74C,IAAI,GAAG,IAAI,GAAGA,IAAI,GAAG,cAAc,CAAC,GAAG,GAAG,IAAIuR,IAAI,CAAC5R,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG4lD,KAAK,CAACpmD,IAAI,CAACoS,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;EACrI;EACA,IAAI6oC,QAAQ,CAAC5D,GAAG,CAAC,EAAE;IACf,IAAIsR,SAAS,GAAGjC,iBAAiB,GAAGzG,QAAQ,CAACjgD,IAAI,CAACwnB,MAAM,CAAC6vB,GAAG,CAAC,EAAE,wBAAwB,EAAE,IAAI,CAAC,GAAGoP,WAAW,CAACzmD,IAAI,CAACq3C,GAAG,CAAC;IACtH,OAAO1/B,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,IAAI,CAACqP,iBAAiB,GAAGkC,SAAS,CAACD,SAAS,CAAC,GAAGA,SAAS;EAC3F;EACA,IAAIE,SAAS,CAACxR,GAAG,CAAC,EAAE;IAChB,IAAIpmC,CAAC,GAAG,GAAG,GAAGi1C,YAAY,CAAClmD,IAAI,CAACwnB,MAAM,CAAC6vB,GAAG,CAACyR,QAAQ,CAAC,CAAC;IACrD,IAAIC,KAAK,GAAG1R,GAAG,CAAC2R,UAAU,IAAI,EAAE;IAChC,KAAK,IAAIx4C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGu4C,KAAK,CAACvoD,MAAM,EAAEgQ,CAAC,EAAE,EAAE;MACnCS,CAAC,IAAI,GAAG,GAAG83C,KAAK,CAACv4C,CAAC,CAAC,CAAC3P,IAAI,GAAG,GAAG,GAAGooD,UAAU,CAACzI,KAAK,CAACuI,KAAK,CAACv4C,CAAC,CAAC,CAACtO,KAAK,CAAC,EAAE,QAAQ,EAAE0lD,IAAI,CAAC;IACtF;IACA32C,CAAC,IAAI,GAAG;IACR,IAAIomC,GAAG,CAAC6R,UAAU,IAAI7R,GAAG,CAAC6R,UAAU,CAAC1oD,MAAM,EAAE;MAAEyQ,CAAC,IAAI,KAAK;IAAE;IAC3DA,CAAC,IAAI,IAAI,GAAGi1C,YAAY,CAAClmD,IAAI,CAACwnB,MAAM,CAAC6vB,GAAG,CAACyR,QAAQ,CAAC,CAAC,GAAG,GAAG;IACzD,OAAO73C,CAAC;EACZ;EACA,IAAI4H,OAAO,CAACw+B,GAAG,CAAC,EAAE;IACd,IAAIA,GAAG,CAAC72C,MAAM,KAAK,CAAC,EAAE;MAAE,OAAO,IAAI;IAAE;IACrC,IAAI2oD,EAAE,GAAGT,UAAU,CAACrR,GAAG,EAAEqC,OAAO,CAAC;IACjC,IAAIsO,MAAM,IAAI,CAACoB,gBAAgB,CAACD,EAAE,CAAC,EAAE;MACjC,OAAO,GAAG,GAAGE,YAAY,CAACF,EAAE,EAAEnB,MAAM,CAAC,GAAG,GAAG;IAC/C;IACA,OAAO,IAAI,GAAG5B,KAAK,CAACpmD,IAAI,CAACmpD,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI;EAC7C;EACA,IAAIG,OAAO,CAACjS,GAAG,CAAC,EAAE;IACd,IAAI1sB,KAAK,GAAG+9B,UAAU,CAACrR,GAAG,EAAEqC,OAAO,CAAC;IACpC,IAAI,EAAE,OAAO,IAAI9mC,KAAK,CAAC1S,SAAS,CAAC,IAAI,OAAO,IAAIm3C,GAAG,IAAI,CAACsP,YAAY,CAAC3mD,IAAI,CAACq3C,GAAG,EAAE,OAAO,CAAC,EAAE;MACrF,OAAO,KAAK,GAAG7vB,MAAM,CAAC6vB,GAAG,CAAC,GAAG,IAAI,GAAG+O,KAAK,CAACpmD,IAAI,CAAC+/C,OAAO,CAAC//C,IAAI,CAAC,WAAW,GAAG05C,OAAO,CAACrC,GAAG,CAACkS,KAAK,CAAC,EAAE5+B,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI;IACtH;IACA,IAAIA,KAAK,CAACnqB,MAAM,KAAK,CAAC,EAAE;MAAE,OAAO,GAAG,GAAGgnB,MAAM,CAAC6vB,GAAG,CAAC,GAAG,GAAG;IAAE;IAC1D,OAAO,KAAK,GAAG7vB,MAAM,CAAC6vB,GAAG,CAAC,GAAG,IAAI,GAAG+O,KAAK,CAACpmD,IAAI,CAAC2qB,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI;EACtE;EACA,IAAIhT,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,IAAI0Q,aAAa,EAAE;IAC1C,IAAIV,aAAa,IAAI,OAAOhQ,GAAG,CAACgQ,aAAa,CAAC,KAAK,UAAU,IAAIH,WAAW,EAAE;MAC1E,OAAOA,WAAW,CAAC7P,GAAG,EAAE;QAAEqQ,KAAK,EAAEU,QAAQ,GAAGV;MAAM,CAAC,CAAC;IACxD,CAAC,MAAM,IAAIK,aAAa,KAAK,QAAQ,IAAI,OAAO1Q,GAAG,CAACqC,OAAO,KAAK,UAAU,EAAE;MACxE,OAAOrC,GAAG,CAACqC,OAAO,CAAC,CAAC;IACxB;EACJ;EACA,IAAI8P,KAAK,CAACnS,GAAG,CAAC,EAAE;IACZ,IAAIoS,QAAQ,GAAG,EAAE;IACjB,IAAIzE,UAAU,EAAE;MACZA,UAAU,CAAChlD,IAAI,CAACq3C,GAAG,EAAE,UAAUn1C,KAAK,EAAEgN,GAAG,EAAE;QACvCu6C,QAAQ,CAACl2C,IAAI,CAACmmC,OAAO,CAACxqC,GAAG,EAAEmoC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,GAAGqC,OAAO,CAACx3C,KAAK,EAAEm1C,GAAG,CAAC,CAAC;MACzE,CAAC,CAAC;IACN;IACA,OAAOqS,YAAY,CAAC,KAAK,EAAE3E,OAAO,CAAC/kD,IAAI,CAACq3C,GAAG,CAAC,EAAEoS,QAAQ,EAAEzB,MAAM,CAAC;EACnE;EACA,IAAI2B,KAAK,CAACtS,GAAG,CAAC,EAAE;IACZ,IAAIuS,QAAQ,GAAG,EAAE;IACjB,IAAIxE,UAAU,EAAE;MACZA,UAAU,CAACplD,IAAI,CAACq3C,GAAG,EAAE,UAAUn1C,KAAK,EAAE;QAClC0nD,QAAQ,CAACr2C,IAAI,CAACmmC,OAAO,CAACx3C,KAAK,EAAEm1C,GAAG,CAAC,CAAC;MACtC,CAAC,CAAC;IACN;IACA,OAAOqS,YAAY,CAAC,KAAK,EAAEvE,OAAO,CAACnlD,IAAI,CAACq3C,GAAG,CAAC,EAAEuS,QAAQ,EAAE5B,MAAM,CAAC;EACnE;EACA,IAAI6B,SAAS,CAACxS,GAAG,CAAC,EAAE;IAChB,OAAOyS,gBAAgB,CAAC,SAAS,CAAC;EACtC;EACA,IAAIC,SAAS,CAAC1S,GAAG,CAAC,EAAE;IAChB,OAAOyS,gBAAgB,CAAC,SAAS,CAAC;EACtC;EACA,IAAIE,SAAS,CAAC3S,GAAG,CAAC,EAAE;IAChB,OAAOyS,gBAAgB,CAAC,SAAS,CAAC;EACtC;EACA,IAAIG,QAAQ,CAAC5S,GAAG,CAAC,EAAE;IACf,OAAOuR,SAAS,CAAClP,OAAO,CAAC/oC,MAAM,CAAC0mC,GAAG,CAAC,CAAC,CAAC;EAC1C;EACA,IAAI6S,QAAQ,CAAC7S,GAAG,CAAC,EAAE;IACf,OAAOuR,SAAS,CAAClP,OAAO,CAAC6M,aAAa,CAACvmD,IAAI,CAACq3C,GAAG,CAAC,CAAC,CAAC;EACtD;EACA,IAAI8S,SAAS,CAAC9S,GAAG,CAAC,EAAE;IAChB,OAAOuR,SAAS,CAAChD,cAAc,CAAC5lD,IAAI,CAACq3C,GAAG,CAAC,CAAC;EAC9C;EACA,IAAI32B,QAAQ,CAAC22B,GAAG,CAAC,EAAE;IACf,OAAOuR,SAAS,CAAClP,OAAO,CAAClyB,MAAM,CAAC6vB,GAAG,CAAC,CAAC,CAAC;EAC1C;EACA;EACA;EACA,IAAI,OAAO+S,MAAM,KAAK,WAAW,IAAI/S,GAAG,KAAK+S,MAAM,EAAE;IACjD,OAAO,qBAAqB;EAChC;EACA,IACK,OAAO1mC,UAAU,KAAK,WAAW,IAAI2zB,GAAG,KAAK3zB,UAAU,IACpD,OAAO2mC,MAAM,KAAK,WAAW,IAAIhT,GAAG,KAAKgT,MAAO,EACtD;IACE,OAAO,yBAAyB;EACpC;EACA,IAAI,CAACrP,MAAM,CAAC3D,GAAG,CAAC,IAAI,CAACmR,QAAQ,CAACnR,GAAG,CAAC,EAAE;IAChC,IAAIiT,EAAE,GAAG5B,UAAU,CAACrR,GAAG,EAAEqC,OAAO,CAAC;IACjC,IAAI6Q,aAAa,GAAG3D,GAAG,GAAGA,GAAG,CAACvP,GAAG,CAAC,KAAKloC,MAAM,CAACjP,SAAS,GAAGm3C,GAAG,YAAYloC,MAAM,IAAIkoC,GAAG,CAAC70B,WAAW,KAAKrT,MAAM;IAC7G,IAAIq7C,QAAQ,GAAGnT,GAAG,YAAYloC,MAAM,GAAG,EAAE,GAAG,gBAAgB;IAC5D,IAAIs7C,SAAS,GAAG,CAACF,aAAa,IAAIrI,WAAW,IAAI/yC,MAAM,CAACkoC,GAAG,CAAC,KAAKA,GAAG,IAAI6K,WAAW,IAAI7K,GAAG,GAAG2O,MAAM,CAAChmD,IAAI,CAAC04C,KAAK,CAACrB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGmT,QAAQ,GAAG,QAAQ,GAAG,EAAE;IACtJ,IAAIE,cAAc,GAAGH,aAAa,IAAI,OAAOlT,GAAG,CAAC70B,WAAW,KAAK,UAAU,GAAG,EAAE,GAAG60B,GAAG,CAAC70B,WAAW,CAAC3hB,IAAI,GAAGw2C,GAAG,CAAC70B,WAAW,CAAC3hB,IAAI,GAAG,GAAG,GAAG,EAAE;IACzI,IAAI8pD,GAAG,GAAGD,cAAc,IAAID,SAAS,IAAID,QAAQ,GAAG,GAAG,GAAGpE,KAAK,CAACpmD,IAAI,CAAC+/C,OAAO,CAAC//C,IAAI,CAAC,EAAE,EAAEyqD,SAAS,IAAI,EAAE,EAAED,QAAQ,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1I,IAAIF,EAAE,CAAC9pD,MAAM,KAAK,CAAC,EAAE;MAAE,OAAOmqD,GAAG,GAAG,IAAI;IAAE;IAC1C,IAAI3C,MAAM,EAAE;MACR,OAAO2C,GAAG,GAAG,GAAG,GAAGtB,YAAY,CAACiB,EAAE,EAAEtC,MAAM,CAAC,GAAG,GAAG;IACrD;IACA,OAAO2C,GAAG,GAAG,IAAI,GAAGvE,KAAK,CAACpmD,IAAI,CAACsqD,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI;EACnD;EACA,OAAO9iC,MAAM,CAAC6vB,GAAG,CAAC;AACtB,CAAC;AAED,SAAS4R,UAAUA,CAACh4C,CAAC,EAAE25C,YAAY,EAAEhD,IAAI,EAAE;EACvC,IAAI94B,KAAK,GAAG84B,IAAI,CAACC,UAAU,IAAI+C,YAAY;EAC3C,IAAIC,SAAS,GAAGvD,MAAM,CAACx4B,KAAK,CAAC;EAC7B,OAAO+7B,SAAS,GAAG55C,CAAC,GAAG45C,SAAS;AACpC;AAEA,SAASrK,KAAKA,CAACvvC,CAAC,EAAE;EACd,OAAOgvC,QAAQ,CAACjgD,IAAI,CAACwnB,MAAM,CAACvW,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC;AACnD;AAEA,SAAS65C,gBAAgBA,CAACzT,GAAG,EAAE;EAC3B,OAAO,CAAC6K,WAAW,IAAI,EAAEvqC,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,KAAK6K,WAAW,IAAI7K,GAAG,IAAI,OAAOA,GAAG,CAAC6K,WAAW,CAAC,KAAK,WAAW,CAAC,CAAC;AACxH;AACA,SAASrpC,OAAOA,CAACw+B,GAAG,EAAE;EAAE,OAAOqB,KAAK,CAACrB,GAAG,CAAC,KAAK,gBAAgB,IAAIyT,gBAAgB,CAACzT,GAAG,CAAC;AAAE;AACzF,SAAS2D,MAAMA,CAAC3D,GAAG,EAAE;EAAE,OAAOqB,KAAK,CAACrB,GAAG,CAAC,KAAK,eAAe,IAAIyT,gBAAgB,CAACzT,GAAG,CAAC;AAAE;AACvF,SAASmR,QAAQA,CAACnR,GAAG,EAAE;EAAE,OAAOqB,KAAK,CAACrB,GAAG,CAAC,KAAK,iBAAiB,IAAIyT,gBAAgB,CAACzT,GAAG,CAAC;AAAE;AAC3F,SAASiS,OAAOA,CAACjS,GAAG,EAAE;EAAE,OAAOqB,KAAK,CAACrB,GAAG,CAAC,KAAK,gBAAgB,IAAIyT,gBAAgB,CAACzT,GAAG,CAAC;AAAE;AACzF,SAAS32B,QAAQA,CAAC22B,GAAG,EAAE;EAAE,OAAOqB,KAAK,CAACrB,GAAG,CAAC,KAAK,iBAAiB,IAAIyT,gBAAgB,CAACzT,GAAG,CAAC;AAAE;AAC3F,SAAS4S,QAAQA,CAAC5S,GAAG,EAAE;EAAE,OAAOqB,KAAK,CAACrB,GAAG,CAAC,KAAK,iBAAiB,IAAIyT,gBAAgB,CAACzT,GAAG,CAAC;AAAE;AAC3F,SAAS8S,SAASA,CAAC9S,GAAG,EAAE;EAAE,OAAOqB,KAAK,CAACrB,GAAG,CAAC,KAAK,kBAAkB,IAAIyT,gBAAgB,CAACzT,GAAG,CAAC;AAAE;;AAE7F;AACA,SAAS4D,QAAQA,CAAC5D,GAAG,EAAE;EACnB,IAAIqP,iBAAiB,EAAE;IACnB,OAAOrP,GAAG,IAAI1/B,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,IAAIA,GAAG,YAAY9xB,MAAM;EAClE;EACA,IAAI5N,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,EAAE;IACzB,OAAO,IAAI;EACf;EACA,IAAI,CAACA,GAAG,IAAI1/B,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,IAAI,CAACoP,WAAW,EAAE;IACjD,OAAO,KAAK;EAChB;EACA,IAAI;IACAA,WAAW,CAACzmD,IAAI,CAACq3C,GAAG,CAAC;IACrB,OAAO,IAAI;EACf,CAAC,CAAC,OAAOnhC,CAAC,EAAE,CAAC;EACb,OAAO,KAAK;AAChB;AAEA,SAASg0C,QAAQA,CAAC7S,GAAG,EAAE;EACnB,IAAI,CAACA,GAAG,IAAI1/B,OAAA,CAAO0/B,GAAG,MAAK,QAAQ,IAAI,CAACkP,aAAa,EAAE;IACnD,OAAO,KAAK;EAChB;EACA,IAAI;IACAA,aAAa,CAACvmD,IAAI,CAACq3C,GAAG,CAAC;IACvB,OAAO,IAAI;EACf,CAAC,CAAC,OAAOnhC,CAAC,EAAE,CAAC;EACb,OAAO,KAAK;AAChB;AAEA,IAAI1G,MAAM,GAAGL,MAAM,CAACjP,SAAS,CAAC0gC,cAAc,IAAI,UAAU1xB,GAAG,EAAE;EAAE,OAAOA,GAAG,IAAI,IAAI;AAAE,CAAC;AACtF,SAASkoC,GAAGA,CAACC,GAAG,EAAEnoC,GAAG,EAAE;EACnB,OAAOM,MAAM,CAACxP,IAAI,CAACq3C,GAAG,EAAEnoC,GAAG,CAAC;AAChC;AAEA,SAASwpC,KAAKA,CAACrB,GAAG,EAAE;EAChB,OAAOwO,cAAc,CAAC7lD,IAAI,CAACq3C,GAAG,CAAC;AACnC;AAEA,SAASoR,MAAMA,CAACtyC,CAAC,EAAE;EACf,IAAIA,CAAC,CAACtV,IAAI,EAAE;IAAE,OAAOsV,CAAC,CAACtV,IAAI;EAAE;EAC7B,IAAImY,CAAC,GAAG+sC,MAAM,CAAC/lD,IAAI,CAAC8lD,gBAAgB,CAAC9lD,IAAI,CAACmW,CAAC,CAAC,EAAE,sBAAsB,CAAC;EACrE,IAAI6C,CAAC,EAAE;IAAE,OAAOA,CAAC,CAAC,CAAC,CAAC;EAAE;EACtB,OAAO,IAAI;AACf;AAEA,SAAS7F,OAAOA,CAACg2C,EAAE,EAAEt0C,CAAC,EAAE;EACpB,IAAIs0C,EAAE,CAACh2C,OAAO,EAAE;IAAE,OAAOg2C,EAAE,CAACh2C,OAAO,CAAC0B,CAAC,CAAC;EAAE;EACxC,KAAK,IAAIrE,CAAC,GAAG,CAAC,EAAEU,CAAC,GAAGi4C,EAAE,CAAC3oD,MAAM,EAAEgQ,CAAC,GAAGU,CAAC,EAAEV,CAAC,EAAE,EAAE;IACvC,IAAI24C,EAAE,CAAC34C,CAAC,CAAC,KAAKqE,CAAC,EAAE;MAAE,OAAOrE,CAAC;IAAE;EACjC;EACA,OAAO,CAAC,CAAC;AACb;AAEA,SAASg5C,KAAKA,CAAC30C,CAAC,EAAE;EACd,IAAI,CAACkwC,OAAO,IAAI,CAAClwC,CAAC,IAAI8C,OAAA,CAAO9C,CAAC,MAAK,QAAQ,EAAE;IACzC,OAAO,KAAK;EAChB;EACA,IAAI;IACAkwC,OAAO,CAAC/kD,IAAI,CAAC6U,CAAC,CAAC;IACf,IAAI;MACAswC,OAAO,CAACnlD,IAAI,CAAC6U,CAAC,CAAC;IACnB,CAAC,CAAC,OAAO5D,CAAC,EAAE;MACR,OAAO,IAAI;IACf;IACA,OAAO4D,CAAC,YAAYqqC,GAAG,CAAC,CAAC;EAC7B,CAAC,CAAC,OAAOhpC,CAAC,EAAE,CAAC;EACb,OAAO,KAAK;AAChB;AAEA,SAAS2zC,SAASA,CAACh1C,CAAC,EAAE;EAClB,IAAI,CAACywC,UAAU,IAAI,CAACzwC,CAAC,IAAI8C,OAAA,CAAO9C,CAAC,MAAK,QAAQ,EAAE;IAC5C,OAAO,KAAK;EAChB;EACA,IAAI;IACAywC,UAAU,CAACtlD,IAAI,CAAC6U,CAAC,EAAEywC,UAAU,CAAC;IAC9B,IAAI;MACAE,UAAU,CAACxlD,IAAI,CAAC6U,CAAC,EAAE2wC,UAAU,CAAC;IAClC,CAAC,CAAC,OAAOv0C,CAAC,EAAE;MACR,OAAO,IAAI;IACf;IACA,OAAO4D,CAAC,YAAY2qC,OAAO,CAAC,CAAC;EACjC,CAAC,CAAC,OAAOtpC,CAAC,EAAE,CAAC;EACb,OAAO,KAAK;AAChB;AAEA,SAAS8zC,SAASA,CAACn1C,CAAC,EAAE;EAClB,IAAI,CAAC6wC,YAAY,IAAI,CAAC7wC,CAAC,IAAI8C,OAAA,CAAO9C,CAAC,MAAK,QAAQ,EAAE;IAC9C,OAAO,KAAK;EAChB;EACA,IAAI;IACA6wC,YAAY,CAAC1lD,IAAI,CAAC6U,CAAC,CAAC;IACpB,OAAO,IAAI;EACf,CAAC,CAAC,OAAOqB,CAAC,EAAE,CAAC;EACb,OAAO,KAAK;AAChB;AAEA,SAASyzC,KAAKA,CAAC90C,CAAC,EAAE;EACd,IAAI,CAACswC,OAAO,IAAI,CAACtwC,CAAC,IAAI8C,OAAA,CAAO9C,CAAC,MAAK,QAAQ,EAAE;IACzC,OAAO,KAAK;EAChB;EACA,IAAI;IACAswC,OAAO,CAACnlD,IAAI,CAAC6U,CAAC,CAAC;IACf,IAAI;MACAkwC,OAAO,CAAC/kD,IAAI,CAAC6U,CAAC,CAAC;IACnB,CAAC,CAAC,OAAOmE,CAAC,EAAE;MACR,OAAO,IAAI;IACf;IACA,OAAOnE,CAAC,YAAY8X,GAAG,CAAC,CAAC;EAC7B,CAAC,CAAC,OAAOzW,CAAC,EAAE,CAAC;EACb,OAAO,KAAK;AAChB;AAEA,SAAS6zC,SAASA,CAACl1C,CAAC,EAAE;EAClB,IAAI,CAAC2wC,UAAU,IAAI,CAAC3wC,CAAC,IAAI8C,OAAA,CAAO9C,CAAC,MAAK,QAAQ,EAAE;IAC5C,OAAO,KAAK;EAChB;EACA,IAAI;IACA2wC,UAAU,CAACxlD,IAAI,CAAC6U,CAAC,EAAE2wC,UAAU,CAAC;IAC9B,IAAI;MACAF,UAAU,CAACtlD,IAAI,CAAC6U,CAAC,EAAEywC,UAAU,CAAC;IAClC,CAAC,CAAC,OAAOr0C,CAAC,EAAE;MACR,OAAO,IAAI;IACf;IACA,OAAO4D,CAAC,YAAY6qC,OAAO,CAAC,CAAC;EACjC,CAAC,CAAC,OAAOxpC,CAAC,EAAE,CAAC;EACb,OAAO,KAAK;AAChB;AAEA,SAAS2yC,SAASA,CAACh0C,CAAC,EAAE;EAClB,IAAI,CAACA,CAAC,IAAI8C,OAAA,CAAO9C,CAAC,MAAK,QAAQ,EAAE;IAAE,OAAO,KAAK;EAAE;EACjD,IAAI,OAAOk2C,WAAW,KAAK,WAAW,IAAIl2C,CAAC,YAAYk2C,WAAW,EAAE;IAChE,OAAO,IAAI;EACf;EACA,OAAO,OAAOl2C,CAAC,CAACi0C,QAAQ,KAAK,QAAQ,IAAI,OAAOj0C,CAAC,CAACm2C,YAAY,KAAK,UAAU;AACjF;AAEA,SAAS9C,aAAaA,CAACvnC,GAAG,EAAEinC,IAAI,EAAE;EAC9B,IAAIjnC,GAAG,CAACngB,MAAM,GAAGonD,IAAI,CAACE,eAAe,EAAE;IACnC,IAAImD,SAAS,GAAGtqC,GAAG,CAACngB,MAAM,GAAGonD,IAAI,CAACE,eAAe;IACjD,IAAIoD,OAAO,GAAG,MAAM,GAAGD,SAAS,GAAG,iBAAiB,IAAIA,SAAS,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;IACjF,OAAO/C,aAAa,CAAClC,MAAM,CAAChmD,IAAI,CAAC2gB,GAAG,EAAE,CAAC,EAAEinC,IAAI,CAACE,eAAe,CAAC,EAAEF,IAAI,CAAC,GAAGsD,OAAO;EACnF;EACA,IAAIC,OAAO,GAAG3D,QAAQ,CAACI,IAAI,CAACC,UAAU,IAAI,QAAQ,CAAC;EACnDsD,OAAO,CAACC,SAAS,GAAG,CAAC;EACrB;EACA,IAAIn6C,CAAC,GAAGgvC,QAAQ,CAACjgD,IAAI,CAACigD,QAAQ,CAACjgD,IAAI,CAAC2gB,GAAG,EAAEwqC,OAAO,EAAE,MAAM,CAAC,EAAE,cAAc,EAAEE,OAAO,CAAC;EACnF,OAAOpC,UAAU,CAACh4C,CAAC,EAAE,QAAQ,EAAE22C,IAAI,CAAC;AACxC;AAEA,SAASyD,OAAOA,CAACpxC,CAAC,EAAE;EAChB,IAAItE,CAAC,GAAGsE,CAAC,CAACqxC,UAAU,CAAC,CAAC,CAAC;EACvB,IAAIz2C,CAAC,GAAG;IACJ,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE;EACR,CAAC,CAACc,CAAC,CAAC;EACJ,IAAId,CAAC,EAAE;IAAE,OAAO,IAAI,GAAGA,CAAC;EAAE;EAC1B,OAAO,KAAK,IAAIc,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,GAAGswC,YAAY,CAACjmD,IAAI,CAAC2V,CAAC,CAAC7D,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5E;AAEA,SAAS82C,SAASA,CAACjoC,GAAG,EAAE;EACpB,OAAO,SAAS,GAAGA,GAAG,GAAG,GAAG;AAChC;AAEA,SAASmpC,gBAAgBA,CAAClpC,IAAI,EAAE;EAC5B,OAAOA,IAAI,GAAG,QAAQ;AAC1B;AAEA,SAAS8oC,YAAYA,CAAC9oC,IAAI,EAAE2qC,IAAI,EAAE91C,OAAO,EAAEuyC,MAAM,EAAE;EAC/C,IAAIwD,aAAa,GAAGxD,MAAM,GAAGqB,YAAY,CAAC5zC,OAAO,EAAEuyC,MAAM,CAAC,GAAG5B,KAAK,CAACpmD,IAAI,CAACyV,OAAO,EAAE,IAAI,CAAC;EACtF,OAAOmL,IAAI,GAAG,IAAI,GAAG2qC,IAAI,GAAG,KAAK,GAAGC,aAAa,GAAG,GAAG;AAC3D;AAEA,SAASpC,gBAAgBA,CAACD,EAAE,EAAE;EAC1B,KAAK,IAAI34C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG24C,EAAE,CAAC3oD,MAAM,EAAEgQ,CAAC,EAAE,EAAE;IAChC,IAAI2C,OAAO,CAACg2C,EAAE,CAAC34C,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;MAC3B,OAAO,KAAK;IAChB;EACJ;EACA,OAAO,IAAI;AACf;AAEA,SAAS63C,SAASA,CAACT,IAAI,EAAEF,KAAK,EAAE;EAC5B,IAAI+D,UAAU;EACd,IAAI7D,IAAI,CAACI,MAAM,KAAK,IAAI,EAAE;IACtByD,UAAU,GAAG,IAAI;EACrB,CAAC,MAAM,IAAI,OAAO7D,IAAI,CAACI,MAAM,KAAK,QAAQ,IAAIJ,IAAI,CAACI,MAAM,GAAG,CAAC,EAAE;IAC3DyD,UAAU,GAAGrF,KAAK,CAACpmD,IAAI,CAAC0R,KAAK,CAACk2C,IAAI,CAACI,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;EACxD,CAAC,MAAM;IACH,OAAO,IAAI;EACf;EACA,OAAO;IACHlmC,IAAI,EAAE2pC,UAAU;IAChBjiB,IAAI,EAAE4c,KAAK,CAACpmD,IAAI,CAAC0R,KAAK,CAACg2C,KAAK,GAAG,CAAC,CAAC,EAAE+D,UAAU;EACjD,CAAC;AACL;AAEA,SAASpC,YAAYA,CAACF,EAAE,EAAEnB,MAAM,EAAE;EAC9B,IAAImB,EAAE,CAAC3oD,MAAM,KAAK,CAAC,EAAE;IAAE,OAAO,EAAE;EAAE;EAClC,IAAIkrD,UAAU,GAAG,IAAI,GAAG1D,MAAM,CAACxe,IAAI,GAAGwe,MAAM,CAAClmC,IAAI;EACjD,OAAO4pC,UAAU,GAAGtF,KAAK,CAACpmD,IAAI,CAACmpD,EAAE,EAAE,GAAG,GAAGuC,UAAU,CAAC,GAAG,IAAI,GAAG1D,MAAM,CAACxe,IAAI;AAC7E;AAEA,SAASkf,UAAUA,CAACrR,GAAG,EAAEqC,OAAO,EAAE;EAC9B,IAAIiS,KAAK,GAAG9yC,OAAO,CAACw+B,GAAG,CAAC;EACxB,IAAI8R,EAAE,GAAG,EAAE;EACX,IAAIwC,KAAK,EAAE;IACPxC,EAAE,CAAC3oD,MAAM,GAAG62C,GAAG,CAAC72C,MAAM;IACtB,KAAK,IAAIgQ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6mC,GAAG,CAAC72C,MAAM,EAAEgQ,CAAC,EAAE,EAAE;MACjC24C,EAAE,CAAC34C,CAAC,CAAC,GAAG4mC,GAAG,CAACC,GAAG,EAAE7mC,CAAC,CAAC,GAAGkpC,OAAO,CAACrC,GAAG,CAAC7mC,CAAC,CAAC,EAAE6mC,GAAG,CAAC,GAAG,EAAE;IACnD;EACJ;EACA,IAAIyK,IAAI,GAAG,OAAO0E,IAAI,KAAK,UAAU,GAAGA,IAAI,CAACnP,GAAG,CAAC,GAAG,EAAE;EACtD,IAAIuU,MAAM;EACV,IAAIlF,iBAAiB,EAAE;IACnBkF,MAAM,GAAG,CAAC,CAAC;IACX,KAAK,IAAI3wC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6mC,IAAI,CAACthD,MAAM,EAAEya,CAAC,EAAE,EAAE;MAClC2wC,MAAM,CAAC,GAAG,GAAG9J,IAAI,CAAC7mC,CAAC,CAAC,CAAC,GAAG6mC,IAAI,CAAC7mC,CAAC,CAAC;IACnC;EACJ;EAEA,KAAK,IAAI/L,GAAG,IAAImoC,GAAG,EAAE;IAAE;IACnB,IAAI,CAACD,GAAG,CAACC,GAAG,EAAEnoC,GAAG,CAAC,EAAE;MAAE;IAAU,CAAC,CAAC;IAClC,IAAIy8C,KAAK,IAAInkC,MAAM,CAAC7W,MAAM,CAACzB,GAAG,CAAC,CAAC,KAAKA,GAAG,IAAIA,GAAG,GAAGmoC,GAAG,CAAC72C,MAAM,EAAE;MAAE;IAAU,CAAC,CAAC;IAC5E,IAAIkmD,iBAAiB,IAAIkF,MAAM,CAAC,GAAG,GAAG18C,GAAG,CAAC,YAAYqW,MAAM,EAAE;MAC1D;MACA,SAAS,CAAC;IACd,CAAC,MAAM,IAAI4gC,KAAK,CAACnmD,IAAI,CAAC,QAAQ,EAAEkP,GAAG,CAAC,EAAE;MAClCi6C,EAAE,CAAC51C,IAAI,CAACmmC,OAAO,CAACxqC,GAAG,EAAEmoC,GAAG,CAAC,GAAG,IAAI,GAAGqC,OAAO,CAACrC,GAAG,CAACnoC,GAAG,CAAC,EAAEmoC,GAAG,CAAC,CAAC;IAC9D,CAAC,MAAM;MACH8R,EAAE,CAAC51C,IAAI,CAACrE,GAAG,GAAG,IAAI,GAAGwqC,OAAO,CAACrC,GAAG,CAACnoC,GAAG,CAAC,EAAEmoC,GAAG,CAAC,CAAC;IAChD;EACJ;EACA,IAAI,OAAOmP,IAAI,KAAK,UAAU,EAAE;IAC5B,KAAK,IAAIjoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGujB,IAAI,CAACthD,MAAM,EAAE+9B,CAAC,EAAE,EAAE;MAClC,IAAIooB,YAAY,CAAC3mD,IAAI,CAACq3C,GAAG,EAAEyK,IAAI,CAACvjB,CAAC,CAAC,CAAC,EAAE;QACjC4qB,EAAE,CAAC51C,IAAI,CAAC,GAAG,GAAGmmC,OAAO,CAACoI,IAAI,CAACvjB,CAAC,CAAC,CAAC,GAAG,KAAK,GAAGmb,OAAO,CAACrC,GAAG,CAACyK,IAAI,CAACvjB,CAAC,CAAC,CAAC,EAAE8Y,GAAG,CAAC,CAAC;MACxE;IACJ;EACJ;EACA,OAAO8R,EAAE;AACb,C;;;;;;;;;;;;;AC/hBa;;AAAA,SAAAxxC,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIwU,QAAQ;AACZ,IAAI,CAAC18C,MAAM,CAACiD,IAAI,EAAE;EACjB;EACA,IAAIglC,GAAG,GAAGjoC,MAAM,CAACjP,SAAS,CAAC0gC,cAAc;EACzC,IAAI8X,KAAK,GAAGvpC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ;EACrC,IAAIg6C,MAAM,GAAGpsD,mBAAO,CAAC,gEAAe,CAAC,CAAC,CAAC;EACvC,IAAIinD,YAAY,GAAGx3C,MAAM,CAACjP,SAAS,CAAC6hD,oBAAoB;EACxD,IAAIgK,cAAc,GAAG,CAACpF,YAAY,CAAC3mD,IAAI,CAAC;IAAE8R,QAAQ,EAAE;EAAK,CAAC,EAAE,UAAU,CAAC;EACvE,IAAIk6C,eAAe,GAAGrF,YAAY,CAAC3mD,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC;EACpE,IAAIisD,SAAS,GAAG,CACf,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,aAAa,CACb;EACD,IAAIC,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAarrC,CAAC,EAAE;IAC7C,IAAIsrC,IAAI,GAAGtrC,CAAC,CAAC2B,WAAW;IACxB,OAAO2pC,IAAI,IAAIA,IAAI,CAACjsD,SAAS,KAAK2gB,CAAC;EACpC,CAAC;EACD,IAAIurC,YAAY,GAAG;IAClBC,iBAAiB,EAAE,IAAI;IACvBC,QAAQ,EAAE,IAAI;IACdC,SAAS,EAAE,IAAI;IACfC,MAAM,EAAE,IAAI;IACZC,aAAa,EAAE,IAAI;IACnBC,OAAO,EAAE,IAAI;IACbC,YAAY,EAAE,IAAI;IAClBC,WAAW,EAAE,IAAI;IACjBC,sBAAsB,EAAE,IAAI;IAC5BC,qBAAqB,EAAE,IAAI;IAC3BC,YAAY,EAAE,IAAI;IAClBC,WAAW,EAAE,IAAI;IACjBC,YAAY,EAAE,IAAI;IAClBC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE,IAAI;IACbC,WAAW,EAAE,IAAI;IACjBC,UAAU,EAAE,IAAI;IAChBC,QAAQ,EAAE,IAAI;IACdC,QAAQ,EAAE,IAAI;IACdC,KAAK,EAAE,IAAI;IACXC,gBAAgB,EAAE,IAAI;IACtBC,kBAAkB,EAAE,IAAI;IACxBC,OAAO,EAAE;EACV,CAAC;EACD,IAAIC,wBAAwB,GAAI,YAAY;IAC3C;IACA,IAAI,OAAOxD,MAAM,KAAK,WAAW,EAAE;MAAE,OAAO,KAAK;IAAE;IACnD,KAAK,IAAInvC,CAAC,IAAImvC,MAAM,EAAE;MACrB,IAAI;QACH,IAAI,CAACgC,YAAY,CAAC,GAAG,GAAGnxC,CAAC,CAAC,IAAIm8B,GAAG,CAACp3C,IAAI,CAACoqD,MAAM,EAAEnvC,CAAC,CAAC,IAAImvC,MAAM,CAACnvC,CAAC,CAAC,KAAK,IAAI,IAAItD,OAAA,CAAOyyC,MAAM,CAACnvC,CAAC,CAAC,MAAK,QAAQ,EAAE;UACzG,IAAI;YACHixC,0BAA0B,CAAC9B,MAAM,CAACnvC,CAAC,CAAC,CAAC;UACtC,CAAC,CAAC,OAAO/E,CAAC,EAAE;YACX,OAAO,IAAI;UACZ;QACD;MACD,CAAC,CAAC,OAAOA,CAAC,EAAE;QACX,OAAO,IAAI;MACZ;IACD;IACA,OAAO,KAAK;EACb,CAAC,CAAC,CAAE;EACJ,IAAI23C,oCAAoC,GAAG,SAAvCA,oCAAoCA,CAAahtC,CAAC,EAAE;IACvD;IACA,IAAI,OAAOupC,MAAM,KAAK,WAAW,IAAI,CAACwD,wBAAwB,EAAE;MAC/D,OAAO1B,0BAA0B,CAACrrC,CAAC,CAAC;IACrC;IACA,IAAI;MACH,OAAOqrC,0BAA0B,CAACrrC,CAAC,CAAC;IACrC,CAAC,CAAC,OAAO3K,CAAC,EAAE;MACX,OAAO,KAAK;IACb;EACD,CAAC;EAED21C,QAAQ,GAAG,SAASz5C,IAAIA,CAACO,MAAM,EAAE;IAChC,IAAIunC,QAAQ,GAAGvnC,MAAM,KAAK,IAAI,IAAIgF,OAAA,CAAOhF,MAAM,MAAK,QAAQ;IAC5D,IAAIgmC,UAAU,GAAGD,KAAK,CAAC14C,IAAI,CAAC2S,MAAM,CAAC,KAAK,mBAAmB;IAC3D,IAAIm7C,WAAW,GAAGhC,MAAM,CAACn5C,MAAM,CAAC;IAChC,IAAI+N,QAAQ,GAAGw5B,QAAQ,IAAIxB,KAAK,CAAC14C,IAAI,CAAC2S,MAAM,CAAC,KAAK,iBAAiB;IACnE,IAAIo7C,OAAO,GAAG,EAAE;IAEhB,IAAI,CAAC7T,QAAQ,IAAI,CAACvB,UAAU,IAAI,CAACmV,WAAW,EAAE;MAC7C,MAAM,IAAIjpC,SAAS,CAAC,oCAAoC,CAAC;IAC1D;IAEA,IAAImpC,SAAS,GAAGhC,eAAe,IAAIrT,UAAU;IAC7C,IAAIj4B,QAAQ,IAAI/N,MAAM,CAACnS,MAAM,GAAG,CAAC,IAAI,CAAC42C,GAAG,CAACp3C,IAAI,CAAC2S,MAAM,EAAE,CAAC,CAAC,EAAE;MAC1D,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmC,MAAM,CAACnS,MAAM,EAAE,EAAEgQ,CAAC,EAAE;QACvCu9C,OAAO,CAACx6C,IAAI,CAACiU,MAAM,CAAChX,CAAC,CAAC,CAAC;MACxB;IACD;IAEA,IAAIs9C,WAAW,IAAIn7C,MAAM,CAACnS,MAAM,GAAG,CAAC,EAAE;MACrC,KAAK,IAAI+9B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG5rB,MAAM,CAACnS,MAAM,EAAE,EAAE+9B,CAAC,EAAE;QACvCwvB,OAAO,CAACx6C,IAAI,CAACiU,MAAM,CAAC+W,CAAC,CAAC,CAAC;MACxB;IACD,CAAC,MAAM;MACN,KAAK,IAAI19B,IAAI,IAAI8R,MAAM,EAAE;QACxB,IAAI,EAAEq7C,SAAS,IAAIntD,IAAI,KAAK,WAAW,CAAC,IAAIu2C,GAAG,CAACp3C,IAAI,CAAC2S,MAAM,EAAE9R,IAAI,CAAC,EAAE;UACnEktD,OAAO,CAACx6C,IAAI,CAACiU,MAAM,CAAC3mB,IAAI,CAAC,CAAC;QAC3B;MACD;IACD;IAEA,IAAIkrD,cAAc,EAAE;MACnB,IAAIkC,eAAe,GAAGJ,oCAAoC,CAACl7C,MAAM,CAAC;MAElE,KAAK,IAAIsI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgxC,SAAS,CAACzrD,MAAM,EAAE,EAAEya,CAAC,EAAE;QAC1C,IAAI,EAAEgzC,eAAe,IAAIhC,SAAS,CAAChxC,CAAC,CAAC,KAAK,aAAa,CAAC,IAAIm8B,GAAG,CAACp3C,IAAI,CAAC2S,MAAM,EAAEs5C,SAAS,CAAChxC,CAAC,CAAC,CAAC,EAAE;UAC3F8yC,OAAO,CAACx6C,IAAI,CAAC04C,SAAS,CAAChxC,CAAC,CAAC,CAAC;QAC3B;MACD;IACD;IACA,OAAO8yC,OAAO;EACf,CAAC;AACF;AACAjuD,MAAM,CAACC,OAAO,GAAG8rD,QAAQ,C;;;;;;;;;;;;ACzHZ;;AAEb,IAAIh8C,KAAK,GAAG6B,KAAK,CAACxR,SAAS,CAAC2P,KAAK;AACjC,IAAIi8C,MAAM,GAAGpsD,mBAAO,CAAC,gEAAe,CAAC;AAErC,IAAIwuD,QAAQ,GAAG/+C,MAAM,CAACiD,IAAI;AAC1B,IAAIy5C,QAAQ,GAAGqC,QAAQ,GAAG,SAAS97C,IAAIA,CAACyO,CAAC,EAAE;EAAE,OAAOqtC,QAAQ,CAACrtC,CAAC,CAAC;AAAE,CAAC,GAAGnhB,mBAAO,CAAC,sEAAkB,CAAC;AAEhG,IAAIyuD,YAAY,GAAGh/C,MAAM,CAACiD,IAAI;AAE9By5C,QAAQ,CAACuC,IAAI,GAAG,SAASC,cAAcA,CAAA,EAAG;EACzC,IAAIl/C,MAAM,CAACiD,IAAI,EAAE;IAChB,IAAIk8C,sBAAsB,GAAI,YAAY;MACzC;MACA,IAAI/tD,IAAI,GAAG4O,MAAM,CAACiD,IAAI,CAACd,SAAS,CAAC;MACjC,OAAO/Q,IAAI,IAAIA,IAAI,CAACC,MAAM,KAAK8Q,SAAS,CAAC9Q,MAAM;IAChD,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE;IACR,IAAI,CAAC8tD,sBAAsB,EAAE;MAC5Bn/C,MAAM,CAACiD,IAAI,GAAG,SAASA,IAAIA,CAACO,MAAM,EAAE;QAAE;QACrC,IAAIm5C,MAAM,CAACn5C,MAAM,CAAC,EAAE;UACnB,OAAOw7C,YAAY,CAACt+C,KAAK,CAAC7P,IAAI,CAAC2S,MAAM,CAAC,CAAC;QACxC;QACA,OAAOw7C,YAAY,CAACx7C,MAAM,CAAC;MAC5B,CAAC;IACF;EACD,CAAC,MAAM;IACNxD,MAAM,CAACiD,IAAI,GAAGy5C,QAAQ;EACvB;EACA,OAAO18C,MAAM,CAACiD,IAAI,IAAIy5C,QAAQ;AAC/B,CAAC;AAED/rD,MAAM,CAACC,OAAO,GAAG8rD,QAAQ,C;;;;;;;;;;;;AC/BZ;;AAAA,SAAAl0C,QAAA0/B,GAAA,sCAAA1/B,OAAA,wBAAA4N,MAAA,uBAAAA,MAAA,CAAAwyB,QAAA,aAAAV,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAA9xB,MAAA,IAAA8xB,GAAA,CAAA70B,WAAA,KAAA+C,MAAA,IAAA8xB,GAAA,KAAA9xB,MAAA,CAAArlB,SAAA,qBAAAm3C,GAAA,KAAA1/B,OAAA,CAAA0/B,GAAA;AAEb,IAAIqB,KAAK,GAAGvpC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ;AAErChS,MAAM,CAACC,OAAO,GAAG,SAAS+tD,WAAWA,CAAC5rD,KAAK,EAAE;EAC5C,IAAIye,GAAG,GAAG+3B,KAAK,CAAC14C,IAAI,CAACkC,KAAK,CAAC;EAC3B,IAAI4pD,MAAM,GAAGnrC,GAAG,KAAK,oBAAoB;EACzC,IAAI,CAACmrC,MAAM,EAAE;IACZA,MAAM,GAAGnrC,GAAG,KAAK,gBAAgB,IAChCze,KAAK,KAAK,IAAI,IACdyV,OAAA,CAAOzV,KAAK,MAAK,QAAQ,IACzB,OAAOA,KAAK,CAAC1B,MAAM,KAAK,QAAQ,IAChC0B,KAAK,CAAC1B,MAAM,IAAI,CAAC,IACjBk4C,KAAK,CAAC14C,IAAI,CAACkC,KAAK,CAACi7C,MAAM,CAAC,KAAK,mBAAmB;EAClD;EACA,OAAO2O,MAAM;AACd,CAAC,C;;;;;;;;;;;;AChBY;;AAEbpsD,mBAAO,CAAC,oDAAQ,CAAC,CAAC,CAAC,C;;;;;;;;;;;;ACFN;;AAEb,IAAIq7C,QAAQ,GAAGr7C,mBAAO,CAAC,4EAA0B,CAAC;AAClD,IAAI86C,aAAa,GAAG96C,mBAAO,CAAC,wFAAgC,CAAC;AAC7D,IAAIy6C,cAAc,GAAGz6C,mBAAO,CAAC,0FAAiC,CAAC;AAE/DI,MAAM,CAACC,OAAO,GAAG,SAASyP,MAAMA,CAACsqC,CAAC,EAAEC,CAAC,EAAE;EACtC,IAAI1C,GAAG,GAAG0D,QAAQ,CAACjB,CAAC,CAAC;EACrB,IAAI5qC,GAAG,GAAGsrC,aAAa,CAACT,CAAC,CAAC;EAC1B,OAAOI,cAAc,CAAC9C,GAAG,EAAEnoC,GAAG,CAAC;AAChC,CAAC,C;;;;;;;;;;;;ACVY;;AAEb,IAAIqtC,cAAc,GAAG78C,mBAAO,CAAC,wEAAkB,CAAC;AAEhDI,MAAM,CAACC,OAAO,GAAG,SAASwuD,WAAWA,CAAA,EAAG;EACvC,OAAOp/C,MAAM,CAACK,MAAM,IAAI+sC,cAAc;AACvC,CAAC,C;;;;;;;;;;;;ACNY;;AAEb,IAAIgS,WAAW,GAAG7uD,mBAAO,CAAC,4DAAY,CAAC;AACvC,IAAI8uD,MAAM,GAAG9uD,mBAAO,CAAC,oEAAmB,CAAC;AAEzCI,MAAM,CAACC,OAAO,GAAG,SAAS0uD,gBAAgBA,CAAA,EAAG;EAC5C,IAAIC,QAAQ,GAAGH,WAAW,CAAC,CAAC;EAC5BC,MAAM,CACLr/C,MAAM,EACN;IAAEK,MAAM,EAAEk/C;EAAS,CAAC,EACpB;IAAEl/C,MAAM,EAAE,SAAAA,OAAA,EAAY;MAAE,OAAOL,MAAM,CAACK,MAAM,KAAKk/C,QAAQ;IAAE;EAAE,CAC9D,CAAC;EACD,OAAOA,QAAQ;AAChB,CAAC,C;;;;;;;;;;;;ACbY;;AAEb,IAAIhL,SAAS,GAAGhkD,mBAAO,CAAC,sDAAY,CAAC;AACrC,IAAIykD,OAAO,GAAGzkD,mBAAO,CAAC,kDAAU,CAAC;AAEjC,IAAIygD,KAAK,GAAGuD,SAAS,CAAC,uBAAuB,CAAC;AAC9C,IAAItjD,UAAU,GAAGV,mBAAO,CAAC,wDAAgB,CAAC;;AAE1C;AACAI,MAAM,CAACC,OAAO,GAAG,SAAS4uD,WAAWA,CAACzkC,KAAK,EAAE;EAC5C,IAAI,CAACi6B,OAAO,CAACj6B,KAAK,CAAC,EAAE;IACpB,MAAM,IAAI9pB,UAAU,CAAC,0BAA0B,CAAC;EACjD;EACA,OAAO,SAASspB,IAAIA,CAACzY,CAAC,EAAE;IACvB,OAAOkvC,KAAK,CAACj2B,KAAK,EAAEjZ,CAAC,CAAC,KAAK,IAAI;EAChC,CAAC;AACF,CAAC,C;;;;;;;;;;;;AChBD,IAAI5P,CAAC;;AAEL;AACAA,CAAC,GAAI,YAAW;EACf,OAAO,IAAI;AACZ,CAAC,CAAE,CAAC;AAEJ,IAAI;EACH;EACAA,CAAC,GAAGA,CAAC,IAAI,IAAIpB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,OAAOiW,CAAC,EAAE;EACX;EACA,IAAI,QAAOk0C,MAAM,iCAAAzyC,OAAA,CAANyyC,MAAM,OAAK,QAAQ,EAAE/oD,CAAC,GAAG+oD,MAAM;AAC3C;;AAEA;AACA;AACA;;AAEAtqD,MAAM,CAACC,OAAO,GAAGsB,CAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAc4B;AAC5B,IAAMutD,QAAQ,GAAG,IAAIxkC,MAAM,IAAAtW,MAAA,CAAI+6C,8DAAY,YAAS,GAAG,CAAC;;AAExD;AACsC;AASZ;AAIE;;AAE5B;AACA,IAAIC,GAAG,GAAG,IAAI;AACd,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,MAAM,EAE1B;EAAA,IAF4BC,GAAG,GAAA39C,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG;IACtCsP,IAAI,EAAE;EACR,CAAC;EACCquC,GAAG,CAACC,KAAK,KAAKC,wDAAQ,CAACC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;;EAE1C,IAAID,wDAAQ,CAACC,QAAQ,EAAE,OAAO,CAAC;;EAE/B,IAAI;IACFC,mDAAG,CAACC,UAAU,GAAGC,uDAAM,CAACC,IAAI,GAAID,uDAAM,CAACC,IAAI,KAAK,MAAM,GAAIR,MAAM,CAAC3hC,OAAO;IAExE,IAAI4hC,GAAG,CAACruC,IAAI,KAAK,KAAK,EAAE;MAAE;MACxByuC,mDAAG,CAACC,UAAU,IAAI,OAAOC,uDAAM,CAACE,KAAK,KAAK,UAAU,IAAIF,uDAAM,CAACE,KAAK,CAACC,wDAAQ,CAACC,QAAQ,CAAC,CAAC,CAAC;MAEzFj+C,KAAK,CAACxR,SAAS,CAACijB,OAAO,CAACnjB,IAAI,CAAC0vD,wDAAQ,CAAChgD,GAAG,CAAC,CAAC,EAAE,UAAAwP,IAAI,EAAI;QACnD,IAAImwC,mDAAG,CAACC,UAAU,IAAIpwC,IAAI,CAAC0wC,SAAS,IAAI,OAAO1wC,IAAI,CAAC0wC,SAAS,KAAK,QAAQ,EAAE;UAC1E1wC,IAAI,CAAC0wC,SAAS,GAAG1wC,IAAI,CAAC0wC,SAAS,CAAC7mC,OAAO,CAAC6lC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD;;QAEA,IAAIS,mDAAG,CAACC,UAAU,IAAIO,uDAAO,CAACrvD,MAAM,EAAE;UACpC,IAAI,CAAC+uD,uDAAM,CAACO,kBAAkB,EAAE;YAAE;YAChCX,wDAAQ,CAACY,MAAM,CAACV,mDAAG,CAACh9C,OAAO,CAAC6M,IAAI,CAAC,CAAC,CAAC,CAAC;UACtC,CAAC,MAAM;YAAE;YACP,IAAM8wC,IAAI,GAAG9wC,IAAI,CAAC+wC,qBAAqB,CAAC,CAAC;YACzC,IAAMC,GAAG,GAAGF,IAAI,CAACE,GAAG;YACpB,IAAMC,MAAM,GAAGH,IAAI,CAACG,MAAM;YAC1B,IAAID,GAAG,IAAI,CAAC,IAAIC,MAAM,IAAI,CAAC,EAAE;cAAE;cAC7BhB,wDAAQ,CAACY,MAAM,CAACV,mDAAG,CAACh9C,OAAO,CAAC6M,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC,MAAM,IAAKgxC,GAAG,GAAG,CAAC,IAAIA,GAAG,GAAGE,6DAAW,IAAMD,MAAM,GAAG,CAAC,IAAIA,MAAM,GAAGC,6DAAY,EAAE;cAAE;cACnFV,wDAAQ,CAACW,gBAAgB,CAACnxC,IAAI,CAAC,CAAC,CAAC;cACjCiwC,wDAAQ,CAACY,MAAM,CAACV,mDAAG,CAACh9C,OAAO,CAAC6M,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5C,CAAC,MAAM;cAAE;cACPqwC,uDAAM,CAACO,kBAAkB,GAAG,KAAK,CAAC,CAAC;;cAEnC;cACAX,wDAAQ,CAACmB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;cAC3BZ,wDAAQ,CAACa,kBAAkB,CAAC,CAAC,CAAC,CAAC;cAC/B,OAAOhB,uDAAM,CAACiB,aAAa,KAAK,UAAU,IAAIjB,uDAAM,CAACiB,aAAa,CAAC,CAAC,CAAC,CAAC;;cAEtErB,wDAAQ,CAACY,MAAM,CAACV,mDAAG,CAACh9C,OAAO,CAAC6M,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC;UACF;QACF;MACF,CAAC,CAAC;;MAEF2wC,uDAAO,CAACY,SAAS,EAAE;IACrB,CAAC,MAAM,IAAIxB,GAAG,CAACruC,IAAI,KAAK,IAAI,EAAE;MAAE;MAC9ByuC,mDAAG,CAACC,UAAU,IAAIoB,uDAAO,CAACvtC,OAAO,CAAC,UAAAwtC,IAAI;QAAA,OAAIC,uDAAO,CAACC,QAAQ,CAACF,IAAI,EAAE,UAAAG,EAAE,EAAI;UACrE3B,wDAAQ,CAACY,MAAM,CAACZ,wDAAQ,CAAC4B,MAAM,CAACD,EAAE,CAAClB,SAAS,EAAEkB,EAAE,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC;UAC1D,OAAOF,EAAE,CAACxiB,EAAE,KAAK,UAAU,IAAIwiB,EAAE,CAACxiB,EAAE,CAACwiB,EAAE,CAAC;;UAExC;UACA,IAAMG,GAAG,GAAG,CAACH,EAAE,CAACI,KAAK,CAAC;UACtBJ,EAAE,CAACI,KAAK,KAAKJ,EAAE,CAACK,EAAE,IAAIF,GAAG,CAAC19C,IAAI,CAACu9C,EAAE,CAACK,EAAE,CAAC;UACrCF,GAAG,CAAC9tC,OAAO,CAAC,UAAAguC,EAAE,EAAI;YAAA,IAAAC,aAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,qBAAA;YAChB,IAAMC,YAAY,GAAG,CACnB,CAACC,2DAAS,GAAAP,aAAA,GAAED,EAAE,CAACQ,2DAAS,CAAC,cAAAP,aAAA,cAAAA,aAAA,GAAI,IAAI,CAAC,EAClC,CAACQ,6DAAW,GAAAP,eAAA,GAAEF,EAAE,CAACS,6DAAW,CAAC,cAAAP,eAAA,cAAAA,eAAA,GAAI,IAAI,CAAC,EACtC,CAACQ,oEAAkB,GAAAP,qBAAA,GAAEH,EAAE,CAACU,oEAAkB,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC,EACpD,CAACQ,sEAAoB,GAAAP,qBAAA,GAAEJ,EAAE,CAACW,sEAAoB,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC,EACxD,CAACQ,6DAAW,GAAAP,eAAA,GAAEL,EAAE,CAACY,6DAAW,CAAC,cAAAP,eAAA,cAAAA,eAAA,GAAI,IAAI,CAAC,EACtC,CAACQ,gFAA8B,GAAAP,qBAAA,GAAEN,EAAE,CAACa,gFAA8B,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC,CAC7E;YACD,IAAMQ,QAAQ,GAAGC,0EAAgB,CAACf,EAAE,EAAE,IAAI,CAAC;YAC3Cc,QAAQ,CAAC9uC,OAAO,CAAC,UAAAgvC,KAAK,EAAI;cAAE;cAC1BT,YAAY,CAACvuC,OAAO,CAAC,UAAAivC,IAAA,EAAmB;gBAAA,IAAAC,KAAA,GAAAv8C,cAAA,CAAAs8C,IAAA;kBAAjBE,IAAI,GAAAD,KAAA;kBAAEnwD,KAAK,GAAAmwD,KAAA;gBAChC,IAAInwD,KAAK,KAAK,IAAI,EAAE;kBAClB,OAAOiwD,KAAK,CAACG,IAAI,CAAC;gBACpB,CAAC,MAAM;kBACLH,KAAK,CAACG,IAAI,CAAC,GAAGpwD,KAAK;gBACrB;cACF,CAAC,CAAC;YACJ,CAAC,CAAC;YACF+vD,QAAQ,CAAC9uC,OAAO,CAAC,UAAAgvC,KAAK,EAAI;cAAE;cAC1BhD,wDAAQ,CAACY,MAAM,CAACV,mDAAG,CAACh9C,OAAO,CAAC8/C,KAAK,EAAE5gD,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ,CAAC,CAAC;MAAA,EAAC;IACL;IAEA,IAAIg+C,uDAAM,CAACO,kBAAkB,IAAK,CAACP,uDAAM,CAACO,kBAAkB,IAAI,CAACJ,wDAAQ,CAACc,aAAc,EAAE;MACxF;MACA;MACA,OAAOjB,uDAAM,CAACiB,aAAa,KAAK,UAAU,IAAIjB,uDAAM,CAACiB,aAAa,CAAC,CAAC,CAAC,CAAC;IACxE;;IACArB,wDAAQ,CAACmB,UAAU,CAAC,CAAC,CAAC,CAAC;IACvBZ,wDAAQ,CAAC6C,mBAAmB,CAAC,CAAC,CAAC,CAAC;;IAEhC,IAAI,CAAClD,mDAAG,CAACC,UAAU,EAAE;MAAE;MACrB;MACAC,uDAAM,CAACO,kBAAkB,GAAG,KAAK;;MAEjC;MACAP,uDAAM,CAACiD,YAAY,GAAG,KAAK;MAE3B,IAAIjD,uDAAM,CAACkD,SAAS,KAAK,IAAI,IAAIxD,GAAG,CAACruC,IAAI,KAAK,KAAK,IAAI8uC,wDAAQ,CAAClvD,MAAM,EAAE;QACtEkvD,wDAAQ,CAACgD,KAAK,CAAC,CAAC,CAAC,CAAC;MACpB;IACF;EACF,CAAC,CAAC,OAAOx8C,CAAC,EAAE;IACVgO,OAAO,CAACqb,GAAG,CAAC,qEAAqE,EAAErpB,CAAC,CAAC;IACrF,OAAOq5C,uDAAM,CAAC9gC,KAAK,KAAK,UAAU,IAAI8gC,uDAAM,CAAC9gC,KAAK,CAACvY,CAAC,CAAC;EACvD;AACF,CAAC;;AAED;AACO,SAASmR,GAAGA,CAACsrC,KAAK,EAAE1D,GAAG,EAAE;EAC9B2D,IAAI,CAAC3D,GAAG,CAAC,CAAC,CAAC;;EAEXS,wDAAQ,CAAClgC,GAAG,CAACmjC,KAAK,CAAC;EAEnB5D,gBAAgB,CAACD,GAAG,EAAE;IACpBI,KAAK,EAAE,IAAI;IACXtuC,IAAI,EAAE;EACR,CAAC,CAAC;AACJ;AAAC;;AAED;AACO,SAASgyC,IAAIA,CAAA,EAAW;EAAA,IAAV3D,GAAG,GAAA39C,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC,CAAC;EAC3B,IAAIi+C,uDAAM,CAACsD,OAAO,EAAE,OAAO,CAAC;;EAE5BtD,uDAAM,CAACsD,OAAO,GAAG,IAAI,CAAC,CAAC;;EAEvB,IAAMC,OAAO,GAAGvD,uDAAM,CAACwD,SAAS,CAACD,OAAO;EACxC,IAAME,SAAS,GAAGzD,uDAAM,CAACwD,SAAS,CAACC,SAAS;EAC5C,IAAI/D,GAAG,CAAC8D,SAAS,EAAE;IACjB9D,GAAG,CAAC8D,SAAS,CAACD,OAAO,YAAYphD,KAAK,IAAIu9C,GAAG,CAAC8D,SAAS,CAACD,OAAO,CAAC3vC,OAAO,CAAC,UAAA8vC,IAAI,EAAI;MAC9EA,IAAI,GAAGA,IAAI,CAAClhD,WAAW,CAAC,CAAC;MACzB+gD,OAAO,CAAC3/C,OAAO,CAAC8/C,IAAI,CAAC,KAAK,CAAC,CAAC,IAAIH,OAAO,CAACv/C,IAAI,CAAC0/C,IAAI,CAAC;IACpD,CAAC,CAAC;IACFhE,GAAG,CAAC8D,SAAS,CAACC,SAAS,YAAYthD,KAAK,IAAIu9C,GAAG,CAAC8D,SAAS,CAACC,SAAS,CAAC7vC,OAAO,CAAC,UAAA8vC,IAAI,EAAI;MAClFD,SAAS,CAAC7/C,OAAO,CAAC8/C,IAAI,CAAC,KAAK,CAAC,CAAC,IAAID,SAAS,CAACz/C,IAAI,CAAC0/C,IAAI,CAAC;IACxD,CAAC,CAAC;EACJ;EAEA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC9/C,OAAO,CAAC87C,GAAG,CAACO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;IAC5CD,uDAAM,CAAC//B,GAAG,CAAC,QAAQ,EAAEy/B,GAAG,EAAE,MAAM,CAAC;IACjCA,GAAG,CAACO,IAAI,KAAK,MAAM,IAAIhM,QAAQ,CAAC0P,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAACC,SAAS,CAACjwC,GAAG,CAACkwC,4DAAU,CAAC;EAC3F;EAEA7D,uDAAM,CAAC//B,GAAG,CAAC,UAAU,EAAEy/B,GAAG,EAAE,OAAO,CAAC;EACpCM,uDAAM,CAAC//B,GAAG,CAAC,UAAU,EAAEy/B,GAAG,EAAE,eAAe,CAAC;EAC5CM,uDAAM,CAAC//B,GAAG,CAAC,UAAU,EAAEy/B,GAAG,EAAE,OAAO,CAAC;EACpCM,uDAAM,CAAC//B,GAAG,CAAC,SAAS,EAAEy/B,GAAG,EAAE,oBAAoB,CAAC;EAChDM,uDAAM,CAAC//B,GAAG,CAAC,SAAS,EAAEy/B,GAAG,EAAE,cAAc,CAAC;EAC1CM,uDAAM,CAAC//B,GAAG,CAAC,KAAK,EAAEy/B,GAAG,EAAE,WAAW,CAAC;EACnCM,uDAAM,CAAC//B,GAAG,CAAC,QAAQ,EAAEy/B,GAAG,EAAE,oBAAoB,CAAC;EAC/CM,uDAAM,CAAC//B,GAAG,CAAC,QAAQ,EAAEy/B,GAAG,EAAE,uBAAuB,CAAC;EAClDM,uDAAM,CAAC//B,GAAG,CAAC,QAAQ,EAAEy/B,GAAG,EAAE,qBAAqB,CAAC;EAChDM,uDAAM,CAAC//B,GAAG,CAAC,QAAQ,EAAEy/B,GAAG,EAAE,sBAAsB,CAAC;EACjDM,uDAAM,CAAC//B,GAAG,CAAC,QAAQ,EAAEy/B,GAAG,EAAE,oBAAoB,CAAC;EAE/CI,mDAAG,CAACuD,IAAI,CAAC,CAAC;EAEV,IAAI,CAACrD,uDAAM,CAACC,IAAI,IAAIV,GAAG,KAAK,IAAI,IAAI1E,MAAM,CAACiJ,UAAU,EAAE;IACrD;IACAvE,GAAG,GAAG1E,MAAM,CAACiJ,UAAU,CAACC,6DAAW,CAAC;IACpCxE,GAAG,CAACyE,WAAW,CAACxE,gBAAgB,CAAC,CAAC,CAAC;EACrC;AACF;;AAAC;;AAED;AACO,SAASyE,SAASA,CAACb,KAAK,EAAE;EAC/BjD,wDAAQ,CAAClgC,GAAG,CAACmjC,KAAK,CAAC;EAEnB,IAAIpD,uDAAM,CAACkD,SAAS,KAAK,IAAI,EAAE;IAC7B7B,uDAAO,CAAC6C,MAAM,CAACd,KAAK,CAAC,CAAC,CAAC;IACvBjC,uDAAO,CAAC+C,MAAM,CAACd,KAAK,CAAC,CAAC,CAAC;EACzB;;EAEA5D,gBAAgB,CAACD,GAAG,EAAE;IACpBI,KAAK,EAAE,IAAI;IACXtuC,IAAI,EAAE;EACR,CAAC,CAAC;AACJ;AAAC;;AAED;AACO,SAAS8yC,WAAWA,CAACx0C,IAAI,EAAEy0C,MAAM,EAAE;EACxC,IAAI,CAACxE,wDAAQ,CAACC,QAAQ,EAAE,OAAO,CAAC;EAChCD,wDAAQ,CAACY,MAAM,CAACV,mDAAG,CAACh9C,OAAO,CAAC6M,IAAI,EAAEy0C,MAAM,GAAGxkD,MAAM,CAACiD,IAAI,CAACuhD,MAAM,CAAC,CAACv/C,GAAG,CAAC,UAAAlF,GAAG;IAAA,OAAI,CAACA,GAAG,EAAEykD,MAAM,CAACzkD,GAAG,CAAC,CAAC;EAAA,EAAC,GAAGqC,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC;EACxH49C,wDAAQ,CAACmB,UAAU,CAAC,CAAC;AACvB;AAAC;;AAED;AACO,SAASsD,WAAWA,CAACh8C,MAAM,EAAEvB,MAAM,EAAE;EAC1C,OAAOg5C,mDAAG,CAACuE,WAAW,CAACh8C,MAAM,EAAEvB,MAAM,CAAC;AACxC;AAAC;;AAED;AACO,SAASohC,MAAMA,CAACoc,UAAU,EAAE;EACjCA,UAAU,CAAC1wC,OAAO,CAAC,UAAA2wC,MAAM;IAAA,OAAIjE,uDAAO,CAACpY,MAAM,CAACqc,MAAM,CAAC;EAAA,EAAC;AACtD;AAAC,C;;;;;;;;;;;;;;;;;;;AC/QD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAC8B;AAAA,IAETC,WAAW;EACjB;EACH;;EAEV,SAAAA,YAAYnkD,MAAM,EAAE;IAAAmT,eAAA,OAAAgxC,WAAA;IAAAxvC,eAAA,iBAHX,EAAE;IAAAA,eAAA,eACJ,CAAC;IAGN,IAAI,CAACyvC,OAAO,GAAGpkD,MAAM;IACrB,IAAI,CAACqkD,YAAY,GAAG,IAAI7pC,MAAM,IAAAtW,MAAA,CAAI,IAAI,CAACkgD,OAAO,SAAM,CAAC;EACvD;;EAEA;EAAAhxC,YAAA,CAAA+wC,WAAA;IAAA7kD,GAAA;IAAAhN,KAAA,EACA,SAAAqR,KAAK49C,EAAE,EAAEH,KAAK,EAAE1iB,EAAE,EAAE;MAClB,IAAMshB,SAAS,MAAA97C,MAAA,CAAM,IAAI,CAACkgD,OAAO,EAAAlgD,MAAA,CAAG,IAAI,CAACogD,IAAI,EAAE,CAAE;MACjD/C,EAAE,CAACgC,SAAS,CAACjwC,GAAG,CAAC0sC,SAAS,CAAC;MAC3B,IAAI,CAACuE,MAAM,CAACh1C,OAAO,CAAC;QAClB+xC,KAAK,EAAEC,EAAE;QACTA,EAAE,EAAFA,EAAE;QACFvB,SAAS,EAATA,SAAS;QACToB,KAAK,EAALA,KAAK;QACLoD,OAAO,EAAE,CAAC7E,+CAAM,CAACiD,YAAY;QAC7BlkB,EAAE,EAAFA;MACF,CAAC,CAAC;IACJ;;IAEA;EAAA;IAAAp/B,GAAA;IAAAhN,KAAA,EACA,SAAA2uD,SAASM,EAAE,EAAEhwD,QAAQ,EAAE;MACrB,IAAM6uD,IAAI,GAAGmB,EAAE,CAAClB,qBAAqB,CAAC,CAAC;MACvC,IAAMoE,QAAQ,GAAG,EAAE;MAEnB,IAAI,CAACF,MAAM,CAAChxC,OAAO,CAAC,UAAC8vC,IAAI,EAAEziD,CAAC,EAAK;QAC/B,IAAIyiD,IAAI,CAACmB,OAAO,EAAE;UAChB,IAAI,CAACnB,IAAI,CAACjD,IAAI,EAAEiD,IAAI,CAACjD,IAAI,GAAGiD,IAAI,CAAC9B,EAAE,CAAClB,qBAAqB,CAAC,CAAC;UAE3D,IAAMqE,MAAM,GAAGrB,IAAI,CAACjD,IAAI;UACxB,IAAI,EACFA,IAAI,CAACE,GAAG,IAAIoE,MAAM,CAACnE,MAAM,IACtBH,IAAI,CAACG,MAAM,IAAImE,MAAM,CAACpE,GAAG,IACzBF,IAAI,CAACuE,IAAI,IAAID,MAAM,CAACE,KAAK,IACzBxE,IAAI,CAACwE,KAAK,IAAIF,MAAM,CAACC,IAAI,CAC7B,EAAE;YAAE;YACHF,QAAQ,CAACl1C,OAAO,CAAC3O,CAAC,CAAC;UACrB;QACF;MACF,CAAC,CAAC;MAEF,OAAO6jD,QAAQ,CAAC7zD,MAAM,EAAE;QACtB,IAAMi0D,GAAG,GAAGJ,QAAQ,CAACrsC,KAAK,CAAC,CAAC;QAC5B,IAAMirC,IAAI,GAAG,IAAI,CAACkB,MAAM,CAACjhD,MAAM,CAACuhD,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAOtzD,QAAQ,KAAK,UAAU,IAAIA,QAAQ,CAAC8xD,IAAI,CAAC;MAClD;IACF;;IAEA;EAAA;IAAA/jD,GAAA;IAAAhN,KAAA,EACA,SAAAuxD,OAAOxC,GAAG,EAAE;MACV,IAAI,CAACkD,MAAM,CAAChxC,OAAO,CAAC,UAAA8vC,IAAI,EAAI;QAC1B,IAAI,CAACA,IAAI,CAACmB,OAAO,EAAE;UACjB1iD,KAAK,CAACxR,SAAS,CAACqtB,IAAI,CAACvtB,IAAI,CAACixD,GAAG,EAAE,UAAAE,EAAE,EAAI;YACnC,IAAIA,EAAE,CAACuD,QAAQ,KAAK,CAAC,IAAIvD,EAAE,CAACgC,SAAS,CAACtC,QAAQ,CAACoC,IAAI,CAACrD,SAAS,CAAC,EAAE;cAC9DqD,IAAI,CAAC9B,EAAE,GAAGA,EAAE;cACZ8B,IAAI,CAACmB,OAAO,GAAG,IAAI;cACnB,OAAO,IAAI;YACb;YACA,OAAO,KAAK;UACd,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ;EAAC;EAAA,OAAAL,WAAA;AAAA;AAjE6B;AAkE/B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE4B;AACF;AACS;AACO;AACT;;AAEjC;AAIoB;AAEpB,IAAMY,UAAU,GAAAC,aAAA,CAAAA,aAAA,KACXC,kDAAS;EACZC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAAE;EACvBC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAE;AAAA,EAClC;;AACD,IAAMC,cAAc,GAAG,IAAI5qC,MAAM,CAACjb,MAAM,CAACiD,IAAI,CAACuiD,UAAU,CAAC,CAACvgD,GAAG,CAAC,UAAA6gD,SAAS;EAAA,aAAAnhD,MAAA,CAAUmhD,SAAS;AAAA,CAAK,CAAC,CAACziD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;AAEnH;AACA,IAAM0iD,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAG5yD,KAAK,EAAI;EAChC,IAAM+0C,GAAG,GAAG/0C,KAAK,CAACqQ,MAAM,CAAC,CAAC;EAC1B0kC,GAAG,CAAC90C,CAAC,GAAG80C,GAAG,CAACtmC,KAAK,IAAI,CAAC;EACtB,OAAOsmC,GAAG,CAACtmC,KAAK;EAChB,OAAOsmC,GAAG;AACZ,CAAC;;AAED;AACA,IAAM8d,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGC,UAAU,EAAI;EACrCA,UAAU,CAACrkD,KAAK,GAAGqkD,UAAU,CAAC7yD,CAAC;EAC/B,OAAO6yD,UAAU,CAAC7yD,CAAC;EACnB,OAAO8yD,WAAW,CAACD,UAAU,CAAC;AAChC,CAAC;;AAED;AACO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAG/yD,KAAK,EAAI;EAClC,IAAIgzD,GAAG,GAAG,IAAI;EACd,IAAI;IACFA,GAAG,GAAGhzD,KAAK,YAAYoQ,6CAAK,GAAGpQ,KAAK,GAAGoQ,qDAAK,CAACpQ,KAAK,CAAC;EACrD,CAAC,CAAC,OAAO4T,CAAC,EAAE;IACV,IAAI;MACFo/C,GAAG,GAAGD,WAAW,CAAC,IAAIE,kDAAO,CAACjzD,KAAK,CAAC,CAACF,EAAE,CAAC,MAAM,CAAC,CAAC0P,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,OAAOoE,CAAC,EAAE;MACVgO,OAAO,CAACqb,GAAG,+BAAAzrB,MAAA,CAAgCxR,KAAK,MAAI,CAAC;IACvD;EACF;EACA,OAAOgzD,GAAG;AACZ,CAAC;;AAED;AACO,IAAME,cAAc,GAAG,SAAjBA,cAAcA,CAAIlzD,KAAK,EAAEmzD,kBAAkB;EAAA,OAAKnzD,KAAK,CAACymB,OAAO,CAAC2sC,0DAAgB,EAAE,EAAE,CAAC,CAAC3sC,OAAO,CAACisC,cAAc,EAAE,UAAAzkD,KAAK,EAAI;IAChI,IAAI,CAACklD,kBAAkB,IAAIllD,KAAK,KAAK,aAAa,EAAE,OAAOA,KAAK,CAAC,CAAC;;IAElE,IAAMjO,KAAK,GAAGqyD,UAAU,CAACpkD,KAAK,CAACT,WAAW,CAAC,CAAC,CAAC;IAC7C,UAAAgE,MAAA,CAAUxR,KAAK,CAAC9B,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,OAAAsT,MAAA,CAAIxR,KAAK,CAACwP,QAAQ,CAAC,CAAC;EACjE,CAAC,CAAC;AAAA;;AAEF;AACO,IAAM6jD,kCAAkC,GAAG,SAArCA,kCAAkCA,CAAGrzD,KAAK,EAAI;EACzD,IAAMszD,QAAQ,GAAGJ,cAAc,CAAClzD,KAAK,CAAC;EACtC,OAAOuzD,sDAAY,CAACnsC,IAAI,CAACksC,QAAQ,CAAC,GAAGA,QAAQ,GAAG,EAAE;AACpD,CAAC;;AAED;AACO,IAAME,SAAS,GAAG,SAAZA,SAASA,CAAIjwD,MAAM,EAAmB;EAAA,IAAjB+a,IAAI,GAAAtP,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;EAC5C,IAAInC,MAAM,CAACjP,SAAS,CAAC4R,QAAQ,CAAC9R,IAAI,CAAC6F,MAAM,CAAC,KAAK,gBAAgB,IAAIA,MAAM,CAACrF,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;EACjG,IAAIqF,MAAM,CAACrF,MAAM,KAAK,CAAC,EAAE,OAAOqF,MAAM,CAAC,CAAC,CAAC;EAEzC,IAAI+R,MAAM,GAAGy9C,WAAW,CAACxvD,MAAM,CAACmiB,KAAK,CAAC,CAAC,CAAC;EACxC,IAAI3R,MAAM,GAAGg/C,WAAW,CAACxvD,MAAM,CAACmiB,KAAK,CAAC,CAAC,CAAC;EACxC,OAAO3R,MAAM,EAAE;IACb,IAAI,CAACuB,MAAM,IAAIvB,MAAM,EAAE;MAAE;MACvBuB,MAAM,GAAGvB,MAAM;IACjB,CAAC,MAAM,IAAI,CAACuB,MAAM,IAAI,CAACvB,MAAM,EAAE;MAAE;MAC/B,IAAIxQ,MAAM,CAACrF,MAAM,KAAK,CAAC,EAAE;MACzBoX,MAAM,GAAGy9C,WAAW,CAACxvD,MAAM,CAACmiB,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC,MAAM,IAAIpQ,MAAM,IAAIvB,MAAM,EAAE;MAAE;MAC7BuB,MAAM,GAAIgJ,IAAI,KAAK,KAAK,GACpBhJ,MAAM,CAACJ,GAAG,CAACnB,MAAM,EAAEA,MAAM,CAACtF,KAAK,CAAC,CAAC,CAAC,GAClCokD,gBAAgB,CAACY,wCAAU,CAACn1C,IAAI,CAAC,CAACs0C,gBAAgB,CAACt9C,MAAM,CAAC,EAAEs9C,gBAAgB,CAAC7+C,MAAM,CAAC,CAAC,CAAE;IAC7F,CAAC,CAAC;;IAEF,IAAIxQ,MAAM,CAACrF,MAAM,KAAK,CAAC,EAAE;IACzB6V,MAAM,GAAGg/C,WAAW,CAACxvD,MAAM,CAACmiB,KAAK,CAAC,CAAC,CAAC;EACtC;EAEA,OAAOpQ,MAAM,IAAI,IAAI;AACvB,CAAC;;AAED;AACO,IAAMo+C,2BAA2B,GAAG,SAA9BA,2BAA2BA,CAAG9xD,GAAG;EAAA,OAAI,CAACA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI;AAAA;;AAErG;AACO,IAAM+xD,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIha,MAAM,EAAE/3C,GAAG,EAAK;EACjD,IAAMgyD,uBAAuB,GAAGja,MAAM,GAAG+Z,2BAA2B,CAAC9xD,GAAG,CAAC;EACzE,IAAIiyD,QAAQ,GAAGz0D,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEuC,GAAG,CAAC,CAAC,CAAC,GAAGgyD,uBAAuB,CAAC;EAC9D,IAAIE,QAAQ,GAAG10D,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEuC,GAAG,CAAC,CAAC,CAAC,GAAGgyD,uBAAuB,CAAC;EAC9D,IAAIG,QAAQ,GAAG30D,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEuC,GAAG,CAAC,CAAC,CAAC,GAAGgyD,uBAAuB,CAAC;EAC9D,IAAIE,QAAQ,KAAK,CAAC,IAAID,QAAQ,KAAK,GAAG,IAAIE,QAAQ,KAAK,GAAG,EAAE;IAC1DD,QAAQ,GAAG,CAACna,MAAM,GAAG,IAAI,GAAGka,QAAQ,GAAG,GAAG,GAAGE,QAAQ,GAAG,GAAG,IAAI,GAAG;EACpE,CAAC,MAAM,IAAIF,QAAQ,KAAK,CAAC,EAAE;IACzBA,QAAQ,GAAG,CAACla,MAAM,GAAG,IAAI,GAAGma,QAAQ,GAAG,GAAG,GAAGC,QAAQ,GAAG,GAAG,IAAI,GAAG;EACpE,CAAC,MAAM,IAAIA,QAAQ,KAAK,CAAC,IAAID,QAAQ,KAAK,GAAG,EAAE;IAC7CC,QAAQ,GAAG,CAACpa,MAAM,GAAG,IAAI,GAAGka,QAAQ,GAAG,GAAG,GAAGC,QAAQ,GAAG,GAAG,IAAI,GAAG;EACpE;EACA,OAAO1jD,6CAAK,CAACxO,GAAG,CAACiyD,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,CAAC;AAChD,CAAC,C;;;;;;;;;;;;AC1ID;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAMoB;AAEpB,IAAM9G,MAAM,GAAG;EACbsD,OAAO,EAAE,KAAK;EAAE;;EAEhB;EACApD,KAAK,EAAE,IAAI;EAAE;EACbe,aAAa,EAAE,IAAI;EAAE;EACrB/hC,KAAK,EAAE,IAAI;EAAE;;EAEb+gC,IAAI,EAAE,EAAE;EAAE;EACVuD,SAAS,EAAE;IAAE;IACXD,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAAE;IAC9BE,SAAS,EAAE,EAAE,CAAE;EACjB,CAAC;;EACDlD,kBAAkB,EAAE,IAAI;EAAE;EAC1B0C,YAAY,EAAE,KAAK;EAAE;EACrBC,SAAS,EAAE,IAAI;EAAE;EACjB6D,kBAAkB,EAAE,EAAE;EAAE;EACxBC,qBAAqB,EAAEC,iEAAuB;EAAE;EAChDC,mBAAmB,EAAEC,+DAAqB;EAAE;EAC5CC,oBAAoB,EAAEC,gEAAsB;EAAE;EAC9CC,kBAAkB,EAAEC,8DAAoB;EAAE;EAE1C;EACAtnC,GAAG,WAAAA,IAAC5O,IAAI,EAAEquC,GAAG,EAAE//C,GAAG,EAAE;IAClB,IAAMhN,KAAK,GAAG+sD,GAAG,CAAC//C,GAAG,CAAC;IACtB,QAAQ0R,IAAI;MACV,KAAK,SAAS;QACZ,OAAO1e,KAAK,KAAK,SAAS,KAAK,IAAI,CAACgN,GAAG,CAAC,GAAGhN,KAAK,CAAC;QACjD;MACF,KAAK,QAAQ;QACX,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,EAAE,KAAK,IAAI,CAACgN,GAAG,CAAC,GAAGhN,KAAK,CAAC;QAChE;MACF,KAAK,UAAU;QACb,OAAOA,KAAK,KAAK,UAAU,KAAK,IAAI,CAACgN,GAAG,CAAC,GAAGhN,KAAK,CAAC;QAClD;MACF,KAAK,KAAK;QACRA,KAAK,YAAY6oD,WAAW,KAAK,IAAI,CAAC77C,GAAG,CAAC,GAAGhN,KAAK,CAAC;QACnD;MACF;IACF;EACF;AACF,CAAC;AAEcqtD,qEAAM,E;;;;;;;;;;;;AC/ErB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEO,IAAM+D,WAAW,GAAG,8BAA8B,CAAC,CAAC;;AAEpD,IAAMzE,YAAY,GAAG,eAAe,CAAC,CAAC;AACtC,IAAMkI,mBAAmB,GAAG,IAAI3sC,MAAM,IAAAtW,MAAA,CAAI+6C,YAAY,SAAM,CAAC;AAE7D,IAAMuE,UAAU,GAAG,wBAAwB,CAAC,CAAC;;AAEpD,IAAM4D,MAAM,MAAAljD,MAAA,CAAM,IAAIuqC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAAvqC,MAAA,CAAGpS,IAAI,CAACoB,KAAK,CAACpB,IAAI,CAACu1D,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAE,CAAC,CAAC;AAC9D,IAAMtF,SAAS,0BAAA79C,MAAA,CAA0BkjD,MAAM,CAAE,CAAC,CAAC;AACnD,IAAMpF,WAAW,4BAAA99C,MAAA,CAA4BkjD,MAAM,CAAE,CAAC,CAAC;AACvD,IAAMnF,kBAAkB,mCAAA/9C,MAAA,CAAmCkjD,MAAM,CAAE,CAAC,CAAC;AACrE,IAAMlF,oBAAoB,qCAAAh+C,MAAA,CAAqCkjD,MAAM,CAAE,CAAC,CAAC;AACzE,IAAMjF,WAAW,4BAAAj+C,MAAA,CAA4BkjD,MAAM,CAAE;AACrD,IAAMhF,8BAA8B,+CAAAl+C,MAAA,CAA+CkjD,MAAM,CAAE,CAAC,CAAC;AAC7F,IAAME,kBAAkB,GAAG,GAAG;AAE9B,IAAMV,uBAAuB,GAAG,SAAS,CAAC,CAAC;AAC3C,IAAME,qBAAqB,GAAG,MAAM,CAAC,CAAC;AACtC,IAAME,sBAAsB,GAAG,SAAS,CAAC,CAAC;AAC1C,IAAME,oBAAoB,GAAG,SAAS,CAAC,CAAC;;AAExC,IAAMK,2BAA2B,GAAG,GAAG,CAAC,CAAC;AACzC,IAAMC,4BAA4B,GAAG,GAAG;AACxC,IAAMC,2BAA2B,GAAG,EAAE;AACtC,IAAMC,uBAAuB,GAAG,GAAG;AACnC,IAAMC,8BAA8B,GAAG,EAAE;AACzC,IAAMC,6BAA6B,GAAG,EAAE;AACxC,IAAMC,YAAY,GAAG,IAAI,CAAC,CAAC;;AAE3B,IAAMrH,WAAW,GAAIhG,MAAM,CAACsN,cAAc,IAAItN,MAAM,CAACsN,cAAc,CAAC,CAAC,IACvEtN,MAAM,CAACuN,WAAW,IAClBnU,QAAQ,CAACoU,eAAe,CAACC,YAAY;AAEnC,IAAMC,eAAe,GAAG;EAAE;EAC/BC,QAAQ,EAAE,CACR,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,CACb;EACDC,WAAW,EAAE,CACX,aAAa,CACd;EACDC,UAAU,EAAE,CACV,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,OAAO,EACP,yBAAyB,CAC1B;EACDC,YAAY,EAAE,CACZ,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,2BAA2B,EAC3B,yBAAyB,EACzB,SAAS,EACT,eAAe,EACf,YAAY;EAAE;EACd,aAAa,EACb,mBAAmB;EAErB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF,CAAC;;AACM,IAAMC,aAAa,GAAGhpD,MAAM,CAACiD,IAAI,CAAC0lD,eAAe,CAAC,CAAC1jD,GAAG,CAAC,UAAAlF,GAAG;EAAA,OAAI4oD,eAAe,CAAC5oD,GAAG,CAAC,CAACsD,IAAI,CAAC,GAAG,CAAC;AAAA,EAAC,CAACA,IAAI,CAAC,GAAG,CAAC,CAACyT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpH,IAAMmyC,UAAU,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;;AAEhD,IAAM1C,gBAAgB,GAAG,cAAc,CAAC,CAAC;;AAEzC,IAAM2C,qBAAqB,GAAG,mBAAmB,CAAC,CAAC;AACnD,IAAMC,4BAA4B,GAAG,sBAAsB;AAElE,IAAMC,gBAAgB,GAAG,uDAAuD;AACzE,IAAM1C,YAAY,GAAG,IAAIzrC,MAAM,CAACmuC,gBAAgB,EAAE,GAAG,CAAC;AACtD,IAAMC,mBAAmB,GAAG,IAAIpuC,MAAM,CAACmuC,gBAAgB,EAAE,IAAI,CAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtGrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAIoB;;AAEpB;AAC8B;AAKZ;AAAA,IAEGE,QAAQ;EACL;EACA;EACP;;EAEG;;EAElB,SAAAA,SAAA,EAAc;IAAA11C,eAAA,OAAA01C,QAAA;IAAAl0C,eAAA,0BANI,EAAE;IAAAA,eAAA,0BACF,EAAE;IAAAA,eAAA,mBACT,CAAC,CAAC;IAAAA,eAAA,mBAEF,KAAK;EAED;;EAEf;EAAAvB,YAAA,CAAAy1C,QAAA;IAAAvpD,GAAA;IAAAhN,KAAA,EACA,SAAAw2D,SAASxpD,GAAG,EAAEwS,GAAG,EAAE;MAAA,IAAAi3C,kBAAA,EAAAC,cAAA;MACjB,CAAAD,kBAAA,IAAAC,cAAA,OAAI,CAACC,QAAQ,EAAC3pD,GAAG,CAAC,cAAAypD,kBAAA,uBAAlBA,kBAAA,CAAA34D,IAAA,CAAA44D,cAAqB,CAAC;MACtB,UAAA9kD,MAAA,CAAU5E,GAAG,QAAA4E,MAAA,CAAK4N,GAAG;IACvB;;IAEA;EAAA;IAAAxS,GAAA;IAAAhN,KAAA,EACA,SAAA6uD,OAAOnB,SAAS,EAAEoB,KAAK,EAAE;MACvB,UAAAl9C,MAAA,CAAUy7C,+CAAM,CAACC,IAAI,KAAK,MAAM,WAAA17C,MAAA,CAAWs/C,oDAAU,SAAM,EAAE,EAAAt/C,MAAA,CAAGy7C,+CAAM,CAAC+G,kBAAkB,OAAAxiD,MAAA,CAAOy7C,+CAAM,CAAC+G,kBAAkB,MAAG,OAAAxiD,MAAA,CAAI87C,SAAS,OAAA97C,MAAA,CAAIk9C,KAAK;IACpJ;;IAEA;EAAA;IAAA9hD,GAAA;IAAAhN,KAAA,EACA,SAAA6tD,OAAO+I,GAAG,EAA4B;MAAA,IAA1BC,gBAAgB,GAAAznD,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;MAClC,IAAI,CAACynD,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC,IAAID,GAAG;MACrEjJ,+CAAO,CAACE,MAAM,CAACgJ,gBAAgB,CAAC;IAClC;;IAEA;EAAA;IAAA7pD,GAAA;IAAAhN,KAAA,EACA,SAAAouD,WAAA,EAAqC;MAAA,IAA1ByI,gBAAgB,GAAAznD,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;MACjC,CAACynD,gBAAgB,IAAI1J,2CAAG,CAACC,UAAU,KAAK,IAAI,CAACF,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;;MAE/D;MACA,IAAMuE,MAAM,GAAG,CAACtE,2CAAG,CAACC,UAAU,GAAG,CAAC;QAChCrT,MAAM,EAAE,IAAI;QACZ/sC,GAAG,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QAC3C8pD,cAAc,EAAE;MAClB,CAAC,CAAC,GAAG,EAAE,EAAEllD,MAAM,CAAC,CAAC;QACfmoC,MAAM,EAAE4T,+CAAO;QACf3gD,GAAG,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;QACzC8pD,cAAc,EAAE;MAClB,CAAC,EAAE;QACD/c,MAAM,EAAE4T,+CAAO;QACf3gD,GAAG,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;QACjD8pD,cAAc,EAAE;MAClB,CAAC,CAAC,CAAC,CAAC5kD,GAAG,CAAC,UAAAg+C,IAAA,EAIF;QAAA,IAHJnW,MAAM,GAAAmW,IAAA,CAANnW,MAAM;UAAAgd,QAAA,GAAAnjD,cAAA,CAAAs8C,IAAA,CACNljD,GAAG;UAAG+T,KAAK,GAAAg2C,QAAA;UAAEC,KAAK,GAAAD,QAAA;UAClBD,cAAc,GAAA5G,IAAA,CAAd4G,cAAc;QAEd,IAAIG,QAAQ,GAAG,EAAE;QACjB,IAAI,CAACJ,gBAAgB,EAAE;UAAE;UACvB9c,MAAM,CAACid,KAAK,CAAC,GAAGjd,MAAM,CAACh5B,KAAK,CAAC,GAAGg5B,MAAM,CAACid,KAAK,CAAC;UAC7Cjd,MAAM,CAACh5B,KAAK,CAAC,GAAG,EAAE;UAClBk2C,QAAQ,GAAGD,KAAK;QAClB,CAAC,MAAM;UACLC,QAAQ,GAAGl2C,KAAK;QAClB;QAEA,IAAM6L,KAAK,GAAGmtB,MAAM,CAACkd,QAAQ,CAAC;QAC9B,IAAIrqC,KAAK,EAAE;UACTmtB,MAAM,CAACkd,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;UACvB,OAAQ5J,+CAAM,CAACC,IAAI,KAAK,MAAM,IAAI,CAACwJ,cAAc,GAAIlqC,KAAK,aAAAhb,MAAA,CAAaw/C,qDAAW,QAAAx/C,MAAA,CAAKgb,KAAK,MAAG;QACjG;QACA,OAAO,EAAE;MACX,CAAC,CAAC,CAACtc,IAAI,CAAC,EAAE,CAAC;;MAEX;MACAmhD,MAAM,IAAInQ,QAAQ,CAAC4V,IAAI,CAACC,kBAAkB,CAAC,WAAW,8BAAAvlD,MAAA,CAA4B6/C,MAAM,aAAU,CAAC;IACrG;;IAEA;EAAA;IAAAzkD,GAAA;IAAAhN,KAAA,EACA,SAAAo3D,MAAMpqD,GAAG,EAAEo/B,EAAE,EAAE;MACb,IAAI,CAACuqB,QAAQ,CAAC3pD,GAAG,CAAC,GAAGo/B,EAAE;IACzB;;IAEA;EAAA;IAAAp/B,GAAA;IAAAhN,KAAA,EACA,SAAAq3D,QAAQrqD,GAAG,EAAE;MACX,OAAO,IAAI,CAAC2pD,QAAQ,CAAC3pD,GAAG,CAAC;IAC3B;EAAC;EAAA,OAAAupD,QAAA;AAAA;AA7E0B;AA8E5B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAC8B;AAIZ;;AAElB;AACO,SAASvG,gBAAgBA,CAACf,EAAE,EAAoB;EAAA,IAAAiB,IAAA;EAAA,IAAlBoH,QAAQ,GAAAloD,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;EACnD,OAAO,CAAA8gD,IAAA,GAACoH,QAAQ,GAAG,EAAE,GAAG,CAACrI,EAAE,CAAC,EAAEr9C,MAAM,CAAA3T,KAAA,CAAAiyD,IAAA,EAAA9/C,kBAAA,CAAI6+C,EAAE,CAACsI,gBAAgB,CAAC,GAAG,CAAC,EAAC;AACnE;AAAC;;AAED;AACO,SAASC,WAAWA,CAACvI,EAAE,EAAE;EAC9B;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAOA,EAAE,CAACwI,WAAW,CAAC5wC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACvoB,MAAM,GAAG,CAAC;AACrD;AAAC;;AAED;AACA,IAAMo5D,aAAa,GAAG;EACpB,iCAAiC,EAAE,SAAS;EAC5C,iCAAiC,EAAE;AACrC,CAAC;AACD;AACO,SAASC,aAAaA,CAAC1I,EAAE,EAAE;EAChC,IAAI7uD,KAAK,GAAG,IAAI;EAEhBoP,KAAK,CAACxR,SAAS,CAACqtB,IAAI,CAACvtB,IAAI,CAACmxD,EAAE,CAACgC,SAAS,EAAE,UAAAvD,SAAS,EAAI;IACnD,IAAIgK,aAAa,CAAChK,SAAS,CAAC,EAAE;MAC5BttD,KAAK,GAAGs3D,aAAa,CAAChK,SAAS,CAAC;MAChC,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,OAAOttD,KAAK;AACd;AAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMw3D,QAAQ;EACR;EACS;EACJ;;EAEO;;EAEvB,SAAAA,SAAA,EAAc;IAAA/2C,eAAA,OAAA+2C,QAAA;IAAAv1C,eAAA,eANP,EAAE;IAAAA,eAAA,wBACO,EAAE;IAAAA,eAAA,oBACN,EAAE;IAAAA,eAAA,wBAEE,KAAK;EAEN;;EAEf;EAAAvB,YAAA,CAAA82C,QAAA;IAAA5qD,GAAA;IAAAQ,GAAA,EACA,SAAAA,IAAA,EAAa;MACX,OAAO,IAAI,CAACqqD,IAAI,CAACv5D,MAAM;IACzB;;IAEA;EAAA;IAAA0O,GAAA;IAAAhN,KAAA,EACA,SAAAstB,IAAA,EAAc;MAAA,IAAVyhC,GAAG,GAAA3/C,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,EAAE;MACV,IAAI,CAACyoD,IAAI,GAAG9I,GAAG;IACjB;;IAEA;EAAA;IAAA/hD,GAAA;IAAAhN,KAAA,EACA,SAAAwN,IAAA,EAAM;MACJ,IAAI4lD,GAAG,GAAG,EAAE;MAEZ,IAAI,IAAI,CAACyE,IAAI,CAACv5D,MAAM,EAAE;QAAE;QACtB80D,GAAG,GAAG,IAAI,CAACyE,IAAI;QACf1K,2CAAG,CAACC,UAAU,KAAK,IAAI,CAACyK,IAAI,GAAG,EAAE,CAAC;MACpC,CAAC,MAAM;QAAE;QACP,IAAI,IAAI,CAACC,SAAS,CAACx5D,MAAM,EAAE;UAAE;UAC3B80D,GAAG,GAAG,IAAI,CAAC0E,SAAS;UACpB,IAAI,CAACA,SAAS,GAAG,EAAE;QACrB,CAAC,MAAM,IAAIzK,+CAAM,CAACkD,SAAS,EAAE;UAAE;UAC7B6C,GAAG,GAAG/F,+CAAM,CAACkD,SAAS,CAACgH,gBAAgB,CAAC,GAAG,CAAC;QAC9C;MACF;MAEA,OAAOnE,GAAG;IACZ;;IAEA;EAAA;IAAApmD,GAAA;IAAAhN,KAAA,EACA,SAAAwwD,MAAA,EAAQ;MAAA,IAAAuH,KAAA;MACNvoD,KAAK,CAACxR,SAAS,CAACijB,OAAO,CAACnjB,IAAI,CAAC,IAAI,CAAC+5D,IAAI,EAAE,UAAA5I,EAAE;QAAA,OAAI8I,KAAI,CAACD,SAAS,CAACzmD,IAAI,CAAC49C,EAAE,CAAC;MAAA,EAAC,CAAC,CAAC;MACxE,IAAI,CAAC4I,IAAI,GAAG,EAAE,CAAC,CAAC;IAClB;;IAEA;EAAA;IAAA7qD,GAAA;IAAAhN,KAAA,EACA,SAAAytD,SAAA,EAAW;MACT,IAAI,IAAI,CAACoK,IAAI,CAACv5D,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC;MACpC,OAAO,IAAI,CAACw5D,SAAS,CAACx5D,MAAM,GAAG,CAAC,IAAI+uD,+CAAM,CAACkD,SAAS,KAAK,IAAI,CAAC,CAAC;IACjE;;IAEA;EAAA;IAAAvjD,GAAA;IAAAhN,KAAA,EACA,SAAAmuD,iBAAiBc,EAAE,EAAE;MACnB,IAAI,CAAC+I,aAAa,CAAC3mD,IAAI,CAAC49C,EAAE,CAAC;IAC7B;;IAEA;EAAA;IAAAjiD,GAAA;IAAAhN,KAAA,EACA,SAAAquD,mBAAA,EAAqB;MACnB,IAAI,CAAC2J,aAAa,CAAC/2C,OAAO,CAAC,UAAAguC,EAAE;QAAA,OAAI,CAACA,EAAE,CAACriC,KAAK,CAACqrC,UAAU,KAAKhJ,EAAE,CAACriC,KAAK,CAACqrC,UAAU,GAAG,SAAS,CAAC;MAAA,EAAC,CAAC,CAAC;MAC7F,IAAI,CAAC3J,aAAa,GAAG,IAAI,CAAC,CAAC;IAC7B;;IAEA;EAAA;IAAAthD,GAAA;IAAAhN,KAAA,EACA,SAAAqwD,oBAAA,EAAsB;MACpB,IAAI,CAAC2H,aAAa,GAAG,EAAE;IACzB;EAAC;EAAA,OAAAJ,QAAA;AAAA;AACF,C;;;;;;;;;;;;AChKD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;AAEA;AAGoB;;AAEpB;AACgC;AACzB,IAAMjK,OAAO,GAAG,IAAIuK,gDAAO,CAAC,CAAC;;AAEpC;AAC4C;AACrC,IAAM1J,OAAO,GAAG,IAAI2J,sDAAa,IAAAvmD,MAAA,CAAI+6C,sDAAY,WAAQ,CAAC;;AAEjE;AACwC;AACjC,IAAM+B,OAAO,GAAG,IAAImD,oDAAW,IAAAjgD,MAAA,CAAI+6C,sDAAY,SAAM,CAAC;;AAE7D;AACkC;AAC3B,IAAMM,QAAQ,GAAG,IAAIsJ,iDAAQ,CAAC,CAAC;;AAEtC;AAGoB;AACb,IAAM/I,QAAQ,GAAG,IAAIoK,kDAAQ,CAAC,CAAC;;AAEtC;AACwB;AACjB,IAAMzK,GAAG,GAAG,IAAIiL,4CAAG,CAAC,CAAC,C;;;;;;;;;;;;;;;;;;;AClC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMkB;AAElB,IAAIC,SAAS,GAAG,EAAE;AAClB,IAAIC,OAAO,GAAG,EAAE;AAAC,IAEXC,MAAM;EACV,SAAAA,OAAA,EAAc;IAAA13C,eAAA,OAAA03C,MAAA;EAAC;;EAEf;EAAAz3C,YAAA,CAAAy3C,MAAA;IAAAvrD,GAAA;IAAAQ,GAAA,EACA,SAAAA,IAAA,EAAgB;MACd,OAAOmgD,+CAAO,CAACY,SAAS;IAC1B;;IAEA;EAAA;IAAAvhD,GAAA;IAAAQ,GAAA,EACA,SAAAA,IAAA,EAAiB;MACf,OAAO2/C,2CAAG,CAACC,UAAU;IACvB;;IAEA;EAAA;IAAApgD,GAAA;IAAAhN,KAAA,EACA,SAAA6tD,OAAOH,SAAS,EAAE8K,MAAM,EAAyB;MAAA,IAAvB1B,cAAc,GAAA1nD,SAAA,CAAA9Q,MAAA,QAAA8Q,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;MAC7C,CAAC0nD,cAAc,GAAGuB,SAAS,GAAGC,OAAO,EAAEjnD,IAAI,CAAC47C,gDAAQ,CAAC4B,MAAM,CAACnB,SAAS,EAAE8K,MAAM,CAACtmD,GAAG,CAAC,UAAAg+C,IAAA;QAAA,IAChFljD,GAAG,GAAAkjD,IAAA,CAAHljD,GAAG;UACHhN,KAAK,GAAAkwD,IAAA,CAALlwD,KAAK;QAAA,OACDitD,gDAAQ,CAACuJ,QAAQ,CAACxpD,GAAG,EAAEhN,KAAK,CAAC;MAAA,EAAC,CAACsQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD;EAAC;EAAA,OAAAioD,MAAA;AAAA;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5BA,IA8BqBL,OAAO;EACX;;EAEH;EACG;EACM;EACA;EACI;EACA;;EAEzB,SAAAA,QAAA,EAAc;IAAAr3C,eAAA,OAAAq3C,OAAA;IAAA71C,eAAA,mBATH,EAAE;IAAAA,eAAA,iBAEJ,CAAC;IAAAA,eAAA,oBACE,CAAC;IAAAA,eAAA,yBACI,EAAE;IAAAA,eAAA,yBACF,EAAE;IAAAA,eAAA,6BACE,EAAE;IAAAA,eAAA,6BACF,EAAE;EAER;;EAEf;EAAAvB,YAAA,CAAAo3C,OAAA;IAAAlrD,GAAA;IAAAhN,KAAA,EACA,SAAAu1C,OAAOqc,MAAM,EAAE;MACb,IAAI,CAAC6G,QAAQ,CAACpnD,IAAI,CAAC,KAAKugD,MAAM,CAAC2G,MAAM,CAAC,EAAE,CAAC,CAAC;MAC1C,IAAI,CAACj6D,MAAM,EAAE;IACf;;IAEA;EAAA;IAAA0O,GAAA;IAAAhN,KAAA,EACA,SAAA04D,KAAK/5D,IAAI,EAAW;MAAA,SAAA4Q,IAAA,GAAAH,SAAA,CAAA9Q,MAAA,EAAND,IAAI,OAAAmR,KAAA,CAAAD,IAAA,OAAAA,IAAA,WAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;QAAJpR,IAAI,CAAAoR,IAAA,QAAAL,SAAA,CAAAK,IAAA;MAAA;MAChB,IAAI,CAACgpD,QAAQ,CAACx3C,OAAO,CAAC,UAAA2wC,MAAM,EAAI;QAC9B,OAAOA,MAAM,CAACjzD,IAAI,CAAC,KAAK,UAAU,IAAIizD,MAAM,CAACjzD,IAAI,CAAC,CAAAV,KAAA,CAAZ2zD,MAAM,EAAUvzD,IAAI,CAAC;MAC7D,CAAC,CAAC;IACJ;;IAEA;EAAA;IAAA2O,GAAA;IAAAhN,KAAA,EACA,SAAA6tD,OAAOgJ,gBAAgB,EAAE;MACvB,IAAIA,gBAAgB,EAAE;QACpB,IAAI,CAAC8B,cAAc,IAAIN,SAAS,CAAC/nD,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,CAACsoD,kBAAkB,IAAIN,OAAO,CAAChoD,IAAI,CAAC,EAAE,CAAC;MAC7C,CAAC,MAAM;QACL,IAAI,CAACuoD,cAAc,IAAIR,SAAS,CAAC/nD,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,CAACwoD,kBAAkB,IAAIR,OAAO,CAAChoD,IAAI,CAAC,EAAE,CAAC;MAC7C;IACF;;IAEA;EAAA;IAAAtD,GAAA;IAAAhN,KAAA,EACA,SAAA+4D,SAAA,EAAW;MACTV,SAAS,GAAG,EAAE;MACdC,OAAO,GAAG,EAAE;IACd;EAAC;EAAA,OAAAJ,OAAA;AAAA;AAxCyB;AAyC3B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAC0B;AAQT;;AAEjB;AAgCoB;;AAEpB;AAC8B;AAOZ;;AAElB;AAKoB;AAAA,IAECE,GAAG;EACZ;;EASU;;EAEpB,SAAAA,IAAA,EAAc;IAAAv3C,eAAA,OAAAu3C,GAAA;IAAA/1C,eAAA,eAXP,CAAC;IAAAA,eAAA,mCACmB,IAAI;IAAAA,eAAA,iCACN,IAAI;IAAAA,eAAA,iCACJ,IAAI;IAAAA,eAAA,0CACK,IAAI;IAAAA,eAAA,wCACN,IAAI;IAAAA,eAAA,2CACD,IAAI;IAAAA,eAAA,oCACX,IAAI;IAAAA,eAAA,qBAEnB,KAAK;EAEH;;EAEf;EAAAvB,YAAA,CAAAs3C,GAAA;IAAAprD,GAAA;IAAAhN,KAAA,EACA,SAAAg5D,kBAAkB54D,KAAK,EAAE6uD,EAAE,EAAE1tD,OAAO,EAAE03D,QAAQ,EAAEC,SAAS,EAAE;MACzD;MACA;MACA;MACA;MACA;MACA;;MAEA;MACA;MACA;;MAEA;MACA;;MAEA,IAAMrqD,KAAK,GAAGzO,KAAK,CAACyO,KAAK,CAAC,CAAC;MAC3B,IAAIsqD,QAAQ;MACZ,IAAIC,QAAQ,GAAG,EAAE;MAEjB,IAAI73D,OAAO,CAAC83D,SAAS,EAAE;QAAE;QACvB,IAAIxqD,KAAK,IAAI0mD,sDAAY,EAAE;UACzB;UACA,IAAItG,EAAE,CAACY,qDAAW,CAAC,EAAE,OAAOZ,EAAE,CAACY,qDAAW,CAAC;;UAE3C;UACA,IAAIZ,EAAE,CAACa,wEAA8B,CAAC,EAAE;YACtC;YACA;YACA;YACA;YACA,IAAIb,EAAE,CAACa,wEAA8B,CAAC,KAAK1vD,KAAK,CAACwP,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC8hD,WAAW,CAACzC,EAAE,CAACa,wEAA8B,CAAC,EAAE1vD,KAAK,CAACwP,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;cAC3I,OAAO;gBACLupD,QAAQ,EAAED,SAAS,GAAG94D,KAAK,CAACwP,QAAQ,CAAC,CAAC,GAAG,EAAE;gBAC3CwpD,QAAQ,EAARA;cACF,CAAC;YACH;;YAEA;YACApJ,kEAAgB,CAACf,EAAE,CAAC,CAAChuC,OAAO,CAAC,UAAAq4C,GAAG,EAAI;cAClC,OAAOA,GAAG,CAACxJ,wEAA8B,CAAC;YAC5C,CAAC,CAAC;UACJ;QACF;QAEAqJ,QAAQ,GAAG,IAAI,CAACI,2BAA2B,CAACn5D,KAAK,CAAC;QAElD,IAAI,CAACmB,OAAO,CAACi4D,cAAc,EAAE;UAC3B,IAAMC,kBAAkB,GAAGxK,EAAE,CAACU,4DAAkB,CAAC,IAAItC,+CAAM,CAACgH,qBAAqB;UACjF,IAAMqF,eAAe,GAAGvG,0DAAW,CAACsG,kBAAkB,CAAC;UACvD,IAAIC,eAAe,EAAE;YACnB,IAAM17C,GAAG,GAAG,IAAI,CAACg7C,iBAAiB,CAACU,eAAe,EAAEzK,EAAE,EAAE;cACtD0K,WAAW,EAAE,IAAI;cACjBC,uBAAuB,EAAET,QAAQ,IAAI/4D;YACvC,CAAC,EAAE64D,QAAQ,EAAEC,SAAS,CAAC;YACvBE,QAAQ,IAAInM,gDAAQ,CAACuJ,QAAQ,CAAC,OAAO,EAAEx4C,GAAG,CAACm7C,QAAQ,IAAIO,eAAe,CAAC;YACvE1J,kEAAgB,CAACf,EAAE,CAAC,CAAChuC,OAAO,CAAC,UAAAq4C,GAAG,EAAI;cAClCA,GAAG,CAAC7J,mDAAS,CAAC,GAAGzxC,GAAG,CAACm7C,QAAQ,IAAIO,eAAe;cAChDJ,GAAG,CAAC3J,4DAAkB,CAAC,GAAG+J,eAAe;YAC3C,CAAC,CAAC;UACJ;QACF;MACF,CAAC,MAAM,IAAIn4D,OAAO,CAACo4D,WAAW,IAAIp4D,OAAO,CAACs4D,aAAa,EAAE;QAAE;QACzD,IAAMD,uBAAuB,GAAGr4D,OAAO,CAACq4D,uBAAuB,IACzDr4D,OAAO,CAACo4D,WAAW,IAAI1K,EAAE,CAACS,qDAAW,CAAE,IACxCrC,+CAAM,CAACsH,kBAAkB;QAC9B,IAAMmF,oBAAoB,GAAG3G,0DAAW,CAACyG,uBAAuB,CAAC;;QAEjE;QACA,IAAIE,oBAAoB,IAAI,CAAC7K,EAAE,CAACY,qDAAW,CAAC,EAAE;UAC5CsJ,QAAQ,GAAG,IAAI,CAACY,qBAAqB,CAAC35D,KAAK,EAAE05D,oBAAoB,CAAC;UAClE,IAAIE,cAAc,GAAG,EAAE;UACvB,IAAIf,QAAQ,EAAE;YACZe,cAAc,GAAG,eAAe;UAClC,CAAC,MAAM,IAAId,SAAS,EAAE;YACpBc,cAAc,GAAG,SAAS;UAC5B;UACArM,+CAAO,CAAC+K,IAAI,yBAAA9mD,MAAA,CAAyBooD,cAAc,GAAI/K,EAAE,EAAE;YACzD;YACAgL,SAAS,EAAEd,QAAQ;YACnBe,OAAO,EAAEJ;UACX,CAAC,CAAC;QACJ;MACF,CAAC,MAAM,IAAIv4D,OAAO,CAAC44D,YAAY,EAAE;QAAE;QACjC;QACA,IAAI,CAAClL,EAAE,CAACY,qDAAW,CAAC,EAAE;UACpBsJ,QAAQ,GAAG,IAAI,CAACI,2BAA2B,CAACn5D,KAAK,CAAC,CAAC,CAAC;QACtD;MACF;;MAEA,OAAO;QACL+4D,QAAQ,EAAEA,QAAQ,IAAI/4D,KAAK,CAACwP,QAAQ,CAAC,CAAC,KAAKupD,QAAQ,CAACvpD,QAAQ,CAAC,CAAC,IAAIupD,QAAQ,CAACtqD,KAAK,CAACA,KAAK,CAAC,CAAC7M,GAAG,CAAC,CAAC;QAC7Fo3D,QAAQ,EAARA;MACF,CAAC;IACH;;IAEA;EAAA;IAAApsD,GAAA;IAAAhN,KAAA,EACA,SAAA+5D,sBAAsBK,SAAS,EAAEF,OAAO,EAAE;MACxC,IAAMG,UAAU,GAAGH,OAAO,CAACl4D,GAAG,CAAC,CAAC,CAAC+P,KAAK,CAAC,CAAC;MACxC,IAAMuoD,YAAY,GAAGJ,OAAO,CAACrrD,KAAK,CAAC,CAAC;MACpC,IAAM0rD,0BAA0B,GAAGzG,0EAA2B,CAACuG,UAAU,CAAC;MAC1E,IAAMG,qCAAqC,GAAGD,0BAA0B,GAAGD,YAAY,GACnF,IAAI,CAACG,6BAA6B,IAAI,CAAC,GAAGH,YAAY,CAAC;MAC3D,IAAMI,YAAY,GAAGN,SAAS,CAACp4D,GAAG,CAAC,CAAC,CAAC+P,KAAK,CAAC,CAAC;MAC5C,IAAM4oD,YAAY,GAAGP,SAAS,CAACtsD,GAAG,CAAC,CAAC,CAACiE,KAAK,CAAC,CAAC;MAC5C,IAAM6oD,cAAc,GAAGR,SAAS,CAACvrD,KAAK,CAAC,CAAC;MACxC,IAAMgsD,uBAAuB,GAAG/G,0EAA2B,CAAC4G,YAAY,CAAC;MACzE,IAAMI,yBAAyB,GAAGt7D,IAAI,CAACM,GAAG,CAAC06D,qCAAqC,GAAGK,uBAAuB,CAAC;;MAE3G;MACA,IAAIA,uBAAuB,IAAI5F,qEAA2B,EAAE,OAAOmF,SAAS;MAE5E,IAAIU,yBAAyB,GAAG,IAAI,CAACC,yBAAyB,IACzDP,qCAAqC,IAAI,IAAI,CAACC,6BAA6B,GAAG,CAAC,EAAE;QACpF,OAAO1G,iEAAkB,CAAC,IAAI,CAACgH,yBAAyB,GAAGP,qCAAqC,EAC5FE,YAAY,CAAC,CAAC7rD,KAAK,CAAC+rD,cAAc,CAAC;MACzC;;MAEA;MACA,IAAIE,yBAAyB,IAAI3F,qEAA2B,EAAE,OAAOiF,SAAS;MAE9E,IAAII,qCAAqC,IAAIpF,iEAAuB,EAAE;QAAE;QACtE,IAAIuF,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,GAAGtF,wEAA8B,EAAE;UAAE;UAC3DsF,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,GAAGA,YAAY,CAAC,CAAC,CAAC;UACtC,IAAMK,YAAY,GAAGxqD,6CAAK,CAAC1C,GAAG,CAAA7P,KAAA,CAATuS,6CAAK,EAAAJ,kBAAA,CAAQuqD,YAAY,EAAC,CAAC9rD,KAAK,CAAC+rD,cAAc,CAAC;UACrE,OAAO,IAAI,CAACb,qBAAqB,CAACiB,YAAY,EAAEd,OAAO,CAAC;QAC1D;QACA,OAAOnG,iEAAkB,CAACv0D,IAAI,CAACC,GAAG,CAChC,IAAI,CAACs7D,yBAAyB,EAC5BP,qCAAqC,GAAGrF,qEAC5C,CAAC,EAAEuF,YAAY,CAAC,CAAC7rD,KAAK,CAAC+rD,cAAc,CAAC;MACxC,CAAC,MAAM;QAAE;QACP,IAAID,YAAY,CAAC,CAAC,CAAC,IAAItF,wEAA8B,EAAE;UAAE;UACvDsF,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,GAAGA,YAAY,CAAC,CAAC,CAAC;UACtC,IAAMK,aAAY,GAAGxqD,6CAAK,CAAC1C,GAAG,CAAA7P,KAAA,CAATuS,6CAAK,EAAAJ,kBAAA,CAAQuqD,YAAY,EAAC,CAAC9rD,KAAK,CAAC+rD,cAAc,CAAC;UACrE,OAAO,IAAI,CAACb,qBAAqB,CAACiB,aAAY,EAAEd,OAAO,CAAC;QAC1D;QACA,OAAOnG,iEAAkB,CAACv0D,IAAI,CAACC,GAAG,CAChC,IAAI,CAACs7D,yBAAyB,EAC5BP,qCAAqC,GAAGrF,qEAC5C,CAAC,EAAEuF,YAAY,CAAC,CAAC7rD,KAAK,CAAC+rD,cAAc,CAAC;MACxC;IACF;;IAEA;EAAA;IAAA5tD,GAAA;IAAAhN,KAAA,EACA,SAAAu5D,4BAA4BW,OAAO,EAAE;MACnC,IAAMG,UAAU,GAAGH,OAAO,CAACl4D,GAAG,CAAC,CAAC,CAAC+P,KAAK,CAAC,CAAC;MACxC,IAAMkpD,UAAU,GAAGf,OAAO,CAACpsD,GAAG,CAAC,CAAC,CAACiE,KAAK,CAAC,CAAC;MACxC,IAAMuoD,YAAY,GAAGJ,OAAO,CAACrrD,KAAK,CAAC,CAAC;MACpC,IAAM0rD,0BAA0B,GAAGzG,0EAA2B,CAACuG,UAAU,CAAC;MAC1E,IAAIlB,QAAQ,GAAGe,OAAO;MACtB,IAAKe,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIA,UAAU,CAAC,CAAC,CAAC,GAAG5F,wEAA8B,IACrEkF,0BAA0B,GAAGtF,qEAA2B,EAAE;QAC7D;QACAkE,QAAQ,GAAG3oD,6CAAK,CAAC1C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAEtO,IAAI,CAACC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAACy7D,gCAAgC,GAAGD,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;MACxG,CAAC,MAAM,IAAIV,0BAA0B,GAAGrF,sEAA4B,EAAE;QACpE;QACAiE,QAAQ,GAAGpF,iEAAkB,CAACmB,sEAA4B,EAAEmF,UAAU,CAAC,CAACxrD,KAAK,CAACyrD,YAAY,CAAC;QAC3F;QACA;QACA;MACF,CAAC,MAAM,IAAIW,UAAU,CAAC,CAAC,CAAC,GAAG3F,uEAA6B,EAAE;QACxD;QACA2F,UAAU,CAAC,CAAC,CAAC,GAAG3F,uEAA6B;QAC7C6D,QAAQ,GAAG3oD,6CAAK,CAAC1C,GAAG,CAAA7P,KAAA,CAATuS,6CAAK,EAAAJ,kBAAA,CAAQ6qD,UAAU,EAAC;MACrC;MACA,OAAO9B,QAAQ,CAACtqD,KAAK,CAACyrD,YAAY,CAAC,CAACt4D,GAAG,CAAC,CAAC;IAC3C;;IAEA;EAAA;IAAAgL,GAAA;IAAAhN,KAAA,EACA,SAAAm7D,sBAAsBC,aAAa,EAAEnM,EAAE,EAAEvB,SAAS,EAAE2N,SAAS,EAAE7B,cAAc,EAAEP,QAAQ,EAAEC,SAAS,EAAE;MAClG,IAAMoC,UAAU,GAAG1H,wDAAS,CAAC,CAAC3E,EAAE,CAACS,qDAAW,CAAC,IAAIrC,+CAAM,CAACsH,kBAAkB,EAAEyG,aAAa,CAAC,EAAE,QAAQ,CAAC;MACrG,IAAMG,kBAAkB,GAAG,CAACtM,EAAE,CAACW,8DAAoB,CAAC,IAAIvC,+CAAM,CAACkH,mBAAmB,EAAExwC,KAAK,CAACixC,4DAAkB,CAAC,CAACpjD,MAAM,CAACwpD,aAAa,CAACxrD,QAAQ,CAAC,CAAC,CAAC,CAACU,IAAI,CAAC0kD,4DAAkB,CAAC;MACvKhF,kEAAgB,CAACf,EAAE,CAAC,CAAChuC,OAAO,CAAC,UAAAq4C,GAAG,EAAI;QAClCA,GAAG,CAAC5J,qDAAW,CAAC,GAAG4L,UAAU;QAC7BhC,GAAG,CAAC1J,8DAAoB,CAAC,GAAG2L,kBAAkB;MAChD,CAAC,CAAC;MACF,IAAMC,MAAM,GAAGH,SAAS,CAAC1tD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACrC,IAAI6tD,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;QACzB,IAAMx9C,GAAG,GAAG,IAAI,CAACg7C,iBAAiB,CAAC7F,0DAAW,CAACG,6DAAc,CAACkI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEvM,EAAE,EAAE;UAC7EoK,SAAS,EAAE,KAAK;UAChBc,YAAY,EAAE,KAAK;UACnBR,WAAW,EAAE,IAAI;UACjBE,aAAa,EAAE,KAAK;UACpBL,cAAc,EAAdA;QACF,CAAC,EAAEP,QAAQ,EAAEC,SAAS,CAAC;QACvB,IAAIl7C,GAAG,CAACm7C,QAAQ,EAAE,OAAOlM,gDAAQ,CAAC4B,MAAM,CAACnB,SAAS,EAAET,gDAAQ,CAACuJ,QAAQ,CAAC,OAAO,EAAEx4C,GAAG,CAACm7C,QAAQ,CAAC,CAAC;MAC/F;MACA,OAAO,EAAE;IACX;EAAC;IAAAnsD,GAAA;IAAAhN,KAAA,EAED,SAAAy7D,KAAKhnB,IAAI,EAAE;MACT,IAAI;QACF,OAAOA,IAAI,CAAC,CAAC;MACf,CAAC,CAAC,OAAOzgC,CAAC,EAAE;QACVgO,OAAO,CAACqb,GAAG,CAAC,qEAAqE,EAAErpB,CAAC,CAAC;QACrF,OAAOq5C,+CAAM,CAAC9gC,KAAK,KAAK,UAAU,IAAI8gC,+CAAM,CAAC9gC,KAAK,CAACvY,CAAC,CAAC;MACvD;IACF;;IAEA;EAAA;IAAAhH,GAAA;IAAAhN,KAAA,EACA,SAAA0wD,KAAA,EAAO;MACL,IAAI,CAACgL,wBAAwB,GAAGvI,0DAAW,CAAC9F,+CAAM,CAACoH,oBAAoB,CAAC,CAACzyD,GAAG,CAAC,CAAC,CAAC+P,KAAK,CAAC,CAAC;MACtF,IAAI,CAAC4pD,sBAAsB,GAAGxI,0DAAW,CAAC9F,+CAAM,CAACsH,kBAAkB,CAAC,CAAC3yD,GAAG,CAAC,CAAC,CAAC+P,KAAK,CAAC,CAAC;MAClF,IAAI,CAAC6pD,sBAAsB,GAAGzI,0DAAW,CAAC9F,+CAAM,CAACsH,kBAAkB,CAAC,CAAC7mD,GAAG,CAAC,CAAC,CAACiE,KAAK,CAAC,CAAC;MAClF,IAAI,CAAC8pD,+BAA+B,GAAG/H,0EAA2B,CAAC,IAAI,CAAC4H,wBAAwB,CAAC;MACjG,IAAI,CAACjB,6BAA6B,GAAG3G,0EAA2B,CAAC,IAAI,CAAC6H,sBAAsB,CAAC;MAC7F,IAAI,CAACT,gCAAgC,GAAG,IAAI,CAACU,sBAAsB,CAAC,CAAC,CAAC;MACtE,IAAI,CAACb,yBAAyB,GAAG,IAAI,CAACc,+BAA+B,GAAG,IAAI,CAACpB,6BAA6B;IAC5G;;IAEA;EAAA;IAAAztD,GAAA;IAAAhN,KAAA,EACA,SAAAmQ,QAAQ8+C,EAAE,EAAEoM,SAAS,EAAEpC,QAAQ,EAAEC,SAAS,EAAE;MAAA,IAAAnB,KAAA;MAC1CpK,+CAAO,CAACoL,QAAQ,CAAC,CAAC;MAClB,IAAIiB,cAAc,GAAG,EAAE;MACvB,IAAIf,QAAQ,EAAE;QACZe,cAAc,GAAG,eAAe;MAClC,CAAC,MAAM,IAAId,SAAS,EAAE;QACpBc,cAAc,GAAG,SAAS;MAC5B;MACArM,+CAAO,CAAC+K,IAAI,qBAAA9mD,MAAA,CAAqBooD,cAAc,GAAI/K,EAAE,CAAC;MAEtD,IAAI2H,GAAG,GAAG,EAAE,CAAC,CAAC;MACd,IAAIkF,KAAK,GAAG,EAAE,CAAC,CAAC;;MAEhB,IAAI,IAAI,CAAC1O,UAAU,IAAI6L,QAAQ,IAAIC,SAAS,EAAE;QAC5C,IAAMtS,QAAQ,GAAGqI,EAAE,CAACrI,QAAQ;QAE5B,IAAIyG,+CAAM,CAACwD,SAAS,CAACD,OAAO,CAAC3/C,OAAO,CAAC21C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE;QAC9D,IAAIyG,+CAAM,CAACwD,SAAS,CAACC,SAAS,CAACzlC,IAAI,CAAC,UAAAylC,SAAS;UAAA,OAAI7B,EAAE,CAAC8M,YAAY,CAACjL,SAAS,CAAC;QAAA,EAAC,EAAE,OAAO,EAAE;QAEvF,IAAMW,MAAM,GAAGxC,EAAE,CAACriC,KAAK;QAEvB,IAAI,CAACyuC,SAAS,EAAE;UAAE;UAChB;UACAA,SAAS,GAAG,CAAE5J,MAAM,CAACuK,OAAO,IAAIvK,MAAM,CAACuK,OAAO,CAACn1C,OAAO,CAAC,sCAAsC,SAAAjV,MAAA,CAASukD,+DAAqB,SAAM,CAAC,CAACpyC,KAAK,CAAC,GAAG,CAAC,IAAK,EAAE,EAAE7R,GAAG,CAAC,UAAA+pD,MAAM,EAAI;YAAE;YACpK,IAAMC,QAAQ,GAAGD,MAAM,CAAChrD,OAAO,CAAC,GAAG,CAAC;YACpC,OAAO,CAACgrD,MAAM,CAACtuD,KAAK,CAAC,CAAC,EAAEuuD,QAAQ,CAAC,CAACtuD,WAAW,CAAC,CAAC,EAAEquD,MAAM,CAACtuD,KAAK,CAACuuD,QAAQ,GAAG,CAAC,CAAC,CAACr1C,OAAO,CAACuvC,sEAA4B,EAAE,GAAG,CAAC,CAAC,CAAClkD,GAAG,CAAC,UAAA6+C,IAAI;cAAA,OAAI,CAACA,IAAI,IAAI,EAAE,EAAElqC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;YAAA,EAAC;UACrM,CAAC,CAAC;QACJ;QAEA,IAAI2yC,cAAc,GAAG,KAAK,CAAC,CAAC;QAC5B,IAAI2C,mBAAmB,GAAG,KAAK;QAC/B,IAAIC,wBAAwB,GAAG,KAAK;QACpC,IAAIC,wBAAwB,GAAG,IAAI;QACnC,IAAIC,oBAAoB,GAAG,IAAI;QAE/BjB,SAAS,GAAGA,SAAS,CAACkB,MAAM,CAAC,UAAArM,IAAA,EAAkB;UAAA,IAAAC,KAAA,GAAAv8C,cAAA,CAAAs8C,IAAA;YAAhBljD,GAAG,GAAAmjD,KAAA;YAAEnwD,KAAK,GAAAmwD,KAAA;UACvC,IAAInjD,GAAG,KAAK,OAAO,EAAE;YACnBwsD,cAAc,GAAG,IAAI;UACvB,CAAC,MAAM,IAAI,aAAa,CAAChyC,IAAI,CAACxa,GAAG,CAAC,EAAE;YAClCmvD,mBAAmB,GAAG,IAAI;YAC1B,IAAInvD,GAAG,KAAK,qBAAqB,EAAE;cACjCqvD,wBAAwB,GAAGr8D,KAAK;YAClC,CAAC,MAAM,IAAIgN,GAAG,KAAK,iBAAiB,EAAE;cACpCsvD,oBAAoB,GAAGt8D,KAAK;YAC9B;UACF;UAEA,IAAI,CAAC,aAAa,CAACwnB,IAAI,CAACxa,GAAG,CAAC,IAAI,0BAA0B,CAACwa,IAAI,CAACxa,GAAG,CAAC,KAAK,eAAe,CAACwa,IAAI,CAACxnB,KAAK,CAAC,EAAE;YACpGo8D,wBAAwB,GAAG,IAAI;UACjC;;UAEA;UACA,OAAOnG,uDAAa,CAAChlD,OAAO,CAACjE,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAClK,IAAI,CAAC,UAAA05D,KAAA,EAAAC,KAAA,EAAoB;UAAA,IAAAC,KAAA,GAAA9oD,cAAA,CAAA4oD,KAAA;YAAlBG,IAAI,GAAAD,KAAA;UAAA,IAAAE,KAAA,GAAAhpD,cAAA,CAAA6oD,KAAA;YAAII,IAAI,GAAAD,KAAA;UAAQ;UAC5B,IAAID,IAAI,KAAK,OAAO,EAAE;YACpB,OAAO,CAAC;UACV,CAAC,MAAM,IAAIA,IAAI,KAAK,kBAAkB,IAAIE,IAAI,KAAK,kBAAkB,EAAE;YAAE;YACvE,OAAO,CAAC;UACV,CAAC,MAAM,IAAIA,IAAI,CAAC5rD,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAAE;YAC/C,OAAO,CAAC;UACV;UACA,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,IAAIilD,oDAAU,CAACjlD,OAAO,CAAC21C,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAACuV,mBAAmB,EAAE;UAAE;UAC/D,IAAI,CAACV,IAAI,CAAC,YAAM;YACd,IAAIqB,QAAQ,GAAGnF,+DAAa,CAAC1I,EAAE,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC6N,QAAQ,EAAEA,QAAQ,GAAG7N,EAAE,CAACnG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;YACtD,IAAIgU,QAAQ,EAAE;cAAE;cACd,IAAM18D,KAAK,GAAG+yD,0DAAW,CAAC2J,QAAQ,CAAC;cACnC,IAAI18D,KAAK,EAAE;gBACTi7D,SAAS,CAACp+C,OAAO,CAAC,CAAC,kBAAkB,EAAE7c,KAAK,CAACwP,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACzDusD,mBAAmB,GAAG,IAAI;cAC5B;YACF;UACF,CAAC,CAAC;QACJ;QAEA,IAAIvV,QAAQ,KAAK,MAAM,IAAI,CAAC4S,cAAc,EAAE;UAAE;UAC5C,IAAI,CAACiC,IAAI,CAAC,YAAM;YACd,IAAMqB,QAAQ,GAAG7N,EAAE,CAACnG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,IAAIgU,QAAQ,EAAE;cAAE;cACd,IAAM18D,KAAK,GAAG+yD,0DAAW,CAAC2J,QAAQ,CAAC;cACnC,IAAI18D,KAAK,EAAE;gBACTi7D,SAAS,CAAChqD,IAAI,CAAC,CAAC,OAAO,EAAEjR,KAAK,CAACwP,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC3C4pD,cAAc,GAAG,IAAI;cACvB;YACF;UACF,CAAC,CAAC;QACJ;;QAEA;QACA,IAAIuD,eAAe,GAAG,EAAE;QACxB,IAAIC,iBAAiB,GAAG,EAAE;QAC1B,IAAIC,aAAa,GAAG,CAAC;QACrB5B,SAAS,CAAChwC,IAAI,CAAC,UAAA6xC,KAAA,EAAe3K,GAAG;UAAA,IAAA4K,KAAA,GAAAvpD,cAAA,CAAAspD,KAAA;YAAhBlwD,GAAG,GAAAmwD,KAAA;YAAEn9D,KAAK,GAAAm9D,KAAA;UAAA,OAAWpF,KAAI,CAAC0D,IAAI,CAAC,YAAM;YACpD,IAAIzuD,GAAG,CAACiE,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;cAAE;cACvCgsD,aAAa,GAAG1K,GAAG,CAAC,CAAC;cACrB,OAAO,IAAI,CAAC,CAAC;YACf;;YAEA,QAAQvlD,GAAG;cACT,KAAK,yBAAyB;gBAC5B+vD,eAAe,GAAGtJ,iFAAkC,CAACzzD,KAAK,CAAC;gBAC3D;cACF,KAAK,qBAAqB;gBAAE;kBAAE;kBAC5B,IAAM0zD,QAAQ,GAAG1zD,KAAK,CAAC+jB,KAAK,CAAC,GAAG,CAAC;kBACjC2vC,QAAQ,CAACp1D,MAAM,KAAK,CAAC,KAAK0+D,iBAAiB,GAAGvJ,iFAAkC,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;kBAC9F;gBACF;cACA,KAAK,2BAA2B;gBAAE;gBAChCsJ,iBAAiB,GAAGvJ,iFAAkC,CAACzzD,KAAK,CAAC;gBAC7D;YACJ;YAEA,OAAO,KAAK,CAAC,CAAC;UAChB,CAAC,CAAC;QAAA,EAAC;;QACH,IAAI+8D,eAAe,EAAE;UAAE;UACrB,IAAIvD,cAAc,EAAE;YAAE;YACpB6B,SAAS,CAACA,SAAS,CAAC/8D,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,yBAAyB,EAAEy+D,eAAe,CAAC;UAChF,CAAC,MAAM;YAAE;YACP1B,SAAS,CAAChqD,IAAI,CAAC,CAAC,yBAAyB,EAAE0rD,eAAe,CAAC,CAAC;YAC5DvD,cAAc,GAAG,IAAI;UACvB;QACF;QACA,IAAIyD,aAAa,EAAE;UACjB5B,SAAS,CAACrqD,MAAM,CAAC,CAAC,EAAEisD,aAAa,CAAC,CAAC,CAAC;UACpCD,iBAAiB,IAAI3B,SAAS,CAACp+C,OAAO,CAAC,CAAC,2BAA2B,EAAE+/C,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC5F;;QAEA,IAAII,WAAW,GAAG,EAAE;QACpB,IAAIC,aAAa,GAAG,EAAE;QACtB,IAAI,CAACpE,QAAQ,IAAIC,SAAS,KAAKjK,EAAE,CAACvB,SAAS,IAAI,OAAOuB,EAAE,CAACvB,SAAS,KAAK,QAAQ,EAAE;UAC/E;UACA,IAAIviC,OAAO,GAAG8jC,EAAE,CAACvB,SAAS,CAACr/C,KAAK,CAACwmD,6DAAmB,CAAC;UACrD,IAAI1pC,OAAO,EAAE;YACXiyC,WAAW,GAAGjyC,OAAO,CAAC,CAAC,CAAC;UAC1B;;UAEA;UACAA,OAAO,GAAG8jC,EAAE,CAACvB,SAAS,CAACr/C,KAAK,CAACqgD,+CAAO,CAACqD,YAAY,CAAC;UAClD,IAAI5mC,OAAO,EAAE;YACXkyC,aAAa,GAAGlyC,OAAO,CAAC,CAAC,CAAC;UAC5B;QACF;QAEA,IAAI2jC,KAAK,GAAG,EAAE,CAAC,CAAC;QAChB,IAAIwO,OAAO,GAAGpE,SAAS;QACvBoE,OAAO,IAAIrQ,gDAAQ,CAACmK,KAAK,CAAC,OAAO,EAAE,YAAM;UACvCkG,OAAO,GAAG,KAAK;UACfrQ,gDAAQ,CAACoK,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC;QACFgE,SAAS,CAACp6C,OAAO,CAAC,UAAAs8C,KAAA;UAAA,IAAAC,MAAA,GAAA5pD,cAAA,CAAA2pD,KAAA;YAAEvwD,GAAG,GAAAwwD,MAAA;YAAEx9D,KAAK,GAAAw9D,MAAA;UAAA,OAAMzF,KAAI,CAAC0D,IAAI,CAAC,YAAM;YAClD,IAAMgC,QAAQ,GAAGz9D,KAAK;YACtB,IAAI09D,SAAS,GAAG,KAAK;;YAErB;YACA,IAAMrE,SAAS,GAAGzD,yDAAe,CAACC,QAAQ,CAAC5kD,OAAO,CAACjE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAMmtD,YAAY,GAAGvE,yDAAe,CAACE,WAAW,CAAC7kD,OAAO,CAACjE,GAAG,CAAC,GAAG,CAAC,CAAC;YAClE,IAAM2wD,YAAY,GAAG/H,yDAAe,CAACG,UAAU,CAAC9kD,OAAO,CAACjE,GAAG,CAAC;YAC5D,IAAM6sD,aAAa,GAAGjE,yDAAe,CAACI,YAAY,CAAC/kD,OAAO,CAACjE,GAAG,CAAC,GAAG,CAAC,CAAC;YACpE,IAAM4wD,UAAU,GAAG,UAAU,CAACp2C,IAAI,CAACxnB,KAAK,CAAC;YACzC,IAAM69D,cAAc,GAAG,EAAE;YACzB,IAAIzE,QAAQ,GAAG,EAAE;YACjB,IAAI0E,gBAAgB;;YAEpB;YACA99D,KAAK,GAAGszD,6DAAc,CAACtzD,KAAK,EAAE49D,UAAU,CAAC,CAAC,CAAC;;YAE3C,IAAIjK,sDAAY,CAACnsC,IAAI,CAACxnB,KAAK,CAAC,EAAE;cAC5B,IAAI49D,UAAU,EAAE;gBACd;gBACA,IAAIzyC,QAAO,GAAGmrC,6DAAmB,CAACpY,IAAI,CAACl+C,KAAK,CAAC;gBAC7C,OAAOmrB,QAAO,EAAE;kBACd0yC,cAAc,CAACxsD,IAAI,CAAC8Z,QAAO,CAAC,CAAC,CAAC,CAAC;kBAC/BA,QAAO,GAAGmrC,6DAAmB,CAACpY,IAAI,CAACl+C,KAAK,CAAC;gBAC3C;;gBAEA;gBACA89D,gBAAgB,GAAGlK,wDAAS,CAACiK,cAAc,CAAC;cAC9C;cACA,IAAIE,YAAY,GAAG,CAAC;cACpB/9D,KAAK,GAAGA,KAAK,CAAC6mB,OAAO,CAACyvC,6DAAmB,EAAE,UAAAjoD,KAAK,EAAI;gBAClD;gBACA,IAAIuvD,UAAU,EAAE;kBACdvvD,KAAK,GAAGyvD,gBAAgB;kBACxBJ,SAAS,GAAG,IAAI;gBAClB;gBAEA,IAAMM,UAAU,GAAG7K,0DAAW,CAAC9kD,KAAK,CAAC;gBACrC,IAAI,CAAA2vD,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEnvD,KAAK,CAAC,CAAC,KAAI0mD,sDAAY,EAAE;kBAAE;kBACzC;kBACA,IAAMv3C,GAAG,GAAG+5C,KAAI,CAACiB,iBAAiB,CAACgF,UAAU,EAAE/O,EAAE,EAAE;oBACjDoK,SAAS,EAATA,SAAS;oBACTc,YAAY,EAAZA,YAAY;oBACZR,WAAW,EAAEgE,YAAY,GAAG,CAAC,CAAC;oBAC9B9D,aAAa,EAAbA,aAAa;oBACbL,cAAc,EAAdA;kBACF,CAAC,EAAEP,QAAQ,EAAEC,SAAS,CAAC;kBACvB,IAAM+E,QAAQ,GAAG,CAAC7B,wBAAwB,IAAIp+C,GAAG,CAACm7C,QAAQ;kBAE1DC,QAAQ,IAAIp7C,GAAG,CAACo7C,QAAQ;;kBAExB;kBACA,IAAIC,SAAS,IAAIsE,YAAY,IAAI,CAAC,EAAE;oBAAE;oBACpC,IAAMO,WAAW,GAAGD,QAAQ,GAAGA,QAAQ,CAACruD,QAAQ,CAAC,CAAC,GAAGvB,KAAK;oBAC1D0vD,YAAY,KAAK,CAAC,IAAI/N,kEAAgB,CAACf,EAAE,CAAC,CAAChuC,OAAO,CAAC,UAAAq4C,GAAG,EAAI;sBACxD,IAAID,SAAS,EAAE;wBACbC,GAAG,CAAC5J,qDAAW,CAAC,GAAGwO,WAAW;wBAC9B5E,GAAG,CAAC1J,8DAAoB,CAAC,GAAG,CAAC0J,GAAG,CAAC1J,8DAAoB,CAAC,IAAIvC,+CAAM,CAACkH,mBAAmB,EAAExwC,KAAK,CAACixC,4DAAkB,CAAC,CAACpjD,MAAM,CAACvD,KAAK,CAAC,CAACiC,IAAI,CAAC0kD,4DAAkB,CAAC;sBACxJ,CAAC,MAAM;wBACLsE,GAAG,CAAC7J,mDAAS,CAAC,GAAGyO,WAAW;wBAC5B5E,GAAG,CAAC3J,4DAAkB,CAAC,GAAGthD,KAAK;sBACjC;;sBAEA;sBACA,IAAM4vD,QAAQ,GAAG9K,0DAAW,CAAC+K,WAAW,CAAC;sBACzC,IAAI7E,SAAS,IAAI,CAAA4E,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEpvD,KAAK,CAAC,CAAC,KAAI0mD,sDAAY,IAAI+D,GAAG,CAACzJ,qDAAW,CAAC,EAAE;wBACtE,OAAOyJ,GAAG,CAACzJ,qDAAW,CAAC;sBACzB;oBACF,CAAC,CAAC;kBACJ;kBAEAoO,QAAQ,KAAKP,SAAS,GAAG,IAAI,CAAC;kBAC9BK,YAAY,EAAE;kBACd,OAAOE,QAAQ,IAAI5vD,KAAK;gBAC1B;gBACA,OAAOA,KAAK;cACd,CAAC,CAAC,CAACwY,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACtC;YAEAuyC,QAAQ,KAAKtK,KAAK,IAAIsK,QAAQ,CAAC;YAE/B,IAAI,EAAEnK,EAAE,YAAYkP,UAAU,CAAC,EAAE;cAAE;cACjC;cACA,IAAMC,gBAAgB,GAAG,aAAa,CAAC52C,IAAI,CAACxa,GAAG,CAAC;cAChD,IAAMqxD,iBAAiB,GAAG,0BAA0B,CAAC72C,IAAI,CAACxa,GAAG,CAAC;cAC9D,IAAI,CAACoxD,gBAAgB,IAAIC,iBAAiB,KAAK,eAAe,CAAC72C,IAAI,CAACxnB,KAAK,CAAC,EAAE;gBAC1E09D,SAAS,GAAG,IAAI;gBAChB,IAAMY,UAAU,GAAG1K,wDAAS,CAAC,CAAC3E,EAAE,CAACW,8DAAoB,CAAC,IAAIvC,+CAAM,CAACkH,mBAAmB,EAAExwC,KAAK,CAACixC,4DAAkB,CAAC,EAAE,QAAQ,CAAC,CAACplD,QAAQ,CAAC,CAAC;gBACrI;;gBAEA;gBACA;gBACA;gBACA5P,KAAK,GAAGA,KAAK,CAAC6mB,OAAO,CAAC,4BAA4B,EAAE,UAAAsE,OAAO,EAAI;kBAC7D,IAAIuoC,QAAQ,GAAGvoC,OAAO;kBACtB,IAAIozC,WAAW,GAAG,EAAE;kBAEpB,IAAI,CAACtP,EAAE,CAACY,qDAAW,CAAC,EAAE;oBAAE;oBACtBG,kEAAgB,CAACf,EAAE,CAAC,CAAChuC,OAAO,CAAC,UAAAq4C,GAAG,EAAI;sBAClCA,GAAG,CAACzJ,qDAAW,CAAC,GAAG,IAAI;oBACzB,CAAC,CAAC;kBACJ;;kBAEA;kBACA,IAAIuO,gBAAgB,EAAE;oBACpBG,WAAW,GAAGtR,gDAAQ,CAACuJ,QAAQ,CAACxpD,GAAG,EAAEsxD,UAAU,MAAA1sD,MAAA,CAAM8hD,QAAQ,uBAAA9hD,MAAA,CAAoB0sD,UAAU,QAAA1sD,MAAA,CAAK0sD,UAAU,SAAM5K,QAAQ,CAAC;oBACzH,IAAI2I,wBAAwB,EAAE;sBAC5BvN,KAAK,IAAI7B,gDAAQ,CAACuJ,QAAQ,CAAC,qBAAqB,EAAE6F,wBAAwB,CAAC;sBAC3EkC,WAAW,IAAItR,gDAAQ,CAACuJ,QAAQ,CAAC,qBAAqB,EAAE8H,UAAU,MAAA1sD,MAAA,CAAMyqD,wBAAwB,iBAAcA,wBAAwB,CAAC;oBACzI;oBACA,IAAIC,oBAAoB,EAAE;sBACxBxN,KAAK,IAAI7B,gDAAQ,CAACuJ,QAAQ,CAAC,iBAAiB,EAAE8F,oBAAoB,CAAC;sBACnEiC,WAAW,IAAItR,gDAAQ,CAACuJ,QAAQ,CAAC,iBAAiB,EAAE8H,UAAU,MAAA1sD,MAAA,CAAM0qD,oBAAoB,aAAUA,oBAAoB,CAAC;oBACzH;oBACA,IAAI,CAACpD,SAAS,EAAE;sBACd,IAAImE,aAAa,EAAE;wBAAE;wBACnBvB,KAAK,IAAI7O,gDAAQ,CAAC4B,MAAM,CAACwO,aAAa,EAAEkB,WAAW,CAAC;wBACpDvO,kEAAgB,CAACf,EAAE,CAAC,CAAChuC,OAAO,CAAC,UAAAq4C,GAAG,EAAI;0BAClCA,GAAG,CAACxJ,wEAA8B,CAAC,GAAGwO,UAAU,IAAI5K,QAAQ;wBAC9D,CAAC,CAAC;sBACJ,CAAC,MAAM;wBAAE;wBACPhF,+CAAO,CAACr9C,IAAI,CAAC49C,EAAE,EAAEsP,WAAW,EAAE,UAAAC,WAAW,EAAI;0BAC3C,IAAMzP,GAAG,GAAG,CAACyP,WAAW,CAACxP,KAAK,CAAC;0BAC/BwP,WAAW,CAACvP,EAAE,KAAKuP,WAAW,CAACxP,KAAK,IAAID,GAAG,CAAC19C,IAAI,CAACmtD,WAAW,CAACvP,EAAE,CAAC;0BAChEF,GAAG,CAAC9tC,OAAO,CAAC,UAAAw9C,IAAI,EAAI;4BAAE;4BACpBzO,kEAAgB,CAACyO,IAAI,CAAC,CAACx9C,OAAO,CAAC,UAAAq4C,GAAG,EAAI;8BACpCA,GAAG,CAACxJ,wEAA8B,CAAC,GAAGwO,UAAU,IAAI5K,QAAQ;4BAC9D,CAAC,CAAC;0BACJ,CAAC,CAAC;wBACJ,CAAC,CAAC;sBACJ;oBACF;kBACF,CAAC,MAAM;oBACL;oBACA,IAAI4K,UAAU,IAAI,CAACnC,mBAAmB,IAAI,CAACjD,SAAS,EAAE;sBACpDqF,WAAW,GAAGtR,gDAAQ,CAACuJ,QAAQ,CAAC,kBAAkB,qBAAA5kD,MAAA,CAAqB0sD,UAAU,QAAA1sD,MAAA,CAAK0sD,UAAU,MAAG,CAAC;sBACpG,IAAIjB,aAAa,EAAE;wBAAE;wBACnBvB,KAAK,IAAI7O,gDAAQ,CAAC4B,MAAM,CAACwO,aAAa,EAAEkB,WAAW,CAAC;sBACtD,CAAC,MAAM;wBAAE;wBACP7P,+CAAO,CAACr9C,IAAI,CAAC49C,EAAE,EAAEsP,WAAW,CAAC,CAAC,CAAC;sBACjC;oBACF;kBACF;;kBACA,OAAO7K,QAAQ;gBACjB,CAAC,CAAC;;gBAEF;gBACA,IAAI,CAAC8F,cAAc,EAAE;kBACnB,IAAMY,SAAS,GAAGnL,EAAE,CAACU,4DAAkB,CAAC,IAAItC,+CAAM,CAACgH,qBAAqB;kBACxEvF,KAAK,IAAI7B,gDAAQ,CAACuJ,QAAQ,CAAC,OAAO,EAAE4D,SAAS,CAAC;kBAC9CpK,kEAAgB,CAACf,EAAE,CAAC,CAAChuC,OAAO,CAAC,UAAAq4C,GAAG,EAAI;oBAClCA,GAAG,CAAC7J,mDAAS,CAAC,GAAG2K,SAAS;kBAC5B,CAAC,CAAC;gBACJ;cACF;YACF;YAEA,IAAIsD,SAAS,IAAIxE,SAAS,EAAE;cAC1B,CAACD,QAAQ,IAAI,CAACC,SAAS,IAAI1F,0DAAgB,CAAChsC,IAAI,CAACi2C,QAAQ,CAAC,KAAKhM,MAAM,CAACzkD,GAAG,CAAC,GAAGywD,QAAQ,CAAC52C,OAAO,CAAC2sC,0DAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;cACtH,IAAIoK,UAAU,EAAE;gBACd,IAAI,CAAC1E,SAAS,EAAE;kBACd,IAAImE,aAAa,EAAE;oBAAE;oBACnBvB,KAAK,IAAI7O,gDAAQ,CAAC4B,MAAM,CAACwO,aAAa,EAAEpQ,gDAAQ,CAACuJ,QAAQ,CAACxpD,GAAG,EAAEhN,KAAK,CAAC,CAAC;oBACtE,IAAK,aAAa,CAACwnB,IAAI,CAACxa,GAAG,CAAC,IAAI,CAAC,eAAe,CAACwa,IAAI,CAACxnB,KAAK,CAAC,EAAG;sBAAE;sBAC/D42D,GAAG,IAAImB,KAAI,CAACoD,qBAAqB,CAAC2C,gBAAgB,EAAE7O,EAAE,EAAEoO,aAAa,EAAEhC,SAAS,EAAE7B,cAAc,EAAEP,QAAQ,EAAEC,SAAS,CAAC;oBACxH;kBACF,CAAC,MAAM;oBAAE;oBACPxK,+CAAO,CAACr9C,IAAI,CAAC49C,EAAE,EAAEhC,gDAAQ,CAACuJ,QAAQ,CAACxpD,GAAG,EAAEhN,KAAK,CAAC,EAAE,UAAA+wD,IAAI,EAAI;sBAAE;sBACxD,IAAK,aAAa,CAACvpC,IAAI,CAACxa,GAAG,CAAC,IAAI,CAAC,eAAe,CAACwa,IAAI,CAACxnB,KAAK,CAAC,EAAG;wBAAE;wBAC/D42D,GAAG,IAAImB,KAAI,CAACoD,qBAAqB,CAAC2C,gBAAgB,EAAE7O,EAAE,EAAE8B,IAAI,CAACrD,SAAS,EAAE2N,SAAS,EAAE7B,cAAc,EAAEP,QAAQ,EAAEC,SAAS,CAAC;sBACzH;oBACF,CAAC,CAAC;kBACJ;gBACF;cACF,CAAC,MAAM;gBACL,IAAIlsD,GAAG,KAAK,OAAO,EAAE;kBACnBswD,OAAO,GAAG,KAAK;kBACfrQ,gDAAQ,CAACoK,OAAO,CAAC,OAAO,CAAC;gBAC3B;gBACAvI,KAAK,IAAI7B,gDAAQ,CAACuJ,QAAQ,CAACxpD,GAAG,EAAG,CAAC0wD,SAAS,IAAIxE,SAAS,GAAIjK,EAAE,CAACriC,KAAK,CAAC5f,GAAG,CAAC,GAAGhN,KAAK,CAAC;cACpF;YACF;UACF,CAAC,CAAC;QAAA,EAAC;QACH,IAAIs9D,OAAO,EAAE;UACXxO,KAAK,IAAI7B,gDAAQ,CAACuJ,QAAQ,CAAC,OAAO,EAAEvH,EAAE,CAACriC,KAAK,CAACxsB,KAAK,IAAI6uD,EAAE,CAACQ,mDAAS,CAAC,IAAIpC,+CAAM,CAACoH,oBAAoB,CAAC;UACnGxH,gDAAQ,CAACoK,OAAO,CAAC,OAAO,CAAC;QAC3B;QAEA,IAAIvI,KAAK,EAAE;UAAE;UACX,IAAI,CAACsO,WAAW,EAAE;YAChBA,WAAW,MAAAxrD,MAAA,CAAM+6C,sDAAY,EAAA/6C,MAAA,CAAG,IAAI,CAACogD,IAAI,EAAE,CAAE;YAC7C/C,EAAE,CAACgC,SAAS,CAACjwC,GAAG,CAACo8C,WAAW,CAAC;UAC/B;UACAxG,GAAG,IAAK9H,KAAK,GAAG7B,gDAAQ,CAAC4B,MAAM,CAACuO,WAAW,EAAEtO,KAAK,CAAC,GAAG,EAAG;QAC3D;QAEA8H,GAAG,IAAIkF,KAAK,CAAC,CAAC;;QAEd,IAAI,CAAC7C,QAAQ,IAAIzB,6DAAW,CAACvI,EAAE,CAAC,IAAI,CAACiK,SAAS,EAAE;UAAE;UAChD,IAAI7L,+CAAM,CAACiD,YAAY,EAAE;YAAE;YACzB9B,+CAAO,CAACn9C,IAAI,CAAC49C,EAAE,CAAC,CAAC,CAAC;UACpB,CAAC,MAAM;YACLP,+CAAO,CAACC,QAAQ,CAACM,EAAE,EAAE,UAAA8B,IAAI,EAAI;cAC3B6F,GAAG,IAAI3J,gDAAQ,CAAC4B,MAAM,CAACkC,IAAI,CAACrD,SAAS,EAAEqD,IAAI,CAACjC,KAAK,CAAC;cAClD,OAAOiC,IAAI,CAAC3kB,EAAE,KAAK,UAAU,IAAI2kB,IAAI,CAAC3kB,EAAE,CAAC2kB,IAAI,CAAC;YAChD,CAAC,CAAC;UACJ;QACF;MACF;MAEApD,+CAAO,CAAC+K,IAAI,oBAAA9mD,MAAA,CAAoBooD,cAAc,GAAI/K,EAAE,CAAC;MAErD,OAAO2H,GAAG;IACZ;;IAEA;EAAA;IAAA5pD,GAAA;IAAAhN,KAAA,EACA,SAAA0xD,YAAYgN,SAAS,EAAEC,SAAS,EAAE;MAChC,IAAMjpD,MAAM,GAAGy9C,0DAAW,CAACuL,SAAS,CAAC;MACrC,IAAMvqD,MAAM,GAAGg/C,0DAAW,CAACwL,SAAS,CAAC;MACrC,OAAQjpD,MAAM,IAAIvB,MAAM,GAAIuB,MAAM,CAACxB,QAAQ,CAACC,MAAM,CAAC,GAAG,CAAC;IACzD;EAAC;EAAA,OAAAikD,GAAA;AAAA;AAtlBqB;AAulBvB,C;;;;;;;;;;;;;;;;;;;;AC1qBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAC8B;AAAA,IAETD,aAAa;EACnB;EACH;;EAEV,SAAAA,cAAYzqD,MAAM,EAAE;IAAAmT,eAAA,OAAAs3C,aAAA;IAAA91C,eAAA,iBAHX,EAAE;IAAAA,eAAA,eACJ,CAAC;IAGN,IAAI,CAACyvC,OAAO,GAAGpkD,MAAM;EACvB;;EAEA;EAAAoT,YAAA,CAAAq3C,aAAA;IAAAnrD,GAAA;IAAAQ,GAAA,EACA,SAAAA,IAAA,EAAa;MACX,OAAO,IAAI,CAACoxD,MAAM,CAACtgE,MAAM;IAC3B;;IAEA;EAAA;IAAA0O,GAAA;IAAAhN,KAAA,EACA,SAAAqR,KAAK49C,EAAE,EAAE;MACP,IAAMvB,SAAS,MAAA97C,MAAA,CAAM,IAAI,CAACkgD,OAAO,EAAAlgD,MAAA,CAAG,IAAI,CAACogD,IAAI,EAAE,CAAE;MACjD/C,EAAE,CAACgC,SAAS,CAACjwC,GAAG,CAAC0sC,SAAS,CAAC;MAC3B,IAAI,CAACkR,MAAM,CAACvtD,IAAI,CAAC;QACf49C,EAAE,EAAFA,EAAE;QACFvB,SAAS,EAATA,SAAS;QACTwE,OAAO,EAAE,CAAC7E,+CAAM,CAACiD;MACnB,CAAC,CAAC;IACJ;;IAEA;EAAA;IAAAtjD,GAAA;IAAAhN,KAAA,EACA,SAAAihB,QAAQhiB,QAAQ,EAAE;MAChB,IAAMkzD,QAAQ,GAAG,EAAE;MAEnB,IAAI,CAACyM,MAAM,CAAC39C,OAAO,CAAC,UAAC8vC,IAAI,EAAEwB,GAAG,EAAK;QACjC,IAAIxB,IAAI,CAACmB,OAAO,EAAE;UAChBC,QAAQ,CAACl1C,OAAO,CAACs1C,GAAG,CAAC;UACrB98C,OAAA,CAAOxW,QAAQ,KAAIA,QAAQ,CAAC8xD,IAAI,CAAC9B,EAAE,CAAC;QACtC;MACF,CAAC,CAAC;MAEF,OAAOkD,QAAQ,CAAC7zD,MAAM,EAAE;QAAE;QACxB,IAAI,CAACsgE,MAAM,CAAC5tD,MAAM,CAACmhD,QAAQ,CAACrsC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;MACzC;IACF;;IAEA;EAAA;IAAA9Y,GAAA;IAAAhN,KAAA,EACA,SAAAuxD,OAAOxC,GAAG,EAAE;MACV,IAAI,CAAC6P,MAAM,CAAC39C,OAAO,CAAC,UAAA8vC,IAAI,EAAI;QAC1B,IAAI,CAACA,IAAI,CAACmB,OAAO,EAAE;UACjB1iD,KAAK,CAACxR,SAAS,CAACqtB,IAAI,CAACvtB,IAAI,CAACixD,GAAG,EAAE,UAAAE,EAAE,EAAI;YACnC,IAAIA,EAAE,CAACuD,QAAQ,KAAK,CAAC,IAAIvD,EAAE,CAACgC,SAAS,CAACtC,QAAQ,CAACoC,IAAI,CAACrD,SAAS,CAAC,EAAE;cAC9DqD,IAAI,CAAC9B,EAAE,GAAGA,EAAE;cACZ8B,IAAI,CAACmB,OAAO,GAAG,IAAI;cACnB,OAAO,IAAI;YACb;YACA,OAAO,KAAK;UACd,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ;EAAC;EAAA,OAAAiG,aAAA;AAAA;AAtD+B;AAuDjC,C;;;;;;;;;;;AClFD,e","file":"darkmode.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Darkmode\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Darkmode\"] = factory();\n\telse\n\t\troot[\"Darkmode\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/darkmode.js\");\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","import { ChannelBlender, RGB, RGBA } from './types'\n\n/**\n * Blend two colors in a separable way (i.e. each color channel individually)\n *\n * @param backdrop The RGBA backdrop color\n * @param source The RGBA source color\n * @param callback The blend mode callback to apply\n */\nexport default function separableBlend(\n backdrop: RGBA,\n source: RGBA,\n callback: ChannelBlender\n): RGB {\n return {\n r: callback(backdrop.r / 255, source.r / 255) * 255,\n g: callback(backdrop.g / 255, source.g / 255) * 255,\n b: callback(backdrop.b / 255, source.b / 255) * 255\n }\n}\n","/**\n * Algorithms for separable blend modes (i.e. where the same algorithms is applied to each color channel)\n * @see https://www.w3.org/TR/compositing-1/#blendingseparable\n */\n\n/**\n * Blend two color channels with the \"normal\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\n// @ts-ignore the unused first parameter to comply with the interface\nexport function normal(backdrop: number, source: number) {\n return source\n}\n\n/**\n * Blend two color channels with the \"multiply\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function multiply(backdrop: number, source: number) {\n return backdrop * source\n}\n\n/**\n * Blend two color channels with the \"screen\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function screen(backdrop: number, source: number) {\n return backdrop + source - backdrop * source\n}\n\n/**\n * Blend two color channels with the \"overlay\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function overlay(backdrop: number, source: number) {\n return hardLight(source, backdrop)\n}\n\n/**\n * Blend two color channels with the \"darken\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function darken(backdrop: number, source: number) {\n return Math.min(backdrop, source)\n}\n\n/**\n * Blend two color channels with the \"lighten\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function lighten(backdrop: number, source: number) {\n return Math.min(Math.max(backdrop, source), 1)\n}\n\n/**\n * Blend two color channels with the \"color dodge\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function colorDodge(backdrop: number, source: number) {\n return backdrop === 0\n ? 0\n : source === 1\n ? 1\n : Math.min(1, backdrop / (1 - source))\n}\n\n/**\n * Blend two color channels with the \"color burn\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function colorBurn(backdrop: number, source: number) {\n return backdrop === 1\n ? 1\n : source === 0\n ? 0\n : 1 - Math.min(1, (1 - backdrop) / source)\n}\n\n/**\n * Blend two color channels with the \"hard light\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function hardLight(backdrop: number, source: number) {\n return source <= 0.5\n ? multiply(backdrop, 2 * source)\n : screen(backdrop, 2 * source - 1)\n}\n\n/**\n * Blend two color channels with the \"soft light\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function softLight(backdrop: number, source: number) {\n return source <= 0.5\n ? backdrop - (1 - 2 * source) * backdrop * (1 - backdrop)\n : backdrop +\n (2 * source - 1) *\n ((backdrop <= 0.25\n ? ((16 * backdrop - 12) * backdrop + 4) * backdrop\n : Math.sqrt(backdrop)) -\n backdrop)\n}\n\n/**\n * Blend two color channels with the \"difference\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function difference(backdrop: number, source: number) {\n return Math.abs(backdrop - source)\n}\n\n/**\n * Blend two color channels with the \"exclusion\" blend mode\n *\n * @param backdrop The background color channel as an integer from 0 to 255\n * @param source The foreground color channel as an integer from 0 to 255\n * @return The blended channel value\n */\nexport function exclusion(backdrop: number, source: number) {\n return backdrop + source - 2 * backdrop * source\n}\n","import { ChannelBlender, NoAlphaBlender, RGB, RGBA } from './types'\n\n// Some utility (no actual blend-related algorithms) for color handling\n\n/**\n * Restricts a number to given boundaries\n * @param value The number to restrict\n * @param from The lower boundary\n * @param to The upper boundary\n * @return The restricted value\n */\nfunction restrictNumber(value: number, from: number, to: number) {\n return Math.min(Math.max(value || 0, from), to)\n}\n\n/**\n * Restricts an { r,g,b,a } color to its boundaries (0..255 color channels, 0..1 alpha channel)\n * @param color The { r,g,b,a } color to restrict\n * @return The restricted color\n */\nfunction restrictColor(color: RGBA): RGBA {\n return {\n r: restrictNumber(color.r, 0, 255),\n g: restrictNumber(color.g, 0, 255),\n b: restrictNumber(color.b, 0, 255),\n a: restrictNumber(color.a, 0, 1)\n }\n}\n\n/**\n * Converts a color from unit color channels [0..1] to 8-bit color channels [0..255]\n * @param color The { r,g,b,a } color to convert\n * @return The { r,g,b,a } with 8-bit color channels\n */\nexport function convertFromUnit(color: RGBA): RGBA\nexport function convertFromUnit(color: RGB): RGB\nexport function convertFromUnit(color: any): RGB | RGBA {\n return {\n r: color.r * 255,\n g: color.g * 255,\n b: color.b * 255,\n a: color.a\n }\n}\n\n/**\n * Converts a color from 8-bit color channels [0..255] to unit color channels [0..1]\n * @param color The { r,g,b,a } color to convert\n * @return The { r,g,b,a } with unit color channels\n */\nexport function convertToUnit(color: RGBA): RGBA\nexport function convertToUnit(color: RGB): RGB\nexport function convertToUnit(color: any): RGB | RGBA {\n return {\n r: color.r / 255,\n g: color.g / 255,\n b: color.b / 255,\n a: color.a\n }\n}\n\n/**\n * Rounds the color channels of an RGBA color\n * @param color The { r,g,b,a } color to handle\n * @param precision How many decimals? Defaults to 0\n * @return The { r,g,b,a } with rounded color channels\n */\nfunction roundChannels(color: RGBA, precision?: number): RGBA\nfunction roundChannels(color: RGB, precision?: number): RGB\nfunction roundChannels(color: any, precision: number = 0): RGB | RGBA {\n const multiplier = Math.pow(10, precision)\n\n return {\n r: Math.round(color.r * multiplier) / multiplier,\n g: Math.round(color.g * multiplier) / multiplier,\n b: Math.round(color.b * multiplier) / multiplier,\n a: color.a\n }\n}\n\n/**\n * Rounds the color channels of an RGBA color with high precision to aviod IEEE 754 related issues\n * @param color The { r,g,b,a } color to handle\n * @return The { r,g,b,a } with rounded color channels\n */\nfunction roundChannelsBinaryFloat(color: RGBA): RGBA {\n return roundChannels(color, 9)\n}\n\n/**\n * Applies the appropriate alpha blending to a blend process.\n * @see https://www.w3.org/TR/compositing-1/#blending\n * @param backdropAlpha The alpha channel of the backdrop color [0..1]\n * @param sourceAlpha The alpha channel of the source color [0..1]\n * @param compositeAlpha The alpha channel of the composite color [0..1]\n * @param backdropColor A color channel (R, G or B) of the backdrop color [0..255]\n * @param sourceColor A color channel (R, G or B) of the source color [0..255]\n * @param compositeColor A color channel (R, G or B) of the composite color [0..255]\n * @return The resulting color channel\n */\nfunction alphaCompose(\n backdropAlpha: number,\n sourceAlpha: number,\n compositeAlpha: number,\n backdropColor: number,\n sourceColor: number,\n compositeColor: number\n) {\n return (\n (1 - sourceAlpha / compositeAlpha) * backdropColor +\n (sourceAlpha / compositeAlpha) *\n Math.round(\n (1 - backdropAlpha) * sourceColor + backdropAlpha * compositeColor\n )\n )\n}\n\nexport interface BlendOptions {\n unitInput: boolean\n unitOutput: boolean\n roundOutput: boolean\n}\n\n/**\n * Blend two colors\n * All RGBA objects are { r,g,b,a } with [0..255] for RGB and [0..1] for alpha\n * @param source The { r,g,b,a } color to be put on top\n * @param backdrop The { r,g,b,a } color to be put below the source\n * @param abstractModeCallback The abstract blend mode function (separable vs. non-separable)\n * @param concreteModeCallback The concrete blend mode function (normal, multiply, ...)\n * @param options The options to apply\n * @return The { r,g,b,a } result object, channel values are not rounded\n */\nexport function performBlend(\n backdrop: RGBA,\n source: RGBA,\n abstractModeCallback: (\n backdrop: RGBA,\n source: RGBA,\n concreteModeCallback: ChannelBlender\n ) => RGB,\n concreteModeCallback: ChannelBlender,\n options?: Partial<BlendOptions>\n): RGBA\nexport function performBlend(\n backdrop: RGBA,\n source: RGBA,\n abstractModeCallback: (\n backdrop: RGBA,\n source: RGBA,\n concreteModeCallback: NoAlphaBlender\n ) => RGB,\n concreteModeCallback: NoAlphaBlender,\n options?: Partial<BlendOptions>\n): RGBA\nexport function performBlend(\n backdrop: RGBA,\n source: RGBA,\n abstractModeCallback: (\n backdrop: RGBA,\n source: RGBA,\n concreteModeCallback: any\n ) => RGB,\n concreteModeCallback: ChannelBlender | NoAlphaBlender,\n options: Partial<BlendOptions> = {\n unitInput: false,\n unitOutput: false,\n roundOutput: true\n }\n) {\n // Handle unit input if needed\n if (options.unitInput) {\n backdrop = convertFromUnit(backdrop)\n source = convertFromUnit(source)\n }\n\n // Remove out-of-bounds values\n backdrop = restrictColor(backdrop)\n source = restrictColor(source)\n\n // Calculate resulting alpha\n const a = source.a + backdrop.a - source.a * backdrop.a\n\n // Calculate resulting RGB\n const resultRGB = abstractModeCallback(backdrop, source, concreteModeCallback)\n\n // Calculate actual RGBs from backdrop, source and result + alpha values\n // Since blending may result in out-of-bounds color channels, cut those\n let resultRGBA = restrictColor({\n r: alphaCompose(backdrop.a, source.a, a, backdrop.r, source.r, resultRGB.r),\n g: alphaCompose(backdrop.a, source.a, a, backdrop.g, source.g, resultRGB.g),\n b: alphaCompose(backdrop.a, source.a, a, backdrop.b, source.b, resultRGB.b),\n a: a\n })\n\n // Convert color channels to unit values if needed\n if (options.unitOutput) {\n resultRGBA = convertToUnit(resultRGBA)\n\n // Round 8-bit color channels if needed\n } else if (options.roundOutput) {\n resultRGBA = roundChannels(resultRGBA)\n\n // Round anyways to get rid of JavaScript floating point issues\n } else {\n resultRGBA = roundChannelsBinaryFloat(resultRGBA)\n }\n\n return resultRGBA\n}\n","import { convertFromUnit, convertToUnit } from './helpers'\nimport { NoAlphaBlender, RGBA } from './types'\n\n/**\n * Blend two colors in a non-separable way\n *\n * @param backdrop The background color as an { r,g,b,a } object\n * @param source The foreground color as an { r,g,b,a } object\n * @param callback The blend mode callback to apply\n */\nexport default function nonSeparableBlend(\n backdrop: RGBA,\n source: RGBA,\n callback: NoAlphaBlender\n) {\n return convertFromUnit(\n callback(convertToUnit(backdrop), convertToUnit(source))\n )\n}\n","/**\n * Algorithms for non-separable blend modes (based on HSV/HSL color space)\n * @see https://www.w3.org/TR/compositing-1/#blendingnonseparable\n */\n\nimport { RGB } from './types'\n\n/**\n * Get the luminosity of a color\n *\n * @param rgb The color as an { r,g,b } object with each channel as a fraction\n */\nfunction getLuminosity(rgb: RGB) {\n return 0.3 * rgb.r + 0.59 * rgb.g + 0.11 * rgb.b\n}\n\n/**\n * Clip the channels of a color\n *\n * @param rgb The color as an { r,g,b } object with each channel as a fraction\n */\nfunction clipColor(rgb: RGB): RGB {\n const luminosity = getLuminosity(rgb)\n let { r, g, b } = rgb\n\n const lowestChannel = Math.min(r, g, b)\n const highestChannel = Math.max(r, g, b)\n\n function clipLowest(channel: number) {\n return (\n luminosity +\n ((channel - luminosity) * luminosity) / (luminosity - lowestChannel)\n )\n }\n\n function clipHighest(channel: number) {\n return (\n luminosity +\n ((channel - luminosity) * (1 - luminosity)) /\n (highestChannel - luminosity)\n )\n }\n\n if (lowestChannel < 0) {\n r = clipLowest(r)\n g = clipLowest(g)\n b = clipLowest(b)\n }\n\n if (highestChannel > 1) {\n r = clipHighest(r)\n g = clipHighest(g)\n b = clipHighest(b)\n }\n\n return { r, g, b }\n}\n\n/**\n * Set luminosity on a color\n *\n * @param rgb The color as an { r,g,b } object with each channel as a fraction\n * @param luminosity The luminosity to apply\n */\nfunction setLuminosity(rgb: RGB, luminosity: number) {\n const delta = luminosity - getLuminosity(rgb)\n\n return clipColor({\n r: rgb.r + delta,\n g: rgb.g + delta,\n b: rgb.b + delta\n })\n}\n\n/**\n * Get the saturation of a color\n *\n * @param rgb The color as an { r,g,b } object with each channel as a fraction\n */\nfunction getSaturation(rgb: RGB) {\n return Math.max(rgb.r, rgb.g, rgb.b) - Math.min(rgb.r, rgb.g, rgb.b)\n}\n\n/**\n * Set saturation on a color\n *\n * @param rgb The color as an { r,g,b } object with each channel as a fraction\n * @param saturation The saturation to apply\n */\nfunction setSaturation(rgb: RGB, saturation: number) {\n const sortedChannels = ['r', 'g', 'b'].sort(\n (a, b) => rgb[a as keyof RGB] - rgb[b as keyof RGB]\n ) as [keyof RGB, keyof RGB, keyof RGB]\n const channelMin = sortedChannels[0]\n const channelMid = sortedChannels[1]\n const channelMax = sortedChannels[2]\n\n const result = {\n r: rgb.r,\n g: rgb.g,\n b: rgb.b\n }\n\n if (result[channelMax] > result[channelMin]) {\n result[channelMid] =\n ((result[channelMid] - result[channelMin]) * saturation) /\n (result[channelMax] - result[channelMin])\n result[channelMax] = saturation\n } else {\n result[channelMid] = result[channelMax] = 0\n }\n\n result[channelMin] = 0\n\n return result\n}\n\n/**\n * Blend two colors with the \"hue\" blend mode\n *\n * @param backdrop The background color channel as an { r,g,b } object with each channel represented as a fraction\n * @param source The foreground color channel as an { r,g,b } object with each channel represented as a fraction\n * @return The blended color\n */\nexport function hue(backdrop: RGB, source: RGB) {\n return setLuminosity(\n setSaturation(source, getSaturation(backdrop)),\n getLuminosity(backdrop)\n )\n}\n\n/**\n * Blend two colors with the \"saturation\" blend mode\n *\n * @param backdrop The background color channel as an { r,g,b } object with each channel represented as a fraction\n * @param source The foreground color channel as an { r,g,b } object with each channel represented as a fraction\n * @return The blended color\n */\nexport function saturation(backdrop: RGB, source: RGB) {\n return setLuminosity(\n setSaturation(backdrop, getSaturation(source)),\n getLuminosity(backdrop)\n )\n}\n\n/**\n * Blend two colors with the \"color\" blend mode\n *\n * @param backdrop The background color channel as an { r,g,b } object with each channel represented as a fraction\n * @param source The foreground color channel as an { r,g,b } object with each channel represented as a fraction\n * @return The blended color\n */\nexport function color(backdrop: RGB, source: RGB) {\n return setLuminosity(source, getLuminosity(backdrop))\n}\n\n/**\n * Blend two colors with the \"luminosity\" blend mode\n *\n * @param backdrop The background color channel as an { r,g,b } object with each channel represented as a fraction\n * @param source The foreground color channel as an { r,g,b } object with each channel represented as a fraction\n * @return The blended color\n */\nexport function luminosity(backdrop: RGB, source: RGB) {\n return setLuminosity(backdrop, getLuminosity(source))\n}\n","import separableBlend from './separable-blend'\nimport * as separableBlendModes from './separable-modes'\n\nimport nonSeparableBlend from './non-separable-blend'\nimport * as nonSeparableBlendModes from './non-separable-modes'\n\nimport { performBlend } from './helpers'\nimport { RGBA } from './types'\n\n/**\n * Blend two colors with the \"normal\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function normal(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.normal\n )\n}\n\n/**\n * Blend two colors with the \"multiply\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function multiply(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.multiply\n )\n}\n\n/**\n * Blend two colors with the \"screen\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function screen(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.screen\n )\n}\n\n/**\n * Blend two colors with the \"overlay\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function overlay(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.overlay\n )\n}\n\n/**\n * Blend two colors with the \"darken\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function darken(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.darken\n )\n}\n\n/**\n * Blend two colors with the \"lighten\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function lighten(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.lighten\n )\n}\n\n/**\n * Blend two colors with the \"color dodge\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function colorDodge(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.colorDodge\n )\n}\n\n/**\n * Blend two colors with the \"color burn\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function colorBurn(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.colorBurn\n )\n}\n\n/**\n * Blend two colors with the \"hard light\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function hardLight(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.hardLight\n )\n}\n\n/**\n * Blend two colors with the \"soft light\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function softLight(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.softLight\n )\n}\n\n/**\n * Blend two colors with the \"difference\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function difference(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.difference\n )\n}\n\n/**\n * Blend two colors with the \"exclusion\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function exclusion(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n separableBlend,\n separableBlendModes.exclusion\n )\n}\n\n/**\n * Blend two colors with the \"hue\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function hue(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n nonSeparableBlend,\n nonSeparableBlendModes.hue\n )\n}\n\n/**\n * Blend two colors with the \"saturation\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function saturation(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n nonSeparableBlend,\n nonSeparableBlendModes.saturation\n )\n}\n\n/**\n * Blend two colors with the \"color\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function color(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n nonSeparableBlend,\n nonSeparableBlendModes.color\n )\n}\n\n/**\n * Blend two colors with the \"luminosity\" blend mode\n *\n * @param backdrop The background color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @param source The foreground color object { r,g,b,a } with the color channels being integers in the [0..255] range and the alpha channel being a fraction in [0..1]\n * @return The blended color\n */\nexport function luminosity(backdrop: RGBA, source: RGBA) {\n return performBlend(\n backdrop,\n source,\n nonSeparableBlend,\n nonSeparableBlendModes.luminosity\n )\n}\n","const colors = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50],\n}\n\nfor (const key in colors) Object.freeze(colors[key]);\nexport default Object.freeze(colors);","import colorNames from 'color-name';\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in colorNames) {\n\tif (Object.hasOwn(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(?=[\\s,])\\s*(?:,\\s*)?([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)\\s*(?:[\\s,|/]\\s*([+-]?(?:\\d*\\.)?\\d+(?:e\\d+)?)(%?)\\s*)?\\)$/i;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/i;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseFloat(match[i + 1]);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.toLowerCase().match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// eslint-disable-next-line unicorn/prefer-spread\n\t\trgb = colorNames[match[1]].slice();\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\s*)?\\)$/i;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\nexport default cs;\n","import colorString from 'color-string';\nimport convert from 'color-convert';\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](...arguments_);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(...arguments_);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(...this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(...rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_colour_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...arguments_) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments_.length > 0) {\n\t\t\treturn new Color(arguments_, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...arguments_) {\n\t\tlet color = arguments_[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(arguments_, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] ||= [])[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nexport default Color;\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nimport cssKeywords from 'color-name';\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\toklab: {channels: 3, labels: ['okl', 'oka', 'okb']},\n\tlch: {channels: 3, labels: 'lch'},\n\toklch: {channels: 3, labels: ['okl', 'okc', 'okh']},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']},\n};\n\nexport default convert;\n\n// LAB f(t) constant\nconst LAB_FT = (6 / 29) ** 3;\n\n// SRGB non-linear transform functions\nfunction srgbNonlinearTransform(c) {\n\tconst cc = c > 0.003_130_8\n\t\t? ((1.055 * (c ** (1 / 2.4))) - 0.055)\n\t\t: c * 12.92;\n\treturn Math.min(Math.max(0, cc), 1);\n}\n\nfunction srgbNonlinearTransformInv(c) {\n\treturn c > 0.040_45 ? (((c + 0.055) / 1.055) ** 2.4) : (c / 12.92);\n}\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tswitch (max) {\n\t\tcase min: {\n\t\t\th = 0;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase r: {\n\t\t\th = (g - b) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase g: {\n\t\t\th = 2 + (b - r) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase b: {\n\t\t\th = 4 + (r - g) / delta;\n\n\t\t\tbreak;\n\t\t}\n\t// No default\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tswitch (v) {\n\t\t\tcase r: {\n\t\t\t\th = bdif - gdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase g: {\n\t\t\t\th = (1 / 3) + rdif - bdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase b: {\n\t\t\t\th = (2 / 3) + gdif - rdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// No default\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100,\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.oklab = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst lp = Math.cbrt(0.412_221_470_8 * r + 0.536_332_536_3 * g + 0.051_445_992_9 * b);\n\tconst mp = Math.cbrt(0.211_903_498_2 * r + 0.680_699_545_1 * g + 0.107_396_956_6 * b);\n\tconst sp = Math.cbrt(0.088_302_461_9 * r + 0.281_718_837_6 * g + 0.629_978_700_5 * b);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst aa = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst bb = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, aa * 100, bb * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Number.POSITIVE_INFINITY;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn [...cssKeywords[keyword]];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst x = (r * 0.412_456_4) + (g * 0.357_576_1) + (b * 0.180_437_5);\n\tconst y = (r * 0.212_672_9) + (g * 0.715_152_2) + (b * 0.072_175);\n\tconst z = (r * 0.019_333_9) + (g * 0.119_192) + (b * 0.950_304_1);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t3;\n\tlet value;\n\n\tif (s === 0) {\n\t\tvalue = l * 255;\n\t\treturn [value, value, value];\n\t}\n\n\tconst t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tvalue = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tvalue = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tvalue = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tvalue = t1;\n\t\t}\n\n\t\trgb[i] = value * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0: {\n\t\t\treturn [v, t, p];\n\t\t}\n\n\t\tcase 1: {\n\t\t\treturn [q, v, p];\n\t\t}\n\n\t\tcase 2: {\n\t\t\treturn [p, v, t];\n\t\t}\n\n\t\tcase 3: {\n\t\t\treturn [p, q, v];\n\t\t}\n\n\t\tcase 4: {\n\t\t\treturn [t, p, v];\n\t\t}\n\n\t\tcase 5: {\n\t\t\treturn [v, p, q];\n\t\t}\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\t// eslint-disable-next-line no-bitwise\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces, default-case-last */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: { r = v; g = n; b = wh; break;\n\t\t}\n\n\t\tcase 1: { r = n; g = v; b = wh; break;\n\t\t}\n\n\t\tcase 2: { r = wh; g = v; b = n; break;\n\t\t}\n\n\t\tcase 3: { r = wh; g = n; b = v; break;\n\t\t}\n\n\t\tcase 4: { r = n; g = wh; b = v; break;\n\t\t}\n\n\t\tcase 5: { r = v; g = wh; b = n; break;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces, default-case-last */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.240_454_2) + (y * -1.537_138_5) + (z * -0.498_531_4);\n\tg = (x * -0.969_266) + (y * 1.876_010_8) + (z * 0.041_556);\n\tb = (x * 0.055_643_4) + (y * -0.204_025_9) + (z * 1.057_225_2);\n\n\t// Assume sRGB\n\tr = srgbNonlinearTransform(r);\n\tg = srgbNonlinearTransform(g);\n\tb = srgbNonlinearTransform(b);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.xyz.oklab = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\n\tconst lp = Math.cbrt(0.818_933_010_1 * x + 0.361_866_742_4 * y - 0.128_859_713_7 * z);\n\tconst mp = Math.cbrt(0.032_984_543_6 * x + 0.929_311_871_5 * y + 0.036_145_638_7 * z);\n\tconst sp = Math.cbrt(0.048_200_301_8 * x + 0.264_366_269_1 * y + 0.633_851_707 * z);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst a = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst b = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, a * 100, b * 100];\n};\n\nconvert.oklab.oklch = function (oklab) {\n\treturn convert.lab.lch(oklab);\n};\n\nconvert.oklab.xyz = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst a = oklab[1] / 100;\n\tconst b = oklab[2] / 100;\n\n\tconst l = (0.999_999_998 * ll + 0.396_337_792 * a + 0.215_803_758 * b) ** 3;\n\tconst m = (1.000_000_008 * ll - 0.105_561_342 * a - 0.063_854_175 * b) ** 3;\n\tconst s = (1.000_000_055 * ll - 0.089_484_182 * a - 1.291_485_538 * b) ** 3;\n\n\tconst x = 1.227_013_851 * l - 0.557_799_98 * m + 0.281_256_149 * s;\n\tconst y = -0.040_580_178 * l + 1.112_256_87 * m - 0.071_676_679 * s;\n\tconst z = -0.076_381_285 * l - 0.421_481_978 * m + 1.586_163_22 * s;\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.oklab.rgb = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst aa = oklab[1] / 100;\n\tconst bb = oklab[2] / 100;\n\n\tconst l = (ll + 0.396_337_777_4 * aa + 0.215_803_757_3 * bb) ** 3;\n\tconst m = (ll - 0.105_561_345_8 * aa - 0.063_854_172_8 * bb) ** 3;\n\tconst s = (ll - 0.089_484_177_5 * aa - 1.291_485_548 * bb) ** 3;\n\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransform(4.076_741_662_1 * l - 3.307_711_591_3 * m + 0.230_969_929_2 * s);\n\tconst g = srgbNonlinearTransform(-1.268_438_004_6 * l + 2.609_757_401_1 * m - 0.341_319_396_5 * s);\n\tconst b = srgbNonlinearTransform(-0.004_196_086_3 * l - 0.703_418_614_7 * m + 1.707_614_701 * s);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.oklch.oklab = function (oklch) {\n\treturn convert.lch.lab(oklch);\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n\n\t// Illuminant D65 XYZ Tristrimulus Values\n\t// https://en.wikipedia.org/wiki/CIE_1931_color_space\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t/* eslint-disable no-bitwise */\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\t\t/* eslint-enable no-bitwise */\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\t// eslint-disable-next-line no-bitwise\n\tif (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\targs = args[0];\n\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (Math.trunc(args > 50) + 1) * 0.5;\n\t/* eslint-disable no-bitwise */\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\targs = args[0];\n\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\t/* eslint-disable no-bitwise */\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = [...colorString].map(char => char + char).join('');\n\t}\n\n\tconst integer = Number.parseInt(colorString, 16);\n\t/* eslint-disable no-bitwise */\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet hue;\n\n\tconst grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else if (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else if (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2 * s * l) : (2 * s * (1 - l));\n\n\tlet f = 0;\n\tif (c < 1) {\n\t\tf = (l - 0.5 * c) / (1 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0: {\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 1: {\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 2: {\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\t}\n\n\t\tcase 3: {\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\t}\n\n\t\tcase 4: {\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\t}\n\n\t\tdefault: {\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255,\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1 - c);\n\tlet f = 0;\n\n\tif (v > 0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else if (l >= 0.5 && l < 1) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65_535) * 255, (apple[1] / 65_535) * 255, (apple[2] / 65_535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65_535, (rgb[1] / 255) * 65_535, (rgb[2] / 255) * 65_535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\t/* eslint-disable no-bitwise */\n\tconst value = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (value << 16) + (value << 8) + value;\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [value / 255 * 100];\n};\n","import conversions from './conversions.js';\nimport route from './route.js';\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let {length} = result, i = 0; i < length; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfor (const fromModel of models) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\tfor (const toModel of routeModels) {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t}\n}\n\nexport default convert;\n","import conversions from './conversions.js';\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null,\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length > 0) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let {length} = adjacents, i = 0; i < length; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nfunction route(fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n}\n\nexport default route;\n","/** @import { Matrix3x3, Vector3 } from \"./types.js\" */\n\n/**\n * A is m x n. B is n x p. product is m x p.\n *\n * Array arguments are treated like vectors:\n * - A becomes 1 x n\n * - B becomes n x 1\n *\n * Returns Matrix m x p or equivalent array or number\n *\n * @overload\n * @param {number[]} A Vector 1 x n\n * @param {number[]} B Vector n x 1\n * @returns {number} Scalar number\n *\n * @overload\n * @param {number[][]} A Matrix m x n\n * @param {number[]} B Vector n x 1\n * @returns {number[]} Array with length m\n *\n * @overload\n * @param {number[]} A Vector 1 x n\n * @param {number[][]} B Matrix n x p\n * @returns {number[]} Array with length p\n *\n * @overload\n * @param {number[][]} A Matrix m x n\n * @param {number[][]} B Matrix n x p\n * @returns {number[][]} Matrix m x p\n *\n * @param {number[] | number[][]} A Matrix m x n or a vector\n * @param {number[] | number[][]} B Matrix n x p or a vector\n * @returns {number | number[] | number[][]} Matrix m x p or equivalent array or number\n */\nexport default function multiplyMatrices (A, B) {\n\tlet m = A.length;\n\t/** @type {number[][]} */\n\tlet AM;\n\t/** @type {number[][]} */\n\tlet BM;\n\tlet aVec = false;\n\tlet bVec = false;\n\n\tif (!Array.isArray(A[0])) {\n\t\t// A is vector, convert to [[a, b, c, ...]]\n\t\tAM = [/** @type {number[]} */ (A)];\n\t\tm = AM.length;\n\t\taVec = true;\n\t}\n\telse {\n\t\tAM = /** @type {number[][]} */ (A);\n\t}\n\n\tif (!Array.isArray(B[0])) {\n\t\t// B is vector, convert to [[a], [b], [c], ...]]\n\t\tBM = B.length > 0 ? B.map(x => [x]) : [[]]; // Avoid mapping empty array\n\t\tbVec = true;\n\t}\n\telse {\n\t\tBM = /** @type {number[][]} */ (B);\n\t}\n\n\tlet p = BM[0].length;\n\tlet BM_cols = BM[0].map((_, i) => BM.map(x => x[i])); // transpose B\n\t/** @type {number[] | number[][]} */\n\tlet product = AM.map(row =>\n\t\tBM_cols.map(col => {\n\t\t\tlet ret = 0;\n\n\t\t\tif (!Array.isArray(row)) {\n\t\t\t\tfor (let c of col) {\n\t\t\t\t\tret += row * c;\n\t\t\t\t}\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < row.length; i++) {\n\t\t\t\tret += row[i] * (col[i] || 0);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}));\n\n\tif (m === 1 && aVec) {\n\t\tproduct = product[0]; // Avoid [[a, b, c, ...]]\n\t}\n\tif (p === 1 && bVec) {\n\t\tif (m === 1 && aVec) {\n\t\t\treturn product[0]; // Avoid [[a]], return a number\n\t\t}\n\t\telse {\n\t\t\treturn product.map(x => x[0]); // Avoid [[a], [b], [c], ...]]\n\t\t}\n\t}\n\n\treturn product;\n}\n\n// dot3 and transform functions adapted from https://github.com/texel-org/color/blob/9793c7d4d02b51f068e0f3fd37131129a4270396/src/core.js\n//\n// The MIT License (MIT)\n// Copyright (c) 2024 Matt DesLauriers\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE\n// OR OTHER DEALINGS IN THE SOFTWARE.\n\n/**\n * Returns the dot product of two vectors each with a length of 3.\n *\n * @param {Vector3} a\n * @param {Vector3} b\n * @returns {number}\n */\nfunction dot3 (a, b) {\n\treturn a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\n/**\n * Transforms a vector of length 3 by a 3x3 matrix. Specify the same input and output\n * vector to transform in place.\n *\n * @param {Vector3} input\n * @param {Matrix3x3} matrix\n * @param {Vector3} [out]\n * @returns {Vector3}\n */\nexport function multiply_v3_m3x3 (input, matrix, out = [0, 0, 0]) {\n\tconst x = dot3(input, matrix[0]);\n\tconst y = dot3(input, matrix[1]);\n\tconst z = dot3(input, matrix[2]);\n\tout[0] = x;\n\tout[1] = y;\n\tout[2] = z;\n\treturn out;\n}\n","/**\n * Various utility functions\n */\n\nexport { default as multiplyMatrices, multiply_v3_m3x3 } from \"./multiply-matrices.js\";\n\n/**\n * Check if a value is a string (including a String object)\n * @param {any} str - Value to check\n * @returns {str is string}\n */\nexport function isString (str) {\n\treturn type(str) === \"string\";\n}\n\n/**\n * Determine the internal JavaScript [[Class]] of an object.\n * @param {any} o - Value to check\n * @returns {string}\n */\nexport function type (o) {\n\tlet str = Object.prototype.toString.call(o);\n\n\treturn (str.match(/^\\[object\\s+(.*?)\\]$/)[1] || \"\").toLowerCase();\n}\n\n/**\n * @param {number} n\n * @param {{ precision?: number | undefined, unit?: string | undefined }} options\n * @returns {string}\n */\nexport function serializeNumber (n, { precision = 16, unit }) {\n\tif (isNone(n)) {\n\t\treturn \"none\";\n\t}\n\n\tn = +toPrecision(n, precision);\n\n\treturn n + (unit ?? \"\");\n}\n\n/**\n * Check if a value corresponds to a none argument\n * @param {any} n - Value to check\n * @returns {n is null}\n */\nexport function isNone (n) {\n\treturn n === null;\n}\n\n/**\n * Replace none values with 0\n * @param {number | null} n\n * @returns {number}\n */\nexport function skipNone (n) {\n\treturn isNone(n) ? 0 : n;\n}\n\n/**\n * Round a number to a certain number of significant digits\n * @param {number} n - The number to round\n * @param {number} precision - Number of significant digits\n */\nexport function toPrecision (n, precision) {\n\tif (n === 0) {\n\t\treturn 0;\n\t}\n\tlet integer = ~~n;\n\tlet digits = 0;\n\tif (integer && precision) {\n\t\tdigits = ~~Math.log10(Math.abs(integer)) + 1;\n\t}\n\tconst multiplier = 10.0 ** (precision - digits);\n\treturn Math.floor(n * multiplier + 0.5) / multiplier;\n}\n\n/**\n * @param {number} start\n * @param {number} end\n * @param {number} p\n */\nexport function interpolate (start, end, p) {\n\tif (isNaN(start)) {\n\t\treturn end;\n\t}\n\n\tif (isNaN(end)) {\n\t\treturn start;\n\t}\n\n\treturn start + (end - start) * p;\n}\n\n/**\n * @param {number} start\n * @param {number} end\n * @param {number} value\n */\nexport function interpolateInv (start, end, value) {\n\treturn (value - start) / (end - start);\n}\n\n/**\n * @param {[number, number]} from\n * @param {[number, number]} to\n * @param {number} value\n */\nexport function mapRange (from, to, value) {\n\tif (\n\t\t!from ||\n\t\t!to ||\n\t\tfrom === to ||\n\t\t(from[0] === to[0] && from[1] === to[1]) ||\n\t\tisNaN(value) ||\n\t\tvalue === null\n\t) {\n\t\t// Ranges missing or the same\n\t\treturn value;\n\t}\n\n\treturn interpolate(to[0], to[1], interpolateInv(from[0], from[1], value));\n}\n\n/**\n * Clamp value between the minimum and maximum\n * @param {number} min minimum value to return\n * @param {number} val the value to return if it is between min and max\n * @param {number} max maximum value to return\n */\nexport function clamp (min, val, max) {\n\treturn Math.max(Math.min(max, val), min);\n}\n\n/**\n * Copy sign of one value to another.\n * @param {number} to - Number to copy sign to\n * @param {number} from - Number to copy sign from\n */\nexport function copySign (to, from) {\n\treturn Math.sign(to) === Math.sign(from) ? to : -to;\n}\n\n/**\n * Perform pow on a signed number and copy sign to result\n * @param {number} base The base number\n * @param {number} exp The exponent\n */\nexport function spow (base, exp) {\n\treturn copySign(Math.abs(base) ** exp, base);\n}\n\n/**\n * Perform a divide, but return zero if the denominator is zero\n * @param {number} n The numerator\n * @param {number} d The denominator\n */\nexport function zdiv (n, d) {\n\treturn d === 0 ? 0 : n / d;\n}\n\n/**\n * Perform a bisect on a sorted list and locate the insertion point for\n * a value in arr to maintain sorted order.\n * @param {number[]} arr - array of sorted numbers\n * @param {number} value - value to find insertion point for\n * @param {number} lo - used to specify a the low end of a subset of the list\n * @param {number} hi - used to specify a the high end of a subset of the list\n */\nexport function bisectLeft (arr, value, lo = 0, hi = arr.length) {\n\twhile (lo < hi) {\n\t\tconst mid = (lo + hi) >> 1;\n\t\tif (arr[mid] < value) {\n\t\t\tlo = mid + 1;\n\t\t}\n\t\telse {\n\t\t\thi = mid;\n\t\t}\n\t}\n\treturn lo;\n}\n\n/**\n * Determines whether an argument is an instance of a constructor, including subclasses.\n * This is done by first just checking `instanceof`,\n * and then comparing the string names of the constructors if that fails.\n * @param {any} arg\n * @param {C} constructor\n * @template {new (...args: any) => any} C\n * @returns {arg is InstanceType<C>}\n */\nexport function isInstance (arg, constructor) {\n\tif (arg instanceof constructor) {\n\t\treturn true;\n\t}\n\n\tconst targetName = constructor.name;\n\n\twhile (arg) {\n\t\tconst proto = Object.getPrototypeOf(arg);\n\t\tconst constructorName = proto?.constructor?.name;\n\t\tif (constructorName === targetName) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!constructorName || constructorName === \"Object\") {\n\t\t\treturn false;\n\t\t}\n\t\targ = proto;\n\t}\n\n\treturn false;\n}\n","/**\n * A class for adding deep extensibility to any piece of JS code\n */\nexport class Hooks {\n\tadd (name, callback, first) {\n\t\tif (typeof arguments[0] != \"string\") {\n\t\t\t// Multiple hooks\n\t\t\tfor (var name in arguments[0]) {\n\t\t\t\tthis.add(name, arguments[0][name], arguments[1]);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t(Array.isArray(name) ? name : [name]).forEach(function (name) {\n\t\t\tthis[name] = this[name] || [];\n\n\t\t\tif (callback) {\n\t\t\t\tthis[name][first ? \"unshift\" : \"push\"](callback);\n\t\t\t}\n\t\t}, this);\n\t}\n\n\trun (name, env) {\n\t\tthis[name] = this[name] || [];\n\t\tthis[name].forEach(function (callback) {\n\t\t\tcallback.call(env && env.context ? env.context : env, env);\n\t\t});\n\t}\n}\n\n/**\n * The instance of {@link Hooks} used throughout Color.js\n */\nconst hooks = new Hooks();\n\nexport default hooks;\n","// Global defaults one may want to configure\nexport default {\n\tgamut_mapping: \"css\",\n\tprecision: 5,\n\tdeltaE: \"76\", // Default deltaE method\n\tverbose: globalThis?.process?.env?.NODE_ENV?.toLowerCase() !== \"test\",\n\twarn: function warn (msg) {\n\t\tif (this.verbose) {\n\t\t\tglobalThis?.console?.warn?.(msg);\n\t\t}\n\t},\n};\n","import { serializeNumber, mapRange, isInstance } from \"./util.js\";\n\nexport default class Type {\n\t// Class properties - declared here so that type inference works\n\ttype;\n\tcoordMeta;\n\tcoordRange;\n\t/** @type {[number, number]} */\n\trange;\n\n\t/**\n\t * @param {any} type\n\t * @param {import(\"./types.js\").CoordMeta} coordMeta\n\t */\n\tconstructor (type, coordMeta) {\n\t\tif (typeof type === \"object\") {\n\t\t\tthis.coordMeta = type;\n\t\t}\n\n\t\tif (coordMeta) {\n\t\t\tthis.coordMeta = coordMeta;\n\t\t\tthis.coordRange = coordMeta.range ?? coordMeta.refRange;\n\t\t}\n\n\t\tif (typeof type === \"string\") {\n\t\t\tlet params = type\n\t\t\t\t.trim()\n\t\t\t\t.match(/^(?<type><[a-z]+>)(\\[(?<min>-?[.\\d]+),\\s*(?<max>-?[.\\d]+)\\])?$/);\n\n\t\t\tif (!params) {\n\t\t\t\tthrow new TypeError(`Cannot parse ${type} as a type definition.`);\n\t\t\t}\n\n\t\t\tthis.type = params.groups.type;\n\t\t\tlet { min, max } = params.groups;\n\n\t\t\tif (min || max) {\n\t\t\t\tthis.range = [+min, +max];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @returns {[number, number]} */\n\tget computedRange () {\n\t\tif (this.range) {\n\t\t\treturn this.range;\n\t\t}\n\t\tif (this.type === \"<percentage>\") {\n\t\t\treturn this.percentageRange();\n\t\t}\n\t\telse if (this.type === \"<angle>\") {\n\t\t\treturn [0, 360];\n\t\t}\n\t\treturn null;\n\t}\n\n\tget unit () {\n\t\tif (this.type === \"<percentage>\") {\n\t\t\treturn \"%\";\n\t\t}\n\t\telse if (this.type === \"<angle>\") {\n\t\t\treturn \"deg\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Map a number to the internal representation\n\t * @param {number} number\n\t */\n\tresolve (number) {\n\t\tif (this.type === \"<angle>\") {\n\t\t\treturn number;\n\t\t}\n\n\t\tlet fromRange = this.computedRange;\n\t\tlet toRange = this.coordRange;\n\n\t\tif (this.type === \"<percentage>\") {\n\t\t\ttoRange ??= this.percentageRange();\n\t\t}\n\n\t\treturn mapRange(fromRange, toRange, number);\n\t}\n\n\t/**\n\t * Serialize a number from the internal representation to a string\n\t * @param {number} number\n\t * @param {number} [precision]\n\t */\n\tserialize (number, precision) {\n\t\tlet toRange = this.type === \"<percentage>\" ? this.percentageRange(100) : this.computedRange;\n\n\t\tlet unit = this.unit;\n\n\t\tnumber = mapRange(this.coordRange, toRange, number);\n\t\treturn serializeNumber(number, { unit, precision });\n\t}\n\n\ttoString () {\n\t\tlet ret = this.type;\n\n\t\tif (this.range) {\n\t\t\tlet [min = \"\", max = \"\"] = this.range;\n\t\t\tret += `[${min},${max}]`;\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Returns a percentage range for values of this type\n\t * @param {number} scale\n\t * @returns {[number, number]}\n\t */\n\tpercentageRange (scale = 1) {\n\t\tlet range;\n\t\tif (\n\t\t\t(this.coordMeta && this.coordMeta.range) ||\n\t\t\t(this.coordRange && this.coordRange[0] >= 0)\n\t\t) {\n\t\t\trange = [0, 1];\n\t\t}\n\t\telse {\n\t\t\trange = [-1, 1];\n\t\t}\n\t\treturn [range[0] * scale, range[1] * scale];\n\t}\n\n\tstatic get (type, coordMeta) {\n\t\tif (isInstance(type, this)) {\n\t\t\treturn type;\n\t\t}\n\n\t\treturn new this(type, coordMeta);\n\t}\n}\n","import { isInstance, isNone } from \"./util.js\";\nimport Type from \"./Type.js\";\n\n/** @import { ColorSpace, Coords } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Format} FormatInterface */\n\n/**\n * @internal\n * Used to index {@link FormatInterface Format} objects and store an instance.\n * Not meant for external use\n */\nexport const instance = Symbol(\"instance\");\n\n/**\n * Remove the first element of an array type\n * @template {any[]} T\n * @typedef {T extends [any, ...infer R] ? R : T[number][]} RemoveFirstElement\n */\n\n/**\n * @class Format\n * @implements {Omit<FormatInterface, \"coords\" | \"serializeCoords\">}\n * Class to hold a color serialization format\n */\nexport default class Format {\n\t// Class properties - declared here so that type inference works\n\ttype;\n\tname;\n\tspaceCoords;\n\t/** @type {Type[][]} */\n\tcoords;\n\t/** @type {string | undefined} */\n\tid;\n\t/** @type {boolean | undefined} */\n\talpha;\n\n\t/**\n\t * @param {FormatInterface} format\n\t * @param {ColorSpace} space\n\t */\n\tconstructor (format, space = format.space) {\n\t\tformat[instance] = this;\n\t\tthis.type = \"function\";\n\t\tthis.name = \"color\";\n\n\t\tObject.assign(this, format);\n\n\t\tthis.space = space;\n\n\t\tif (this.type === \"custom\") {\n\t\t\t// Nothing else to do here\n\t\t\treturn;\n\t\t}\n\n\t\tthis.spaceCoords = Object.values(space.coords);\n\n\t\tif (!this.coords) {\n\t\t\t// @ts-expect-error Strings are converted to the correct type later\n\t\t\tthis.coords = this.spaceCoords.map(coordMeta => {\n\t\t\t\tlet ret = [\"<number>\", \"<percentage>\"];\n\n\t\t\t\tif (coordMeta.type === \"angle\") {\n\t\t\t\t\tret.push(\"<angle>\");\n\t\t\t\t}\n\n\t\t\t\treturn ret;\n\t\t\t});\n\t\t}\n\n\t\tthis.coords = this.coords.map(\n\t\t\t/** @param {string | string[] | Type[]} types */ (types, i) => {\n\t\t\t\tlet coordMeta = this.spaceCoords[i];\n\n\t\t\t\tif (typeof types === \"string\") {\n\t\t\t\t\ttypes = types.trim().split(/\\s*\\|\\s*/);\n\t\t\t\t}\n\n\t\t\t\treturn types.map(type => Type.get(type, coordMeta));\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @param {Coords} coords\n\t * @param {number} precision\n\t * @param {Type[]} types\n\t */\n\tserializeCoords (coords, precision, types) {\n\t\ttypes = coords.map((_, i) =>\n\t\t\tType.get(types?.[i] ?? this.coords[i][0], this.spaceCoords[i]));\n\t\treturn coords.map((c, i) => types[i].serialize(c, precision));\n\t}\n\n\t/**\n\t * Validates the coordinates of a color against a format's coord grammar and\n\t * maps the coordinates to the range or refRange of the coordinates.\n\t * @param {Coords} coords\n\t * @param {[string, string, string]} types\n\t */\n\tcoerceCoords (coords, types) {\n\t\treturn Object.entries(this.space.coords).map(([id, coordMeta], i) => {\n\t\t\tlet arg = coords[i];\n\n\t\t\tif (isNone(arg) || isNaN(arg)) {\n\t\t\t\t// Nothing to do here\n\t\t\t\treturn arg;\n\t\t\t}\n\n\t\t\t// Find grammar alternative that matches the provided type\n\t\t\t// Non-strict equals is intentional because we are comparing w/ string objects\n\t\t\tlet providedType = types[i];\n\t\t\tlet type = this.coords[i].find(c => c.type == providedType);\n\n\t\t\t// Check that each coord conforms to its grammar\n\t\t\tif (!type) {\n\t\t\t\t// Type does not exist in the grammar, throw\n\t\t\t\tlet coordName = coordMeta.name || id;\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${providedType ?? /** @type {any} */ (arg)?.raw ?? arg} not allowed for ${coordName} in ${this.name}()`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ = type.resolve(arg);\n\n\t\t\tif (type.range) {\n\t\t\t\t// Adjust type to include range\n\t\t\t\ttypes[i] = type.toString();\n\t\t\t}\n\n\t\t\treturn arg;\n\t\t});\n\t}\n\n\t/**\n\t * @returns {boolean | Required<FormatInterface>[\"serialize\"]}\n\t */\n\tcanSerialize () {\n\t\treturn this.type === \"function\" || /** @type {any} */ (this).serialize;\n\t}\n\n\t/**\n\t * @param {string} str\n\t * @returns {(import(\"./types.js\").ColorConstructor) | undefined | null}\n\t */\n\tparse (str) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * @param {Format | FormatInterface} format\n\t * @param {RemoveFirstElement<ConstructorParameters<typeof Format>>} args\n\t * @returns {Format}\n\t */\n\tstatic get (format, ...args) {\n\t\tif (!format || isInstance(format, this)) {\n\t\t\treturn /** @type {Format} */ (format);\n\t\t}\n\n\t\tif (format[instance]) {\n\t\t\treturn format[instance];\n\t\t}\n\n\t\treturn new Format(format, ...args);\n\t}\n}\n","import hooks from \"./hooks.js\";\nimport { multiply_v3_m3x3 } from \"./util.js\";\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").White} White */\n\n/** @type {Record<string, White>} */\n// prettier-ignore\nexport const WHITES = {\n\t// for compatibility, the four-digit chromaticity-derived ones everyone else uses\n\tD50: [0.3457 / 0.3585, 1.00000, (1.0 - 0.3457 - 0.3585) / 0.3585],\n\tD65: [0.3127 / 0.3290, 1.00000, (1.0 - 0.3127 - 0.3290) / 0.3290],\n};\n\n/**\n *\n * @param {string | White} name\n * @returns {White}\n */\nexport function getWhite (name) {\n\tif (Array.isArray(name)) {\n\t\treturn name;\n\t}\n\n\treturn WHITES[name];\n}\n\n/**\n * Adapt XYZ from white point W1 to W2\n * @param {White | string} W1\n * @param {White | string} W2\n * @param {[number, number, number]} XYZ\n * @param {{ method?: string | undefined }} options\n * @returns {[number, number, number]}\n */\nexport default function adapt (W1, W2, XYZ, options = {}) {\n\tW1 = getWhite(W1);\n\tW2 = getWhite(W2);\n\n\tif (!W1 || !W2) {\n\t\tthrow new TypeError(\n\t\t\t`Missing white point to convert ${!W1 ? \"from\" : \"\"}${!W1 && !W2 ? \"/\" : \"\"}${!W2 ? \"to\" : \"\"}`,\n\t\t);\n\t}\n\n\tif (W1 === W2) {\n\t\t// Same whitepoints, no conversion needed\n\t\treturn XYZ;\n\t}\n\n\tlet env = { W1, W2, XYZ, options };\n\n\thooks.run(\"chromatic-adaptation-start\", env);\n\n\tif (!env.M) {\n\t\tif (env.W1 === WHITES.D65 && env.W2 === WHITES.D50) {\n\t\t\t// prettier-ignore\n\t\t\tenv.M = [\n\t\t\t\t[ 1.0479297925449969, 0.022946870601609652, -0.05019226628920524 ],\n\t\t\t\t[ 0.02962780877005599, 0.9904344267538799, -0.017073799063418826 ],\n\t\t\t\t[ -0.009243040646204504, 0.015055191490298152, 0.7518742814281371 ],\n\t\t\t];\n\t\t}\n\t\telse if (env.W1 === WHITES.D50 && env.W2 === WHITES.D65) {\n\t\t\t// prettier-ignore\n\t\t\tenv.M = [\n\t\t\t\t[ 0.955473421488075, -0.02309845494876471, 0.06325924320057072 ],\n\t\t\t\t[ -0.0283697093338637, 1.0099953980813041, 0.021041441191917323 ],\n\t\t\t\t[ 0.012314014864481998, -0.020507649298898964, 1.330365926242124 ],\n\t\t\t];\n\t\t}\n\t}\n\n\thooks.run(\"chromatic-adaptation-end\", env);\n\n\tif (env.M) {\n\t\treturn multiply_v3_m3x3(env.XYZ, env.M);\n\t}\n\telse {\n\t\tthrow new TypeError(\"Only Bradford CAT with white points D50 and D65 supported for now.\");\n\t}\n}\n","import { isNone, clamp } from \"./util.js\";\nimport hooks from \"./hooks.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport defaults from \"./defaults.js\";\n\n/** @import { ColorConstructor } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").ArgumentMeta} ArgumentMeta */\n/** @typedef {import(\"./types.js\").ParseFunctionReturn} ParseFunctionReturn */\n/** @typedef {import(\"./types.js\").ParseOptions} ParseOptions */\n\n/**\n * Convert a CSS Color string to a color object\n * @param {string} str\n * @param {ParseOptions} [options]\n * @returns {ColorConstructor}\n */\nexport default function parse (str, options) {\n\tlet env = {\n\t\tstr: String(str)?.trim(),\n\t\toptions,\n\t};\n\n\thooks.run(\"parse-start\", env);\n\n\tif (env.color) {\n\t\treturn env.color;\n\t}\n\n\tenv.parsed = parseFunction(env.str);\n\tlet ret;\n\tlet meta = env.options ? (env.options.parseMeta ?? env.options.meta) : null;\n\n\tif (env.parsed) {\n\t\t// Is a functional syntax\n\t\tlet name = env.parsed.name;\n\t\tlet format;\n\t\tlet space;\n\t\tlet coords = env.parsed.args;\n\t\tlet types = coords.map((c, i) => env.parsed.argMeta[i]?.type);\n\n\t\tif (name === \"color\") {\n\t\t\t// color() function\n\t\t\tlet id = coords.shift();\n\t\t\ttypes.shift();\n\t\t\t// Check against both <dashed-ident> and <ident> versions\n\t\t\tlet alternateId = id.startsWith(\"--\") ? id.substring(2) : `--${id}`;\n\t\t\tlet ids = [id, alternateId];\n\t\t\tformat = ColorSpace.findFormat({ name, id: ids, type: \"function\" });\n\n\t\t\tif (!format) {\n\t\t\t\t// Not found\n\t\t\t\tlet didYouMean;\n\n\t\t\t\tlet registryId = id in ColorSpace.registry ? id : alternateId;\n\t\t\t\tif (registryId in ColorSpace.registry) {\n\t\t\t\t\t// Used color space id instead of color() id, these are often different\n\t\t\t\t\tlet cssId = ColorSpace.registry[registryId].formats?.color?.id;\n\n\t\t\t\t\tif (cssId) {\n\t\t\t\t\t\tlet altColor = str.replace(\"color(\" + id, \"color(\" + cssId);\n\t\t\t\t\t\tdidYouMean = `Did you mean ${altColor}?`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Cannot parse ${env.str}. ` + (didYouMean ?? \"Missing a plugin?\"),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tspace = format.space;\n\n\t\t\tif (format.id.startsWith(\"--\") && !id.startsWith(\"--\")) {\n\t\t\t\tdefaults.warn(\n\t\t\t\t\t`${space.name} is a non-standard space and not currently supported in the CSS spec. ` +\n\t\t\t\t\t\t`Use prefixed color(${format.id}) instead of color(${id}).`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (id.startsWith(\"--\") && !format.id.startsWith(\"--\")) {\n\t\t\t\tdefaults.warn(\n\t\t\t\t\t`${space.name} is a standard space and supported in the CSS spec. ` +\n\t\t\t\t\t\t`Use color(${format.id}) instead of prefixed color(${id}).`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tformat = ColorSpace.findFormat({ name, type: \"function\" });\n\t\t\tspace = format.space;\n\t\t}\n\n\t\tif (meta) {\n\t\t\tObject.assign(meta, {\n\t\t\t\tformat,\n\t\t\t\tformatId: format.name,\n\t\t\t\ttypes,\n\t\t\t\tcommas: env.parsed.commas,\n\t\t\t});\n\t\t}\n\n\t\tlet alpha = 1;\n\n\t\tif (env.parsed.lastAlpha) {\n\t\t\talpha = env.parsed.args.pop();\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.alphaType = types.pop();\n\t\t\t}\n\t\t}\n\n\t\tlet coordCount = format.coords.length;\n\n\t\tif (coords.length !== coordCount) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expected ${coordCount} coordinates for ${space.id} in ${env.str}), got ${coords.length}`,\n\t\t\t);\n\t\t}\n\n\t\tcoords = format.coerceCoords(coords, types);\n\n\t\tret = { spaceId: space.id, coords, alpha };\n\t}\n\telse {\n\t\t// Custom, colorspace-specific format\n\t\tspaceloop: for (let space of ColorSpace.all) {\n\t\t\tfor (let formatId in space.formats) {\n\t\t\t\tlet format = space.formats[formatId];\n\n\t\t\t\tif (format.type !== \"custom\") {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (format.test && !format.test(env.str)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Convert to Format object\n\t\t\t\tlet formatObject = space.getFormat(format);\n\n\t\t\t\tlet color = formatObject.parse(env.str);\n\n\t\t\t\tif (color) {\n\t\t\t\t\tif (meta) {\n\t\t\t\t\t\tObject.assign(meta, { format: formatObject, formatId });\n\t\t\t\t\t}\n\n\t\t\t\t\tret = color;\n\t\t\t\t\tbreak spaceloop;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!ret) {\n\t\t// If we're here, we couldn't parse\n\t\tthrow new TypeError(`Could not parse ${str} as a color. Missing a plugin?`);\n\t}\n\n\t// Clamp alpha to [0, 1]\n\tret.alpha = isNone(ret.alpha)\n\t\t? ret.alpha\n\t\t: ret.alpha === undefined\n\t\t\t? 1\n\t\t\t: clamp(0, ret.alpha, 1);\n\n\treturn ret;\n}\n\n/**\n * Units and multiplication factors for the internally stored numbers\n */\nexport const units = {\n\t\"%\": 0.01,\n\tdeg: 1,\n\tgrad: 0.9,\n\trad: 180 / Math.PI,\n\tturn: 360,\n};\n\nexport const regex = {\n\t// Need to list calc(NaN) explicitly as otherwise its ending paren would terminate the function call\n\tfunction: /^([a-z]+)\\(((?:calc\\(NaN\\)|.)+?)\\)$/i,\n\tnumber: /^([-+]?(?:[0-9]*\\.)?[0-9]+(e[-+]?[0-9]+)?)$/i,\n\tunitValue: RegExp(`(${Object.keys(units).join(\"|\")})$`),\n\n\t// NOTE The -+ are not just for prefix, but also for idents, and e+N notation!\n\tsingleArgument: /\\/?\\s*(none|NaN|calc\\(NaN\\)|[-+\\w.]+(?:%|deg|g?rad|turn)?)/g,\n};\n\n/**\n * Parse a single function argument\n * @param {string} rawArg\n * @returns {{value: number, meta: ArgumentMeta}}\n */\nexport function parseArgument (rawArg) {\n\t/** @type {Partial<ArgumentMeta>} */\n\tlet meta = {};\n\tlet unit = rawArg.match(regex.unitValue)?.[0];\n\t/** @type {string | number} */\n\tlet value = (meta.raw = rawArg);\n\n\tif (unit) {\n\t\t// It’s a dimension token\n\t\tmeta.type = unit === \"%\" ? \"<percentage>\" : \"<angle>\";\n\t\tmeta.unit = unit;\n\t\tmeta.unitless = Number(value.slice(0, -unit.length)); // unitless number\n\n\t\tvalue = meta.unitless * units[unit];\n\t}\n\telse if (regex.number.test(value)) {\n\t\t// It's a number\n\t\t// Convert numerical args to numbers\n\t\tvalue = Number(value);\n\t\tmeta.type = \"<number>\";\n\t}\n\telse if (value === \"none\") {\n\t\tvalue = null;\n\t}\n\telse if (value === \"NaN\" || value === \"calc(NaN)\") {\n\t\tvalue = NaN;\n\t\tmeta.type = \"<number>\";\n\t}\n\telse {\n\t\tmeta.type = \"<ident>\";\n\t}\n\n\treturn { value: /** @type {number} */ (value), meta: /** @type {ArgumentMeta} */ (meta) };\n}\n\n/**\n * Parse a CSS function, regardless of its name and arguments\n * @param {string} str String to parse\n * @return {ParseFunctionReturn | void}\n */\nexport function parseFunction (str) {\n\tif (!str) {\n\t\treturn;\n\t}\n\n\tstr = str.trim();\n\n\tlet parts = str.match(regex.function);\n\n\tif (parts) {\n\t\t// It is a function, parse args\n\t\tlet args = [];\n\t\tlet argMeta = [];\n\t\tlet lastAlpha = false;\n\t\tlet name = parts[1].toLowerCase();\n\n\t\tlet separators = parts[2].replace(regex.singleArgument, ($0, rawArg) => {\n\t\t\tlet { value, meta } = parseArgument(rawArg);\n\n\t\t\tif (\n\t\t\t\t// If there's a slash here, it's modern syntax\n\t\t\t\t$0.startsWith(\"/\") ||\n\t\t\t\t// If there's still elements to process after there's already 3 in `args` (and the we're not dealing with \"color()\"), it's likely to be a legacy color like \"hsl(0, 0%, 0%, 0.5)\"\n\t\t\t\t(name !== \"color\" && args.length === 3)\n\t\t\t) {\n\t\t\t\t// It's alpha\n\t\t\t\tlastAlpha = true;\n\t\t\t}\n\n\t\t\targs.push(value);\n\t\t\targMeta.push(meta);\n\t\t\treturn \"\";\n\t\t});\n\n\t\treturn {\n\t\t\tname,\n\t\t\targs,\n\t\t\targMeta,\n\t\t\tlastAlpha,\n\t\t\tcommas: separators.includes(\",\"),\n\t\t\trawName: parts[1],\n\t\t\trawArgs: parts[2],\n\t\t};\n\t}\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport { isString, isInstance } from \"./util.js\";\nimport parse from \"./parse.js\";\n\n/** @import { ColorTypes, ParseOptions as GetColorOptions, PlainColorObject } from \"./types.js\" */\n\n/**\n * Resolves a color reference (object or string) to a plain color object\n * @overload\n * @param {ColorTypes} color\n * @param {GetColorOptions} [options]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes[]} color\n * @param {GetColorOptions} [options]\n * @returns {PlainColorObject[]}\n */\nexport default function getColor (color, options) {\n\tif (Array.isArray(color)) {\n\t\treturn color.map(c => getColor(c, options));\n\t}\n\n\tif (!color) {\n\t\tthrow new TypeError(\"Empty color reference\");\n\t}\n\n\tif (isString(color)) {\n\t\tcolor = parse(color, options);\n\t}\n\n\t// Object fixup\n\tlet space = color.space || color.spaceId;\n\n\tif (typeof space === \"string\") {\n\t\t// Convert string id to color space object\n\t\tcolor.space = ColorSpace.get(space);\n\t}\n\n\tif (color.alpha === undefined) {\n\t\tcolor.alpha = 1;\n\t}\n\n\treturn color;\n}\n","/**\n * @packageDocumentation\n * Defines the class and other types related to creating color spaces.\n * For the builtin color spaces, see the `spaces` module.\n */\nimport { type, isNone, isInstance } from \"./util.js\";\nimport Format from \"./Format.js\";\nimport { getWhite } from \"./adapt.js\";\nimport hooks from \"./hooks.js\";\nimport getColor from \"./getColor.js\";\n\nconst ε = 0.000075;\n\n/**\n * Class to represent a color space\n */\nexport default class ColorSpace {\n\tconstructor (options) {\n\t\tthis.id = options.id;\n\t\tthis.name = options.name;\n\t\tthis.base = options.base ? ColorSpace.get(options.base) : null;\n\t\tthis.aliases = options.aliases;\n\n\t\tif (this.base) {\n\t\t\tthis.fromBase = options.fromBase;\n\t\t\tthis.toBase = options.toBase;\n\t\t}\n\n\t\t// Coordinate metadata\n\n\t\tlet coords = options.coords ?? this.base.coords;\n\n\t\tfor (let name in coords) {\n\t\t\tif (!(\"name\" in coords[name])) {\n\t\t\t\tcoords[name].name = name;\n\t\t\t}\n\t\t}\n\t\tthis.coords = coords;\n\n\t\t// White point\n\n\t\tlet white = options.white ?? this.base.white ?? \"D65\";\n\t\tthis.white = getWhite(white);\n\n\t\t// Sort out formats\n\n\t\tthis.formats = options.formats ?? {};\n\n\t\tfor (let name in this.formats) {\n\t\t\tlet format = this.formats[name];\n\t\t\tformat.type ||= \"function\";\n\t\t\tformat.name ||= name;\n\t\t}\n\n\t\tif (!this.formats.color?.id) {\n\t\t\tthis.formats.color = {\n\t\t\t\t...(this.formats.color ?? {}),\n\t\t\t\tid: options.cssId || this.id,\n\t\t\t};\n\t\t}\n\n\t\t// Gamut space\n\n\t\tif (options.gamutSpace) {\n\t\t\t// Gamut space explicitly specified\n\t\t\tthis.gamutSpace =\n\t\t\t\toptions.gamutSpace === \"self\" ? this : ColorSpace.get(options.gamutSpace);\n\t\t}\n\t\telse {\n\t\t\t// No gamut space specified, calculate a sensible default\n\t\t\tif (this.isPolar) {\n\t\t\t\t// Do not check gamut through polar coordinates\n\t\t\t\tthis.gamutSpace = this.base;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.gamutSpace = this;\n\t\t\t}\n\t\t}\n\n\t\t// Optimize inGamut for unbounded spaces\n\t\tif (this.gamutSpace.isUnbounded) {\n\t\t\tthis.inGamut = (coords, options) => {\n\t\t\t\treturn true;\n\t\t\t};\n\t\t}\n\n\t\t// Other stuff\n\t\tthis.referred = options.referred;\n\n\t\t// Compute ancestors and store them, since they will never change\n\t\tObject.defineProperty(this, \"path\", {\n\t\t\tvalue: getPath(this).reverse(),\n\t\t\twritable: false,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\thooks.run(\"colorspace-init-end\", this);\n\t}\n\n\tinGamut (coords, { epsilon = ε } = {}) {\n\t\tif (!this.equals(this.gamutSpace)) {\n\t\t\tcoords = this.to(this.gamutSpace, coords);\n\t\t\treturn this.gamutSpace.inGamut(coords, { epsilon });\n\t\t}\n\n\t\tlet coordMeta = Object.values(this.coords);\n\n\t\treturn coords.every((c, i) => {\n\t\t\tlet meta = coordMeta[i];\n\n\t\t\tif (meta.type !== \"angle\" && meta.range) {\n\t\t\t\tif (isNone(c)) {\n\t\t\t\t\t// NaN is always in gamut\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tlet [min, max] = meta.range;\n\t\t\t\treturn (\n\t\t\t\t\t(min === undefined || c >= min - epsilon) &&\n\t\t\t\t\t(max === undefined || c <= max + epsilon)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tget isUnbounded () {\n\t\treturn Object.values(this.coords).every(coord => !(\"range\" in coord));\n\t}\n\n\tget cssId () {\n\t\treturn this.formats?.color?.id || this.id;\n\t}\n\n\tget isPolar () {\n\t\tfor (let id in this.coords) {\n\t\t\tif (this.coords[id].type === \"angle\") {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Lookup a format in this color space\n\t * @param {string | object | Format} format - Format id if string. If object, it's converted to a `Format` object and returned.\n\t * @returns {Format}\n\t */\n\tgetFormat (format) {\n\t\tif (!format) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (format === \"default\") {\n\t\t\tformat = Object.values(this.formats)[0];\n\t\t}\n\t\telse if (typeof format === \"string\") {\n\t\t\tformat = this.formats[format];\n\t\t}\n\n\t\tlet ret = Format.get(format, this);\n\n\t\tif (ret !== format && format.name in this.formats) {\n\t\t\t// Update the format we have on file so we can find it more quickly next time\n\t\t\tthis.formats[format.name] = ret;\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Check if this color space is the same as another color space reference.\n\t * Allows proxying color space objects and comparing color spaces with ids.\n\t * @param {string | ColorSpace} space ColorSpace object or id to compare to\n\t * @returns {boolean}\n\t */\n\tequals (space) {\n\t\tif (!space) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this === space || this.id === space || this.id === space.id;\n\t}\n\n\tto (space, coords) {\n\t\tif (arguments.length === 1) {\n\t\t\tconst color = getColor(space);\n\t\t\t[space, coords] = [color.space, color.coords];\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\tif (this.equals(space)) {\n\t\t\t// Same space, no change needed\n\t\t\treturn coords;\n\t\t}\n\n\t\t// Convert NaN to 0, which seems to be valid in every coordinate of every color space\n\t\tcoords = coords.map(c => (isNone(c) ? 0 : c));\n\n\t\t// Find connection space = lowest common ancestor in the base tree\n\t\tlet myPath = this.path;\n\t\tlet otherPath = space.path;\n\n\t\tlet connectionSpace, connectionSpaceIndex;\n\n\t\tfor (let i = 0; i < myPath.length; i++) {\n\t\t\tif (myPath[i].equals(otherPath[i])) {\n\t\t\t\tconnectionSpace = myPath[i];\n\t\t\t\tconnectionSpaceIndex = i;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!connectionSpace) {\n\t\t\t// This should never happen\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot convert between color spaces ${this} and ${space}: no connection space was found`,\n\t\t\t);\n\t\t}\n\n\t\t// Go up from current space to connection space\n\t\tfor (let i = myPath.length - 1; i > connectionSpaceIndex; i--) {\n\t\t\tcoords = myPath[i].toBase(coords);\n\t\t}\n\n\t\t// Go down from connection space to target space\n\t\tfor (let i = connectionSpaceIndex + 1; i < otherPath.length; i++) {\n\t\t\tcoords = otherPath[i].fromBase(coords);\n\t\t}\n\n\t\treturn coords;\n\t}\n\n\tfrom (space, coords) {\n\t\tif (arguments.length === 1) {\n\t\t\tconst color = getColor(space);\n\t\t\t[space, coords] = [color.space, color.coords];\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\treturn space.to(this, coords);\n\t}\n\n\ttoString () {\n\t\treturn `${this.name} (${this.id})`;\n\t}\n\n\tgetMinCoords () {\n\t\tlet ret = [];\n\n\t\tfor (let id in this.coords) {\n\t\t\tlet meta = this.coords[id];\n\t\t\tlet range = meta.range || meta.refRange;\n\t\t\tret.push(range?.min ?? 0);\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\tstatic registry = {};\n\n\t// Returns array of unique color spaces\n\tstatic get all () {\n\t\treturn [...new Set(Object.values(ColorSpace.registry))];\n\t}\n\n\tstatic register (id, space) {\n\t\tif (arguments.length === 1) {\n\t\t\tspace = arguments[0];\n\t\t\tid = space.id;\n\t\t}\n\n\t\tspace = this.get(space);\n\n\t\tif (this.registry[id] && this.registry[id] !== space) {\n\t\t\tthrow new Error(`Duplicate color space registration: '${id}'`);\n\t\t}\n\t\tthis.registry[id] = space;\n\n\t\t// Register aliases when called without an explicit ID.\n\t\tif (arguments.length === 1 && space.aliases) {\n\t\t\tfor (let alias of space.aliases) {\n\t\t\t\tthis.register(alias, space);\n\t\t\t}\n\t\t}\n\n\t\treturn space;\n\t}\n\n\t/**\n\t * Lookup ColorSpace object by name\n\t * @param {ColorSpace | string} name\n\t */\n\tstatic get (space, ...alternatives) {\n\t\tif (!space || isInstance(space, this)) {\n\t\t\treturn space;\n\t\t}\n\n\t\tlet argType = type(space);\n\n\t\tif (argType === \"string\") {\n\t\t\t// It's a color space id\n\t\t\tlet ret = ColorSpace.registry[space.toLowerCase()];\n\n\t\t\tif (!ret) {\n\t\t\t\tthrow new TypeError(`No color space found with id = \"${space}\"`);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t}\n\n\t\tif (alternatives.length) {\n\t\t\treturn ColorSpace.get(...alternatives);\n\t\t}\n\n\t\tthrow new TypeError(`${space} is not a valid color space`);\n\t}\n\n\t/**\n\t * Look up all color spaces for a format that matches certain criteria\n\t * @param {object | string} filters\n\t * @param {Array<ColorSpace>} [spaces=ColorSpace.all]\n\t * @returns {Format | null}\n\t */\n\tstatic findFormat (filters, spaces = ColorSpace.all) {\n\t\tif (!filters) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (typeof filters === \"string\") {\n\t\t\tfilters = { name: filters };\n\t\t}\n\n\t\tfor (let space of spaces) {\n\t\t\tfor (let [name, format] of Object.entries(space.formats)) {\n\t\t\t\tformat.name ??= name;\n\t\t\t\tformat.type ??= \"function\";\n\n\t\t\t\tlet matches =\n\t\t\t\t\t(!filters.name || format.name === filters.name) &&\n\t\t\t\t\t(!filters.type || format.type === filters.type);\n\n\t\t\t\tif (filters.id) {\n\t\t\t\t\tlet ids = format.ids || [format.id];\n\t\t\t\t\tlet filterIds = Array.isArray(filters.id) ? filters.id : [filters.id];\n\t\t\t\t\tmatches &&= filterIds.some(id => ids.includes(id));\n\t\t\t\t}\n\n\t\t\t\tif (matches) {\n\t\t\t\t\tlet ret = Format.get(format, space);\n\n\t\t\t\t\tif (ret !== format) {\n\t\t\t\t\t\tspace.formats[format.name] = ret;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Get metadata about a coordinate of a color space\n\t *\n\t * @static\n\t * @param {Array | string} ref\n\t * @param {ColorSpace | string} [workingSpace]\n\t * @return {Object}\n\t */\n\tstatic resolveCoord (ref, workingSpace) {\n\t\tlet coordType = type(ref);\n\t\tlet space, coord;\n\n\t\tif (coordType === \"string\") {\n\t\t\tif (ref.includes(\".\")) {\n\t\t\t\t// Absolute coordinate\n\t\t\t\t[space, coord] = ref.split(\".\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Relative coordinate\n\t\t\t\t[space, coord] = [, ref];\n\t\t\t}\n\t\t}\n\t\telse if (Array.isArray(ref)) {\n\t\t\t[space, coord] = ref;\n\t\t}\n\t\telse {\n\t\t\t// Object\n\t\t\tspace = ref.space;\n\t\t\tcoord = ref.coordId;\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\tif (!space) {\n\t\t\tspace = workingSpace;\n\t\t}\n\n\t\tif (!space) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Cannot resolve coordinate reference ${ref}: No color space specified and relative references are not allowed here`,\n\t\t\t);\n\t\t}\n\n\t\tcoordType = type(coord);\n\n\t\tif (coordType === \"number\" || (coordType === \"string\" && coord >= 0)) {\n\t\t\t// Resolve numerical coord\n\t\t\tlet meta = Object.entries(space.coords)[coord];\n\n\t\t\tif (meta) {\n\t\t\t\treturn { space, id: meta[0], index: coord, ...meta[1] };\n\t\t\t}\n\t\t}\n\n\t\tspace = ColorSpace.get(space);\n\n\t\tlet normalizedCoord = coord.toLowerCase();\n\n\t\tlet i = 0;\n\t\tfor (let id in space.coords) {\n\t\t\tlet meta = space.coords[id];\n\n\t\t\tif (\n\t\t\t\tid.toLowerCase() === normalizedCoord ||\n\t\t\t\tmeta.name?.toLowerCase() === normalizedCoord\n\t\t\t) {\n\t\t\t\treturn { space, id, index: i, ...meta };\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\tthrow new TypeError(\n\t\t\t`No \"${coord}\" coordinate found in ${space.name}. Its coordinates are: ${Object.keys(space.coords).join(\", \")}`,\n\t\t);\n\t}\n\n\tstatic DEFAULT_FORMAT = {\n\t\ttype: \"functions\",\n\t\tname: \"color\",\n\t};\n}\n\nfunction getPath (space) {\n\tlet ret = [space];\n\n\tfor (let s = space; (s = s.base); ) {\n\t\tret.push(s);\n\t}\n\n\treturn ret;\n}\n","import ColorSpace from \"../ColorSpace.js\";\n\nexport default new ColorSpace({\n\tid: \"xyz-d65\",\n\tname: \"XYZ D65\",\n\tcoords: {\n\t\tx: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"X\",\n\t\t},\n\t\ty: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Y\",\n\t\t},\n\t\tz: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Z\",\n\t\t},\n\t},\n\twhite: \"D65\",\n\tformats: {\n\t\tcolor: {\n\t\t\tids: [\"xyz-d65\", \"xyz\"],\n\t\t},\n\t},\n\taliases: [\"xyz\"],\n});\n","import ColorSpace from \"./ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"./util.js\";\nimport adapt from \"./adapt.js\";\nimport XYZ_D65 from \"./spaces/xyz-d65.js\";\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").RGBOptions} RGBOptions */\n\n/** Convenience class for RGB color spaces */\nexport default class RGBColorSpace extends ColorSpace {\n\t/**\n\t * Creates a new RGB ColorSpace.\n\t * If coords are not specified, they will use the default RGB coords.\n\t * Instead of `fromBase()` and `toBase()` functions,\n\t * you can specify to/from XYZ matrices and have `toBase()` and `fromBase()` automatically generated.\n\t * @param {RGBOptions} options\n\t */\n\tconstructor (options) {\n\t\tif (!options.coords) {\n\t\t\toptions.coords = {\n\t\t\t\tr: {\n\t\t\t\t\trange: [0, 1],\n\t\t\t\t\tname: \"Red\",\n\t\t\t\t},\n\t\t\t\tg: {\n\t\t\t\t\trange: [0, 1],\n\t\t\t\t\tname: \"Green\",\n\t\t\t\t},\n\t\t\t\tb: {\n\t\t\t\t\trange: [0, 1],\n\t\t\t\t\tname: \"Blue\",\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif (!options.base) {\n\t\t\toptions.base = XYZ_D65;\n\t\t}\n\n\t\tif (options.toXYZ_M && options.fromXYZ_M) {\n\t\t\toptions.toBase ??= rgb => {\n\t\t\t\tlet xyz = multiply_v3_m3x3(rgb, options.toXYZ_M);\n\n\t\t\t\tif (this.white !== this.base.white) {\n\t\t\t\t\t// Perform chromatic adaptation\n\t\t\t\t\txyz = adapt(this.white, this.base.white, xyz);\n\t\t\t\t}\n\n\t\t\t\treturn xyz;\n\t\t\t};\n\n\t\t\toptions.fromBase ??= xyz => {\n\t\t\t\txyz = adapt(this.base.white, this.white, xyz);\n\t\t\t\treturn multiply_v3_m3x3(xyz, options.fromXYZ_M);\n\t\t\t};\n\t\t}\n\n\t\toptions.referred ??= \"display\";\n\n\t\tsuper(options);\n\t}\n}\n","import { isString } from \"./util.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").TryColorOptions} TryColorOptions */\n\n/**\n * Resolves a color reference (object or string) to a plain color object, or `null` if resolution fails.\n * Can resolve more complex CSS colors (e.g. relative colors, `calc()`, CSS variables, `color-mix()`, etc.) through the DOM.\n *\n * @overload\n * @param {ColorTypes} color\n * @param {TryColorOptions} [options]\n * @returns {PlainColorObject | null}\n */\n/**\n * @overload\n * @param {ColorTypes[]} color\n * @param {TryColorOptions} [options]\n * @returns {(PlainColorObject | null)[]}\n */\nexport default function tryColor (color, options = {}) {\n\tif (Array.isArray(color)) {\n\t\treturn color.map(c => tryColor(c, options));\n\t}\n\n\tlet { cssProperty = \"background-color\", element, ...getColorOptions } = options;\n\tlet error = null;\n\ttry {\n\t\treturn getColor(color, getColorOptions);\n\t}\n\tcatch (e) {\n\t\terror = e;\n\t}\n\n\tlet { CSS, getComputedStyle } = globalThis;\n\tif (isString(color) && element && CSS && getComputedStyle) {\n\t\t// Try resolving the color using the DOM, if supported in CSS\n\t\tif (CSS.supports(cssProperty, color)) {\n\t\t\tlet previousValue = element.style[cssProperty];\n\n\t\t\tif (color !== previousValue) {\n\t\t\t\telement.style[cssProperty] = color;\n\t\t\t}\n\n\t\t\tlet computedColor = getComputedStyle(element).getPropertyValue(cssProperty);\n\n\t\t\tif (color !== previousValue) {\n\t\t\t\telement.style[cssProperty] = previousValue;\n\t\t\t}\n\n\t\t\tif (computedColor !== color) {\n\t\t\t\t// getComputedStyle() changed the color, try again\n\t\t\t\ttry {\n\t\t\t\t\treturn getColor(computedColor, getColorOptions);\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Still not resolved\n\t\t\t\terror = {\n\t\t\t\t\tmessage: \"Color value is a valid CSS color, but it could not be resolved :(\",\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t// If we're here, we failed to resolve the color\n\tif (options.errorMeta) {\n\t\toptions.errorMeta.error = error;\n\t}\n\n\treturn null;\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\nimport { toPrecision } from \"./util.js\";\n\n/** @import { ColorTypes, Coords } from \"./types.js\" */\n\n/**\n * Options for {@link getAll}\n * @typedef GetAllOptions\n * @property {string | ColorSpace | undefined} [space]\n * The color space to convert to. Defaults to the color's current space\n * @property {number | undefined} [precision]\n * The number of significant digits to round the coordinates to\n */\n\n/**\n * Get the coordinates of a color in any color space\n * @overload\n * @param {ColorTypes} color\n * @param {string | ColorSpace} [options=color.space] The color space to convert to. Defaults to the color's current space\n * @returns {Coords} The color coordinates in the given color space\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {GetAllOptions} [options]\n * @returns {Coords} The color coordinates in the given color space\n */\nexport default function getAll (color, options) {\n\tcolor = getColor(color);\n\n\tlet space = ColorSpace.get(options, options?.space);\n\tlet precision = options?.precision;\n\n\tlet coords;\n\tif (!space || color.space.equals(space)) {\n\t\t// No conversion needed\n\t\tcoords = color.coords.slice();\n\t}\n\telse {\n\t\tcoords = space.from(color);\n\t}\n\n\treturn precision === undefined ? coords : coords.map(coord => toPrecision(coord, precision));\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getAll from \"./getAll.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes, Ref } from \"./types.js\" */\n\n/**\n * @param {ColorTypes} color\n * @param {Ref} prop\n * @returns {number}\n */\nexport default function get (color, prop) {\n\tcolor = getColor(color);\n\n\tif (prop === \"alpha\") {\n\t\treturn color.alpha ?? 1;\n\t}\n\n\tlet { space, index } = ColorSpace.resolveCoord(prop, color.space);\n\tlet coords = getAll(color, space);\n\treturn coords[index];\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes, Coords, PlainColorObject } from \"./types.js\" */\n\n/**\n * Set all coordinates of a color at once, in its own color space or another.\n * Modifies the color in place.\n * @overload\n * @param {ColorTypes} color\n * @param {Coords} coords Array of coordinates\n * @param {number} [alpha]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {string | ColorSpace} space The color space of the provided coordinates.\n * @param {Coords} coords Array of coordinates\n * @param {number} [alpha]\n * @returns {PlainColorObject}\n */\nexport default function setAll (color, space, coords, alpha) {\n\tcolor = getColor(color);\n\n\tif (Array.isArray(space)) {\n\t\t// Space is omitted\n\t\t[space, coords, alpha] = [color.space, space, coords];\n\t}\n\n\tspace = ColorSpace.get(space); // Make sure we have a ColorSpace object\n\tcolor.coords = space === color.space ? coords.slice() : space.to(color.space, coords);\n\n\tif (alpha !== undefined) {\n\t\tcolor.alpha = alpha;\n\t}\n\n\treturn color;\n}\n\n/** @type {\"color\"} */\nsetAll.returns = \"color\";\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\nimport get from \"./get.js\";\nimport getAll from \"./getAll.js\";\nimport setAll from \"./setAll.js\";\nimport { type } from \"./util.js\";\n\n/** @import { ColorTypes, PlainColorObject, Ref } from \"./types.js\" */\n\n/**\n * Set properties and return current instance\n * @overload\n * @param {ColorTypes} color\n * @param {Ref} prop\n * @param {number | ((coord: number) => number)} value\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {Record<string, number | ((coord: number) => number)>} props\n * @returns {PlainColorObject}\n */\nexport default function set (color, prop, value) {\n\tcolor = getColor(color);\n\n\tif (arguments.length === 2 && type(arguments[1]) === \"object\") {\n\t\t// Argument is an object literal\n\t\tlet object = arguments[1];\n\t\tfor (let p in object) {\n\t\t\tset(color, p, object[p]);\n\t\t}\n\t}\n\telse {\n\t\tif (typeof value === \"function\") {\n\t\t\tvalue = value(get(color, prop));\n\t\t}\n\n\t\tif (prop === \"alpha\") {\n\t\t\tcolor.alpha = value;\n\t\t}\n\t\telse {\n\t\t\tlet { space, index } = ColorSpace.resolveCoord(prop, color.space);\n\t\t\tlet coords = getAll(color, space);\n\t\t\tcoords[index] = value;\n\t\t\tsetAll(color, space, coords);\n\t\t}\n\t}\n\n\treturn color;\n}\n\n/** @type {\"color\"} */\nset.returns = \"color\";\n","import ColorSpace from \"../ColorSpace.js\";\nimport adapt from \"../adapt.js\";\nimport XYZ_D65 from \"./xyz-d65.js\";\n\nexport default new ColorSpace({\n\tid: \"xyz-d50\",\n\tname: \"XYZ D50\",\n\twhite: \"D50\",\n\tbase: XYZ_D65,\n\tfromBase: coords => adapt(XYZ_D65.white, \"D50\", coords),\n\ttoBase: coords => adapt(\"D50\", XYZ_D65.white, coords),\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport xyz_d50 from \"./xyz-d50.js\";\n\n// κ * ε = 2^3 = 8\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst ε3 = 24 / 116;\nconst κ = 24389 / 27; // 29^3/3^3\n\nlet white = WHITES.D50;\n\nexport default new ColorSpace({\n\tid: \"lab\",\n\tname: \"Lab\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t},\n\n\t// Assuming XYZ is relative to D50, convert to CIE Lab\n\t// from CIE standard, which now defines these as a rational fraction\n\twhite,\n\n\tbase: xyz_d50,\n\t// Convert D50-adapted XYX to Lab\n\t// CIE 15.3:2004 section 8.2.1.1\n\tfromBase (XYZ) {\n\t\t// XYZ scaled relative to reference white\n\t\tlet xyz = XYZ.map((value, i) => value / white[i]);\n\t\tlet f = xyz.map(value => (value > ε ? Math.cbrt(value) : (κ * value + 16) / 116));\n\n\t\tlet L = 116 * f[1] - 16;\n\t\tlet a = 500 * (f[0] - f[1]);\n\t\tlet b = 200 * (f[1] - f[2]);\n\n\t\treturn [L, a, b];\n\t},\n\t// Convert Lab to D50-adapted XYZ\n\t// Same result as CIE 15.3:2004 Appendix D although the derivation is different\n\t// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\ttoBase (Lab) {\n\t\t// compute f, starting with the luminance-related term\n\t\tlet [L, a, b] = Lab;\n\t\tlet f = [];\n\t\tf[1] = (L + 16) / 116;\n\t\tf[0] = a / 500 + f[1];\n\t\tf[2] = f[1] - b / 200;\n\n\t\t// compute xyz\n\t\t// prettier-ignore\n\t\tlet xyz = [\n\t\t\tf[0] > ε3 ? Math.pow(f[0], 3) : (116 * f[0] - 16) / κ,\n\t\t\tLab[0] > 8 ? Math.pow((Lab[0] + 16) / 116, 3) : Lab[0] / κ,\n\t\t\tf[2] > ε3 ? Math.pow(f[2], 3) : (116 * f[2] - 16) / κ,\n\t\t];\n\n\t\t// Compute XYZ by scaling xyz by reference white\n\t\treturn xyz.map((value, i) => value * white[i]);\n\t},\n\n\tformats: {\n\t\tlab: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import * as util from \"./util.js\";\n\n/**\n * Constrain an angle to 360 degrees\n * @param {number} angle\n * @returns {number}\n */\nexport function constrain (angle) {\n\tif (typeof angle !== \"number\") {\n\t\treturn angle;\n\t}\n\n\treturn ((angle % 360) + 360) % 360;\n}\n\n/**\n * @param {\"raw\" | \"increasing\" | \"decreasing\" | \"longer\" | \"shorter\"} arc\n * @param {[number, number]} angles\n * @returns {[number, number]}\n */\nexport function adjust (arc, angles) {\n\tlet [a1, a2] = angles;\n\n\tlet none1 = util.isNone(a1);\n\tlet none2 = util.isNone(a2);\n\n\tif (none1 && none2) {\n\t\treturn [a1, a2];\n\t}\n\telse if (none1) {\n\t\ta1 = a2;\n\t}\n\telse if (none2) {\n\t\ta2 = a1;\n\t}\n\n\tif (arc === \"raw\") {\n\t\treturn angles;\n\t}\n\n\ta1 = constrain(a1);\n\ta2 = constrain(a2);\n\n\tlet angleDiff = a2 - a1;\n\n\tif (arc === \"increasing\") {\n\t\tif (angleDiff < 0) {\n\t\t\ta2 += 360;\n\t\t}\n\t}\n\telse if (arc === \"decreasing\") {\n\t\tif (angleDiff > 0) {\n\t\t\ta1 += 360;\n\t\t}\n\t}\n\telse if (arc === \"longer\") {\n\t\tif (-180 < angleDiff && angleDiff < 180) {\n\t\t\tif (angleDiff > 0) {\n\t\t\t\ta1 += 360;\n\t\t\t}\n\t\t\telse {\n\t\t\t\ta2 += 360;\n\t\t\t}\n\t\t}\n\t}\n\telse if (arc === \"shorter\") {\n\t\tif (angleDiff > 180) {\n\t\t\ta1 += 360;\n\t\t}\n\t\telse if (angleDiff < -180) {\n\t\t\ta2 += 360;\n\t\t}\n\t}\n\n\treturn [a1, a2];\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport Lab from \"./lab.js\";\nimport { constrain as constrainAngle } from \"../angles.js\";\nimport { isNone } from \"../util.js\";\n\nexport default new ColorSpace({\n\tid: \"lch\",\n\tname: \"LCH\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 150],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: Lab,\n\tfromBase (Lab) {\n\t\t// These methods are used for other polar forms as well, so we can't hardcode the ε\n\t\tif (this.ε === undefined) {\n\t\t\t// @ts-expect-error Property 'coords' does not exist on type 'string | ColorSpace'\n\t\t\tlet range = Object.values(this.base.coords)[1].refRange;\n\t\t\tlet extent = range[1] - range[0];\n\t\t\tthis.ε = extent / 100000;\n\t\t}\n\n\t\t// Convert to polar form\n\t\tlet [L, a, b] = Lab;\n\t\tlet isAchromatic = Math.abs(a) < this.ε && Math.abs(b) < this.ε;\n\t\tlet h = isAchromatic ? null : constrainAngle((Math.atan2(b, a) * 180) / Math.PI);\n\t\tlet C = isAchromatic ? 0 : Math.sqrt(a ** 2 + b ** 2);\n\n\t\treturn [L, C, h];\n\t},\n\ttoBase (lch) {\n\t\t// Convert from polar form\n\t\tlet [L, C, h] = lch;\n\t\tlet a = null,\n\t\t\tb = null;\n\n\t\tif (!isNone(h)) {\n\t\t\tC = C < 0 ? 0 : C; // Clamp negative Chroma\n\t\t\ta = C * Math.cos((h * Math.PI) / 180);\n\t\t\tb = C * Math.sin((h * Math.PI) / 180);\n\t\t}\n\n\t\treturn [L, a, b];\n\t},\n\n\tformats: {\n\t\tlch: {\n\t\t\tcoords: [\"<percentage> | <number>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","import defaults from \"../defaults.js\";\nimport lab from \"../spaces/lab.js\";\nimport lch from \"../spaces/lch.js\";\nimport getColor from \"../getColor.js\";\n\n// deltaE2000 is a statistically significant improvement\n// and is recommended by the CIE and Idealliance\n// especially for color differences less than 10 deltaE76\n// but is wicked complicated\n// and many implementations have small errors!\n// DeltaE2000 is also discontinuous; in case this\n// matters to you, use deltaECMC instead.\n\nconst Gfactor = 25 ** 7;\nconst π = Math.PI;\nconst r2d = 180 / π;\nconst d2r = π / 180;\n\nfunction pow7 (x) {\n\t// Faster than x ** 7 or Math.pow(x, 7)\n\n\tconst x2 = x * x;\n\tconst x7 = x2 * x2 * x2 * x;\n\n\treturn x7;\n}\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @param {{ kL?: number | undefined; kC?: number | undefined; kH?: number | undefined }} options\n * @returns {number}\n */\nexport default function (color, sample, { kL = 1, kC = 1, kH = 1 } = {}) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and the function parameter as the sample,\n\t// calculate deltaE 2000.\n\n\t// This implementation assumes the parametric\n\t// weighting factors kL, kC and kH\n\t// for the influence of viewing conditions\n\t// are all 1, as sadly seems typical.\n\t// kL should be increased for lightness texture or noise\n\t// and kC increased for chroma noise\n\n\tlet [L1, a1, b1] = lab.from(color);\n\tlet C1 = lch.from(lab, [L1, a1, b1])[1];\n\tlet [L2, a2, b2] = lab.from(sample);\n\tlet C2 = lch.from(lab, [L2, a2, b2])[1];\n\n\t// Check for negative Chroma,\n\t// which might happen through\n\t// direct user input of LCH values\n\n\tif (C1 < 0) {\n\t\tC1 = 0;\n\t}\n\tif (C2 < 0) {\n\t\tC2 = 0;\n\t}\n\n\tlet Cbar = (C1 + C2) / 2; // mean Chroma\n\n\t// calculate a-axis asymmetry factor from mean Chroma\n\t// this turns JND ellipses for near-neutral colors back into circles\n\tlet C7 = pow7(Cbar);\n\n\tlet G = 0.5 * (1 - Math.sqrt(C7 / (C7 + Gfactor)));\n\n\t// scale a axes by asymmetry factor\n\t// this by the way is why there is no Lab2000 colorspace\n\tlet adash1 = (1 + G) * a1;\n\tlet adash2 = (1 + G) * a2;\n\n\t// calculate new Chroma from scaled a and original b axes\n\tlet Cdash1 = Math.sqrt(adash1 ** 2 + b1 ** 2);\n\tlet Cdash2 = Math.sqrt(adash2 ** 2 + b2 ** 2);\n\n\t// calculate new hues, with zero hue for true neutrals\n\t// and in degrees, not radians\n\n\tlet h1 = adash1 === 0 && b1 === 0 ? 0 : Math.atan2(b1, adash1);\n\tlet h2 = adash2 === 0 && b2 === 0 ? 0 : Math.atan2(b2, adash2);\n\n\tif (h1 < 0) {\n\t\th1 += 2 * π;\n\t}\n\tif (h2 < 0) {\n\t\th2 += 2 * π;\n\t}\n\n\th1 *= r2d;\n\th2 *= r2d;\n\n\t// Lightness and Chroma differences; sign matters\n\tlet ΔL = L2 - L1;\n\tlet ΔC = Cdash2 - Cdash1;\n\n\t// Hue difference, getting the sign correct\n\tlet hdiff = h2 - h1;\n\tlet hsum = h1 + h2;\n\tlet habs = Math.abs(hdiff);\n\tlet Δh;\n\n\tif (Cdash1 * Cdash2 === 0) {\n\t\tΔh = 0;\n\t}\n\telse if (habs <= 180) {\n\t\tΔh = hdiff;\n\t}\n\telse if (hdiff > 180) {\n\t\tΔh = hdiff - 360;\n\t}\n\telse if (hdiff < -180) {\n\t\tΔh = hdiff + 360;\n\t}\n\telse {\n\t\tdefaults.warn(\"the unthinkable has happened\");\n\t}\n\n\t// weighted Hue difference, more for larger Chroma\n\tlet ΔH = 2 * Math.sqrt(Cdash2 * Cdash1) * Math.sin((Δh * d2r) / 2);\n\n\t// calculate mean Lightness and Chroma\n\tlet Ldash = (L1 + L2) / 2;\n\tlet Cdash = (Cdash1 + Cdash2) / 2;\n\tlet Cdash7 = pow7(Cdash);\n\n\t// Compensate for non-linearity in the blue region of Lab.\n\t// Four possibilities for hue weighting factor,\n\t// depending on the angles, to get the correct sign\n\tlet hdash;\n\tif (Cdash1 * Cdash2 === 0) {\n\t\thdash = hsum; // which should be zero\n\t}\n\telse if (habs <= 180) {\n\t\thdash = hsum / 2;\n\t}\n\telse if (hsum < 360) {\n\t\thdash = (hsum + 360) / 2;\n\t}\n\telse {\n\t\thdash = (hsum - 360) / 2;\n\t}\n\n\t// positional corrections to the lack of uniformity of CIELAB\n\t// These are all trying to make JND ellipsoids more like spheres\n\n\t// SL Lightness crispening factor\n\t// a background with L=50 is assumed\n\tlet lsq = (Ldash - 50) ** 2;\n\tlet SL = 1 + (0.015 * lsq) / Math.sqrt(20 + lsq);\n\n\t// SC Chroma factor, similar to those in CMC and deltaE 94 formulae\n\tlet SC = 1 + 0.045 * Cdash;\n\n\t// Cross term T for blue non-linearity\n\tlet T = 1;\n\tT -= 0.17 * Math.cos((hdash - 30) * d2r);\n\tT += 0.24 * Math.cos(2 * hdash * d2r);\n\tT += 0.32 * Math.cos((3 * hdash + 6) * d2r);\n\tT -= 0.2 * Math.cos((4 * hdash - 63) * d2r);\n\n\t// SH Hue factor depends on Chroma,\n\t// as well as adjusted hue angle like deltaE94.\n\tlet SH = 1 + 0.015 * Cdash * T;\n\n\t// RT Hue rotation term compensates for rotation of JND ellipses\n\t// and Munsell constant hue lines\n\t// in the medium-high Chroma blue region\n\t// (Hue 225 to 315)\n\tlet Δθ = 30 * Math.exp(-1 * ((hdash - 275) / 25) ** 2);\n\tlet RC = 2 * Math.sqrt(Cdash7 / (Cdash7 + Gfactor));\n\tlet RT = -1 * Math.sin(2 * Δθ * d2r) * RC;\n\n\t// Finally calculate the deltaE, term by term as root sume of squares\n\tlet dE = (ΔL / (kL * SL)) ** 2;\n\tdE += (ΔC / (kC * SC)) ** 2;\n\tdE += (ΔH / (kH * SH)) ** 2;\n\tdE += RT * (ΔC / (kC * SC)) * (ΔH / (kH * SH));\n\treturn Math.sqrt(dE);\n\t// Yay!!!\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"../util.js\";\nimport XYZ_D65 from \"./xyz-d65.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// Recalculated for consistent reference white\n// see https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-943521484\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst XYZtoLMS_M = [\n\t[ 0.8190224379967030, 0.3619062600528904, -0.1288737815209879 ],\n\t[ 0.0329836539323885, 0.9292868615863434, 0.0361446663506424 ],\n\t[ 0.0481771893596242, 0.2642395317527308, 0.6335478284694309 ],\n];\n// inverse of XYZtoLMS_M\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst LMStoXYZ_M = [\n\t[ 1.2268798758459243, -0.5578149944602171, 0.2813910456659647 ],\n\t[ -0.0405757452148008, 1.1122868032803170, -0.0717110580655164 ],\n\t[ -0.0763729366746601, -0.4214933324022432, 1.5869240198367816 ],\n];\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const LMStoLab_M = [\n\t[ 0.2104542683093140, 0.7936177747023054, -0.0040720430116193 ],\n\t[ 1.9779985324311684, -2.4285922420485799, 0.4505937096174110 ],\n\t[ 0.0259040424655478, 0.7827717124575296, -0.8086757549230774 ],\n];\n// LMStoIab_M inverted\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const LabtoLMS_M = [\n\t[ 1.0000000000000000, 0.3963377773761749, 0.2158037573099136 ],\n\t[ 1.0000000000000000, -0.1055613458156586, -0.0638541728258133 ],\n\t[ 1.0000000000000000, -0.0894841775298119, -1.2914855480194092 ],\n];\n\nexport default new ColorSpace({\n\tid: \"oklab\",\n\tname: \"Oklab\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t},\n\n\t// Note that XYZ is relative to D65\n\twhite: \"D65\",\n\tbase: XYZ_D65,\n\tfromBase (XYZ) {\n\t\t// move to LMS cone domain\n\t\tlet LMS = multiply_v3_m3x3(XYZ, XYZtoLMS_M);\n\n\t\t// non-linearity\n\t\tLMS[0] = Math.cbrt(LMS[0]);\n\t\tLMS[1] = Math.cbrt(LMS[1]);\n\t\tLMS[2] = Math.cbrt(LMS[2]);\n\n\t\treturn multiply_v3_m3x3(LMS, LMStoLab_M, LMS);\n\t},\n\ttoBase (OKLab) {\n\t\t// move to LMS cone domain\n\t\tlet LMSg = multiply_v3_m3x3(OKLab, LabtoLMS_M);\n\n\t\t// restore linearity\n\t\tLMSg[0] = LMSg[0] ** 3;\n\t\tLMSg[1] = LMSg[1] ** 3;\n\t\tLMSg[2] = LMSg[2] ** 3;\n\n\t\treturn multiply_v3_m3x3(LMSg, LMStoXYZ_M, LMSg);\n\t},\n\n\tformats: {\n\t\toklab: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import oklab from \"../spaces/oklab.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * More accurate color-difference formulae\n * than the simple 1976 Euclidean distance in CIE Lab\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaEOK, term by term as root sum of squares\n\tlet [L1, a1, b1] = oklab.from(color);\n\tlet [L2, a2, b2] = oklab.from(sample);\n\tlet ΔL = L1 - L2;\n\tlet Δa = a1 - a2;\n\tlet Δb = b1 - b2;\n\treturn Math.sqrt(ΔL ** 2 + Δa ** 2 + Δb ** 2);\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport getColor from \"./getColor.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\nconst ε = 0.000075;\n\n/**\n * Check if a color is in gamut of either its own or another color space\n * @param {ColorTypes} color\n * @param {string | ColorSpace} [space]\n * @param {{ epsilon?: number | undefined }} [param2]\n * @returns {boolean}\n */\nexport default function inGamut (color, space, { epsilon = ε } = {}) {\n\tcolor = getColor(color);\n\n\tif (!space) {\n\t\tspace = color.space;\n\t}\n\n\tspace = ColorSpace.get(space);\n\tlet coords = color.coords;\n\n\tif (space !== color.space) {\n\t\tcoords = space.from(color);\n\t}\n\n\treturn space.inGamut(coords, { epsilon });\n}\n","/** @import { Coords, PlainColorObject } from \"./types.js\" */\n\n/**\n * @param {PlainColorObject} color\n * @returns {PlainColorObject}\n */\nexport default function clone (color) {\n\treturn {\n\t\tspace: color.space,\n\t\tcoords: /** @type {Coords} */ (color.coords.slice()),\n\t\talpha: color.alpha,\n\t};\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport { isNone } from \"./util.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n/**\n * Euclidean distance of colors in an arbitrary color space\n * @param {ColorTypes} color1\n * @param {ColorTypes} color2\n * @param {string | ColorSpace} space\n * @returns {number}\n */\nexport default function distance (color1, color2, space = \"lab\") {\n\tspace = ColorSpace.get(space);\n\n\t// Assume getColor() is called on color in space.from()\n\tlet coords1 = space.from(color1);\n\tlet coords2 = space.from(color2);\n\n\treturn Math.sqrt(\n\t\tcoords1.reduce((acc, c1, i) => {\n\t\t\tlet c2 = coords2[i];\n\t\t\tif (isNone(c1) || isNone(c2)) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\treturn acc + (c2 - c1) ** 2;\n\t\t}, 0),\n\t);\n}\n","import distance from \"../distance.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function deltaE76 (color, sample) {\n\t// Assume getColor() is called in the distance function\n\treturn distance(color, sample, \"lab\");\n}\n","import lab from \"../spaces/lab.js\";\nimport lch from \"../spaces/lch.js\";\nimport getColor from \"../getColor.js\";\nimport { isNone } from \"../util.js\";\n\n// More accurate color-difference formulae\n// than the simple 1976 Euclidean distance in Lab\n\n// CMC by the Color Measurement Committee of the\n// Bradford Society of Dyeists and Colorsts, 1994.\n// Uses LCH rather than Lab,\n// with different weights for L, C and H differences\n// A nice increase in accuracy for modest increase in complexity\nconst π = Math.PI;\nconst d2r = π / 180;\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @param {{ l?: number | undefined; c?: number | undefined }} options\n * @returns {number}\n */\nexport default function (color, sample, { l = 2, c = 1 } = {}) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaE CMC.\n\n\t// This implementation assumes the parametric\n\t// weighting factors l:c are 2:1\n\t// which is typical for non-textile uses.\n\n\tlet [L1, a1, b1] = lab.from(color);\n\tlet [, C1, H1] = lch.from(lab, [L1, a1, b1]);\n\tlet [L2, a2, b2] = lab.from(sample);\n\tlet C2 = lch.from(lab, [L2, a2, b2])[1];\n\n\t// let [L1, a1, b1] = color.getAll(lab);\n\t// let C1 = color.get(\"lch.c\");\n\t// let H1 = color.get(\"lch.h\");\n\t// let [L2, a2, b2] = sample.getAll(lab);\n\t// let C2 = sample.get(\"lch.c\");\n\n\t// Check for negative Chroma,\n\t// which might happen through\n\t// direct user input of LCH values\n\n\tif (C1 < 0) {\n\t\tC1 = 0;\n\t}\n\tif (C2 < 0) {\n\t\tC2 = 0;\n\t}\n\n\t// we don't need H2 as ΔH is calculated from Δa, Δb and ΔC\n\n\t// Lightness and Chroma differences\n\t// These are (color - sample), unlike deltaE2000\n\tlet ΔL = L1 - L2;\n\tlet ΔC = C1 - C2;\n\n\tlet Δa = a1 - a2;\n\tlet Δb = b1 - b2;\n\n\t// weighted Hue difference, less for larger Chroma difference\n\n\tlet H2 = Δa ** 2 + Δb ** 2 - ΔC ** 2;\n\t// due to roundoff error it is possible that, for zero a and b,\n\t// ΔC > Δa + Δb is 0, resulting in attempting\n\t// to take the square root of a negative number\n\n\t// trying instead the equation from Industrial Color Physics\n\t// By Georg A. Klein\n\n\t// let ΔH = ((a1 * b2) - (a2 * b1)) / Math.sqrt(0.5 * ((C2 * C1) + (a2 * a1) + (b2 * b1)));\n\t// console.log({ΔH});\n\t// This gives the same result to 12 decimal places\n\t// except it sometimes NaNs when trying to root a negative number\n\n\t// let ΔH = Math.sqrt(H2); we never actually use the root, it gets squared again!!\n\n\t// positional corrections to the lack of uniformity of CIELAB\n\t// These are all trying to make JND ellipsoids more like spheres\n\n\t// SL Lightness crispening factor, depends entirely on L1 not L2\n\tlet SL = 0.511; // linear portion of the Y to L transfer function\n\tif (L1 >= 16) {\n\t\t// cubic portion\n\t\tSL = (0.040975 * L1) / (1 + 0.01765 * L1);\n\t}\n\n\t// SC Chroma factor\n\tlet SC = (0.0638 * C1) / (1 + 0.0131 * C1) + 0.638;\n\n\t// Cross term T for blue non-linearity\n\tlet T;\n\tif (isNone(H1)) {\n\t\tH1 = 0;\n\t}\n\n\tif (H1 >= 164 && H1 <= 345) {\n\t\tT = 0.56 + Math.abs(0.2 * Math.cos((H1 + 168) * d2r));\n\t}\n\telse {\n\t\tT = 0.36 + Math.abs(0.4 * Math.cos((H1 + 35) * d2r));\n\t}\n\t// console.log({T});\n\n\t// SH Hue factor also depends on C1,\n\tlet C4 = Math.pow(C1, 4);\n\tlet F = Math.sqrt(C4 / (C4 + 1900));\n\tlet SH = SC * (F * T + 1 - F);\n\n\t// Finally calculate the deltaE, term by term as root sume of squares\n\tlet dE = (ΔL / (l * SL)) ** 2;\n\tdE += (ΔC / (c * SC)) ** 2;\n\tdE += H2 / SH ** 2;\n\t// dE += (ΔH / SH) ** 2;\n\treturn Math.sqrt(dE);\n\t// Yay!!!\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport XYZ_D65 from \"./xyz-d65.js\";\n\nconst Yw = 203; // absolute luminance of media white\n\nexport default new ColorSpace({\n\t// Absolute CIE XYZ, with a D65 whitepoint,\n\t// as used in most HDR colorspaces as a starting point.\n\t// SDR spaces are converted per BT.2048\n\t// so that diffuse, media white is 203 cd/m²\n\tid: \"xyz-abs-d65\",\n\tcssId: \"--xyz-abs-d65\",\n\tname: \"Absolute XYZ D65\",\n\tcoords: {\n\t\tx: {\n\t\t\trefRange: [0, 9504.7],\n\t\t\tname: \"Xa\",\n\t\t},\n\t\ty: {\n\t\t\trefRange: [0, 10000],\n\t\t\tname: \"Ya\",\n\t\t},\n\t\tz: {\n\t\t\trefRange: [0, 10888.3],\n\t\t\tname: \"Za\",\n\t\t},\n\t},\n\n\tbase: XYZ_D65,\n\tfromBase (XYZ) {\n\t\t// Make XYZ absolute, not relative to media white\n\t\t// Maximum luminance in PQ is 10,000 cd/m²\n\t\t// Relative XYZ has Y=1 for media white\n\t\treturn XYZ.map(v => v * Yw);\n\t},\n\ttoBase (AbsXYZ) {\n\t\t// Convert to media-white relative XYZ\n\t\treturn AbsXYZ.map(v => v / Yw);\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"../util.js\";\nimport XYZ_Abs_D65 from \"./xyz-abs-d65.js\";\nimport { spow } from \"../util.js\";\n\n/** @import { Matrix3x3, Vector3 } from \"../types.js\" */\n\nconst b = 1.15;\nconst g = 0.66;\nconst n = 2610 / 2 ** 14;\nconst ninv = 2 ** 14 / 2610;\nconst c1 = 3424 / 2 ** 12;\nconst c2 = 2413 / 2 ** 7;\nconst c3 = 2392 / 2 ** 7;\nconst p = (1.7 * 2523) / 2 ** 5;\nconst pinv = 2 ** 5 / (1.7 * 2523);\nconst d = -0.56;\nconst d0 = 1.6295499532821566e-11;\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst XYZtoCone_M = [\n\t[ 0.41478972, 0.579999, 0.0146480 ],\n\t[ -0.2015100, 1.120649, 0.0531008 ],\n\t[ -0.0166008, 0.264800, 0.6684799 ],\n];\n// XYZtoCone_M inverted\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst ConetoXYZ_M = [\n\t[ 1.9242264357876067, -1.0047923125953657, 0.037651404030618 ],\n\t[ 0.35031676209499907, 0.7264811939316552, -0.06538442294808501 ],\n\t[ -0.09098281098284752, -0.3127282905230739, 1.5227665613052603 ],\n];\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst ConetoIab_M = [\n\t[ 0.5, 0.5, 0 ],\n\t[ 3.524000, -4.066708, 0.542708 ],\n\t[ 0.199076, 1.096799, -1.295875 ],\n];\n// ConetoIab_M inverted\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst IabtoCone_M = [\n\t[ 1, 0.13860504327153927, 0.05804731615611883 ],\n\t[ 1, -0.1386050432715393, -0.058047316156118904 ],\n\t[ 1, -0.09601924202631895, -0.81189189605603900 ],\n];\n\nexport default new ColorSpace({\n\tid: \"jzazbz\",\n\tname: \"Jzazbz\",\n\tcoords: {\n\t\tjz: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Jz\",\n\t\t},\n\t\taz: {\n\t\t\trefRange: [-0.21, 0.21],\n\t\t},\n\t\tbz: {\n\t\t\trefRange: [-0.21, 0.21],\n\t\t},\n\t},\n\n\tbase: XYZ_Abs_D65,\n\tfromBase (XYZ) {\n\t\t// First make XYZ absolute, not relative to media white\n\t\t// Maximum luminance in PQ is 10,000 cd/m²\n\t\t// Relative XYZ has Y=1 for media white\n\t\t// BT.2048 says media white Y=203 at PQ 58\n\n\t\tlet [Xa, Ya, Za] = XYZ;\n\n\t\t// modify X and Y to minimize blue curvature\n\t\tlet Xm = b * Xa - (b - 1) * Za;\n\t\tlet Ym = g * Ya - (g - 1) * Xa;\n\n\t\t// move to LMS cone domain\n\t\tlet LMS = multiply_v3_m3x3([Xm, Ym, Za], XYZtoCone_M);\n\n\t\t// PQ-encode LMS\n\t\tlet PQLMS = /** @type {Vector3} } */ (\n\t\t\tLMS.map(function (val) {\n\t\t\t\tlet num = c1 + c2 * spow(val / 10000, n);\n\t\t\t\tlet denom = 1 + c3 * spow(val / 10000, n);\n\n\t\t\t\treturn spow(num / denom, p);\n\t\t\t})\n\t\t);\n\n\t\t// almost there, calculate Iz az bz\n\t\tlet [Iz, az, bz] = multiply_v3_m3x3(PQLMS, ConetoIab_M);\n\t\t// console.log({Iz, az, bz});\n\n\t\tlet Jz = ((1 + d) * Iz) / (1 + d * Iz) - d0;\n\t\treturn [Jz, az, bz];\n\t},\n\ttoBase (Jzazbz) {\n\t\tlet [Jz, az, bz] = Jzazbz;\n\t\tlet Iz = (Jz + d0) / (1 + d - d * (Jz + d0));\n\n\t\t// bring into LMS cone domain\n\t\tlet PQLMS = multiply_v3_m3x3([Iz, az, bz], IabtoCone_M);\n\n\t\t// convert from PQ-coded to linear-light\n\t\tlet LMS = /** @type {Vector3} } */ (\n\t\t\tPQLMS.map(function (val) {\n\t\t\t\tlet num = c1 - spow(val, pinv);\n\t\t\t\tlet denom = c3 * spow(val, pinv) - c2;\n\t\t\t\tlet x = 10000 * spow(num / denom, ninv);\n\n\t\t\t\treturn x; // luminance relative to diffuse white, [0, 70 or so].\n\t\t\t})\n\t\t);\n\n\t\t// modified abs XYZ\n\t\tlet [Xm, Ym, Za] = multiply_v3_m3x3(LMS, ConetoXYZ_M);\n\n\t\t// un-modify X and Y to get D65 XYZ, relative to media white\n\t\tlet Xa = (Xm + (b - 1) * Za) / b;\n\t\tlet Ya = (Ym + (g - 1) * Xa) / g;\n\t\treturn [Xa, Ya, Za];\n\t},\n\n\tformats: {\n\t\t// https://drafts.csswg.org/css-color-hdr/#Jzazbz\n\t\tjzazbz: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport Jzazbz from \"./jzazbz.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"jzczhz\",\n\tname: \"JzCzHz\",\n\tcoords: {\n\t\tjz: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Jz\",\n\t\t},\n\t\tcz: {\n\t\t\trefRange: [0, 0.26],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\thz: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: Jzazbz,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\t// https://drafts.csswg.org/css-color-hdr/#JzCzhz\n\t\tjzczhz: {\n\t\t\tcoords: [\"<percentage> | <number>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","import jzczhz from \"../spaces/jzczhz.js\";\nimport getColor from \"../getColor.js\";\nimport { isNone } from \"../util.js\";\n\n/**\n * More accurate color-difference formulae\n * than the simple 1976 Euclidean distance in Lab\n *\n * Uses JzCzHz, which has improved perceptual uniformity\n * and thus a simple Euclidean root-sum of ΔL² ΔC² ΔH²\n * gives good results.\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaE in JzCzHz.\n\tlet [Jz1, Cz1, Hz1] = jzczhz.from(color);\n\tlet [Jz2, Cz2, Hz2] = jzczhz.from(sample);\n\n\t// Lightness and Chroma differences\n\t// sign does not matter as they are squared.\n\tlet ΔJ = Jz1 - Jz2;\n\tlet ΔC = Cz1 - Cz2;\n\n\t// length of chord for ΔH\n\tif (isNone(Hz1) && isNone(Hz2)) {\n\t\t// both undefined hues\n\t\tHz1 = 0;\n\t\tHz2 = 0;\n\t}\n\telse if (isNone(Hz1)) {\n\t\t// one undefined, set to the defined hue\n\t\tHz1 = Hz2;\n\t}\n\telse if (isNone(Hz2)) {\n\t\tHz2 = Hz1;\n\t}\n\n\tlet Δh = Hz1 - Hz2;\n\tlet ΔH = 2 * Math.sqrt(Cz1 * Cz2) * Math.sin((Δh / 2) * (Math.PI / 180));\n\n\treturn Math.sqrt(ΔJ ** 2 + ΔC ** 2 + ΔH ** 2);\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3 } from \"../util.js\";\nimport XYZ_Abs_D65 from \"./xyz-abs-d65.js\";\n\n/** @import { Matrix3x3, Vector3 } from \"../types.js\" */\n\nconst c1 = 3424 / 4096;\nconst c2 = 2413 / 128;\nconst c3 = 2392 / 128;\nconst m1 = 2610 / 16384;\nconst m2 = 2523 / 32;\nconst im1 = 16384 / 2610;\nconst im2 = 32 / 2523;\n\n// The matrix below includes the 4% crosstalk components\n// and is from the Dolby \"What is ICtCp\" paper\"\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst XYZtoLMS_M = [\n\t[ 0.3592832590121217, 0.6976051147779502, -0.0358915932320290 ],\n\t[ -0.1920808463704993, 1.1004767970374321, 0.0753748658519118 ],\n\t[ 0.0070797844607479, 0.0748396662186362, 0.8433265453898765 ],\n];\n// linear-light Rec.2020 to LMS, again with crosstalk\n// rational terms from Jan Fröhlich,\n// Encoding High Dynamic Range andWide Color Gamut Imagery, p.97\n// and ITU-R BT.2124-0 p.2\n/*\nconst Rec2020toLMS_M = [\n\t[ 1688 / 4096, 2146 / 4096, 262 / 4096 ],\n\t[ 683 / 4096, 2951 / 4096, 462 / 4096 ],\n\t[ 99 / 4096, 309 / 4096, 3688 / 4096 ]\n];\n*/\n// this includes the Ebner LMS coefficients,\n// the rotation, and the scaling to [-0.5,0.5] range\n// rational terms from Fröhlich p.97\n// and ITU-R BT.2124-0 pp.2-3\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst LMStoIPT_M = [\n\t[ 2048 / 4096, 2048 / 4096, 0 ],\n\t[ 6610 / 4096, -13613 / 4096, 7003 / 4096 ],\n\t[ 17933 / 4096, -17390 / 4096, -543 / 4096 ],\n];\n\n// inverted matrices, calculated from the above\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst IPTtoLMS_M = [\n\t[ 0.9999999999999998, 0.0086090370379328, 0.1110296250030260 ],\n\t[ 0.9999999999999998, -0.0086090370379328, -0.1110296250030259 ],\n\t[ 0.9999999999999998, 0.5600313357106791, -0.3206271749873188 ],\n];\n/*\n// prettier-ignore\nconst LMStoRec2020_M = [\n\t[ 3.4375568932814012112, -2.5072112125095058195, 0.069654319228104608382],\n\t[-0.79142868665644156125, 1.9838372198740089874, -0.19240853321756742626 ],\n\t[-0.025646662911506476363, -0.099240248643945566751, 1.1248869115554520431 ]\n];\n*/\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst LMStoXYZ_M = [\n\t[ 2.0701522183894223, -1.3263473389671563, 0.2066510476294053 ],\n\t[ 0.3647385209748072, 0.6805660249472273, -0.0453045459220347 ],\n\t[ -0.0497472075358123, -0.0492609666966131, 1.1880659249923042 ],\n];\n\n// Only the PQ form of ICtCp is implemented here. There is also an HLG form.\n// from Dolby, \"WHAT IS ICTCP?\"\n// https://professional.dolby.com/siteassets/pdfs/ictcp_dolbywhitepaper_v071.pdf\n// and\n// Dolby, \"Perceptual Color Volume\n// Measuring the Distinguishable Colors of HDR and WCG Displays\"\n// https://professional.dolby.com/siteassets/pdfs/dolby-vision-measuring-perceptual-color-volume-v7.1.pdf\nexport default new ColorSpace({\n\tid: \"ictcp\",\n\tname: \"ICTCP\",\n\t// From BT.2100-2 page 7:\n\t// During production, signal values are expected to exceed the\n\t// range E′ = [0.0 : 1.0]. This provides processing headroom and avoids\n\t// signal degradation during cascaded processing. Such values of E′,\n\t// below 0.0 or exceeding 1.0, should not be clipped during production\n\t// and exchange.\n\t// Values below 0.0 should not be clipped in reference displays (even\n\t// though they represent “negative” light) to allow the black level of\n\t// the signal (LB) to be properly set using test signals known as “PLUGE”\n\tcoords: {\n\t\ti: {\n\t\t\trefRange: [0, 1], // Constant luminance,\n\t\t\tname: \"I\",\n\t\t},\n\t\tct: {\n\t\t\trefRange: [-0.5, 0.5], // Full BT.2020 gamut in range [-0.5, 0.5]\n\t\t\tname: \"CT\",\n\t\t},\n\t\tcp: {\n\t\t\trefRange: [-0.5, 0.5],\n\t\t\tname: \"CP\",\n\t\t},\n\t},\n\n\tbase: XYZ_Abs_D65,\n\tfromBase (XYZ) {\n\t\t// move to LMS cone domain\n\t\tlet LMS = multiply_v3_m3x3(XYZ, XYZtoLMS_M);\n\n\t\treturn LMStoICtCp(LMS);\n\t},\n\ttoBase (ICtCp) {\n\t\tlet LMS = ICtCptoLMS(ICtCp);\n\n\t\treturn multiply_v3_m3x3(LMS, LMStoXYZ_M);\n\t},\n\n\tformats: {\n\t\tictcp: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n\n/**\n *\n * @param {Vector3} LMS\n * @returns {Vector3}\n */\nfunction LMStoICtCp (LMS) {\n\t// apply the PQ EOTF\n\t// we can't ever be dividing by zero because of the \"1 +\" in the denominator\n\tlet PQLMS = /** @type {Vector3} */ (\n\t\tLMS.map(function (val) {\n\t\t\tlet num = c1 + c2 * (val / 10000) ** m1;\n\t\t\tlet denom = 1 + c3 * (val / 10000) ** m1;\n\n\t\t\treturn (num / denom) ** m2;\n\t\t})\n\t);\n\n\t// LMS to IPT, with rotation for Y'C'bC'r compatibility\n\treturn multiply_v3_m3x3(PQLMS, LMStoIPT_M);\n}\n\n/**\n *\n * @param {Vector3} ICtCp\n * @returns {Vector3}\n */\nfunction ICtCptoLMS (ICtCp) {\n\tlet PQLMS = multiply_v3_m3x3(ICtCp, IPTtoLMS_M);\n\n\t// From BT.2124-0 Annex 2 Conversion 3\n\tlet LMS = /** @type {Vector3} */ (\n\t\tPQLMS.map(function (val) {\n\t\t\tlet num = Math.max(val ** im2 - c1, 0);\n\t\t\tlet denom = c2 - c3 * val ** im2;\n\t\t\treturn 10000 * (num / denom) ** im1;\n\t\t})\n\t);\n\n\treturn LMS;\n}\n","import ictcp from \"../spaces/ictcp.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * Delta E in ICtCp space,\n * which the ITU calls Delta E ITP, which is shorter.\n * Formulae from ITU Rec. ITU-R BT.2124-0\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaE in ICtCp\n\t// which is simply the Euclidean distance\n\n\tlet [I1, T1, P1] = ictcp.from(color);\n\tlet [I2, T2, P2] = ictcp.from(sample);\n\n\t// the 0.25 factor is to undo the encoding scaling in Ct\n\t// the 720 is so that 1 deltaE = 1 JND\n\t// per ITU-R BT.2124-0 p.3\n\n\treturn 720 * Math.sqrt((I1 - I2) ** 2 + 0.25 * (T1 - T2) ** 2 + (P1 - P2) ** 2);\n}\n","import oklab from \"../spaces/oklab.js\";\nimport getColor from \"../getColor.js\";\n\n/**\n * More accurate color-difference formulae\n * than the simple 1976 Euclidean distance in CIE Lab\n * The Oklab a and b axes are scaled relative to the L axis, for better uniformity\n * Björn Ottosson said:\n * \"I've recently done some tests with color distance datasets as implemented\n * in Colorio and on both the Combvd dataset and the OSA-UCS dataset a\n * scale factor of slightly more than 2 for a and b would give the best results\n * (2.016 works best for Combvd and 2.045 for the OSA-UCS dataset).\"\n * @see {@link <https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-945714988>}\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\t// Given this color as the reference\n\t// and a sample,\n\t// calculate deltaEOK2, term by term as root sum of squares\n\tlet abscale = 2;\n\tlet [L1, a1, b1] = oklab.from(color);\n\tlet [L2, a2, b2] = oklab.from(sample);\n\tlet ΔL = L1 - L2;\n\tlet Δa = abscale * (a1 - a2);\n\tlet Δb = abscale * (b1 - b2);\n\treturn Math.sqrt(ΔL ** 2 + Δa ** 2 + Δb ** 2);\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { multiply_v3_m3x3, interpolate, copySign, spow, zdiv, bisectLeft } from \"../util.js\";\nimport { constrain } from \"../angles.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\nimport { WHITES } from \"../adapt.js\";\n\n/** @import { Coords, Matrix3x3, Vector3 } from \"../types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"../types.js\").Cam16Object} Cam16Object */\n/** @typedef {import(\"../types.js\").Cam16Input} Cam16Input */\n/** @typedef {import(\"../types.js\").Cam16Environment} Cam16Environment */\n\nconst white = WHITES.D65;\nconst adaptedCoef = 0.42;\nconst adaptedCoefInv = 1 / adaptedCoef;\nconst tau = 2 * Math.PI;\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst cat16 = [\n\t[ 0.401288, 0.650173, -0.051461 ],\n\t[ -0.250268, 1.204414, 0.045854 ],\n\t[ -0.002079, 0.048952, 0.953127 ],\n];\n\n/** @type {Matrix3x3} */\nconst cat16Inv = [\n\t[1.8620678550872327, -1.0112546305316843, 0.14918677544445175],\n\t[0.38752654323613717, 0.6214474419314753, -0.008973985167612518],\n\t[-0.015841498849333856, -0.03412293802851557, 1.0499644368778496],\n];\n\n/** @type {Matrix3x3} */\nconst m1 = [\n\t[460.0, 451.0, 288.0],\n\t[460.0, -891.0, -261.0],\n\t[460.0, -220.0, -6300.0],\n];\n\nconst surroundMap = {\n\tdark: [0.8, 0.525, 0.8],\n\tdim: [0.9, 0.59, 0.9],\n\taverage: [1, 0.69, 1],\n};\n\nconst hueQuadMap = {\n\t// Red, Yellow, Green, Blue, Red\n\th: [20.14, 90.0, 164.25, 237.53, 380.14],\n\te: [0.8, 0.7, 1.0, 1.2, 0.8],\n\tH: [0.0, 100.0, 200.0, 300.0, 400.0],\n};\n\nconst rad2deg = 180 / Math.PI;\nconst deg2rad = Math.PI / 180;\n\n/**\n * @param {Coords} coords\n * @param {number} fl\n * @returns {[number, number, number]}\n */\nexport function adapt (coords, fl) {\n\tconst temp = /** @type {[number, number, number]} */ (\n\t\tcoords.map(c => {\n\t\t\tconst x = spow(fl * Math.abs(c) * 0.01, adaptedCoef);\n\t\t\treturn (400 * copySign(x, c)) / (x + 27.13);\n\t\t})\n\t);\n\treturn temp;\n}\n\n/**\n * @param {Coords} adapted\n * @param {number} fl\n * @returns {[number, number, number]}\n */\nexport function unadapt (adapted, fl) {\n\tconst constant = (100 / fl) * 27.13 ** adaptedCoefInv;\n\treturn /** @type {[number, number, number]} */ (\n\t\tadapted.map(c => {\n\t\t\tconst cabs = Math.abs(c);\n\t\t\treturn copySign(constant * spow(cabs / (400 - cabs), adaptedCoefInv), c);\n\t\t})\n\t);\n}\n\n/**\n * @param {number} h\n */\nexport function hueQuadrature (h) {\n\tlet hp = constrain(h);\n\tif (hp <= hueQuadMap.h[0]) {\n\t\thp += 360;\n\t}\n\n\tconst i = bisectLeft(hueQuadMap.h, hp) - 1;\n\tconst [hi, hii] = hueQuadMap.h.slice(i, i + 2);\n\tconst [ei, eii] = hueQuadMap.e.slice(i, i + 2);\n\tconst Hi = hueQuadMap.H[i];\n\n\tconst t = (hp - hi) / ei;\n\treturn Hi + (100 * t) / (t + (hii - hp) / eii);\n}\n\n/**\n * @param {number} H\n */\nexport function invHueQuadrature (H) {\n\tlet Hp = ((H % 400) + 400) % 400;\n\tconst i = Math.floor(0.01 * Hp);\n\tHp = Hp % 100;\n\tconst [hi, hii] = hueQuadMap.h.slice(i, i + 2);\n\tconst [ei, eii] = hueQuadMap.e.slice(i, i + 2);\n\n\treturn constrain((Hp * (eii * hi - ei * hii) - 100 * hi * eii) / (Hp * (eii - ei) - 100 * eii));\n}\n\n/**\n * @param {[number, number, number]} refWhite\n * @param {number} adaptingLuminance\n * @param {number} backgroundLuminance\n * @param {keyof typeof surroundMap} surround\n * @param {boolean} discounting\n * @returns {Cam16Environment}\n */\nexport function environment (\n\trefWhite,\n\tadaptingLuminance,\n\tbackgroundLuminance,\n\tsurround,\n\tdiscounting,\n) {\n\tconst env = {};\n\n\tenv.discounting = discounting;\n\tenv.refWhite = refWhite;\n\tenv.surround = surround;\n\tconst xyzW = /** @type {Vector3} */ (\n\t\trefWhite.map(c => {\n\t\t\treturn c * 100;\n\t\t})\n\t);\n\n\t// The average luminance of the environment in `cd/m^2cd/m` (a.k.a. nits)\n\tenv.la = adaptingLuminance;\n\t// The relative luminance of the nearby background\n\tenv.yb = backgroundLuminance;\n\t// Absolute luminance of the reference white.\n\tconst yw = xyzW[1];\n\n\t// Cone response for reference white\n\tconst rgbW = multiply_v3_m3x3(xyzW, cat16);\n\n\t// Surround: dark, dim, and average\n\tlet values = surroundMap[env.surround];\n\tconst f = values[0];\n\tenv.c = values[1];\n\tenv.nc = values[2];\n\n\tconst k = 1 / (5 * env.la + 1);\n\tconst k4 = k ** 4;\n\n\t// Factor of luminance level adaptation\n\tenv.fl = k4 * env.la + 0.1 * (1 - k4) * (1 - k4) * Math.cbrt(5 * env.la);\n\tenv.flRoot = env.fl ** 0.25;\n\n\tenv.n = env.yb / yw;\n\tenv.z = 1.48 + Math.sqrt(env.n);\n\tenv.nbb = 0.725 * env.n ** -0.2;\n\tenv.ncb = env.nbb;\n\n\t// Degree of adaptation calculating if not discounting\n\t// illuminant (assumed eye is fully adapted)\n\tconst d = discounting\n\t\t? 1\n\t\t: Math.max(Math.min(f * (1 - (1 / 3.6) * Math.exp((-env.la - 42) / 92)), 1), 0);\n\tenv.dRgb = /** @type {[number, number, number]} */ (\n\t\trgbW.map(c => {\n\t\t\treturn interpolate(1, yw / c, d);\n\t\t})\n\t);\n\tenv.dRgbInv = /** @type {[number, number, number]} */ (\n\t\tenv.dRgb.map(c => {\n\t\t\treturn 1 / c;\n\t\t})\n\t);\n\n\t// Achromatic response\n\tconst rgbCW = /** @type {[number, number, number]} */ (\n\t\trgbW.map((c, i) => {\n\t\t\treturn c * env.dRgb[i];\n\t\t})\n\t);\n\tconst rgbAW = adapt(rgbCW, env.fl);\n\tenv.aW = env.nbb * (2 * rgbAW[0] + rgbAW[1] + 0.05 * rgbAW[2]);\n\n\t// console.log(env);\n\n\treturn env;\n}\n\n// Pre-calculate everything we can with the viewing conditions\nconst viewingConditions = environment(white, (64 / Math.PI) * 0.2, 20, \"average\", false);\n\n/**\n * @param {Cam16Input} cam16\n * @param {Cam16Environment} env\n * @returns {[number, number, number]}\n */\nexport function fromCam16 (cam16, env) {\n\t// These check ensure one, and only one attribute for a\n\t// given category is provided.\n\t// @ts-expect-error The '^` operator is not allowed for boolean types\n\tif (!((cam16.J !== undefined) ^ (cam16.Q !== undefined))) {\n\t\tthrow new Error(\"Conversion requires one and only one: 'J' or 'Q'\");\n\t}\n\n\t// @ts-expect-error - The '^` operator is not allowed for boolean types\n\tif (!((cam16.C !== undefined) ^ (cam16.M !== undefined) ^ (cam16.s !== undefined))) {\n\t\tthrow new Error(\"Conversion requires one and only one: 'C', 'M' or 's'\");\n\t}\n\n\t// Hue is absolutely required\n\t// @ts-expect-error - The '^` operator is not allowed for boolean types\n\tif (!((cam16.h !== undefined) ^ (cam16.H !== undefined))) {\n\t\tthrow new Error(\"Conversion requires one and only one: 'h' or 'H'\");\n\t}\n\n\t// Black\n\tif (cam16.J === 0.0 || cam16.Q === 0.0) {\n\t\treturn [0.0, 0.0, 0.0];\n\t}\n\n\t// Break hue into Cartesian components\n\tlet hRad = 0.0;\n\tif (cam16.h !== undefined) {\n\t\thRad = constrain(cam16.h) * deg2rad;\n\t}\n\telse {\n\t\thRad = invHueQuadrature(cam16.H) * deg2rad;\n\t}\n\n\tconst cosh = Math.cos(hRad);\n\tconst sinh = Math.sin(hRad);\n\n\t// Calculate `Jroot` from one of the lightness derived coordinates.\n\tlet Jroot = 0.0;\n\tif (cam16.J !== undefined) {\n\t\tJroot = spow(cam16.J, 1 / 2) * 0.1;\n\t}\n\telse if (cam16.Q !== undefined) {\n\t\tJroot = (0.25 * env.c * cam16.Q) / ((env.aW + 4) * env.flRoot);\n\t}\n\n\t// Calculate the `t` value from one of the chroma derived coordinates\n\tlet alpha = 0.0;\n\tif (cam16.C !== undefined) {\n\t\talpha = cam16.C / Jroot;\n\t}\n\telse if (cam16.M !== undefined) {\n\t\talpha = cam16.M / env.flRoot / Jroot;\n\t}\n\telse if (cam16.s !== undefined) {\n\t\talpha = (0.0004 * cam16.s ** 2 * (env.aW + 4)) / env.c;\n\t}\n\tconst t = spow(alpha * Math.pow(1.64 - Math.pow(0.29, env.n), -0.73), 10 / 9);\n\n\t// Eccentricity\n\tconst et = 0.25 * (Math.cos(hRad + 2) + 3.8);\n\n\t// Achromatic response\n\tconst A = env.aW * spow(Jroot, 2 / env.c / env.z);\n\n\t// Calculate red-green and yellow-blue components\n\tconst p1 = (5e4 / 13) * env.nc * env.ncb * et;\n\tconst p2 = A / env.nbb;\n\tconst r = 23 * (p2 + 0.305) * zdiv(t, 23 * p1 + t * (11 * cosh + 108 * sinh));\n\tconst a = r * cosh;\n\tconst b = r * sinh;\n\n\t// Calculate back from cone response to XYZ\n\tconst rgb_c = unadapt(\n\t\t/** @type {Vector3} */\n\t\t(\n\t\t\tmultiply_v3_m3x3([p2, a, b], m1).map(c => {\n\t\t\t\treturn (c * 1) / 1403;\n\t\t\t})\n\t\t),\n\t\tenv.fl,\n\t);\n\treturn /** @type {Vector3} */ (\n\t\tmultiply_v3_m3x3(\n\t\t\t/** @type {Vector3} */ (\n\t\t\t\trgb_c.map((c, i) => {\n\t\t\t\t\treturn c * env.dRgbInv[i];\n\t\t\t\t})\n\t\t\t),\n\t\t\tcat16Inv,\n\t\t).map(c => {\n\t\t\treturn c / 100;\n\t\t})\n\t);\n}\n\n/**\n * @param {[number, number, number]} xyzd65\n * @param {Cam16Environment} env\n * @returns {Cam16Object}\n */\nexport function toCam16 (xyzd65, env) {\n\t// Cone response\n\tconst xyz100 = /** @type {Vector3} */ (\n\t\txyzd65.map(c => {\n\t\t\treturn c * 100;\n\t\t})\n\t);\n\tconst rgbA = adapt(\n\t\t/** @type {[number, number, number]} */\n\t\t(\n\t\t\tmultiply_v3_m3x3(xyz100, cat16).map((c, i) => {\n\t\t\t\treturn c * env.dRgb[i];\n\t\t\t})\n\t\t),\n\t\tenv.fl,\n\t);\n\n\t// Calculate hue from red-green and yellow-blue components\n\tconst a = rgbA[0] + (-12 * rgbA[1] + rgbA[2]) / 11;\n\tconst b = (rgbA[0] + rgbA[1] - 2 * rgbA[2]) / 9;\n\tconst hRad = ((Math.atan2(b, a) % tau) + tau) % tau;\n\n\t// Eccentricity\n\tconst et = 0.25 * (Math.cos(hRad + 2) + 3.8);\n\n\tconst t =\n\t\t(5e4 / 13) *\n\t\tenv.nc *\n\t\tenv.ncb *\n\t\tzdiv(et * Math.sqrt(a ** 2 + b ** 2), rgbA[0] + rgbA[1] + 1.05 * rgbA[2] + 0.305);\n\tconst alpha = spow(t, 0.9) * Math.pow(1.64 - Math.pow(0.29, env.n), 0.73);\n\n\t// Achromatic response\n\tconst A = env.nbb * (2 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]);\n\n\tconst Jroot = spow(A / env.aW, 0.5 * env.c * env.z);\n\n\t// Lightness\n\tconst J = 100 * spow(Jroot, 2);\n\n\t// Brightness\n\tconst Q = (4 / env.c) * Jroot * (env.aW + 4) * env.flRoot;\n\n\t// Chroma\n\tconst C = alpha * Jroot;\n\n\t// Colorfulness\n\tconst M = C * env.flRoot;\n\n\t// Hue\n\tconst h = constrain(hRad * rad2deg);\n\n\t// Hue quadrature\n\tconst H = hueQuadrature(h);\n\n\t// Saturation\n\tconst s = 50 * spow((env.c * alpha) / (env.aW + 4), 1 / 2);\n\n\t// console.log({J: J, C: C, h: h, s: s, Q: Q, M: M, H: H});\n\n\treturn { J: J, C: C, h: h, s: s, Q: Q, M: M, H: H };\n}\n\n// Provided as a way to directly evaluate the CAM16 model\n// https://observablehq.com/@jrus/cam16: reference implementation\n// https://arxiv.org/pdf/1802.06067.pdf: Nico Schlömer\n// https://onlinelibrary.wiley.com/doi/pdf/10.1002/col.22324: hue quadrature\n// https://www.researchgate.net/publication/318152296_Comprehensive_color_solutions_CAM16_CAT16_and_CAM16-UCS\n// Results compared against: https://github.com/colour-science/colour\nexport default new ColorSpace({\n\tid: \"cam16-jmh\",\n\tcssId: \"--cam16-jmh\",\n\tname: \"CAM16-JMh\",\n\tcoords: {\n\t\tj: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"J\",\n\t\t},\n\t\tm: {\n\t\t\trefRange: [0, 105.0],\n\t\t\tname: \"Colorfulness\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: xyz_d65,\n\n\tfromBase (xyz) {\n\t\t// If another derivation is created, ε could vary, so we can't hardcode\n\t\tif (this.ε === undefined) {\n\t\t\tthis.ε = Object.values(this.coords)[1].refRange[1] / 100000;\n\t\t}\n\t\tconst cam16 = toCam16(xyz, viewingConditions);\n\t\tconst isAchromatic = Math.abs(cam16.M) < this.ε;\n\t\treturn [cam16.J, isAchromatic ? 0 : cam16.M, isAchromatic ? null : cam16.h];\n\t},\n\ttoBase (cam16) {\n\t\treturn fromCam16({ J: cam16[0], M: cam16[1], h: cam16[2] }, viewingConditions);\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { constrain } from \"../angles.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\nimport { fromCam16, toCam16, environment } from \"./cam16.js\";\nimport { WHITES } from \"../adapt.js\";\n\nconst white = WHITES.D65;\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\n\nfunction toLstar (y) {\n\t// Convert XYZ Y to L*\n\n\tconst fy = y > ε ? Math.cbrt(y) : (κ * y + 16) / 116;\n\treturn 116.0 * fy - 16.0;\n}\n\nfunction fromLstar (lstar) {\n\t// Convert L* back to XYZ Y\n\n\treturn lstar > 8 ? Math.pow((lstar + 16) / 116, 3) : lstar / κ;\n}\n\nfunction fromHct (coords, env) {\n\t// Use Newton's method to try and converge as quick as possible or\n\t// converge as close as we can. While the requested precision is achieved\n\t// most of the time, it may not always be achievable. Especially past the\n\t// visible spectrum, the algorithm will likely struggle to get the same\n\t// precision. If, for whatever reason, we cannot achieve the accuracy we\n\t// seek in the allotted iterations, just return the closest we were able to\n\t// get.\n\n\tlet [h, c, t] = coords;\n\tlet xyz = [];\n\tlet j = 0;\n\n\t// Shortcut out for black\n\tif (t === 0) {\n\t\treturn [0.0, 0.0, 0.0];\n\t}\n\n\t// Calculate the Y we need to target\n\tlet y = fromLstar(t);\n\n\t// A better initial guess yields better results. Polynomials come from\n\t// curve fitting the T vs J response.\n\tif (t > 0) {\n\t\tj = 0.00379058511492914 * t ** 2 + 0.608983189401032 * t + 0.9155088574762233;\n\t}\n\telse {\n\t\tj = 9.514440756550361e-6 * t ** 2 + 0.08693057439788597 * t - 21.928975842194614;\n\t}\n\n\t// Threshold of how close is close enough, and max number of attempts.\n\t// More precision and more attempts means more time spent iterating. Higher\n\t// required precision gives more accuracy but also increases the chance of\n\t// not hitting the goal. 2e-12 allows us to convert round trip with\n\t// reasonable accuracy of six decimal places or more.\n\tconst threshold = 2e-12;\n\tconst max_attempts = 15;\n\n\tlet attempt = 0;\n\tlet last = Infinity;\n\tlet best = j;\n\n\t// Try to find a J such that the returned y matches the returned y of the L*\n\twhile (attempt <= max_attempts) {\n\t\txyz = fromCam16({ J: j, C: c, h: h }, env);\n\n\t\t// If we are within range, return XYZ\n\t\t// If we are closer than last time, save the values\n\t\tconst delta = Math.abs(xyz[1] - y);\n\t\tif (delta < last) {\n\t\t\tif (delta <= threshold) {\n\t\t\t\treturn xyz;\n\t\t\t}\n\t\t\tbest = j;\n\t\t\tlast = delta;\n\t\t}\n\n\t\t// f(j_root) = (j ** (1 / 2)) * 0.1\n\t\t// f(j) = ((f(j_root) * 100) ** 2) / j - 1 = 0\n\t\t// f(j_root) = Y = y / 100\n\t\t// f(j) = (y ** 2) / j - 1\n\t\t// f'(j) = (2 * y) / j\n\t\tj = j - ((xyz[1] - y) * j) / (2 * xyz[1]);\n\n\t\tattempt += 1;\n\t}\n\n\t// We could not acquire the precision we desired,\n\t// return our closest attempt.\n\treturn fromCam16({ J: j, C: c, h: h }, env);\n}\n\nfunction toHct (xyz, env) {\n\t// Calculate HCT by taking the L* of CIE LCh D65 and CAM16 chroma and hue.\n\n\tconst t = toLstar(xyz[1]);\n\tif (t === 0.0) {\n\t\treturn [0.0, 0.0, 0.0];\n\t}\n\tconst cam16 = toCam16(xyz, viewingConditions);\n\treturn [constrain(cam16.h), cam16.C, t];\n}\n\n// Pre-calculate everything we can with the viewing conditions\nexport const viewingConditions = environment(\n\twhite,\n\t(200 / Math.PI) * fromLstar(50.0),\n\tfromLstar(50.0) * 100,\n\t\"average\",\n\tfalse,\n);\n\n// https://material.io/blog/science-of-color-design\n// This is not a port of the material-color-utilities,\n// but instead implements the full color space as described,\n// combining CAM16 JCh and Lab D65. This does not clamp conversion\n// to HCT to specific chroma bands and provides support for wider\n// gamuts than Google currently supports and does so at a greater\n// precision (> 8 bits back to sRGB).\n// This implementation comes from https://github.com/facelessuser/coloraide\n// which is licensed under MIT.\nexport default new ColorSpace({\n\tid: \"hct\",\n\tname: \"HCT\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 145],\n\t\t\tname: \"Colorfulness\",\n\t\t},\n\t\tt: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Tone\",\n\t\t},\n\t},\n\n\tbase: xyz_d65,\n\n\tfromBase (xyz) {\n\t\tif (this.ε === undefined) {\n\t\t\tthis.ε = Object.values(this.coords)[1].refRange[1] / 100000;\n\t\t}\n\t\tlet hct = toHct(xyz, viewingConditions);\n\t\tif (hct[1] < this.ε) {\n\t\t\thct[1] = 0.0;\n\t\t\thct[0] = null;\n\t\t}\n\t\treturn hct;\n\t},\n\ttoBase (hct) {\n\t\treturn fromHct(hct, viewingConditions);\n\t},\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hct\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import hct from \"../spaces/hct.js\";\nimport { viewingConditions } from \"../spaces/hct.js\";\nimport getColor from \"../getColor.js\";\n\n/** @import { Coords } from \"../types.js\" */\n\nconst rad2deg = 180 / Math.PI;\nconst deg2rad = Math.PI / 180;\nconst ucsCoeff = [1.0, 0.007, 0.0228];\n\n/**\n * Convert HCT chroma and hue (CAM16 JMh colorfulness and hue) using UCS logic for a and b.\n * @param {Coords} coords - HCT coordinates.\n * @return {number[]}\n */\nfunction convertUcsAb (coords) {\n\t// We want the distance between the actual color.\n\t// If chroma is negative, it will throw off our calculations.\n\t// Normally, converting back to the base and forward will correct it.\n\t// If we have a negative chroma after this, then we have a color that\n\t// cannot resolve to positive chroma.\n\tif (coords[1] < 0) {\n\t\tcoords = hct.fromBase(hct.toBase(coords));\n\t}\n\n\t// Only in extreme cases (usually outside the visible spectrum)\n\t// can the input value for log become negative.\n\t// Avoid domain error by forcing a zero result via \"max\" if necessary.\n\tconst M =\n\t\tMath.log(Math.max(1 + ucsCoeff[2] * coords[1] * viewingConditions.flRoot, 1.0)) /\n\t\tucsCoeff[2];\n\tconst hrad = coords[0] * deg2rad;\n\tconst a = M * Math.cos(hrad);\n\tconst b = M * Math.sin(hrad);\n\n\treturn [coords[2], a, b];\n}\n\n/**\n * Color distance using HCT.\n * @param {import(\"../types.js\").ColorTypes} color\n * @param {import(\"../types.js\").ColorTypes} sample\n * @returns {number}\n */\nexport default function (color, sample) {\n\t[color, sample] = getColor([color, sample]);\n\n\tlet [t1, a1, b1] = convertUcsAb(hct.from(color));\n\tlet [t2, a2, b2] = convertUcsAb(hct.from(sample));\n\n\t// Use simple euclidean distance with a and b using UCS conversion\n\t// and LCh lightness (HCT tone).\n\treturn Math.sqrt((t1 - t2) ** 2 + (a1 - a2) ** 2 + (b1 - b2) ** 2);\n}\n","/**\n * @packageDocumentation\n * This module defines all the builtin deltaE methods.\n */\nimport deltaE76 from \"./deltaE76.js\";\nimport deltaECMC from \"./deltaECMC.js\";\nimport deltaE2000 from \"./deltaE2000.js\";\nimport deltaEJz from \"./deltaEJz.js\";\nimport deltaEITP from \"./deltaEITP.js\";\nimport deltaEOK from \"./deltaEOK.js\";\nimport deltaEOK2 from \"./deltaEOK2.js\";\nimport deltaEHCT from \"./deltaEHCT.js\";\n\nexport { deltaE76, deltaECMC, deltaE2000, deltaEJz, deltaEITP, deltaEOK, deltaEOK2, deltaEHCT };\n\nexport default {\n\tdeltaE76,\n\tdeltaECMC,\n\tdeltaE2000,\n\tdeltaEJz,\n\tdeltaEITP,\n\tdeltaEOK,\n\tdeltaEOK2,\n\tdeltaEHCT,\n};\n\n/** @typedef {keyof typeof import(\"./index.js\").default extends `deltaE${infer Method}` ? Method : string} Methods */\n","import * as util from \"./util.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport defaults from \"./defaults.js\";\nimport deltaE2000 from \"./deltaE/deltaE2000.js\";\nimport deltaEOK from \"./deltaE/deltaEOK.js\";\nimport inGamut from \"./inGamut.js\";\nimport to from \"./to.js\";\nimport get from \"./get.js\";\nimport oklab from \"./spaces/oklab.js\";\nimport set from \"./set.js\";\nimport clone from \"./clone.js\";\nimport getColor from \"./getColor.js\";\nimport deltaEMethods from \"./deltaE/index.js\";\nimport { WHITES } from \"./adapt.js\";\n\n/** @import { ColorTypes, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").ToGamutOptions} ToGamutOptions */\n\n/**\n * Calculate the epsilon to 2 degrees smaller than the specified JND.\n * @param {number} jnd The target \"just noticeable difference\".\n * @returns {number}\n */\nfunction calcEpsilon (jnd) {\n\t// Calculate the epsilon to 2 degrees smaller than the specified JND.\n\n\tconst order = !jnd ? 0 : Math.floor(Math.log10(Math.abs(jnd)));\n\t// Limit to an arbitrary value to ensure value is never too small and causes infinite loops.\n\treturn Math.max(parseFloat(`1e${order - 2}`), 1e-6);\n}\n\nconst GMAPPRESET = {\n\thct: {\n\t\tmethod: \"hct.c\",\n\t\tjnd: 2,\n\t\tdeltaEMethod: \"hct\",\n\t\tblackWhiteClamp: {},\n\t},\n\t\"hct-tonal\": {\n\t\tmethod: \"hct.c\",\n\t\tjnd: 0,\n\t\tdeltaEMethod: \"hct\",\n\t\tblackWhiteClamp: { channel: \"hct.t\", min: 0, max: 100 },\n\t},\n};\n\n/**\n * Force coordinates to be in gamut of a certain color space.\n * Mutates the color it is passed.\n * @overload\n * @param {ColorTypes} color\n * @param {ToGamutOptions} [options]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} color\n * @param {string} [space]\n * @returns {PlainColorObject}\n */\n/**\n * @param {ColorTypes} color\n * @param {string & Partial<ToGamutOptions> | ToGamutOptions} [space]\n * @returns {PlainColorObject}\n */\nexport default function toGamut (\n\tcolor,\n\t{\n\t\tmethod = defaults.gamut_mapping,\n\t\tspace = undefined,\n\t\tdeltaEMethod = \"\",\n\t\tjnd = 2,\n\t\tblackWhiteClamp = undefined,\n\t} = {},\n) {\n\tcolor = getColor(color);\n\n\tif (util.isString(arguments[1])) {\n\t\tspace = arguments[1];\n\t}\n\telse if (!space) {\n\t\tspace = color.space;\n\t}\n\n\tspace = ColorSpace.get(space);\n\n\t// 3 spaces:\n\t// color.space: current color space\n\t// space: space whose gamut we are mapping to\n\t// mapSpace: space with the coord we're reducing\n\n\tif (inGamut(color, space, { epsilon: 0 })) {\n\t\treturn /** @type {PlainColorObject} */ (color);\n\t}\n\n\tlet spaceColor;\n\tif (method === \"css\") {\n\t\tspaceColor = toGamutCSS(color, { space });\n\t}\n\telse {\n\t\tif (method !== \"clip\" && !inGamut(color, space)) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(GMAPPRESET, method)) {\n\t\t\t\t({ method, jnd, deltaEMethod, blackWhiteClamp } = GMAPPRESET[method]);\n\t\t\t}\n\n\t\t\t// Get the correct delta E method\n\t\t\tlet de = deltaE2000;\n\t\t\tif (deltaEMethod !== \"\") {\n\t\t\t\tfor (let m in deltaEMethods) {\n\t\t\t\t\tif (\"deltae\" + deltaEMethod.toLowerCase() === m.toLowerCase()) {\n\t\t\t\t\t\tde = deltaEMethods[m];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (jnd === 0) {\n\t\t\t\tjnd = 1e-16;\n\t\t\t}\n\n\t\t\tlet clipped = toGamut(to(color, space), { method: \"clip\", space });\n\t\t\tif (de(color, clipped) > jnd) {\n\t\t\t\t// Clamp to SDR white and black if required\n\t\t\t\tif (blackWhiteClamp && Object.keys(blackWhiteClamp).length === 3) {\n\t\t\t\t\tlet channelMeta = ColorSpace.resolveCoord(blackWhiteClamp.channel);\n\t\t\t\t\tlet channel = get(to(color, channelMeta.space), channelMeta.id);\n\t\t\t\t\tif (util.isNone(channel)) {\n\t\t\t\t\t\tchannel = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (channel >= blackWhiteClamp.max) {\n\t\t\t\t\t\treturn to({ space: \"xyz-d65\", coords: WHITES[\"D65\"] }, color.space);\n\t\t\t\t\t}\n\t\t\t\t\telse if (channel <= blackWhiteClamp.min) {\n\t\t\t\t\t\treturn to({ space: \"xyz-d65\", coords: [0, 0, 0] }, color.space);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Reduce a coordinate of a certain color space until the color is in gamut\n\t\t\t\tlet coordMeta = ColorSpace.resolveCoord(method);\n\t\t\t\tlet mapSpace = coordMeta.space;\n\t\t\t\tlet coordId = coordMeta.id;\n\n\t\t\t\tlet mappedColor = to(color, mapSpace);\n\t\t\t\t// If we were already in the mapped color space, we need to resolve undefined channels\n\t\t\t\tmappedColor.coords.forEach((c, i) => {\n\t\t\t\t\tif (util.isNone(c)) {\n\t\t\t\t\t\tmappedColor.coords[i] = 0;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet bounds = coordMeta.range || coordMeta.refRange;\n\t\t\t\tlet min = bounds[0];\n\t\t\t\tlet ε = calcEpsilon(jnd);\n\t\t\t\tlet low = min;\n\t\t\t\tlet high = get(mappedColor, coordId);\n\n\t\t\t\twhile (high - low > ε) {\n\t\t\t\t\tlet clipped = clone(mappedColor);\n\t\t\t\t\tclipped = toGamut(clipped, { space, method: \"clip\" });\n\t\t\t\t\tlet deltaE = de(mappedColor, clipped);\n\n\t\t\t\t\tif (deltaE - jnd < ε) {\n\t\t\t\t\t\tlow = get(mappedColor, coordId);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\thigh = get(mappedColor, coordId);\n\t\t\t\t\t}\n\n\t\t\t\t\tset(mappedColor, coordId, (low + high) / 2);\n\t\t\t\t}\n\n\t\t\t\tspaceColor = to(mappedColor, space);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tspaceColor = clipped;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tspaceColor = to(color, space);\n\t\t}\n\n\t\tif (\n\t\t\tmethod === \"clip\" || // Dumb coord clipping\n\t\t\t// finish off smarter gamut mapping with clip to get rid of ε, see #17\n\t\t\t!inGamut(spaceColor, space, { epsilon: 0 })\n\t\t) {\n\t\t\tlet bounds = Object.values(space.coords).map(c => c.range || []);\n\n\t\t\tspaceColor.coords = /** @type {[number, number, number]} */ (\n\t\t\t\tspaceColor.coords.map((c, i) => {\n\t\t\t\t\tlet [min, max] = bounds[i];\n\n\t\t\t\t\tif (min !== undefined) {\n\t\t\t\t\t\tc = Math.max(min, c);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (max !== undefined) {\n\t\t\t\t\t\tc = Math.min(c, max);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn c;\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\tif (space !== color.space) {\n\t\tspaceColor = to(spaceColor, color.space);\n\t}\n\n\tcolor.coords = spaceColor.coords;\n\treturn /** @type {PlainColorObject} */ (color);\n}\n\n/** @type {\"color\"} */\ntoGamut.returns = \"color\";\n\n/**\n * The reference colors to be used if lightness is out of the range 0-1 in the\n * `Oklch` space. These are created in the `Oklab` space, as it is used by the\n * DeltaEOK calculation, so it is guaranteed to be imported.\n * @satisfies {Record<string, ColorTypes>}\n */\nconst COLORS = {\n\tWHITE: { space: oklab, coords: [1, 0, 0], alpha: 1 },\n\tBLACK: { space: oklab, coords: [0, 0, 0], alpha: 1 },\n};\n\n/**\n * Given a color `origin`, returns a new color that is in gamut using\n * the CSS Gamut Mapping Algorithm. If `space` is specified, it will be in gamut\n * in `space`, and returned in `space`. Otherwise, it will be in gamut and\n * returned in the color space of `origin`.\n * @param {ColorTypes} origin\n * @param {{ space?: string | ColorSpace | undefined }} param1\n * @returns {PlainColorObject}\n */\nexport function toGamutCSS (origin, { space } = {}) {\n\tconst JND = 0.02;\n\tconst ε = 0.0001;\n\n\torigin = getColor(origin);\n\n\tif (!space) {\n\t\tspace = origin.space;\n\t}\n\n\tspace = ColorSpace.get(space);\n\tconst oklchSpace = ColorSpace.get(\"oklch\");\n\n\tif (space.isUnbounded) {\n\t\treturn to(origin, space);\n\t}\n\n\tconst origin_OKLCH = to(origin, oklchSpace);\n\tlet L = origin_OKLCH.coords[0];\n\n\t// return media white or black, if lightness is out of range\n\tif (L >= 1) {\n\t\tconst white = to(COLORS.WHITE, space);\n\t\twhite.alpha = origin.alpha;\n\t\treturn to(white, space);\n\t}\n\tif (L <= 0) {\n\t\tconst black = to(COLORS.BLACK, space);\n\t\tblack.alpha = origin.alpha;\n\t\treturn to(black, space);\n\t}\n\n\tif (inGamut(origin_OKLCH, space, { epsilon: 0 })) {\n\t\treturn to(origin_OKLCH, space);\n\t}\n\n\tfunction clip (_color) {\n\t\tconst destColor = to(_color, space);\n\t\tconst spaceCoords = Object.values(/** @type {ColorSpace} */ (space).coords);\n\t\tdestColor.coords = /** @type {[number, number, number]} */ (\n\t\t\tdestColor.coords.map((coord, index) => {\n\t\t\t\tif (\"range\" in spaceCoords[index]) {\n\t\t\t\t\tconst [min, max] = spaceCoords[index].range;\n\t\t\t\t\treturn util.clamp(min, coord, max);\n\t\t\t\t}\n\t\t\t\treturn coord;\n\t\t\t})\n\t\t);\n\t\treturn destColor;\n\t}\n\tlet min = 0;\n\tlet max = origin_OKLCH.coords[1];\n\tlet min_inGamut = true;\n\tlet current = clone(origin_OKLCH);\n\tlet clipped = clip(current);\n\n\tlet E = deltaEOK(clipped, current);\n\tif (E < JND) {\n\t\treturn clipped;\n\t}\n\n\twhile (max - min > ε) {\n\t\tconst chroma = (min + max) / 2;\n\t\tcurrent.coords[1] = chroma;\n\t\tif (min_inGamut && inGamut(current, space, { epsilon: 0 })) {\n\t\t\tmin = chroma;\n\t\t}\n\t\telse {\n\t\t\tclipped = clip(current);\n\t\t\tE = deltaEOK(clipped, current);\n\t\t\tif (E < JND) {\n\t\t\t\tif (JND - E < ε) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmin_inGamut = false;\n\t\t\t\t\tmin = chroma;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmax = chroma;\n\t\t\t}\n\t\t}\n\t}\n\treturn clipped;\n}\n","import getColor from \"./getColor.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport toGamut from \"./toGamut.js\";\n\n/** @import { ColorTypes, PlainColorObject, ToGamutOptions } from \"./types.js\" */\n\n/**\n * Convert to color space and return a new color\n * @param {ColorTypes} color\n * @param {string | ColorSpace} space\n * @param {{ inGamut?: boolean | ToGamutOptions | undefined }} options\n * @returns {PlainColorObject}\n */\nexport default function to (color, space, { inGamut } = {}) {\n\tcolor = getColor(color);\n\tspace = ColorSpace.get(space);\n\n\tlet coords = space.from(color);\n\tlet ret = { space, coords, alpha: color.alpha };\n\n\tif (inGamut) {\n\t\tret = toGamut(ret, inGamut === true ? undefined : inGamut);\n\t}\n\n\treturn ret;\n}\n\n/** @type {\"color\"} */\nto.returns = \"color\";\n","// @ts-nocheck\n\nimport * as util from \"./util.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport defaults from \"./defaults.js\";\nimport getColor from \"./getColor.js\";\nimport to from \"./to.js\";\nimport checkInGamut from \"./inGamut.js\";\nimport toGamut from \"./toGamut.js\";\nimport clone from \"./clone.js\";\n\n/** @import { ColorTypes, ParseOptions, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").SerializeOptions} SerializeOptions */\n\n/**\n * Generic toString() method, outputs a color(spaceId ...coords) function, a functional syntax, or custom formats defined by the color space\n * @param {ColorTypes} color\n * @param {SerializeOptions & Record<string, any>} options\n * @returns {string}\n */\nexport default function serialize (color, options = {}) {\n\tlet {\n\t\tprecision = defaults.precision,\n\t\tformat,\n\t\tinGamut = true,\n\t\tcoords: coordFormat,\n\t\talpha: alphaFormat,\n\t\tcommas,\n\t} = options;\n\tlet ret;\n\n\tlet colorWithMeta = /** @type {PlainColorObject & ParseOptions} */ (getColor(color));\n\n\tlet formatId = format;\n\tlet parseMeta = colorWithMeta.parseMeta;\n\n\tif (parseMeta && !format) {\n\t\tif (parseMeta.format.canSerialize()) {\n\t\t\tformat = parseMeta.format;\n\t\t\tformatId = parseMeta.formatId;\n\t\t}\n\n\t\tcoordFormat ??= parseMeta.types;\n\t\talphaFormat ??= parseMeta.alphaType;\n\t\tcommas ??= parseMeta.commas;\n\t}\n\n\tif (formatId) {\n\t\t// A format is explicitly specified\n\t\tformat = colorWithMeta.space.getFormat(format) ?? ColorSpace.findFormat(formatId);\n\t}\n\n\tif (!format) {\n\t\t// No format specified, or format not found\n\t\tformat = colorWithMeta.space.getFormat(\"default\") ?? ColorSpace.DEFAULT_FORMAT;\n\t\tformatId = format.name;\n\t}\n\n\tif (format && format.space && format.space !== colorWithMeta.space) {\n\t\t// Format specified belongs to a different color space,\n\t\t// need to convert to it first\n\t\tcolorWithMeta = to(colorWithMeta, format.space);\n\t}\n\n\t// The assignment to coords and inGamut needs to stay in the order they are now\n\t// The order of the assignment was changed as a workaround for a bug in Next.js\n\t// See this issue for details: https://github.com/color-js/color.js/issues/260\n\n\tlet coords = colorWithMeta.coords.slice(); // clone so we can manipulate it\n\n\tinGamut ||= format.toGamut;\n\n\tif (inGamut && !checkInGamut(colorWithMeta)) {\n\t\t// FIXME what happens if the color contains none values?\n\t\tcoords = toGamut(clone(colorWithMeta), inGamut === true ? undefined : inGamut).coords;\n\t}\n\n\tif (format.type === \"custom\") {\n\t\tif (format.serialize) {\n\t\t\tret = format.serialize(coords, colorWithMeta.alpha, options);\n\t\t}\n\t\telse {\n\t\t\tthrow new TypeError(\n\t\t\t\t`format ${formatId} can only be used to parse colors, not for serialization`,\n\t\t\t);\n\t\t}\n\t}\n\telse {\n\t\t// Functional syntax\n\t\tlet name = format.name || \"color\";\n\n\t\tlet args = format.serializeCoords(coords, precision, coordFormat);\n\n\t\tif (name === \"color\") {\n\t\t\t// If output is a color() function, add colorspace id as first argument\n\t\t\tlet cssId =\n\t\t\t\tformat.id || format.ids?.[0] || colorWithMeta.space.cssId || colorWithMeta.space.id;\n\t\t\targs.unshift(cssId);\n\t\t}\n\n\t\t// Serialize alpha?\n\t\t/** @type {string | number} */\n\t\tlet alpha = colorWithMeta.alpha;\n\n\t\tif (alphaFormat !== undefined && !(typeof alphaFormat === \"object\")) {\n\t\t\talphaFormat =\n\t\t\t\ttypeof alphaFormat === \"string\" ? { type: alphaFormat } : { include: alphaFormat };\n\t\t}\n\n\t\tlet alphaType = alphaFormat?.type ?? \"<number>\";\n\t\tlet serializeAlpha =\n\t\t\talphaFormat?.include === true ||\n\t\t\tformat.alpha === true ||\n\t\t\t(alphaFormat?.include !== false && format.alpha !== false && alpha < 1);\n\t\tlet strAlpha = \"\";\n\n\t\tcommas ??= format.commas;\n\n\t\tif (serializeAlpha) {\n\t\t\tif (precision !== null) {\n\t\t\t\tlet unit;\n\n\t\t\t\tif (alphaType === \"<percentage>\") {\n\t\t\t\t\tunit = \"%\";\n\t\t\t\t\talpha *= 100;\n\t\t\t\t}\n\n\t\t\t\talpha = util.serializeNumber(alpha, { precision, unit });\n\t\t\t}\n\n\t\t\tstrAlpha = `${commas ? \",\" : \" /\"} ${alpha}`;\n\t\t}\n\n\t\tret = `${name}(${args.join(commas ? \", \" : \" \")}${strAlpha})`;\n\t}\n\n\treturn ret;\n}\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// convert an array of linear-light rec2020 values to CIE XYZ\n// using D65 (no chromatic adaptation)\n// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n// 0 is actually calculated as 4.994106574466076e-17\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.6369580483012914, 0.14461690358620832, 0.1688809751641721 ],\n\t[ 0.2627002120112671, 0.6779980715188708, 0.05930171646986196 ],\n\t[ 0.000000000000000, 0.028072693049087428, 1.060985057710791 ],\n];\n\n// from ITU-R BT.2124-0 Annex 2 p.3\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 1.716651187971268, -0.355670783776392, -0.253366281373660 ],\n\t[ -0.666684351832489, 1.616481236634939, 0.0157685458139111 ],\n\t[ 0.017639857445311, -0.042770613257809, 0.942103121235474 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"rec2020-linear\",\n\tcssId: \"--rec2020-linear\",\n\tname: \"Linear REC.2020\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC2020Linear from \"./rec2020-linear.js\";\n// import sRGB from \"./srgb.js\";\n\nexport default new RGBColorSpace({\n\tid: \"rec2020\",\n\tname: \"REC.2020\",\n\tbase: REC2020Linear,\n\t// Reference electro-optical transfer function from Rec. ITU-R BT.1886 Annex 1\n\t// with b (black lift) = 0 and a (user gain) = 1\n\t// defined over the extended range, not clamped\n\ttoBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\t\t\treturn sign * Math.pow(abs, 2.4);\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\t\t\treturn sign * Math.pow(abs, 1 / 2.4);\n\t\t});\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[0.4865709486482162, 0.26566769316909306, 0.1982172852343625],\n\t[0.2289745640697488, 0.6917385218365064, 0.079286914093745],\n\t[0.0000000000000000, 0.04511338185890264, 1.043944368900976],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 2.493496911941425, -0.9313836179191239, -0.40271078445071684],\n\t[-0.8294889695615747, 1.7626640603183463, 0.023624685841943577],\n\t[ 0.03584583024378447, -0.07617238926804182, 0.9568845240076872],\n];\n\nexport default new RGBColorSpace({\n\tid: \"p3-linear\",\n\tcssId: \"display-p3-linear\",\n\tname: \"Linear P3\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// This is the linear-light version of sRGB\n// as used for example in SVG filters\n// or in Canvas\n\n// This matrix was calculated directly from the RGB and white chromaticities\n// when rounded to 8 decimal places, it agrees completely with the official matrix\n// see https://github.com/w3c/csswg-drafts/issues/5922\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.41239079926595934, 0.357584339383878, 0.1804807884018343 ],\n\t[ 0.21263900587151027, 0.715168678767756, 0.07219231536073371 ],\n\t[ 0.01933081871559182, 0.11919477979462598, 0.9505321522496607 ],\n];\n\n// This matrix is the inverse of the above;\n// again it agrees with the official definition when rounded to 8 decimal places\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const fromXYZ_M = [\n\t[ 3.2409699419045226, -1.537383177570094, -0.4986107602930034 ],\n\t[ -0.9692436362808796, 1.8759675015077202, 0.04155505740717559 ],\n\t[ 0.05563007969699366, -0.20397695888897652, 1.0569715142428786 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"srgb-linear\",\n\tname: \"Linear sRGB\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","// To produce: Visit https://www.w3.org/TR/css-color-4/#named-colors\n// and run in the console:\n// copy($$(\"tr\", $(\".named-color-table tbody\")).map(tr => `\"${tr.cells[2].textContent.trim()}\": [${tr.cells[4].textContent.trim().split(/\\s+/).map(c => c === \"0\"? \"0\" : c === \"255\"? \"1\" : c + \" / 255\").join(\", \")}]`).join(\",\\n\"))\n\n/** List of CSS color keywords\n * Note that this does not include currentColor, transparent,\n * or system colors\n *\n * @type {Record<string, [number, number, number]>}\n */\nexport default {\n\taliceblue: [240 / 255, 248 / 255, 1],\n\tantiquewhite: [250 / 255, 235 / 255, 215 / 255],\n\taqua: [0, 1, 1],\n\taquamarine: [127 / 255, 1, 212 / 255],\n\tazure: [240 / 255, 1, 1],\n\tbeige: [245 / 255, 245 / 255, 220 / 255],\n\tbisque: [1, 228 / 255, 196 / 255],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [1, 235 / 255, 205 / 255],\n\tblue: [0, 0, 1],\n\tblueviolet: [138 / 255, 43 / 255, 226 / 255],\n\tbrown: [165 / 255, 42 / 255, 42 / 255],\n\tburlywood: [222 / 255, 184 / 255, 135 / 255],\n\tcadetblue: [95 / 255, 158 / 255, 160 / 255],\n\tchartreuse: [127 / 255, 1, 0],\n\tchocolate: [210 / 255, 105 / 255, 30 / 255],\n\tcoral: [1, 127 / 255, 80 / 255],\n\tcornflowerblue: [100 / 255, 149 / 255, 237 / 255],\n\tcornsilk: [1, 248 / 255, 220 / 255],\n\tcrimson: [220 / 255, 20 / 255, 60 / 255],\n\tcyan: [0, 1, 1],\n\tdarkblue: [0, 0, 139 / 255],\n\tdarkcyan: [0, 139 / 255, 139 / 255],\n\tdarkgoldenrod: [184 / 255, 134 / 255, 11 / 255],\n\tdarkgray: [169 / 255, 169 / 255, 169 / 255],\n\tdarkgreen: [0, 100 / 255, 0],\n\tdarkgrey: [169 / 255, 169 / 255, 169 / 255],\n\tdarkkhaki: [189 / 255, 183 / 255, 107 / 255],\n\tdarkmagenta: [139 / 255, 0, 139 / 255],\n\tdarkolivegreen: [85 / 255, 107 / 255, 47 / 255],\n\tdarkorange: [1, 140 / 255, 0],\n\tdarkorchid: [153 / 255, 50 / 255, 204 / 255],\n\tdarkred: [139 / 255, 0, 0],\n\tdarksalmon: [233 / 255, 150 / 255, 122 / 255],\n\tdarkseagreen: [143 / 255, 188 / 255, 143 / 255],\n\tdarkslateblue: [72 / 255, 61 / 255, 139 / 255],\n\tdarkslategray: [47 / 255, 79 / 255, 79 / 255],\n\tdarkslategrey: [47 / 255, 79 / 255, 79 / 255],\n\tdarkturquoise: [0, 206 / 255, 209 / 255],\n\tdarkviolet: [148 / 255, 0, 211 / 255],\n\tdeeppink: [1, 20 / 255, 147 / 255],\n\tdeepskyblue: [0, 191 / 255, 1],\n\tdimgray: [105 / 255, 105 / 255, 105 / 255],\n\tdimgrey: [105 / 255, 105 / 255, 105 / 255],\n\tdodgerblue: [30 / 255, 144 / 255, 1],\n\tfirebrick: [178 / 255, 34 / 255, 34 / 255],\n\tfloralwhite: [1, 250 / 255, 240 / 255],\n\tforestgreen: [34 / 255, 139 / 255, 34 / 255],\n\tfuchsia: [1, 0, 1],\n\tgainsboro: [220 / 255, 220 / 255, 220 / 255],\n\tghostwhite: [248 / 255, 248 / 255, 1],\n\tgold: [1, 215 / 255, 0],\n\tgoldenrod: [218 / 255, 165 / 255, 32 / 255],\n\tgray: [128 / 255, 128 / 255, 128 / 255],\n\tgreen: [0, 128 / 255, 0],\n\tgreenyellow: [173 / 255, 1, 47 / 255],\n\tgrey: [128 / 255, 128 / 255, 128 / 255],\n\thoneydew: [240 / 255, 1, 240 / 255],\n\thotpink: [1, 105 / 255, 180 / 255],\n\tindianred: [205 / 255, 92 / 255, 92 / 255],\n\tindigo: [75 / 255, 0, 130 / 255],\n\tivory: [1, 1, 240 / 255],\n\tkhaki: [240 / 255, 230 / 255, 140 / 255],\n\tlavender: [230 / 255, 230 / 255, 250 / 255],\n\tlavenderblush: [1, 240 / 255, 245 / 255],\n\tlawngreen: [124 / 255, 252 / 255, 0],\n\tlemonchiffon: [1, 250 / 255, 205 / 255],\n\tlightblue: [173 / 255, 216 / 255, 230 / 255],\n\tlightcoral: [240 / 255, 128 / 255, 128 / 255],\n\tlightcyan: [224 / 255, 1, 1],\n\tlightgoldenrodyellow: [250 / 255, 250 / 255, 210 / 255],\n\tlightgray: [211 / 255, 211 / 255, 211 / 255],\n\tlightgreen: [144 / 255, 238 / 255, 144 / 255],\n\tlightgrey: [211 / 255, 211 / 255, 211 / 255],\n\tlightpink: [1, 182 / 255, 193 / 255],\n\tlightsalmon: [1, 160 / 255, 122 / 255],\n\tlightseagreen: [32 / 255, 178 / 255, 170 / 255],\n\tlightskyblue: [135 / 255, 206 / 255, 250 / 255],\n\tlightslategray: [119 / 255, 136 / 255, 153 / 255],\n\tlightslategrey: [119 / 255, 136 / 255, 153 / 255],\n\tlightsteelblue: [176 / 255, 196 / 255, 222 / 255],\n\tlightyellow: [1, 1, 224 / 255],\n\tlime: [0, 1, 0],\n\tlimegreen: [50 / 255, 205 / 255, 50 / 255],\n\tlinen: [250 / 255, 240 / 255, 230 / 255],\n\tmagenta: [1, 0, 1],\n\tmaroon: [128 / 255, 0, 0],\n\tmediumaquamarine: [102 / 255, 205 / 255, 170 / 255],\n\tmediumblue: [0, 0, 205 / 255],\n\tmediumorchid: [186 / 255, 85 / 255, 211 / 255],\n\tmediumpurple: [147 / 255, 112 / 255, 219 / 255],\n\tmediumseagreen: [60 / 255, 179 / 255, 113 / 255],\n\tmediumslateblue: [123 / 255, 104 / 255, 238 / 255],\n\tmediumspringgreen: [0, 250 / 255, 154 / 255],\n\tmediumturquoise: [72 / 255, 209 / 255, 204 / 255],\n\tmediumvioletred: [199 / 255, 21 / 255, 133 / 255],\n\tmidnightblue: [25 / 255, 25 / 255, 112 / 255],\n\tmintcream: [245 / 255, 1, 250 / 255],\n\tmistyrose: [1, 228 / 255, 225 / 255],\n\tmoccasin: [1, 228 / 255, 181 / 255],\n\tnavajowhite: [1, 222 / 255, 173 / 255],\n\tnavy: [0, 0, 128 / 255],\n\toldlace: [253 / 255, 245 / 255, 230 / 255],\n\tolive: [128 / 255, 128 / 255, 0],\n\tolivedrab: [107 / 255, 142 / 255, 35 / 255],\n\torange: [1, 165 / 255, 0],\n\torangered: [1, 69 / 255, 0],\n\torchid: [218 / 255, 112 / 255, 214 / 255],\n\tpalegoldenrod: [238 / 255, 232 / 255, 170 / 255],\n\tpalegreen: [152 / 255, 251 / 255, 152 / 255],\n\tpaleturquoise: [175 / 255, 238 / 255, 238 / 255],\n\tpalevioletred: [219 / 255, 112 / 255, 147 / 255],\n\tpapayawhip: [1, 239 / 255, 213 / 255],\n\tpeachpuff: [1, 218 / 255, 185 / 255],\n\tperu: [205 / 255, 133 / 255, 63 / 255],\n\tpink: [1, 192 / 255, 203 / 255],\n\tplum: [221 / 255, 160 / 255, 221 / 255],\n\tpowderblue: [176 / 255, 224 / 255, 230 / 255],\n\tpurple: [128 / 255, 0, 128 / 255],\n\trebeccapurple: [102 / 255, 51 / 255, 153 / 255],\n\tred: [1, 0, 0],\n\trosybrown: [188 / 255, 143 / 255, 143 / 255],\n\troyalblue: [65 / 255, 105 / 255, 225 / 255],\n\tsaddlebrown: [139 / 255, 69 / 255, 19 / 255],\n\tsalmon: [250 / 255, 128 / 255, 114 / 255],\n\tsandybrown: [244 / 255, 164 / 255, 96 / 255],\n\tseagreen: [46 / 255, 139 / 255, 87 / 255],\n\tseashell: [1, 245 / 255, 238 / 255],\n\tsienna: [160 / 255, 82 / 255, 45 / 255],\n\tsilver: [192 / 255, 192 / 255, 192 / 255],\n\tskyblue: [135 / 255, 206 / 255, 235 / 255],\n\tslateblue: [106 / 255, 90 / 255, 205 / 255],\n\tslategray: [112 / 255, 128 / 255, 144 / 255],\n\tslategrey: [112 / 255, 128 / 255, 144 / 255],\n\tsnow: [1, 250 / 255, 250 / 255],\n\tspringgreen: [0, 1, 127 / 255],\n\tsteelblue: [70 / 255, 130 / 255, 180 / 255],\n\ttan: [210 / 255, 180 / 255, 140 / 255],\n\tteal: [0, 128 / 255, 128 / 255],\n\tthistle: [216 / 255, 191 / 255, 216 / 255],\n\ttomato: [1, 99 / 255, 71 / 255],\n\tturquoise: [64 / 255, 224 / 255, 208 / 255],\n\tviolet: [238 / 255, 130 / 255, 238 / 255],\n\twheat: [245 / 255, 222 / 255, 179 / 255],\n\twhite: [1, 1, 1],\n\twhitesmoke: [245 / 255, 245 / 255, 245 / 255],\n\tyellow: [1, 1, 0],\n\tyellowgreen: [154 / 255, 205 / 255, 50 / 255],\n};\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport sRGBLinear from \"./srgb-linear.js\";\nimport KEYWORDS from \"../keywords.js\";\n\n/** @import { Coords } from \"../types.js\" */\n\nlet coordGrammar = Array(3).fill(\"<percentage> | <number>[0, 255]\");\nlet coordGrammarNumber = Array(3).fill(\"<number>[0, 255]\");\n\nexport default new RGBColorSpace({\n\tid: \"srgb\",\n\tname: \"sRGB\",\n\tbase: sRGBLinear,\n\tfromBase: rgb => {\n\t\t// convert an array of linear-light sRGB values in the range 0.0-1.0\n\t\t// to gamma corrected form\n\t\t// https://en.wikipedia.org/wiki/SRGB\n\t\treturn rgb.map(val => {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs > 0.0031308) {\n\t\t\t\treturn sign * (1.055 * abs ** (1 / 2.4) - 0.055);\n\t\t\t}\n\n\t\t\treturn 12.92 * val;\n\t\t});\n\t},\n\ttoBase: rgb => {\n\t\t// convert an array of sRGB values in the range 0.0 - 1.0\n\t\t// to linear light (un-companded) form.\n\t\t// https://en.wikipedia.org/wiki/SRGB\n\t\treturn rgb.map(val => {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs <= 0.04045) {\n\t\t\t\treturn val / 12.92;\n\t\t\t}\n\n\t\t\treturn sign * ((abs + 0.055) / 1.055) ** 2.4;\n\t\t});\n\t},\n\tformats: {\n\t\trgb: {\n\t\t\tcoords: coordGrammar,\n\t\t},\n\t\trgb_number: {\n\t\t\tname: \"rgb\",\n\t\t\tcommas: true,\n\t\t\tcoords: coordGrammarNumber,\n\t\t\talpha: false,\n\t\t},\n\t\tcolor: {\n\t\t\t/* use defaults */\n\t\t},\n\t\trgba: {\n\t\t\tcoords: coordGrammar,\n\t\t\tcommas: true,\n\t\t\talpha: true,\n\t\t},\n\t\trgba_number: {\n\t\t\tname: \"rgba\",\n\t\t\tcommas: true,\n\t\t\tcoords: coordGrammarNumber,\n\t\t},\n\t\thex: {\n\t\t\ttype: \"custom\",\n\t\t\ttoGamut: true,\n\t\t\ttest: str => /^#(([a-f0-9]{2}){3,4}|[a-f0-9]{3,4})$/i.test(str),\n\t\t\tparse (str) {\n\t\t\t\tif (str.length <= 5) {\n\t\t\t\t\t// #rgb or #rgba, duplicate digits\n\t\t\t\t\tstr = str.replace(/[a-f0-9]/gi, \"$&$&\");\n\t\t\t\t}\n\n\t\t\t\t/** @type {number[]} */\n\t\t\t\tlet rgba = [];\n\t\t\t\t// @ts-expect-error Type 'void' is not assignable to type 'string'\n\t\t\t\tstr.replace(/[a-f0-9]{2}/gi, component => {\n\t\t\t\t\trgba.push(parseInt(component, 16) / 255);\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tspaceId: \"srgb\",\n\t\t\t\t\tcoords: /** @type {Coords} */ (rgba.slice(0, 3)),\n\t\t\t\t\talpha: /** @type {number} */ (rgba.slice(3)[0]),\n\t\t\t\t};\n\t\t\t},\n\t\t\tserialize: (\n\t\t\t\tcoords,\n\t\t\t\talpha,\n\t\t\t\t{\n\t\t\t\t\tcollapse = true, // collapse to 3-4 digit hex when possible?\n\t\t\t\t\talpha: alphaFormat,\n\t\t\t\t} = {},\n\t\t\t) => {\n\t\t\t\tif ((alphaFormat !== false && alpha < 1) || alphaFormat === true) {\n\t\t\t\t\tcoords.push(alpha);\n\t\t\t\t}\n\n\t\t\t\tcoords = /** @type {[number, number, number]} */ (\n\t\t\t\t\tcoords.map(c => Math.round(c * 255))\n\t\t\t\t);\n\n\t\t\t\tlet collapsible = collapse && coords.every(c => c % 17 === 0);\n\n\t\t\t\tlet hex = coords\n\t\t\t\t\t.map(c => {\n\t\t\t\t\t\tif (collapsible) {\n\t\t\t\t\t\t\treturn (c / 17).toString(16);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn c.toString(16).padStart(2, \"0\");\n\t\t\t\t\t})\n\t\t\t\t\t.join(\"\");\n\n\t\t\t\treturn \"#\" + hex;\n\t\t\t},\n\t\t},\n\t\tkeyword: {\n\t\t\ttype: \"custom\",\n\t\t\ttest: str => /^[a-z]+$/i.test(str),\n\t\t\tparse (str) {\n\t\t\t\tstr = str.toLowerCase();\n\t\t\t\tlet ret = { spaceId: \"srgb\", coords: null, alpha: 1 };\n\n\t\t\t\tif (str === \"transparent\") {\n\t\t\t\t\tret.coords = KEYWORDS.black;\n\t\t\t\t\tret.alpha = 0;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tret.coords = KEYWORDS[str];\n\t\t\t\t}\n\n\t\t\t\tif (ret.coords) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport P3Linear from \"./p3-linear.js\";\nimport sRGB from \"./srgb.js\";\n\nexport default new RGBColorSpace({\n\tid: \"p3\",\n\tcssId: \"display-p3\",\n\tname: \"P3\",\n\tbase: P3Linear,\n\t// Gamma encoding/decoding is the same as sRGB\n\tfromBase: sRGB.fromBase,\n\ttoBase: sRGB.toBase,\n});\n","import { isNone, skipNone } from \"./util.js\";\nimport defaults from \"./defaults.js\";\nimport to from \"./to.js\";\nimport serialize from \"./serialize.js\";\nimport clone from \"./clone.js\";\nimport getColor from \"./getColor.js\";\nimport REC2020 from \"./spaces/rec2020.js\";\nimport P3 from \"./spaces/p3.js\";\nimport Lab from \"./spaces/lab.js\";\nimport sRGB from \"./spaces/srgb.js\";\n\n/** @import ColorSpace from \"./ColorSpace.js\" */\n/** @import { ColorTypes, PlainColorObject } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Display} Display */\n\n// Default space for CSS output. Code in Color.js makes this wider if there's a DOM available\ndefaults.display_space = sRGB;\n\nlet supportsNone;\n\nif (typeof CSS !== \"undefined\" && CSS.supports) {\n\t// Find widest supported color space for CSS\n\tfor (let space of [Lab, REC2020, P3]) {\n\t\tlet coords = space.getMinCoords();\n\t\tlet color = { space, coords, alpha: 1 };\n\t\tlet str = serialize(color);\n\n\t\tif (CSS.supports(\"color\", str)) {\n\t\t\tdefaults.display_space = space;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Returns a serialization of the color that can actually be displayed in the browser.\n * If the default serialization can be displayed, it is returned.\n * Otherwise, the color is converted to Lab, REC2020, or P3, whichever is the widest supported.\n * In Node.js, this is basically equivalent to `serialize()` but returns a `String` object instead.\n * @param {ColorTypes} color\n * @param {{ space?: string | ColorSpace | undefined } & Record<string, any>} param1\n * Options to be passed to `serialize()`\n * @returns {Display} String object containing the serialized color\n * with a color property containing the converted color (or the original, if no conversion was necessary)\n */\nexport default function display (color, { space = defaults.display_space, ...options } = {}) {\n\tcolor = getColor(color);\n\n\tlet ret = /** @type {Display} */ (serialize(color, options));\n\n\tif (\n\t\ttypeof CSS === \"undefined\" ||\n\t\tCSS.supports(\"color\", /** @type {string} */ (ret)) ||\n\t\t!defaults.display_space\n\t) {\n\t\tret = /** @type {Display} */ (new String(ret));\n\t\tret.color = /** @type {PlainColorObject} */ (color);\n\t}\n\telse {\n\t\t// If we're here, what we were about to output is not supported\n\t\tlet fallbackColor = /** @type {PlainColorObject} */ (color);\n\n\t\t// First, check if the culprit is none values\n\t\tlet hasNone = color.coords.some(isNone) || isNone(color.alpha);\n\n\t\tif (hasNone) {\n\t\t\t// Does the browser support none values?\n\t\t\tif (!(supportsNone ??= CSS.supports(\"color\", \"hsl(none 50% 50%)\"))) {\n\t\t\t\t// Nope, try again without none\n\t\t\t\tfallbackColor = clone(/** @type {PlainColorObject} */ (color));\n\t\t\t\tfallbackColor.coords = /** @type {[number, number, number]} */ (\n\t\t\t\t\tfallbackColor.coords.map(skipNone)\n\t\t\t\t);\n\t\t\t\tfallbackColor.alpha = skipNone(fallbackColor.alpha);\n\n\t\t\t\t// @ts-expect-error This is set to the correct type later\n\t\t\t\tret = serialize(fallbackColor, options);\n\n\t\t\t\tif (CSS.supports(\"color\", /** @type {string} */ (ret))) {\n\t\t\t\t\t// We're done, now it's supported\n\t\t\t\t\tret = /** @type {Display} */ (new String(ret));\n\t\t\t\t\tret.color = fallbackColor;\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're here, the color function is not supported\n\t\t// Fall back to fallback space\n\t\tfallbackColor = to(fallbackColor, space);\n\t\tret = /** @type {Display} */ (new String(serialize(fallbackColor, options)));\n\t\tret.color = fallbackColor;\n\t}\n\n\treturn ret;\n}\n","import getColor from \"./getColor.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport to from \"./to.js\";\nimport { adjust } from \"./angles.js\";\nimport { isNone } from \"./util.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").DeltasReturn} DeltasReturn */\n\n/**\n * Get color differences per-component, on any color space\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {object} options\n * @param {string | ColorSpace} [options.space=c1.space] - The color space to use for the delta calculation. Defaults to the color space of the first color.\n * @param {Parameters<typeof adjust>[0]} [options.hue=\"shorter\"] - How to handle hue differences. Same as hue interpolation option.\n * @returns {DeltasReturn}\n */\nexport default function deltas (c1, c2, { space, hue = \"shorter\" } = {}) {\n\tc1 = getColor(c1);\n\tspace ||= c1.space;\n\tspace = ColorSpace.get(space);\n\tlet spaceCoords = Object.values(space.coords);\n\n\t[c1, c2] = [c1, c2].map(c => to(c, space));\n\tlet [coords1, coords2] = [c1, c2].map(c => c.coords);\n\n\tlet coords = /** @type {[number, number, number]} */ (\n\t\tcoords1.map((coord1, i) => {\n\t\t\tlet coordMeta = spaceCoords[i];\n\t\t\tlet coord2 = coords2[i];\n\n\t\t\tif (coordMeta.type === \"angle\") {\n\t\t\t\t[coord1, coord2] = adjust(hue, [coord1, coord2]);\n\t\t\t}\n\n\t\t\treturn subtractCoords(coord1, coord2);\n\t\t})\n\t);\n\n\tlet alpha = subtractCoords(c1.alpha, c2.alpha);\n\n\treturn { space: /** @type {ColorSpace} */ (space), coords, alpha };\n}\n\nfunction subtractCoords (c1, c2) {\n\tif (isNone(c1) || isNone(c2)) {\n\t\treturn c1 === c2 ? null : 0;\n\t}\n\n\treturn c1 - c2;\n}\n","import getColor from \"./getColor.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n/**\n * @param {ColorTypes} color1\n * @param {ColorTypes} color2\n * @returns {boolean}\n */\nexport default function equals (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\treturn (\n\t\tcolor1.space === color2.space &&\n\t\tcolor1.alpha === color2.alpha &&\n\t\tcolor1.coords.every((c, i) => c === color2.coords[i])\n\t);\n}\n","/**\n * Relative luminance\n */\nimport get from \"./get.js\";\nimport set from \"./set.js\";\nimport xyz_d65 from \"./spaces/xyz-d65.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n/**\n *\n * @param {ColorTypes} color\n * @returns {number}\n */\nexport function getLuminance (color) {\n\t// Assume getColor() is called on color in get()\n\treturn get(color, [xyz_d65, \"y\"]);\n}\n\n/**\n * @param {ColorTypes} color\n * @param {number | ((coord: number) => number)} value\n */\nexport function setLuminance (color, value) {\n\t// Assume getColor() is called on color in set()\n\tset(color, [xyz_d65, \"y\"], value);\n}\n\n/**\n * @param {typeof import(\"./color.js\").default} Color\n */\nexport function register (Color) {\n\tObject.defineProperty(Color.prototype, \"luminance\", {\n\t\tget () {\n\t\t\treturn getLuminance(this);\n\t\t},\n\t\tset (value) {\n\t\t\tsetLuminance(this, value);\n\t\t},\n\t});\n}\n","// WCAG 2.0 contrast https://www.w3.org/TR/WCAG20-TECHS/G18.html\n// Simple contrast, with fixed 5% viewing flare contribution\n// Symmetric, does not matter which is foreground and which is background\n\nimport getColor from \"../getColor.js\";\nimport { getLuminance } from \"../luminance.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastWCAG21 (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Y1 = Math.max(getLuminance(color1), 0);\n\tlet Y2 = Math.max(getLuminance(color2), 0);\n\n\tif (Y2 > Y1) {\n\t\t[Y1, Y2] = [Y2, Y1];\n\t}\n\n\treturn (Y1 + 0.05) / (Y2 + 0.05);\n}\n","// APCA 0.0.98G\n// https://github.com/Myndex/apca-w3\n// see also https://github.com/w3c/silver/issues/643\n\nimport getColor from \"../getColor.js\";\nimport to from \"../to.js\";\nimport { isNone } from \"../util.js\";\n\n// exponents\nconst normBG = 0.56;\nconst normTXT = 0.57;\nconst revTXT = 0.62;\nconst revBG = 0.65;\n\n// clamps\nconst blkThrs = 0.022;\nconst blkClmp = 1.414;\nconst loClip = 0.1;\nconst deltaYmin = 0.0005;\n\n// scalers\n// see https://github.com/w3c/silver/issues/645\nconst scaleBoW = 1.14;\nconst loBoWoffset = 0.027;\nconst scaleWoB = 1.14;\nconst loWoBoffset = 0.027;\n\nfunction fclamp (Y) {\n\tif (Y >= blkThrs) {\n\t\treturn Y;\n\t}\n\treturn Y + (blkThrs - Y) ** blkClmp;\n}\n\nfunction linearize (val) {\n\tlet sign = val < 0 ? -1 : 1;\n\tlet abs = Math.abs(val);\n\treturn sign * Math.pow(abs, 2.4);\n}\n\n/**\n * Not symmetric, requires a foreground (text) color, and a background color\n * @param {import(\"../types.js\").ColorTypes} background\n * @param {import(\"../types.js\").ColorTypes} foreground\n * @returns {number}\n */\nexport default function contrastAPCA (background, foreground) {\n\tforeground = getColor(foreground);\n\tbackground = getColor(background);\n\n\tlet S;\n\tlet C;\n\tlet Sapc;\n\n\t// Myndex as-published, assumes sRGB inputs\n\tlet R, G, B;\n\n\tforeground = to(foreground, \"srgb\");\n\t// Should these be clamped to in-gamut values?\n\n\t// Calculates \"screen luminance\" with non-standard simple gamma EOTF\n\t// weights should be from CSS Color 4, not the ones here which are via Myndex and copied from Lindbloom\n\t[R, G, B] = foreground.coords.map(c => {\n\t\treturn isNone(c) ? 0 : c;\n\t});\n\tlet lumTxt = linearize(R) * 0.2126729 + linearize(G) * 0.7151522 + linearize(B) * 0.072175;\n\n\tbackground = to(background, \"srgb\");\n\t[R, G, B] = background.coords.map(c => {\n\t\treturn isNone(c) ? 0 : c;\n\t});\n\tlet lumBg = linearize(R) * 0.2126729 + linearize(G) * 0.7151522 + linearize(B) * 0.072175;\n\n\t// toe clamping of very dark values to account for flare\n\tlet Ytxt = fclamp(lumTxt);\n\tlet Ybg = fclamp(lumBg);\n\n\t// are we \"Black on White\" (dark on light), or light on dark?\n\tlet BoW = Ybg > Ytxt;\n\n\t// why is this a delta, when Y is not perceptually uniform?\n\t// Answer: it is a noise gate, see\n\t// https://github.com/LeaVerou/color.js/issues/208\n\tif (Math.abs(Ybg - Ytxt) < deltaYmin) {\n\t\tC = 0;\n\t}\n\telse {\n\t\tif (BoW) {\n\t\t\t// dark text on light background\n\t\t\tS = Ybg ** normBG - Ytxt ** normTXT;\n\t\t\tC = S * scaleBoW;\n\t\t}\n\t\telse {\n\t\t\t// light text on dark background\n\t\t\tS = Ybg ** revBG - Ytxt ** revTXT;\n\t\t\tC = S * scaleWoB;\n\t\t}\n\t}\n\tif (Math.abs(C) < loClip) {\n\t\tSapc = 0;\n\t}\n\telse if (C > 0) {\n\t\t// not clear whether Woffset is loBoWoffset or loWoBoffset\n\t\t// but they have the same value\n\t\tSapc = C - loBoWoffset;\n\t}\n\telse {\n\t\tSapc = C + loBoWoffset;\n\t}\n\n\treturn Sapc * 100;\n}\n","// Michelson luminance contrast\n// the relation between the spread and the sum of the two luminances\n// Symmetric, does not matter which is foreground and which is background\n// No black level compensation for flare.\n\nimport getColor from \"../getColor.js\";\nimport { getLuminance } from \"../luminance.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastMichelson (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Y1 = Math.max(getLuminance(color1), 0);\n\tlet Y2 = Math.max(getLuminance(color2), 0);\n\n\tif (Y2 > Y1) {\n\t\t[Y1, Y2] = [Y2, Y1];\n\t}\n\n\tlet denom = Y1 + Y2;\n\treturn denom === 0 ? 0 : (Y1 - Y2) / denom;\n}\n","// Weber luminance contrast\n// The difference between the two luminances divided by the lower luminance\n// Symmetric, does not matter which is foreground and which is background\n// No black level compensation for flare.\n\nimport getColor from \"../getColor.js\";\nimport { getLuminance } from \"../luminance.js\";\n\n// the darkest sRGB color above black is #000001 and this produces\n// a plain Weber contrast of ~45647.\n// So, setting the divide-by-zero result at 50000 is a reasonable\n// max clamp for the plain Weber\nconst max = 50000;\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastWeber (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Y1 = Math.max(getLuminance(color1), 0);\n\tlet Y2 = Math.max(getLuminance(color2), 0);\n\n\tif (Y2 > Y1) {\n\t\t[Y1, Y2] = [Y2, Y1];\n\t}\n\n\treturn Y2 === 0 ? max : (Y1 - Y2) / Y2;\n}\n","// CIE Lightness difference, as used by Google Material Design\n// Google HCT Tone is the same as CIE Lightness\n// https://material.io/blog/science-of-color-design\n\nimport getColor from \"../getColor.js\";\nimport get from \"../get.js\";\nimport lab from \"../spaces/lab.js\";\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastLstar (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet L1 = get(color1, [lab, \"l\"]);\n\tlet L2 = get(color2, [lab, \"l\"]);\n\n\treturn Math.abs(L1 - L2);\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\n\n// κ * ε = 2^3 = 8\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst ε3 = 24 / 116;\nconst κ = 24389 / 27; // 29^3/3^3\n\nlet white = WHITES.D65;\n\nexport default new ColorSpace({\n\tid: \"lab-d65\",\n\tname: \"Lab D65\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-125, 125],\n\t\t},\n\t},\n\n\t// Assuming XYZ is relative to D65, convert to CIE Lab\n\t// from CIE standard, which now defines these as a rational fraction\n\twhite,\n\n\tbase: xyz_d65,\n\t// Convert D65-adapted XYZ to Lab\n\t// CIE 15.3:2004 section 8.2.1.1\n\tfromBase (XYZ) {\n\t\t// compute xyz, which is XYZ scaled relative to reference white\n\t\tlet xyz = XYZ.map((value, i) => value / white[i]);\n\n\t\t// now compute f\n\t\tlet f = xyz.map(value => (value > ε ? Math.cbrt(value) : (κ * value + 16) / 116));\n\n\t\treturn [\n\t\t\t116 * f[1] - 16, // L\n\t\t\t500 * (f[0] - f[1]), // a\n\t\t\t200 * (f[1] - f[2]), // b\n\t\t];\n\t},\n\t// Convert Lab to D65-adapted XYZ\n\t// Same result as CIE 15.3:2004 Appendix D although the derivation is different\n\t// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\ttoBase (Lab) {\n\t\t// compute f, starting with the luminance-related term\n\t\tlet f = [];\n\t\tf[1] = (Lab[0] + 16) / 116;\n\t\tf[0] = Lab[1] / 500 + f[1];\n\t\tf[2] = f[1] - Lab[2] / 200;\n\n\t\t// compute xyz\n\t\tlet xyz = [\n\t\t\tf[0] > ε3 ? Math.pow(f[0], 3) : (116 * f[0] - 16) / κ,\n\t\t\tLab[0] > 8 ? Math.pow((Lab[0] + 16) / 116, 3) : Lab[0] / κ,\n\t\t\tf[2] > ε3 ? Math.pow(f[2], 3) : (116 * f[2] - 16) / κ,\n\t\t];\n\n\t\t// Compute XYZ by scaling xyz by reference white\n\t\treturn xyz.map((value, i) => value * white[i]);\n\t},\n\n\tformats: {\n\t\t\"lab-d65\": {\n\t\t\tcoords: [\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","// Delta Phi Star perceptual lightness contrast\n// See https://github.com/Myndex/deltaphistar\n// The (difference between two Lstars each raised to phi) raised to (1/phi)\n// Symmetric, does not matter which is foreground and which is background\n\nimport getColor from \"../getColor.js\";\nimport get from \"../get.js\";\nimport lab_d65 from \"../spaces/lab-d65.js\";\n\nconst phi = Math.pow(5, 0.5) * 0.5 + 0.5; // Math.phi can be used if Math.js\n\n/**\n * @param {import(\"../types.js\").ColorTypes} color1\n * @param {import(\"../types.js\").ColorTypes} color2\n * @returns {number}\n */\nexport default function contrastDeltaPhi (color1, color2) {\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\tlet Lstr1 = get(color1, [lab_d65, \"l\"]);\n\tlet Lstr2 = get(color2, [lab_d65, \"l\"]);\n\n\tlet deltaPhiStar = Math.abs(Math.pow(Lstr1, phi) - Math.pow(Lstr2, phi));\n\n\tlet contrast = Math.pow(deltaPhiStar, 1 / phi) * Math.SQRT2 - 40;\n\n\treturn contrast < 7.5 ? 0.0 : contrast;\n}\n","export { default as contrastWCAG21 } from \"./WCAG21.js\";\nexport { default as contrastAPCA } from \"./APCA.js\";\nexport { default as contrastMichelson } from \"./Michelson.js\";\nexport { default as contrastWeber } from \"./Weber.js\";\nexport { default as contrastLstar } from \"./Lstar.js\";\nexport { default as contrastDeltaPhi } from \"./deltaPhi.js\";\n\n/** @typedef {keyof typeof import(\"./index.js\") extends `contrast${infer Alg}` ? Alg : string} Algorithms */\n","import getColor from \"./getColor.js\";\n// import defaults from \"./defaults.js\";\nimport { isString } from \"./util.js\";\nimport * as contrastAlgorithms from \"./contrast/index.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Algorithms} Algorithms */\n\n/**\n *\n * @param {ColorTypes} background\n * @param {ColorTypes} foreground\n * @param {Algorithms | ({ algorithm: Algorithms } & Record<string, any>)} o\n * Algorithm to use as well as any other options to pass to the contrast function\n * @returns {number}\n * @throws {TypeError} Unknown or unspecified algorithm\n */\nexport default function contrast (background, foreground, o) {\n\tif (isString(o)) {\n\t\to = { algorithm: o };\n\t}\n\n\tlet { algorithm, ...rest } = o || {};\n\n\tif (!algorithm) {\n\t\tlet algorithms = Object.keys(contrastAlgorithms)\n\t\t\t.map(a => a.replace(/^contrast/, \"\"))\n\t\t\t.join(\", \");\n\t\tthrow new TypeError(\n\t\t\t`contrast() function needs a contrast algorithm. Please specify one of: ${algorithms}`,\n\t\t);\n\t}\n\n\tbackground = getColor(background);\n\tforeground = getColor(foreground);\n\n\tfor (let a in contrastAlgorithms) {\n\t\tif (\"contrast\" + algorithm.toLowerCase() === a.toLowerCase()) {\n\t\t\treturn contrastAlgorithms[a](background, foreground, rest);\n\t\t}\n\t}\n\n\tthrow new TypeError(`Unknown contrast algorithm: ${algorithm}`);\n}\n","import xyz_d65 from \"./spaces/xyz-d65.js\";\nimport getAll from \"./getAll.js\";\n\n/** @import Color, { ColorTypes } from \"./color.js\" */\n\n// Chromaticity coordinates\n/**\n * @param {ColorTypes} color\n * @returns {[number, number]}\n */\nexport function uv (color) {\n\t// Assumes getAll() calls getColor() on color\n\tlet [X, Y, Z] = getAll(color, xyz_d65);\n\tlet denom = X + 15 * Y + 3 * Z;\n\treturn [(4 * X) / denom, (9 * Y) / denom];\n}\n\n/**\n * @param {ColorTypes} color\n * @returns {[number, number]}\n */\nexport function xy (color) {\n\t// Assumes getAll() calls getColor() on color\n\tlet [X, Y, Z] = getAll(color, xyz_d65);\n\tlet sum = X + Y + Z;\n\treturn [X / sum, Y / sum];\n}\n\n/**\n * @param {typeof Color} Color\n */\nexport function register (Color) {\n\t// no setters, as lightness information is lost\n\t// when converting color to chromaticity\n\tObject.defineProperty(Color.prototype, \"uv\", {\n\t\tget () {\n\t\t\treturn uv(this);\n\t\t},\n\t});\n\n\tObject.defineProperty(Color.prototype, \"xy\", {\n\t\tget () {\n\t\t\treturn xy(this);\n\t\t},\n\t});\n}\n","import defaults from \"./defaults.js\";\nimport { isString } from \"./util.js\";\nimport deltaEMethods from \"./deltaE/index.js\";\n\n/** @import { ColorTypes } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").Methods} Methods */\n\n/**\n *\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {Methods | ({ method?: Methods | undefined } & Record<string, any>)} [o]\n * deltaE method to use as well as any other options to pass to the deltaE function\n * @returns {number}\n * @throws {TypeError} Unknown or unspecified method\n */\nexport default function deltaE (c1, c2, o = {}) {\n\tif (isString(o)) {\n\t\to = { method: o };\n\t}\n\n\tlet { method = defaults.deltaE, ...rest } = o;\n\n\tfor (let m in deltaEMethods) {\n\t\tif (\"deltae\" + method.toLowerCase() === m.toLowerCase()) {\n\t\t\treturn deltaEMethods[m](c1, c2, rest);\n\t\t}\n\t}\n\n\tthrow new TypeError(`Unknown deltaE method: ${method}`);\n}\n","import ColorSpace from \"./ColorSpace.js\";\nimport set from \"./set.js\";\n\n/** @import { ColorTypes, PlainColorObject, Ref } from \"./types.js\" */\n\n/**\n * @param {ColorTypes} color\n * @param {number} amount\n * @returns {PlainColorObject}\n */\nexport function lighten (color, amount = 0.25) {\n\tlet space = ColorSpace.get(\"oklch\", \"lch\");\n\tlet /** @type {Ref} */ lightness = [space, \"l\"];\n\treturn set(color, lightness, l => l * (1 + amount));\n}\n\n/**\n * @param {ColorTypes} color\n * @param {number} amount\n * @returns {PlainColorObject}\n */\nexport function darken (color, amount = 0.25) {\n\tlet space = ColorSpace.get(\"oklch\", \"lch\");\n\tlet /** @type {Ref} */ lightness = [space, \"l\"];\n\treturn set(color, lightness, l => l * (1 - amount));\n}\n\n/** @type {\"color\"} */\nlighten.returns = \"color\";\n\n/** @type {\"color\"} */\ndarken.returns = \"color\";\n","/**\n * Functions related to color interpolation\n */\nimport ColorSpace from \"./ColorSpace.js\";\nimport { type, interpolate, isNone } from \"./util.js\";\nimport getColor from \"./getColor.js\";\nimport clone from \"./clone.js\";\nimport to from \"./to.js\";\nimport toGamut from \"./toGamut.js\";\nimport get from \"./get.js\";\nimport set from \"./set.js\";\nimport defaults from \"./defaults.js\";\nimport * as angles from \"./angles.js\";\nimport deltaE from \"./deltaE.js\";\n\n/** @import { ColorTypes, PlainColorObject, Ref } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").MixOptions} MixOptions */\n/** @typedef {import(\"./types.js\").Range} Range */\n/** @typedef {import(\"./types.js\").RangeOptions} RangeOptions */\n/** @typedef {import(\"./types.js\").StepsOptions} StepsOptions */\n\n/**\n * Return an intermediate color between two colors\n * @overload\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {MixOptions} [options]\n * @returns {PlainColorObject}\n */\n/**\n * @overload\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {number} [p=0.5]\n * @param {MixOptions} [options]\n * @returns {PlainColorObject}\n */\nexport function mix (c1, c2, p, o = {}) {\n\t[c1, c2] = [getColor(c1), getColor(c2)];\n\n\tif (type(p) === \"object\") {\n\t\t[p, o] = [0.5, p];\n\t}\n\n\tlet r = range(c1, c2, o);\n\treturn r(p ?? 0.5); // why not give p a default value like we do for options? Overloading doesn't work, and TS complains\n}\n\n/**\n * Get an array of discrete steps\n * @overload\n * @param {ColorTypes} c1\n * @param {ColorTypes} c2\n * @param {StepsOptions} [options]\n * @returns {PlainColorObject[]}\n */\n/**\n * @overload\n * @param {Range} range\n * @param {StepsOptions} [options]\n * @returns {PlainColorObject[]}\n */\nexport function steps (c1, c2, options = {}) {\n\tlet colorRange;\n\n\tif (isRange(c1)) {\n\t\t// Tweaking existing range\n\t\t[colorRange, options] = [c1, c2];\n\t\t[c1, c2] = colorRange.rangeArgs.colors;\n\t}\n\n\tlet { maxDeltaE, deltaEMethod, steps = 2, maxSteps = 1000, ...rangeOptions } = options;\n\n\tif (!colorRange) {\n\t\t[c1, c2] = [getColor(c1), getColor(c2)];\n\t\tcolorRange = range(c1, c2, rangeOptions);\n\t}\n\n\tlet totalDelta = deltaE(c1, c2);\n\tlet actualSteps =\n\t\tmaxDeltaE > 0 ? Math.max(steps, Math.ceil(totalDelta / maxDeltaE) + 1) : steps;\n\tlet ret = [];\n\n\tif (maxSteps !== undefined) {\n\t\tactualSteps = Math.min(actualSteps, maxSteps);\n\t}\n\n\tif (actualSteps === 1) {\n\t\tret = [{ p: 0.5, color: colorRange(0.5) }];\n\t}\n\telse {\n\t\tlet step = 1 / (actualSteps - 1);\n\t\tret = Array.from({ length: actualSteps }, (_, i) => {\n\t\t\tlet p = i * step;\n\t\t\treturn { p, color: colorRange(p) };\n\t\t});\n\t}\n\n\tif (maxDeltaE > 0) {\n\t\t// Iterate over all stops and find max deltaE\n\t\tlet maxDelta = ret.reduce((acc, cur, i) => {\n\t\t\tif (i === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tlet ΔΕ = deltaE(cur.color, ret[i - 1].color, deltaEMethod);\n\t\t\treturn Math.max(acc, ΔΕ);\n\t\t}, 0);\n\n\t\twhile (maxDelta > maxDeltaE) {\n\t\t\t// Insert intermediate stops and measure maxDelta again\n\t\t\t// We need to do this for all pairs, otherwise the midpoint shifts\n\t\t\tmaxDelta = 0;\n\n\t\t\tfor (let i = 1; i < ret.length && ret.length < maxSteps; i++) {\n\t\t\t\tlet prev = ret[i - 1];\n\t\t\t\tlet cur = ret[i];\n\n\t\t\t\tlet p = (cur.p + prev.p) / 2;\n\t\t\t\tlet color = colorRange(p);\n\t\t\t\tmaxDelta = Math.max(maxDelta, deltaE(color, prev.color), deltaE(color, cur.color));\n\t\t\t\tret.splice(i, 0, { p, color: colorRange(p) });\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t}\n\n\tret = ret.map(a => a.color);\n\n\treturn ret;\n}\n\n/**\n * Creates a function that accepts a number and returns a color.\n * For numbers in the range 0 to 1, the function interpolates;\n * for numbers outside that range, the function extrapolates\n * (and thus may not return the results you expect)\n * @overload\n * @param {Range} range\n * @param {RangeOptions} [options]\n * @returns {Range}\n */\n/**\n * @overload\n * @param {ColorTypes} color1\n * @param {ColorTypes} color2\n * @param {RangeOptions & Record<string, any>} [options]\n * @returns {Range}\n */\nexport function range (color1, color2, options = {}) {\n\tif (isRange(color1)) {\n\t\t// Tweaking existing range\n\t\tlet [r, options] = [color1, color2];\n\n\t\treturn range(...r.rangeArgs.colors, { ...r.rangeArgs.options, ...options });\n\t}\n\n\tlet { space, outputSpace, progression, premultiplied } = options;\n\n\tcolor1 = getColor(color1);\n\tcolor2 = getColor(color2);\n\n\t// Make sure we're working on copies of these colors\n\tcolor1 = clone(color1);\n\tcolor2 = clone(color2);\n\n\tlet rangeArgs = { colors: [color1, color2], options };\n\n\tif (space) {\n\t\tspace = ColorSpace.get(space);\n\t}\n\telse {\n\t\tspace = ColorSpace.registry[defaults.interpolationSpace] || color1.space;\n\t}\n\n\toutputSpace = outputSpace ? ColorSpace.get(outputSpace) : space;\n\n\tcolor1 = to(color1, space);\n\tcolor2 = to(color2, space);\n\n\t// Gamut map to avoid areas of flat color\n\tcolor1 = toGamut(color1);\n\tcolor2 = toGamut(color2);\n\n\t// Handle hue interpolation\n\t// See https://github.com/w3c/csswg-drafts/issues/4735#issuecomment-635741840\n\tif (space.coords.h && space.coords.h.type === \"angle\") {\n\t\tlet arc = (options.hue = options.hue || \"shorter\");\n\n\t\tlet /** @type {Ref} */ hue = [space, \"h\"];\n\t\tlet [θ1, θ2] = [get(color1, hue), get(color2, hue)];\n\t\t// Undefined hues must be evaluated before hue fix-up to properly\n\t\t// calculate hue arcs between undefined and defined hues.\n\t\t// See https://github.com/w3c/csswg-drafts/issues/9436#issuecomment-1746957545\n\t\tif (isNone(θ1) && !isNone(θ2)) {\n\t\t\tθ1 = θ2;\n\t\t}\n\t\telse if (isNone(θ2) && !isNone(θ1)) {\n\t\t\tθ2 = θ1;\n\t\t}\n\t\t[θ1, θ2] = angles.adjust(arc, [θ1, θ2]);\n\t\tset(color1, hue, θ1);\n\t\tset(color2, hue, θ2);\n\t}\n\n\tif (premultiplied) {\n\t\t// not coping with polar spaces yet\n\t\tcolor1.coords = /** @type {[number, number, number]} */ (\n\t\t\tcolor1.coords.map(c => c * color1.alpha)\n\t\t);\n\t\tcolor2.coords = /** @type {[number, number, number]} */ (\n\t\t\tcolor2.coords.map(c => c * color2.alpha)\n\t\t);\n\t}\n\n\treturn Object.assign(\n\t\tp => {\n\t\t\tp = progression ? progression(p) : p;\n\t\t\tlet coords = color1.coords.map((start, i) => {\n\t\t\t\tlet end = color2.coords[i];\n\t\t\t\treturn interpolate(start, end, p);\n\t\t\t});\n\n\t\t\tlet alpha = interpolate(color1.alpha, color2.alpha, p);\n\t\t\tlet ret = { space, coords, alpha };\n\n\t\t\tif (premultiplied) {\n\t\t\t\t// undo premultiplication\n\t\t\t\tret.coords = ret.coords.map(c => c / alpha);\n\t\t\t}\n\n\t\t\tif (outputSpace !== space) {\n\t\t\t\tret = to(ret, outputSpace);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t},\n\t\t{\n\t\t\trangeArgs,\n\t\t},\n\t);\n}\n\n/**\n * @param {any} val\n * @returns {val is Range}\n */\nexport function isRange (val) {\n\treturn type(val) === \"function\" && !!val.rangeArgs;\n}\n\ndefaults.interpolationSpace = \"lab\";\n\n/**\n * @param {typeof import(\"./color.js\").default} Color\n */\nexport function register (Color) {\n\tColor.defineFunction(\"mix\", mix, { returns: \"color\" });\n\tColor.defineFunction(\"range\", range, { returns: \"function<color>\" });\n\tColor.defineFunction(\"steps\", steps, { returns: \"array<color>\" });\n}\n","import ColorSpace from \"../ColorSpace.js\";\nimport sRGB from \"./srgb.js\";\n\nexport default new ColorSpace({\n\tid: \"hsl\",\n\tname: \"HSL\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: sRGB,\n\n\t// Adapted from https://drafts.csswg.org/css-color-4/better-rgbToHsl.js\n\tfromBase: rgb => {\n\t\tlet max = Math.max(...rgb);\n\t\tlet min = Math.min(...rgb);\n\t\tlet [r, g, b] = rgb;\n\t\tlet [h, s, l] = [null, 0, (min + max) / 2];\n\t\tlet d = max - min;\n\n\t\tif (d !== 0) {\n\t\t\ts = l === 0 || l === 1 ? 0 : (max - l) / Math.min(l, 1 - l);\n\n\t\t\tswitch (max) {\n\t\t\t\tcase r:\n\t\t\t\t\th = (g - b) / d + (g < b ? 6 : 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase g:\n\t\t\t\t\th = (b - r) / d + 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase b:\n\t\t\t\t\th = (r - g) / d + 4;\n\t\t\t}\n\n\t\t\th = h * 60;\n\t\t}\n\n\t\t// Very out of gamut colors can produce negative saturation\n\t\t// If so, just rotate the hue by 180 and use a positive saturation\n\t\t// see https://github.com/w3c/csswg-drafts/issues/9222\n\t\tif (s < 0) {\n\t\t\th += 180;\n\t\t\ts = Math.abs(s);\n\t\t}\n\n\t\tif (h >= 360) {\n\t\t\th -= 360;\n\t\t}\n\n\t\treturn [h, s * 100, l * 100];\n\t},\n\n\t// Adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB_alternative\n\ttoBase: hsl => {\n\t\tlet [h, s, l] = hsl;\n\t\th = h % 360;\n\n\t\tif (h < 0) {\n\t\t\th += 360;\n\t\t}\n\n\t\ts /= 100;\n\t\tl /= 100;\n\n\t\tfunction f (n) {\n\t\t\tlet k = (n + h / 30) % 12;\n\t\t\tlet a = s * Math.min(l, 1 - l);\n\t\t\treturn l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n\t\t}\n\n\t\treturn [f(0), f(8), f(4)];\n\t},\n\n\tformats: {\n\t\thsl: {\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t\thsla: {\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t\tcommas: true,\n\t\t\talpha: true,\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport sRGB from \"./srgb.js\";\n\n// Note that, like HSL, calculations are done directly on\n// gamma-corrected sRGB values rather than linearising them first.\n\nexport default new ColorSpace({\n\tid: \"hsv\",\n\tname: \"HSV\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tv: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Value\",\n\t\t},\n\t},\n\n\tbase: sRGB,\n\t// https://en.wikipedia.org/wiki/HSL_and_HSV#Formal_derivation\n\tfromBase (rgb) {\n\t\tlet max = Math.max(...rgb);\n\t\tlet min = Math.min(...rgb);\n\t\tlet [r, g, b] = rgb;\n\t\tlet [h, s, v] = [null, 0, max];\n\t\tlet d = max - min;\n\n\t\tif (d !== 0) {\n\t\t\tswitch (max) {\n\t\t\t\tcase r:\n\t\t\t\t\th = (g - b) / d + (g < b ? 6 : 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase g:\n\t\t\t\t\th = (b - r) / d + 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase b:\n\t\t\t\t\th = (r - g) / d + 4;\n\t\t\t}\n\n\t\t\th = h * 60;\n\t\t}\n\n\t\tif (v) {\n\t\t\ts = d / v;\n\t\t}\n\n\t\tif (h >= 360) {\n\t\t\th -= 360;\n\t\t}\n\n\t\treturn [h, s * 100, v * 100];\n\t},\n\t// Adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB_alternative\n\ttoBase (hsv) {\n\t\tlet [h, s, v] = hsv;\n\t\th = h % 360;\n\n\t\tif (h < 0) {\n\t\t\th += 360;\n\t\t}\n\n\t\ts /= 100;\n\t\tv /= 100;\n\n\t\tfunction f (n) {\n\t\t\tlet k = (n + h / 60) % 6;\n\t\t\treturn v - v * s * Math.max(0, Math.min(k, 4 - k, 1));\n\t\t}\n\n\t\treturn [f(5), f(3), f(1)];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hsv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport HSV from \"./hsv.js\";\n\n// The Hue, Whiteness Blackness (HWB) colorspace\n// See https://drafts.csswg.org/css-color-4/#the-hwb-notation\n// Note that, like HSL, calculations are done directly on\n// gamma-corrected sRGB values rather than linearising them first.\n\nexport default new ColorSpace({\n\tid: \"hwb\",\n\tname: \"HWB\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\tw: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Whiteness\",\n\t\t},\n\t\tb: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Blackness\",\n\t\t},\n\t},\n\n\tbase: HSV,\n\tfromBase (hsv) {\n\t\tlet [h, s, v] = hsv;\n\n\t\treturn [h, (v * (100 - s)) / 100, 100 - v];\n\t},\n\ttoBase (hwb) {\n\t\tlet [h, w, b] = hwb;\n\n\t\t// Now convert percentages to [0..1]\n\t\tw /= 100;\n\t\tb /= 100;\n\n\t\t// Achromatic check (white plus black >= 1)\n\t\tlet sum = w + b;\n\t\tif (sum >= 1) {\n\t\t\tlet gray = w / sum;\n\t\t\treturn [h, 0, gray * 100];\n\t\t}\n\n\t\tlet v = 1 - b;\n\t\tlet s = v === 0 ? 0 : 1 - w / v;\n\t\treturn [h, s * 100, v * 100];\n\t},\n\n\tformats: {\n\t\thwb: {\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// convert an array of linear-light a98-rgb values to CIE XYZ\n// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n// has greater numerical precision than section 4.3.5.3 of\n// https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n// but the values below were calculated from first principles\n// from the chromaticity coordinates of R G B W\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.5766690429101305, 0.1855582379065463, 0.1882286462349947 ],\n\t[ 0.29734497525053605, 0.6273635662554661, 0.07529145849399788 ],\n\t[ 0.02703136138641234, 0.07068885253582723, 0.9913375368376388 ],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 2.0415879038107465, -0.5650069742788596, -0.34473135077832956 ],\n\t[ -0.9692436362808795, 1.8759675015077202, 0.04155505740717557 ],\n\t[ 0.013444280632031142, -0.11836239223101838, 1.0151749943912054 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"a98rgb-linear\",\n\tcssId: \"--a98-rgb-linear\",\n\tname: \"Linear Adobe® 98 RGB compatible\",\n\twhite: \"D65\",\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport A98Linear from \"./a98rgb-linear.js\";\n\nexport default new RGBColorSpace({\n\tid: \"a98rgb\",\n\tcssId: \"a98-rgb\",\n\tname: \"Adobe® 98 RGB compatible\",\n\tbase: A98Linear,\n\ttoBase: RGB => RGB.map(val => Math.pow(Math.abs(val), 563 / 256) * Math.sign(val)),\n\tfromBase: RGB => RGB.map(val => Math.pow(Math.abs(val), 256 / 563) * Math.sign(val)),\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport XYZ_D50 from \"./xyz-d50.js\";\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// convert an array of prophoto-rgb values to CIE XYZ\n// using D50 (so no chromatic adaptation needed afterwards)\n// matrix cannot be expressed in rational form, but is calculated to 64 bit accuracy\n// see https://github.com/w3c/csswg-drafts/issues/7675\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.79776664490064230, 0.13518129740053308, 0.03134773412839220 ],\n\t[ 0.28807482881940130, 0.71183523424187300, 0.00008993693872564 ],\n\t[ 0.00000000000000000, 0.00000000000000000, 0.82510460251046020 ],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 1.34578688164715830, -0.25557208737979464, -0.05110186497554526 ],\n\t[ -0.54463070512490190, 1.50824774284514680, 0.02052744743642139 ],\n\t[ 0.00000000000000000, 0.00000000000000000, 1.21196754563894520 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"prophoto-linear\",\n\tcssId: \"--prophoto-rgb-linear\",\n\tname: \"Linear ProPhoto\",\n\twhite: \"D50\",\n\tbase: XYZ_D50,\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport ProPhotoLinear from \"./prophoto-linear.js\";\n\nconst Et = 1 / 512;\nconst Et2 = 16 / 512;\n\nexport default new RGBColorSpace({\n\tid: \"prophoto\",\n\tcssId: \"prophoto-rgb\",\n\tname: \"ProPhoto\",\n\tbase: ProPhotoLinear,\n\ttoBase (RGB) {\n\t\t// Transfer curve is gamma 1.8 with a small linear portion\n\t\treturn RGB.map(v => {\n\t\t\tlet sign = v < 0 ? -1 : 1;\n\t\t\tlet abs = v * sign;\n\n\t\t\tif (abs < Et2) {\n\t\t\t\treturn v / 16;\n\t\t\t}\n\n\t\t\treturn sign * abs ** 1.8;\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\treturn RGB.map(v => {\n\t\t\tlet sign = v < 0 ? -1 : 1;\n\t\t\tlet abs = v * sign;\n\n\t\t\tif (abs >= Et) {\n\t\t\t\treturn sign * abs ** (1 / 1.8);\n\t\t\t}\n\n\t\t\treturn 16 * v;\n\t\t});\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC2020Linear from \"./rec2020-linear.js\";\n// import sRGB from \"./srgb.js\";\n\nconst α = 1.09929682680944;\nconst β = 0.018053968510807;\n\nexport default new RGBColorSpace({\n\tid: \"--rec2020-oetf\",\n\tname: \"REC.2020_Scene_Referred\",\n\tbase: REC2020Linear,\n\treferred: \"scene\",\n\t// Non-linear transfer function from Rec. ITU-R BT.2020-2 table 4\n\ttoBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs < β * 4.5) {\n\t\t\t\treturn val / 4.5;\n\t\t\t}\n\n\t\t\treturn sign * Math.pow((abs + α - 1) / α, 1 / 0.45);\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tlet sign = val < 0 ? -1 : 1;\n\t\t\tlet abs = val * sign;\n\n\t\t\tif (abs >= β) {\n\t\t\t\treturn sign * (α * Math.pow(abs, 0.45) - (α - 1));\n\t\t\t}\n\n\t\t\treturn 4.5 * val;\n\t\t});\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport OKLab from \"./oklab.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"oklch\",\n\tname: \"OkLCh\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 0.4],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\twhite: \"D65\",\n\n\tbase: OKLab,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\toklch: {\n\t\t\tcoords: [\"<percentage> | <number>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","// Okhsl class.\n//\n// ---- License ----\n//\n// Copyright (c) 2021 Björn Ottosson\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nimport ColorSpace from \"../ColorSpace.js\";\nimport Oklab from \"./oklab.js\";\nimport { LabtoLMS_M } from \"./oklab.js\";\nimport { spow, multiply_v3_m3x3 } from \"../util.js\";\nimport { constrain } from \"../angles.js\";\n\n/** @import { Matrix3x3, Vector3 } from \"../types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"../types.js\").OKCoeff} OKCoeff */\n\nexport const tau = 2 * Math.PI;\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const toLMS = [\n\t[0.4122214694707629, 0.5363325372617349, 0.0514459932675022],\n\t[0.2119034958178251, 0.6806995506452344, 0.1073969535369405],\n\t[0.0883024591900564, 0.2817188391361215, 0.6299787016738222],\n];\n\n/** @type {Matrix3x3} */\n// prettier-ignore\nexport const toSRGBLinear = [\n\t[ 4.0767416360759583, -3.3077115392580629, 0.2309699031821043],\n\t[-1.2684379732850315, 2.6097573492876882, -0.3413193760026570],\n\t[-0.0041960761386756, -0.7034186179359362, 1.7076146940746117],\n];\n\n/** @type {OKCoeff} */\nexport const RGBCoeff = [\n\t// Red\n\t[\n\t\t// Limit\n\t\t[-1.8817031, -0.80936501],\n\t\t// `Kn` coefficients\n\t\t[1.19086277, 1.76576728, 0.59662641, 0.75515197, 0.56771245],\n\t],\n\t// Green\n\t[\n\t\t// Limit\n\t\t[1.8144408, -1.19445267],\n\t\t// `Kn` coefficients\n\t\t[0.73956515, -0.45954404, 0.08285427, 0.12541073, -0.14503204],\n\t],\n\t// Blue\n\t[\n\t\t// Limit\n\t\t[0.13110758, 1.81333971],\n\t\t// `Kn` coefficients\n\t\t[1.35733652, -0.00915799, -1.1513021, -0.50559606, 0.00692167],\n\t],\n];\n\nconst floatMax = Number.MAX_VALUE;\nconst K1 = 0.206;\nconst K2 = 0.03;\nconst K3 = (1.0 + K1) / (1.0 + K2);\n\nfunction vdot (a, b) {\n\t// Dot two vectors\n\n\tlet l = a.length;\n\tif (l !== b.length) {\n\t\tthrow new Error(`Vectors of size ${l} and ${b.length} are not aligned`);\n\t}\n\n\tlet s = 0.0;\n\ta.forEach((c, i) => {\n\t\ts += c * b[i];\n\t});\n\n\treturn s;\n}\n\n/**\n * Toe function for L_r\n * @param {number} x\n */\nexport function toe (x) {\n\treturn 0.5 * (K3 * x - K1 + Math.sqrt((K3 * x - K1) * (K3 * x - K1) + 4 * K2 * K3 * x));\n}\n\n/**\n * Inverse toe function for L_r\n * @param {number} x\n */\nexport function toeInv (x) {\n\treturn (x ** 2 + K1 * x) / (K3 * (x + K2));\n}\n\n/**\n * @param {readonly [number, number]} cusp\n * @returns {[number, number]}\n */\nexport function toSt (cusp) {\n\t// To ST.\n\n\tlet [l, c] = cusp;\n\treturn [c / l, c / (1 - l)];\n}\n\nfunction getStMid (a, b) {\n\t// Returns a smooth approximation of the location of the cusp.\n\t//\n\t// This polynomial was created by an optimization process.\n\t// It has been designed so that S_mid < S_max and T_mid < T_max.\n\n\t// prettier-ignore\n\tlet s = 0.11516993 + 1.0 / (\n\t\t7.44778970 + 4.15901240 * b +\n\t\ta * (\n\t\t\t-2.19557347 + 1.75198401 * b +\n\t\t\ta * (\n\t\t\t\t-2.13704948 - 10.02301043 * b +\n\t\t\t\ta * (\n\t\t\t\t\t-4.24894561 + 5.38770819 * b + 4.69891013 * a\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n\n\t// prettier-ignore\n\tlet t = 0.11239642 + 1.0 / (\n\t\t1.61320320 - 0.68124379 * b +\n\t\ta * (\n\t\t\t0.40370612 + 0.90148123 * b +\n\t\t\ta * (\n\t\t\t\t-0.27087943 + 0.61223990 * b +\n\t\t\t\ta * (\n\t\t\t\t\t0.00299215 - 0.45399568 * b - 0.14661872 * a\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n\n\treturn [s, t];\n}\n\n/**\n * @param {Vector3} lab\n * @param {Matrix3x3} lmsToRgb\n */\nexport function oklabToLinearRGB (lab, lmsToRgb) {\n\t// Convert from Oklab to linear RGB.\n\t//\n\t// Can be any gamut as long as `lmsToRgb` is a matrix\n\t// that transform the LMS values to the linear RGB space.\n\n\tlet lms = multiply_v3_m3x3(lab, LabtoLMS_M);\n\n\tlms[0] = lms[0] ** 3;\n\tlms[1] = lms[1] ** 3;\n\tlms[2] = lms[2] ** 3;\n\n\treturn multiply_v3_m3x3(lms, lmsToRgb, lms);\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @returns {[number, number]}\n * @todo Could probably make these types more specific/better-documented if desired\n */\nexport function findCusp (a, b, lmsToRgb, okCoeff) {\n\t// Finds L_cusp and C_cusp for a given hue.\n\t//\n\t// `a` and `b` must be normalized so `a^2 + b^2 == 1`.\n\n\t// First, find the maximum saturation (saturation `S = C/L`)\n\tlet sCusp = computeMaxSaturation(a, b, lmsToRgb, okCoeff);\n\n\t// Convert to linear RGB to find the first point where at least one of r, g or b >= 1:\n\tlet rgb = oklabToLinearRGB([1, sCusp * a, sCusp * b], lmsToRgb);\n\tlet lCusp = spow(1.0 / Math.max(...rgb), 1 / 3);\n\tlet cCusp = lCusp * sCusp;\n\n\treturn [lCusp, cCusp];\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @param {number} l1\n * @param {number} c1\n * @param {number} l0\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @param {[number, number]} cusp\n * @returns {Number}\n * @todo Could probably make these types more specific/better-documented if desired\n */\nexport function findGamutIntersection (a, b, l1, c1, l0, lmsToRgb, okCoeff, cusp) {\n\t// Finds intersection of the line.\n\t//\n\t// Defined by the following:\n\t//\n\t// ```\n\t// L = L0 * (1 - t) + t * L1\n\t// C = t * C1\n\t// ```\n\t//\n\t// `a` and `b` must be normalized so `a^2 + b^2 == 1`.\n\n\tlet t;\n\n\tif (cusp === undefined) {\n\t\tcusp = findCusp(a, b, lmsToRgb, okCoeff);\n\t}\n\n\t// Find the intersection for upper and lower half separately\n\tif ((l1 - l0) * cusp[1] - (cusp[0] - l0) * c1 <= 0.0) {\n\t\t// Lower half\n\t\tt = (cusp[1] * l0) / (c1 * cusp[0] + cusp[1] * (l0 - l1));\n\t}\n\telse {\n\t\t// Upper half\n\n\t\t// First intersect with triangle\n\t\tt = (cusp[1] * (l0 - 1.0)) / (c1 * (cusp[0] - 1.0) + cusp[1] * (l0 - l1));\n\n\t\t// Then one step Halley's method\n\t\tlet dl = l1 - l0;\n\t\tlet dc = c1;\n\n\t\tlet kl = vdot(LabtoLMS_M[0].slice(1), [a, b]);\n\t\tlet km = vdot(LabtoLMS_M[1].slice(1), [a, b]);\n\t\tlet ks = vdot(LabtoLMS_M[2].slice(1), [a, b]);\n\n\t\tlet ldt_ = dl + dc * kl;\n\t\tlet mdt_ = dl + dc * km;\n\t\tlet sdt_ = dl + dc * ks;\n\n\t\t// If higher accuracy is required, 2 or 3 iterations of the following block can be used:\n\t\tlet L = l0 * (1.0 - t) + t * l1;\n\t\tlet C = t * c1;\n\n\t\tlet l_ = L + C * kl;\n\t\tlet m_ = L + C * km;\n\t\tlet s_ = L + C * ks;\n\n\t\tlet l = l_ ** 3;\n\t\tlet m = m_ ** 3;\n\t\tlet s = s_ ** 3;\n\n\t\tlet ldt = 3 * ldt_ * l_ ** 2;\n\t\tlet mdt = 3 * mdt_ * m_ ** 2;\n\t\tlet sdt = 3 * sdt_ * s_ ** 2;\n\n\t\tlet ldt2 = 6 * ldt_ ** 2 * l_;\n\t\tlet mdt2 = 6 * mdt_ ** 2 * m_;\n\t\tlet sdt2 = 6 * sdt_ ** 2 * s_;\n\n\t\tlet r_ = vdot(lmsToRgb[0], [l, m, s]) - 1;\n\t\tlet r1 = vdot(lmsToRgb[0], [ldt, mdt, sdt]);\n\t\tlet r2 = vdot(lmsToRgb[0], [ldt2, mdt2, sdt2]);\n\n\t\tlet ur = r1 / (r1 * r1 - 0.5 * r_ * r2);\n\t\tlet tr = -r_ * ur;\n\n\t\tlet g_ = vdot(lmsToRgb[1], [l, m, s]) - 1;\n\t\tlet g1 = vdot(lmsToRgb[1], [ldt, mdt, sdt]);\n\t\tlet g2 = vdot(lmsToRgb[1], [ldt2, mdt2, sdt2]);\n\n\t\tlet ug = g1 / (g1 * g1 - 0.5 * g_ * g2);\n\t\tlet tg = -g_ * ug;\n\n\t\tlet b_ = vdot(lmsToRgb[2], [l, m, s]) - 1;\n\t\tlet b1 = vdot(lmsToRgb[2], [ldt, mdt, sdt]);\n\t\tlet b2 = vdot(lmsToRgb[2], [ldt2, mdt2, sdt2]);\n\n\t\tlet ub = b1 / (b1 * b1 - 0.5 * b_ * b2);\n\t\tlet tb = -b_ * ub;\n\n\t\ttr = ur >= 0.0 ? tr : floatMax;\n\t\ttg = ug >= 0.0 ? tg : floatMax;\n\t\ttb = ub >= 0.0 ? tb : floatMax;\n\n\t\tt += Math.min(tr, Math.min(tg, tb));\n\t}\n\n\treturn t;\n}\n\nfunction getCs (lab, lmsToRgb, okCoeff) {\n\t// Get Cs\n\n\tlet [l, a, b] = lab;\n\n\tlet cusp = findCusp(a, b, lmsToRgb, okCoeff);\n\n\tlet cMax = findGamutIntersection(a, b, l, 1, l, lmsToRgb, okCoeff, cusp);\n\tlet stMax = toSt(cusp);\n\n\t// Scale factor to compensate for the curved part of gamut shape:\n\tlet k = cMax / Math.min(l * stMax[0], (1 - l) * stMax[1]);\n\n\tlet stMid = getStMid(a, b);\n\n\t// Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.\n\tlet ca = l * stMid[0];\n\tlet cb = (1.0 - l) * stMid[1];\n\tlet cMid = 0.9 * k * Math.sqrt(Math.sqrt(1.0 / (1.0 / ca ** 4 + 1.0 / cb ** 4)));\n\n\t// For `C_0`, the shape is independent of hue, so `ST` are constant.\n\t// Values picked to roughly be the average values of `ST`.\n\tca = l * 0.4;\n\tcb = (1.0 - l) * 0.8;\n\n\t// Use a soft minimum function, instead of a sharp triangle shape to get a smooth value for chroma.\n\tlet c0 = Math.sqrt(1.0 / (1.0 / ca ** 2 + 1.0 / cb ** 2));\n\n\treturn [c0, cMid, cMax];\n}\n\nfunction computeMaxSaturation (a, b, lmsToRgb, okCoeff) {\n\t// Finds the maximum saturation possible for a given hue that fits in RGB.\n\t//\n\t// Saturation here is defined as `S = C/L`.\n\t// `a` and `b` must be normalized so `a^2 + b^2 == 1`.\n\n\t// Max saturation will be when one of r, g or b goes below zero.\n\n\t// Select different coefficients depending on which component goes below zero first.\n\n\tlet k0, k1, k2, k3, k4, wl, wm, ws;\n\n\tif (vdot(okCoeff[0][0], [a, b]) > 1) {\n\t\t// Red component\n\t\t[k0, k1, k2, k3, k4] = okCoeff[0][1];\n\t\t[wl, wm, ws] = lmsToRgb[0];\n\t}\n\telse if (vdot(okCoeff[1][0], [a, b]) > 1) {\n\t\t// Green component\n\t\t[k0, k1, k2, k3, k4] = okCoeff[1][1];\n\t\t[wl, wm, ws] = lmsToRgb[1];\n\t}\n\telse {\n\t\t// Blue component\n\t\t[k0, k1, k2, k3, k4] = okCoeff[2][1];\n\t\t[wl, wm, ws] = lmsToRgb[2];\n\t}\n\n\t// Approximate max saturation using a polynomial:\n\tlet sat = k0 + k1 * a + k2 * b + k3 * a ** 2 + k4 * a * b;\n\n\t// Do one step Halley's method to get closer.\n\t// This gives an error less than 10e6, except for some blue hues where the `dS/dh` is close to infinite.\n\t// This should be sufficient for most applications, otherwise do two/three steps.\n\n\tlet kl = vdot(LabtoLMS_M[0].slice(1), [a, b]);\n\tlet km = vdot(LabtoLMS_M[1].slice(1), [a, b]);\n\tlet ks = vdot(LabtoLMS_M[2].slice(1), [a, b]);\n\n\tlet l_ = 1.0 + sat * kl;\n\tlet m_ = 1.0 + sat * km;\n\tlet s_ = 1.0 + sat * ks;\n\n\tlet l = l_ ** 3;\n\tlet m = m_ ** 3;\n\tlet s = s_ ** 3;\n\n\tlet lds = 3.0 * kl * l_ ** 2;\n\tlet mds = 3.0 * km * m_ ** 2;\n\tlet sds = 3.0 * ks * s_ ** 2;\n\n\tlet lds2 = 6.0 * kl ** 2 * l_;\n\tlet mds2 = 6.0 * km ** 2 * m_;\n\tlet sds2 = 6.0 * ks ** 2 * s_;\n\n\tlet f = wl * l + wm * m + ws * s;\n\tlet f1 = wl * lds + wm * mds + ws * sds;\n\tlet f2 = wl * lds2 + wm * mds2 + ws * sds2;\n\n\tsat = sat - (f * f1) / (f1 ** 2 - 0.5 * f * f2);\n\n\treturn sat;\n}\n\nfunction okhslToOklab (hsl, lmsToRgb, okCoeff) {\n\t// Convert Okhsl to Oklab.\n\n\tlet [h, s, l] = hsl;\n\tlet L = toeInv(l);\n\tlet a = null;\n\tlet b = null;\n\th = constrain(h) / 360.0;\n\n\tif (L !== 0.0 && L !== 1.0 && s !== 0) {\n\t\tlet a_ = Math.cos(tau * h);\n\t\tlet b_ = Math.sin(tau * h);\n\n\t\tlet [c0, cMid, cMax] = getCs([L, a_, b_], lmsToRgb, okCoeff);\n\n\t\t// Interpolate the three values for C so that:\n\t\t// ```\n\t\t// At s=0: dC/ds = C_0, C=0\n\t\t// At s=0.8: C=C_mid\n\t\t// At s=1.0: C=C_max\n\t\t// ```\n\n\t\tlet mid = 0.8;\n\t\tlet midInv = 1.25;\n\t\tlet t, k0, k1, k2;\n\n\t\tif (s < mid) {\n\t\t\tt = midInv * s;\n\t\t\tk0 = 0.0;\n\t\t\tk1 = mid * c0;\n\t\t\tk2 = 1.0 - k1 / cMid;\n\t\t}\n\t\telse {\n\t\t\tt = 5 * (s - 0.8);\n\t\t\tk0 = cMid;\n\t\t\tk1 = (0.2 * cMid ** 2 * 1.25 ** 2) / c0;\n\t\t\tk2 = 1.0 - k1 / (cMax - cMid);\n\t\t}\n\n\t\tlet c = k0 + (t * k1) / (1.0 - k2 * t);\n\n\t\ta = c * a_;\n\t\tb = c * b_;\n\t}\n\n\treturn [L, a, b];\n}\n\nfunction oklabToOkhsl (lab, lmsToRgb, okCoeff) {\n\t// Oklab to Okhsl.\n\n\t// Epsilon for lightness should approach close to 32 bit lightness\n\t// Epsilon for saturation just needs to be sufficiently close when denoting achromatic\n\tlet εL = 1e-7;\n\tlet εS = 1e-4;\n\tlet L = lab[0];\n\tlet s = 0.0;\n\tlet l = toe(L);\n\n\tlet c = Math.sqrt(lab[1] ** 2 + lab[2] ** 2);\n\tlet h = 0.5 + Math.atan2(-lab[2], -lab[1]) / tau;\n\n\tif (l !== 0.0 && l !== 1.0 && c !== 0) {\n\t\tlet a_ = lab[1] / c;\n\t\tlet b_ = lab[2] / c;\n\n\t\tlet [c0, cMid, cMax] = getCs([L, a_, b_], lmsToRgb, okCoeff);\n\n\t\tlet mid = 0.8;\n\t\tlet midInv = 1.25;\n\t\tlet k0, k1, k2, t;\n\n\t\tif (c < cMid) {\n\t\t\tk1 = mid * c0;\n\t\t\tk2 = 1.0 - k1 / cMid;\n\n\t\t\tt = c / (k1 + k2 * c);\n\t\t\ts = t * mid;\n\t\t}\n\t\telse {\n\t\t\tk0 = cMid;\n\t\t\tk1 = (0.2 * cMid ** 2 * midInv ** 2) / c0;\n\t\t\tk2 = 1.0 - k1 / (cMax - cMid);\n\n\t\t\tt = (c - k0) / (k1 + k2 * (c - k0));\n\t\t\ts = mid + 0.2 * t;\n\t\t}\n\t}\n\n\tconst achromatic = Math.abs(s) < εS;\n\tif (achromatic || l === 0.0 || Math.abs(1 - l) < εL) {\n\t\th = null;\n\t\t// Due to floating point imprecision near lightness of 1, we can end up\n\t\t// with really high around white, this is to provide consistency as\n\t\t// saturation can be really high for white due this imprecision.\n\t\tif (!achromatic) {\n\t\t\ts = 0.0;\n\t\t}\n\t}\n\telse {\n\t\th = constrain(h * 360);\n\t}\n\n\treturn [h, s, l];\n}\n\nexport default new ColorSpace({\n\tid: \"okhsl\",\n\tname: \"Okhsl\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: Oklab,\n\tgamutSpace: \"self\",\n\n\t// Convert Oklab to Okhsl\n\tfromBase (lab) {\n\t\treturn oklabToOkhsl(lab, toSRGBLinear, RGBCoeff);\n\t},\n\n\t// Convert Okhsl to Oklab\n\ttoBase (hsl) {\n\t\treturn okhslToOklab(hsl, toSRGBLinear, RGBCoeff);\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--okhsl\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport OKLab from \"./oklab.js\";\nimport { toe, toeInv } from \"./okhsl.js\";\n\nexport default new ColorSpace({\n\tid: \"oklrab\",\n\tname: \"Oklrab\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\ta: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t\tb: {\n\t\t\trefRange: [-0.4, 0.4],\n\t\t},\n\t},\n\n\t// Note that XYZ is relative to D65\n\twhite: \"D65\",\n\n\tbase: OKLab,\n\tfromBase (oklab) {\n\t\treturn [toe(oklab[0]), oklab[1], oklab[2]];\n\t},\n\ttoBase (oklrab) {\n\t\treturn [toeInv(oklrab[0]), oklrab[1], oklrab[2]];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>[-1,1]\",\n\t\t\t\t\"<number> | <percentage>[-1,1]\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport OKLrab from \"./oklrab.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"oklrch\",\n\tname: \"Oklrch\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 1],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 0.4],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\twhite: \"D65\",\n\n\tbase: OKLrab,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\tcolor: {\n\t\t\tcoords: [\n\t\t\t\t\"<percentage> | <number>\",\n\t\t\t\t\"<number> | <percentage>[0,1]\",\n\t\t\t\t\"<number> | <angle>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","// Okhsv class.\n//\n// ---- License ----\n//\n// Copyright (c) 2021 Björn Ottosson\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n// of the Software, and to permit persons to whom the Software is furnished to do\n// so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nimport ColorSpace from \"../ColorSpace.js\";\nimport Oklab from \"./oklab.js\";\nimport { spow, multiply_v3_m3x3 } from \"../util.js\";\nimport { constrain } from \"../angles.js\";\nimport {\n\ttau,\n\ttoe,\n\ttoeInv,\n\tfindCusp,\n\ttoSt,\n\toklabToLinearRGB,\n\ttoSRGBLinear,\n\tRGBCoeff,\n} from \"./okhsl.js\";\n\n/** @import { Coords, Matrix3x3, OKCoeff, Vector3 } from \"../types.js\" */\n\n/**\n *\n * @param {Vector3} hsv\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @returns {Coords}\n */\nfunction okhsvToOklab (hsv, lmsToRgb, okCoeff) {\n\t// Convert from Okhsv to Oklab.\"\"\"\n\n\tlet [h, s, v] = hsv;\n\th = constrain(h) / 360.0;\n\n\tlet l = toeInv(v);\n\tlet a = null;\n\tlet b = null;\n\n\t// Avoid processing gray or colors with undefined hues\n\tif (l !== 0.0 && s !== 0.0) {\n\t\tlet a_ = Math.cos(tau * h);\n\t\tlet b_ = Math.sin(tau * h);\n\n\t\tlet cusp = findCusp(a_, b_, lmsToRgb, okCoeff);\n\t\tlet [sMax, tMax] = toSt(cusp);\n\t\tlet s0 = 0.5;\n\t\tlet k = 1 - s0 / sMax;\n\n\t\t// first we compute L and V as if the gamut is a perfect triangle:\n\n\t\t// L, C when v==1:\n\t\tlet lv = 1 - (s * s0) / (s0 + tMax - tMax * k * s);\n\t\tlet cv = (s * tMax * s0) / (s0 + tMax - tMax * k * s);\n\n\t\tl = v * lv;\n\t\tlet c = v * cv;\n\n\t\t// then we compensate for both toe and the curved top part of the triangle:\n\t\tlet lvt = toeInv(lv);\n\t\tlet cvt = (cv * lvt) / lv;\n\n\t\tlet lNew = toeInv(l);\n\t\tc = (c * lNew) / l;\n\t\tl = lNew;\n\n\t\t// RGB scale\n\t\tlet [rs, gs, bs] = oklabToLinearRGB([lvt, a_ * cvt, b_ * cvt], lmsToRgb);\n\t\tlet scaleL = spow(1.0 / Math.max(Math.max(rs, gs), Math.max(bs, 0.0)), 1 / 3);\n\n\t\tl = l * scaleL;\n\t\tc = c * scaleL;\n\n\t\ta = c * a_;\n\t\tb = c * b_;\n\t}\n\n\treturn [l, a, b];\n}\n\n/**\n *\n * @param {Vector3} lab\n * @param {Matrix3x3} lmsToRgb\n * @param {OKCoeff} okCoeff\n * @returns {Coords}\n */\nfunction oklabToOkhsv (lab, lmsToRgb, okCoeff) {\n\t// Oklab to Okhsv.\n\n\t// Epsilon for saturation just needs to be sufficiently close when denoting achromatic\n\tlet ε = 1e-4;\n\tlet l = lab[0];\n\tlet s = 0.0;\n\tlet v = toe(l);\n\tlet c = Math.sqrt(lab[1] ** 2 + lab[2] ** 2);\n\tlet h = 0.5 + Math.atan2(-lab[2], -lab[1]) / tau;\n\n\tif (l !== 0.0 && l !== 1 && c !== 0.0) {\n\t\tlet a_ = lab[1] / c;\n\t\tlet b_ = lab[2] / c;\n\n\t\tlet cusp = findCusp(a_, b_, lmsToRgb, okCoeff);\n\t\tlet [sMax, tMax] = toSt(cusp);\n\t\tlet s0 = 0.5;\n\t\tlet k = 1 - s0 / sMax;\n\n\t\t// first we find `L_v`, `C_v`, `L_vt` and `C_vt`\n\t\tlet t = tMax / (c + l * tMax);\n\t\tlet lv = t * l;\n\t\tlet cv = t * c;\n\n\t\tlet lvt = toeInv(lv);\n\t\tlet cvt = (cv * lvt) / lv;\n\n\t\t// we can then use these to invert the step that compensates\n\t\t// for the toe and the curved top part of the triangle:\n\t\tlet [rs, gs, bs] = oklabToLinearRGB([lvt, a_ * cvt, b_ * cvt], lmsToRgb);\n\t\tlet scaleL = spow(1.0 / Math.max(Math.max(rs, gs), Math.max(bs, 0.0)), 1 / 3);\n\n\t\tl = l / scaleL;\n\t\tc = c / scaleL;\n\n\t\tc = (c * toe(l)) / l;\n\t\tl = toe(l);\n\n\t\t// we can now compute v and s:\n\t\tv = l / lv;\n\t\ts = ((s0 + tMax) * cv) / (tMax * s0 + tMax * k * cv);\n\t}\n\n\tif (Math.abs(s) < ε || v === 0.0) {\n\t\th = null;\n\t}\n\telse {\n\t\th = constrain(h * 360);\n\t}\n\n\treturn [h, s, v];\n}\n\nexport default new ColorSpace({\n\tid: \"okhsv\",\n\tname: \"Okhsv\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tv: {\n\t\t\trange: [0, 1],\n\t\t\tname: \"Value\",\n\t\t},\n\t},\n\n\tbase: Oklab,\n\tgamutSpace: \"self\",\n\n\t// Convert Oklab to Okhsl\n\tfromBase (lab) {\n\t\treturn oklabToOkhsv(lab, toSRGBLinear, RGBCoeff);\n\t},\n\n\t// Convert Okhsl to Oklab\n\ttoBase (hsl) {\n\t\treturn okhsvToOklab(hsl, toSRGBLinear, RGBCoeff);\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--okhsv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport xyz_d65 from \"./xyz-d65.js\";\nimport { uv } from \"../chromaticity.js\";\nimport { isNone, skipNone } from \"../util.js\";\n\nlet white = WHITES.D65;\n\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\nconst [U_PRIME_WHITE, V_PRIME_WHITE] = uv({ space: xyz_d65, coords: white });\n\nexport default new ColorSpace({\n\tid: \"luv\",\n\tname: \"Luv\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\t// Reference ranges from https://facelessuser.github.io/coloraide/colors/luv/\n\t\tu: {\n\t\t\trefRange: [-215, 215],\n\t\t},\n\t\tv: {\n\t\t\trefRange: [-215, 215],\n\t\t},\n\t},\n\n\twhite: white,\n\tbase: xyz_d65,\n\n\t// Convert D65-adapted XYZ to Luv\n\t// https://en.wikipedia.org/wiki/CIELUV#The_forward_transformation\n\tfromBase (XYZ) {\n\t\tlet xyz = /** @type {[number, number, number]} */ ([\n\t\t\tskipNone(XYZ[0]),\n\t\t\tskipNone(XYZ[1]),\n\t\t\tskipNone(XYZ[2]),\n\t\t]);\n\t\tlet y = xyz[1];\n\n\t\tlet [up, vp] = uv({ space: xyz_d65, coords: xyz });\n\n\t\t// Protect against XYZ of [0, 0, 0]\n\t\tif (!Number.isFinite(up) || !Number.isFinite(vp)) {\n\t\t\treturn [0, 0, 0];\n\t\t}\n\n\t\tlet L = y <= ε ? κ * y : 116 * Math.cbrt(y) - 16;\n\t\treturn [L, 13 * L * (up - U_PRIME_WHITE), 13 * L * (vp - V_PRIME_WHITE)];\n\t},\n\n\t// Convert Luv to D65-adapted XYZ\n\t// https://en.wikipedia.org/wiki/CIELUV#The_reverse_transformation\n\ttoBase (Luv) {\n\t\tlet [L, u, v] = Luv;\n\n\t\t// Protect against division by zero and none Lightness\n\t\tif (L === 0 || isNone(L)) {\n\t\t\treturn [0, 0, 0];\n\t\t}\n\n\t\tu = skipNone(u);\n\t\tv = skipNone(v);\n\n\t\tlet up = u / (13 * L) + U_PRIME_WHITE;\n\t\tlet vp = v / (13 * L) + V_PRIME_WHITE;\n\n\t\tlet y = L <= 8 ? L / κ : Math.pow((L + 16) / 116, 3);\n\n\t\treturn [y * ((9 * up) / (4 * vp)), y, y * ((12 - 3 * up - 20 * vp) / (4 * vp))];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--luv\",\n\t\t\tcoords: [\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t\t\"<number> | <percentage>\",\n\t\t\t],\n\t\t},\n\t},\n});\n","import ColorSpace from \"../ColorSpace.js\";\nimport Luv from \"./luv.js\";\nimport lch from \"./lch.js\";\n\nexport default new ColorSpace({\n\tid: \"lchuv\",\n\tname: \"LChuv\",\n\tcoords: {\n\t\tl: {\n\t\t\trefRange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t\tc: {\n\t\t\trefRange: [0, 220],\n\t\t\tname: \"Chroma\",\n\t\t},\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t},\n\n\tbase: Luv,\n\tfromBase: lch.fromBase,\n\ttoBase: lch.toBase,\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--lchuv\",\n\t\t\tcoords: [\"<number> | <percentage>\", \"<number> | <percentage>\", \"<number> | <angle>\"],\n\t\t},\n\t},\n});\n","/*\nAdapted from: https://github.com/hsluv/hsluv-javascript/blob/14b49e6cf9a9137916096b8487a5372626b57ba4/src/hsluv.ts\n\nCopyright (c) 2012-2022 Alexei Boronine\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\nimport ColorSpace from \"../ColorSpace.js\";\nimport LCHuv from \"./lchuv.js\";\nimport sRGB from \"./srgb.js\";\nimport { fromXYZ_M } from \"./srgb-linear.js\";\nimport { skipNone } from \"../util.js\";\n\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\n\nconst m_r0 = fromXYZ_M[0][0];\nconst m_r1 = fromXYZ_M[0][1];\nconst m_r2 = fromXYZ_M[0][2];\nconst m_g0 = fromXYZ_M[1][0];\nconst m_g1 = fromXYZ_M[1][1];\nconst m_g2 = fromXYZ_M[1][2];\nconst m_b0 = fromXYZ_M[2][0];\nconst m_b1 = fromXYZ_M[2][1];\nconst m_b2 = fromXYZ_M[2][2];\n\nfunction distanceFromOriginAngle (slope, intercept, angle) {\n\tconst d = intercept / (Math.sin(angle) - slope * Math.cos(angle));\n\treturn d < 0 ? Infinity : d;\n}\n\n/**\n * @param {number} l\n */\nexport function calculateBoundingLines (l) {\n\tconst sub1 = Math.pow(l + 16, 3) / 1560896;\n\tconst sub2 = sub1 > ε ? sub1 : l / κ;\n\tconst s1r = sub2 * (284517 * m_r0 - 94839 * m_r2);\n\tconst s2r = sub2 * (838422 * m_r2 + 769860 * m_r1 + 731718 * m_r0);\n\tconst s3r = sub2 * (632260 * m_r2 - 126452 * m_r1);\n\tconst s1g = sub2 * (284517 * m_g0 - 94839 * m_g2);\n\tconst s2g = sub2 * (838422 * m_g2 + 769860 * m_g1 + 731718 * m_g0);\n\tconst s3g = sub2 * (632260 * m_g2 - 126452 * m_g1);\n\tconst s1b = sub2 * (284517 * m_b0 - 94839 * m_b2);\n\tconst s2b = sub2 * (838422 * m_b2 + 769860 * m_b1 + 731718 * m_b0);\n\tconst s3b = sub2 * (632260 * m_b2 - 126452 * m_b1);\n\n\treturn {\n\t\tr0s: s1r / s3r,\n\t\tr0i: (s2r * l) / s3r,\n\t\tr1s: s1r / (s3r + 126452),\n\t\tr1i: ((s2r - 769860) * l) / (s3r + 126452),\n\t\tg0s: s1g / s3g,\n\t\tg0i: (s2g * l) / s3g,\n\t\tg1s: s1g / (s3g + 126452),\n\t\tg1i: ((s2g - 769860) * l) / (s3g + 126452),\n\t\tb0s: s1b / s3b,\n\t\tb0i: (s2b * l) / s3b,\n\t\tb1s: s1b / (s3b + 126452),\n\t\tb1i: ((s2b - 769860) * l) / (s3b + 126452),\n\t};\n}\n\nfunction calcMaxChromaHsluv (lines, h) {\n\tconst hueRad = (h / 360) * Math.PI * 2;\n\tconst r0 = distanceFromOriginAngle(lines.r0s, lines.r0i, hueRad);\n\tconst r1 = distanceFromOriginAngle(lines.r1s, lines.r1i, hueRad);\n\tconst g0 = distanceFromOriginAngle(lines.g0s, lines.g0i, hueRad);\n\tconst g1 = distanceFromOriginAngle(lines.g1s, lines.g1i, hueRad);\n\tconst b0 = distanceFromOriginAngle(lines.b0s, lines.b0i, hueRad);\n\tconst b1 = distanceFromOriginAngle(lines.b1s, lines.b1i, hueRad);\n\n\treturn Math.min(r0, r1, g0, g1, b0, b1);\n}\n\nexport default new ColorSpace({\n\tid: \"hsluv\",\n\tname: \"HSLuv\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: LCHuv,\n\tgamutSpace: sRGB,\n\n\t// Convert LCHuv to HSLuv\n\tfromBase (lch) {\n\t\tlet [l, c, h] = [skipNone(lch[0]), skipNone(lch[1]), skipNone(lch[2])];\n\t\tlet s;\n\n\t\tif (l > 99.9999999) {\n\t\t\ts = 0;\n\t\t\tl = 100;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\ts = 0;\n\t\t\tl = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHsluv(lines, h);\n\t\t\ts = (c / max) * 100;\n\t\t}\n\n\t\treturn [h, s, l];\n\t},\n\n\t// Convert HSLuv to LCHuv\n\ttoBase (hsl) {\n\t\tlet [h, s, l] = [skipNone(hsl[0]), skipNone(hsl[1]), skipNone(hsl[2])];\n\t\tlet c;\n\n\t\tif (l > 99.9999999) {\n\t\t\tl = 100;\n\t\t\tc = 0;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\tl = 0;\n\t\t\tc = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHsluv(lines, h);\n\t\t\tc = (max / 100) * s;\n\t\t}\n\n\t\treturn [l, c, h];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hsluv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","/*\nAdapted from: https://github.com/hsluv/hsluv-javascript/blob/14b49e6cf9a9137916096b8487a5372626b57ba4/src/hsluv.ts\n\nCopyright (c) 2012-2022 Alexei Boronine\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\nimport ColorSpace from \"../ColorSpace.js\";\nimport LCHuv from \"./lchuv.js\";\nimport { fromXYZ_M } from \"./srgb-linear.js\";\nimport { skipNone } from \"../util.js\";\nimport { calculateBoundingLines } from \"./hsluv.js\";\n\nconst ε = 216 / 24389; // 6^3/29^3 == (24/116)^3\nconst κ = 24389 / 27; // 29^3/3^3\n\nconst m_r0 = fromXYZ_M[0][0];\nconst m_r1 = fromXYZ_M[0][1];\nconst m_r2 = fromXYZ_M[0][2];\nconst m_g0 = fromXYZ_M[1][0];\nconst m_g1 = fromXYZ_M[1][1];\nconst m_g2 = fromXYZ_M[1][2];\nconst m_b0 = fromXYZ_M[2][0];\nconst m_b1 = fromXYZ_M[2][1];\nconst m_b2 = fromXYZ_M[2][2];\n\nfunction distanceFromOrigin (slope, intercept) {\n\treturn Math.abs(intercept) / Math.sqrt(Math.pow(slope, 2) + 1);\n}\n\nfunction calcMaxChromaHpluv (lines) {\n\tlet r0 = distanceFromOrigin(lines.r0s, lines.r0i);\n\tlet r1 = distanceFromOrigin(lines.r1s, lines.r1i);\n\tlet g0 = distanceFromOrigin(lines.g0s, lines.g0i);\n\tlet g1 = distanceFromOrigin(lines.g1s, lines.g1i);\n\tlet b0 = distanceFromOrigin(lines.b0s, lines.b0i);\n\tlet b1 = distanceFromOrigin(lines.b1s, lines.b1i);\n\n\treturn Math.min(r0, r1, g0, g1, b0, b1);\n}\n\nexport default new ColorSpace({\n\tid: \"hpluv\",\n\tname: \"HPLuv\",\n\tcoords: {\n\t\th: {\n\t\t\trefRange: [0, 360],\n\t\t\ttype: \"angle\",\n\t\t\tname: \"Hue\",\n\t\t},\n\t\ts: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Saturation\",\n\t\t},\n\t\tl: {\n\t\t\trange: [0, 100],\n\t\t\tname: \"Lightness\",\n\t\t},\n\t},\n\n\tbase: LCHuv,\n\tgamutSpace: \"self\",\n\n\t// Convert LCHuv to HPLuv\n\tfromBase (lch) {\n\t\tlet [l, c, h] = [skipNone(lch[0]), skipNone(lch[1]), skipNone(lch[2])];\n\t\tlet s;\n\n\t\tif (l > 99.9999999) {\n\t\t\ts = 0;\n\t\t\tl = 100;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\ts = 0;\n\t\t\tl = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHpluv(lines);\n\t\t\ts = (c / max) * 100;\n\t\t}\n\t\treturn [h, s, l];\n\t},\n\n\t// Convert HPLuv to LCHuv\n\ttoBase (hsl) {\n\t\tlet [h, s, l] = [skipNone(hsl[0]), skipNone(hsl[1]), skipNone(hsl[2])];\n\t\tlet c;\n\n\t\tif (l > 99.9999999) {\n\t\t\tl = 100;\n\t\t\tc = 0;\n\t\t}\n\t\telse if (l < 0.00000001) {\n\t\t\tl = 0;\n\t\t\tc = 0;\n\t\t}\n\t\telse {\n\t\t\tlet lines = calculateBoundingLines(l);\n\t\t\tlet max = calcMaxChromaHpluv(lines);\n\t\t\tc = (max / 100) * s;\n\t\t}\n\n\t\treturn [l, c, h];\n\t},\n\n\tformats: {\n\t\tcolor: {\n\t\t\tid: \"--hpluv\",\n\t\t\tcoords: [\"<number> | <angle>\", \"<percentage> | <number>\", \"<percentage> | <number>\"],\n\t\t},\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC_2020_Linear from \"./rec2020-linear.js\";\n\nexport default new RGBColorSpace({\n\tid: \"rec2100-linear\",\n\tname: \"Linear REC.2100\",\n\twhite: \"D65\",\n\ttoBase: REC_2020_Linear.toBase,\n\tfromBase: REC_2020_Linear.fromBase,\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC_2100_Linear from \"./rec2100-linear.js\";\n\nconst Yw = 203; // absolute luminance of media white, cd/m²\nconst n = 2610 / 2 ** 14;\nconst ninv = 2 ** 14 / 2610;\nconst m = 2523 / 2 ** 5;\nconst minv = 2 ** 5 / 2523;\nconst c1 = 3424 / 2 ** 12;\nconst c2 = 2413 / 2 ** 7;\nconst c3 = 2392 / 2 ** 7;\n\nexport default new RGBColorSpace({\n\tid: \"rec2100pq\",\n\tcssId: \"rec2100-pq\",\n\tname: \"REC.2100-PQ\",\n\tbase: REC_2100_Linear,\n\ttoBase (RGB) {\n\t\t// given PQ encoded component in range [0, 1]\n\t\t// return media-white relative linear-light\n\t\treturn RGB.map(function (val) {\n\t\t\tlet x = (Math.max(val ** minv - c1, 0) / (c2 - c3 * val ** minv)) ** ninv;\n\t\t\treturn (x * 10000) / Yw; // luminance relative to diffuse white, [0, 70 or so].\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\t// given media-white relative linear-light\n\t\t// returnPQ encoded component in range [0, 1]\n\t\treturn RGB.map(function (val) {\n\t\t\tlet x = Math.max((val * Yw) / 10000, 0); // absolute luminance of peak white is 10,000 cd/m².\n\t\t\tlet num = c1 + c2 * x ** n;\n\t\t\tlet denom = 1 + c3 * x ** n;\n\n\t\t\treturn (num / denom) ** m;\n\t\t});\n\t},\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport REC_2100_Linear from \"./rec2100-linear.js\";\nimport { spow } from \"../util.js\";\n\nconst a = 0.17883277;\nconst b = 0.28466892; // 1 - (4 * a)\nconst c = 0.55991073; // 0.5 - a * Math.log(4 *a)\n\nconst scale = 3.7743; // Place 18% grey at HLG 0.38, so media white at 0.75\n\nexport default new RGBColorSpace({\n\tid: \"rec2100hlg\",\n\tcssId: \"rec2100-hlg\",\n\tname: \"REC.2100-HLG\",\n\treferred: \"scene\",\n\n\tbase: REC_2100_Linear,\n\ttoBase (RGB) {\n\t\t// given HLG encoded component in range [0, 1]\n\t\t// return media-white relative linear-light\n\t\treturn RGB.map(function (val) {\n\t\t\t// first the HLG EOTF\n\t\t\t// ITU-R BT.2390-10 p.30 section\n\t\t\t// 6.3 The hybrid log-gamma electro-optical transfer function (EOTF)\n\t\t\t// Then scale by 3 so media white is 1.0\n\t\t\tif (val <= 0.5) {\n\t\t\t\treturn (val ** 2 / 3) * scale;\n\t\t\t}\n\t\t\treturn ((Math.exp((val - c) / a) + b) / 12) * scale;\n\t\t});\n\t},\n\tfromBase (RGB) {\n\t\t// given media-white relative linear-light\n\t\t// where diffuse white is 1.0,\n\t\t// return HLG encoded component in range [0, 1]\n\t\treturn RGB.map(function (val) {\n\t\t\t// first scale to put linear-light media white at 1/3\n\t\t\tval /= scale;\n\t\t\t// now the HLG OETF\n\t\t\t// ITU-R BT.2390-10 p.23\n\t\t\t// 6.1 The hybrid log-gamma opto-electronic transfer function (OETF)\n\t\t\tif (val <= 1 / 12) {\n\t\t\t\treturn spow(3 * val, 0.5);\n\t\t\t}\n\t\t\treturn a * Math.log(12 * val - b) + c;\n\t\t});\n\t},\n});\n","import hooks from \"./hooks.js\";\nimport { multiplyMatrices } from \"./util.js\";\nimport { WHITES } from \"./adapt.js\";\n\n/** @import { White } from \"./types.js\" */\n\n// Type re-exports\n/** @typedef {import(\"./types.js\").CAT} CAT */\n\n/** @type {Record<string, CAT>} */\nexport const CATs = {};\n\nhooks.add(\"chromatic-adaptation-start\", env => {\n\tif (env.options.method) {\n\t\tenv.M = adapt(env.W1, env.W2, env.options.method);\n\t}\n});\n\nhooks.add(\"chromatic-adaptation-end\", env => {\n\tif (!env.M) {\n\t\tenv.M = adapt(env.W1, env.W2, env.options.method);\n\t}\n});\n\nexport function defineCAT (/** @type {CAT} */ { id, toCone_M, fromCone_M }) {\n\t// Use id, toCone_M, fromCone_M like variables\n\tCATs[id] = arguments[0];\n}\n\n/**\n *\n * @param {White} W1\n * @param {White} W2\n * @param {string} id\n * @returns {number[][]}\n */\nexport function adapt (W1, W2, id = \"Bradford\") {\n\t// adapt from a source whitepoint or illuminant W1\n\t// to a destination whitepoint or illuminant W2,\n\t// using the given chromatic adaptation transform (CAT)\n\t// debugger;\n\tlet method = CATs[id];\n\n\tlet [ρs, γs, βs] = multiplyMatrices(method.toCone_M, W1);\n\tlet [ρd, γd, βd] = multiplyMatrices(method.toCone_M, W2);\n\n\t// all practical illuminants have non-zero XYZ so no division by zero can occur below\n\t// prettier-ignore\n\tlet scale = [\n\t\t[ρd / ρs, 0, 0 ],\n\t\t[0, γd / γs, 0 ],\n\t\t[0, 0, βd / βs],\n\t];\n\t// console.log({scale});\n\n\tlet scaled_cone_M = multiplyMatrices(scale, method.toCone_M);\n\tlet adapt_M = multiplyMatrices(method.fromCone_M, scaled_cone_M);\n\t// console.log({scaled_cone_M, adapt_M});\n\treturn adapt_M;\n}\n\n// prettier-ignore\ndefineCAT({\n\tid: \"von Kries\",\n\ttoCone_M: [\n\t\t[ 0.4002400, 0.7076000, -0.0808100 ],\n\t\t[ -0.2263000, 1.1653200, 0.0457000 ],\n\t\t[ 0.0000000, 0.0000000, 0.9182200 ],\n\t],\n\tfromCone_M: [\n\t\t[ 1.8599363874558397, -1.1293816185800916, 0.21989740959619328 ],\n\t\t[ 0.3611914362417676, 0.6388124632850422, -0.000006370596838649899 ],\n\t\t[ 0, 0, 1.0890636230968613 ],\n\t],\n});\n\n// prettier-ignore\ndefineCAT({\n\tid: \"Bradford\",\n\t// Convert an array of XYZ values in the range 0.0 - 1.0\n\t// to cone fundamentals\n\ttoCone_M: [\n\t\t[ 0.8951000, 0.2664000, -0.1614000 ],\n\t\t[ -0.7502000, 1.7135000, 0.0367000 ],\n\t\t[ 0.0389000, -0.0685000, 1.0296000 ],\n\t],\n\t// and back\n\tfromCone_M: [\n\t\t[ 0.9869929054667121, -0.14705425642099013, 0.15996265166373122 ],\n\t\t[ 0.4323052697233945, 0.5183602715367774, 0.049291228212855594 ],\n\t\t[ -0.00852866457517732, 0.04004282165408486, 0.96848669578755 ],\n\t],\n});\n\n// prettier-ignore\ndefineCAT({\n\tid: \"CAT02\",\n\t// with complete chromatic adaptation to W2, so D = 1.0\n\ttoCone_M: [\n\t\t[ 0.7328000, 0.4296000, -0.1624000 ],\n\t\t[ -0.7036000, 1.6975000, 0.0061000 ],\n\t\t[ 0.0030000, 0.0136000, 0.9834000 ],\n\t],\n\tfromCone_M: [\n\t\t[ 1.0961238208355142, -0.27886900021828726, 0.18274517938277307 ],\n\t\t[ 0.4543690419753592, 0.4735331543074117, 0.07209780371722911 ],\n\t\t[ -0.009627608738429355, -0.00569803121611342, 1.0153256399545427 ],\n\t],\n});\n\n// prettier-ignore\ndefineCAT({\n\tid: \"CAT16\",\n\ttoCone_M: [\n\t\t[ 0.401288, 0.650173, -0.051461 ],\n\t\t[ -0.250268, 1.204414, 0.045854 ],\n\t\t[ -0.002079, 0.048952, 0.953127 ],\n\t],\n\t// the extra precision is needed to avoid roundtripping errors\n\tfromCone_M: [\n\t\t[ 1.862067855087233, -1.0112546305316845, 0.14918677544445172 ],\n\t\t[ 0.3875265432361372, 0.6214474419314753, -0.008973985167612521 ],\n\t\t[ -0.01584149884933386, -0.03412293802851557, 1.0499644368778496 ],\n\t],\n});\n\n// prettier-ignore\nObject.assign(WHITES, {\n\t// whitepoint values from ASTM E308-01 with 10nm spacing, 1931 2 degree observer\n\t// all normalized to Y (luminance) = 1.00000\n\t// Illuminant A is a tungsten electric light, giving a very warm, orange light.\n\tA: [1.09850, 1.00000, 0.35585],\n\n\t// Illuminant C was an early approximation to daylight: illuminant A with a blue filter.\n\tC: [0.98074, 1.000000, 1.18232],\n\n\t// The daylight series of illuminants simulate natural daylight.\n\t// The color temperature (in degrees Kelvin/100) ranges from\n\t// cool, overcast daylight (D50) to bright, direct sunlight (D65).\n\tD55: [0.95682, 1.00000, 0.92149],\n\tD75: [0.94972, 1.00000, 1.22638],\n\n\t// Equal-energy illuminant, used in two-stage CAT16\n\tE: [1.00000, 1.00000, 1.00000],\n\n\t// The F series of illuminants represent fluorescent lights\n\tF2: [0.99186, 1.00000, 0.67393],\n\tF7: [0.95041, 1.00000, 1.08747],\n\tF11: [1.00962, 1.00000, 0.64350],\n});\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport { WHITES } from \"../adapt.js\";\nimport \"../CATs.js\"; // because of the funky whitepoint\n\n/** @import { Matrix3x3 } from \"../types.js\" */\n\n// The ACES whitepoint\n// see TB-2018-001 Derivation of the ACES White Point CIE Chromaticity Coordinates\n// also https://github.com/ampas/aces-dev/blob/master/documents/python/TB-2018-001/aces_wp.py\n// Similar to D60\nWHITES.ACES = [0.32168 / 0.33767, 1.0, (1.0 - 0.32168 - 0.33767) / 0.33767];\n\n// convert an array of linear-light ACEScc values to CIE XYZ\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst toXYZ_M = [\n\t[ 0.6624541811085053, 0.13400420645643313, 0.1561876870049078 ],\n\t[ 0.27222871678091454, 0.6740817658111484, 0.05368951740793705 ],\n\t[ -0.005574649490394108, 0.004060733528982826, 1.0103391003129971 ],\n];\n/** @type {Matrix3x3} */\n// prettier-ignore\nconst fromXYZ_M = [\n\t[ 1.6410233796943257, -0.32480329418479, -0.23642469523761225 ],\n\t[ -0.6636628587229829, 1.6153315916573379, 0.016756347685530137 ],\n\t[ 0.011721894328375376, -0.008284441996237409, 0.9883948585390215 ],\n];\n\nexport default new RGBColorSpace({\n\tid: \"acescg\",\n\tcssId: \"--acescg\",\n\tname: \"ACEScg\",\n\n\t// ACEScg – A scene-referred, linear-light encoding of ACES Data\n\t// https://docs.acescentral.com/specifications/acescg/\n\t// uses the AP1 primaries, see section 4.3.1 Color primaries\n\tcoords: {\n\t\tr: {\n\t\t\trange: [0, 65504],\n\t\t\tname: \"Red\",\n\t\t},\n\t\tg: {\n\t\t\trange: [0, 65504],\n\t\t\tname: \"Green\",\n\t\t},\n\t\tb: {\n\t\t\trange: [0, 65504],\n\t\t\tname: \"Blue\",\n\t\t},\n\t},\n\n\treferred: \"scene\",\n\n\twhite: WHITES.ACES,\n\n\ttoXYZ_M,\n\tfromXYZ_M,\n});\n\n// export default Color;\n","import RGBColorSpace from \"../RGBColorSpace.js\";\nimport \"../CATs.js\"; // because of the funky whitepoint\nimport ACEScg from \"./acescg.js\";\n\nconst ε = 2 ** -16;\n\n// the smallest value which, in the 32bit IEEE 754 float encoding,\n// decodes as a non-negative value\nconst ACES_min_nonzero = -0.35828683;\n\n// brightest encoded value, decodes to 65504\nconst ACES_cc_max = (Math.log2(65504) + 9.72) / 17.52; // 1.468\n\nexport default new RGBColorSpace({\n\tid: \"acescc\",\n\tcssId: \"--acescc\",\n\tname: \"ACEScc\",\n\t// see S-2014-003 ACEScc – A Logarithmic Encoding of ACES Data\n\t// https://docs.acescentral.com/specifications/acescc/\n\t// uses the AP1 primaries, see section 4.3.1 Color primaries\n\n\t// Appendix A: \"Very small ACES scene referred values below 7 1/4 stops\n\t// below 18% middle gray are encoded as negative ACEScc values.\n\t// These values should be preserved per the encoding in Section 4.4\n\t// so that all positive ACES values are maintained.\"\n\tcoords: {\n\t\tr: {\n\t\t\trange: [ACES_min_nonzero, ACES_cc_max],\n\t\t\tname: \"Red\",\n\t\t},\n\t\tg: {\n\t\t\trange: [ACES_min_nonzero, ACES_cc_max],\n\t\t\tname: \"Green\",\n\t\t},\n\t\tb: {\n\t\t\trange: [ACES_min_nonzero, ACES_cc_max],\n\t\t\tname: \"Blue\",\n\t\t},\n\t},\n\treferred: \"scene\",\n\n\tbase: ACEScg,\n\t// from section 4.4.2 Decoding Function\n\ttoBase (RGB) {\n\t\tconst low = (9.72 - 15) / 17.52; // -0.3014\n\n\t\treturn RGB.map(function (val) {\n\t\t\tif (val <= low) {\n\t\t\t\treturn (2 ** (val * 17.52 - 9.72) - ε) * 2; // very low values, below -0.3014\n\t\t\t}\n\t\t\telse if (val < ACES_cc_max) {\n\t\t\t\treturn 2 ** (val * 17.52 - 9.72);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// val >= ACES_cc_max\n\t\t\t\treturn 65504;\n\t\t\t}\n\t\t});\n\t},\n\n\t// Non-linear encoding function from S-2014-003, section 4.4.1 Encoding Function\n\tfromBase (RGB) {\n\t\treturn RGB.map(function (val) {\n\t\t\tif (val <= 0) {\n\t\t\t\treturn (Math.log2(ε) + 9.72) / 17.52; // -0.3584\n\t\t\t}\n\t\t\telse if (val < ε) {\n\t\t\t\treturn (Math.log2(ε + val * 0.5) + 9.72) / 17.52;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// val >= ε\n\t\t\t\treturn (Math.log2(val) + 9.72) / 17.52;\n\t\t\t}\n\t\t});\n\t},\n\t// encoded media white (rgb 1,1,1) => linear [ 222.861, 222.861, 222.861 ]\n\t// encoded media black (rgb 0,0,0) => linear [ 0.0011857, 0.0011857, 0.0011857]\n});\n","/**\n * @packageDocumentation\n * Re-exports all the spaces built into Color.js.\n */\nexport { default as XYZ_D65 } from \"./xyz-d65.js\";\nexport { default as XYZ_D50 } from \"./xyz-d50.js\";\nexport { default as XYZ_ABS_D65 } from \"./xyz-abs-d65.js\";\nexport { default as Lab_D65 } from \"./lab-d65.js\";\nexport { default as Lab } from \"./lab.js\";\nexport { default as LCH } from \"./lch.js\";\nexport { default as sRGB_Linear } from \"./srgb-linear.js\";\nexport { default as sRGB } from \"./srgb.js\";\nexport { default as HSL } from \"./hsl.js\";\nexport { default as HWB } from \"./hwb.js\";\nexport { default as HSV } from \"./hsv.js\";\nexport { default as P3_Linear } from \"./p3-linear.js\";\nexport { default as P3 } from \"./p3.js\";\nexport { default as A98RGB_Linear } from \"./a98rgb-linear.js\";\nexport { default as A98RGB } from \"./a98rgb.js\";\nexport { default as ProPhoto_Linear } from \"./prophoto-linear.js\";\nexport { default as ProPhoto } from \"./prophoto.js\";\nexport { default as REC_2020_Linear } from \"./rec2020-linear.js\";\nexport { default as REC_2020 } from \"./rec2020.js\";\nexport { default as REC_2020_Scene_Referred } from \"./rec2020-oetf.js\";\nexport { default as OKLab } from \"./oklab.js\";\nexport { default as OKLCH } from \"./oklch.js\";\nexport { default as OKLrab } from \"./oklrab.js\";\nexport { default as OKLrCH } from \"./oklrch.js\";\nexport { default as Okhsl } from \"./okhsl.js\";\nexport { default as Okhsv } from \"./okhsv.js\";\nexport { default as CAM16_JMh } from \"./cam16.js\";\nexport { default as HCT } from \"./hct.js\";\nexport { default as Luv } from \"./luv.js\";\nexport { default as LCHuv } from \"./lchuv.js\";\nexport { default as HSLuv } from \"./hsluv.js\";\nexport { default as HPLuv } from \"./hpluv.js\";\n\nexport * from \"./index-fn-hdr.js\";\n","/**\n * @packageDocumentation\n * @class Color\n * Class that represents a single color.\n * All of Color.js’s tree-shakeable methods are also available as instance methods on this class,\n * as well as static methods that take the color as the first argument.\n */\n\nimport * as util from \"./util.js\";\nimport hooks from \"./hooks.js\";\nimport defaults from \"./defaults.js\";\nimport ColorSpace from \"./ColorSpace.js\";\nimport { WHITES } from \"./adapt.js\";\nimport {\n\tgetColor,\n\ttryColor,\n\tparse,\n\tto,\n\tserialize,\n\tinGamut,\n\ttoGamut,\n\tdistance,\n\tdeltas,\n\tequals,\n\tget,\n\tgetAll,\n\tset,\n\tsetAll,\n\tdisplay,\n} from \"./index-fn.js\";\n\nimport \"./spaces/xyz-d50.js\";\nimport \"./spaces/srgb.js\";\n\nexport default class Color {\n\t/**\n\t * Creates an instance of Color.\n\t * Signatures:\n\t * - `new Color(stringToParse)`\n\t * - `new Color(otherColor)`\n\t * - `new Color({space, coords, alpha})`\n\t * - `new Color(space, coords, alpha)`\n\t * - `new Color(spaceId, coords, alpha)`\n\t */\n\tconstructor (...args) {\n\t\tlet color;\n\n\t\tif (args.length === 1) {\n\t\t\tlet parseMeta = {};\n\t\t\t// Clone simple objects to avoid mutating original in getColor\n\t\t\tif (\n\t\t\t\ttypeof args[0] === \"object\" &&\n\t\t\t\tObject.getPrototypeOf(args[0]).constructor === Object\n\t\t\t) {\n\t\t\t\targs[0] = { ...args[0] };\n\t\t\t}\n\t\t\tcolor = getColor(args[0], { parseMeta });\n\n\t\t\tif (parseMeta.format) {\n\t\t\t\t// Color actually came from a string\n\t\t\t\tthis.parseMeta = parseMeta;\n\t\t\t}\n\t\t}\n\n\t\tlet space, coords, alpha;\n\n\t\tif (color) {\n\t\t\tspace = color.space || color.spaceId;\n\t\t\tcoords = color.coords;\n\t\t\talpha = color.alpha;\n\t\t}\n\t\telse {\n\t\t\t// default signature new Color(ColorSpace, array [, alpha])\n\t\t\t[space, coords, alpha] = args;\n\t\t}\n\n\t\tObject.defineProperty(this, \"space\", {\n\t\t\tvalue: ColorSpace.get(space),\n\t\t\twritable: false,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true, // see note in https://262.ecma-international.org/8.0/#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver\n\t\t});\n\n\t\tthis.coords = coords ? coords.slice() : [0, 0, 0];\n\n\t\t// Clamp alpha to [0, 1]\n\t\tthis.alpha = util.isNone(alpha) ? alpha : alpha === undefined ? 1 : util.clamp(0, alpha, 1);\n\n\t\t// Define getters and setters for each coordinate\n\t\tfor (let id in this.space.coords) {\n\t\t\tObject.defineProperty(this, id, {\n\t\t\t\tget: () => this.get(id),\n\t\t\t\tset: value => this.set(id, value),\n\t\t\t});\n\t\t}\n\t}\n\n\tget spaceId () {\n\t\treturn this.space.id;\n\t}\n\n\tclone () {\n\t\treturn new Color(this.space, this.coords, this.alpha);\n\t}\n\n\ttoJSON () {\n\t\treturn {\n\t\t\tspaceId: this.spaceId,\n\t\t\tcoords: this.coords,\n\t\t\talpha: this.alpha,\n\t\t};\n\t}\n\n\tdisplay (...args) {\n\t\tlet ret = display(this, ...args);\n\n\t\t// Convert color object to Color instance\n\t\tret.color = new Color(ret.color);\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * Get a color from the argument(s) passed\n\t * Basically gets us the same result as new Color(color) but doesn't clone an existing color object\n\t */\n\tstatic get (color, ...args) {\n\t\tif (util.isInstance(color, this)) {\n\t\t\treturn color;\n\t\t}\n\n\t\treturn new Color(color, ...args);\n\t}\n\n\t/**\n\t * Get a color instance from the argument passed or `null` if resolution fails (instead of throwing an error).\n\t * Additionally, it supports passing an element to resolve complex CSS colors through the DOM (slow).\n\t * @see {@link tryColor} for more details\n\t */\n\tstatic try (color, options) {\n\t\tif (util.isInstance(color, this)) {\n\t\t\treturn color;\n\t\t}\n\n\t\tlet ret = tryColor(color, options);\n\n\t\tif (ret) {\n\t\t\treturn new Color(ret);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic defineFunction (name, code, o = code) {\n\t\tlet { instance = true, returns } = o;\n\n\t\tlet func = function (...args) {\n\t\t\tlet ret = code(...args);\n\n\t\t\tif (returns === \"color\") {\n\t\t\t\tret = Color.get(ret);\n\t\t\t}\n\t\t\telse if (returns === \"function<color>\") {\n\t\t\t\tlet f = ret;\n\t\t\t\tret = function (...args) {\n\t\t\t\t\tlet ret = f(...args);\n\t\t\t\t\treturn Color.get(ret);\n\t\t\t\t};\n\t\t\t\t// Copy any function metadata\n\t\t\t\tObject.assign(ret, f);\n\t\t\t}\n\t\t\telse if (returns === \"array<color>\") {\n\t\t\t\tret = ret.map(c => Color.get(c));\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t};\n\n\t\tif (!(name in Color)) {\n\t\t\tColor[name] = func;\n\t\t}\n\n\t\tif (instance) {\n\t\t\tColor.prototype[name] = function (...args) {\n\t\t\t\treturn func(this, ...args);\n\t\t\t};\n\t\t}\n\t}\n\n\tstatic defineFunctions (o) {\n\t\tfor (let name in o) {\n\t\t\tColor.defineFunction(name, o[name], o[name]);\n\t\t}\n\t}\n\n\tstatic extend (exports) {\n\t\tif (exports.register) {\n\t\t\texports.register(Color);\n\t\t}\n\t\telse {\n\t\t\t// No register method, just add the module's functions\n\t\t\tfor (let name in exports) {\n\t\t\t\tColor.defineFunction(name, exports[name]);\n\t\t\t}\n\t\t}\n\t}\n}\n\nColor.defineFunctions({\n\tget,\n\tgetAll,\n\tset,\n\tsetAll,\n\tto,\n\tequals,\n\tinGamut,\n\ttoGamut,\n\tdistance,\n\tdeltas,\n\ttoString: serialize,\n});\n\nObject.assign(Color, {\n\tutil,\n\thooks,\n\tWHITES,\n\tSpace: ColorSpace,\n\tspaces: ColorSpace.registry,\n\tparse,\n\n\t// Global defaults one may want to configure\n\tdefaults,\n});\n","/**\n * @packageDocumentation\n * This module contains {@link spaces a namespace} with all the spaces built into Color.js.\n */\nimport ColorSpace from \"../ColorSpace.js\";\nimport * as spaces from \"./index-fn.js\";\n\nfor (let key of Object.keys(spaces)) {\n\tColorSpace.register(spaces[key]);\n}\n\nexport * as spaces from \"./index-fn.js\";\nexport default ColorSpace;\n","/**\n * This plugin defines getters and setters for color[spaceId]\n * e.g. color.lch on *any* color gives us the lch coords\n */\nimport ColorSpace from \"./ColorSpace.js\";\nimport Color from \"./color.js\";\nimport hooks from \"./hooks.js\";\n\n// Add space accessors to existing color spaces\nfor (let id in ColorSpace.registry) {\n\taddSpaceAccessors(id, ColorSpace.registry[id]);\n}\n\n// Add space accessors to color spaces not yet created\nhooks.add(\"colorspace-init-end\", space => {\n\taddSpaceAccessors(space.id, space);\n\tspace.aliases?.forEach(alias => {\n\t\taddSpaceAccessors(alias, space);\n\t});\n});\n\nfunction addSpaceAccessors (id, space) {\n\tlet propId = id.replace(/-/g, \"_\");\n\n\tObject.defineProperty(Color.prototype, propId, {\n\t\t// Convert coords to coords in another colorspace and return them\n\t\t// Source colorspace: this.spaceId\n\t\t// Target colorspace: id\n\t\tget () {\n\t\t\tlet ret = this.getAll(id);\n\n\t\t\tif (typeof Proxy === \"undefined\") {\n\t\t\t\t// If proxies are not supported, just return a static array\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Enable color.spaceId.coordName syntax\n\t\t\tlet proxy = new Proxy(ret, {\n\t\t\t\thas: /** @param {string} property */ (obj, property) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tColorSpace.resolveCoord([space, property]);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {}\n\n\t\t\t\t\treturn Reflect.has(obj, property);\n\t\t\t\t},\n\t\t\t\tget: (obj, property, receiver) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tproperty &&\n\t\t\t\t\t\ttypeof property !== \"symbol\" &&\n\t\t\t\t\t\t!(property in obj) &&\n\t\t\t\t\t\tproperty in proxy\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet { index } = ColorSpace.resolveCoord([space, property]);\n\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\treturn obj[index];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.get(obj, property, receiver);\n\t\t\t\t},\n\t\t\t\tset: (obj, property, value, receiver) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(property && typeof property !== \"symbol\" && !(property in obj)) ||\n\t\t\t\t\t\tNumber(property) >= 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tlet { index } = ColorSpace.resolveCoord([\n\t\t\t\t\t\t\tspace,\n\t\t\t\t\t\t\t/** @type {string} */ (property),\n\t\t\t\t\t\t]);\n\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\tobj[index] = value;\n\n\t\t\t\t\t\t\t// Update color.coords\n\t\t\t\t\t\t\tthis.setAll(id, obj);\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.set(obj, property, value, receiver);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn proxy;\n\t\t},\n\t\t// Convert coords in another colorspace to internal coords and set them\n\t\t// Target colorspace: this.spaceId\n\t\t// Source colorspace: id\n\t\tset (coords) {\n\t\t\tthis.setAll(id, coords);\n\t\t},\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t});\n}\n","/**\n * Entry point for the OOP flavor of the API\n * Import as `colorjs.io`\n */\nimport Color from \"./color.js\";\n\n// Import all color spaces\nimport \"./spaces/index.js\";\n\n// Import all DeltaE methods\nimport deltaE from \"./deltaE.js\";\nimport deltaEMethods from \"./deltaE/index.js\";\n\nColor.extend(deltaEMethods);\nColor.extend({ deltaE });\nObject.assign(Color, { deltaEMethods });\n\n// Import optional modules\nimport * as variations from \"./variations.js\";\nColor.extend(variations);\n\nimport contrast from \"./contrast.js\";\nColor.extend({ contrast });\n\nimport * as chromaticity from \"./chromaticity.js\";\nColor.extend(chromaticity);\n\nimport * as luminance from \"./luminance.js\";\nColor.extend(luminance);\n\nimport * as interpolation from \"./interpolation.js\";\nColor.extend(interpolation);\n\nimport * as contrastMethods from \"./contrast/index.js\";\nColor.extend(contrastMethods);\n\nimport \"./CATs.js\";\nimport \"./space-accessors.js\";\n\n// Re-export everything\nexport default Color;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar isCallable = require('is-callable');\n\nvar inspect = require('object-inspect');\n\nvar GetV = require('./GetV');\nvar isPropertyKey = require('./isPropertyKey');\n\n// https://262.ecma-international.org/6.0/#sec-getmethod\n\n/** @type {import('./GetMethod')} */\nmodule.exports = function GetMethod(O, P) {\n\t// 7.3.9.1\n\tif (!isPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: P is not a Property Key');\n\t}\n\n\t// 7.3.9.2\n\tvar func = GetV(O, P);\n\n\t// 7.3.9.4\n\tif (func == null) {\n\t\treturn void 0;\n\t}\n\n\t// 7.3.9.5\n\tif (!isCallable(func)) {\n\t\tthrow new $TypeError(inspect(P) + ' is not a function: ' + inspect(func));\n\t}\n\n\t// 7.3.9.6\n\treturn func;\n};\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar inspect = require('object-inspect');\n\nvar isPropertyKey = require('./isPropertyKey');\n\n// https://262.ecma-international.org/6.0/#sec-getv\n\n/** @type {import('./GetV')} */\nmodule.exports = function GetV(V, P) {\n\t// 7.3.2.1\n\tif (!isPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: P is not a Property Key, got ' + inspect(P));\n\t}\n\n\t// 7.3.2.2-3\n\t// var O = ToObject(V);\n\n\t// 7.3.2.4\n\treturn /** @type {Record<typeof P, unknown>} */ (V)[P]; // O.[[Get]](P, V)\n};\n","'use strict';\n\n/** @type {import('./isPropertyKey')} */\nmodule.exports = function isPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar hasOwn = require('hasown');\nvar isObject = require('es-object-atoms/isObject');\n\nvar isPropertyKey = require('../helpers/isPropertyKey');\n\n// https://262.ecma-international.org/6.0/#sec-hasownproperty\n\nmodule.exports = function HasOwnProperty(O, P) {\n\tif (!isObject(O)) {\n\t\tthrow new $TypeError('Assertion failed: `O` must be an Object');\n\t}\n\tif (!isPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: `P` must be a Property Key');\n\t}\n\treturn hasOwn(O, P);\n};\n","'use strict';\n\nvar toPrimitive = require('es-to-primitive/es2015');\n\n// https://262.ecma-international.org/6.0/#sec-toprimitive\n\nmodule.exports = function ToPrimitive(input) {\n\tif (arguments.length > 1) {\n\t\treturn toPrimitive(input, arguments[1]);\n\t}\n\treturn toPrimitive(input);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $String = GetIntrinsic('%String%');\n\nvar ToPrimitive = require('./ToPrimitive');\nvar ToString = require('./ToString');\n\n// https://262.ecma-international.org/6.0/#sec-topropertykey\n\nmodule.exports = function ToPropertyKey(argument) {\n\tvar key = ToPrimitive(argument, $String);\n\treturn typeof key === 'symbol' ? key : ToString(key);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $String = GetIntrinsic('%String%');\nvar $TypeError = require('es-errors/type');\n\n// https://262.ecma-international.org/6.0/#sec-tostring\n\nmodule.exports = function ToString(argument) {\n\tif (typeof argument === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a string');\n\t}\n\treturn $String(argument);\n};\n","'use strict';\n\nmodule.exports = function isPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('./RequireObjectCoercible')} */\nmodule.exports = function RequireObjectCoercible(value) {\n\tif (value == null) {\n\t\tthrow new $TypeError((arguments.length > 0 && arguments[1]) || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('./');\nvar RequireObjectCoercible = require('./RequireObjectCoercible');\n\n/** @type {import('./ToObject')} */\nmodule.exports = function ToObject(value) {\n\tRequireObjectCoercible(value);\n\treturn $Object(value);\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('./isObject')} */\nmodule.exports = function isObject(x) {\n\treturn !!x && (typeof x === 'function' || typeof x === 'object');\n};\n","'use strict';\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar isCallable = require('is-callable');\nvar isDate = require('is-date-object');\nvar isSymbol = require('is-symbol');\nvar $TypeError = require('es-errors/type');\n\nvar isPrimitive = require('./helpers/isPrimitive');\n\n/** @import { primitiveES6 } from './es2015' */\n\n/** @type {(O: { valueOf?: () => unknown, toString?: () => unknown }, hint: 'number' | 'string') => primitiveES6} */\nfunction OrdinaryToPrimitive(O, hint) {\n\tif (typeof O === 'undefined' || O === null) {\n\t\tthrow new $TypeError('Cannot call method on ' + O);\n\t}\n\tif (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {\n\t\tthrow new $TypeError('hint must be \"string\" or \"number\"');\n\t}\n\t/** @type {('toString' | 'valueOf')[]} */\n\tvar methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\tvar method, result, i;\n\tfor (i = 0; i < methodNames.length; ++i) {\n\t\tmethod = O[methodNames[i]];\n\t\tif (isCallable(method)) {\n\t\t\tresult = method.call(O);\n\t\t\tif (isPrimitive(result)) {\n\t\t\t\treturn /** @type {primitiveES6} */ (result);\n\t\t\t}\n\t\t}\n\t}\n\tthrow new $TypeError('No default value');\n}\n\nvar GetMethod = require('es-abstract-get/GetMethod');\n\n/** @type {import('./es2015')} */\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn /** @type {primitiveES6} */ (input);\n\t}\n\t/** @type {'default' | 'string' | 'number'} */\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (arguments[1] === String) {\n\t\t\thint = 'string';\n\t\t} else if (arguments[1] === Number) {\n\t\t\thint = 'number';\n\t\t}\n\t}\n\n\tvar exoticToPrim;\n\tif (hasSymbols) {\n\t\tif (Symbol.toPrimitive) {\n\n\t\t\texoticToPrim = GetMethod(\n\t\t\t\t/** @type {{ [k in SymbolConstructor['toPrimitive']]?: Function }} */\n\t\t\t\t(input),\n\t\t\t\tSymbol.toPrimitive\n\t\t\t);\n\t\t} else if (isSymbol(input)) {\n\t\t\texoticToPrim = Symbol.prototype.valueOf;\n\t\t}\n\t}\n\tif (typeof exoticToPrim !== 'undefined') {\n\t\tvar result = exoticToPrim.call(input, hint);\n\t\tif (isPrimitive(result)) {\n\t\t\treturn /** @type {primitiveES6} */ (result);\n\t\t}\n\t\tthrow new $TypeError('unable to convert exotic object to primitive');\n\t}\n\tif (hint === 'default' && (isDate(input) || isSymbol(input))) {\n\t\thint = /** @type {const} */ ('string');\n\t}\n\n\treturn OrdinaryToPrimitive(input, hint === 'default' ? 'number' : hint);\n};\n","'use strict';\n\n/** @import { primitive } from '../' */\n/** @import { primitiveES5 } from '../es5' */\n\n/** @type {<T extends primitive | primitiveES5>(value: unknown) => value is T} */\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\n\nvar getDay = callBound('Date.prototype.getDay');\n/** @type {import('.')} */\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n/** @type {(value: unknown) => string} */\nvar toStr = callBound('Object.prototype.toString');\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar safeRegexTest = require('safe-regex-test');\n\nif (hasSymbols) {\n\tvar $symToStr = callBound('Symbol.prototype.toString');\n\tvar isSymString = safeRegexTest(/^Symbol\\(.*\\)$/);\n\n\t/** @type {(value: object) => value is Symbol} */\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn isSymString($symToStr(value));\n\t};\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (!value || typeof value !== 'object' || $toString(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n __proto__: null,\n 'double': '\"',\n single: \"'\"\n};\nvar quoteREs = {\n __proto__: null,\n 'double': /([\"\\\\])/g,\n single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var style = opts.quoteStyle || defaultStyle;\n var quoteChar = quotes[style];\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n quoteRE.lastIndex = 0;\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nrequire('./shim')();\n","'use strict';\n\nvar ToObject = require('es-object-atoms/ToObject');\nvar ToPropertyKey = require('es-abstract/2024/ToPropertyKey');\nvar HasOwnProperty = require('es-abstract/2024/HasOwnProperty');\n\nmodule.exports = function hasOwn(O, P) {\n\tvar obj = ToObject(O);\n\tvar key = ToPropertyKey(P);\n\treturn HasOwnProperty(obj, key);\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn Object.hasOwn || implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectHasOwn() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ hasOwn: polyfill },\n\t\t{ hasOwn: function () { return Object.hasOwn !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * @name Darkmode主入口\n *\n * @function run 初始化Dark Mode配置并运行Dark Mode处理\n * @param {DOM Object Array} nodes 要处理的节点列表\n * @param {Object} opt Dark Mode配置,详见init配置说明\n * @return void\n *\n * @function init 初始化Dark Mode配置\n * @param {Function} opt.begin 开始处理时触发的回调\n * @param {Function} opt.showFirstPage 首屏处理完成时触发的回调\n * @param {Function} opt.error 发生error时触发的回调\n * @param {string} opt.mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @param {Object} opt.whitelist 节点白名单\n * @param {Array} opt.whitelist.tagName 标签名列表\n * @param {Array} opt.whitelist.attribute 属性列表\n * @param {boolean} opt.needJudgeFirstPage 是否需要判断首屏\n * @param {boolean} opt.delayBgJudge 是否延迟背景判断\n * @param {DOM Object} opt.container 延迟运行js时使用的容器\n * @param {string} opt.cssSelectorsPrefix css选择器前缀\n * @param {string} opt.defaultLightTextColor 非Dark Mode下字体颜色\n * @param {string} opt.defaultLightBgColor 非Dark Mode下背景颜色\n * @param {string} opt.defaultDarkTextColor Dark Mode下字体颜色\n * @param {string} opt.defaultDarkBgColor Dark Mode下背景颜色\n * @return void\n *\n * @function convertBg 处理背景\n * @param {DOM Object Array} nodes 要处理的节点列表\n * @return void\n *\n * @function updateStyle 更新节点Dark Mode样式\n * @param {DOM Object} node 要更新的节点\n * @param {Object} styles 更新的样式键值对对象,如:{ color: '#ddd' }\n * @return void\n *\n * @function getContrast 获取两个颜色的对比度\n * @param {string} color1 要计算颜色对比度的颜色1,支持css颜色格式\n * @param {string} color2 要计算颜色对比度的颜色2,支持css颜色格式\n * @return {number} 颜色对比度,取值范围为`[1, 21]`\n *\n * @function extend 挂载插件\n * @param {Array} pluginList 插件列表\n * @return void\n *\n */\n\n// 常量\nimport {\n MEDIA_QUERY,\n CLASS_PREFIX,\n HTML_CLASS,\n\n COLORATTR,\n BGCOLORATTR,\n ORIGINAL_COLORATTR,\n ORIGINAL_BGCOLORATTR,\n BGIMAGEATTR,\n COMPLEMENTARY_BGIMAGECOLORATTR,\n\n PAGE_HEIGHT,\n} from './modules/constant';\nconst classReg = new RegExp(`${CLASS_PREFIX}[^ ]+`, 'g');\n\n// Darkmode配置\nimport config from './modules/config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils, // 样式相关操作工具对象\n domUtils, // 节点相关操作工具对象\n sdk\n} from './modules/global';\n\nimport {\n getChildrenAndIt\n} from './modules/domUtils';\n\n// Dark Mode切换\nlet mql = null;\nconst switchToDarkmode = (mqlObj, opt = {\n type: 'dom'\n}) => {\n opt.force && (cssUtils.isFinish = false); // 如果是强制运行Dark Mode处理逻辑,则重置为未运行\n\n if (cssUtils.isFinish) return; // 已运行过Dark Mode处理逻辑则不再运行\n\n try {\n sdk.isDarkmode = config.mode ? (config.mode === 'dark') : mqlObj.matches;\n\n if (opt.type === 'dom') { // 处理节点\n sdk.isDarkmode && typeof config.begin === 'function' && config.begin(domUtils.hasDelay());\n\n Array.prototype.forEach.call(domUtils.get(), node => {\n if (sdk.isDarkmode && node.className && typeof node.className === 'string') {\n node.className = node.className.replace(classReg, ''); // 过滤掉原有的Dark Mode class,避免外部复制文章时把文章内的Dark Mode class也复制过去导致新文章在Dark Mode下样式错乱\n }\n\n if (sdk.isDarkmode || plugins.length) {\n if (!config.needJudgeFirstPage) { // 不需要判断首屏\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else { // 判断首屏\n const rect = node.getBoundingClientRect();\n const top = rect.top;\n const bottom = rect.bottom;\n if (top <= 0 && bottom <= 0) { // 首屏前面\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else if ((top > 0 && top < PAGE_HEIGHT) || (bottom > 0 && bottom < PAGE_HEIGHT)) { // 首屏\n domUtils.addFirstPageNode(node); // 记录首屏节点\n cssUtils.addCss(sdk.convert(node), true); // 写入首屏样式\n } else { // 首屏后面,理论上,这里最多只会进来一次\n config.needJudgeFirstPage = false; // 至此,不需要再判断首屏了\n\n // 显示首屏\n cssUtils.writeStyle(true); // 写入首屏样式表\n domUtils.showFirstPageNodes(); // 显示首屏节点\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n }\n }\n }\n });\n\n plugins.loopTimes++;\n } else if (opt.type === 'bg') { // 处理背景\n sdk.isDarkmode && tnQueue.forEach(text => bgStack.contains(text, bg => {\n cssUtils.addCss(cssUtils.genCss(bg.className, bg.cssKV)); // 写入非首屏样式\n typeof bg.cb === 'function' && bg.cb(bg);\n\n // 还得处理该背景下的所有新老节点\n const els = [bg.elOld];\n bg.elOld !== bg.el && els.push(bg.el);\n els.forEach(el => {\n const inheritAttrs = [\n [COLORATTR, el[COLORATTR] ?? null],\n [BGCOLORATTR, el[BGCOLORATTR] ?? null],\n [ORIGINAL_COLORATTR, el[ORIGINAL_COLORATTR] ?? null],\n [ORIGINAL_BGCOLORATTR, el[ORIGINAL_BGCOLORATTR] ?? null],\n [BGIMAGEATTR, el[BGIMAGEATTR] ?? null],\n [COMPLEMENTARY_BGIMAGECOLORATTR, el[COMPLEMENTARY_BGIMAGECOLORATTR] ?? null],\n ];\n const children = getChildrenAndIt(el, true);\n children.forEach(child => { // 重置继承属性\n inheritAttrs.forEach(([attr, value]) => {\n if (value === null) {\n delete child[attr];\n } else {\n child[attr] = value;\n }\n });\n });\n children.forEach(child => { // 重新运行Dark Mode处理逻辑\n cssUtils.addCss(sdk.convert(child, undefined, false, true));\n });\n });\n }));\n }\n\n if (config.needJudgeFirstPage || (!config.needJudgeFirstPage && !domUtils.showFirstPage)) {\n // config.needJudgeFirstPage === ture,表示需要判断首屏但是正文长度没超过一屏\n // config.needJudgeFirstPage === false && domUtils.showFirstPage === false,表示不需要判断首屏且没有做首屏优化\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n }\n cssUtils.writeStyle(); // 写入非首屏样式表\n domUtils.emptyFirstPageNodes(); // 清空记录的首屏节点\n\n if (!sdk.isDarkmode) { // 非Dark Mode\n // 首次加载页面时为非Dark Mode,标记为不需要判断首屏\n config.needJudgeFirstPage = false;\n\n // 首次加载页面时为非Dark Mode,标记为不延迟判断背景\n config.delayBgJudge = false;\n\n if (config.container === null && opt.type === 'dom' && domUtils.length) {\n domUtils.delay(); // 将节点转移到延迟处理队列里\n }\n }\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n};\n\n// 初始化Dark Mode配置并运行Dark Mode处理\nexport function run(nodes, opt) {\n init(opt); // 初始化配置\n\n domUtils.set(nodes);\n\n switchToDarkmode(mql, {\n force: true,\n type: 'dom'\n });\n};\n\n// 初始化Dark Mode配置\nexport function init(opt = {}) {\n if (config.hasInit) return; // 只可设置一次配置\n\n config.hasInit = true; // 记录为配置已设置\n\n const tagName = config.whitelist.tagName;\n const attribute = config.whitelist.attribute;\n if (opt.whitelist) {\n opt.whitelist.tagName instanceof Array && opt.whitelist.tagName.forEach(item => {\n item = item.toUpperCase();\n tagName.indexOf(item) === -1 && tagName.push(item);\n });\n opt.whitelist.attribute instanceof Array && opt.whitelist.attribute.forEach(item => {\n attribute.indexOf(item) === -1 && attribute.push(item);\n });\n }\n\n if (['dark', 'light'].indexOf(opt.mode) > -1) {\n config.set('string', opt, 'mode');\n opt.mode === 'dark' && document.getElementsByTagName('html')[0].classList.add(HTML_CLASS);\n }\n\n config.set('function', opt, 'begin');\n config.set('function', opt, 'showFirstPage');\n config.set('function', opt, 'error');\n config.set('boolean', opt, 'needJudgeFirstPage');\n config.set('boolean', opt, 'delayBgJudge');\n config.set('dom', opt, 'container');\n config.set('string', opt, 'cssSelectorsPrefix');\n config.set('string', opt, 'defaultLightTextColor');\n config.set('string', opt, 'defaultLightBgColor');\n config.set('string', opt, 'defaultDarkTextColor');\n config.set('string', opt, 'defaultDarkBgColor');\n\n sdk.init();\n\n if (!config.mode && mql === null && window.matchMedia) {\n // 匹配媒体查询\n mql = window.matchMedia(MEDIA_QUERY);\n mql.addListener(switchToDarkmode); // 监听\n }\n};\n\n// 处理背景\nexport function convertBg(nodes) {\n domUtils.set(nodes);\n\n if (config.container !== null) {\n bgStack.update(nodes); // 更新背景堆栈\n tnQueue.update(nodes); // 更新文字队列\n }\n\n switchToDarkmode(mql, {\n force: true,\n type: 'bg'\n });\n};\n\n// 更新节点Dark Mode样式\nexport function updateStyle(node, styles) {\n if (!cssUtils.isFinish) return; // 没有运行过Dark Mode处理逻辑则无需运行\n cssUtils.addCss(sdk.convert(node, styles ? Object.keys(styles).map(key => [key, styles[key]]) : undefined, true), false);\n cssUtils.writeStyle();\n};\n\n// 获取两个颜色的对比度\nexport function getContrast(color1, color2) {\n return sdk.getContrast(color1, color2);\n};\n\n// 挂载插件\nexport function extend(pluginList) {\n pluginList.forEach(plugin => plugins.extend(plugin));\n};\n","/**\n * @name 需要判断位置的背景节点堆栈\n *\n * @class BgNodeStack\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @method push 背景节点入栈\n * @param {DOM Object} el 背景节点对象\n * @param {string} cssKV css键值对\n * @return void\n *\n * @method contains 判断节点是否在背景节点的区域\n * @param {DOM Object} el 要判断的节点对象(非背景节点)\n * @param {Function} callback 如果在背景节点区域内,则执行该回调函数\n * @return void\n *\n * @method update 更新堆栈的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n * @return void\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class BgNodeStack {\n _stack = []; // 需要判断位置的背景堆栈,{ elOld, el, className, cssKV, updated, rect }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n this.classNameReg = new RegExp(`${this._prefix}\\\\d+`);\n }\n\n // 背景节点入栈\n push(el, cssKV, cb) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._stack.unshift({\n elOld: el,\n el,\n className,\n cssKV,\n updated: !config.delayBgJudge,\n cb\n });\n }\n\n // 判断节点是否在背景节点的区域\n contains(el, callback) {\n const rect = el.getBoundingClientRect();\n const idxStack = [];\n\n this._stack.forEach((item, i) => {\n if (item.updated) {\n if (!item.rect) item.rect = item.el.getBoundingClientRect();\n\n const bgRect = item.rect;\n if (!(\n rect.top >= bgRect.bottom\n || rect.bottom <= bgRect.top\n || rect.left >= bgRect.right\n || rect.right <= bgRect.left\n )) { // 表示节点在背景图内\n idxStack.unshift(i);\n }\n }\n });\n\n while (idxStack.length) {\n const idx = idxStack.shift();\n const item = this._stack.splice(idx, 1)[0];\n typeof callback === 'function' && callback(item);\n }\n }\n\n // 更新堆栈的节点对象,主要解决前后节点不一致的问题\n update(els) {\n this._stack.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n","/**\n * @name 颜色操作相关API\n *\n * @function ColorParser 实例化Color对象,传参非法时返回null\n * @param {string} color css色值\n * @return {Color Object | null} 实例化结果\n *\n * @function parseColorName 处理颜色,包括清除!important和转换英文定义颜色\n * @param {string} color css色值\n * @param {boolean} supportTransparent 是否支持转换transparent\n * @return {string} 处理后的rgb(a)格式css色值\n *\n * @function parseWebkitFillColorAndStrokeColor 处理-webkit-fill-color和-webkit-text-stroke-color,返回处理后的色值,无则返回空字符串\n * @param {string} color css色值\n * @return {string} 处理后的rgb(a)格式css色值,无则返回空字符串\n *\n * @function mixColors 计算混合颜色\n * @param {string} colors 用于计算的颜色数组\n * @param {string} type 使用的混合颜色算法,支持 mix(默认) | normal | multiply | screen | overlay | darken | lighten | colorDodge | colorBurn | hardLight | softLight | difference | exclusion | hue | saturation | color | luminosity\n * @return {Color Object | null} 混合结果\n *\n * @function getColorPerceivedBrightness 计算感知亮度\n * @param {RGB Array} rgb 要计算的颜色rgb数组,如:[255, 0, 0]\n * @return {number} 感知亮度\n *\n * @function adjustBrightnessTo 调整为指定感知亮度\n * @param {number} target 指定的感知亮度值\n * @param {RGB Array} rgb 要调整的颜色rgb数组,如:[255, 0, 0]\n * @return {Color Object} 调整后的颜色\n *\n */\n\nimport 'object.hasown/auto';\nimport Color from 'color';\nimport ColorName from 'color-name';\nimport * as ColorBlend from 'color-blend';\nimport ColorJS from 'colorjs.io';\n\n// 常量\nimport {\n IMPORTANT_REGEXP,\n COLOR_REGEXP\n} from './constant';\n\nconst COLOR_NAME = {\n ...ColorName,\n windowtext: [0, 0, 0], // 补上这个colorName\n transparent: [255, 255, 255, 0], // 支持透明,暂定用白色透明度0来表示\n};\nconst COLOR_NAME_REG = new RegExp(Object.keys(COLOR_NAME).map(colorName => `\\\\b${colorName}\\\\b`).join('|'), 'ig'); // 生成正则表达式来匹配这些colorName\n\n// Color对象 => ColorBlend对象\nconst color2ColorBlend = color => {\n const obj = color.object();\n obj.a = obj.alpha || 1;\n delete obj.alpha;\n return obj;\n};\n\n// ColorBlend对象 => Color对象\nconst colorBlend2Color = colorBlend => {\n colorBlend.alpha = colorBlend.a;\n delete colorBlend.a;\n return ColorParser(colorBlend);\n};\n\n// 实例化Color对象,传参非法时返回null\nexport const ColorParser = color => {\n let res = null;\n try {\n res = color instanceof Color ? color : Color(color);\n } catch (e) {\n try {\n res = ColorParser(new ColorJS(color).to('srgb').toString()); // 对于lch、oklch、lab、oklab、color等色值尝试使用colorjs.io来解析,然后再转成Color对象\n } catch (e) {\n console.log(`ignore the invalid color: \\`${color}\\``);\n }\n }\n return res;\n};\n\n// 处理颜色,包括清除!important和转换英文定义颜色\nexport const parseColorName = (color, supportTransparent) => color.replace(IMPORTANT_REGEXP, '').replace(COLOR_NAME_REG, match => {\n if (!supportTransparent && match === 'transparent') return match; // 如果不支持转换transparent,直接返回transparent\n\n const color = COLOR_NAME[match.toLowerCase()];\n return `${color.length > 3 ? 'rgba' : 'rgb'}(${color.toString()})`;\n});\n\n// 处理-webkit-fill-color和-webkit-text-stroke-color,返回处理后的色值,无则返回空字符串\nexport const parseWebkitFillColorAndStrokeColor = color => {\n const newValue = parseColorName(color);\n return COLOR_REGEXP.test(newValue) ? newValue : '';\n};\n\n// 计算混合颜色\nexport const mixColors = (colors, type = 'mix') => {\n if (Object.prototype.toString.call(colors) !== '[object Array]' || colors.length < 1) return null;\n if (colors.length === 1) return colors[0];\n\n let color1 = ColorParser(colors.shift());\n let color2 = ColorParser(colors.shift());\n while (color2) {\n if (!color1 && color2) { // 如果当前色值非法,混入色值合法,则直接使用混入色值\n color1 = color2;\n } else if (!color1 && !color2) { // 如果两个色值都非法,则使用下一批色值\n if (colors.length === 0) break;\n color1 = ColorParser(colors.shift());\n } else if (color1 && color2) { // 如果两个色值都合法,执行mix\n color1 = (type === 'mix'\n ? color1.mix(color2, color2.alpha())\n : colorBlend2Color(ColorBlend[type](color2ColorBlend(color1), color2ColorBlend(color2))));\n } // 如果当前色值合法,混入色值非法,无需处理\n\n if (colors.length === 0) break;\n color2 = ColorParser(colors.shift());\n }\n\n return color1 || null;\n};\n\n// 计算感知亮度\nexport const getColorPerceivedBrightness = rgb => (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\n// 调整为指定感知亮度\nexport const adjustBrightnessTo = (target, rgb) => {\n const relativeBrightnessRatio = target / getColorPerceivedBrightness(rgb);\n let newTextR = Math.min(255, rgb[0] * relativeBrightnessRatio);\n let newTextG = Math.min(255, rgb[1] * relativeBrightnessRatio);\n let newTextB = Math.min(255, rgb[2] * relativeBrightnessRatio);\n if (newTextG === 0 || newTextR === 255 || newTextB === 255) {\n newTextG = (target * 1000 - newTextR * 299 - newTextB * 114) / 587;\n } else if (newTextR === 0) {\n newTextR = (target * 1000 - newTextG * 587 - newTextB * 114) / 299;\n } else if (newTextB === 0 || newTextG === 255) {\n newTextB = (target * 1000 - newTextR * 299 - newTextG * 587) / 114;\n }\n return Color.rgb(newTextR, newTextG, newTextB);\n};\n","/**\n * @name Darkmode配置\n *\n * @attr {boolean} hasInit 是否初始化过配置\n * @attr {Function} begin 开始处理时触发的回调\n * @attr {Function} showFirstPage 首屏处理完成时触发的回调\n * @attr {Function} error 发生error时触发的回调\n * @attr {string} mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @attr {Object} whitelist 节点白名单\n * @attr {string Array} whitelist.tagName 标签名列表\n * @attr {string Array} whitelist.attribute 属性列表\n * @attr {boolean} needJudgeFirstPage 是否需要判断首屏\n * @attr {boolean} delayBgJudge 是否延迟背景判断\n * @attr {DOM Object} container 延迟运行js时使用的容器\n * @attr {string} cssSelectorsPrefix css选择器前缀\n * @attr {string} defaultLightTextColor 非Dark Mode下字体颜色\n * @attr {string} defaultLightBgColor 非Dark Mode下背景颜色\n * @attr {string} defaultDarkTextColor Dark Mode下字体颜色\n * @attr {string} defaultDarkBgColor Dark Mode下背景颜色\n *\n * @method set 设置配置\n * @param {string} type 要处理的节点\n * @param {Object} opt 传入的配置对象\n * @param {string} key 配置名\n * @return void\n *\n */\n\n// 常量\nimport {\n DEFAULT_LIGHT_TEXTCOLOR,\n DEFAULT_LIGHT_BGCOLOR,\n DEFAULT_DARK_TEXTCOLOR,\n DEFAULT_DARK_BGCOLOR\n} from './constant';\n\nconst config = {\n hasInit: false, // 是否初始化过配置\n\n // hooks\n begin: null, // 开始处理时触发的回调\n showFirstPage: null, // 首屏处理完成时触发的回调\n error: null, // 发生error时触发的回调\n\n mode: '', // 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n whitelist: { // 节点白名单\n tagName: ['MPCPS', 'IFRAME'], // 标签名列表\n attribute: [], // 属性列表\n },\n needJudgeFirstPage: true, // 是否需要判断首屏\n delayBgJudge: false, // 是否延迟背景判断\n container: null, // 延迟运行js时使用的容器\n cssSelectorsPrefix: '', // css选择器前缀\n defaultLightTextColor: DEFAULT_LIGHT_TEXTCOLOR, // 非Dark Mode下字体颜色\n defaultLightBgColor: DEFAULT_LIGHT_BGCOLOR, // 非Dark Mode下背景颜色\n defaultDarkTextColor: DEFAULT_DARK_TEXTCOLOR, // Dark Mode下字体颜色\n defaultDarkBgColor: DEFAULT_DARK_BGCOLOR, // Dark Mode下背景颜色\n\n // 设置配置\n set(type, opt, key) {\n const value = opt[key];\n switch (type) {\n case 'boolean':\n typeof value === 'boolean' && (this[key] = value);\n break;\n case 'string':\n typeof value === 'string' && value !== '' && (this[key] = value);\n break;\n case 'function':\n typeof value === 'function' && (this[key] = value);\n break;\n case 'dom':\n value instanceof HTMLElement && (this[key] = value);\n break;\n default:\n }\n }\n};\n\nexport default config;\n","/**\n * @name 常量\n *\n */\n\nexport const MEDIA_QUERY = '(prefers-color-scheme: dark)'; // Dark Mode的CSS媒体查询\n\nexport const CLASS_PREFIX = 'js_darkmode__'; // Dark Mode class前缀\nexport const DM_CLASSNAME_REGEXP = new RegExp(`${CLASS_PREFIX}\\\\d+`);\n\nexport const HTML_CLASS = 'data_color_scheme_dark'; // 强制设置暗黑模式时给html加的class\n\nconst RANDOM = `${new Date() * 1}${Math.round(Math.random() * 10)}`; // 生成个随机数,格式为时间戳+随机数\nexport const COLORATTR = `data-darkmode-color-${RANDOM}`; // dm color,即算法生成的新色值,单个\nexport const BGCOLORATTR = `data-darkmode-bgcolor-${RANDOM}`; // dm bg-color,即算法生成的新色值,有多个,用BG_COLOR_DELIMITER分割\nexport const ORIGINAL_COLORATTR = `data-darkmode-original-color-${RANDOM}`; // lm color,即原色值,单个\nexport const ORIGINAL_BGCOLORATTR = `data-darkmode-original-bgcolor-${RANDOM}`; // lm bg-color,即原色值,有多个,用BG_COLOR_DELIMITER分割\nexport const BGIMAGEATTR = `data-darkmode-bgimage-${RANDOM}`;\nexport const COMPLEMENTARY_BGIMAGECOLORATTR = `data-darkmode-complementary-bgimagecolor-${RANDOM}`; // 背景图片的补色色值,单个\nexport const BG_COLOR_DELIMITER = '|';\n\nexport const DEFAULT_LIGHT_TEXTCOLOR = '#191919'; // 非Dark Mode下字体颜色\nexport const DEFAULT_LIGHT_BGCOLOR = '#fff'; // 非Dark Mode下背景颜色\nexport const DEFAULT_DARK_TEXTCOLOR = '#a3a3a3'; // Dark Mode下字体颜色,前景色:rgba(255,255,255,0.6) 背景色:#191919\nexport const DEFAULT_DARK_BGCOLOR = '#191919'; // Dark Mode下背景颜色\n\nexport const WHITE_LIKE_COLOR_BRIGHTNESS = 250; // 接近白色的感知亮度阈值\nexport const MAX_LIMIT_BGCOLOR_BRIGHTNESS = 190;\nexport const MIN_LIMIT_OFFSET_BRIGHTNESS = 65;\nexport const HIGH_BGCOLOR_BRIGHTNESS = 100;\nexport const HIGH_BLACKWHITE_HSL_BRIGHTNESS = 40;\nexport const LOW_BLACKWHITE_HSL_BRIGHTNESS = 22;\nexport const IGNORE_ALPHA = 0.05; // 忽略的透明度阈值\n\nexport const PAGE_HEIGHT = (window.getInnerHeight && window.getInnerHeight())\n || window.innerHeight\n || document.documentElement.clientHeight;\n\nexport const CSS_PROP_SERIES = { // 支持的css属性,按类型做分类\n BG_COLOR: [\n 'background-color',\n 'background-image',\n 'background',\n ],\n TEXT_SHADOW: [\n 'text-shadow',\n ],\n TEXT_COLOR: [\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'text-decoration',\n 'text-decoration-color',\n 'text-emphasis-color',\n 'color',\n '-webkit-text-fill-color',\n ],\n BORDER_COLOR: [\n 'border-image',\n '-webkit-border-image',\n 'border',\n 'border-top',\n 'border-right',\n 'border-bottom',\n 'border-left',\n 'border-color',\n 'border-top-color',\n 'border-right-color',\n 'border-bottom-color',\n 'border-left-color',\n 'border-block-color',\n 'border-block-start-color',\n 'border-block-end-color',\n 'border-inline-color',\n 'border-inline-start-color',\n 'border-inline-end-color',\n 'outline',\n 'outline-color',\n 'box-shadow', // TODO: 不知道为啥之前没处理,后面需要留意下\n 'column-rule',\n 'column-rule-color',\n ],\n // SVG_COLOR: [ // TODO: SVG后面再处理\n // 'fill',\n // 'stroke',\n // 'stop-color',\n // 'flood-color',\n // 'lighting-color',\n // ],\n // FILTER: [ // TODO: filter后面再考虑要不要处理\n // 'filter'\n // ],\n};\nexport const CSS_PROP_LIST = Object.keys(CSS_PROP_SERIES).map(key => CSS_PROP_SERIES[key].join('|')).join('|').split('|'); // 支持的css属性平铺列表\nexport const TABLE_NAME = ['TABLE', 'TR', 'TD', 'TH']; // 支持bgcolor属性的table标签列表\n\nexport const IMPORTANT_REGEXP = / !important$/; // !important\n\nexport const SEMICOLON_PLACEHOLDER = '<$#_SEMICOLON_#$>'; // 分号占位符\nexport const SEMICOLON_PLACEHOLDER_REGEXP = /<\\$#_SEMICOLON_#\\$>/g;\n\nconst COLOR_REGEXP_STR = '\\\\b((rgba?)|((ok)?lch)|((ok)?lab)|(color))\\\\([^)]+\\\\)';\nexport const COLOR_REGEXP = new RegExp(COLOR_REGEXP_STR, 'i');\nexport const COLOR_REGEXP_GLOBAL = new RegExp(COLOR_REGEXP_STR, 'ig');\n","/**\n * @name 样式相关操作工具对象\n *\n * @class CssUtils\n *\n * @attr {boolean} isFinish 是否运行过Dark Mode处理逻辑(写入过非首屏样式表则表示已运行过)\n *\n * @method genCssKV 生成css键值对\n * @param {string} key css属性\n * @param {string} val css值\n * @return {string} css键值对\n *\n * @method genCss 生成css,包括css选择器\n * @param {string} className DOM节点类名\n * @param {string} cssKV css键值对\n * @return {string} css\n *\n * @method addCss 加入css\n * @param {string} css css样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n * @return void\n *\n * @method writeStyle 写入样式表\n * @param {boolean} isFirstPageStyle 是否首屏样式\n * @return void\n *\n * @method watch 监听生成css键值对\n * @param {string} key css属性\n * @param {function} cb 回调函数\n * @return void\n *\n * @method unwatch 取消监听生成css键值对\n * @param {string} key css属性\n * @return void\n *\n */\n\n// 常量\nimport {\n MEDIA_QUERY,\n HTML_CLASS,\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n sdk\n} from './global';\n\nexport default class CssUtils {\n _firstPageStyle = ''; // 首屏样式\n _otherPageStyle = ''; // 非首屏样式\n _watcher = {}; // 监听器,用于监听生成css键值对\n\n isFinish = false; // 是否运行过Dark Mode处理逻辑(写入过非首屏样式表则表示已运行过)\n\n constructor() {}\n\n // 生成css键值对\n genCssKV(key, val) {\n this._watcher[key]?.();\n return `${key}: ${val} !important;`;\n }\n\n // 生成css,包括css选择器\n genCss(className, cssKV) {\n return `${config.mode === 'dark' ? `html.${HTML_CLASS} ` : ''}${config.cssSelectorsPrefix && `${config.cssSelectorsPrefix} `}.${className}{${cssKV}}`;\n }\n\n // 加入css\n addCss(css, isFirstPageStyle = false) {\n this[isFirstPageStyle ? '_firstPageStyle' : '_otherPageStyle'] += css;\n plugins.addCss(isFirstPageStyle);\n }\n\n // 写入样式表\n writeStyle(isFirstPageStyle = false) {\n !isFirstPageStyle && sdk.isDarkmode && (this.isFinish = true); // 在Dark Mode下一旦写入了非首屏样式表,则认为已经运行过Dark Mode处理逻辑\n\n // 获取样式表内容\n const styles = (sdk.isDarkmode ? [{\n target: this,\n key: ['_firstPageStyle', '_otherPageStyle'],\n needMediaQuery: true\n }] : []).concat([{\n target: plugins,\n key: ['firstPageStyle', 'otherPageStyle'],\n needMediaQuery: true\n }, {\n target: plugins,\n key: ['firstPageStyleNoMQ', 'otherPageStyleNoMQ'],\n needMediaQuery: false\n }]).map(({\n target,\n key: [first, other],\n needMediaQuery\n }) => {\n let styleKey = '';\n if (!isFirstPageStyle) { // 如果是写入非首屏样式表,则连同首屏样式一起写入\n target[other] = target[first] + target[other];\n target[first] = '';\n styleKey = other;\n } else {\n styleKey = first;\n }\n\n const style = target[styleKey];\n if (style) {\n target[styleKey] = ''; // 写入样式表后清空内存中的数据\n return (config.mode === 'dark' || !needMediaQuery) ? style : `@media ${MEDIA_QUERY} {${style}}`;\n }\n return '';\n }).join('');\n\n // 写入样式表\n styles && document.head.insertAdjacentHTML('beforeend', `<style type=\"text/css\">${styles}</style>`);\n }\n\n // 监听生成css键值对\n watch(key, cb) {\n this._watcher[key] = cb;\n }\n\n // 取消监听生成css键值对\n unwatch(key) {\n delete this._watcher[key];\n }\n};\n","/**\n * @name 节点相关操作工具API\n *\n * @function getChildrenAndIt 获取某个节点及它的所有子节点\n * @param {DOM Object} el 节点对象\n * @param {boolean} exceptIt 是否排除自身\n * @return {DOM Object Array} 节点对象列表\n *\n * @function hasTextNode 判断某个节点里是否包含文字节点\n * @param {DOM Object} el 节点对象\n * @return {boolean} 判断结果\n *\n * @function hasTableClass 判断table相关元素有没有指定class\n * @param {DOM Object} el 节点对象\n * @return {string | null} 判断结果,如果有,返回class对应的lm色值,否则返回null\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n sdk\n} from './global';\n\n// 获取某个节点及它的所有子节点\nexport function getChildrenAndIt(el, exceptIt = false) {\n return (exceptIt ? [] : [el]).concat(...el.querySelectorAll('*'));\n};\n\n// 判断某个节点里是否包含文字节点\nexport function hasTextNode(el) {\n // let cnt = '';\n // Array.prototype.forEach.call(el.childNodes, child => {\n // if (child.nodeType === 3) {\n // cnt += child.nodeValue.replace(/\\s/g, ''); // 不考虑空白字符\n // }\n // });\n // return cnt.length > 0;\n return el.textContent.replace(/\\s/g, '').length > 0;\n};\n\n// table的内部样式类对应的lm背景色\nconst tableClassObj = {\n 'ue-table-interlace-color-single': '#fcfcfc',\n 'ue-table-interlace-color-double': '#f7faff'\n};\n// 判断table相关元素有没有指定class\nexport function hasTableClass(el) {\n let color = null;\n\n Array.prototype.some.call(el.classList, className => {\n if (tableClassObj[className]) {\n color = tableClassObj[className];\n return true;\n }\n return false;\n });\n\n return color;\n};\n\n/**\n * @name 节点相关操作工具对象\n *\n * @class DomUtils\n *\n * @attr {number} length 要处理的节点列表长度\n * @attr {boolean} showFirstPage 是否已显示首屏\n *\n * @method set 设置要处理的节点列表\n * @param {DOM Object Array} els 要处理的节点列表\n * @return void\n *\n * @method get 获取要处理的节点列表(包含延迟节点、容器节点等逻辑)\n * @return {DOM Object Array} 要处理的节点列表\n *\n * @method delay 将所有要处理的节点转移到延迟处理队列里\n * @return void\n *\n * @method hasDelay 判断是否包含延迟处理的节点\n * @return {boolean} 判断结果\n *\n * @method addFirstPageNode 添加首屏节点\n * @param {DOM Object} el 要添加的首屏节点\n * @return void\n *\n * @method showFirstPageNodes 显示所有首屏节点\n * @return void\n *\n * @method emptyFirstPageNodes 清空记录的首屏节点\n * @return void\n *\n */\n\nexport class DomUtils {\n _els = []; // 要处理的节点列表\n _firstPageEls = []; // 首屏节点列表\n _delayEls = []; // 延迟处理的节点列表\n\n showFirstPage = false; // 是否已显示首屏\n\n constructor() {}\n\n // 要处理的节点列表长度\n get length() {\n return this._els.length;\n }\n\n // 设置要处理的节点列表\n set(els = []) {\n this._els = els;\n }\n\n // 获取要处理的节点列表(包含延迟节点、容器节点等逻辑)\n get() {\n let res = [];\n\n if (this._els.length) { // 有节点\n res = this._els;\n sdk.isDarkmode && (this._els = []);\n } else { // 如果没有节点\n if (this._delayEls.length) { // 有延迟节点,则使用延迟节点\n res = this._delayEls;\n this._delayEls = [];\n } else if (config.container) { // 没有延迟节点,但有容器,重新获取容器内的节点\n res = config.container.querySelectorAll('*');\n }\n }\n\n return res;\n }\n\n // 将所有要处理的节点转移到延迟处理队列里\n delay() {\n Array.prototype.forEach.call(this._els, el => this._delayEls.push(el)); // 转移到延迟处理的节点里\n this._els = []; // 转移后清空列表\n }\n\n // 判断是否包含延迟处理的节点\n hasDelay() {\n if (this._els.length) return false; // 有节点,即不含延迟处理的节点\n return this._delayEls.length > 0 || config.container !== null; // 否则需要判断延迟节点的列表和容器\n }\n\n // 添加首屏节点\n addFirstPageNode(el) {\n this._firstPageEls.push(el);\n }\n\n // 显示所有首屏节点\n showFirstPageNodes() {\n this._firstPageEls.forEach(el => !el.style.visibility && (el.style.visibility = 'visible')); // 显示首屏节点\n this.showFirstPage = true; // 记录为已显示首屏\n }\n\n // 清空记录的首屏节点\n emptyFirstPageNodes() {\n this._firstPageEls = [];\n }\n};\n","/**\n * @name 全局作用域\n *\n */\n\n// 常量\nimport {\n CLASS_PREFIX\n} from './constant';\n\n// 插件系统\nimport Plugins from './plugins';\nexport const plugins = new Plugins();\n\n// 文本节点队列\nimport TextNodeQueue from './textNodeQueue';\nexport const tnQueue = new TextNodeQueue(`${CLASS_PREFIX}text__`);\n\n// 需要判断位置的背景节点堆栈\nimport BgNodeStack from './bgNodeStack';\nexport const bgStack = new BgNodeStack(`${CLASS_PREFIX}bg__`);\n\n// 样式相关操作工具对象\nimport CssUtils from './cssUtils';\nexport const cssUtils = new CssUtils();\n\n// 节点相关操作工具对象\nimport {\n DomUtils\n} from './domUtils';\nexport const domUtils = new DomUtils();\n\n// sdk\nimport SDK from './sdk';\nexport const sdk = new SDK();\n","/**\n * @name 插件基类\n *\n * @class Plugin\n *\n * @attr {number} loopTimes 已遍历次数(全部节点遍历结束算一次)\n * @attr {boolean} isDarkmode 是否为Dark Mode\n *\n * @method addCss 添加样式\n * @param {string} className DOM节点类名\n * @param {Array} kvList css键值对列表\n * @param {string} kvList[0].key css属性\n * @param {string} kvList[0].value css值\n * @param {boolean} needMediaQuery 是否需要添加Dark Mode媒体查询\n *\n */\n\nimport {\n cssUtils, // 样式相关操作工具对象\n plugins, // 插件系统\n sdk\n} from './global';\n\nlet cssNeedMQ = [];\nlet cssNoMQ = [];\n\nclass Plugin {\n constructor() {}\n\n // 遍历次数(全部节点遍历结束算一次)\n get loopTimes() {\n return plugins.loopTimes;\n }\n\n // 是否为Dark Mode\n get isDarkmode() {\n return sdk.isDarkmode;\n }\n\n // 添加样式\n addCss(className, kvList, needMediaQuery = true) {\n (needMediaQuery ? cssNeedMQ : cssNoMQ).push(cssUtils.genCss(className, kvList.map(({\n key,\n value\n }) => cssUtils.genCssKV(key, value)).join('')));\n }\n}\n\n/**\n * @name 插件系统\n *\n * @class Plugins\n *\n * @attr {number} length 已挂载的插件数量\n * @attr {number} loopTimes 已遍历次数(全部节点遍历结束算一次)\n * @attr {string} firstPageStyle 首屏样式\n * @attr {string} otherPageStyle 非首屏样式\n * @attr {string} firstPageStyleNoMQ 首屏样式(不需要加媒体查询)\n * @attr {string} otherPageStyleNoMQ 非首屏样式(不需要加媒体查询)\n *\n * @method extend 挂载插件\n * @param {Function} plugin 插件构造函数\n * @return void\n *\n * @method emit 执行插件钩子\n * @param {string} name 钩子名称\n * @param {Any} args 钩子参数\n * @return void\n *\n * @method addCss 写入插件样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n * @return void\n *\n * @method resetCss 重置插件样式\n * @return void\n *\n */\n\nexport default class Plugins {\n _plugins = []; // 已挂载的插件列表\n\n length = 0; // 已挂载的插件数量\n loopTimes = 0; // 已遍历次数(全部节点遍历结束算一次)\n firstPageStyle = ''; // 首屏样式\n otherPageStyle = ''; // 非首屏样式\n firstPageStyleNoMQ = ''; // 首屏样式(不需要加媒体查询)\n otherPageStyleNoMQ = ''; // 非首屏样式(不需要加媒体查询)\n\n constructor() {}\n\n // 挂载插件\n extend(plugin) {\n this._plugins.push(new (plugin(Plugin))());\n this.length++;\n }\n\n // 执行插件钩子\n emit(name, ...args) {\n this._plugins.forEach(plugin => {\n typeof plugin[name] === 'function' && plugin[name](...args);\n });\n }\n\n // 写入插件样式\n addCss(isFirstPageStyle) {\n if (isFirstPageStyle) {\n this.firstPageStyle += cssNeedMQ.join('');\n this.firstPageStyleNoMQ += cssNoMQ.join('');\n } else {\n this.otherPageStyle += cssNeedMQ.join('');\n this.otherPageStyleNoMQ += cssNoMQ.join('');\n }\n }\n\n // 重置插件样式\n resetCss() {\n cssNeedMQ = [];\n cssNoMQ = [];\n }\n};\n","/**\n * @name 算法SDK\n *\n * @class SDK\n *\n * @attr {boolean} isDarkmode 当前是否需要运行Darkmode处理\n *\n * @method init 初始化\n * @return void\n *\n * @method convert 处理节点\n * @param {DOM Object} el 要处理的节点\n * @return {string} 处理后的css,包含css选择器\n *\n * @method getContrast 获取两个颜色的对比度\n * @param {string} colorStr1 颜色1\n * @param {string} colorStr2 颜色2\n * @return {number} 颜色对比度,取值范围为`[1, 21]`\n *\n */\n\n// 颜色操作相关API\nimport Color from 'color';\nimport {\n ColorParser,\n parseColorName,\n parseWebkitFillColorAndStrokeColor,\n mixColors,\n getColorPerceivedBrightness,\n adjustBrightnessTo\n} from './color';\n\n// 常量\nimport {\n CLASS_PREFIX,\n DM_CLASSNAME_REGEXP,\n\n COLORATTR,\n BGCOLORATTR,\n ORIGINAL_COLORATTR,\n ORIGINAL_BGCOLORATTR,\n BGIMAGEATTR,\n COMPLEMENTARY_BGIMAGECOLORATTR,\n BG_COLOR_DELIMITER,\n\n WHITE_LIKE_COLOR_BRIGHTNESS,\n MIN_LIMIT_OFFSET_BRIGHTNESS,\n MAX_LIMIT_BGCOLOR_BRIGHTNESS,\n HIGH_BGCOLOR_BRIGHTNESS,\n HIGH_BLACKWHITE_HSL_BRIGHTNESS,\n LOW_BLACKWHITE_HSL_BRIGHTNESS,\n IGNORE_ALPHA,\n\n CSS_PROP_SERIES,\n CSS_PROP_LIST,\n TABLE_NAME,\n\n IMPORTANT_REGEXP,\n\n SEMICOLON_PLACEHOLDER,\n SEMICOLON_PLACEHOLDER_REGEXP,\n\n COLOR_REGEXP,\n COLOR_REGEXP_GLOBAL\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils // 样式相关操作工具对象\n} from './global';\n\n// 节点相关操作工具API\nimport {\n getChildrenAndIt,\n hasTextNode,\n hasTableClass\n} from './domUtils';\n\nexport default class SDK {\n _idx = 0; // 索引值\n _defaultDarkTextColorRgb = null;\n _defaultDarkBgColorRgb = null;\n _defaultDarkBgColorHSL = null;\n _defaultDarkTextColorBrightness = null;\n _defaultDarkBgColorBrightness = null;\n _defaultDarkBgColorHslBrightness = null;\n _maxLimitOffsetBrightness = null;\n\n isDarkmode = false; // 当前是否需要运行Darkmode处理\n\n constructor() {}\n\n // 调整明度\n _adjustBrightness(color, el, options, isUpdate, needReset) {\n // 背景:\n // 处理原则:白背景改黑,其他高感知亮度背景调暗,低亮度适当提高亮度(感知亮度:https://www.w3.org/TR/AERT/#color-contrast)\n // 处理方法:\n // 黑白灰色(h=0,s=0)亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,做取反处理;\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,取MAX_LIMIT_BGCOLOR_BRIGHTNESS;\n // 其他亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS时,设为LOW_BLACKWHITE_HSL_BRIGHTNESS。\n\n // 字体、边框:\n // 处理原则:根据调整后的背景颜色和最小亮度差值算出字体颜色,接近白色字体颜色保持不变,带背景图片子元素字体颜色不变\n // 处理方法:亮度小于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,用(90%-该亮度),大于等于HIGH_BLACKWHITE_HSL_BRIGHTNESS则保持不变;\n\n // 字体阴影\n // 处理方法:按照背景的处理方法来处理\n\n const alpha = color.alpha();\n let newColor;\n let extStyle = '';\n\n if (options.isBgColor) { // 背景色\n if (alpha >= IGNORE_ALPHA) {\n // 如果设置背景颜色,取消背景图片的影响\n if (el[BGIMAGEATTR]) delete el[BGIMAGEATTR];\n\n // 如果有背景图片补色\n if (el[COMPLEMENTARY_BGIMAGECOLORATTR]) {\n // 背景图片补色和当前背景色一致,则无需处理\n // 根据最小可觉差Just-noticeable difference(即JND,表示人类或动物对于某一特定的感官刺激所能察觉的最小改变)和韦伯-费希纳定律,在特定条件下,人类能感知小至 0.5% - 2% 的变化,0.5%换算成对比度为1.1\n // https://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E5%8F%AF%E8%A6%BA%E5%B7%AE 最小可觉差wiki\n // https://zh.wikipedia.org/wiki/%E9%9F%8B%E4%BC%AF-%E8%B2%BB%E5%B8%8C%E7%B4%8D%E5%AE%9A%E7%90%86 韦伯-费希纳定理wiki\n if (el[COMPLEMENTARY_BGIMAGECOLORATTR] === color.toString() || this.getContrast(el[COMPLEMENTARY_BGIMAGECOLORATTR], color.toString()) < 1.1) {\n return {\n newColor: needReset ? color.toString() : '',\n extStyle,\n };\n }\n\n // 否则取消背景图片补色的影响\n getChildrenAndIt(el).forEach(dom => {\n delete dom[COMPLEMENTARY_BGIMAGECOLORATTR];\n });\n }\n }\n\n newColor = this._adjustBackgroundBrightness(color);\n\n if (!options.hasInlineColor) {\n const parentTextColorStr = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n const parentTextColor = ColorParser(parentTextColorStr);\n if (parentTextColor) {\n const ret = this._adjustBrightness(parentTextColor, el, {\n isTextColor: true,\n parentElementBgColorStr: newColor || color\n }, isUpdate, needReset);\n extStyle += cssUtils.genCssKV('color', ret.newColor || parentTextColor);\n getChildrenAndIt(el).forEach(dom => {\n dom[COLORATTR] = ret.newColor || parentTextColor;\n dom[ORIGINAL_COLORATTR] = parentTextColor;\n });\n }\n }\n } else if (options.isTextColor || options.isBorderColor) { // 字体色、边框色\n const parentElementBgColorStr = options.parentElementBgColorStr\n || (options.isTextColor && el[BGCOLORATTR])\n || config.defaultDarkBgColor;\n const parentElementBgColor = ColorParser(parentElementBgColorStr);\n\n // 无背景图片\n if (parentElementBgColor && !el[BGIMAGEATTR]) {\n newColor = this._adjustTextBrightness(color, parentElementBgColor);\n let emitNameSuffix = '';\n if (isUpdate) {\n emitNameSuffix = 'ByUpdateStyle';\n } else if (needReset) {\n emitNameSuffix = 'ByReset';\n }\n plugins.emit(`afterConvertTextColor${emitNameSuffix}`, el, {\n // fontColor: color,\n fontColor: newColor,\n bgColor: parentElementBgColor\n });\n }\n } else if (options.isTextShadow) { // 字体阴影\n // 无背景图片\n if (!el[BGIMAGEATTR]) {\n newColor = this._adjustBackgroundBrightness(color); // 按照背景色的方法来处理\n }\n }\n\n return {\n newColor: newColor && color.toString() !== newColor.toString() && newColor.alpha(alpha).rgb(),\n extStyle\n };\n }\n\n // 调整文本明度\n _adjustTextBrightness(textColor, bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n const bgColorWithOpacityPerceivedBrightness = bgColorPerceivedBrightness * bgColorAlpha\n + this._defaultDarkBgColorBrightness * (1 - bgColorAlpha);\n const textColorRgb = textColor.rgb().array();\n const textColorHSL = textColor.hsl().array();\n const textColorAlpha = textColor.alpha();\n const textPerceivedBrightness = getColorPerceivedBrightness(textColorRgb);\n const offsetPerceivedBrightness = Math.abs(bgColorWithOpacityPerceivedBrightness - textPerceivedBrightness);\n\n // 用户设置为高亮字体颜色(接近白色亮度),不处理,保持高亮\n if (textPerceivedBrightness >= WHITE_LIKE_COLOR_BRIGHTNESS) return textColor;\n\n if (offsetPerceivedBrightness > this._maxLimitOffsetBrightness\n && bgColorWithOpacityPerceivedBrightness <= this._defaultDarkBgColorBrightness + 2) {\n return adjustBrightnessTo(this._maxLimitOffsetBrightness + bgColorWithOpacityPerceivedBrightness\n , textColorRgb).alpha(textColorAlpha);\n }\n\n // 如果感知亮度差大于阈值,无需调整\n if (offsetPerceivedBrightness >= MIN_LIMIT_OFFSET_BRIGHTNESS) return textColor;\n\n if (bgColorWithOpacityPerceivedBrightness >= HIGH_BGCOLOR_BRIGHTNESS) { // 亮背景,调暗字体\n if (textColorHSL[2] > 90 - HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到降低感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessTo(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness - MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n } else { // 暗背景,调亮字体\n if (textColorHSL[2] <= HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到提高感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessTo(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness + MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n }\n }\n\n // 调整背景明度\n _adjustBackgroundBrightness(bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorHsl = bgColor.hsl().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n let newColor = bgColor;\n if ((bgColorHsl[1] === 0 && bgColorHsl[2] > HIGH_BLACKWHITE_HSL_BRIGHTNESS)\n || bgColorPerceivedBrightness > WHITE_LIKE_COLOR_BRIGHTNESS) {\n // 饱和度为0(黑白灰色),亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS或感知亮度大于WHITE_LIKE_COLOR_BRIGHTNESS(白色)时,做亮度取反处理\n newColor = Color.hsl(0, 0, Math.min(100, 100 + this._defaultDarkBgColorHslBrightness - bgColorHsl[2]));\n } else if (bgColorPerceivedBrightness > MAX_LIMIT_BGCOLOR_BRIGHTNESS) {\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,将感知亮度设为MAX_LIMIT_BGCOLOR_BRIGHTNESS\n newColor = adjustBrightnessTo(MAX_LIMIT_BGCOLOR_BRIGHTNESS, bgColorRgb).alpha(bgColorAlpha);\n // const ratio = (MAX_LIMIT_BGCOLOR_BRIGHTNESS * 1000)\n // / (bgColorRgb[0] * 299 + bgColorRgb[1] * 587 + bgColorRgb[2] * 114);\n // newColor = Color.rgb(bgColorRgb[0] * ratio, bgColorRgb[1] * ratio, bgColorRgb[2] * ratio);\n } else if (bgColorHsl[2] < LOW_BLACKWHITE_HSL_BRIGHTNESS) {\n // 亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS,将亮度设为LOW_BLACKWHITE_HSL_BRIGHTNESS,适当提高亮度\n bgColorHsl[2] = LOW_BLACKWHITE_HSL_BRIGHTNESS;\n newColor = Color.hsl(...bgColorHsl);\n }\n return newColor.alpha(bgColorAlpha).rgb();\n }\n\n // 叠加渐变色到背景色中,并更新背景色相关属性值以及文本颜色\n _updateBgWithGradient(gradientColor, el, className, cssKVList, hasInlineColor, isUpdate, needReset) {\n const newBgColor = mixColors([el[BGCOLORATTR] || config.defaultDarkBgColor, gradientColor], 'normal');\n const newOriginalBgColor = (el[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER).concat(gradientColor.toString()).join(BG_COLOR_DELIMITER);\n getChildrenAndIt(el).forEach(dom => {\n dom[BGCOLORATTR] = newBgColor;\n dom[ORIGINAL_BGCOLORATTR] = newOriginalBgColor;\n });\n const lastKV = cssKVList.slice(-1)[0];\n if (lastKV[0] === 'color') {\n const ret = this._adjustBrightness(ColorParser(parseColorName(lastKV[1])), el, {\n isBgColor: false,\n isTextShadow: false,\n isTextColor: true,\n isBorderColor: false,\n hasInlineColor\n }, isUpdate, needReset);\n if (ret.newColor) return cssUtils.genCss(className, cssUtils.genCssKV('color', ret.newColor));\n }\n return '';\n }\n\n _try(func) {\n try {\n return func();\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n }\n\n // 初始化\n init() {\n this._defaultDarkTextColorRgb = ColorParser(config.defaultDarkTextColor).rgb().array();\n this._defaultDarkBgColorRgb = ColorParser(config.defaultDarkBgColor).rgb().array();\n this._defaultDarkBgColorHSL = ColorParser(config.defaultDarkBgColor).hsl().array();\n this._defaultDarkTextColorBrightness = getColorPerceivedBrightness(this._defaultDarkTextColorRgb);\n this._defaultDarkBgColorBrightness = getColorPerceivedBrightness(this._defaultDarkBgColorRgb);\n this._defaultDarkBgColorHslBrightness = this._defaultDarkBgColorHSL[2];\n this._maxLimitOffsetBrightness = this._defaultDarkTextColorBrightness - this._defaultDarkBgColorBrightness;\n }\n\n // 处理节点\n convert(el, cssKVList, isUpdate, needReset) {\n plugins.resetCss();\n let emitNameSuffix = '';\n if (isUpdate) {\n emitNameSuffix = 'ByUpdateStyle';\n } else if (needReset) {\n emitNameSuffix = 'ByReset';\n }\n plugins.emit(`beforeConvertNode${emitNameSuffix}`, el);\n\n let css = ''; // css\n let bgCss = ''; // 文字底图css\n\n if (this.isDarkmode || isUpdate || needReset) {\n const nodeName = el.nodeName;\n\n if (config.whitelist.tagName.indexOf(nodeName) > -1) return '';\n if (config.whitelist.attribute.some(attribute => el.hasAttribute(attribute))) return '';\n\n const styles = el.style;\n\n if (!cssKVList) { // 没有传入cssKVList就从内联样式中提取\n // styles.cssText 读出来的颜色统一是rgba格式,除了用英文定义颜色(如:black、white)\n cssKVList = ((styles.cssText && styles.cssText.replace(/(\"[^;]*);([^;]*\")|('[^;]*);([^;]*')/g, `$1$3${SEMICOLON_PLACEHOLDER}$2$4`).split(';')) || []).map(cssStr => { // 将cssStr转换为[key, value],并清除各个元素的前后空白字符\n const splitIdx = cssStr.indexOf(':');\n return [cssStr.slice(0, splitIdx).toLowerCase(), cssStr.slice(splitIdx + 1).replace(SEMICOLON_PLACEHOLDER_REGEXP, ';')].map(item => (item || '').replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, ''));\n });\n }\n\n let hasInlineColor = false; // 是否有自定义字体颜色\n let hasInlineBackground = false;\n let hasInlineBackgroundImage = false;\n let elBackgroundPositionAttr = null;\n let elBackgroundSizeAttr = null;\n\n cssKVList = cssKVList.filter(([key, value]) => {\n if (key === 'color') {\n hasInlineColor = true;\n } else if (/background/i.test(key)) {\n hasInlineBackground = true;\n if (key === 'background-position') {\n elBackgroundPositionAttr = value;\n } else if (key === 'background-size') {\n elBackgroundSizeAttr = value;\n }\n }\n\n if ((/background/i.test(key) || /^(-webkit-)?border-image/.test(key)) && /url\\([^)]*\\)/i.test(value)) {\n hasInlineBackgroundImage = true;\n }\n\n // 过滤掉一些key\n return CSS_PROP_LIST.indexOf(key) > -1;\n }).sort(([key1], [key2]) => { // color属性放在最后\n if (key1 === 'color') {\n return 1;\n } else if (key1 === 'background-image' && key2 === 'background-color') { // 确保 background-image 在 background-color 后面\n return 1;\n } else if (key2.indexOf('-webkit-text') === 0) { // 把-webkit-text的属性放在最前面\n return 1;\n }\n return -1;\n });\n\n if (TABLE_NAME.indexOf(nodeName) > -1 && !hasInlineBackground) { // 如果table没有内联样式\n this._try(() => {\n let colorStr = hasTableClass(el); // 获取class对应的lm色值\n if (!colorStr) colorStr = el.getAttribute('bgcolor'); // 如果没有class则获取bgcolor的色值\n if (colorStr) { // 有色值(class对应的lm色值或者是bgcolor色值),则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.unshift(['background-color', color.toString()]);\n hasInlineBackground = true;\n }\n }\n });\n }\n\n if (nodeName === 'FONT' && !hasInlineColor) { // 如果是font标签且没有内联文本颜色样式\n this._try(() => {\n const colorStr = el.getAttribute('color'); // 获取color的色值\n if (colorStr) { // 有色值,则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.push(['color', color.toString()]);\n hasInlineColor = true;\n }\n }\n });\n }\n\n // 处理-webkit-text相关样式\n let webkitFillColor = '';\n let webkitStrokeColor = '';\n let webkitTextLen = 0;\n cssKVList.some(([key, value], idx) => this._try(() => {\n if (key.indexOf('-webkit-text') !== 0) { // 遍历到非-webkit-text样式\n webkitTextLen = idx; // 记录-webkit-text相关样式的长度\n return true; // 结束遍历\n }\n\n switch (key) {\n case '-webkit-text-fill-color':\n webkitFillColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n case '-webkit-text-stroke': { // 有-webkit-text-stroke时就不会有-webkit-text-stroke-color\n const newValue = value.split(' ');\n newValue.length === 2 && (webkitStrokeColor = parseWebkitFillColorAndStrokeColor(newValue[1]));\n break;\n }\n case '-webkit-text-stroke-color': // 有-webkit-text-stroke-color时就不会有-webkit-text-stroke\n webkitStrokeColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n }\n\n return false; // 继续遍历\n }));\n if (webkitFillColor) { // 有-webkit-text-fill-color,当做color对待\n if (hasInlineColor) { // 本来有color,替换为-webkit-text-fill-color\n cssKVList[cssKVList.length - 1] = ['-webkit-text-fill-color', webkitFillColor];\n } else { // 没有color,push一个-webkit-text-fill-color\n cssKVList.push(['-webkit-text-fill-color', webkitFillColor]);\n hasInlineColor = true;\n }\n }\n if (webkitTextLen) {\n cssKVList.splice(0, webkitTextLen); // 删掉-webkit-text相关样式\n webkitStrokeColor && cssKVList.unshift(['-webkit-text-stroke-color', webkitStrokeColor]); // 如果有-webkit-text-stroke-color,则插入到最前面\n }\n\n let dmClassName = '';\n let dmBgClassName = '';\n if ((isUpdate || needReset) && el.className && typeof el.className === 'string') {\n // 先提取dm className\n let matches = el.className.match(DM_CLASSNAME_REGEXP);\n if (matches) {\n dmClassName = matches[0];\n }\n\n // 再提取dm bg className\n matches = el.className.match(bgStack.classNameReg);\n if (matches) {\n dmBgClassName = matches[0];\n }\n }\n\n let cssKV = ''; // css键值对\n let noColor = needReset;\n noColor && cssUtils.watch('color', () => {\n noColor = false;\n cssUtils.unwatch('color');\n });\n cssKVList.forEach(([key, value]) => this._try(() => {\n const oldValue = value;\n let cssChange = false;\n\n // 找出色值来处理\n const isBgColor = CSS_PROP_SERIES.BG_COLOR.indexOf(key) > -1;\n const isTextShadow = CSS_PROP_SERIES.TEXT_SHADOW.indexOf(key) > -1;\n const textColorIdx = CSS_PROP_SERIES.TEXT_COLOR.indexOf(key);\n const isBorderColor = CSS_PROP_SERIES.BORDER_COLOR.indexOf(key) > -1;\n const isGradient = /gradient/.test(value);\n const gradientColors = [];\n let extStyle = '';\n let gradientMixColor;\n\n // 将英文定义颜色转换为rgb格式\n value = parseColorName(value, isGradient); // 渐变需要处理透明\n\n if (COLOR_REGEXP.test(value)) {\n if (isGradient) {\n // 把原渐变色取出来\n let matches = COLOR_REGEXP_GLOBAL.exec(value);\n while (matches) {\n gradientColors.push(matches[0]);\n matches = COLOR_REGEXP_GLOBAL.exec(value);\n }\n\n // 计算出一个mix颜色\n gradientMixColor = mixColors(gradientColors);\n }\n let replaceIndex = 0;\n value = value.replace(COLOR_REGEXP_GLOBAL, match => {\n // 渐变色统一改成mix纯色\n if (isGradient) {\n match = gradientMixColor;\n cssChange = true;\n }\n\n const matchColor = ColorParser(match);\n if (matchColor?.alpha() >= IGNORE_ALPHA) { // 忽略透明度低的色值\n // 使用颜色处理算法\n const ret = this._adjustBrightness(matchColor, el, {\n isBgColor,\n isTextShadow,\n isTextColor: textColorIdx > -1,\n isBorderColor,\n hasInlineColor\n }, isUpdate, needReset);\n const retColor = !hasInlineBackgroundImage && ret.newColor;\n\n extStyle += ret.extStyle;\n\n // 对背景颜色和文字颜色做继承传递,用于文字亮度计算\n if (isBgColor || textColorIdx >= 5) { // 只处理color及之后的属性\n const retColorStr = retColor ? retColor.toString() : match;\n replaceIndex === 0 && getChildrenAndIt(el).forEach(dom => {\n if (isBgColor) {\n dom[BGCOLORATTR] = retColorStr;\n dom[ORIGINAL_BGCOLORATTR] = (dom[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER).concat(match).join(BG_COLOR_DELIMITER);\n } else {\n dom[COLORATTR] = retColorStr;\n dom[ORIGINAL_COLORATTR] = match;\n }\n\n // 如果设置背景颜色,取消背景图片的影响\n const retColor = ColorParser(retColorStr);\n if (isBgColor && retColor?.alpha() >= IGNORE_ALPHA && dom[BGIMAGEATTR]) {\n delete dom[BGIMAGEATTR];\n }\n });\n }\n\n retColor && (cssChange = true);\n replaceIndex++;\n return retColor || match;\n }\n return match;\n }).replace(/\\s?!\\s?important/ig, '');\n }\n\n extStyle && (cssKV += extStyle);\n\n if (!(el instanceof SVGElement)) { // 先不处理SVG\n // 背景图片、边框图片\n const isBackgroundAttr = /^background/.test(key);\n const isBorderImageAttr = /^(-webkit-)?border-image/.test(key);\n if ((isBackgroundAttr || isBorderImageAttr) && /url\\([^)]*\\)/i.test(value)) {\n cssChange = true;\n const imgBgColor = mixColors((el[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER), 'normal').toString();\n // const imgBgColor = el[BGCOLORATTR] || config.defaultLightBgColor;\n\n // 在背景图片下加一层原背景颜色:\n // background-image使用多层背景(注意background-position也要多加一层 https://www.w3.org/TR/css-backgrounds-3/#layering);\n // border-image不支持多层背景,需要添加background-color\n value = value.replace(/^(.*?)url\\(([^)]*)\\)(.*)$/i, matches => {\n let newValue = matches;\n let tmpCssKvStr = '';\n\n if (!el[BGIMAGEATTR]) { // 避免重复set\n getChildrenAndIt(el).forEach(dom => {\n dom[BGIMAGEATTR] = true;\n });\n }\n\n // background-image\n if (isBackgroundAttr) {\n tmpCssKvStr = cssUtils.genCssKV(key, imgBgColor ? `${newValue},linear-gradient(${imgBgColor}, ${imgBgColor})` : newValue);\n if (elBackgroundPositionAttr) {\n cssKV += cssUtils.genCssKV('background-position', elBackgroundPositionAttr);\n tmpCssKvStr += cssUtils.genCssKV('background-position', imgBgColor ? `${elBackgroundPositionAttr},top left` : elBackgroundPositionAttr);\n }\n if (elBackgroundSizeAttr) {\n cssKV += cssUtils.genCssKV('background-size', elBackgroundSizeAttr);\n tmpCssKvStr += cssUtils.genCssKV('background-size', imgBgColor ? `${elBackgroundSizeAttr},100%` : elBackgroundSizeAttr);\n }\n if (!needReset) {\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n getChildrenAndIt(el).forEach(dom => {\n dom[COMPLEMENTARY_BGIMAGECOLORATTR] = imgBgColor || newValue;\n });\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr, bgStackItem => {\n const els = [bgStackItem.elOld];\n bgStackItem.el !== bgStackItem.elOld && els.push(bgStackItem.el);\n els.forEach(bgEl => { // 新老节点都要处理\n getChildrenAndIt(bgEl).forEach(dom => {\n dom[COMPLEMENTARY_BGIMAGECOLORATTR] = imgBgColor || newValue;\n });\n });\n });\n }\n }\n } else {\n // border-image元素,如果当前元素没有背景颜色,补背景颜色\n if (imgBgColor && !hasInlineBackground && !needReset) {\n tmpCssKvStr = cssUtils.genCssKV('background-image', `linear-gradient(${imgBgColor}, ${imgBgColor})`);\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr); // 背景图入栈\n }\n }\n }\n return newValue;\n });\n\n // 没有设置自定义字体颜色,则使用非 Dark Mode 下默认字体颜色\n if (!hasInlineColor) {\n const textColor = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n cssKV += cssUtils.genCssKV('color', textColor);\n getChildrenAndIt(el).forEach(dom => {\n dom[COLORATTR] = textColor;\n });\n }\n }\n }\n\n if (cssChange || needReset) {\n !isUpdate && !needReset && IMPORTANT_REGEXP.test(oldValue) && (styles[key] = oldValue.replace(IMPORTANT_REGEXP, '')); // 清除inline style的!important\n if (isGradient) {\n if (!needReset) {\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, cssUtils.genCssKV(key, value));\n if ((/^background/.test(key) && !/url\\([^)]*\\)/i.test(value))) { // 是无背景图的渐变,需要重新计算背景色\n css += this._updateBgWithGradient(gradientMixColor, el, dmBgClassName, cssKVList, hasInlineColor, isUpdate, needReset);\n }\n } else { // 否则渐变入栈\n bgStack.push(el, cssUtils.genCssKV(key, value), item => { // 渐变入栈\n if ((/^background/.test(key) && !/url\\([^)]*\\)/i.test(value))) { // 是无背景图的渐变,需要重新计算背景色\n css += this._updateBgWithGradient(gradientMixColor, el, item.className, cssKVList, hasInlineColor, isUpdate, needReset);\n }\n });\n }\n }\n } else {\n if (key === 'color') {\n noColor = false;\n cssUtils.unwatch('color');\n }\n cssKV += cssUtils.genCssKV(key, (!cssChange && needReset) ? el.style[key] : value);\n }\n }\n }));\n if (noColor) {\n cssKV += cssUtils.genCssKV('color', el.style.color || el[COLORATTR] || config.defaultDarkTextColor);\n cssUtils.unwatch('color');\n }\n\n if (cssKV) { // 有处理过或者是背景图片就加class以及css\n if (!dmClassName) {\n dmClassName = `${CLASS_PREFIX}${this._idx++}`;\n el.classList.add(dmClassName);\n }\n css += (cssKV ? cssUtils.genCss(dmClassName, cssKV) : '');\n }\n\n css += bgCss; // 追加文字底图样式,要在添加cssKV之后添加,避免被覆盖\n\n if (!isUpdate && hasTextNode(el) && !needReset) { // 如果节点里有文本,要判断是否在背景图里\n if (config.delayBgJudge) { // 延迟背景判断\n tnQueue.push(el); // 文字入队\n } else {\n bgStack.contains(el, item => {\n css += cssUtils.genCss(item.className, item.cssKV);\n typeof item.cb === 'function' && item.cb(item);\n });\n }\n }\n }\n\n plugins.emit(`afterConvertNode${emitNameSuffix}`, el);\n\n return css;\n }\n\n // 获取两个颜色的对比度\n getContrast(colorStr1, colorStr2) {\n const color1 = ColorParser(colorStr1);\n const color2 = ColorParser(colorStr2);\n return (color1 && color2) ? color1.contrast(color2) : 0;\n }\n};\n","/**\n * @name 文本节点队列\n *\n * @class TextNodeQueue\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @attr {number} length 队列长度\n *\n * @method push 文本节点入队\n * @param {DOM Object} el 文本节点对象\n * @return void\n *\n * @method forEach 遍历,遍历过的文本节点出队\n * @param {Function} callback 回调\n * @return void\n *\n * @method update 更新队列的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n * @return void\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class TextNodeQueue {\n _queue = []; // 文本节点队列,{ el, className, updated }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n }\n\n // 队列长度\n get length() {\n return this._queue.length;\n }\n\n // 文本节点入队\n push(el) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._queue.push({\n el,\n className,\n updated: !config.delayBgJudge\n });\n }\n\n // 遍历,遍历过的文本节点出队\n forEach(callback) {\n const idxStack = [];\n\n this._queue.forEach((item, idx) => {\n if (item.updated) {\n idxStack.unshift(idx);\n typeof callback && callback(item.el);\n }\n });\n\n while (idxStack.length) { // 处理完之后删除部分节点\n this._queue.splice(idxStack.shift(), 1);\n }\n }\n\n // 更新队列的节点对象,主要解决前后节点不一致的问题\n update(els) {\n this._queue.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n","/* (ignored) */"],"sourceRoot":""}
|