{
  "version": 3,
  "sources": ["/cdn/shop/t/47/assets/enrollment.controller.js?referral=bobvance232"],
  "sourcesContent": ["var app = angular.module(\"DSShopify\");\napp.filter(\"changePricing\", function () {\n  return function (price) {\n    var price = addDecimal(price);\n    function addDecimal(number) {\n      let arr = String(number).split(\"\");\n      let reqIndex = arr.length - 2;\n      arr.splice(reqIndex, 0, \".\");\n      return parseFloat(arr.join(\"\")).toFixed(2);\n    }\n    return price;\n  };\n});\napp.controller(\"EnrollmentCtrl\", [\n  \"$window\",\n  \"$scope\",\n  \"$rootScope\",\n  \"$uibModal\",\n  \"sideBarService\",\n  \"$templateCache\",\n  \"calculateService\",\n  \"$timeout\",\n  function (\n    $window,\n    $scope,\n    $rootScope,\n    $uibModal,\n    sideBarService,\n    $templateCache,\n    calculateService,\n    $timeout\n  ) {\n    $scope.calculateService = calculateService;\n    $scope.cart = theme.dzStrings.cart;\n\n    function updateThemeCart() {\n      $.getJSON(\"/cart.js\", function(cart) {\n        theme.dzStrings.cart = cart; // Update the theme cart object\n        $scope.updateCart(); // Update the scope\n      });\n    }\n\n        // Function to update cart in the scope\n    $scope.updateCart = function () {\n      $timeout(function () {\n        $scope.cart = theme.dzStrings.cart;\n        console.log(\"Cart should be updated...\", $scope.cart);\n      });\n    };\n\n    // Call updateThemeCart after any cart modification\n    function fetchUpdatedCartData() {\n      updateThemeCart(); // Fetch and update cart data\n    }\n    \n    $scope.enrollment = $scope.enrollment || JSON.parse(sessionStorage.getItem('EnrollmentFormData')) || {};\n    $scope.enrollment.personalInfo = $scope.enrollment.personalInfo || {};\n    $scope.enrollment.shippingAddress = $scope.enrollment.shippingAddress || {};\n    $scope.enrollment.mailingAddress = $scope.enrollment.mailingAddress || {};\n    $scope.enrollment.shippingAddress.Check = 1;\n\n    $rootScope.EnrollmentPack = $rootScope.EnrollmentPack || JSON.parse(localStorage.getItem(\"cart.packs\")) || [];\n    $rootScope.AutoshipItems = $rootScope.AutoshipItems || JSON.parse(localStorage.getItem(\"cart.autoship\")) || [];\n    $rootScope.BundlePack = $rootScope.BundlePack || JSON.parse(localStorage.getItem(\"cart.bundle\")) || [];\n\n    $scope.enrollment.mailingAddress.State = $scope.enrollment.mailingAddress.State || \"UT\";\n    $scope.payment = {};\n    $scope.onLastSection = false;\n    $scope.enrollment.personalInfo.birthMonth = handleNumberNormalization($scope.enrollment.personalInfo.birthMonth) || \"01\";\n    $scope.enrollment.personalInfo.birthDay = handleNumberNormalization($scope.enrollment.personalInfo.birthDay) || \"01\";\n    $scope.enrollment.personalInfo.birthYear = handleNumberNormalization($scope.enrollment.personalInfo.birthYear) || \"2000\";\n\n    $scope.isPhoneChecked = false;\n    $scope.isEmailChecked = false;\n    $scope.isUsernameChecked = false;\n\n    $scope.availableStates = [];\n    $rootScope.hideLoader();\n    $scope.DefaultEnrollKit = {};\n    $scope.isEnrollmentJoinPage = false;\n    $scope.isEmailVerifying = false;\n    $scope.isUsernameVerifying = false;\n\n    $scope.detectCurrentEnrollment = function () {\n      if (window.location.pathname.includes('enrollment-join')) {\n        $scope.isEnrollmentJoinPage = true;\n      }\n    };\n    $scope.detectCurrentEnrollment();\n\n    function handleNumberNormalization(number) {\n      try {\n        if (parseInt(number, 10) > 0) {\n          if (number.toString().length > 1)\n            return number.toString();\n          else {\n            return `0${number.toString()}`;\n          }\n        }\n      } catch (error) { }\n    }\n\n    $scope.starterKitQuantity = {\n      \"facial-glow-starter-set\": 1,\n      \"healing-olive-facial-glow\": 1,\n      \"holistic-beauty-inside-and-out-starter-set\": 1,\n      \"glow-from-the-inside-out-starter-set\": 1\n    };\n\n    $scope.GetStates = function () {\n      let countryCode = 'US';\n      window.DI.Enrollment.GetStates(countryCode).then((response) => {\n        if (response.Data && response.Status == 1) {\n          $rootScope.hideLoader();\n          $scope.availableStates = response.Data;\n          if (!$scope.enrollment.mailingAddress.State) {\n            $scope.enrollment.mailingAddress.State = $scope.availableStates[0].StateCode;\n          }\n          $scope.$apply();\n        }\n        console.log(response);\n      }).catch(() => $rootScope.hideLoader());\n    };\n\n    $scope.UpdateToNextStep = function (panelNumber) {\n      // closing current accordion\n      $(`.accordion-panel-${panelNumber - 1}`).next().slideToggle(200);\n      $(`.accordion-panel-${panelNumber - 1}`).removeClass('open', 200);\n      $(`.accordion-panel-${panelNumber - 1}`).css('pointer-events', 'auto');\n\n      // opening next accordion\n      $(`.accordion-panel-${panelNumber}`).next().css('display', 'block');\n      $(`.accordion-panel-${panelNumber}`).addClass('open', 200);\n\n      if (panelNumber == 3) {\n        $(`.accordion-panel-${panelNumber}`).css('pointer-events', 'auto');\n      }\n\n      if (!$scope.isEnrollmentJoinPage) {\n        // $scope.handlePlaceOrderButton()\n      }\n    };\n\n    $scope._openFirstPanel = function () {\n      $(`.accordion-panel-1`).next().slideDown(200);\n      $(`.accordion-panel-1`).addClass('open', 200);\n      $(`.accordion-panel-2`).next().slideUp(200);\n      $(`.accordion-panel-2`).removeClass('open', 200);\n      $(`.accordion-panel-2`).css('pointer-events', 'none');\n      $(`.accordion-panel-3`).next().slideUp(200);\n      $(`.accordion-panel-3`).removeClass('open', 200);\n      $(`.accordion-panel-3`).css('pointer-events', 'none');\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    };\n\n    jQuery(function ($) {\n      $('.js-accordion-title').on('click', function () {\n        $(this).next().slideToggle(200);\n        $(this).toggleClass('open', 200);\n      });\n\n      var icons = document.querySelectorAll(\".header__icon-touch\");\n      icons.forEach((icon) => {\n        if (icon.getAttribute(\"data-js-cart-icon\") == \"\") {\n          icon.style.display = \"none\";\n        }\n      });\n    });\n\n    $scope.handlePlaceOrderButton = function () {\n      if ($('.accordion-panel-3').hasClass('open')) {\n        $scope.onLastSection = true;\n      } else {\n        $scope.onLastSection = false;\n      }\n      $scope.$apply();\n    };\n\n    window.addEventListener('beforeunload', (event) => {\n      $scope.enrollment.personalInfo.Email = \"\";\n      $scope.enrollment.personalInfo.ConfirmEmail = \"\";\n      $scope.enrollment.webOffice = {};\n      $scope.enrollment.mailingAddress.Contact = \"\";\n      sessionStorage.setItem('EnrollmentFormData', JSON.stringify($scope.enrollment));\n    });\n\n    if (Number($scope.enrollment.shippingAddress.Check) === 1) { }\n\n    $scope.navigateToProduct = function () { };\n\n    $scope.GetShipName = function (handle) {\n      console.log('selected shipping', $scope.enrollment.selectedShippingMethod);\n      console.log(\"GetShipName\");\n      $scope.calculateShippingTotal();\n    };\n\n    $scope.ClearApplication = function (element) {\n      var id = \"#\" + element.target.id;\n      if ($(id).is(\":checked\")) {\n        $(id).closest(\".control-group\").find(\".has-error.help-block\").remove();\n        $(id).closest(\".control-group\").removeClass(\"has-error\");\n      }\n    };\n\n    $scope.verifyUsername = async function () {\n      if ($scope.enrollment.webOffice.UserName) {\n        $rootScope.showLoader();\n        $scope.isUsernameVerifying = true;\n        await window.DI.Enrollment.verifyusername($scope.enrollment.webOffice.UserName).then(function (response, error) {\n          console.log(\"Verify Username\", response, error);\n          if (response && response.Status == 1) {\n            if (response.Data) {\n              $scope.isUsernameChecked = true;\n            } else {\n              $scope.enrollment.webOffice.UserName = \"\";\n              window.DI.DI.notification(\"Error\", \"UserName Not Available\", \"error\");\n              $scope.isUsernameChecked = false;\n            }\n          } else {\n            $scope.enrollment.webOffice.UserName = \"\";\n            window.DI.DI.notification(\"Error\", \"UserName Not Available\", \"error\");\n            $scope.isUsernameChecked = false;\n          }\n          $scope.isUsernameVerifying = false;\n          $rootScope.hideLoader();\n          return response;\n        }).catch((error) => {\n          $scope.isUsernameChecked = false;\n          $scope.isUsernameVerifying = false;\n          $rootScope.hideLoader();\n        });\n        $scope.$apply();\n      }\n    };\n\n    $scope.verifyEmailExists = async function (isLoading) {\n      var filter = new RegExp(\"^([\\\\w-\\\\.+]+)@((\\\\[[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.)|(([\\\\w-]+\\\\.)+))([a-zA-Z]{2,10}|[0-9]{1,3})(\\\\]?)$\");\n      if ($scope.enrollment.personalInfo.Email && filter.test($scope.enrollment.personalInfo.Email)) {\n        if (isLoading) $rootScope.showLoader();\n        $scope.isEmailVerifying = true;\n        let request = {\n          \"email\": $scope.enrollment.personalInfo.Email\n        };\n\n        await window.DI.Enrollment.verifyusernameAndemail(request).then(function (response, error) {\n          console.log(\"Full API response: V1\", response);\n          if (response && response.Status) {\n            if (response.Data) {\n              $scope.isEmailChecked = true;\n            } else {\n              $scope.enrollment.personalInfo.Email = \"\";\n               $scope.enrollment.personalInfo.ConfirmEmail = \"\";\n              window.DI.DI.notification(\"Error\", \"email is already in use\", \"error\");\n              $scope.isEmailChecked = false;\n            }\n          } else {\n            $scope.enrollment.personalInfo.Email = \"\";\n            $scope.enrollment.personalInfo.ConfirmEmail = \"\";\n            window.DI.DI.notification(\"Error\", \"email is already in use\", \"error\");\n            $scope.isEmailChecked = false;\n          }\n          if (isLoading) $rootScope.hideLoader();\n          $scope.isEmailVerifying = false;\n          return response;\n        }).catch(() => {\n          if (isLoading) $rootScope.hideLoader();\n          $scope.isEmailChecked = false;\n          $scope.isEmailVerifying = false;\n        });\n        $scope.$apply();\n      }\n    };\n$scope.VerifyPhoneExists = function () {\n  var raw = ($scope.enrollment.mailingAddress.Contact || '').trim();\n  if (!raw) return;\n\n  raw = raw.replace(/[^0-9+\\s-]/g, '');\n  $scope.enrollment.mailingAddress.Contact = raw;\n\n  if (raw.length > 18) {\n    raw = raw.slice(0, 18);\n    $scope.enrollment.mailingAddress.Contact = raw;\n  }\n\n  var cleaned = raw;\n  if (cleaned.startsWith('00')) cleaned = '+' + cleaned.slice(2);\n\n  if (cleaned.indexOf('+') > 0) {\n    window.DI.DI.notification(\"Error\", \"Invalid phone number format\", \"error\");\n    $scope.isPhoneChecked = false;\n    return;\n  }\n\n  var digitsOnly = cleaned.replace(/\\D/g, '');\n  var count = digitsOnly.length;\n\n  if (count < 8 || count > 15) {\n    window.DI.DI.notification(\"Error\", \"Enter a valid phone number (8\u201315 digits)\", \"error\");\n    $scope.isPhoneChecked = false;\n    return;\n  }\n\n  $rootScope.showLoader();\n  $scope.isPhoneChecked = false;\n\n  try {\n    var ret = window.DI.Enrollment.VerifyPhoneExists(cleaned);\n\n    // promise-safe: only use .then if it exists\n    if (ret && typeof ret.then === \"function\") {\n      ret.then(function (response) {\n        console.log(\"VerifyPhoneExists\", response);\n\n        if (response && response.Status) {\n          if (response.Data) {\n            window.DI.DI.notification(\"Success\", \"Phone Available\", \"success\");\n            $scope.isPhoneChecked = true;\n          } else {\n            $scope.enrollment.mailingAddress.Contact = \"\";\n            window.DI.DI.notification(\"Error\", \"This phone number is already used\", \"error\");\n            $scope.isPhoneChecked = false;\n          }\n        } else {\n          $scope.enrollment.mailingAddress.Contact = \"\";\n          window.DI.DI.notification(\"Error\", \"Phone number not available\", \"error\");\n          $scope.isPhoneChecked = false;\n        }\n\n        $rootScope.hideLoader();\n        ($scope.$applyAsync && $scope.$applyAsync()) || $scope.$apply();\n      }, function (err) {\n        console.error(\"VerifyPhoneExists error\", err);\n        window.DI.DI.notification(\"Error\", \"Could not verify phone right now\", \"error\");\n        $scope.isPhoneChecked = false;\n\n        $rootScope.hideLoader();\n        ($scope.$applyAsync && $scope.$applyAsync()) || $scope.$apply();\n      });\n\n      return;\n    }\n\n    // unexpected return type\n    window.DI.DI.notification(\"Error\", \"Could not verify phone right now\", \"error\");\n    $scope.isPhoneChecked = false;\n    $rootScope.hideLoader();\n  } catch (err) {\n    console.error(\"VerifyPhoneExists exception\", err);\n    window.DI.DI.notification(\"Error\", \"Could not verify phone right now\", \"error\");\n    $scope.isPhoneChecked = false;\n    $rootScope.hideLoader();\n  }\n};\n\n\n\n\n// Helper: returns [customersArray, isEmailAvailableBool]\nfunction verifyEmailAndCustomerType(emailAddress) {\n  const customerData = new Promise((resolve) => {\n    try {\n      window.DI.Enrollment.GetCustomerInfoByEmail(emailAddress).then(\n        (response) => {\n          // Data can be null -> normalize to []\n          const data = response && response.Data;\n\n          if (Array.isArray(data)) return resolve(data);\n          if (data && typeof data === \"object\") return resolve([data]); // just in case API returns a single object\n          return resolve([]); // null/undefined => no customer\n        },\n        () => resolve([]) // failure path\n      );\n    } catch (e) {\n      resolve([]);\n    }\n  });\n\n  const isEmailAvailable = new Promise((resolve) => {\n    try {\n      window.DI.Enrollment.verifyusernameAndemail({ email: emailAddress }).then(\n        (response) => resolve(!!(response && response.Data)), // USA: truthy Data\n        () => resolve(false)\n      );\n    } catch (e) {\n      resolve(false);\n    }\n  });\n\n  return Promise.all([customerData, isEmailAvailable]);\n}\n\n\n\n\n\n\n\n$scope.verifyEmailAndCustomerType = function (isLoading = false) {\n  var filter = new RegExp(\"^([\\\\w-\\\\.+]+)@((\\\\[[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.)|(([\\\\w-]+\\\\.)+))([a-zA-Z]{2,10}|[0-9]{1,3})(\\\\]?)$\");\n  const email = ($scope.enrollment.personalInfo.Email || \"\").trim();\n  if (!email || !filter.test(email)) return;\n\n  if (isLoading) $rootScope.showLoader();\n  $scope.isEmailVerifying = true;\n\n  verifyEmailAndCustomerType(email).then(\n    ([customers, isEmailAvailable]) => {\n      customers = Array.isArray(customers) ? customers : [];\n\n      // \u2705 email is available (no account exists in DS)\n      if (isEmailAvailable === true && !customers.length) {\n        window.DI.DI.notification(\"Success\", \"Email Available\", \"success\");\n        $scope.isEmailChecked = true;\n      }\n      // \u2705 allow all accounts WITHOUT CustomerType: 1\n      else if (!customers.some(item => item && item.CustomerType === 1)) {\n        window.DI.DI.notification(\"Success\", \"Email Available\", \"success\");\n        $scope.isEmailChecked = true;\n      }\n      // \u274C disallow CustomerType: 1\n      else {\n        $scope.enrollment.personalInfo.Email = \"\";\n        $scope.enrollment.personalInfo.ConfirmEmail = \"\";\n        window.DI.DI.notification(\"Error\", \"Email is already in use\", \"error\");\n        $scope.isEmailChecked = false;\n      }\n\n      if (isLoading) $rootScope.hideLoader();\n      $scope.isEmailVerifying = false;\n      ($scope.$applyAsync && $scope.$applyAsync()) || $scope.$apply();\n    },\n    () => {\n      if (isLoading) $rootScope.hideLoader();\n      $scope.isEmailChecked = false;\n      $scope.isEmailVerifying = false;\n      window.DI.DI.notification(\"Error\", \"Could not verify email right now\", \"error\");\n      ($scope.$applyAsync && $scope.$applyAsync()) || $scope.$apply();\n    }\n  );\n};\n\n\n\n\n\n\n\n\n\n\n// === EU Country \u2192 Region wiring (SANITIZED + PROMISE-SAFE DROP-IN) ===\n// Place this AFTER you create $scope.enrollment and $scope.enrollment.mailingAddress\n\n// Safety: ensure objects exist\n$scope.enrollment = $scope.enrollment || {};\n$scope.enrollment.mailingAddress = $scope.enrollment.mailingAddress || {};\n$scope.eu = $scope.eu || { regionsByCountry: {}, regions: [] };\n$scope.isRegionsLoading = false;\n\n// Friendly name \u2192 ISO2 (extend as needed)\nvar COUNTRY_TO_ISO2 = {\n  'Germany':'DE','Austria':'AT','Switzerland':'CH','France':'FR','Spain':'ES','Italy':'IT',\n  'Belgium':'BE','Netherlands':'NL','Luxembourg':'LU','Poland':'PL',\n  'United Kingdom':'GB','UK':'GB','Denmark':'DK','Norway':'NO','Sweden':'SE'\n};\n\n// ---- Helpers ----\n\n// Replace invalid JSON tokens & trailing commas BEFORE parsing\nfunction sanitizeJsonText(txt) {\n  if (!txt) return txt;\n  var cleaned = txt.replace(/^\\uFEFF/, '');       // strip BOM\n  cleaned = cleaned.replace(/\\bNaN\\b/g, 'null')\n                   .replace(/\\bInfinity\\b/g, 'null')\n                   .replace(/\\b-Infinity\\b/g, 'null');\n  // remove trailing commas before } or ]\n  cleaned = cleaned.replace(/,(\\s*[}\\]])/g, '$1');\n  return cleaned;\n}\n\nfunction readEuJson() {\n  var el = document.getElementById('eu-regions');\n  if (!el) {\n    console.warn('[EU] #eu-regions script tag not found.');\n    return {};\n  }\n\n  var raw = el.textContent || el.innerText || '';\n  var data = {};\n  try {\n    data = JSON.parse(raw || '{}');\n  } catch (e1) {\n    console.warn('[EU] Raw JSON parse failed; sanitizing\u2026', e1);\n    try {\n      data = JSON.parse(sanitizeJsonText(raw) || '{}');\n    } catch (e2) {\n      console.error('[EU] Sanitized JSON still failed:', e2);\n      return {};\n    }\n  }\n\n  // Mirror ISO2 onto friendly names (so \"Germany\" works if only \"DE\" exists)\n  Object.keys(COUNTRY_TO_ISO2).forEach(function (friendly) {\n    var iso = COUNTRY_TO_ISO2[friendly];\n    if (data[iso] && !data[friendly]) data[friendly] = data[iso];\n  });\n  // Mirror UPPERCASE keys too (so 'de' model works)\n  Object.keys(data).forEach(function (k) {\n    var up = String(k).toUpperCase();\n    if (!data[up]) data[up] = data[k];\n  });\n\n  return data;\n}\n\n// Normalize any list into [{code,name}]\nfunction normalizeRegions(list) {\n  if (!Array.isArray(list) || !list.length) return [];\n  var first = list[0];\n\n  // Already objects with code/name\n  if (first && typeof first === 'object' && ('code' in first || 'name' in first)) {\n    return list.map(function (r) {\n      return { code: String(r.code || r.name || ''), name: String(r.name || r.code || '') };\n    }).filter(function (r) { return r.code && r.name; });\n  }\n  // Legacy string array\n  if (typeof first === 'string') {\n    return list.map(function (n) { return { code: String(n), name: String(n) }; });\n  }\n  console.warn('[EU] Unexpected region item shape:', first);\n  return [];\n}\n\n// Find the best key inside regionsByCountry for a given country value\nfunction resolveCountryKey(countryVal, regionsByCountry) {\n  if (!countryVal) return '';\n  if (regionsByCountry[countryVal]) return countryVal;               // exact\n  var up = String(countryVal).toUpperCase();\n  if (regionsByCountry[up]) return up;                               // uppercase\n  var iso = COUNTRY_TO_ISO2[countryVal];\n  if (iso && regionsByCountry[iso]) return iso;                      // friendly \u2192 ISO2\n  return '';                                                         // no match\n}\n\n// Coerce anything into a thenable without using .catch/.finally\nfunction asThenable(x) {\n  if (x && typeof x.then === 'function') return x;\n  if (window.angular && angular.injector) {\n    try {\n      var $q = angular.element(document.body).injector().get('$q');\n      return $q.when(x);\n    } catch (e) { /* fall through */ }\n  }\n  // Minimal native Promise fallback\n  return new Promise(function (resolve) { resolve(x); });\n}\n\n// ---- API fallback ----\n$scope.fetchRegionsFromAPI = function (iso2) {\n  if (!iso2 || iso2.length !== 2) {\n    console.warn('[EU] fetchRegionsFromAPI skipped: invalid iso2:', iso2);\n    return asThenable();\n  }\n  console.log('[EU] fetchRegionsFromAPI start. ISO:', iso2);\n  $scope.isRegionsLoading = true;\n\n  var p = (window.DI && window.DI.Enrollment && window.DI.Enrollment.GetStates)\n    ? window.DI.Enrollment.GetStates(iso2)\n    : null;\n\n  if (!p) {\n    console.warn('[EU] GetStates API unavailable; cannot fetch regions for', iso2);\n    $scope.isRegionsLoading = false;\n    return asThenable();\n  }\n\n  return asThenable(p).then(function (resp) {\n    console.log('[EU] API GetStates response:', resp);\n\n    var mapped = [];\n    if (resp && resp.Status == 1 && Array.isArray(resp.Data)) {\n      mapped = resp.Data.map(function (x) {\n        if (x && typeof x === 'object') {\n          return { code: String(x.StateCode || x.StateName || ''), name: String(x.StateName || x.StateCode || '') };\n        }\n        return { code: String(x || ''), name: String(x || '') };\n      }).filter(function (r) { return r.code && r.name; });\n    } else {\n      console.warn('[EU] API returned no regions for', iso2);\n    }\n\n    // Update live list and cache under ISO2 key for this session\n    $scope.eu.regions = mapped;\n    if (mapped.length) {\n      $scope.eu.regionsByCountry[iso2] = mapped;\n    }\n    $scope.enrollment.mailingAddress.State = null;\n  }, function (err) {\n    console.error('[EU] fetchRegionsFromAPI error:', err);\n    $scope.eu.regions = [];\n    $scope.enrollment.mailingAddress.State = null;\n  }).then(function () {\n    $scope.isRegionsLoading = false;\n    $scope.$applyAsync();\n  });\n};\n\n// ---- Handlers ----\n$scope.onCountryChange = function () {\n  var countryVal = $scope.enrollment.mailingAddress && $scope.enrollment.mailingAddress.Country;\n  // Prefer ISO2 guess for API fallback too\n  var isoGuess = COUNTRY_TO_ISO2[countryVal] || String(countryVal || '').toUpperCase();\n\n  var key = resolveCountryKey(countryVal, $scope.eu.regionsByCountry);\n  console.log('[EU] onCountryChange country=', countryVal, '\u2192 key=', key, 'isoGuess=', isoGuess);\n\n  $scope.isRegionsLoading = true;\n\n  var raw = key ? ($scope.eu.regionsByCountry[key] || []) : [];\n  if (!raw.length && isoGuess && isoGuess.length === 2) {\n    console.warn('[EU] No JSON regions for', isoGuess, '\u2014 attempting API fallback.');\n    // API will populate eu.regions; return early\n    $scope.fetchRegionsFromAPI(isoGuess);\n    return;\n  }\n\n  $scope.eu.regions = normalizeRegions(raw);\n  $scope.enrollment.mailingAddress.State = null;\n\n  $scope.$evalAsync(function () {\n    $scope.isRegionsLoading = false;\n    console.log('[EU] regions initialized (JSON):', $scope.eu.regions.length, $scope.eu.regions.slice(0, 5));\n  });\n};\n\n// ---- Init & watchers (with basic retry for late-loaded JSON) ----\n(function initEURegions() {\n  function tryLoad() {\n    var data = readEuJson();\n    if (Object.keys(data).length) {\n      $scope.eu.regionsByCountry = data;\n      if ($scope.enrollment?.mailingAddress?.Country) $scope.$evalAsync($scope.onCountryChange);\n      return true;\n    }\n    return false;\n  }\n\n  if (!tryLoad()) {\n    var attempts = 0;\n    var timer = setInterval(function () {\n      attempts++;\n      if (tryLoad() || attempts > 10) clearInterval(timer); // ~1s retries\n    }, 100);\n  }\n})();\n\n// Refresh regions whenever country changes\n$scope.$watch('enrollment.mailingAddress.Country', function (n, o) {\n  if (n !== o) $scope.onCountryChange();\n});\n\n\n\n\n$scope.saveCustomFields = function () {\n  $rootScope.showLoader();\n\n  const request = {\n    customerId: 0,\n    backOfficeId: \"\",\n    sponsorId: ($rootScope.EnrollerInfo && $rootScope.EnrollerInfo.AssociateID) ? $rootScope.EnrollerInfo.AssociateID : 0,\n    customerType: 1,\n    username: $scope.enrollment.webOffice.UserName,\n    webAlias: $scope.enrollment.webOffice.UserName,\n    textPhone: $scope.enrollment.mailingAddress.Contact,\n    password: $scope.enrollment.webOffice.Password,\n    birthDate: $scope.enrollment.personalInfo.birthMonth + \"/\" + $scope.enrollment.personalInfo.birthDay + \"/\" + $scope.enrollment.personalInfo.birthYear,\n    taxID: $scope.enrollment.commissionPayment,\n    CompanyName: \"\",\n    languageCode: \"\",\n    checkoutId: \"\",\n    checkoutWebUrl: \"\",\n    email: $scope.enrollment.personalInfo.Email,\n    checkoutType: \"enrollment\"\n  };\n\n  return new Promise((resolve) => {\n    try {\n      const ret = window.DI.Enrollment.saveCustomFields(request);\n\n      if (ret && typeof ret.then === \"function\") {\n        ret.then(\n          (response) => {\n            // keep your behavior, but return boolean\n            if (response) {\n              $scope.onLastSection = true;\n              ($scope.$applyAsync && $scope.$applyAsync()) || $scope.$apply();\n              resolve(true);\n            } else {\n              window.DI.DI.notification(\"Error\", \"Something went wrong!\", \"error\");\n              resolve(false);\n            }\n            $rootScope.hideLoader();\n          },\n          () => {\n            resolve(false);\n            $rootScope.hideLoader();\n          }\n        );\n        return;\n      }\n\n      resolve(false);\n      $rootScope.hideLoader();\n    } catch (e) {\n      resolve(false);\n      $rootScope.hideLoader();\n    }\n  });\n};\n\n\nfunction enableFinalStep() {\n  $scope.onLastSection = true;\n  ($scope.$applyAsync && $scope.$applyAsync()) || $scope.$apply();\n}\n\nfunction disableFinalStep() {\n  $scope.onLastSection = false;\n  ($scope.$applyAsync && $scope.$applyAsync()) || $scope.$apply();\n}\n\n$scope.tryEnableFinalButton = async function () {\n  // 1) try normal save\n  const saved = await $scope.saveCustomFields();\n  if (saved) {\n    enableFinalStep();\n    return true;\n  }\n\n  // 2) fallback requires consultant\n  const enrollerInfoRaw = localStorage.getItem(\"enrollerinfo\");\n  if (!enrollerInfoRaw || enrollerInfoRaw === \"null\") {\n    const el = document.getElementById(\"consultantInput\");\n    if (el) {\n      el.classList.add(\"pink-placeholder\");\n      el.placeholder = \"Please enter your consultant's name\";\n    }\n    window.DI.DI.notification(\"Error\", \"Please enter your consultant's name\", \"error\");\n    disableFinalStep();\n    return false;\n  }\n\n  const item = JSON.parse(enrollerInfoRaw);\n  const consultantID = item.AssociateID || 0;\n  const consultantName = `${item.ContactFirstName || \"\"} ${item.ContactLastName || \"\"}`.trim();\n\n  const password = $scope.enrollment.webOffice.Password;\n  const webAlias = $scope.enrollment.webOffice.UserName;\n  const socialSecurityNumber = $scope.enrollment.personalInfo.socialSecurity;\n  const phoneNumber = $scope.enrollment.mailingAddress.Contact;\n  const State = $scope.enrollment.mailingAddress.State;\n  const Country = $scope.enrollment.mailingAddress.Country;\n  const languageInfo = sessionStorage.getItem(\"otpLang\") || \"en\";\n  const birthDate =\n    $scope.enrollment.personalInfo.birthMonth + \"/\" +\n    $scope.enrollment.personalInfo.birthDay + \"/\" +\n    $scope.enrollment.personalInfo.birthYear;\n\n  const cartOk = await updateCartWithConsultantInfo(\n    consultantID,\n    consultantName,\n    password,\n    webAlias,\n    birthDate,\n    socialSecurityNumber,\n    phoneNumber,\n    State,\n    Country,\n    languageInfo\n  );\n\n  if (cartOk) {\n    enableFinalStep();\n    return true;\n  }\n\n  window.DI.DI.notification(\"Error\", \"Could not save your info. Please try again.\", \"error\");\n  disableFinalStep();\n  return false;\n};\n\n\n    $scope.calculateShippingTotal = function (saveCustomFields = false) {\n      if (!$scope.enrollment.selectedShippingMethod) {\n        $scope.enrollment.selectedShippingMethod = calculateService.createCheckoutResponse.availableShippingRates.shippingRates[0]['handle'];\n      }\n\n      $rootScope.showLoader();\n      let request = {\n        \"checkoutId\": \"\",  // No need for checkoutId\n        \"shippingRateHandle\": $scope.enrollment.selectedShippingMethod\n      };\n      window.DI.Enrollment.calculateShippingTotal(request).then(function (response, error) {\n        if (response.checkoutShippingLineUpdate && response.checkoutShippingLineUpdate.checkoutUserErrors.length == 0) {\n          response = response.checkoutShippingLineUpdate.checkout;\n          if (response.availableShippingRates == null || response.availableShippingRates.ready == false) {\n            $rootScope.hideLoader();\n            $scope.GetShippingMethods();\n            return;\n          }\n          calculateService.createCheckoutResponse = response;\n          $rootScope.hideLoader();\n          if (saveCustomFields) {\n            $scope.saveCustomFields();\n          }\n         fetchUpdatedCartData(); // Fetch and update cart data\n        } else if (response.checkoutShippingLineUpdate && response.checkoutShippingLineUpdate.checkoutUserErrors.length > 0) {\n          let errors = response.checkoutShippingLineUpdate.checkoutUserErrors;\n          errors.forEach(error => {\n            window.DI.DI.notification(\"Error\", error.message, \"error\");\n          });\n          $rootScope.hideLoader();\n        } else {\n          $rootScope.hideLoader();\n        }\n      }).catch((error) => {\n        $rootScope.hideLoader();\n      });\n    };\n\n    $scope.UpdateEmailtoCheckoutAndPlace = function () {\n      if ($scope.enrollment.personalInfo.Email == \"\" || !$scope.enrollment.personalInfo.Email) {\n        window.DI.DI.notification(\"Error\", \"Please verify your email address\", \"error\");\n        return;\n      }\n\n      $rootScope.showLoader();\n\n      const password = $scope.enrollment.webOffice.Password;\n      const webAlias = $scope.enrollment.webOffice.UserName;\n      const socialSecurityNumber = $scope.enrollment.personalInfo.socialSecurity;\n      const phoneNumber = $scope.enrollment.mailingAddress.Contact;\n      const State = $scope.enrollment.mailingAddress.State;\n      const Country = $scope.enrollment.mailingAddress.Country;\n\n      const birthDate = $scope.enrollment.personalInfo.birthMonth + \"/\" + $scope.enrollment.personalInfo.birthDay + \"/\" + $scope.enrollment.personalInfo.birthYear;\n\n      const enrollerInfo = localStorage.getItem(\"enrollerinfo\");\n      const languageInfo = sessionStorage.getItem(\"otpLang\") || \"en\";\n\nif (enrollerInfo == null || enrollerInfo === \"null\") {\n  $rootScope.hideLoader();\n  const el = document.getElementById(\"consultantInput\");\n  if (el) {\n    el.classList.add(\"pink-placeholder\");\n    el.placeholder = \"Please enter your consultant's name\";\n  }\n  return; // \u2705 this is the USA behavior\n}\n\n\n\n      if (enrollerInfo) {\n        const item = JSON.parse(enrollerInfo);\n        const consultantID = item.AssociateID;\n        const consultantName = `${item.ContactFirstName} ${item.ContactLastName}`;\n\n        updateCartWithConsultantInfo(consultantID, consultantName, password, webAlias, birthDate, socialSecurityNumber, phoneNumber, State, Country, languageInfo)\n          .then(() => {\n            proceedToCheckout();\n          })\n          .catch((error) => {\n            console.error(\"Failed to update cart with consultant info\", error);\n            $rootScope.hideLoader();\n          });\n      } else {\n        proceedToCheckout();\n      }\n    };\n\nfunction updateCartWithConsultantInfo(consultantID, consultantName, password, webAlias, birthDate, socialSecurityNumber, phoneNumber, State, Country, languageInfo) {\n  return new Promise((resolve, reject) => {\n    const xhr = new XMLHttpRequest();\n    xhr.open('POST', '/cart/update.js', true);\n    xhr.setRequestHeader('Content-Type', 'application/json');\n\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState === 4) {\n        if (xhr.status >= 200 && xhr.status < 300) {\n          try {\n            const response = JSON.parse(xhr.responseText);\n            console.log('Updated cart:', response);\n            fetchUpdatedCartData(); // Fetch and update cart data if needed\n            resolve(response);\n          } catch (error) {\n            console.error('Error parsing response JSON:', error);\n            reject(error);\n          }\n        } else {\n          console.error('Error with network request:', xhr.status, xhr.statusText);\n          reject(new Error(`Network error: ${xhr.status} ${xhr.statusText}`));\n        }\n      }\n    };\n\n    const existingReferralCookie = getCookie('existingReferral');\n    const landing_page_cookie = getCookie('landingPage');\n    const landingPageSession = sessionStorage.getItem('landingPage') || 'Landing page did not save.';\n    const closedPopupValue = sessionStorage.getItem('selectedSkip') || 'false';\n\n    const sponsorSearchValue = sessionStorage.getItem('sponsorSearch');\n    const sponsorSearch = sponsorSearchValue\n      ? 'true - searched and selected consultant link: ' + sponsorSearchValue\n      : 'false';\n\n    const noteContent = `ExistingReferral: ${existingReferralCookie}\nLandingPageCookie: ${landing_page_cookie}\nLandingPageSession: ${landingPageSession}\nPressedSkip: ${closedPopupValue}\nSponsorSearch: ${sponsorSearch}`;\n\n    const data = {\n      note: noteContent,\n      attributes: {\n        ConsultantID: consultantID,\n        ConsultantName: consultantName,\n        password: password,\n        webAlias: webAlias,\n        birthDate: birthDate,\n        socialSecurityNumber: socialSecurityNumber,\n        phone: phoneNumber,\n        country: Country,\n        language: languageInfo,\n        state: State\n      }\n    };\n\n    console.log('Payload:', JSON.stringify(data, null, 2));\n    xhr.send(JSON.stringify(data));\n  });\n}\n\n\n    function proceedToCheckout() {\n      $rootScope.hideLoader();\n      \n      // Collect all necessary details from $scope.enrollment for shipping address\n      const email = encodeURIComponent($scope.enrollment.personalInfo.Email);\n      const shippingFirstName = encodeURIComponent($scope.enrollment.mailingAddress.FirstName);\n      const shippingLastName = encodeURIComponent($scope.enrollment.mailingAddress.LastName);\n      const shippingAddress1 = encodeURIComponent($scope.enrollment.mailingAddress.StreetAddress);\n      const shippingAddress2 = encodeURIComponent($scope.enrollment.mailingAddress.Apartment || '');\n      const shippingCity = encodeURIComponent($scope.enrollment.mailingAddress.City);\n      const shippingProvince = encodeURIComponent($scope.enrollment.mailingAddress.State || \"\");\n      const shippingZip = encodeURIComponent($scope.enrollment.mailingAddress.ZipCode || \"\");\n      const shippingCountry = encodeURIComponent($scope.enrollment.mailingAddress.Country || \"US\");\n    \n      // Collect all necessary details from $scope.enrollment for billing address\n      const billingFirstName = encodeURIComponent($scope.enrollment.mailingAddress.FirstName);\n      const billingLastName = encodeURIComponent($scope.enrollment.mailingAddress.LastName);\n      const billingAddress1 = encodeURIComponent($scope.enrollment.mailingAddress.StreetAddress);\n      const billingAddress2 = encodeURIComponent($scope.enrollment.mailingAddress.Apartment || '');\n      const billingCity = encodeURIComponent($scope.enrollment.mailingAddress.City);\n      const billingProvince = encodeURIComponent($scope.enrollment.mailingAddress.State || \"\");\n      const billingZip = encodeURIComponent($scope.enrollment.mailingAddress.ZipCode || \"\");\n      const billingCountry = encodeURIComponent($scope.enrollment.mailingAddress.Country || \"US\");\n    \n      // Construct the URL with all parameters for both shipping and billing addresses\n      const checkoutUrl = `/checkout?checkout[email]=${email}&checkout[shipping_address][first_name]=${shippingFirstName}&checkout[shipping_address][last_name]=${shippingLastName}&checkout[shipping_address][address1]=${shippingAddress1}&checkout[shipping_address][address2]=${shippingAddress2}&checkout[shipping_address][city]=${shippingCity}&checkout[shipping_address][province]=${shippingProvince}&checkout[shipping_address][zip]=${shippingZip}&checkout[shipping_address][country]=${shippingCountry}&checkout[billing_address][first_name]=${billingFirstName}&checkout[billing_address][last_name]=${billingLastName}&checkout[billing_address][address1]=${billingAddress1}&checkout[billing_address][address2]=${billingAddress2}&checkout[billing_address][city]=${billingCity}&checkout[billing_address][province]=${billingProvince}&checkout[billing_address][zip]=${billingZip}&checkout[billing_address][country]=${billingCountry}`;\n      \n      // Redirect to the constructed URL\n      $window.location.href = checkoutUrl;\n    }\n\n\n\n    function handleErrorsFromResponse(response) {\n      $scope.onLastSection = false;\n      if (response.checkoutEmailUpdateV2 && response.checkoutEmailUpdateV2.checkoutUserErrors.length > 0) {\n        let errors = response.checkoutEmailUpdateV2.checkoutUserErrors;\n        $rootScope.hideLoader();\n        errors.forEach(error => {\n          window.DI.DI.notification(\"Error\", error.message, \"error\");\n        });\n      } else {\n        $rootScope.hideLoader();\n      }\n    }\n\n    $scope.addDefaultKitItem = async function () {\n      try {\n        if ($rootScope.BundlePack.length && ($rootScope.BundlePack.findIndex((pack) => pack.variant_id == $scope.DefaultEnrollKit.variants[0].id) > -1)) {\n          $rootScope.hideLoader();\n          return;\n        };\n        if (Object.keys($scope.DefaultEnrollKit).length > 0) {\n          const DefaultEnrollKit = {\n            \"id\": $scope.DefaultEnrollKit.id,\n            \"quantity\": 1,\n            \"variant_id\": $scope.DefaultEnrollKit.variants[0].id,\n            \"product_title\": $scope.DefaultEnrollKit.title,\n            \"price\": $scope.DefaultEnrollKit.price,\n            \"sku\": $scope.DefaultEnrollKit.variants[0].sku,\n            \"handle\": $scope.DefaultEnrollKit.handle,\n            \"image\": $scope.DefaultEnrollKit.featured_image\n          };\n          $rootScope.BundlePack.push(DefaultEnrollKit);\n        }\n        console.log(\"DefaultEnrollKit\", DefaultEnrollKit);\n      } catch {\n        $rootScope.hideLoader();\n      }\n    };\n\n    $scope.getBundleItems = function () {\n      jQuery.getJSON(\"/cart.js\", async function (cart) {\n        const DefaultEnrollKit = $('#oliveda-enrollment__KitItem').text();\n        if (DefaultEnrollKit) {\n          $scope.DefaultEnrollKit = JSON.parse(DefaultEnrollKit);\n        }\n\n        let oldItems = $rootScope.BundlePack;\n        $rootScope.BundlePack = cart.items;\n\n        $scope.$apply();\n        localStorage.setItem(\"cart.bundle\", JSON.stringify(theme.dzStrings.cart.items));\n\n        if (JSON.stringify(oldItems) != JSON.stringify($rootScope.BundlePack) && $rootScope.BundlePack.length) {\n          $rootScope.hideLoader();\n          return;\n        }\n\n        if ($rootScope.BundlePack.length && !sessionStorage.getItem('_enrollmentCheckoutID')) {\n          $rootScope.hideLoader();\n          return;\n        }\n\n        if (JSON.stringify(oldItems) == JSON.stringify($rootScope.BundlePack) && $rootScope.BundlePack.length) {\n          $rootScope.hideLoader();\n        }\n      });\n    };\n\n    if (!$scope.isEnrollmentJoinPage) {\n      $scope.getBundleItems();\n    }\n\n    function isEnrollmentKitAdded() {\n      return ($rootScope.BundlePack.findIndex((item) => item.handle == \"digital-enrollment-kit\") > -1) || false;\n    }\n\n    $scope._addKitToCart = function (variantId, handle) {\n      try {\n        if (handle == \"digital-enrollment-kit\" && isEnrollmentKitAdded()) {\n          window.DI.DI.notification(\"Error\", \"Digital Enrollment Kit already added\", \"error\");\n          return;\n        }\n\n        $rootScope.showLoader();\n        var data = {\n          id: variantId,\n          quantity: 1,\n        };\n        \n        const urlParams = new URLSearchParams(window.location.search);\n        const isAmishPerson = urlParams.has('AmishPerson');\n\n       if (variantId == \"42374991282371\" && !isAmishPerson) {\n        data.selling_plan = 1798930627;\n      }\n        const activeFlag = window.activeFlag !== undefined ? window.activeFlag : false; // Default to false if undefined\n        console.log('going to call check and add');\n        $.ajax({\n          type: \"POST\",\n          url: \"/cart/add.js\",\n          data: data,\n          dataType: \"json\",\n          success: function () {\n            window.DI.DI.notification(\"Success\", \"Item Added Successfully!\", \"success\");\n            $scope.getBundleItems();\n            fetchUpdatedCartData(); // Fetch and update cart data // Call updateCart here\n            checkAndAddItemIfNeeded();\n            if(activeFlag) {\n             validateAndCheckAddItem();\n            }\n              window.location.reload();\n\n          },\n          error: function () {\n            $rootScope.hideLoader();\n          },\n        });\n      } catch (error) {\n        $rootScope.hideLoader();\n      }\n    };\n\n   async function checkAndAddItemIfNeeded() {\n     console.log('inside check and add');\n    const cart = await fetchCart();\n    const promoSku = \"55041PROMO\";\n    const requiredSku = \"80065\";\n    const skuList = [\"80068\", \"80066\", \"80067\", \"80069\", \"80070\", \"80071\", \"80072\", \"80073\"];\n    const itemToAddId = '51923311264110'; // Replace with the variant ID of the item to be auto-added\n\n    // Check if promo SKU is not in the cart\n    const isPromoInCart = cart.items.some(item => item.sku === promoSku);\n\n    // Check if required SKU is in the cart\n    const isRequiredSkuInCart = cart.items.some(item => item.sku === requiredSku);\n\n    // Check if any SKU from the list is in the cart\n    const isAnySkuInCart = cart.items.some(item => skuList.includes(item.sku));\n\n    // Apply conditions\n    if (!isPromoInCart && isRequiredSkuInCart && isAnySkuInCart) {\n        // Check if the item to add is already in the cart\n        const itemExists = cart.items.some(item => item.variant_id === itemToAddId);\n\n        if (!itemExists) {\n            try {\n                // Auto-add the item\n                const response = await fetch('/cart/add.js', {\n                    method: 'POST',\n                    headers: {\n                        'Content-Type': 'application/json'\n                    },\n                    body: JSON.stringify({\n                        id: itemToAddId,\n                        quantity: 1\n                    })\n                });\n\n                const responseData = await response.json();\n                if (!response.ok) {\n                    console.error('Server response when adding item:', responseData);\n                    throw new Error('Failed to add item to cart.');\n                }\n\n                console.log('Item successfully added to cart:', responseData);\n                window.location.reload(true);\n\n            } catch (error) {\n                console.error('Error adding item to cart:', error);\n            }\n        } else {\n            console.log('Item already in the cart, skipping auto-add.');\n        }\n    } else {\n        console.log(`Conditions not met, no item will be auto-added.`);\n    }\n}\n\nasync function validateAndCheckAddItem() {\n    // Retrieve the consultant flag and date/time constraints from theme settings or metafields\n    const consultantFlag = window.consultantFlag !== undefined ? window.consultantFlag : false; // Default to false if not defined\n    const startDate = window.startDate !== undefined ? window.startDate : null; // Default to null if not defined\n    const startTime = window.startTime !== undefined ? window.startTime : null; // Default to null if not defined\n    const endDate = window.endDate !== undefined ? window.endDate : null; // Default to null if not defined\n    const endTime = window.endTime !== undefined ? window.endTime : null; // Default to null if not defined\n\n    let eligble = 0;\n    // Check if the customer is tagged as 'consultant'\n    const customerTags = window.customerTags && Array.isArray(window.customerTags) ? window.customerTags : [];\n    const isConsultant = customerTags.includes('consultant') && consultantFlag === '1';\n\n    if(consultantFlag == 1 || consultantFlag == '1')\n    {\n      eligble = 1;\n    }\n    if(customerTags.includes('consultant') && consultantFlag == '0') {\n      eligble = 0;\n    }\n    if(!customerTags.includes('consultant')) {\n        eligble = 1;\n      }\n  \n    // Check if the current date and time are within the specified range\n    const isValidDateTime = isWithinDateTimeRange(startDate, startTime, endDate, endTime);\n\n    // Call the function only if both constraints are satisfied\n    if (eligble && isValidDateTime) {\n        console.log(\"its in the promo constraints\");\n        // Check if the subtotal is 199 before tax and add the item if needed\n         checkAndAddItemIfNeeded_gift();\n    } else {\n        console.log(\"Constraints not met. Function not called.\");\n    }\n}\nasync function checkAndAddItemIfNeeded_gift() {\n    try {\n        const cart = await fetchCart();\n        const subtotalBeforeTax = cart.items_subtotal_price / 100; // Convert to currency\n        const itemToAddId = window.itemToAddId || null; // Default to null if not defined\n        const requiredSubtotal = window.requiredSubtotal !== undefined ? window.requiredSubtotal : 199; // Default to 199 if not defined\n\n\n        if (subtotalBeforeTax > requiredSubtotal) {\n            const itemExists = cart.items.some(item => item.variant_id.toString().trim() === itemToAddId);\n\n            if (!itemExists) {\n                try {\n                    const response = await fetch('/cart/add.js', {\n                        method: 'POST',\n                        headers: {\n                            'Content-Type': 'application/json'\n                        },\n                        body: JSON.stringify({\n                            id: itemToAddId,\n                            quantity: 1\n                        })\n                    });\n\n                    const responseData = await response.json();\n                    if (!response.ok) {\n                        throw new Error('Failed to add item to cart.');\n                    }\n                  console.log('Item successfully added to cart:', responseData);\n                } catch (error) {\n                    console.error('Error adding item to cart:', error);\n                }\n            }\n        }\n    } catch (error) {\n        console.error(\"Error in checkAndAddItemIfNeeded function:\", error);\n    }\n}\n    \nasync function fetchCart() {\n    const response = await fetch('/cart.js');\n    if (!response.ok) {\n        console.error('Failed to fetch cart data:', response.statusText);\n        throw new Error('Failed to fetch cart data.');\n    }\n    return await response.json();\n}\n    \n    $scope.shopify_changeItem = async function (variant_id, quantity) {\n      const promise = new Promise((res, rej) => {\n        var req = {\n          type: \"POST\",\n          url: \"/cart/change.js\",\n          data: \"quantity=\" + quantity + \"&id=\" + variant_id,\n          dataType: \"json\",\n          success: function (result) {\n            fetchUpdatedCartData(); // Fetch and update cart data // Call updateCart here\n            return res(result);\n          },\n          error: function (err) {\n            return rej(err);\n          }\n        };\n        jQuery.ajax(req);\n      });\n      return Promise.all([promise]);\n    };\n\n    $scope._removeKitToCart = function (variantId, handle) {\n      try {\n        $rootScope.showLoader();\n        $scope.shopify_changeItem(variantId, 0)\n          .then(() => {\n              fetchUpdatedCartData(); // Fetch and update cart data/ Call updateCart here\n            window.DI.DI.notification(\"Success\", \"Item Deleted Successfully!\", \"success\");\n             fetchUpdatedCartData(); // Fetch and update cart data // Call updateCart here\n            if ($rootScope.BundlePack.length == 1) {\n              window.location.reload();\n              return;\n            }\n            $scope.getBundleItems();\n            $rootScope.hideLoader();\n          })\n          .catch(() => {\n            $rootScope.hideLoader();\n          });\n      } catch (error) {\n        $rootScope.hideLoader();\n      }\n    };\n\n    $scope._updateEnrollmentCart = async function () {\n      try {\n        const bundle_pack = [...$rootScope.BundlePack];\n        if (bundle_pack.length == 0)\n          return;\n\n        bundle_pack.map((pack) => {\n          if (!pack.quantity || pack.quantity <= 0) {\n            window.DI.DI.notification(\"Error\", \"Wrong Quantity, Please enter correctly!\", \"error\");\n            $scope.getBundleItems();\n            return;\n          }\n        });\n\n        $rootScope.showLoader();\n        $scope.shopify_updateItem(0);\n        fetchUpdatedCartData(); // Fetch and update cart data// Call updateCart here\n      } catch (error) {\n        $rootScope.hideLoader();\n      }\n    };\n\n    $scope.shopify_updateItem = function (index) {\n      try {\n        const bundle_pack = [...$rootScope.BundlePack];\n        const responses = [];\n        var update = () => {\n          var req = {\n            type: \"POST\",\n            url: \"/cart/change.js\",\n            data: \"quantity=\" + bundle_pack[index].quantity + \"&id=\" + bundle_pack[index].variant_id,\n            dataType: \"json\",\n            success: function (result) {\n              responses.push(result);\n              fetchUpdatedCartData();\n              if (responses.length !== bundle_pack.length) {\n                index += 1;\n                return update(bundle_pack[index].variant_id, bundle_pack[index].quantity);\n              } else {\n                window.DI.DI.notification(\"Success\", \"Items Updated Successfully!\", \"success\");\n                $scope.getBundleItems();\n               fetchUpdatedCartData(); // Fetch and update cart data // Call updateCart here\n              }\n            },\n            error: function (err) { }\n          };\n          jQuery.ajax(req);\n        };\n        update();\n      } catch (error) {\n        $rootScope.hideLoader();\n      }\n    };\n\n$scope.viewProductInfo = function (imageUrl, productHandle) {\n  console.log('[viewProductInfo] open image', { productHandle, imageUrl });\n  if (!imageUrl) return;\n\n  var modalInstance = $uibModal.open({\n    animation: true,\n\n    // \u2705 allow click outside to close\n    backdrop: true,\n    keyboard: true,\n    closeOnEscape: true,\n\n    windowClass: 'starter-set-popup',\n    template:\n      '<div class=\"modal-body\" style=\"padding:0 !important; text-align:center !important; position:relative !important; background:#fff !important; opacity:1 !important; visibility:visible !important;\">' +\n        '<button type=\"button\" class=\"close\" style=\"position:absolute !important; right:12px !important; top:8px !important; z-index:1000 !important; font-size:28px !important; opacity:1 !important; color:#000 !important; background:transparent !important; border:none !important; cursor:pointer !important;\" ng-click=\"$dismiss()\">' +\n          '<span>&times;</span>' +\n        '</button>' +\n        '<img id=\"popup-product-image\" style=\"display:block !important; width:100% !important; max-width:900px !important; height:auto !important; margin:0 auto !important; background:#fff !important; opacity:1 !important; visibility:visible !important;\" />' +\n      '</div>'\n  });\n\n  modalInstance.opened.then(function () {\n    // get the most recently opened modal\n    var modals = document.querySelectorAll('.modal.starter-set-popup');\n    var modalEl = modals[modals.length - 1];\n    if (!modalEl) return;\n\n    // \uD83D\uDD12 force outer modal visibility\n    modalEl.style.setProperty('z-index', '999999', 'important');\n    modalEl.style.setProperty('display', 'block', 'important');\n    modalEl.style.setProperty('position', 'fixed', 'important');\n    modalEl.style.setProperty('top', '0', 'important');\n    modalEl.style.setProperty('left', '0', 'important');\n    modalEl.style.setProperty('width', '100vw', 'important');\n    modalEl.style.setProperty('height', '100vh', 'important');\n    modalEl.style.setProperty('background', 'rgba(0,0,0,0.6)', 'important');\n    modalEl.style.setProperty('opacity', '1', 'important');\n    modalEl.style.setProperty('visibility', 'visible', 'important');\n\n    // \uD83C\uDFAF position modal-dialog at 25% from top\n    var dialog = modalEl.querySelector('.modal-dialog');\n    if (dialog) {\n      dialog.style.setProperty('position', 'relative', 'important');\n      dialog.style.setProperty('top', '25%', 'important');\n      dialog.style.setProperty('transform', 'translateY(-25%)', 'important');\n    }\n\n    // \uD83D\uDDBC\uFE0F guaranteed src set (retry until img exists)\n    var tries = 0;\n    (function setSrcWhenReady() {\n      tries++;\n\n      var img = modalEl.querySelector('#popup-product-image');\n      if (img) {\n        img.src = imageUrl;\n        console.log('[viewProductInfo] img src set (tries=' + tries + '):', img.src);\n        return;\n      }\n\n      if (tries < 20) {\n        setTimeout(setSrcWhenReady, 25);\n      } else {\n        console.warn('[viewProductInfo] img never appeared to set src');\n      }\n    })();\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n    $scope.getStarterImage = function (productHandle) {\n      let productImage = \"https://cdn.shopify.com/s/files/1/0550/6085/7039/files/\";\n      productImage = productImage + \"enroll-starter-\" + productHandle + \".jpg\";\n      return productImage;\n    };\n\n    $scope.ContinueStep1 = function () {\n      $scope.UpdateToNextStep(2);\n    };\n\n    $scope.ContinueStep2 = function () {\n      $scope.UpdateToNextStep(3);\n    };\n\n    $scope.createEnrollmentExtraFields = function () {\n      try {\n        $rootScope.showLoader();\n        let request = {\n          \"customerId\": 0,\n          \"backOfficeId\": \"\",\n          \"sponsorId\": $rootScope.EnrollerInfo.AssociateID ? $rootScope.EnrollerInfo.AssociateID : 0 || 0,\n          \"customerType\": 1,\n          \"username\": $scope.enrollment.webOffice.UserName,\n          \"webAlias\": $scope.enrollment.webOffice.UserName,\n          \"textPhone\": $scope.enrollment.mailingAddress.Contact,\n          \"password\": $scope.enrollment.webOffice.Password,\n          \"birthDate\": $scope.enrollment.personalInfo.birthMonth + \"/\" + $scope.enrollment.personalInfo.birthDay + \"/\" + $scope.enrollment.personalInfo.birthYear,\n          \"taxID\": $scope.enrollment.commissionPayment,\n          \"CompanyName\": \"\",\n          \"languageCode\": \"\",\n          \"checkoutId\": \"\",\n          \"checkoutWebUrl\": \"\",\n          \"email\": $scope.enrollment.personalInfo.Email,\n          \"checkoutType\": \"free-enrollment\",\n          \"address1\": $scope.enrollment.mailingAddress.StreetAddress,\n          \"address2\": $scope.enrollment.mailingAddress.Apartment,\n          \"city\": $scope.enrollment.mailingAddress.City,\n          \"provinceCode\": $scope.enrollment.mailingAddress.State || \"UT\",\n          \"countryCode\": $scope.enrollment.mailingAddress.Country || \"US\",\n          \"zip\": $scope.enrollment.mailingAddress.ZipCode || \"84042\",\n        };\n        window.DI.Enrollment.saveCustomFields(request)\n          .then(function (response, error) {\n            if (response) {\n              $scope.createCustomerInShopify();\n            } else {\n              window.DI.DI.notification(\"Error\", \"Something went wrong!\", \"error\");\n            }\n          }).catch((error) => {\n            $rootScope.hideLoader();\n          });\n      } catch (error) {\n        $rootScope.hideLoader();\n      }\n    };\n\n    $scope.createCustomerInShopify = function () {\n      try {\n        let request = {\n          \"input\": {\n            \"acceptsMarketing\": true,\n            \"email\": $scope.enrollment.personalInfo.Email,\n            \"firstName\": $scope.enrollment.mailingAddress.FirstName,\n            \"lastName\": $scope.enrollment.mailingAddress.LastName,\n            \"password\": $scope.enrollment.webOffice.Password,\n            \"phone\": \"+1\" + $scope.enrollment.mailingAddress.Contact\n          }\n        };\n        console.log(request);\n        window.DI.Enrollment.customerCreate(request).then(function (response, error) {\n          if (response.customerCreate && response.customerCreate.customer && response.customerCreate.customer.email) {\n            window.DI.DI.notification(\"Success\", \"You have been successfully enrolled!\", \"success\");\n            setTimeout(() => {\n              window.location.href = '/pages/enrollment-kit';\n            }, 100);\n          } else if (response.customerCreate.customerUserErrors && response.customerCreate.customerUserErrors.length > 0) {\n            let errors = response.customerCreate.customerUserErrors;\n            errors.forEach(error => {\n              window.DI.DI.notification(\"Error\", error.message, \"error\");\n            });\n          }\n          $rootScope.hideLoader();\n        }).catch((Error) => {\n          console.log(Error);\n          window.DI.DI.notification(\"Error\", Error.responseText, \"error\");\n          $rootScope.hideLoader();\n        });\n      } catch (error) {\n        $rootScope.hideLoader();\n      }\n    };\n\n    $scope.SubmitEnrollment = function () {\n      if (!$scope.isPhoneChecked) {\n        window.DI.DI.notification(\"Error\", \"Please verify your Phone Number\", \"error\");\n        return;\n      }\n      if (!$scope.isEmailChecked) {\n        window.DI.DI.notification(\"Error\", \"Please verify your Email Address\", \"error\");\n        return;\n      }\n      $scope.createEnrollmentExtraFields();\n    };\n\n    $scope.elementWithNoError = function (target) {\n      try {\n        if (target === 'confirmEmail') {\n          if ($('#txtEmailAdd2').closest('.control-group').find('.has-error')[0]) {\n            return false;\n          }\n        }\n        if (target === 'username') {\n          if ($('#username').closest('.control-group').find('.has-error')[0]) {\n            return false;\n          }\n        }\n      } catch (error) { }\n      return true;\n    };\n\n$scope.SubmitApplicationForm = async function () {\n  if (!isEnrollmentKitAdded()) {\n    window.DI.DI.notification(\"Error\", \"Please add Enrollment Kit\", \"error\");\n    return;\n  }\n  await $scope.tryEnableFinalButton();\n};\n\n\n\n    const showLogoutPopup = (customer_id) => {\n      $rootScope.showLoader();\n      $.get('/search?q=&view=showlogoutpopup')\n        .then(function (response) {\n          $rootScope.hideLoader();\n          var template = $templateCache.put('showlogoutpopup.html', response);\n          $uibModal.open({\n            animation: true,\n            templateUrl: 'showlogoutpopup.html',\n            backdrop: 'static',\n            keyboard: true,\n            closeOnEscape: false,\n            windowClass: 'uibmodalclass',\n            controllerAs: 'ShowLogoutPopupCtrl',\n            controller: ['$rootScope', '$scope', '$uibModalInstance', function ($rootScope, $scope, $uibModalInstance) {\n\n              var ShowLogoutPopupCtrl = this;\n              ShowLogoutPopupCtrl.close = $uibModalInstance.close;\n              ShowLogoutPopupCtrl.CustomerName = '';\n\n              // Get Logged In User Details\n              ShowLogoutPopupCtrl._getUserDetails = function () {\n                let request = {\n                  customerId: parseInt(customer_id, 10),\n                  fields: \"\"\n                };\n                window.DI.Enrollment.GetShopifyCustomer(request)\n                  .then((response) => {\n                    if (response && response.FirstName && response.LastName) {\n                      ShowLogoutPopupCtrl.CustomerName = `${response.FirstName} ${response.LastName}`;\n                      $scope.$apply();\n                    }\n                  })\n                  .catch();\n              };\n              ShowLogoutPopupCtrl._getUserDetails();\n\n              $(document).ready(function () {\n                var REDIRECT_PATH = \"/pages/enrollment\";\n                var logoutBtn = document.querySelector('a[href^=\"/account/logout?source=enrollment\"]');\n                if (logoutBtn) {\n                  logoutBtn.addEventListener('click', function () {\n                    fetch(logoutBtn.href)\n                      .then(() => window.location.href = REDIRECT_PATH)\n                      .catch();\n                  });\n                }\n              });\n            }]\n          });\n        })\n        .catch(() => $rootScope.hideLoader());\n    };\n\nconst showAgreementPopup = () => {\n  $rootScope.showLoader();\n  $.get('/search?q=&view=showagreement')\n    .then(function (response) {\n      $rootScope.hideLoader();\n      $templateCache.put('showagreement.html', response);\n      $uibModal.open({\n        animation: true,\n        templateUrl: 'showagreement.html',\n        backdrop: 'static',\n        keyboard: true,\n        closeOnEscape: false,\n        windowClass: 'uibmodalclass',\n        controllerAs: 'ShowAgreementPopupCtrl',\n        controller: ['$rootScope', '$scope', '$uibModalInstance', function ($rootScope, $scope, $uibModalInstance) {\n          var ShowAgreementPopupCtrl = this;\n          ShowAgreementPopupCtrl.close = $uibModalInstance.close;\n        \n          $scope.initSignaturePad = function () {\n            const canvas = document.getElementById(\"signatureCanvas\");\n            const ctx = canvas.getContext(\"2d\");\n            const clearBtn = document.getElementById(\"clearSignature\");\n            const submitBtn = document.getElementById(\"submitAgreement\");\n            const nameInput = document.getElementById(\"consultantName\");\n        \n            let drawing = false;\n        \n            canvas.addEventListener(\"mousedown\", () => {\n              drawing = true;\n              ctx.beginPath();\n            });\n        \n            canvas.addEventListener(\"mouseup\", () => {\n              drawing = false;\n            });\n        \n            canvas.addEventListener(\"mousemove\", (event) => {\n              if (!drawing) return;\n              const rect = canvas.getBoundingClientRect();\n              const x = event.clientX - rect.left;\n              const y = event.clientY - rect.top;\n              ctx.lineTo(x, y);\n              ctx.stroke();\n            });\n        \n            // Touch support\n            canvas.addEventListener(\"touchstart\", function (e) {\n              e.preventDefault();\n              drawing = true;\n              const rect = canvas.getBoundingClientRect();\n              const touch = e.touches[0];\n              const x = touch.clientX - rect.left;\n              const y = touch.clientY - rect.top;\n              ctx.beginPath();\n              ctx.moveTo(x, y);\n            });\n        \n            canvas.addEventListener(\"touchmove\", function (e) {\n              e.preventDefault();\n              if (!drawing) return;\n              const rect = canvas.getBoundingClientRect();\n              const touch = e.touches[0];\n              const x = touch.clientX - rect.left;\n              const y = touch.clientY - rect.top;\n              ctx.lineTo(x, y);\n              ctx.stroke();\n            });\n        \n            canvas.addEventListener(\"touchend\", function () {\n              drawing = false;\n            });\n        \n            clearBtn.addEventListener(\"click\", () => {\n              ctx.clearRect(0, 0, canvas.width, canvas.height);\n            });\n        \n            function isCanvasBlank(canvas) {\n              const blank = document.createElement('canvas');\n              blank.width = canvas.width;\n              blank.height = canvas.height;\n              return canvas.toDataURL() === blank.toDataURL();\n            }\n        \n            submitBtn.addEventListener(\"click\", () => {\n              \n              const name = nameInput.value.trim();\n              const signatureWarning = document.getElementById(\"signatureWarning\");\n            \n              // Reset any previous red text/placeholder\n              nameInput.classList.remove(\"pink-placeholder\");\n              nameInput.placeholder = \"Enter your full name\";\n              signatureWarning.classList.add(\"displayNone\");\n            \n              // Validate name\n              if (!name) {\n                nameInput.placeholder = \"Please enter your full name\";\n                nameInput.classList.add(\"pink-placeholder\");\n                return;\n              }\n            \n              // Signature validation\n              if (isCanvasBlank(canvas)) {\n                if (signatureWarning) signatureWarning.classList.remove(\"displayNone\");\n                return;\n              }\n\n        \n              const signatureDataURL = canvas.toDataURL();\n              sessionStorage.setItem(\"consultantAgreementName\", name);\n              sessionStorage.setItem(\"consultantAgreementSignature\", signatureDataURL);\n        \n              $uibModalInstance.close(); // optional: auto-close modal after submit\n            });\n          };\n        \n          // Initialize signature pad when modal renders\n          setTimeout(() => $scope.initSignaturePad(), 100); // wait for DOM render\n        }]\n\n      });\n    })\n    .catch(() => $rootScope.hideLoader());\n};\n    \n$scope.checkConsultantAgreement = function () {\n  const name = sessionStorage.getItem(\"consultantAgreementName\");\n  const signature = sessionStorage.getItem(\"consultantAgreementSignature\");\n\n  $scope.checkboxes = $scope.checkboxes || {};\n  if (name && signature) {\n    $scope.checkboxes.accept3 = true;\n  } else {\n    $scope.checkboxes.accept3 = false;\n  }\n};\n\n$scope.handleConsultantAgreementClick = function () {\n  const name = sessionStorage.getItem(\"consultantAgreementName\");\n  const signature = sessionStorage.getItem(\"consultantAgreementSignature\");\n\n  if (!name || !signature) {\n    $scope.checkboxes.accept3 = false;\n\n    // Open the modal\n    showAgreementPopup(); // Or $scope.showAgreementPopup() if you exposed it\n  }\n};\n\n    \n function isCustomerLoggedIn() {\n      // Check if ShopifyAnalytics and meta objects exist\n      if (\n        window.customerTags && Array.isArray(window.customerTags) && window.customerTags.includes(\"consultant\")\n      ) {\n        return true;\n      }\n      return false;\n    }\n\n    function _handleShopifyCustomer() {\n      if (isCustomerLoggedIn()) {\n        const customerId = window.ShopifyAnalytics.meta.page.customerId;\n        showLogoutPopup(customerId);\n      }\n    }\n\n    _handleShopifyCustomer();\n  },\n]);\n"],
  "mappings": "AAAA,IAAI,IAAM,QAAQ,OAAO,WAAW,EACpC,IAAI,OAAO,gBAAiB,UAAY,CACtC,OAAO,SAAU,MAAO,CACtB,IAAI,MAAQ,WAAW,KAAK,EAC5B,SAAS,WAAW,OAAQ,CAC1B,IAAI,IAAM,OAAO,MAAM,EAAE,MAAM,EAAE,EAC7B,SAAW,IAAI,OAAS,EAC5B,WAAI,OAAO,SAAU,EAAG,GAAG,EACpB,WAAW,IAAI,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAC3C,CACA,OAAO,KACT,CACF,CAAC,EACD,IAAI,WAAW,iBAAkB,CAC/B,UACA,SACA,aACA,YACA,iBACA,iBACA,mBACA,WACA,SACE,QACA,OACA,WACA,UACA,eACA,eACA,iBACA,SACA,CACA,OAAO,iBAAmB,iBAC1B,OAAO,KAAO,MAAM,UAAU,KAE9B,SAAS,iBAAkB,CACzB,EAAE,QAAQ,WAAY,SAAS,KAAM,CACnC,MAAM,UAAU,KAAO,KACvB,OAAO,WAAW,CACpB,CAAC,CACH,CAGA,OAAO,WAAa,UAAY,CAC9B,SAAS,UAAY,CACnB,OAAO,KAAO,MAAM,UAAU,KAC9B,QAAQ,IAAI,4BAA6B,OAAO,IAAI,CACtD,CAAC,CACH,EAGA,SAAS,sBAAuB,CAC9B,gBAAgB,CAClB,CAEA,OAAO,WAAa,OAAO,YAAc,KAAK,MAAM,eAAe,QAAQ,oBAAoB,CAAC,GAAK,CAAC,EACtG,OAAO,WAAW,aAAe,OAAO,WAAW,cAAgB,CAAC,EACpE,OAAO,WAAW,gBAAkB,OAAO,WAAW,iBAAmB,CAAC,EAC1E,OAAO,WAAW,eAAiB,OAAO,WAAW,gBAAkB,CAAC,EACxE,OAAO,WAAW,gBAAgB,MAAQ,EAE1C,WAAW,eAAiB,WAAW,gBAAkB,KAAK,MAAM,aAAa,QAAQ,YAAY,CAAC,GAAK,CAAC,EAC5G,WAAW,cAAgB,WAAW,eAAiB,KAAK,MAAM,aAAa,QAAQ,eAAe,CAAC,GAAK,CAAC,EAC7G,WAAW,WAAa,WAAW,YAAc,KAAK,MAAM,aAAa,QAAQ,aAAa,CAAC,GAAK,CAAC,EAErG,OAAO,WAAW,eAAe,MAAQ,OAAO,WAAW,eAAe,OAAS,KACnF,OAAO,QAAU,CAAC,EAClB,OAAO,cAAgB,GACvB,OAAO,WAAW,aAAa,WAAa,0BAA0B,OAAO,WAAW,aAAa,UAAU,GAAK,KACpH,OAAO,WAAW,aAAa,SAAW,0BAA0B,OAAO,WAAW,aAAa,QAAQ,GAAK,KAChH,OAAO,WAAW,aAAa,UAAY,0BAA0B,OAAO,WAAW,aAAa,SAAS,GAAK,OAElH,OAAO,eAAiB,GACxB,OAAO,eAAiB,GACxB,OAAO,kBAAoB,GAE3B,OAAO,gBAAkB,CAAC,EAC1B,WAAW,WAAW,EACtB,OAAO,iBAAmB,CAAC,EAC3B,OAAO,qBAAuB,GAC9B,OAAO,iBAAmB,GAC1B,OAAO,oBAAsB,GAE7B,OAAO,wBAA0B,UAAY,CACvC,OAAO,SAAS,SAAS,SAAS,iBAAiB,IACrD,OAAO,qBAAuB,GAElC,EACA,OAAO,wBAAwB,EAE/B,SAAS,0BAA0B,OAAQ,CACzC,GAAI,CACF,GAAI,SAAS,OAAQ,EAAE,EAAI,EACzB,OAAI,OAAO,SAAS,EAAE,OAAS,EACtB,OAAO,SAAS,EAEhB,IAAI,OAAO,SAAS,CAAC,EAGlC,MAAgB,CAAE,CACpB,CAEA,OAAO,mBAAqB,CAC1B,0BAA2B,EAC3B,4BAA6B,EAC7B,6CAA8C,EAC9C,uCAAwC,CAC1C,EAEA,OAAO,UAAY,UAAY,CAE7B,OAAO,GAAG,WAAW,UADH,IACwB,EAAE,KAAM,UAAa,CACzD,SAAS,MAAQ,SAAS,QAAU,IACtC,WAAW,WAAW,EACtB,OAAO,gBAAkB,SAAS,KAC7B,OAAO,WAAW,eAAe,QACpC,OAAO,WAAW,eAAe,MAAQ,OAAO,gBAAgB,CAAC,EAAE,WAErE,OAAO,OAAO,GAEhB,QAAQ,IAAI,QAAQ,CACtB,CAAC,EAAE,MAAM,IAAM,WAAW,WAAW,CAAC,CACxC,EAEA,OAAO,iBAAmB,SAAU,YAAa,CAE/C,EAAE,oBAAoB,YAAc,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,EAC/D,EAAE,oBAAoB,YAAc,CAAC,EAAE,EAAE,YAAY,OAAQ,GAAG,EAChE,EAAE,oBAAoB,YAAc,CAAC,EAAE,EAAE,IAAI,iBAAkB,MAAM,EAGrE,EAAE,oBAAoB,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,UAAW,OAAO,EAClE,EAAE,oBAAoB,WAAW,EAAE,EAAE,SAAS,OAAQ,GAAG,EAErD,aAAe,GACjB,EAAE,oBAAoB,WAAW,EAAE,EAAE,IAAI,iBAAkB,MAAM,EAG9D,OAAO,oBAGd,EAEA,OAAO,gBAAkB,UAAY,CACnC,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,GAAG,EAC5C,EAAE,oBAAoB,EAAE,SAAS,OAAQ,GAAG,EAC5C,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,GAAG,EAC1C,EAAE,oBAAoB,EAAE,YAAY,OAAQ,GAAG,EAC/C,EAAE,oBAAoB,EAAE,IAAI,iBAAkB,MAAM,EACpD,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,GAAG,EAC1C,EAAE,oBAAoB,EAAE,YAAY,OAAQ,GAAG,EAC/C,EAAE,oBAAoB,EAAE,IAAI,iBAAkB,MAAM,EACpD,OAAO,SAAS,CAAE,IAAK,EAAG,SAAU,QAAS,CAAC,CAChD,EAEA,OAAO,SAAUA,GAAG,CAClBA,GAAE,qBAAqB,EAAE,GAAG,QAAS,UAAY,CAC/CA,GAAE,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,EAC9BA,GAAE,IAAI,EAAE,YAAY,OAAQ,GAAG,CACjC,CAAC,EAED,IAAI,MAAQ,SAAS,iBAAiB,qBAAqB,EAC3D,MAAM,QAAS,MAAS,CAClB,KAAK,aAAa,mBAAmB,GAAK,KAC5C,KAAK,MAAM,QAAU,OAEzB,CAAC,CACH,CAAC,EAED,OAAO,uBAAyB,UAAY,CACtC,EAAE,oBAAoB,EAAE,SAAS,MAAM,EACzC,OAAO,cAAgB,GAEvB,OAAO,cAAgB,GAEzB,OAAO,OAAO,CAChB,EAEA,OAAO,iBAAiB,eAAiB,OAAU,CACjD,OAAO,WAAW,aAAa,MAAQ,GACvC,OAAO,WAAW,aAAa,aAAe,GAC9C,OAAO,WAAW,UAAY,CAAC,EAC/B,OAAO,WAAW,eAAe,QAAU,GAC3C,eAAe,QAAQ,qBAAsB,KAAK,UAAU,OAAO,UAAU,CAAC,CAChF,CAAC,EAEG,OAAO,OAAO,WAAW,gBAAgB,KAAK,EAElD,OAAO,kBAAoB,UAAY,CAAE,EAEzC,OAAO,YAAc,SAAU,OAAQ,CACrC,QAAQ,IAAI,oBAAqB,OAAO,WAAW,sBAAsB,EACzE,QAAQ,IAAI,aAAa,EACzB,OAAO,uBAAuB,CAChC,EAEA,OAAO,iBAAmB,SAAU,QAAS,CAC3C,IAAI,GAAK,IAAM,QAAQ,OAAO,GAC1B,EAAE,EAAE,EAAE,GAAG,UAAU,IACrB,EAAE,EAAE,EAAE,QAAQ,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,OAAO,EACrE,EAAE,EAAE,EAAE,QAAQ,gBAAgB,EAAE,YAAY,WAAW,EAE3D,EAEA,OAAO,eAAiB,gBAAkB,CACpC,OAAO,WAAW,UAAU,WAC9B,WAAW,WAAW,EACtB,OAAO,oBAAsB,GAC7B,MAAM,OAAO,GAAG,WAAW,eAAe,OAAO,WAAW,UAAU,QAAQ,EAAE,KAAK,SAAU,SAAU,MAAO,CAC9G,eAAQ,IAAI,kBAAmB,SAAU,KAAK,EAC1C,UAAY,SAAS,QAAU,GAC7B,SAAS,KACX,OAAO,kBAAoB,IAO7B,OAAO,WAAW,UAAU,SAAW,GACvC,OAAO,GAAG,GAAG,aAAa,QAAS,yBAA0B,OAAO,EACpE,OAAO,kBAAoB,IAE7B,OAAO,oBAAsB,GAC7B,WAAW,WAAW,EACf,QACT,CAAC,EAAE,MAAO,OAAU,CAClB,OAAO,kBAAoB,GAC3B,OAAO,oBAAsB,GAC7B,WAAW,WAAW,CACxB,CAAC,EACD,OAAO,OAAO,EAElB,EAEA,OAAO,kBAAoB,eAAgB,UAAW,CACpD,IAAI,OAAS,IAAI,OAAO,iHAAiH,EACzI,GAAI,OAAO,WAAW,aAAa,OAAS,OAAO,KAAK,OAAO,WAAW,aAAa,KAAK,EAAG,CACzF,WAAW,WAAW,WAAW,EACrC,OAAO,iBAAmB,GAC1B,IAAI,QAAU,CACZ,MAAS,OAAO,WAAW,aAAa,KAC1C,EAEA,MAAM,OAAO,GAAG,WAAW,uBAAuB,OAAO,EAAE,KAAK,SAAU,SAAU,MAAO,CACzF,eAAQ,IAAI,wBAAyB,QAAQ,EACzC,UAAY,SAAS,QACnB,SAAS,KACX,OAAO,eAAiB,IAQ1B,OAAO,WAAW,aAAa,MAAQ,GACvC,OAAO,WAAW,aAAa,aAAe,GAC9C,OAAO,GAAG,GAAG,aAAa,QAAS,0BAA2B,OAAO,EACrE,OAAO,eAAiB,IAEtB,WAAW,WAAW,WAAW,EACrC,OAAO,iBAAmB,GACnB,QACT,CAAC,EAAE,MAAM,IAAM,CACT,WAAW,WAAW,WAAW,EACrC,OAAO,eAAiB,GACxB,OAAO,iBAAmB,EAC5B,CAAC,EACD,OAAO,OAAO,CAChB,CACF,EACJ,OAAO,kBAAoB,UAAY,CACrC,IAAI,KAAO,OAAO,WAAW,eAAe,SAAW,IAAI,KAAK,EAChE,GAAK,IAEL,KAAM,IAAI,QAAQ,cAAe,EAAE,EACnC,OAAO,WAAW,eAAe,QAAU,IAEvC,IAAI,OAAS,KACf,IAAM,IAAI,MAAM,EAAG,EAAE,EACrB,OAAO,WAAW,eAAe,QAAU,KAG7C,IAAI,QAAU,IAGd,GAFI,QAAQ,WAAW,IAAI,IAAG,QAAU,IAAM,QAAQ,MAAM,CAAC,GAEzD,QAAQ,QAAQ,GAAG,EAAI,EAAG,CAC5B,OAAO,GAAG,GAAG,aAAa,QAAS,8BAA+B,OAAO,EACzE,OAAO,eAAiB,GACxB,MACF,CAEA,IAAI,WAAa,QAAQ,QAAQ,MAAO,EAAE,EACtC,MAAQ,WAAW,OAEvB,GAAI,MAAQ,GAAK,MAAQ,GAAI,CAC3B,OAAO,GAAG,GAAG,aAAa,QAAS,gDAA4C,OAAO,EACtF,OAAO,eAAiB,GACxB,MACF,CAEA,WAAW,WAAW,EACtB,OAAO,eAAiB,GAExB,GAAI,CACF,IAAI,IAAM,OAAO,GAAG,WAAW,kBAAkB,OAAO,EAGxD,GAAI,KAAO,OAAO,IAAI,MAAS,WAAY,CACzC,IAAI,KAAK,SAAU,SAAU,CAC3B,QAAQ,IAAI,oBAAqB,QAAQ,EAErC,UAAY,SAAS,OACnB,SAAS,MACX,OAAO,GAAG,GAAG,aAAa,UAAW,kBAAmB,SAAS,EACjE,OAAO,eAAiB,KAExB,OAAO,WAAW,eAAe,QAAU,GAC3C,OAAO,GAAG,GAAG,aAAa,QAAS,oCAAqC,OAAO,EAC/E,OAAO,eAAiB,KAG1B,OAAO,WAAW,eAAe,QAAU,GAC3C,OAAO,GAAG,GAAG,aAAa,QAAS,6BAA8B,OAAO,EACxE,OAAO,eAAiB,IAG1B,WAAW,WAAW,EACrB,OAAO,aAAe,OAAO,YAAY,GAAM,OAAO,OAAO,CAChE,EAAG,SAAU,IAAK,CAChB,QAAQ,MAAM,0BAA2B,GAAG,EAC5C,OAAO,GAAG,GAAG,aAAa,QAAS,mCAAoC,OAAO,EAC9E,OAAO,eAAiB,GAExB,WAAW,WAAW,EACrB,OAAO,aAAe,OAAO,YAAY,GAAM,OAAO,OAAO,CAChE,CAAC,EAED,MACF,CAGA,OAAO,GAAG,GAAG,aAAa,QAAS,mCAAoC,OAAO,EAC9E,OAAO,eAAiB,GACxB,WAAW,WAAW,CACxB,OAAS,IAAK,CACZ,QAAQ,MAAM,8BAA+B,GAAG,EAChD,OAAO,GAAG,GAAG,aAAa,QAAS,mCAAoC,OAAO,EAC9E,OAAO,eAAiB,GACxB,WAAW,WAAW,CACxB,EACF,EAMA,SAAS,2BAA2B,aAAc,CAChD,MAAM,aAAe,IAAI,QAAS,SAAY,CAC5C,GAAI,CACF,OAAO,GAAG,WAAW,uBAAuB,YAAY,EAAE,KACvD,UAAa,CAEZ,MAAM,KAAO,UAAY,SAAS,KAElC,OAAI,MAAM,QAAQ,IAAI,EAAU,QAAQ,IAAI,EACC,QAAzC,MAAQ,OAAO,MAAS,SAAyB,CAAC,IAAI,EAC3C,CAAC,CAD2C,CAE7D,EACA,IAAM,QAAQ,CAAC,CAAC,CAClB,CACF,MAAY,CACV,QAAQ,CAAC,CAAC,CACZ,CACF,CAAC,EAEK,iBAAmB,IAAI,QAAS,SAAY,CAChD,GAAI,CACF,OAAO,GAAG,WAAW,uBAAuB,CAAE,MAAO,YAAa,CAAC,EAAE,KAClE,UAAa,QAAQ,CAAC,EAAE,UAAY,SAAS,KAAK,EACnD,IAAM,QAAQ,EAAK,CACrB,CACF,MAAY,CACV,QAAQ,EAAK,CACf,CACF,CAAC,EAED,OAAO,QAAQ,IAAI,CAAC,aAAc,gBAAgB,CAAC,CACrD,CAQA,OAAO,2BAA6B,SAAU,UAAY,GAAO,CAC/D,IAAI,OAAS,IAAI,OAAO,iHAAiH,EACzI,MAAM,OAAS,OAAO,WAAW,aAAa,OAAS,IAAI,KAAK,EAC5D,CAAC,OAAS,CAAC,OAAO,KAAK,KAAK,IAE5B,WAAW,WAAW,WAAW,EACrC,OAAO,iBAAmB,GAE1B,2BAA2B,KAAK,EAAE,KAChC,CAAC,CAAC,UAAW,gBAAgB,IAAM,CACjC,UAAY,MAAM,QAAQ,SAAS,EAAI,UAAY,CAAC,EAGhD,mBAAqB,IAAQ,CAAC,UAAU,QAC1C,OAAO,GAAG,GAAG,aAAa,UAAW,kBAAmB,SAAS,EACjE,OAAO,eAAiB,IAGhB,UAAU,KAAK,MAAQ,MAAQ,KAAK,eAAiB,CAAC,GAM9D,OAAO,WAAW,aAAa,MAAQ,GACvC,OAAO,WAAW,aAAa,aAAe,GAC9C,OAAO,GAAG,GAAG,aAAa,QAAS,0BAA2B,OAAO,EACrE,OAAO,eAAiB,KARxB,OAAO,GAAG,GAAG,aAAa,UAAW,kBAAmB,SAAS,EACjE,OAAO,eAAiB,IAUtB,WAAW,WAAW,WAAW,EACrC,OAAO,iBAAmB,GACzB,OAAO,aAAe,OAAO,YAAY,GAAM,OAAO,OAAO,CAChE,EACA,IAAM,CACA,WAAW,WAAW,WAAW,EACrC,OAAO,eAAiB,GACxB,OAAO,iBAAmB,GAC1B,OAAO,GAAG,GAAG,aAAa,QAAS,mCAAoC,OAAO,EAC7E,OAAO,aAAe,OAAO,YAAY,GAAM,OAAO,OAAO,CAChE,CACF,EACF,EAeA,OAAO,WAAa,OAAO,YAAc,CAAC,EAC1C,OAAO,WAAW,eAAiB,OAAO,WAAW,gBAAkB,CAAC,EACxE,OAAO,GAAK,OAAO,IAAM,CAAE,iBAAkB,CAAC,EAAG,QAAS,CAAC,CAAE,EAC7D,OAAO,iBAAmB,GAG1B,IAAI,gBAAkB,CACpB,QAAU,KAAK,QAAU,KAAK,YAAc,KAAK,OAAS,KAAK,MAAQ,KAAK,MAAQ,KACpF,QAAU,KAAK,YAAc,KAAK,WAAa,KAAK,OAAS,KAC7D,iBAAiB,KAAK,GAAK,KAAK,QAAU,KAAK,OAAS,KAAK,OAAS,IACxE,EAKA,SAAS,iBAAiB,IAAK,CAC7B,GAAI,CAAC,IAAK,OAAO,IACjB,IAAI,QAAU,IAAI,QAAQ,UAAW,EAAE,EACvC,eAAU,QAAQ,QAAQ,WAAY,MAAM,EAC1B,QAAQ,gBAAiB,MAAM,EAC/B,QAAQ,iBAAkB,MAAM,EAElD,QAAU,QAAQ,QAAQ,eAAgB,IAAI,EACvC,OACT,CAEA,SAAS,YAAa,CACpB,IAAI,GAAK,SAAS,eAAe,YAAY,EAC7C,GAAI,CAAC,GACH,eAAQ,KAAK,wCAAwC,EAC9C,CAAC,EAGV,IAAI,IAAM,GAAG,aAAe,GAAG,WAAa,GACxC,KAAO,CAAC,EACZ,GAAI,CACF,KAAO,KAAK,MAAM,KAAO,IAAI,CAC/B,OAAS,GAAI,CACX,QAAQ,KAAK,+CAA2C,EAAE,EAC1D,GAAI,CACF,KAAO,KAAK,MAAM,iBAAiB,GAAG,GAAK,IAAI,CACjD,OAAS,GAAI,CACX,eAAQ,MAAM,oCAAqC,EAAE,EAC9C,CAAC,CACV,CACF,CAGA,cAAO,KAAK,eAAe,EAAE,QAAQ,SAAU,SAAU,CACvD,IAAI,IAAM,gBAAgB,QAAQ,EAC9B,KAAK,GAAG,GAAK,CAAC,KAAK,QAAQ,IAAG,KAAK,QAAQ,EAAI,KAAK,GAAG,EAC7D,CAAC,EAED,OAAO,KAAK,IAAI,EAAE,QAAQ,SAAU,EAAG,CACrC,IAAI,GAAK,OAAO,CAAC,EAAE,YAAY,EAC1B,KAAK,EAAE,IAAG,KAAK,EAAE,EAAI,KAAK,CAAC,EAClC,CAAC,EAEM,IACT,CAGA,SAAS,iBAAiB,KAAM,CAC9B,GAAI,CAAC,MAAM,QAAQ,IAAI,GAAK,CAAC,KAAK,OAAQ,MAAO,CAAC,EAClD,IAAI,MAAQ,KAAK,CAAC,EAGlB,OAAI,OAAS,OAAO,OAAU,WAAa,SAAU,OAAS,SAAU,OAC/D,KAAK,IAAI,SAAU,EAAG,CAC3B,MAAO,CAAE,KAAM,OAAO,EAAE,MAAQ,EAAE,MAAQ,EAAE,EAAG,KAAM,OAAO,EAAE,MAAQ,EAAE,MAAQ,EAAE,CAAE,CACtF,CAAC,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,IAAM,CAAC,EAGjD,OAAO,OAAU,SACZ,KAAK,IAAI,SAAU,EAAG,CAAE,MAAO,CAAE,KAAM,OAAO,CAAC,EAAG,KAAM,OAAO,CAAC,CAAE,CAAG,CAAC,GAE/E,QAAQ,KAAK,qCAAsC,KAAK,EACjD,CAAC,EACV,CAGA,SAAS,kBAAkB,WAAY,iBAAkB,CACvD,GAAI,CAAC,WAAY,MAAO,GACxB,GAAI,iBAAiB,UAAU,EAAG,OAAO,WACzC,IAAI,GAAK,OAAO,UAAU,EAAE,YAAY,EACxC,GAAI,iBAAiB,EAAE,EAAG,OAAO,GACjC,IAAI,IAAM,gBAAgB,UAAU,EACpC,OAAI,KAAO,iBAAiB,GAAG,EAAU,IAClC,EACT,CAGA,SAAS,WAAW,EAAG,CACrB,GAAI,GAAK,OAAO,EAAE,MAAS,WAAY,OAAO,EAC9C,GAAI,OAAO,SAAW,QAAQ,SAC5B,GAAI,CACF,IAAI,GAAK,QAAQ,QAAQ,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAC3D,OAAO,GAAG,KAAK,CAAC,CAClB,MAAY,CAAqB,CAGnC,OAAO,IAAI,QAAQ,SAAU,QAAS,CAAE,QAAQ,CAAC,CAAG,CAAC,CACvD,CAGA,OAAO,oBAAsB,SAAU,KAAM,CAC3C,GAAI,CAAC,MAAQ,KAAK,SAAW,EAC3B,eAAQ,KAAK,kDAAmD,IAAI,EAC7D,WAAW,EAEpB,QAAQ,IAAI,uCAAwC,IAAI,EACxD,OAAO,iBAAmB,GAE1B,IAAI,EAAK,OAAO,IAAM,OAAO,GAAG,YAAc,OAAO,GAAG,WAAW,UAC/D,OAAO,GAAG,WAAW,UAAU,IAAI,EACnC,KAEJ,OAAK,EAME,WAAW,CAAC,EAAE,KAAK,SAAU,KAAM,CACxC,QAAQ,IAAI,+BAAgC,IAAI,EAEhD,IAAI,OAAS,CAAC,EACV,MAAQ,KAAK,QAAU,GAAK,MAAM,QAAQ,KAAK,IAAI,EACrD,OAAS,KAAK,KAAK,IAAI,SAAU,EAAG,CAClC,OAAI,GAAK,OAAO,GAAM,SACb,CAAE,KAAM,OAAO,EAAE,WAAa,EAAE,WAAa,EAAE,EAAG,KAAM,OAAO,EAAE,WAAa,EAAE,WAAa,EAAE,CAAE,EAEnG,CAAE,KAAM,OAAO,GAAK,EAAE,EAAG,KAAM,OAAO,GAAK,EAAE,CAAE,CACxD,CAAC,EAAE,OAAO,SAAU,EAAG,CAAE,OAAO,EAAE,MAAQ,EAAE,IAAM,CAAC,EAEnD,QAAQ,KAAK,mCAAoC,IAAI,EAIvD,OAAO,GAAG,QAAU,OAChB,OAAO,SACT,OAAO,GAAG,iBAAiB,IAAI,EAAI,QAErC,OAAO,WAAW,eAAe,MAAQ,IAC3C,EAAG,SAAU,IAAK,CAChB,QAAQ,MAAM,kCAAmC,GAAG,EACpD,OAAO,GAAG,QAAU,CAAC,EACrB,OAAO,WAAW,eAAe,MAAQ,IAC3C,CAAC,EAAE,KAAK,UAAY,CAClB,OAAO,iBAAmB,GAC1B,OAAO,YAAY,CACrB,CAAC,GAjCC,QAAQ,KAAK,2DAA4D,IAAI,EAC7E,OAAO,iBAAmB,GACnB,WAAW,EAgCtB,EAGA,OAAO,gBAAkB,UAAY,CACnC,IAAI,WAAa,OAAO,WAAW,gBAAkB,OAAO,WAAW,eAAe,QAElF,SAAW,gBAAgB,UAAU,GAAK,OAAO,YAAc,EAAE,EAAE,YAAY,EAE/E,IAAM,kBAAkB,WAAY,OAAO,GAAG,gBAAgB,EAClE,QAAQ,IAAI,gCAAiC,WAAY,cAAU,IAAK,YAAa,QAAQ,EAE7F,OAAO,iBAAmB,GAE1B,IAAI,IAAM,IAAO,OAAO,GAAG,iBAAiB,GAAG,GAAK,CAAC,EAAK,CAAC,EAC3D,GAAI,CAAC,IAAI,QAAU,UAAY,SAAS,SAAW,EAAG,CACpD,QAAQ,KAAK,2BAA4B,SAAU,iCAA4B,EAE/E,OAAO,oBAAoB,QAAQ,EACnC,MACF,CAEA,OAAO,GAAG,QAAU,iBAAiB,GAAG,EACxC,OAAO,WAAW,eAAe,MAAQ,KAEzC,OAAO,WAAW,UAAY,CAC5B,OAAO,iBAAmB,GAC1B,QAAQ,IAAI,mCAAoC,OAAO,GAAG,QAAQ,OAAQ,OAAO,GAAG,QAAQ,MAAM,EAAG,CAAC,CAAC,CACzG,CAAC,CACH,GAGC,UAAyB,CACxB,SAAS,SAAU,CACjB,IAAI,KAAO,WAAW,EACtB,OAAI,OAAO,KAAK,IAAI,EAAE,QACpB,OAAO,GAAG,iBAAmB,KACzB,OAAO,YAAY,gBAAgB,SAAS,OAAO,WAAW,OAAO,eAAe,EACjF,IAEF,EACT,CAEA,GAAI,CAAC,QAAQ,EACX,IAAI,SAAW,EACX,MAAQ,YAAY,UAAY,CAClC,YACI,QAAQ,GAAK,SAAW,KAAI,cAAc,KAAK,CACrD,EAAG,GAAG,CAEV,GAAG,EAGH,OAAO,OAAO,oCAAqC,SAAU,EAAG,EAAG,CAC7D,IAAM,GAAG,OAAO,gBAAgB,CACtC,CAAC,EAKD,OAAO,iBAAmB,UAAY,CACpC,WAAW,WAAW,EAEtB,MAAM,QAAU,CACd,WAAY,EACZ,aAAc,GACd,UAAY,WAAW,cAAgB,WAAW,aAAa,YAAe,WAAW,aAAa,YAAc,EACpH,aAAc,EACd,SAAU,OAAO,WAAW,UAAU,SACtC,SAAU,OAAO,WAAW,UAAU,SACtC,UAAW,OAAO,WAAW,eAAe,QAC5C,SAAU,OAAO,WAAW,UAAU,SACtC,UAAW,OAAO,WAAW,aAAa,WAAa,IAAM,OAAO,WAAW,aAAa,SAAW,IAAM,OAAO,WAAW,aAAa,UAC5I,MAAO,OAAO,WAAW,kBACzB,YAAa,GACb,aAAc,GACd,WAAY,GACZ,eAAgB,GAChB,MAAO,OAAO,WAAW,aAAa,MACtC,aAAc,YAChB,EAEA,OAAO,IAAI,QAAS,SAAY,CAC9B,GAAI,CACF,MAAM,IAAM,OAAO,GAAG,WAAW,iBAAiB,OAAO,EAEzD,GAAI,KAAO,OAAO,IAAI,MAAS,WAAY,CACzC,IAAI,KACD,UAAa,CAER,UACF,OAAO,cAAgB,GACtB,OAAO,aAAe,OAAO,YAAY,GAAM,OAAO,OAAO,EAC9D,QAAQ,EAAI,IAEZ,OAAO,GAAG,GAAG,aAAa,QAAS,wBAAyB,OAAO,EACnE,QAAQ,EAAK,GAEf,WAAW,WAAW,CACxB,EACA,IAAM,CACJ,QAAQ,EAAK,EACb,WAAW,WAAW,CACxB,CACF,EACA,MACF,CAEA,QAAQ,EAAK,EACb,WAAW,WAAW,CACxB,MAAY,CACV,QAAQ,EAAK,EACb,WAAW,WAAW,CACxB,CACF,CAAC,CACH,EAGA,SAAS,iBAAkB,CACzB,OAAO,cAAgB,GACtB,OAAO,aAAe,OAAO,YAAY,GAAM,OAAO,OAAO,CAChE,CAEA,SAAS,kBAAmB,CAC1B,OAAO,cAAgB,GACtB,OAAO,aAAe,OAAO,YAAY,GAAM,OAAO,OAAO,CAChE,CAEA,OAAO,qBAAuB,gBAAkB,CAG9C,GADc,MAAM,OAAO,iBAAiB,EAE1C,uBAAgB,EACT,GAIT,MAAM,gBAAkB,aAAa,QAAQ,cAAc,EAC3D,GAAI,CAAC,iBAAmB,kBAAoB,OAAQ,CAClD,MAAM,GAAK,SAAS,eAAe,iBAAiB,EACpD,OAAI,KACF,GAAG,UAAU,IAAI,kBAAkB,EACnC,GAAG,YAAc,uCAEnB,OAAO,GAAG,GAAG,aAAa,QAAS,sCAAuC,OAAO,EACjF,iBAAiB,EACV,EACT,CAEA,MAAM,KAAO,KAAK,MAAM,eAAe,EACjC,aAAe,KAAK,aAAe,EACnC,eAAiB,GAAG,KAAK,kBAAoB,EAAE,IAAI,KAAK,iBAAmB,EAAE,GAAG,KAAK,EAErF,SAAW,OAAO,WAAW,UAAU,SACvC,SAAW,OAAO,WAAW,UAAU,SACvC,qBAAuB,OAAO,WAAW,aAAa,eACtD,YAAc,OAAO,WAAW,eAAe,QAC/C,MAAQ,OAAO,WAAW,eAAe,MACzC,QAAU,OAAO,WAAW,eAAe,QAC3C,aAAe,eAAe,QAAQ,SAAS,GAAK,KACpD,UACJ,OAAO,WAAW,aAAa,WAAa,IAC5C,OAAO,WAAW,aAAa,SAAW,IAC1C,OAAO,WAAW,aAAa,UAejC,OAbe,MAAM,6BACnB,aACA,eACA,SACA,SACA,UACA,qBACA,YACA,MACA,QACA,YACF,GAGE,gBAAgB,EACT,KAGT,OAAO,GAAG,GAAG,aAAa,QAAS,8CAA+C,OAAO,EACzF,iBAAiB,EACV,GACT,EAGI,OAAO,uBAAyB,SAAU,iBAAmB,GAAO,CAC7D,OAAO,WAAW,yBACrB,OAAO,WAAW,uBAAyB,iBAAiB,uBAAuB,uBAAuB,cAAc,CAAC,EAAE,QAG7H,WAAW,WAAW,EACtB,IAAI,QAAU,CACZ,WAAc,GACd,mBAAsB,OAAO,WAAW,sBAC1C,EACA,OAAO,GAAG,WAAW,uBAAuB,OAAO,EAAE,KAAK,SAAU,SAAU,MAAO,CACnF,GAAI,SAAS,4BAA8B,SAAS,2BAA2B,mBAAmB,QAAU,EAAG,CAE7G,GADA,SAAW,SAAS,2BAA2B,SAC3C,SAAS,wBAA0B,MAAQ,SAAS,uBAAuB,OAAS,GAAO,CAC7F,WAAW,WAAW,EACtB,OAAO,mBAAmB,EAC1B,MACF,CACA,iBAAiB,uBAAyB,SAC1C,WAAW,WAAW,EAClB,kBACF,OAAO,iBAAiB,EAE3B,qBAAqB,CACtB,MAAW,SAAS,4BAA8B,SAAS,2BAA2B,mBAAmB,OAAS,GACnG,SAAS,2BAA2B,mBAC1C,QAAQC,QAAS,CACtB,OAAO,GAAG,GAAG,aAAa,QAASA,OAAM,QAAS,OAAO,CAC3D,CAAC,EACD,WAAW,WAAW,CAI1B,CAAC,EAAE,MAAO,OAAU,CAClB,WAAW,WAAW,CACxB,CAAC,CACH,EAEA,OAAO,8BAAgC,UAAY,CACjD,GAAI,OAAO,WAAW,aAAa,OAAS,IAAM,CAAC,OAAO,WAAW,aAAa,MAAO,CACvF,OAAO,GAAG,GAAG,aAAa,QAAS,mCAAoC,OAAO,EAC9E,MACF,CAEA,WAAW,WAAW,EAEtB,MAAM,SAAW,OAAO,WAAW,UAAU,SACvC,SAAW,OAAO,WAAW,UAAU,SACvC,qBAAuB,OAAO,WAAW,aAAa,eACtD,YAAc,OAAO,WAAW,eAAe,QAC/C,MAAQ,OAAO,WAAW,eAAe,MACzC,QAAU,OAAO,WAAW,eAAe,QAE3C,UAAY,OAAO,WAAW,aAAa,WAAa,IAAM,OAAO,WAAW,aAAa,SAAW,IAAM,OAAO,WAAW,aAAa,UAE7I,aAAe,aAAa,QAAQ,cAAc,EAClD,aAAe,eAAe,QAAQ,SAAS,GAAK,KAEhE,GAAI,cAAgB,MAAQ,eAAiB,OAAQ,CACnD,WAAW,WAAW,EACtB,MAAM,GAAK,SAAS,eAAe,iBAAiB,EAChD,KACF,GAAG,UAAU,IAAI,kBAAkB,EACnC,GAAG,YAAc,uCAEnB,MACF,CAIM,GAAI,aAAc,CAChB,MAAM,KAAO,KAAK,MAAM,YAAY,EAC9B,aAAe,KAAK,YACpB,eAAiB,GAAG,KAAK,gBAAgB,IAAI,KAAK,eAAe,GAEvE,6BAA6B,aAAc,eAAgB,SAAU,SAAU,UAAW,qBAAsB,YAAa,MAAO,QAAS,YAAY,EACtJ,KAAK,IAAM,CACV,kBAAkB,CACpB,CAAC,EACA,MAAO,OAAU,CAChB,QAAQ,MAAM,6CAA8C,KAAK,EACjE,WAAW,WAAW,CACxB,CAAC,CACL,MACE,kBAAkB,CAEtB,EAEJ,SAAS,6BAA6B,aAAc,eAAgB,SAAU,SAAU,UAAW,qBAAsB,YAAa,MAAO,QAAS,aAAc,CAClK,OAAO,IAAI,QAAQ,CAAC,QAAS,SAAW,CACtC,MAAM,IAAM,IAAI,eAChB,IAAI,KAAK,OAAQ,kBAAmB,EAAI,EACxC,IAAI,iBAAiB,eAAgB,kBAAkB,EAEvD,IAAI,mBAAqB,UAAY,CACnC,GAAI,IAAI,aAAe,EACrB,GAAI,IAAI,QAAU,KAAO,IAAI,OAAS,IACpC,GAAI,CACF,MAAM,SAAW,KAAK,MAAM,IAAI,YAAY,EAC5C,QAAQ,IAAI,gBAAiB,QAAQ,EACrC,qBAAqB,EACrB,QAAQ,QAAQ,CAClB,OAAS,MAAO,CACd,QAAQ,MAAM,+BAAgC,KAAK,EACnD,OAAO,KAAK,CACd,MAEA,QAAQ,MAAM,8BAA+B,IAAI,OAAQ,IAAI,UAAU,EACvE,OAAO,IAAI,MAAM,kBAAkB,IAAI,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC,CAGxE,EAEA,MAAM,uBAAyB,UAAU,kBAAkB,EACrD,oBAAsB,UAAU,aAAa,EAC7C,mBAAqB,eAAe,QAAQ,aAAa,GAAK,6BAC9D,iBAAmB,eAAe,QAAQ,cAAc,GAAK,QAE7D,mBAAqB,eAAe,QAAQ,eAAe,EAC3D,cAAgB,mBAClB,iDAAmD,mBACnD,QAQE,KAAO,CACX,KAPkB,qBAAqB,sBAAsB;AAAA,qBAC9C,mBAAmB;AAAA,sBAClB,kBAAkB;AAAA,eACzB,gBAAgB;AAAA,iBACd,aAAa,GAIxB,WAAY,CACV,aAAc,aACd,eAAgB,eAChB,SACA,SACA,UACA,qBACA,MAAO,YACP,QAAS,QACT,SAAU,aACV,MAAO,KACT,CACF,EAEA,QAAQ,IAAI,WAAY,KAAK,UAAU,KAAM,KAAM,CAAC,CAAC,EACrD,IAAI,KAAK,KAAK,UAAU,IAAI,CAAC,CAC/B,CAAC,CACH,CAGI,SAAS,mBAAoB,CAC3B,WAAW,WAAW,EAGtB,MAAM,MAAQ,mBAAmB,OAAO,WAAW,aAAa,KAAK,EAC/D,kBAAoB,mBAAmB,OAAO,WAAW,eAAe,SAAS,EACjF,iBAAmB,mBAAmB,OAAO,WAAW,eAAe,QAAQ,EAC/E,iBAAmB,mBAAmB,OAAO,WAAW,eAAe,aAAa,EACpF,iBAAmB,mBAAmB,OAAO,WAAW,eAAe,WAAa,EAAE,EACtF,aAAe,mBAAmB,OAAO,WAAW,eAAe,IAAI,EACvE,iBAAmB,mBAAmB,OAAO,WAAW,eAAe,OAAS,EAAE,EAClF,YAAc,mBAAmB,OAAO,WAAW,eAAe,SAAW,EAAE,EAC/E,gBAAkB,mBAAmB,OAAO,WAAW,eAAe,SAAW,IAAI,EAGrF,iBAAmB,mBAAmB,OAAO,WAAW,eAAe,SAAS,EAChF,gBAAkB,mBAAmB,OAAO,WAAW,eAAe,QAAQ,EAC9E,gBAAkB,mBAAmB,OAAO,WAAW,eAAe,aAAa,EACnF,gBAAkB,mBAAmB,OAAO,WAAW,eAAe,WAAa,EAAE,EACrF,YAAc,mBAAmB,OAAO,WAAW,eAAe,IAAI,EACtE,gBAAkB,mBAAmB,OAAO,WAAW,eAAe,OAAS,EAAE,EACjF,WAAa,mBAAmB,OAAO,WAAW,eAAe,SAAW,EAAE,EAC9E,eAAiB,mBAAmB,OAAO,WAAW,eAAe,SAAW,IAAI,EAGpF,YAAc,6BAA6B,KAAK,2CAA2C,iBAAiB,0CAA0C,gBAAgB,yCAAyC,gBAAgB,yCAAyC,gBAAgB,qCAAqC,YAAY,yCAAyC,gBAAgB,oCAAoC,WAAW,wCAAwC,eAAe,0CAA0C,gBAAgB,yCAAyC,eAAe,wCAAwC,eAAe,wCAAwC,eAAe,oCAAoC,WAAW,wCAAwC,eAAe,mCAAmC,UAAU,uCAAuC,cAAc,GAGt5B,QAAQ,SAAS,KAAO,WAC1B,CAIA,SAAS,yBAAyB,SAAU,CAE1C,GADA,OAAO,cAAgB,GACnB,SAAS,uBAAyB,SAAS,sBAAsB,mBAAmB,OAAS,EAAG,CAClG,IAAI,OAAS,SAAS,sBAAsB,mBAC5C,WAAW,WAAW,EACtB,OAAO,QAAQ,OAAS,CACtB,OAAO,GAAG,GAAG,aAAa,QAAS,MAAM,QAAS,OAAO,CAC3D,CAAC,CACH,MACE,WAAW,WAAW,CAE1B,CAEA,OAAO,kBAAoB,gBAAkB,CAC3C,GAAI,CACF,GAAI,WAAW,WAAW,QAAW,WAAW,WAAW,UAAW,MAAS,KAAK,YAAc,OAAO,iBAAiB,SAAS,CAAC,EAAE,EAAE,EAAI,GAAK,CAC/I,WAAW,WAAW,EACtB,MACF,CACA,GAAI,OAAO,KAAK,OAAO,gBAAgB,EAAE,OAAS,EAAG,CACnD,MAAMC,kBAAmB,CACvB,GAAM,OAAO,iBAAiB,GAC9B,SAAY,EACZ,WAAc,OAAO,iBAAiB,SAAS,CAAC,EAAE,GAClD,cAAiB,OAAO,iBAAiB,MACzC,MAAS,OAAO,iBAAiB,MACjC,IAAO,OAAO,iBAAiB,SAAS,CAAC,EAAE,IAC3C,OAAU,OAAO,iBAAiB,OAClC,MAAS,OAAO,iBAAiB,cACnC,EACA,WAAW,WAAW,KAAKA,iBAAgB,CAC7C,CACA,QAAQ,IAAI,mBAAoB,gBAAgB,CAClD,MAAQ,CACN,WAAW,WAAW,CACxB,CACF,EAEA,OAAO,eAAiB,UAAY,CAClC,OAAO,QAAQ,WAAY,eAAgB,KAAM,CAC/C,MAAMA,kBAAmB,EAAE,8BAA8B,EAAE,KAAK,EAC5DA,oBACF,OAAO,iBAAmB,KAAK,MAAMA,iBAAgB,GAGvD,IAAI,SAAW,WAAW,WAM1B,GALA,WAAW,WAAa,KAAK,MAE7B,OAAO,OAAO,EACd,aAAa,QAAQ,cAAe,KAAK,UAAU,MAAM,UAAU,KAAK,KAAK,CAAC,EAE1E,KAAK,UAAU,QAAQ,GAAK,KAAK,UAAU,WAAW,UAAU,GAAK,WAAW,WAAW,OAAQ,CACrG,WAAW,WAAW,EACtB,MACF,CAEA,GAAI,WAAW,WAAW,QAAU,CAAC,eAAe,QAAQ,uBAAuB,EAAG,CACpF,WAAW,WAAW,EACtB,MACF,CAEI,KAAK,UAAU,QAAQ,GAAK,KAAK,UAAU,WAAW,UAAU,GAAK,WAAW,WAAW,QAC7F,WAAW,WAAW,CAE1B,CAAC,CACH,EAEK,OAAO,sBACV,OAAO,eAAe,EAGxB,SAAS,sBAAuB,CAC9B,OAAQ,WAAW,WAAW,UAAW,MAAS,KAAK,QAAU,wBAAwB,EAAI,IAAO,EACtG,CAEA,OAAO,cAAgB,SAAU,UAAW,OAAQ,CAClD,GAAI,CACF,GAAI,QAAU,0BAA4B,qBAAqB,EAAG,CAChE,OAAO,GAAG,GAAG,aAAa,QAAS,uCAAwC,OAAO,EAClF,MACF,CAEA,WAAW,WAAW,EACtB,IAAI,KAAO,CACT,GAAI,UACJ,SAAU,CACZ,EAGA,MAAM,cADY,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAC5B,IAAI,aAAa,EAE9C,WAAa,kBAAoB,CAAC,gBACrC,KAAK,aAAe,YAEpB,MAAM,WAAa,OAAO,aAAe,OAAY,OAAO,WAAa,GACzE,QAAQ,IAAI,6BAA6B,EACzC,EAAE,KAAK,CACL,KAAM,OACN,IAAK,eACL,KACA,SAAU,OACV,QAAS,UAAY,CACnB,OAAO,GAAG,GAAG,aAAa,UAAW,2BAA4B,SAAS,EAC1E,OAAO,eAAe,EACtB,qBAAqB,EACrB,wBAAwB,EACrB,YACF,wBAAwB,EAEvB,OAAO,SAAS,OAAO,CAE3B,EACA,MAAO,UAAY,CACjB,WAAW,WAAW,CACxB,CACF,CAAC,CACH,MAAgB,CACd,WAAW,WAAW,CACxB,CACF,EAED,eAAe,yBAA0B,CACvC,QAAQ,IAAI,sBAAsB,EACnC,MAAM,KAAO,MAAM,UAAU,EACvB,SAAW,aACX,YAAc,QACd,QAAU,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,OAAO,EACjF,YAAc,iBAGd,cAAgB,KAAK,MAAM,KAAK,MAAQ,KAAK,MAAQ,QAAQ,EAG7D,oBAAsB,KAAK,MAAM,KAAK,MAAQ,KAAK,MAAQ,WAAW,EAGtE,eAAiB,KAAK,MAAM,KAAK,MAAQ,QAAQ,SAAS,KAAK,GAAG,CAAC,EAGzE,GAAI,CAAC,eAAiB,qBAAuB,eAIzC,GAFmB,KAAK,MAAM,KAAK,MAAQ,KAAK,aAAe,WAAW,EA6BtE,QAAQ,IAAI,8CAA8C,MA1B1D,IAAI,CAEA,MAAM,SAAW,MAAM,MAAM,eAAgB,CACzC,OAAQ,OACR,QAAS,CACL,eAAgB,kBACpB,EACA,KAAM,KAAK,UAAU,CACjB,GAAI,YACJ,SAAU,CACd,CAAC,CACL,CAAC,EAEK,aAAe,MAAM,SAAS,KAAK,EACzC,GAAI,CAAC,SAAS,GACV,cAAQ,MAAM,oCAAqC,YAAY,EACzD,IAAI,MAAM,6BAA6B,EAGjD,QAAQ,IAAI,mCAAoC,YAAY,EAC5D,OAAO,SAAS,OAAO,EAAI,CAE/B,OAAS,MAAO,CACZ,QAAQ,MAAM,6BAA8B,KAAK,CACrD,MAKJ,QAAQ,IAAI,iDAAiD,CAErE,CAEA,eAAe,yBAA0B,CAErC,MAAM,eAAiB,OAAO,iBAAmB,OAAY,OAAO,eAAiB,GAC/E,UAAY,OAAO,YAAc,OAAY,OAAO,UAAY,KAChE,UAAY,OAAO,YAAc,OAAY,OAAO,UAAY,KAChE,QAAU,OAAO,UAAY,OAAY,OAAO,QAAU,KAC1D,QAAU,OAAO,UAAY,OAAY,OAAO,QAAU,KAEhE,IAAI,QAAU,EAEd,MAAM,aAAe,OAAO,cAAgB,MAAM,QAAQ,OAAO,YAAY,EAAI,OAAO,aAAe,CAAC,EAClG,aAAe,aAAa,SAAS,YAAY,GAAK,iBAAmB,KAE5E,gBAAkB,GAAK,gBAAkB,OAE1C,QAAU,GAET,aAAa,SAAS,YAAY,GAAK,gBAAkB,MAC1D,QAAU,GAER,aAAa,SAAS,YAAY,IAClC,QAAU,GAId,MAAM,gBAAkB,sBAAsB,UAAW,UAAW,QAAS,OAAO,EAGhF,SAAW,iBACX,QAAQ,IAAI,8BAA8B,EAEzC,6BAA6B,GAE9B,QAAQ,IAAI,2CAA2C,CAE/D,CACA,eAAe,8BAA+B,CAC1C,GAAI,CACA,MAAM,KAAO,MAAM,UAAU,EACvB,kBAAoB,KAAK,qBAAuB,IAChD,YAAc,OAAO,aAAe,KACpC,iBAAmB,OAAO,mBAAqB,OAAY,OAAO,iBAAmB,IAG3F,GAAI,kBAAoB,kBAGhB,CAFe,KAAK,MAAM,KAAK,MAAQ,KAAK,WAAW,SAAS,EAAE,KAAK,IAAM,WAAW,EAGxF,GAAI,CACA,MAAM,SAAW,MAAM,MAAM,eAAgB,CACzC,OAAQ,OACR,QAAS,CACL,eAAgB,kBACpB,EACA,KAAM,KAAK,UAAU,CACjB,GAAI,YACJ,SAAU,CACd,CAAC,CACL,CAAC,EAEK,aAAe,MAAM,SAAS,KAAK,EACzC,GAAI,CAAC,SAAS,GACV,MAAM,IAAI,MAAM,6BAA6B,EAEnD,QAAQ,IAAI,mCAAoC,YAAY,CAC9D,OAAS,MAAO,CACZ,QAAQ,MAAM,6BAA8B,KAAK,CACrD,CAGZ,OAAS,MAAO,CACZ,QAAQ,MAAM,6CAA8C,KAAK,CACrE,CACJ,CAEA,eAAe,WAAY,CACvB,MAAM,SAAW,MAAM,MAAM,UAAU,EACvC,GAAI,CAAC,SAAS,GACV,cAAQ,MAAM,6BAA8B,SAAS,UAAU,EACzD,IAAI,MAAM,4BAA4B,EAEhD,OAAO,MAAM,SAAS,KAAK,CAC/B,CAEI,OAAO,mBAAqB,eAAgB,WAAY,SAAU,CAChE,MAAM,QAAU,IAAI,QAAQ,CAAC,IAAK,MAAQ,CACxC,IAAI,IAAM,CACR,KAAM,OACN,IAAK,kBACL,KAAM,YAAc,SAAW,OAAS,WACxC,SAAU,OACV,QAAS,SAAU,OAAQ,CACzB,4BAAqB,EACd,IAAI,MAAM,CACnB,EACA,MAAO,SAAU,IAAK,CACpB,OAAO,IAAI,GAAG,CAChB,CACF,EACA,OAAO,KAAK,GAAG,CACjB,CAAC,EACD,OAAO,QAAQ,IAAI,CAAC,OAAO,CAAC,CAC9B,EAEA,OAAO,iBAAmB,SAAU,UAAW,OAAQ,CACrD,GAAI,CACF,WAAW,WAAW,EACtB,OAAO,mBAAmB,UAAW,CAAC,EACnC,KAAK,IAAM,CAIV,GAHE,qBAAqB,EACvB,OAAO,GAAG,GAAG,aAAa,UAAW,6BAA8B,SAAS,EAC3E,qBAAqB,EAClB,WAAW,WAAW,QAAU,EAAG,CACrC,OAAO,SAAS,OAAO,EACvB,MACF,CACA,OAAO,eAAe,EACtB,WAAW,WAAW,CACxB,CAAC,EACA,MAAM,IAAM,CACX,WAAW,WAAW,CACxB,CAAC,CACL,MAAgB,CACd,WAAW,WAAW,CACxB,CACF,EAEA,OAAO,sBAAwB,gBAAkB,CAC/C,GAAI,CACF,MAAM,YAAc,CAAC,GAAG,WAAW,UAAU,EAC7C,GAAI,YAAY,QAAU,EACxB,OAEF,YAAY,IAAK,MAAS,CACxB,GAAI,CAAC,KAAK,UAAY,KAAK,UAAY,EAAG,CACxC,OAAO,GAAG,GAAG,aAAa,QAAS,0CAA2C,OAAO,EACrF,OAAO,eAAe,EACtB,MACF,CACF,CAAC,EAED,WAAW,WAAW,EACtB,OAAO,mBAAmB,CAAC,EAC3B,qBAAqB,CACvB,MAAgB,CACd,WAAW,WAAW,CACxB,CACF,EAEA,OAAO,mBAAqB,SAAU,MAAO,CAC3C,GAAI,CACF,MAAM,YAAc,CAAC,GAAG,WAAW,UAAU,EACvC,UAAY,CAAC,EACnB,IAAI,OAAS,IAAM,CACjB,IAAI,IAAM,CACR,KAAM,OACN,IAAK,kBACL,KAAM,YAAc,YAAY,KAAK,EAAE,SAAW,OAAS,YAAY,KAAK,EAAE,WAC9E,SAAU,OACV,QAAS,SAAU,OAAQ,CAGzB,GAFA,UAAU,KAAK,MAAM,EACrB,qBAAqB,EACjB,UAAU,SAAW,YAAY,OACnC,cAAS,EACF,OAAO,YAAY,KAAK,EAAE,WAAY,YAAY,KAAK,EAAE,QAAQ,EAExE,OAAO,GAAG,GAAG,aAAa,UAAW,8BAA+B,SAAS,EAC7E,OAAO,eAAe,EACvB,qBAAqB,CAExB,EACA,MAAO,SAAU,IAAK,CAAE,CAC1B,EACA,OAAO,KAAK,GAAG,CACjB,EACA,OAAO,CACT,MAAgB,CACd,WAAW,WAAW,CACxB,CACF,EAEJ,OAAO,gBAAkB,SAAU,SAAU,cAAe,CAE1D,GADA,QAAQ,IAAI,+BAAgC,CAAE,cAAe,QAAS,CAAC,EACnE,EAAC,SAEL,KAAI,cAAgB,UAAU,KAAK,CACjC,UAAW,GAGX,SAAU,GACV,SAAU,GACV,cAAe,GAEf,YAAa,oBACb,SACE,kyBAMJ,CAAC,EAED,cAAc,OAAO,KAAK,UAAY,CAEpC,IAAI,OAAS,SAAS,iBAAiB,0BAA0B,EAC7D,QAAU,OAAO,OAAO,OAAS,CAAC,EACtC,GAAK,QAGL,SAAQ,MAAM,YAAY,UAAW,SAAU,WAAW,EAC1D,QAAQ,MAAM,YAAY,UAAW,QAAS,WAAW,EACzD,QAAQ,MAAM,YAAY,WAAY,QAAS,WAAW,EAC1D,QAAQ,MAAM,YAAY,MAAO,IAAK,WAAW,EACjD,QAAQ,MAAM,YAAY,OAAQ,IAAK,WAAW,EAClD,QAAQ,MAAM,YAAY,QAAS,QAAS,WAAW,EACvD,QAAQ,MAAM,YAAY,SAAU,QAAS,WAAW,EACxD,QAAQ,MAAM,YAAY,aAAc,kBAAmB,WAAW,EACtE,QAAQ,MAAM,YAAY,UAAW,IAAK,WAAW,EACrD,QAAQ,MAAM,YAAY,aAAc,UAAW,WAAW,EAG9D,IAAI,OAAS,QAAQ,cAAc,eAAe,EAC9C,SACF,OAAO,MAAM,YAAY,WAAY,WAAY,WAAW,EAC5D,OAAO,MAAM,YAAY,MAAO,MAAO,WAAW,EAClD,OAAO,MAAM,YAAY,YAAa,mBAAoB,WAAW,GAIvE,IAAI,MAAQ,GACX,SAAS,iBAAkB,CAC1B,QAEA,IAAI,IAAM,QAAQ,cAAc,sBAAsB,EACtD,GAAI,IAAK,CACP,IAAI,IAAM,SACV,QAAQ,IAAI,wCAA0C,MAAQ,KAAM,IAAI,GAAG,EAC3E,MACF,CAEI,MAAQ,GACV,WAAW,gBAAiB,EAAE,EAE9B,QAAQ,KAAK,iDAAiD,CAElE,GAAG,EACL,CAAC,EACH,EAYI,OAAO,gBAAkB,SAAU,cAAe,CAChD,IAAI,aAAe,0DACnB,oBAAe,aAAe,kBAAoB,cAAgB,OAC3D,YACT,EAEA,OAAO,cAAgB,UAAY,CACjC,OAAO,iBAAiB,CAAC,CAC3B,EAEA,OAAO,cAAgB,UAAY,CACjC,OAAO,iBAAiB,CAAC,CAC3B,EAEA,OAAO,4BAA8B,UAAY,CAC/C,GAAI,CACF,WAAW,WAAW,EACtB,IAAI,QAAU,CACZ,WAAc,EACd,aAAgB,GAChB,UAAa,WAAW,aAAa,YAAc,WAAW,aAAa,YAAmB,EAC9F,aAAgB,EAChB,SAAY,OAAO,WAAW,UAAU,SACxC,SAAY,OAAO,WAAW,UAAU,SACxC,UAAa,OAAO,WAAW,eAAe,QAC9C,SAAY,OAAO,WAAW,UAAU,SACxC,UAAa,OAAO,WAAW,aAAa,WAAa,IAAM,OAAO,WAAW,aAAa,SAAW,IAAM,OAAO,WAAW,aAAa,UAC9I,MAAS,OAAO,WAAW,kBAC3B,YAAe,GACf,aAAgB,GAChB,WAAc,GACd,eAAkB,GAClB,MAAS,OAAO,WAAW,aAAa,MACxC,aAAgB,kBAChB,SAAY,OAAO,WAAW,eAAe,cAC7C,SAAY,OAAO,WAAW,eAAe,UAC7C,KAAQ,OAAO,WAAW,eAAe,KACzC,aAAgB,OAAO,WAAW,eAAe,OAAS,KAC1D,YAAe,OAAO,WAAW,eAAe,SAAW,KAC3D,IAAO,OAAO,WAAW,eAAe,SAAW,OACrD,EACA,OAAO,GAAG,WAAW,iBAAiB,OAAO,EAC1C,KAAK,SAAU,SAAU,MAAO,CAC3B,SACF,OAAO,wBAAwB,EAE/B,OAAO,GAAG,GAAG,aAAa,QAAS,wBAAyB,OAAO,CAEvE,CAAC,EAAE,MAAO,OAAU,CAClB,WAAW,WAAW,CACxB,CAAC,CACL,MAAgB,CACd,WAAW,WAAW,CACxB,CACF,EAEA,OAAO,wBAA0B,UAAY,CAC3C,GAAI,CACF,IAAI,QAAU,CACZ,MAAS,CACP,iBAAoB,GACpB,MAAS,OAAO,WAAW,aAAa,MACxC,UAAa,OAAO,WAAW,eAAe,UAC9C,SAAY,OAAO,WAAW,eAAe,SAC7C,SAAY,OAAO,WAAW,UAAU,SACxC,MAAS,KAAO,OAAO,WAAW,eAAe,OACnD,CACF,EACA,QAAQ,IAAI,OAAO,EACnB,OAAO,GAAG,WAAW,eAAe,OAAO,EAAE,KAAK,SAAU,SAAU,MAAO,CACvE,SAAS,gBAAkB,SAAS,eAAe,UAAY,SAAS,eAAe,SAAS,OAClG,OAAO,GAAG,GAAG,aAAa,UAAW,uCAAwC,SAAS,EACtF,WAAW,IAAM,CACf,OAAO,SAAS,KAAO,uBACzB,EAAG,GAAG,GACG,SAAS,eAAe,oBAAsB,SAAS,eAAe,mBAAmB,OAAS,GAC9F,SAAS,eAAe,mBAC9B,QAAQD,QAAS,CACtB,OAAO,GAAG,GAAG,aAAa,QAASA,OAAM,QAAS,OAAO,CAC3D,CAAC,EAEH,WAAW,WAAW,CACxB,CAAC,EAAE,MAAOE,QAAU,CAClB,QAAQ,IAAIA,MAAK,EACjB,OAAO,GAAG,GAAG,aAAa,QAASA,OAAM,aAAc,OAAO,EAC9D,WAAW,WAAW,CACxB,CAAC,CACH,MAAgB,CACd,WAAW,WAAW,CACxB,CACF,EAEA,OAAO,iBAAmB,UAAY,CACpC,GAAI,CAAC,OAAO,eAAgB,CAC1B,OAAO,GAAG,GAAG,aAAa,QAAS,kCAAmC,OAAO,EAC7E,MACF,CACA,GAAI,CAAC,OAAO,eAAgB,CAC1B,OAAO,GAAG,GAAG,aAAa,QAAS,mCAAoC,OAAO,EAC9E,MACF,CACA,OAAO,4BAA4B,CACrC,EAEA,OAAO,mBAAqB,SAAU,OAAQ,CAC5C,GAAI,CAMF,GALI,SAAW,gBACT,EAAE,eAAe,EAAE,QAAQ,gBAAgB,EAAE,KAAK,YAAY,EAAE,CAAC,GAInE,SAAW,YACT,EAAE,WAAW,EAAE,QAAQ,gBAAgB,EAAE,KAAK,YAAY,EAAE,CAAC,EAC/D,MAAO,EAGb,MAAgB,CAAE,CAClB,MAAO,EACT,EAEJ,OAAO,sBAAwB,gBAAkB,CAC/C,GAAI,CAAC,qBAAqB,EAAG,CAC3B,OAAO,GAAG,GAAG,aAAa,QAAS,4BAA6B,OAAO,EACvE,MACF,CACA,MAAM,OAAO,qBAAqB,CACpC,EAII,MAAM,gBAAmB,aAAgB,CACvC,WAAW,WAAW,EACtB,EAAE,IAAI,iCAAiC,EACpC,KAAK,SAAU,SAAU,CACxB,WAAW,WAAW,EACtB,IAAI,SAAW,eAAe,IAAI,uBAAwB,QAAQ,EAClE,UAAU,KAAK,CACb,UAAW,GACX,YAAa,uBACb,SAAU,SACV,SAAU,GACV,cAAe,GACf,YAAa,gBACb,aAAc,sBACd,WAAY,CAAC,aAAc,SAAU,oBAAqB,SAAUC,YAAYC,QAAQ,kBAAmB,CAEzG,IAAI,oBAAsB,KAC1B,oBAAoB,MAAQ,kBAAkB,MAC9C,oBAAoB,aAAe,GAGnC,oBAAoB,gBAAkB,UAAY,CAChD,IAAI,QAAU,CACZ,WAAY,SAAS,YAAa,EAAE,EACpC,OAAQ,EACV,EACA,OAAO,GAAG,WAAW,mBAAmB,OAAO,EAC5C,KAAMC,WAAa,CACdA,WAAYA,UAAS,WAAaA,UAAS,WAC7C,oBAAoB,aAAe,GAAGA,UAAS,SAAS,IAAIA,UAAS,QAAQ,GAC7ED,QAAO,OAAO,EAElB,CAAC,EACA,MAAM,CACX,EACA,oBAAoB,gBAAgB,EAEpC,EAAE,QAAQ,EAAE,MAAM,UAAY,CAC5B,IAAI,cAAgB,oBAChB,UAAY,SAAS,cAAc,8CAA8C,EACjF,WACF,UAAU,iBAAiB,QAAS,UAAY,CAC9C,MAAM,UAAU,IAAI,EACjB,KAAK,IAAM,OAAO,SAAS,KAAO,aAAa,EAC/C,MAAM,CACX,CAAC,CAEL,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC,EACA,MAAM,IAAM,WAAW,WAAW,CAAC,CACxC,EAEE,mBAAqB,IAAM,CAC/B,WAAW,WAAW,EACtB,EAAE,IAAI,+BAA+B,EAClC,KAAK,SAAU,SAAU,CACxB,WAAW,WAAW,EACtB,eAAe,IAAI,qBAAsB,QAAQ,EACjD,UAAU,KAAK,CACb,UAAW,GACX,YAAa,qBACb,SAAU,SACV,SAAU,GACV,cAAe,GACf,YAAa,gBACb,aAAc,yBACd,WAAY,CAAC,aAAc,SAAU,oBAAqB,SAAUD,YAAYC,QAAQ,kBAAmB,CACzG,IAAI,uBAAyB,KAC7B,uBAAuB,MAAQ,kBAAkB,MAEjDA,QAAO,iBAAmB,UAAY,CACpC,MAAM,OAAS,SAAS,eAAe,iBAAiB,EAClD,IAAM,OAAO,WAAW,IAAI,EAC5B,SAAW,SAAS,eAAe,gBAAgB,EACnD,UAAY,SAAS,eAAe,iBAAiB,EACrD,UAAY,SAAS,eAAe,gBAAgB,EAE1D,IAAI,QAAU,GAEd,OAAO,iBAAiB,YAAa,IAAM,CACzC,QAAU,GACV,IAAI,UAAU,CAChB,CAAC,EAED,OAAO,iBAAiB,UAAW,IAAM,CACvC,QAAU,EACZ,CAAC,EAED,OAAO,iBAAiB,YAAc,OAAU,CAC9C,GAAI,CAAC,QAAS,OACd,MAAM,KAAO,OAAO,sBAAsB,EACpC,EAAI,MAAM,QAAU,KAAK,KACzB,EAAI,MAAM,QAAU,KAAK,IAC/B,IAAI,OAAO,EAAG,CAAC,EACf,IAAI,OAAO,CACb,CAAC,EAGD,OAAO,iBAAiB,aAAc,SAAU,EAAG,CACjD,EAAE,eAAe,EACjB,QAAU,GACV,MAAM,KAAO,OAAO,sBAAsB,EACpC,MAAQ,EAAE,QAAQ,CAAC,EACnB,EAAI,MAAM,QAAU,KAAK,KACzB,EAAI,MAAM,QAAU,KAAK,IAC/B,IAAI,UAAU,EACd,IAAI,OAAO,EAAG,CAAC,CACjB,CAAC,EAED,OAAO,iBAAiB,YAAa,SAAU,EAAG,CAEhD,GADA,EAAE,eAAe,EACb,CAAC,QAAS,OACd,MAAM,KAAO,OAAO,sBAAsB,EACpC,MAAQ,EAAE,QAAQ,CAAC,EACnB,EAAI,MAAM,QAAU,KAAK,KACzB,EAAI,MAAM,QAAU,KAAK,IAC/B,IAAI,OAAO,EAAG,CAAC,EACf,IAAI,OAAO,CACb,CAAC,EAED,OAAO,iBAAiB,WAAY,UAAY,CAC9C,QAAU,EACZ,CAAC,EAED,SAAS,iBAAiB,QAAS,IAAM,CACvC,IAAI,UAAU,EAAG,EAAG,OAAO,MAAO,OAAO,MAAM,CACjD,CAAC,EAED,SAAS,cAAcE,QAAQ,CAC7B,MAAM,MAAQ,SAAS,cAAc,QAAQ,EAC7C,aAAM,MAAQA,QAAO,MACrB,MAAM,OAASA,QAAO,OACfA,QAAO,UAAU,IAAM,MAAM,UAAU,CAChD,CAEA,UAAU,iBAAiB,QAAS,IAAM,CAExC,MAAM,KAAO,UAAU,MAAM,KAAK,EAC5B,iBAAmB,SAAS,eAAe,kBAAkB,EAQnE,GALA,UAAU,UAAU,OAAO,kBAAkB,EAC7C,UAAU,YAAc,uBACxB,iBAAiB,UAAU,IAAI,aAAa,EAGxC,CAAC,KAAM,CACT,UAAU,YAAc,8BACxB,UAAU,UAAU,IAAI,kBAAkB,EAC1C,MACF,CAGA,GAAI,cAAc,MAAM,EAAG,CACrB,kBAAkB,iBAAiB,UAAU,OAAO,aAAa,EACrE,MACF,CAGA,MAAM,iBAAmB,OAAO,UAAU,EAC1C,eAAe,QAAQ,0BAA2B,IAAI,EACtD,eAAe,QAAQ,+BAAgC,gBAAgB,EAEvE,kBAAkB,MAAM,CAC1B,CAAC,CACH,EAGA,WAAW,IAAMF,QAAO,iBAAiB,EAAG,GAAG,CACjD,CAAC,CAEH,CAAC,CACH,CAAC,EACA,MAAM,IAAM,WAAW,WAAW,CAAC,CACxC,EAEA,OAAO,yBAA2B,UAAY,CAC5C,MAAM,KAAO,eAAe,QAAQ,yBAAyB,EACvD,UAAY,eAAe,QAAQ,8BAA8B,EAEvE,OAAO,WAAa,OAAO,YAAc,CAAC,EACtC,MAAQ,UACV,OAAO,WAAW,QAAU,GAE5B,OAAO,WAAW,QAAU,EAEhC,EAEA,OAAO,+BAAiC,UAAY,CAClD,MAAM,KAAO,eAAe,QAAQ,yBAAyB,EACvD,UAAY,eAAe,QAAQ,8BAA8B,GAEnE,CAAC,MAAQ,CAAC,aACZ,OAAO,WAAW,QAAU,GAG5B,mBAAmB,EAEvB,EAGC,SAAS,oBAAqB,CAEzB,MACE,UAAO,cAAgB,MAAM,QAAQ,OAAO,YAAY,GAAK,OAAO,aAAa,SAAS,YAAY,EAK1G,CAEA,SAAS,wBAAyB,CAChC,GAAI,mBAAmB,EAAG,CACxB,MAAM,WAAa,OAAO,iBAAiB,KAAK,KAAK,WACrD,gBAAgB,UAAU,CAC5B,CACF,CAEA,uBAAuB,CACzB,CACF,CAAC",
  "names": ["$", "error", "DefaultEnrollKit", "Error", "$rootScope", "$scope", "response", "canvas"]
}
