{"version":3,"file":"index.mjs","sources":["../src/global.constants.js","../src/color.utils.js","../src/goldenPalettes.utils.js","../src/goldenPalettes.js","../src/index.js"],"sourcesContent":["export const TwoE16 = 2 ** 16\nexport const keys = [\n  50,\n  100,\n  200,\n  300,\n  400,\n  500,\n  600,\n  700,\n  800,\n  900,\n  'A100',\n  'A200',\n  'A400',\n  'A700'\n]\nexport const defaultOptions = {\n  threshold: 128,\n  light: 200,\n  main: 500,\n  dark: 700\n}\n","/* eslint-disable no-bitwise */\nexport function RGBToHSL (rgb) {\n  const r = rgb.r / 255\n  const g = rgb.g / 255\n  const b = rgb.b / 255\n  const cmin = Math.min(r, g, b)\n  const cmax = Math.max(r, g, b)\n  const delta = cmax - cmin\n  let h = 0\n  let s = 0\n  let l = 0\n  if (delta === 0) h = 0\n  else if (cmax === r) h = ((g - b) / delta) % 6\n  else if (cmax === g) h = (b - r) / delta + 2\n  else h = (r - g) / delta + 4\n  h = Math.round(h * 60)\n  if (h < 0) h += 360\n  l = (cmax + cmin) / 2\n  s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1))\n  s = +(s * 100).toFixed(1)\n  l = +(l * 100).toFixed(1)\n  return {\n    h,\n    s,\n    l,\n    string: `hsl(${h},${s}%,${l}%)`\n  }\n}\nexport function RGBToCYMK (rgb) {\n  const r = rgb.r / 255\n  const g = rgb.g / 255\n  const b = rgb.b / 255\n  let k = Math.min(1 - r, 1 - g, 1 - b)\n  const c = parseFloat((((1 - r - k) / (1 - k) || 0) * 100).toFixed(4))\n  const m = parseFloat((((1 - g - k) / (1 - k) || 0) * 100).toFixed(4))\n  const y = parseFloat((((1 - b - k) / (1 - k) || 0) * 100).toFixed(4))\n  k *= 100\n  k = parseFloat(k.toFixed(4))\n  return {\n    c,\n    y,\n    m,\n    k,\n    string: `cymk(${c}%,${y}%,${m}%,${k}%)`\n  }\n}\nexport function hexToRgba (hex) {\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n  return result\n    ? {\n      r: parseInt(result[1], 16),\n      g: parseInt(result[2], 16),\n      b: parseInt(result[3], 16)\n    }\n    : {}\n}\nexport function normalizeRGB (rgbObj) {\n  return {\n    red: rgbObj.r / 255,\n    green: rgbObj.g / 255,\n    blue: rgbObj.b / 255,\n    alpha: 1\n  }\n}\nexport function componentToHex (c) {\n  const hex = c.toString(16)\n  return hex.length === 1 ? `0${hex}` : hex\n}\nexport function rgbToHex (r, g, b) {\n  return `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`\n}\nexport function getContrastText ({ r, g, b }, threshold) {\n  const contrast = (Math.round(r * 299) + Math.round(g * 587) + Math.round(b * 114)) / 1000\n  return contrast >= threshold ? 'black' : 'white'\n}\n\nexport function getComplementary (hex) {\n  const rgb = hexToRgba(hex)\n  let r = rgb.r / 255.0\n  let g = rgb.g / 255.0\n  let b = rgb.b / 255.0\n  const max = Math.max(r, g, b)\n  const min = Math.min(r, g, b)\n  let h\n  let s\n  const l = (max + min) / 2.0\n  if (max === min) {\n    h = 0; s = 0 // achromatic\n  } else {\n    const d = max - min\n    s = l > 0.5 ? d / (2.0 - max - min) : d / (max + min)\n    if (max === r && g >= b) {\n      h = 1.0472 * (g - b) / d\n    } else if (max === r && g < b) {\n      h = 1.0472 * (g - b) / d + 6.2832\n    } else if (max === g) {\n      h = 1.0472 * (b - r) / d + 2.0944\n    } else if (max === b) {\n      h = 1.0472 * (r - g) / d + 4.1888\n    }\n  }\n  h = h / 6.2832 * 360.0 + 0\n  // Shift hue to opposite side of wheel and convert to [0-1] value\n  h += 180\n  if (h > 360) {\n    h -= 360\n  }\n  h /= 360\n  if (s === 0) {\n    r = l; g = l; b = l // achromatic\n  } else {\n    const hue2rgb = function hue2rgb (p, q, T) {\n      let t = T\n      if (t < 0) t += 1\n      if (t > 1) t -= 1\n      if (t < 1 / 6) return p + (q - p) * 6 * t\n      if (t < 1 / 2) return q\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n      return p\n    }\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s\n    const p = 2 * l - q\n\n    r = hue2rgb(p, q, h + 1 / 3)\n    g = hue2rgb(p, q, h)\n    b = hue2rgb(p, q, h - 1 / 3)\n  }\n  r = Math.round(r * 255)\n  g = Math.round(g * 255)\n  b = Math.round(b * 255)\n  // Convert r b and g values to hex\n  const final = b | (g << 8) | (r << 16)\n  return `#${(0x1000000 | final).toString(16).substring(1)}`\n}\n","/* eslint-disable no-nested-ternary */\n// Local Functions\nfunction isWithinRange (num, max, term) {\n  if (Number.isNaN(num) || num < 0 || num > max) throw new RangeError(`${num} for ${term} is not between 0 and ${max}`)\n}\nfunction sRGB2linear (a) {\n  /* Send this function a decimal sRGB gamma encoded color value *\n   * between 0.0 and 1.0, and it returns a linearized value.     */\n  return a <= 0.04045 ? a / 12.92 : (((a + 0.055) / 1.055) ** 2.4)\n}\nfunction forwardTransformer (a) {\n  /* Computes f(t) for Forward Transformation where t is of the form A/normalized_A and the *\n   * denominator term correspond to CIEXYZ tristimulus values of the reference white points */\n  const b = 6 / 29\n  const c = 1 / (3 * (b ** 2))\n  return a > (b ** 3) ? (a ** (1 / 3)) : c * a + 4 / 29\n}\n// Exported Functions\nexport function minOfMax (a, b, c) {\n  return Math.min(Math.max(a, b), c)\n}\nexport function linear2sRGB (a) {\n  // Converts linear channels to their sRGB counterparts.\n  return a <= 0.0031308 ? 12.92 * a : 1.055 * (a ** (1 / 2.4)) - 0.055\n}\nexport function reverseTransformer (a) {\n  // The function for reversing transformation.\n  const b = 6 / 29\n  const c = 3 * (b ** 2)\n  return a > b ? (a ** 3) : c * (a - 4 / 29)\n}\nexport function getHueDegrees (a, b) {\n  // This function returns Hue Degrees for given coordinates in LAB Color Space.\n  if (Math.abs(a) < 1e-4 && Math.abs(b) < 1e-4) return 0\n  const A = 180 * Math.atan2(a, b) / Math.PI\n  return A >= 0 ? A : A + 360\n}\nexport class ConstrainRGBA {\n  constructor (a, b, c, D) {\n    const d = D === undefined ? 1 : D\n    this.red = a\n    this.green = b\n    this.blue = c\n    this.alpha = d\n    isWithinRange(a, 1, 'red')\n    isWithinRange(b, 1, 'green')\n    isWithinRange(c, 1, 'blue')\n    isWithinRange(d, 1, 'alpha')\n  }\n}\nexport class ConstrainHCLA {\n  constructor (a, b, c, D) {\n    const d = D === undefined ? 1 : D\n    this.g = a\n    this.T = b\n    this.hue = c\n    this.alpha = d\n    isWithinRange(a, Number.MAX_VALUE, 'lightness')\n    isWithinRange(b, Number.MAX_VALUE, 'chroma')\n    isWithinRange(c, 360, 'hue')\n    isWithinRange(d, 1, 'alpha')\n  }\n}\nexport function computeLABterms (a) {\n  // Compute the Polar Parameters for Chroma (C*) and Hue (h_ab) in the CIELAB Space\n  return new ConstrainHCLA(\n    a.g,\n    Math.sqrt((a.A ** 2) + (a.B ** 2)), // Chroma\n    (180 * Math.atan2(a.B, a.A) / Math.PI + 360) % 360, // Hue\n    a.alpha\n  )\n}\nexport class ValidateBounds {\n  constructor (a, b, c, D) {\n    const d = D === undefined ? 1 : D\n    this.g = a\n    this.A = b\n    this.B = c\n    this.alpha = d\n    isWithinRange(a, Number.MAX_VALUE, 'lightness')\n    isWithinRange(d, 1, 'alpha')\n  }\n}\nexport function ConvertToLAB (rgb) {\n  const red = sRGB2linear(rgb.red)\n  const green = sRGB2linear(rgb.green)\n  const blue = sRGB2linear(rgb.blue)\n  const D65 = 0.2126729 * red + 0.7151522 * green + 0.072175 * blue // Reference\n  return new ValidateBounds(\n    116 * forwardTransformer(D65) - 16,\n    500 *\n      (forwardTransformer((0.4124564 * red + 0.3575761 * green + 0.1804375 * blue) / 0.95047) - forwardTransformer(D65)),\n    200 *\n      (forwardTransformer(D65) - forwardTransformer((0.0193339 * red + 0.119192 * green + 0.9503041 * blue) / 1.08883)),\n    rgb.alpha\n  )\n}\n","/* eslint-disable no-nested-ternary */\nimport { normalizeRGB, hexToRgba } from './color.utils.js'\nimport {\n  ConstrainRGBA, minOfMax, ValidateBounds, ConvertToLAB, ConstrainHCLA, computeLABterms, linear2sRGB, reverseTransformer, getHueDegrees\n} from './goldenPalettes.utils.js'\n// Local Constants\nconst Kd = [\n  [\n    new ValidateBounds(94.67497003305085, 7.266715066863771, 1.000743882272359),\n    new ValidateBounds(86.7897416761699, 18.370736761658012, 4.23637133971424),\n    new ValidateBounds(72.0939162832561, 31.7948058298117, 13.2972443996896),\n    new ValidateBounds(61.79353370051851, 44.129498163764545, 20.721477326799608),\n    new ValidateBounds(57.194195398949574, 59.6450006197361, 34.999830012940194),\n    new ValidateBounds(55.603951071861374, 66.01287384845483, 47.67169313982772),\n    new ValidateBounds(51.66348502954747, 64.7487785020625, 43.244876694855286),\n    new ValidateBounds(47.09455666350969, 62.29836039074277, 40.67775424698388),\n    new ValidateBounds(43.77122063388739, 60.28633509183384, 40.31444686692952),\n    new ValidateBounds(39.555187078007386, 58.703681355389975, 41.66495027798629)\n  ],\n  [\n    new ValidateBounds(92.68053776327665, 9.515385232804263, -0.8994072969754852),\n    new ValidateBounds(81.86756643628922, 25.05688089723257, -1.9475235115390621),\n    new ValidateBounds(70.90987389545768, 42.21705257720526, -1.095154624057959),\n    new ValidateBounds(61.08140805216186, 58.871233307587204, 2.1008764804626434),\n    new ValidateBounds(54.97970219986448, 68.56530938366889, 7.327430728560569),\n    new ValidateBounds(50.872250340749176, 74.60459195925529, 15.353576256896073),\n    new ValidateBounds(47.27738650144558, 70.77855776427805, 11.70434273264508),\n    new ValidateBounds(42.58424189486517, 65.5411953138309, 7.595596439803797),\n    new ValidateBounds(37.977492407254836, 60.74362621842075, 2.9847124951453474),\n    new ValidateBounds(29.699290034849604, 51.90485023721311, -4.830186634107636)\n  ],\n  [\n    new ValidateBounds(92.4362655169016, 7.542927467702299, -6.039842848605881),\n    new ValidateBounds(81.07399776904751, 19.563870217805036, -15.719625491986044),\n    new ValidateBounds(68.71394717711831, 33.79992812490556, -26.49539972339321),\n    new ValidateBounds(56.596161226236305, 47.5856631835152, -36.480816605410915),\n    new ValidateBounds(48.002791217624434, 57.30866443934879, -43.2561127152548),\n    new ValidateBounds(40.66211534692161, 64.01910773818436, -48.05930162591041),\n    new ValidateBounds(37.690702208992185, 61.13762767732481, -49.384803274243026),\n    new ValidateBounds(33.56291870731981, 57.637381239254104, -51.39557249855828),\n    new ValidateBounds(29.865391314234515, 54.29737439901333, -52.6601973712463),\n    new ValidateBounds(23.16724235420436, 48.51764437280498, -55.16267949015293)\n  ],\n  [\n    new ValidateBounds(92.49103426017201, 4.712320025752947, -6.532868071709763),\n    new ValidateBounds(81.24668319505597, 11.50642734909485, -16.666600637245367),\n    new ValidateBounds(68.61488216554629, 20.395329051982824, -28.522018851715416),\n    new ValidateBounds(55.60369793053023, 30.933537768905005, -41.16439122358484),\n    new ValidateBounds(45.834566190969426, 39.28806272235674, -50.523322052772635),\n    new ValidateBounds(36.608620229358664, 47.29686002828143, -59.111766586186846),\n    new ValidateBounds(34.189791237562616, 46.60426065139123, -59.53961627676729),\n    new ValidateBounds(30.52713367338361, 46.01498224754519, -60.19975052509064),\n    new ValidateBounds(27.44585524877222, 44.96180431854785, -60.46395810756433),\n    new ValidateBounds(21.98627670328218, 44.29296076245473, -60.93653655172098)\n  ],\n  [\n    new ValidateBounds(92.86314411983918, 1.5318147061061937, -6.025243528950552),\n    new ValidateBounds(81.8348073705298, 4.460934955458907, -15.873561009736136),\n    new ValidateBounds(69.7796913795672, 7.9043652558912765, -26.3170846346932),\n    new ValidateBounds(57.48786519938736, 12.681019504822533, -37.23202012914528),\n    new ValidateBounds(47.74592578811101, 18.520799302452374, -46.47540679000397),\n    new ValidateBounds(38.334403614455404, 25.57700668170812, -55.28224153299287),\n    new ValidateBounds(35.15116453901552, 26.231812080381168, -54.53700978785404),\n    new ValidateBounds(31.080429988007957, 27.07394930110124, -53.97505274579958),\n    new ValidateBounds(27.026672080454922, 28.165266427558983, -53.28987325482218),\n    new ValidateBounds(19.751201587921678, 30.60784576895101, -52.13866519297474)\n  ],\n  [\n    new ValidateBounds(94.70682457348717, -2.835484735987326, -6.978044694792707),\n    new ValidateBounds(86.8839842970016, -5.16908728759552, -17.88561192754956),\n    new ValidateBounds(79.0451532401558, -6.817753527015746, -28.968537490432176),\n    new ValidateBounds(71.15083697242613, -5.994763756850707, -39.72549451158927),\n    new ValidateBounds(65.48106058907833, -2.735745792537936, -48.15471238926561),\n    new ValidateBounds(60.43009440850862, 2.079928897321559, -55.10935847069616),\n    new ValidateBounds(55.62267676922188, 4.998684384486918, -55.02164729429915),\n    new ValidateBounds(49.27006645904875, 8.470398370314381, -54.494796838457546),\n    new ValidateBounds(43.16828856394358, 11.968483076143844, -53.972567377977974),\n    new ValidateBounds(32.17757793894193, 18.96054990229354, -53.45146365049088)\n  ],\n  [\n    new ValidateBounds(95.35713467762652, -4.797149155388203, -6.550002550504308),\n    new ValidateBounds(88.27942649540043, -10.836006614583892, -16.359361821940375),\n    new ValidateBounds(81.10009044900976, -15.323054522981716, -26.419121191320947),\n    new ValidateBounds(74.44713958259777, -16.664432625362547, -35.19702686900037),\n    new ValidateBounds(69.87836465637318, -14.291515332054693, -41.827430329755174),\n    new ValidateBounds(65.68851259178913, -9.612635721963692, -47.34091616039191),\n    new ValidateBounds(60.88357994308973, -7.252819027184943, -46.67753731595634),\n    new ValidateBounds(54.26166495426166, -3.8141836897908066, -45.97939475762498),\n    new ValidateBounds(48.10661895072673, -1.378998784464347, -44.34466750206778),\n    new ValidateBounds(36.34401147057282, 5.067812404713545, -43.11786257561915)\n  ],\n  [\n    new ValidateBounds(95.69295154599753, -6.898716127301141, -3.994284229654421),\n    new ValidateBounds(89.52842524059004, -16.412398289601725, -9.260466069266693),\n    new ValidateBounds(83.32031214655748, -24.83036840728098, -14.568673583304603),\n    new ValidateBounds(77.35338313752958, -30.201708572215104, -18.92358284721101),\n    new ValidateBounds(73.45322093857781, -31.88590390189383, -21.130459992513686),\n    new ValidateBounds(69.97638465064783, -30.679850324547953, -23.186685661136707),\n    new ValidateBounds(64.44491716553777, -29.08337434584457, -21.154935769156214),\n    new ValidateBounds(56.99816432961103, -27.31081477279451, -17.86988815767443),\n    new ValidateBounds(49.75464182255671, -25.335383503694242, -15.024722591662787),\n    new ValidateBounds(36.52725894264432, -22.129641744194515, -9.176159146894303)\n  ],\n  [\n    new ValidateBounds(94.18453941589918, -6.08351703428972, -1.5488916051161983),\n    new ValidateBounds(85.68177077414457, -15.333179440298606, -2.8519825761476048),\n    new ValidateBounds(76.85067847190405, -24.844059173189713, -3.8750785132192656),\n    new ValidateBounds(68.02762242570138, -32.566861154120716, -4.015231084407134),\n    new ValidateBounds(61.667257304525464, -36.06752603289354, -3.4734046401753815),\n    new ValidateBounds(55.67310397390196, -36.66069960626328, -2.125617915169653),\n    new ValidateBounds(51.059149495197715, -34.65019160301408, -1.3910484300432513),\n    new ValidateBounds(45.269081019218405, -32.13244775422941, -0.4526371852697775),\n    new ValidateBounds(39.36899076059384, -29.25264468583161, -0.03562564673170732),\n    new ValidateBounds(28.58363043701477, -24.585465516136413, 1.8037402162492389)\n  ],\n  [\n    new ValidateBounds(95.30530183565223, -6.430415645739263, 4.292950594459599),\n    new ValidateBounds(88.49014579152143, -15.23147744952702, 10.848261177683138),\n    new ValidateBounds(81.22616870575376, -24.993886168551583, 18.144696803330884),\n    new ValidateBounds(74.30361721558802, -35.56088696067356, 26.781515251907727),\n    new ValidateBounds(69.0430995277442, -42.61556126595995, 33.17109563126665),\n    new ValidateBounds(63.977421814072926, -48.54292673319982, 39.73241526342939),\n    new ValidateBounds(58.777960853461366, -46.1153692478013, 37.838910745225576),\n    new ValidateBounds(52.41108688974904, -43.21761792485762, 35.62250659009424),\n    new ValidateBounds(46.2813873076426, -40.25816227675361, 33.32343229338761),\n    new ValidateBounds(34.685655305814514, -34.75343878510312, 28.866739034359767)\n  ],\n  [\n    new ValidateBounds(96.70518169355954, -4.929987845095463, 6.397084523168894),\n    new ValidateBounds(91.66416061199438, -12.057032041945693, 16.054604579275143),\n    new ValidateBounds(86.2244395865449, -19.613646834080622, 26.384906423454236),\n    new ValidateBounds(80.83404879636919, -27.080171840756893, 37.378493742021334),\n    new ValidateBounds(76.79543725108964, -32.76659719736752, 45.912190572444445),\n    new ValidateBounds(72.90025297028019, -37.549139223927384, 53.51959496103027),\n    new ValidateBounds(67.21532310272079, -36.56304870773486, 50.49629051268894),\n    new ValidateBounds(59.91051142210195, -35.77011466063357, 46.56465847976187),\n    new ValidateBounds(52.51015841084511, -34.47903440699235, 42.20723868724268),\n    new ValidateBounds(39.41191983353878, -32.80460974352642, 35.255490585630014)\n  ],\n  [\n    new ValidateBounds(97.99506057883428, -4.059632482741494, 9.355797602381521),\n    new ValidateBounds(94.80926235976536, -9.237091467352855, 23.230650064824985),\n    new ValidateBounds(91.85205843526167, -15.053917327011114, 38.86115182206598),\n    new ValidateBounds(88.75812142080242, -19.542900400164097, 53.71785675783709),\n    new ValidateBounds(86.27404180729515, -22.173992891121596, 63.978639065232514),\n    new ValidateBounds(84.20566835376492, -24.270643520989342, 72.79624067033038),\n    new ValidateBounds(78.27915100603997, -21.181850056402496, 68.82763412297965),\n    new ValidateBounds(70.82385811892824, -17.788148932525672, 64.00327817988128),\n    new ValidateBounds(62.936867012868035, -13.697412111684903, 58.513000509287835),\n    new ValidateBounds(49.498610881452535, -6.485230564384715, 49.67432722833751)\n  ],\n  [\n    new ValidateBounds(98.93885129752759, -3.0098470288543178, 10.765736833790008),\n    new ValidateBounds(97.22689784824074, -6.174599368734491, 26.22932417355146),\n    new ValidateBounds(95.58092947828766, -8.907132848473886, 43.56297291446567),\n    new ValidateBounds(94.09009515702486, -10.509628942710735, 60.20019514231188),\n    new ValidateBounds(93.06546746683087, -11.008558476013008, 71.76500826005477),\n    new ValidateBounds(92.12975017760128, -10.830023094868302, 80.9090559640089),\n    new ValidateBounds(87.12188349168609, -2.3764300099239355, 78.14868195373407),\n    new ValidateBounds(80.96200442419905, 8.849333792729064, 75.05050700092679),\n    new ValidateBounds(75.00342770718086, 20.340173566879283, 72.24841925958934),\n    new ValidateBounds(65.48207757431567, 39.647064970476094, 68.34872841768654)\n  ],\n  [\n    new ValidateBounds(97.5642392074337, -1.445525639405032, 11.881254316297674),\n    new ValidateBounds(93.67057953749456, -1.8693096862072434, 30.02888670415651),\n    new ValidateBounds(89.94571492804107, -1.0224503814769692, 49.649542361642276),\n    new ValidateBounds(86.71009164153801, 1.0496066396428194, 68.77377342409739),\n    new ValidateBounds(83.78773993319211, 5.248231820098425, 78.92920457852716),\n    new ValidateBounds(81.52191382080228, 9.403655370707199, 82.69257112982746),\n    new ValidateBounds(78.17240973804697, 16.628512886531887, 81.09358318806208),\n    new ValidateBounds(73.80899654381052, 26.53614315250874, 78.21754052181723),\n    new ValidateBounds(70.1134511665764, 35.3007623359744, 75.87510992138593),\n    new ValidateBounds(63.86460405565717, 50.94648214505959, 72.17815682124423)\n  ],\n  [\n    new ValidateBounds(96.30459517801387, 0.923151172282477, 10.598439446083074),\n    new ValidateBounds(90.68320082865087, 4.103774964681062, 26.485793721916128),\n    new ValidateBounds(85.00055287186233, 9.047181758866651, 44.51407622580792),\n    new ValidateBounds(79.42428495742953, 16.452610724439875, 62.08721739074201),\n    new ValidateBounds(75.47792699289774, 23.395742928451867, 72.64347611236501),\n    new ValidateBounds(72.04246561548388, 30.681921012382098, 77.08579298904603),\n    new ValidateBounds(68.94724338946975, 35.22014778433863, 74.88425044595111),\n    new ValidateBounds(64.83017495535229, 40.91200730099703, 71.9596053545428),\n    new ValidateBounds(60.8534207471871, 46.41483590510681, 69.18061963415211),\n    new ValidateBounds(54.77571742962287, 55.282751019360035, 65.10193403547922)\n  ],\n  [\n    new ValidateBounds(93.69219844671957, 5.763979334358293, 3.1700162796469034),\n    new ValidateBounds(86.04629434276428, 15.750843803958192, 14.828476927090994),\n    new ValidateBounds(77.54010042938336, 27.90113842540043, 25.99645229289065),\n    new ValidateBounds(69.74095456707857, 41.14487377552256, 39.443320178900024),\n    new ValidateBounds(64.37085344539341, 51.890379620443575, 50.81312471046415),\n    new ValidateBounds(60.06780837277435, 61.65258736118817, 61.54771829165221),\n    new ValidateBounds(57.28707915232363, 60.3250664308812, 60.07341536376447),\n    new ValidateBounds(53.810052616293845, 58.36760943780162, 58.19586806694884),\n    new ValidateBounds(50.301352405105874, 56.40104898089937, 55.924141992404344),\n    new ValidateBounds(43.86477994548343, 52.970887703910726, 52.30067989225532)\n  ],\n  [\n    new ValidateBounds(93.29864888069987, 0.9915456090475727, 1.442353076378411),\n    new ValidateBounds(82.80884359004081, 3.116221903342209, 3.3523059451463055),\n    new ValidateBounds(70.95493047668185, 5.469742193344784, 5.449009494553492),\n    new ValidateBounds(58.712934619103066, 7.990991075363385, 8.352488495367627),\n    new ValidateBounds(49.150208552875895, 10.570984981000397, 10.831440151197924),\n    new ValidateBounds(39.63200151837749, 13.138881961627241, 13.531574711511885),\n    new ValidateBounds(35.600996682015754, 12.40352847757295, 12.10432183902449),\n    new ValidateBounds(30.084271265759952, 11.317148149878081, 10.547484304296217),\n    new ValidateBounds(24.555014696416578, 10.816613316782464, 8.506555306791984),\n    new ValidateBounds(18.35055226514404, 10.225725550338765, 7.058582769882571)\n  ],\n  [\n    new ValidateBounds(98.27202740980219, -1.6418393644634932e-5, 6.567357457853973e-6),\n    new ValidateBounds(96.53749336548567, -1.616917905122861e-5, 6.467671598286984e-6),\n    new ValidateBounds(94.0978378987781, -1.581865383126768e-5, 6.327461532507073e-6),\n    new ValidateBounds(89.17728373493613, -1.511167768697419e-5, 6.044671074789676e-6),\n    new ValidateBounds(76.61119902231323, -1.330620591488696e-5, 5.322482343750323e-6),\n    new ValidateBounds(65.11424774127516, -1.1654345155598378e-5, 4.661738062239351e-6),\n    new ValidateBounds(49.238989620828065, -9.373417431124409e-6, 3.7493669724497636e-6),\n    new ValidateBounds(41.14266843804848, -8.210152946386273e-6, 3.2840611896567395e-6),\n    new ValidateBounds(27.974857206003705, -6.318226192236764e-6, 2.5272904768947058e-6),\n    new ValidateBounds(12.740011331302725, -4.129311698131133e-6, 1.6517246792524531e-6)\n  ],\n  [\n    new ValidateBounds(94.27665212516236, -0.637571046109342, -1.313515378996688),\n    new ValidateBounds(85.77788001492097, -2.2777811084512822, -3.0177758416151557),\n    new ValidateBounds(76.12296325015231, -3.401502988883809, -5.16867892977908),\n    new ValidateBounds(66.16340108908365, -4.819627183079045, -7.520697631614404),\n    new ValidateBounds(58.35752478513645, -5.7195089100892105, -9.165988916613488),\n    new ValidateBounds(50.70748082202715, -6.837992965799455, -10.956055112409357),\n    new ValidateBounds(44.85917867647632, -6.411990559239578, -9.74511982878765),\n    new ValidateBounds(36.92458930566504, -5.319878610845596, -8.341943474561553),\n    new ValidateBounds(29.115334784637618, -4.168907828645069, -6.8629962199973304),\n    new ValidateBounds(19.958338450799914, -3.3116721453186617, -5.4486142104736786)\n  ]\n]\nexport const KdA = [\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF8A80'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF5252'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF1744'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#D50000')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF80AB'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF4081'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#F50057'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#C51162')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#EA80FC'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#E040FB'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#D500F9'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#AA00FF')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#B388FF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#7C4DFF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#651FFF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#6200EA')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#8C9EFF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#536DFE'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#3D5AFE'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#304FFE')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#82B1FF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#448AFF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#2979FF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#2962FF')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#80D8FF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#40C4FF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#00B0FF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#0091EA')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#84FFFF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#18FFFF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#00E5FF'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#00B8D4')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#A7FFEB'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#64FFDA'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#1DE9B6'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#00BFA5')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#B9F6CA'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#69F0AE'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#00E676'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#00C853')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#CCFF90'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#B2FF59'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#76FF03'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#64DD17')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#F4FF81'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#EEFF41'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#C6FF00'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#AEEA00')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFFF8D'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFFF00'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFEA00'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFD600')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFE57F'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFD740'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFC400'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFAB00')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFD180'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FFAB40'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF9100'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF6D00')))\n  ],\n  [\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF9E80'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF6E40'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#FF3D00'))),\n    new ConvertToLAB(normalizeRGB(hexToRgba('#DD2C00')))\n  ]\n]\nexport const Ld = [\n  2.048875457,\n  5.124792061,\n  8.751659557,\n  12.07628774,\n  13.91449542,\n  15.92738893,\n  15.46585818,\n  15.09779227,\n  15.13738673,\n  15.09818372\n]\nexport const Md = [\n  1.762442714,\n  4.213532634,\n  7.395827458,\n  11.07174158,\n  13.89634504,\n  16.37591477,\n  16.27071136,\n  16.54160806,\n  17.35916727,\n  19.88410864\n]\n// Local Functions\nfunction paletteGenerator (a, B, accent) {\n  const refPalletes = accent ? KdA : Kd\n  const b = B === undefined ? refPalletes : B\n  let d = b[0]; let e = -1\n  if (!b.length || !b[0].length) throw Error('Invalid golden palettes')\n  for (let c = Infinity, l = 0; l < b.length; l += 1) {\n    for (let h = 0; h < b[l].length && c > 0; h += 1) {\n      let g = b[l][h]\n      const f = (g.g + a.g) / 2\n      let m = Math.sqrt((g.A ** 2) + (g.B ** 2))\n      let n = Math.sqrt((a.A ** 2) + (a.B ** 2))\n      let u = (m + n) / 2\n      u = 0.5 *\n        (1 -\n          Math.sqrt((u ** 7) / ((u ** 7) + (25 ** 7))))\n      let q = g.A * (1 + u)\n      let p = a.A * (1 + u)\n      let r = Math.sqrt((q ** 2) + (g.B ** 2))\n      let t = Math.sqrt((p ** 2) + (a.B ** 2))\n      u = t - r\n      const v = (r + t) / 2\n      q = getHueDegrees(g.B, q)\n      p = getHueDegrees(a.B, p)\n      r = 2 *\n        Math.sqrt(r * t) *\n        Math.sin(\n          (Math.abs(m) < 1e-4 || Math.abs(n) < 1e-4\n            ? 0\n            : Math.abs(p - q) <= 180\n              ? p - q\n              : p <= q ? p - q + 360 : p - q - 360) /\n            2 *\n            Math.PI /\n            180\n        )\n      m = Math.abs(m) < 1e-4 || Math.abs(n) < 1e-4\n        ? 0\n        : Math.abs(p - q) <= 180\n          ? (q + p) / 2\n          : q + p < 360 ? (q + p + 360) / 2 : (q + p - 360) / 2\n      n = 1 + 0.045 * v\n      t = 1 +\n        0.015 *\n          v *\n          (1 -\n            0.17 * Math.cos((m - 30) * Math.PI / 180) +\n            0.24 * Math.cos(2 * m * Math.PI / 180) +\n            0.32 * Math.cos((3 * m + 6) * Math.PI / 180) -\n            0.2 * Math.cos((4 * m - 63) * Math.PI / 180))\n      g = Math.sqrt(\n        (\n          ((a.g - g.g) /\n            (1 +\n              0.015 *\n                ((f - 50) ** 2) /\n                Math.sqrt(20 + ((f - 50) ** 2)))) **\n          2\n        ) +\n          ((u / (1 * n)) ** 2) +\n          ((r / (1 * t)) ** 2) +\n          u /\n            (1 * n) *\n            Math.sqrt((v ** 7) / ((v ** 7) + (25 ** 7))) *\n            Math.sin(\n              60 * Math.exp(-(((m - 275) / 25) ** 2)) * Math.PI / 180\n            ) *\n            -2 *\n            (r / (1 * t))\n      )\n      // eslint-disable-next-line\n      g < c && ((c = g), (d = b[l]), (e = h));\n    }\n  }\n  return {\n    fd: d,\n    ed: e\n  }\n}\n// Exported Functions\nexport function createPallete (a, accent) {\n  const refPalletes = accent ? KdA : Kd\n  const refColor = accent ? 2 : 5\n  let b\n  b = b === undefined ? refPalletes : b\n  const c = ConvertToLAB(a)\n  let\n    d = paletteGenerator(c, b, accent)\n  b = d.fd\n  d = d.ed\n  const e = b[d]\n  const l = computeLABterms(e)\n  const h = computeLABterms(c)\n  const g = computeLABterms(b[refColor]).T < 30\n  const f = l.g - h.g\n  const m = l.T - h.T\n  const n = l.hue - h.hue\n  const u = Ld[d]\n  const q = Md[d]\n  let p = 100\n  return b.map((R, T) => {\n    let r = R; let t = T\n    // eslint-disable-next-line\n    if (r === e) return (p = Math.max (h.g - 1.7, 0)), a;\n    r = computeLABterms(r)\n    let v = r.g - Ld[t] / u * f\n    v = Math.min(v, p)\n    t = new ConstrainHCLA(\n      minOfMax(v, 0, 100),\n      Math.max(0, g ? r.T - m : r.T - m * Math.min(Md[t] / q, 1.25)),\n      (r.hue - n + 360) % 360\n    )\n    p = Math.max(t.g - 1.7, 0)\n    r = t.hue * Math.PI / 180\n    t = new ValidateBounds(t.g, t.T * Math.cos(r), t.T * Math.sin(r), t.alpha)\n    let z = (t.g + 16) / 116\n    r = 0.95047 * reverseTransformer(z + t.A / 500)\n    v = 1 * reverseTransformer(z)\n    z = 1.08883 * reverseTransformer(z - t.B / 200)\n    return new ConstrainRGBA(\n      minOfMax(linear2sRGB(3.2404542 * r + -1.5371385 * v + -0.4985314 * z), 0, 1),\n      minOfMax(linear2sRGB(-0.969266 * r + 1.8760108 * v + 0.041556 * z), 0, 1),\n      minOfMax(linear2sRGB(0.0556434 * r + -0.2040259 * v + 1.0572252 * z), 0, 1),\n      t.alpha\n    )\n  })\n}\n","import { keys, defaultOptions } from './global.constants.js'\nimport {\n  normalizeRGB, rgbToHex, hexToRgba, RGBToCYMK, RGBToHSL, getContrastText, getComplementary\n} from './color.utils.js'\nimport { createPallete } from './goldenPalettes.js'\nexport default class Matercolor {\n  constructor (color, options) {\n    this.color = color\n    const complementary = getComplementary(color)\n    this.complementary = () => complementary\n    this.options = options\n      ? Object.assign(defaultOptions, options)\n      : defaultOptions\n    const paletteObject = {}\n    this.palette = () => paletteObject\n    this.getPalette()\n  }\n\n  shades (paletteType) {\n    return {\n      light: this.palette()[paletteType][this.options.light],\n      main: this.palette()[paletteType][this.options.main],\n      dark: this.palette()[paletteType][this.options.dark]\n    }\n  }\n\n  accents (paletteType) {\n    return {\n      A100: this.palette()[paletteType].A100,\n      A200: this.palette()[paletteType].A200,\n      A400: this.palette()[paletteType].A400,\n      A700: this.palette()[paletteType].A700\n    }\n  }\n\n  getPalette () {\n    this.palette().primary = {}\n    this.palette().secondary = {}\n    const primaryPalette = createPallete(\n      normalizeRGB(hexToRgba(this.color))\n    ).map(u => rgbToHex(\n      Math.round(u.red * 255),\n      Math.round(u.green * 255),\n      Math.round(u.blue * 255)\n    ))\n    const primaryAccents = createPallete(\n      normalizeRGB(hexToRgba(this.color)),\n      true\n    ).map(u => rgbToHex(\n      Math.round(u.red * 255),\n      Math.round(u.green * 255),\n      Math.round(u.blue * 255)\n    ))\n    const secondaryPalette = createPallete(\n      normalizeRGB(hexToRgba(this.complementary()))\n    ).map(u => rgbToHex(\n      Math.round(u.red * 255),\n      Math.round(u.green * 255),\n      Math.round(u.blue * 255)\n    ))\n    const secondaryAccents = createPallete(\n      normalizeRGB(hexToRgba(this.complementary())),\n      true\n    ).map(u => rgbToHex(\n      Math.round(u.red * 255),\n      Math.round(u.green * 255),\n      Math.round(u.blue * 255)\n    ))\n    primaryPalette.push(...primaryAccents)\n    for (let i = 0; i < keys.length; i += 1) {\n      const colorObject = {}\n      colorObject.hex = primaryPalette[i]\n      colorObject.rgb = hexToRgba(primaryPalette[i])\n      colorObject.rgb.string = `rgb(${colorObject.rgb.r},${colorObject.rgb.g},${colorObject.rgb.b})`\n      colorObject.hsl = RGBToHSL(colorObject.rgb)\n      colorObject.cymk = RGBToCYMK(colorObject.rgb)\n      colorObject.contrastText = getContrastText(\n        colorObject.rgb,\n        this.options.threshold\n      )\n      this.palette().primary[keys[i]] = colorObject\n    }\n    secondaryPalette.push(...secondaryAccents)\n    for (let i = 0; i < keys.length; i += 1) {\n      const colorObject = {}\n      colorObject.hex = secondaryPalette[i]\n      colorObject.rgb = hexToRgba(secondaryPalette[i])\n      colorObject.rgb.string = `rgb(${colorObject.rgb.r},${colorObject.rgb.g},${colorObject.rgb.b})`\n      colorObject.hsl = RGBToHSL(colorObject.rgb)\n      colorObject.cymk = RGBToCYMK(colorObject.rgb)\n      colorObject.contrastText = getContrastText(\n        colorObject.rgb,\n        this.options.threshold\n      )\n      this.palette().secondary[keys[i]] = colorObject\n    }\n  }\n}\n"],"names":["keys","defaultOptions","threshold","light","main","dark","RGBToHSL","rgb","r","g","b","cmin","Math","min","cmax","max","delta","h","s","l","round","abs","toFixed","string","RGBToCYMK","k","c","parseFloat","m","y","hexToRgba","hex","result","exec","parseInt","normalizeRGB","rgbObj","red","green","blue","alpha","componentToHex","toString","length","rgbToHex","getContrastText","isWithinRange","num","term","Number","isNaN","RangeError","sRGB2linear","a","forwardTransformer","minOfMax","linear2sRGB","reverseTransformer","getHueDegrees","A","atan2","PI","ConstrainRGBA","D","d","undefined","this","ConstrainHCLA","T","hue","MAX_VALUE","computeLABterms","sqrt","B","ValidateBounds","ConvertToLAB","D65","Kd","KdA","Ld","Md","createPallete","accent","refColor","e","Error","Infinity","f","n","u","q","p","t","v","sin","cos","exp","fd","ed","paletteGenerator","map","R","z","Matercolor","color","options","complementary","hue2rgb","substring","getComplementary","Object","assign","paletteObject","palette","getPalette","shades","paletteType","accents","A100","A200","A400","A700","primary","secondary","primaryPalette","primaryAccents","secondaryPalette","secondaryAccents","push","i","colorObject","hsl","cymk","contrastText"],"mappings":"IACaA,EAAO,CAClB,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,OACA,OACA,OACA,QAEWC,EAAiB,CAC5BC,UAAW,IACXC,MAAO,IACPC,KAAM,IACNC,KAAM,cCpBQC,EAAUC,GACxB,IAAMC,EAAID,EAAIC,EAAI,IACZC,EAAIF,EAAIE,EAAI,IACZC,EAAIH,EAAIG,EAAI,IACZC,EAAOC,KAAKC,IAAIL,EAAGC,EAAGC,GACtBI,EAAOF,KAAKG,IAAIP,EAAGC,EAAGC,GACtBM,EAAQF,EAAOH,EACjBM,EAAI,EACJC,EAAI,EACJC,EAAI,EAWR,OAViBF,EAAH,IAAVD,EAAiB,EACZF,IAASN,GAASC,EAAIC,GAAKM,EAAS,EACpCF,IAASL,GAAQC,EAAIF,GAAKQ,EAAQ,GACjCR,EAAIC,GAAKO,EAAQ,GAC3BC,EAAIL,KAAKQ,MAAU,GAAJH,IACP,IAAGA,GAAK,KAChBE,GAAKL,EAAOH,GAAQ,EAIb,CACLM,EAAAA,EACAC,EAJFA,IAAU,KADVA,EAAc,IAAVF,EAAc,EAAIA,GAAS,EAAIJ,KAAKS,IAAI,EAAIF,EAAI,MACrCG,QAAQ,GAKrBH,EAJFA,IAAU,IAAJA,GAASG,QAAQ,GAKrBC,cAAeN,MAAKC,OAAMC,QAG9B,SAAgBK,EAAWjB,GACzB,IAAMC,EAAID,EAAIC,EAAI,IACZC,EAAIF,EAAIE,EAAI,IACZC,EAAIH,EAAIG,EAAI,IACde,EAAIb,KAAKC,IAAI,EAAIL,EAAG,EAAIC,EAAG,EAAIC,GAC7BgB,EAAIC,YAA2C,MAA7B,EAAInB,EAAIiB,IAAM,EAAIA,IAAM,IAAUH,QAAQ,IAC5DM,EAAID,YAA2C,MAA7B,EAAIlB,EAAIgB,IAAM,EAAIA,IAAM,IAAUH,QAAQ,IAC5DO,EAAIF,YAA2C,MAA7B,EAAIjB,EAAIe,IAAM,EAAIA,IAAM,IAAUH,QAAQ,IAGlE,OAFAG,GAAK,IAEE,CACLC,EAAAA,EACAG,EAAAA,EACAD,EAAAA,EACAH,EALFA,EAAIE,WAAWF,EAAEH,QAAQ,IAMvBC,eAAgBG,OAAMG,OAAMD,OAAMH,iBAGtBK,EAAWC,GACzB,IAAMC,EAAS,4CAA4CC,KAAKF,GAChE,OAAOC,EACH,CACAxB,EAAG0B,SAASF,EAAO,GAAI,IACvBvB,EAAGyB,SAASF,EAAO,GAAI,IACvBtB,EAAGwB,SAASF,EAAO,GAAI,KAEvB,GAEN,SAAgBG,EAAcC,GAC5B,MAAO,CACLC,IAAKD,EAAO5B,EAAI,IAChB8B,MAAOF,EAAO3B,EAAI,IAClB8B,KAAMH,EAAO1B,EAAI,IACjB8B,MAAO,GAGX,SAAgBC,EAAgBf,GAC9B,IAAMK,EAAML,EAAEgB,SAAS,IACvB,OAAsB,IAAfX,EAAIY,WAAmBZ,EAAQA,EAExC,SAAgBa,EAAUpC,EAAGC,EAAGC,GAC9B,UAAW+B,EAAejC,GAAKiC,EAAehC,GAAKgC,EAAe/B,YAEpDmC,IAA8B3C,OAARO,IAAAA,EAAGC,IAAAA,EAEvC,OADkBE,KAAKQ,MAAU,MADAZ,GACOI,KAAKQ,MAAU,IAAJX,GAAWG,KAAKQ,MAAU,IAAJV,IAAY,KAClER,EAAY,QAAU,QCvE3C,SAAS4C,EAAeC,EAAKhC,EAAKiC,GAChC,GAAIC,OAAOC,MAAMH,IAAQA,EAAM,GAAKA,EAAMhC,EAAK,UAAUoC,WAAcJ,UAAWC,2BAA6BjC,GAEjH,SAASqC,EAAaC,GAGpB,OAAOA,GAAK,OAAUA,EAAI,gBAAWA,EAAI,MAAS,MAAU,KAE9D,SAASC,EAAoBD,GAG3B,IACM3B,EAAI,GAAK,WADL,EAAI,GACW,IACzB,OAAO2B,WAFG,EAAI,GAEG,YAAMA,EAAM,EAAI,GAAM3B,EAAI2B,EAAI,EAAI,YAGrCE,EAAUF,EAAG3C,EAAGgB,GAC9B,OAAOd,KAAKC,IAAID,KAAKG,IAAIsC,EAAG3C,GAAIgB,GAElC,SAAgB8B,EAAaH,GAE3B,OAAOA,GAAK,SAAY,MAAQA,EAAI,eAASA,EAAM,EAAI,KAAQ,KAEjE,SAAgBI,EAAoBJ,GAElC,IACM3B,EAAI,WADA,EAAI,GACM,GACpB,OAAO2B,EAFG,EAAI,YAEEA,EAAK,GAAK3B,GAAK2B,EAAI,EAAI,aAEzBK,EAAeL,EAAG3C,GAEhC,GAAIE,KAAKS,IAAIgC,GAAK,MAAQzC,KAAKS,IAAIX,GAAK,KAAM,SAC9C,IAAMiD,EAAI,IAAM/C,KAAKgD,MAAMP,EAAG3C,GAAKE,KAAKiD,GACxC,OAAOF,GAAK,EAAIA,EAAIA,EAAI,IAE1B,IAAaG,EACX,SAAaT,EAAG3C,EAAGgB,EAAGqC,GACpB,IAAMC,OAAUC,IAANF,EAAkB,EAAIA,EAChCG,KAAK7B,IAAMgB,EACXa,KAAK5B,MAAQ5B,EACbwD,KAAK3B,KAAOb,EACZwC,KAAK1B,MAAQwB,EACblB,EAAcO,EAAG,EAAG,OACpBP,EAAcpC,EAAG,EAAG,SACpBoC,EAAcpB,EAAG,EAAG,QACpBoB,EAAckB,EAAG,EAAG,UAGXG,EACX,SAAad,EAAG3C,EAAGgB,EAAGqC,GACpB,IAAMC,OAAUC,IAANF,EAAkB,EAAIA,EAChCG,KAAKzD,EAAI4C,EACTa,KAAKE,EAAI1D,EACTwD,KAAKG,IAAM3C,EACXwC,KAAK1B,MAAQwB,EACblB,EAAcO,EAAGJ,OAAOqB,UAAW,aACnCxB,EAAcpC,EAAGuC,OAAOqB,UAAW,UACnCxB,EAAcpB,EAAG,IAAK,OACtBoB,EAAckB,EAAG,EAAG,mBAGRO,EAAiBlB,GAE/B,WAAWc,EACTd,EAAE5C,EACFG,KAAK4D,KAAK5D,SAACyC,EAAEM,EAAK,YAAMN,EAAEoB,EAAK,KAC9B,IAAM7D,KAAKgD,MAAMP,EAAEoB,EAAGpB,EAAEM,GAAK/C,KAAKiD,GAAK,KAAO,IAC/CR,EAAEb,WAGOkC,EACX,SAAarB,EAAG3C,EAAGgB,EAAGqC,GACpB,IAAMC,OAAUC,IAANF,EAAkB,EAAIA,EAChCG,KAAKzD,EAAI4C,EACTa,KAAKP,EAAIjD,EACTwD,KAAKO,EAAI/C,EACTwC,KAAK1B,MAAQwB,EACblB,EAAcO,EAAGJ,OAAOqB,UAAW,aACnCxB,EAAckB,EAAG,EAAG,mBAGRW,EAAcpE,GAC5B,IAAM8B,EAAMe,EAAY7C,EAAI8B,KACtBC,EAAQc,EAAY7C,EAAI+B,OACxBC,EAAOa,EAAY7C,EAAIgC,MACvBqC,EAAM,SAAYvC,EAAM,SAAYC,EAAQ,QAAWC,EAC7D,WAAWmC,EACT,IAAMpB,EAAmBsB,GAAO,GAChC,KACGtB,GAAoB,SAAYjB,EAAM,SAAYC,EAAQ,SAAYC,GAAQ,QAAWe,EAAmBsB,IAC/G,KACGtB,EAAmBsB,GAAOtB,GAAoB,SAAYjB,EAAM,QAAWC,EAAQ,SAAYC,GAAQ,UAC1GhC,EAAIiC,OCxFR,IAAMqC,EAAK,CACT,CACE,IAAIH,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,iBAAkB,mBAAoB,kBACzD,IAAIA,EAAe,iBAAkB,iBAAkB,kBACvD,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,mBAAoB,iBAAkB,oBACzD,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,kBAAmB,iBAAkB,oBACxD,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,mBAAoB,mBAAoB,oBAE7D,CACE,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,iBAAkB,mBACxD,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAE7D,CACE,IAAIA,EAAe,iBAAkB,mBAAoB,mBACzD,IAAIA,EAAe,kBAAmB,oBAAqB,oBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,kBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,kBAAmB,oBAAqB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,kBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,kBAAmB,oBAAqB,oBAC3D,IAAIA,EAAe,kBAAmB,oBAAqB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,kBAAmB,oBAAqB,mBAC3D,IAAIA,EAAe,iBAAkB,mBAAoB,oBACzD,IAAIA,EAAe,iBAAkB,oBAAqB,kBAC1D,IAAIA,EAAe,kBAAmB,oBAAqB,mBAC3D,IAAIA,EAAe,kBAAmB,oBAAqB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,kBAAmB,oBAAqB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,mBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAE7D,CACE,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,kBAAmB,oBAAqB,oBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,oBAAqB,mBAC5D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,mBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,mBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,mBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAE9D,CACE,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,oBAAqB,mBAC5D,IAAIA,EAAe,oBAAqB,mBAAoB,oBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,oBAAqB,mBAAoB,oBAC5D,IAAIA,EAAe,oBAAqB,mBAAoB,mBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,qBAE7D,CACE,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,oBAAqB,kBAAmB,mBAC3D,IAAIA,EAAe,oBAAqB,iBAAkB,oBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,oBAAqB,kBAAmB,qBAE7D,CACE,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,qBAE5D,CACE,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,oBAAqB,mBAAoB,oBAC5D,IAAIA,EAAe,oBAAqB,kBAAmB,oBAE7D,CACE,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,kBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,kBAAmB,kBAAmB,oBACzD,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,iBAAkB,iBAAkB,mBACvD,IAAIA,EAAe,kBAAmB,kBAAmB,oBAE3D,CACE,IAAIA,EAAe,kBAAmB,iBAAmB,oBACzD,IAAIA,EAAe,kBAAmB,kBAAmB,oBACzD,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,kBAAmB,kBACzD,IAAIA,EAAe,iBAAkB,kBAAmB,mBACxD,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,kBAAmB,kBAAmB,oBACzD,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,kBAAmB,oBACzD,IAAIA,EAAe,kBAAmB,mBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,kBAAmB,iBAAkB,mBACxD,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,oBAC1D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,kBAAmB,kBAAoB,mBAC1D,IAAIA,EAAe,kBAAmB,kBAAmB,oBACzD,IAAIA,EAAe,kBAAmB,kBAAmB,mBACzD,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAC1D,IAAIA,EAAe,mBAAoB,kBAAmB,mBAC1D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,kBAAmB,mBAAoB,oBAE5D,CACE,IAAIA,EAAe,mBAAoB,sBAAuB,sBAC9D,IAAIA,EAAe,mBAAoB,qBAAsB,sBAC7D,IAAIA,EAAe,kBAAmB,qBAAsB,sBAC5D,IAAIA,EAAe,mBAAoB,qBAAsB,sBAC7D,IAAIA,EAAe,mBAAoB,qBAAsB,sBAC7D,IAAIA,EAAe,mBAAoB,sBAAuB,sBAC9D,IAAIA,EAAe,oBAAqB,qBAAsB,uBAC9D,IAAIA,EAAe,mBAAoB,qBAAsB,uBAC7D,IAAIA,EAAe,oBAAqB,qBAAsB,uBAC9D,IAAIA,EAAe,oBAAqB,qBAAsB,wBAEhE,CACE,IAAIA,EAAe,mBAAoB,kBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,oBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,kBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,mBAAoB,oBAAqB,mBAC5D,IAAIA,EAAe,mBAAoB,mBAAoB,oBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,kBAC3D,IAAIA,EAAe,mBAAoB,mBAAoB,mBAC3D,IAAIA,EAAe,oBAAqB,mBAAoB,oBAC5D,IAAIA,EAAe,oBAAqB,oBAAqB,sBAGpDI,EAAM,CACjB,CACE,IAAIH,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,cAE1C,CACE,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACxC,IAAI6C,EAAaxC,EAAaL,EAAU,aACx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"}