govuk_publishing_components 24.15.1 → 24.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/govuk_publishing_components/action-link-arrow--brexit.svg +3 -0
  3. data/app/assets/images/govuk_publishing_components/action-link-arrow--dark.png +0 -0
  4. data/app/assets/images/govuk_publishing_components/action-link-arrow--dark.svg +2 -2
  5. data/app/assets/javascripts/govuk_publishing_components/analytics/scroll-tracker.js +21 -0
  6. data/app/assets/javascripts/govuk_publishing_components/components/button.js +1 -1
  7. data/app/assets/javascripts/govuk_publishing_components/components/character-count.js +1 -1
  8. data/app/assets/javascripts/govuk_publishing_components/components/checkboxes.js +10 -10
  9. data/app/assets/javascripts/govuk_publishing_components/components/details.js +5 -5
  10. data/app/assets/javascripts/govuk_publishing_components/components/error-summary.js +1 -1
  11. data/app/assets/javascripts/govuk_publishing_components/components/layout-header.js +1 -1
  12. data/app/assets/javascripts/govuk_publishing_components/components/radio.js +1 -1
  13. data/app/assets/javascripts/govuk_publishing_components/components/tabs.js +1 -1
  14. data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/all.js +1 -0
  15. data/app/assets/javascripts/govuk_publishing_components/modules.js +23 -20
  16. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux.js +942 -787
  17. data/app/assets/javascripts/govuk_publishing_components/vendor/polyfills/all.js +1 -0
  18. data/app/assets/stylesheets/govuk_publishing_components/components/_action-link.scss +25 -0
  19. data/app/views/govuk_publishing_components/components/_action_link.html.erb +4 -0
  20. data/app/views/govuk_publishing_components/components/_checkboxes.html.erb +2 -2
  21. data/app/views/govuk_publishing_components/components/_details.html.erb +1 -1
  22. data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +8 -3
  23. data/app/views/govuk_publishing_components/components/docs/action_link.yml +6 -0
  24. data/app/views/govuk_publishing_components/components/docs/layout_footer.yml +4 -0
  25. data/app/views/govuk_publishing_components/components/docs/layout_for_public.yml +4 -0
  26. data/app/views/govuk_publishing_components/components/layout_header/_search.html.erb +5 -0
  27. data/config/i18n-tasks.yml +4 -0
  28. data/config/locales/en.yml +10 -20
  29. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_priority.rb +25 -6
  30. data/lib/govuk_publishing_components/version.rb +1 -1
  31. metadata +20 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c6904321e51846b4273128559fa2ae25c311eda4750e0bcff5c093a43dac9fb5
4
- data.tar.gz: 489b5e4af1f5487de4694cc80335b48aaa61479e76ae1f3669de4403672752dc
3
+ metadata.gz: c57ef1405fbd96f5987dc24d795eb197a2682388ba0f3ccd4d09e933a5c0e8d2
4
+ data.tar.gz: 1213a4f3a3ac27a30ddba5a3f265607a1ff2970a5ee47896759c50986ab16f19
5
5
  SHA512:
6
- metadata.gz: cb398f43c5ccaf87dcd6f2dfb4d82918eb7f65c16af20964ae7240c2a8355c63fb22df8e54969fe8adb1f546978c261b8d4ec5c426a8284a06612082801a7adb
7
- data.tar.gz: ea37f75dcaf0250704d32daa1f4f110e47623f0f60b6f8a743b153ac6cef9520fcf6200c752d092dba1e10a5fb79d16e024518ce1ce0949e1f1f488f2141e21f
6
+ metadata.gz: f769ee68de178a08f866be215ed3c01a9a113c83cc56c120dbb47093659dfeeda6e4ca5f20d576b000125efaff11423a034a4931a138f31fcf95b6fae6c91809
7
+ data.tar.gz: 6aa9cd20cc9e8bd4c3a5c377bb863ec02704bbbf8eddf9f28153b102b0c32b001b5f23ca7539a453b67cdc7b551447e762c6ff1a47114a20581e876e1ed083f4
@@ -0,0 +1,3 @@
1
+ <svg width="38" height="36" viewBox="0 0 38 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M38 35.8461C34.8518 35.8299 31.701 35.8136 28.5528 35.7974C28.5447 29.2599 28.5366 22.7252 28.5284 16.1878C21.8989 22.7252 15.2721 29.2599 8.64252 35.7974C5.8547 35.792 3.06417 35.7838 0.276344 35.7784C0.262798 34.1366 0.249251 32.4948 0.232996 30.8503C7.36917 23.7195 14.5026 16.5833 21.6388 9.44717C14.4268 9.47697 7.21204 9.50406 0 9.53387C3.17254 6.35862 6.34778 3.18608 9.52032 0.010837C19.0135 0.00812776 28.5068 0.00270925 38 0C38 11.9234 38 23.8577 38 35.8461Z" fill="#FF003B"/>
3
+ </svg>
@@ -1,5 +1,5 @@
1
1
  <svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
2
2
  <circle cx="11.5" cy="11.5" r="11.5" fill="#272828"/>
3
- <path fill-rule="evenodd" clip-rule="evenodd" d="M14.9429 11.7949L10.4402 7.29222L11.7327 5.99967L17.528 11.7949L11.7327 17.5902L10.4402 16.2976L14.9429 11.7949Z" fill="#fff500"/>
4
- <path fill-rule="evenodd" clip-rule="evenodd" d="M3.95631 10.881L15.4414 10.881L15.4414 12.709L3.95631 12.709L3.95631 10.881Z" fill="#fff500"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M14.9429 11.7949L10.4402 7.29222L11.7327 5.99967L17.528 11.7949L11.7327 17.5902L10.4402 16.2976L14.9429 11.7949Z" fill="#ffffff"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3.95631 10.881L15.4414 10.881L15.4414 12.709L3.95631 12.709L3.95631 10.881Z" fill="#ffffff"/>
5
5
  </svg>
@@ -198,6 +198,27 @@
198
198
  ['Heading', 'Rules to follow'],
199
199
  ['Heading', 'Good to know'],
200
200
  ['Heading', 'Change your answers']
201
+ ],
202
+ '/guidance/brexit-guidance-for-businesses': [
203
+ ['Percent', 20],
204
+ ['Percent', 40],
205
+ ['Percent', 60],
206
+ ['Percent', 80],
207
+ ['Percent', 100]
208
+ ],
209
+ '/guidance/brexit-guidance-for-individuals-and-families': [
210
+ ['Percent', 20],
211
+ ['Percent', 40],
212
+ ['Percent', 60],
213
+ ['Percent', 80],
214
+ ['Percent', 100]
215
+ ],
216
+ '/guidance/import-and-export-goods-using-preference-agreements': [
217
+ ['Percent', 20],
218
+ ['Percent', 40],
219
+ ['Percent', 60],
220
+ ['Percent', 80],
221
+ ['Percent', 100]
201
222
  ]
202
223
  }
203
224
 
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/button/button.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Button = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukButton = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/character-count/character-count.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.CharacterCount = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukCharacterCount = window.GOVUKFrontend
@@ -3,17 +3,17 @@
3
3
  // = require govuk/components/checkboxes/checkboxes.js
4
4
  window.GOVUK = window.GOVUK || {}
5
5
  window.GOVUK.Modules = window.GOVUK.Modules || {}
6
- window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
6
+ window.GOVUK.Modules.GovukCheckboxes = window.GOVUKFrontend;
7
7
 
8
8
  (function (Modules) {
9
- function GovukCheckboxes ($module) {
9
+ function GemCheckboxes ($module) {
10
10
  this.$module = $module
11
11
  this.$checkboxes = this.$module.querySelectorAll('input[type=checkbox]')
12
12
  this.$nestedCheckboxes = this.$module.querySelectorAll('[data-nested=true] input[type=checkbox]')
13
13
  this.$exclusiveCheckboxes = this.$module.querySelectorAll('[data-exclusive=true] input[type=checkbox]')
14
14
  }
15
15
 
16
- GovukCheckboxes.prototype.init = function () {
16
+ GemCheckboxes.prototype.init = function () {
17
17
  this.applyAriaControlsAttributes(this.$module)
18
18
 
19
19
  for (var i = 0; i < this.$checkboxes.length; i++) {
@@ -29,7 +29,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
29
29
  }
30
30
  }
31
31
 
32
- GovukCheckboxes.prototype.handleCheckboxChange = function (event) {
32
+ GemCheckboxes.prototype.handleCheckboxChange = function (event) {
33
33
  if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
34
34
  // Where checkboxes are manipulated externally in finders, `suppressAnalytics`
35
35
  // is passed to prevent duplicate GA events.
@@ -58,7 +58,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
58
58
  }
59
59
  }
60
60
 
61
- GovukCheckboxes.prototype.handleNestedCheckboxChange = function (event) {
61
+ GemCheckboxes.prototype.handleNestedCheckboxChange = function (event) {
62
62
  var $checkbox = event.target
63
63
  var $isNested = $checkbox.closest('.govuk-checkboxes--nested')
64
64
  var $hasNested = this.$module.querySelector('.govuk-checkboxes--nested[data-parent=' + $checkbox.id + ']')
@@ -70,7 +70,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
70
70
  }
71
71
  }
72
72
 
73
- GovukCheckboxes.prototype.toggleNestedCheckboxes = function ($scope, $checkbox) {
73
+ GemCheckboxes.prototype.toggleNestedCheckboxes = function ($scope, $checkbox) {
74
74
  var $nestedCheckboxes = $scope.querySelectorAll('input[type=checkbox]')
75
75
  if ($checkbox.checked) {
76
76
  for (var i = 0; i < $nestedCheckboxes.length; i++) {
@@ -83,7 +83,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
83
83
  }
84
84
  }
85
85
 
86
- GovukCheckboxes.prototype.toggleParentCheckbox = function ($scope, $checkbox) {
86
+ GemCheckboxes.prototype.toggleParentCheckbox = function ($scope, $checkbox) {
87
87
  var $inputs = $scope.querySelectorAll('input')
88
88
  var $checkedInputs = $scope.querySelectorAll('input:checked')
89
89
  var parentId = $scope.getAttribute('data-parent')
@@ -96,7 +96,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
96
96
  }
97
97
  }
98
98
 
99
- GovukCheckboxes.prototype.handleExclusiveCheckboxChange = function (event) {
99
+ GemCheckboxes.prototype.handleExclusiveCheckboxChange = function (event) {
100
100
  var $currentCheckbox = event.target
101
101
  var $checkboxes = $currentCheckbox.closest('.govuk-checkboxes')
102
102
  var $exclusiveOption = $checkboxes.querySelector('input[type=checkbox][data-exclusive]')
@@ -113,7 +113,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
113
113
  }
114
114
  }
115
115
 
116
- GovukCheckboxes.prototype.applyAriaControlsAttributes = function ($scope) {
116
+ GemCheckboxes.prototype.applyAriaControlsAttributes = function ($scope) {
117
117
  var $inputs = $scope.querySelectorAll('[data-controls]')
118
118
 
119
119
  for (var i = 0; i < $inputs.length; i++) {
@@ -121,5 +121,5 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
121
121
  }
122
122
  }
123
123
 
124
- Modules.GovukCheckboxes = GovukCheckboxes
124
+ Modules.GemCheckboxes = GemCheckboxes
125
125
  })(window.GOVUK.Modules)
@@ -2,16 +2,16 @@
2
2
  // = require govuk/components/details/details.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Details = window.GOVUKFrontend;
5
+ window.GOVUK.Modules.GovukDetails = window.GOVUKFrontend;
6
6
 
7
7
  (function (Modules) {
8
- function GovukDetails ($module) {
8
+ function GemDetails ($module) {
9
9
  this.$module = $module
10
10
  this.customTrackLabel = this.$module.getAttribute('data-track-label')
11
11
  this.detailsClick = this.$module.querySelector('[data-details-track-click]')
12
12
  }
13
13
 
14
- GovukDetails.prototype.init = function () {
14
+ GemDetails.prototype.init = function () {
15
15
  if (this.customTrackLabel) { // If a custom label has been provided, we can simply call the tracking module
16
16
  var trackDetails = new window.GOVUK.Modules.GemTrackClick()
17
17
  trackDetails.start($(this.$module))
@@ -22,7 +22,7 @@ window.GOVUK.Modules.Details = window.GOVUKFrontend;
22
22
  }
23
23
  }
24
24
 
25
- GovukDetails.prototype.trackDefault = function (element) {
25
+ GemDetails.prototype.trackDefault = function (element) {
26
26
  if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
27
27
  var componentStatus = (element.getAttribute('open') == null) ? 'open' : 'closed'
28
28
  var trackCategory = element.getAttribute('data-track-category')
@@ -45,5 +45,5 @@ window.GOVUK.Modules.Details = window.GOVUKFrontend;
45
45
  }
46
46
  }
47
47
 
48
- Modules.GovukDetails = GovukDetails
48
+ Modules.GemDetails = GemDetails
49
49
  })(window.GOVUK.Modules)
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/error-summary/error-summary.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.ErrorSummary = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukErrorSummary = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/header/header.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Header = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukHeader = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/radios/radios.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Radios = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukRadios = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/tabs/tabs.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Tabs = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukTabs = window.GOVUKFrontend
@@ -26,29 +26,32 @@
26
26
  var modules = this.find(container)
27
27
 
28
28
  for (var i = 0, l = modules.length; i < l; i++) {
29
- var module
30
29
  var element = $(modules[i])
31
- var moduleName = camelCaseAndCapitalise(element.data('module'))
32
- var started = element.data('module-started')
33
- var frontendModuleName = moduleName.replace('Govuk', '')
30
+ var moduleNames = element.data('module').split(' ')
34
31
 
35
- if ( // GOV.UK Publishing & Legacy Modules
36
- typeof GOVUK.Modules[moduleName] === 'function' &&
37
- !GOVUK.Modules[moduleName].prototype.init &&
38
- !started
39
- ) {
40
- module = new GOVUK.Modules[moduleName]()
41
- module.start(element)
42
- element.data('module-started', true)
43
- }
32
+ for (var j = 0, k = moduleNames.length; j < k; j++) {
33
+ var module
34
+ var moduleName = camelCaseAndCapitalise(moduleNames[j])
35
+ var started = element.data(moduleNames[j] + '-module-started')
36
+
37
+ if ( // GOV.UK Publishing & Legacy Modules
38
+ typeof GOVUK.Modules[moduleName] === 'function' &&
39
+ !GOVUK.Modules[moduleName].prototype.init &&
40
+ !started
41
+ ) {
42
+ module = new GOVUK.Modules[moduleName]()
43
+ module.start(element)
44
+ element.data(moduleNames[j] + '-module-started', true)
45
+ }
44
46
 
45
- if ( // GOV.UK Frontend Modules
46
- typeof GOVUK.Modules[frontendModuleName] === 'function' &&
47
- GOVUK.Modules[frontendModuleName].prototype.init &&
48
- !started
49
- ) {
50
- module = new GOVUK.Modules[frontendModuleName](element[0]).init()
51
- element.data('module-started', true)
47
+ if ( // GOV.UK Frontend Modules
48
+ typeof GOVUK.Modules[moduleName] === 'function' &&
49
+ GOVUK.Modules[moduleName].prototype.init &&
50
+ !started
51
+ ) {
52
+ module = new GOVUK.Modules[moduleName](element[0]).init()
53
+ element.data(moduleNames[j] + '-module-started', true)
54
+ }
52
55
  }
53
56
  }
54
57
 
@@ -24,7 +24,7 @@
24
24
 
25
25
  var LUX_t_start = Date.now(),
26
26
  LUX = window.LUX || {};
27
- LUX = function() {
27
+ LUX = (function () {
28
28
  // -------------------------------------------------------------------------
29
29
  // Settings
30
30
  // -------------------------------------------------------------------------
@@ -34,813 +34,968 @@ LUX = function() {
34
34
  /// End
35
35
  // -------------------------------------------------------------------------
36
36
 
37
- var gaLog = [];
38
- dlog("lux.js evaluation start.");
39
- var version = "214",
40
- _errorUrl = "https://lux.speedcurve.com/error/",
41
- nErrors = 0,
42
- maxErrors = 5;
43
-
44
- function errorHandler(e) {
45
- nErrors++, e && void 0 !== e.filename && void 0 !== e.message && (-1 !== e.filename.indexOf("/lux.js?") || -1 !== e.message.indexOf("LUX") || nErrors <= maxErrors && "function" == typeof _sample && _sample()) && ((new Image).src = _errorUrl + "?v=" + version + "&id=" + getCustomerId() + "&fn=" + encodeURIComponent(e.filename) + "&ln=" + e.lineno + "&cn=" + e.colno + "&msg=" + encodeURIComponent(e.message) + "&l=" + encodeURIComponent(_getPageLabel()) + (connectionType() ? "&ct=" + connectionType() : ""))
46
- }
47
- window.addEventListener("error", errorHandler);
48
- var gaPerfEntries = "object" == typeof window.LUX_al ? window.LUX_al.slice() : [];
37
+ var e = [];
38
+ pe("lux.js evaluation start.");
39
+ var t = "216",
40
+ n = 0;
41
+ function r(e) {
42
+ n++,
43
+ e &&
44
+ void 0 !== e.filename &&
45
+ void 0 !== e.message &&
46
+ (-1 !== e.filename.indexOf("/lux.js?") ||
47
+ -1 !== e.message.indexOf("LUX") ||
48
+ (n <= 5 && W())) &&
49
+ (new Image().src =
50
+ "https://lux.speedcurve.com/error/?v=216&id=" +
51
+ J() +
52
+ "&fn=" +
53
+ encodeURIComponent(e.filename) +
54
+ "&ln=" +
55
+ e.lineno +
56
+ "&cn=" +
57
+ e.colno +
58
+ "&msg=" +
59
+ encodeURIComponent(e.message) +
60
+ "&l=" +
61
+ encodeURIComponent(ge()) +
62
+ (V() ? "&ct=" + V() : ""));
63
+ }
64
+ window.addEventListener("error", r);
65
+ var i = ("object" == typeof window.LUX_al ? window.LUX_al : []).slice();
49
66
  if ("function" == typeof PerformanceObserver) {
50
- var perfObserver = new PerformanceObserver((function(e) {
51
- e.getEntries().forEach((function(e) {
52
- gaPerfEntries.push(e)
53
- }))
67
+ var a = new PerformanceObserver(function (e) {
68
+ e.getEntries().forEach(function (e) {
69
+ ("longtask" === e.entryType && -1 !== i.indexOf(e)) || i.push(e);
70
+ });
71
+ });
72
+ try {
73
+ "function" == typeof PerformanceLongTaskTiming &&
74
+ a.observe({ type: "longtask", buffered: !0 }),
75
+ "function" == typeof LargestContentfulPaint &&
76
+ a.observe({ type: "largest-contentful-paint", buffered: !0 }),
77
+ "function" == typeof PerformanceElementTiming &&
78
+ a.observe({ type: "element", buffered: !0 }),
79
+ "function" == typeof PerformancePaintTiming && a.observe({ type: "paint", buffered: !0 }),
80
+ "function" == typeof LayoutShift && a.observe({ type: "layout-shift", buffered: !0 });
81
+ } catch (e) {
82
+ pe("Long Tasks error.");
83
+ }
84
+ } else pe("Long Tasks not supported.");
85
+ var o,
86
+ s = 0,
87
+ u = void 0 !== LUX.gaMarks ? LUX.gaMarks : [],
88
+ c = void 0 !== LUX.gaMeasures ? LUX.gaMeasures : [],
89
+ d = {},
90
+ f = {},
91
+ m = 0,
92
+ l = 0,
93
+ v = 0,
94
+ g = 0,
95
+ p = 1,
96
+ h = "LUX_start",
97
+ y = "LUX_end",
98
+ E = me(),
99
+ T = le(E),
100
+ L = window.performance,
101
+ b = 2e3,
102
+ w = void 0 !== LUX.beaconMode ? LUX.beaconMode : "autoupdate",
103
+ U = void 0 !== LUX.beaconUrl ? LUX.beaconUrl : "https://lux.speedcurve.com/lux/",
104
+ X = void 0 !== LUX.samplerate ? LUX.samplerate : 100;
105
+ pe(
106
+ "Sample rate = " +
107
+ X +
108
+ "%. " +
109
+ (W()
110
+ ? "This session IS being sampled."
111
+ : "This session is NOT being sampled. The data will NOT show up in your LUX dashboards. Call LUX.forceSample() and try again.")
112
+ );
113
+ var S,
114
+ k = void 0 === LUX.auto || LUX.auto,
115
+ M = LUX.ns ? LUX.ns : Date.now ? Date.now() : +new Date(),
116
+ B = 0;
117
+ L && L.timing && L.timing.navigationStart
118
+ ? ((M = L.timing.navigationStart), (B = LUX.ns ? LUX.ns - M : 0))
119
+ : (pe("Nav Timing is not supported."), (s |= 2));
120
+ var N = ["click", "mousedown", "keydown", "touchstart", "pointerdown"],
121
+ x = { passive: !0, capture: !0 };
122
+ function C(e) {
123
+ S ||
124
+ ((S = Math.round(e)),
125
+ N.forEach(function (e) {
126
+ removeEventListener(e, I, x);
54
127
  }));
55
- try {
56
- "function" == typeof PerformanceLongTaskTiming && perfObserver.observe({
57
- type: "longtask"
58
- }), "function" == typeof LargestContentfulPaint && perfObserver.observe({
59
- type: "largest-contentful-paint",
60
- buffered: !0
61
- }), "function" == typeof PerformanceElementTiming && perfObserver.observe({
62
- type: "element",
63
- buffered: !0
64
- }), "function" == typeof PerformancePaintTiming && perfObserver.observe({
65
- type: "paint",
66
- buffered: !0
67
- }), "function" == typeof LayoutShift && perfObserver.observe({
68
- type: "layout-shift",
69
- buffered: !0
70
- })
71
- } catch (e) {
72
- dlog("Long Tasks error.")
73
- }
74
- } else dlog("Long Tasks not supported.");
75
- var gFlags = 0,
76
- gFlag_InitCalled = 1,
77
- gFlag_NoNavTiming = 2,
78
- gFlag_NoUserTiming = 4,
79
- gFlag_NotVisible = 8,
80
- gaMarks = void 0 !== LUX.gaMarks ? LUX.gaMarks : [],
81
- gaMeasures = void 0 !== LUX.gaMeasures ? LUX.gaMeasures : [],
82
- ghIx = {},
83
- ghData = {},
84
- gbLuxSent = 0,
85
- gbNavSent = 0,
86
- gbIxSent = 0,
87
- gbUpdated = 0,
88
- gbFirstPV = 1,
89
- gStartMark = "LUX_start",
90
- gEndMark = "LUX_end",
91
- gSessionTimeout = 1800,
92
- gSyncId = createSyncId(),
93
- gUid = refreshUniqueId(gSyncId),
94
- gCustomerDataTimeout, perf = window.performance,
95
- gMaxQuerystring = 2e3,
96
- _beaconUrl = void 0 !== LUX.beaconUrl ? LUX.beaconUrl : "https://lux.speedcurve.com/lux/",
97
- _samplerate = void 0 !== LUX.samplerate ? LUX.samplerate : 100;
98
- dlog("Sample rate = " + _samplerate + "%. " + (_sample() ? "This session IS being sampled." : "This session is NOT being sampled. The data will NOT show up in your LUX dashboards. Call LUX.forceSample() and try again."));
99
- var _auto = void 0 === LUX.auto || LUX.auto,
100
- _navigationStart = LUX.ns ? LUX.ns : Date.now ? Date.now() : +new Date,
101
- gLuxSnippetStart = 0,
102
- gFirstInputDelay;
103
- perf && perf.timing && perf.timing.navigationStart ? (_navigationStart = perf.timing.navigationStart, gLuxSnippetStart = LUX.ns ? LUX.ns - _navigationStart : 0) : (dlog("Nav Timing is not supported."), gFlags |= gFlag_NoNavTiming);
104
- var gaEventTypes = ["click", "mousedown", "keydown", "touchstart", "pointerdown"],
105
- ghListenerOptions = {
106
- passive: !0,
107
- capture: !0
108
- };
109
-
110
- function recordDelay(e) {
111
- gFirstInputDelay || (gFirstInputDelay = Math.round(e), gaEventTypes.forEach((function(e) {
112
- removeEventListener(e, onInput, ghListenerOptions)
113
- })))
114
- }
115
-
116
- function onPointerDown(e, t) {
117
- function n() {
118
- recordDelay(e, t), a()
119
- }
120
-
121
- function r() {
122
- a()
123
- }
124
-
125
- function a() {
126
- window.removeEventListener("pointerup", n, ghListenerOptions), window.removeEventListener("pointercancel", r, ghListenerOptions)
127
- }
128
- window.addEventListener("pointerup", n, ghListenerOptions), window.addEventListener("pointercancel", r, ghListenerOptions)
129
- }
130
-
131
- function onInput(e) {
132
- var t = !1;
133
- try {
134
- t = e.cancelable
135
- } catch (e) {
136
- return void dlog("Permission error accessing input event.")
137
- }
138
- if (t) {
139
- var n = _now(!0),
140
- r = e.timeStamp;
141
- if (r > 152e7 && (n = Number(new Date)), r > n) return;
142
- var a = n - r;
143
- "pointerdown" == e.type ? onPointerDown(a, e) : recordDelay(a, e)
144
- }
145
- }
146
-
147
- function _now(e) {
148
- var t = (Date.now ? Date.now() : +new Date) - _navigationStart,
149
- n = _getMark(gStartMark);
150
- return n && !e ? t - n.startTime : perf && perf.now ? perf.now() : t
151
128
  }
152
-
153
- function _mark(e) {
154
- if (dlog("Enter LUX.mark(), name = " + e), perf) {
155
- if (perf.mark) return perf.mark(e);
156
- if (perf.webkitMark) return perf.webkitMark(e)
157
- }
158
- gFlags |= gFlag_NoUserTiming, gaMarks.push({
159
- name: e,
160
- entryType: "mark",
161
- startTime: _now(),
162
- duration: 0
163
- })
164
- }
165
-
166
- function _measure(e, t, n) {
167
- if (dlog("Enter LUX.measure(), name = " + e), void 0 === t && _getMark(gStartMark) && (t = gStartMark), perf) {
168
- if (perf.measure) return t ? n ? perf.measure(e, t, n) : perf.measure(e, t) : perf.measure(e);
169
- if (perf.webkitMeasure) return perf.webkitMeasure(e, t, n)
170
- }
171
- var r = 0,
172
- a = _now();
173
- if (t) {
174
- var i = _getMark(t);
175
- if (i) r = i.startTime;
176
- else {
177
- if (!(perf && perf.timing && perf.timing[t])) return;
178
- r = perf.timing[t] - perf.timing.navigationStart
179
- }
180
- }
181
- if (n) {
182
- var o = _getMark(n);
183
- if (o) a = o.startTime;
184
- else {
185
- if (!(perf && perf.timing && perf.timing[n])) return;
186
- a = perf.timing[n] - perf.timing.navigationStart
187
- }
188
- }
189
- gaMeasures.push({
190
- name: e,
191
- entryType: "measure",
192
- startTime: r,
193
- duration: a - r
194
- })
195
- }
196
-
197
- function _getMark(e) {
198
- return _getM(e, _getMarks())
199
- }
200
-
201
- function _getM(e, t) {
129
+ function I(e) {
130
+ var t = !1;
131
+ try {
132
+ t = e.cancelable;
133
+ } catch (e) {
134
+ return void pe("Permission error accessing input event.");
135
+ }
136
+ if (t) {
137
+ var n = D(!0),
138
+ r = e.timeStamp;
139
+ if ((r > 152e7 && (n = Number(new Date())), r > n)) return;
140
+ var i = n - r;
141
+ "pointerdown" == e.type
142
+ ? (function (e, t) {
143
+ function n() {
144
+ C(e), i();
145
+ }
146
+ function r() {
147
+ i();
148
+ }
149
+ function i() {
150
+ window.removeEventListener("pointerup", n, x),
151
+ window.removeEventListener("pointercancel", r, x);
152
+ }
153
+ window.addEventListener("pointerup", n, x),
154
+ window.addEventListener("pointercancel", r, x);
155
+ })(i)
156
+ : C(i);
157
+ }
158
+ }
159
+ function D(e) {
160
+ var t = (Date.now ? Date.now() : +new Date()) - M,
161
+ n = _(h);
162
+ return n && !e ? t - n.startTime : L && L.now ? L.now() : t;
163
+ }
164
+ function j(e) {
165
+ if ((pe("Enter LUX.mark(), name = " + e), L)) {
166
+ if (L.mark) return L.mark(e);
167
+ if (L.webkitMark) return L.webkitMark(e);
168
+ }
169
+ (s |= 4), u.push({ name: e, entryType: "mark", startTime: D(), duration: 0 });
170
+ }
171
+ function _(e) {
172
+ return (function (e, t) {
202
173
  if (t)
203
- for (var n = t.length - 1; n >= 0; n--) {
204
- var r = t[n];
205
- if (e === r.name) return r
206
- }
207
- }
208
-
209
- function _getMarks() {
210
- if (perf) {
211
- if (perf.getEntriesByType) return perf.getEntriesByType("mark");
212
- if (perf.webkitGetEntriesByType) return perf.webkitGetEntriesByType("mark")
213
- }
214
- return gaMarks
215
- }
216
-
217
- function _getMeasures() {
218
- if (perf) {
219
- if (perf.getEntriesByType) return perf.getEntriesByType("measure");
220
- if (perf.webkitGetEntriesByType) return perf.webkitGetEntriesByType("measure")
221
- }
222
- return gaMeasures
223
- }
224
-
225
- function userTimingValues() {
226
- var e = {},
227
- t = _getMark(gStartMark),
228
- n = _getMarks();
229
- n && n.forEach((function(n) {
174
+ for (var n = t.length - 1; n >= 0; n--) {
175
+ var r = t[n];
176
+ if (e === r.name) return r;
177
+ }
178
+ return;
179
+ })(e, P());
180
+ }
181
+ function P() {
182
+ if (L) {
183
+ if (L.getEntriesByType) return L.getEntriesByType("mark");
184
+ if (L.webkitGetEntriesByType) return L.webkitGetEntriesByType("mark");
185
+ }
186
+ return u;
187
+ }
188
+ function O() {
189
+ var e = {},
190
+ t = _(h),
191
+ n = P();
192
+ n &&
193
+ n.forEach(function (n) {
194
+ var r = n.name,
195
+ i = r !== h && t ? t.startTime : 0,
196
+ a = Math.round(n.startTime - i);
197
+ a < 0 || (void 0 === e[r] ? (e[r] = a) : (e[r] = Math.max(a, e[r])));
198
+ });
199
+ var r = (function () {
200
+ if (L) {
201
+ if (L.getEntriesByType) return L.getEntriesByType("measure");
202
+ if (L.webkitGetEntriesByType) return L.webkitGetEntriesByType("measure");
203
+ }
204
+ return c;
205
+ })();
206
+ r &&
207
+ r.forEach(function (n) {
208
+ if (!(t && n.startTime < t.startTime)) {
230
209
  var r = n.name,
231
- a = r !== gStartMark && t ? t.startTime : 0,
232
- i = Math.round(n.startTime - a);
233
- i < 0 || (void 0 === e[r] ? e[r] = i : e[r] = Math.max(i, e[r]))
234
- }));
235
- var r = _getMeasures();
236
- r && r.forEach((function(n) {
237
- if (!(t && n.startTime < t.startTime)) {
238
- var r = n.name,
239
- a = Math.round(n.duration);
240
- void 0 === e[r] ? e[r] = a : e[r] = Math.max(a, e[r])
241
- }
242
- }));
243
- var a = [];
244
- return Object.keys(e).forEach((function(t) {
245
- a.push(t + "|" + e[t])
246
- })), a.join(",")
247
- }
248
-
249
- function elementTimingValues() {
250
- var e = [];
251
- if (gaPerfEntries.length)
252
- for (var t = 0; t < gaPerfEntries.length; t++) {
253
- var n = gaPerfEntries[t];
254
- "element" === n.entryType && n.identifier && n.startTime && e.push(n.identifier + "|" + Math.round(n.startTime))
255
- }
256
- return e.join(",")
257
- }
258
-
259
- function cpuTimes() {
260
- if ("function" != typeof PerformanceLongTaskTiming) return "";
261
- var e = "",
262
- t = {},
263
- n = {};
264
- if (gaPerfEntries.length)
265
- for (var r = _getMark(gStartMark), a = r ? r.startTime : 0, i = r ? _getMark(gEndMark).startTime : perf.timing.loadEventEnd - perf.timing.navigationStart, o = 0; o < gaPerfEntries.length; o++) {
266
- var s = gaPerfEntries[o];
267
- if ("longtask" === s.entryType) {
268
- var d = Math.round(s.duration);
269
- if (s.startTime < a) d -= a - s.startTime;
270
- else if (s.startTime >= i) continue;
271
- var g = s.attribution[0].name;
272
- t[g] || (t[g] = 0, n[g] = ""), t[g] += d, n[g] += "," + Math.round(s.startTime) + "|" + d
273
- }
274
- }
275
- var u = void 0 !== t.script ? "script" : "unknown";
276
- void 0 === t[u] && (t[u] = 0, n[u] = "");
277
- var c = cpuStats(n[u]),
278
- l = ",n|" + c.count + ",d|" + c.median + ",x|" + c.max + (0 === c.fci ? "" : ",i|" + c.fci);
279
- return e += "s|" + t[u] + l + n[u]
280
- }
281
-
282
- function cpuStats(e) {
283
- for (var t = 0, n = getFcp(), r = 0 === n, a = [], i = e.split(","), o = 0; o < i.length; o++) {
284
- var s = i[o].split("|");
210
+ i = Math.round(n.duration);
211
+ void 0 === e[r] ? (e[r] = i) : (e[r] = Math.max(i, e[r]));
212
+ }
213
+ });
214
+ var i = [];
215
+ return (
216
+ Object.keys(e).forEach(function (t) {
217
+ i.push(t + "|" + e[t]);
218
+ }),
219
+ i.join(",")
220
+ );
221
+ }
222
+ function H() {
223
+ if ("function" != typeof PerformanceLongTaskTiming) return "";
224
+ var e = "",
225
+ t = {},
226
+ n = {};
227
+ if (i.length)
228
+ for (
229
+ var r = _(h),
230
+ a = r ? r.startTime : 0,
231
+ o = r ? _(y).startTime : L.timing.loadEventEnd - L.timing.navigationStart,
232
+ s = 0;
233
+ s < i.length;
234
+ s++
235
+ ) {
236
+ var u = i[s];
237
+ if ("longtask" === u.entryType) {
238
+ var c = Math.round(u.duration);
239
+ if (u.startTime < a) c -= a - u.startTime;
240
+ else if (u.startTime >= o) continue;
241
+ var d = u.attribution[0].name;
242
+ t[d] || ((t[d] = 0), (n[d] = "")),
243
+ (t[d] += c),
244
+ (n[d] += "," + Math.round(u.startTime) + "|" + c);
245
+ }
246
+ }
247
+ var f = void 0 !== t.script ? "script" : "unknown";
248
+ void 0 === t[f] && ((t[f] = 0), (n[f] = ""));
249
+ var m = (function (e) {
250
+ for (var t = 0, n = A(), r = 0 === n, i = [], a = e.split(","), o = 0; o < a.length; o++) {
251
+ var s = a[o].split("|");
285
252
  if (2 === s.length) {
286
- var d = parseInt(s[0]),
287
- g = parseInt(s[1]);
288
- a.push(g), t = g > t ? g : t, !r && d > n && (d - n > 5e3 ? r = !0 : n = d + g)
253
+ var u = parseInt(s[0]),
254
+ c = parseInt(s[1]);
255
+ i.push(c), (t = c > t ? c : t), !r && u > n && (u - n > 5e3 ? (r = !0) : (n = u + c));
289
256
  }
290
- }
291
- return {
292
- count: a.length,
293
- median: arrayMedian(a),
294
- max: t,
295
- fci: n
296
- }
297
- }
298
-
299
- function calculateDCLS() {
300
- if ("function" != typeof LayoutShift) return !1;
301
- for (var e = 0, t = 0; t < gaPerfEntries.length; t++) {
302
- var n = gaPerfEntries[t];
303
- "layout-shift" !== n.entryType || n.hadRecentInput || (e += n.value)
304
- }
305
- return e.toFixed(6)
306
- }
307
-
308
- function arrayMedian(e) {
309
- if (0 === e.length) return 0;
310
- var t = Math.floor(e.length / 2);
311
- return e.sort((function(e, t) {
312
- return e - t
313
- })), e.length % 2 ? e[t] : Math.round((e[t - 1] + e[t]) / 2)
314
- }
315
-
316
- function selfLoading() {
317
- var e = "";
318
- if (perf && perf.getEntriesByName) {
319
- var t = getScriptElement("/js/lux.js");
320
- if (t) {
321
- var n = perf.getEntriesByName(t.src);
322
- if (n && n.length) {
323
- var r = n[0],
324
- a = Math.round(r.domainLookupEnd - r.domainLookupStart),
325
- i = Math.round(r.connectEnd - r.connectStart),
326
- o = Math.round(r.responseStart - r.requestStart),
327
- s = Math.round(r.responseEnd - r.responseStart),
328
- d = a + i + o + s,
329
- g = LUX_t_end - LUX_t_start,
330
- u = r.encodedBodySize ? r.encodedBodySize : 0;
331
- e = "d" + a + "t" + i + "f" + o + "c" + s + "n" + d + "e" + g + "r" + _samplerate + (u ? "x" + u : "") + (gLuxSnippetStart ? "l" + gLuxSnippetStart : "") + "s" + (LUX_t_start - _navigationStart)
332
- }
333
- }
334
- }
335
- return e
336
- }
337
-
338
- function _clearIx() {
339
- ghIx = {}
340
- }
341
-
342
- function ixValues() {
343
- var e = [];
344
- for (var t in ghIx) e.push(t + "|" + ghIx[t]);
345
- return e.join(",")
346
- }
347
-
348
- function _addData(e, t) {
349
- dlog("Enter LUX.addData(), name = " + e + ", value = " + t);
350
- var n = typeof t;
351
- "string" !== typeof e || "string" !== n && "number" !== n && "boolean" !== n || (ghData[e] = t), gbLuxSent && (gCustomerDataTimeout && clearTimeout(gCustomerDataTimeout), gCustomerDataTimeout = setTimeout(_sendCustomerData, 100))
352
- }
353
-
354
- function _sample() {
355
- if (void 0 === gUid || void 0 === _samplerate) return !1;
356
- var e = ("" + gUid).substr(-2);
357
- return parseInt(e) < _samplerate
358
- }
359
-
360
- function customerDataValues() {
361
- var e = [];
362
- for (var t in ghData) {
363
- var n = "" + ghData[t];
364
- t = t.replace(/,/g, "").replace(/\|/g, ""), n = n.replace(/,/g, "").replace(/\|/g, ""), e.push(t + "|" + n)
365
- }
366
- return encodeURIComponent(e.join(","))
367
- }
368
-
369
- function _init() {
370
- dlog("Enter LUX.init()."), _clearIx(), _removeIxHandlers(), _addIxHandlers(), gbNavSent = 0, gbLuxSent = 0, gbIxSent = 0, gbFirstPV = 0, gSyncId = createSyncId(), gUid = refreshUniqueId(gSyncId), gaPerfEntries.splice(0), gFlags = 0, gFlags |= gFlag_InitCalled, _mark(gStartMark)
371
- }
372
-
373
- function blockingScripts() {
374
- var e = lastViewportElement();
375
- if (!e) return syncScripts();
376
- for (var t = document.getElementsByTagName("script"), n = 0, r = 0, a = t.length; r < a; r++) {
377
- var i = t[r];
378
- !i.src || i.async || i.defer || 0 == (4 & i.compareDocumentPosition(e)) || n++
379
- }
380
- return n
381
- }
382
-
383
- function blockingStylesheets() {
384
- for (var e = 0, t = document.getElementsByTagName("link"), n = 0, r = t.length; n < r; n++) {
385
- var a = t[n];
386
- a.href && "stylesheet" === a.rel && 0 !== a.href.indexOf("data:") && (a.onloadcssdefined || "print" === a.media || "style" === a.as || "function" == typeof a.onload && "all" === a.media || e++)
387
- }
388
- return e
389
- }
390
-
391
- function syncScripts() {
392
- for (var e = document.getElementsByTagName("script"), t = 0, n = 0, r = e.length; n < r; n++) {
393
- var a = e[n];
394
- !a.src || a.async || a.defer || t++
395
- }
396
- return t
397
- }
398
-
399
- function numScripts() {
400
- for (var e = document.getElementsByTagName("script"), t = 0, n = 0, r = e.length; n < r; n++) {
401
- e[n].src && t++
402
- }
403
- return t
404
- }
405
-
406
- function numStylesheets() {
407
- for (var e = document.getElementsByTagName("link"), t = 0, n = 0, r = e.length; n < r; n++) {
408
- var a = e[n];
409
- a.href && "stylesheet" == a.rel && t++
410
- }
411
- return t
412
- }
413
-
414
- function inlineTagSize(e) {
415
- for (var t = document.getElementsByTagName(e), n = 0, r = 0, a = t.length; r < a; r++) {
416
- var i = t[r];
417
- try {
418
- n += i.innerHTML.length
419
- } catch (i) {
420
- return dlog("Error accessing inline element innerHTML."), -1
421
- }
422
- }
423
- return n
424
- }
425
-
426
- function getNavTiming() {
427
- var e = "",
428
- t = _navigationStart;
429
- if (_getMark(gStartMark) && _getMark(gEndMark)) {
430
- var n = Math.round(_getMark(gStartMark).startTime);
431
- e = (t += n) + "fs0ls" + (s = Math.round(_getMark(gEndMark).startTime) - n) + "le" + s
432
- } else if (perf && perf.timing) {
433
- var r = perf.timing,
434
- a = getStartRender(),
435
- i = getFcp(),
436
- o = getLcp();
437
- e = t + (r.redirectStart ? "rs" + (r.redirectStart - t) : "") + (r.redirectEnd ? "re" + (r.redirectEnd - t) : "") + (r.fetchStart ? "fs" + (r.fetchStart - t) : "") + (r.domainLookupStart ? "ds" + (r.domainLookupStart - t) : "") + (r.domainLookupEnd ? "de" + (r.domainLookupEnd - t) : "") + (r.connectStart ? "cs" + (r.connectStart - t) : "") + (r.secureConnectionStart ? "sc" + (r.secureConnectionStart - t) : "") + (r.connectEnd ? "ce" + (r.connectEnd - t) : "") + (r.requestStart ? "qs" + (r.requestStart - t) : "") + (r.responseStart ? "bs" + (r.responseStart - t) : "") + (r.responseEnd ? "be" + (r.responseEnd - t) : "") + (r.domLoading ? "ol" + (r.domLoading - t) : "") + (r.domInteractive ? "oi" + (r.domInteractive - t) : "") + (r.domContentLoadedEventStart ? "os" + (r.domContentLoadedEventStart - t) : "") + (r.domContentLoadedEventEnd ? "oe" + (r.domContentLoadedEventEnd - t) : "") + (r.domComplete ? "oc" + (r.domComplete - t) : "") + (r.loadEventStart ? "ls" + (r.loadEventStart - t) : "") + (r.loadEventEnd ? "le" + (r.loadEventEnd - t) : "") + (a ? "sr" + a : "") + (i ? "fc" + i : "") + (o ? "lc" + o : "")
438
- } else if (_getMark(gEndMark)) {
439
- var s;
440
- e = t + "fs0ls" + (s = Math.round(_getMark(gEndMark).startTime)) + "le" + s
441
- }
442
- return e
443
- }
444
-
445
- function getFcp() {
446
- if (perf && perf.getEntriesByType && perf.getEntriesByType("paint"))
447
- for (var e = perf.getEntriesByType("paint"), t = 0; t < e.length; t++) {
448
- var n = e[t];
449
- if ("first-contentful-paint" === n.name) return Math.round(n.startTime)
450
- }
451
- return 0
452
- }
453
-
454
- function getLcp() {
455
- if (gaPerfEntries.length)
456
- for (var e = gaPerfEntries.length - 1; e >= 0; e--) {
457
- var t = gaPerfEntries[e];
458
- if ("largest-contentful-paint" === t.entryType) return Math.round(t.startTime)
459
- }
460
- return 0
461
- }
462
-
463
- function getStartRender() {
464
- if (perf && perf.timing) {
465
- var e, t = perf.timing,
257
+ }
258
+ var d = i.length,
259
+ f = (function (e) {
260
+ if (0 === e.length) return 0;
261
+ var t = Math.floor(e.length / 2);
262
+ return (
263
+ e.sort(function (e, t) {
264
+ return e - t;
265
+ }),
266
+ e.length % 2 ? e[t] : Math.round((e[t - 1] + e[t]) / 2)
267
+ );
268
+ })(i);
269
+ return { count: d, median: f, max: t, fci: n };
270
+ })(n[f]),
271
+ l = ",n|" + m.count + ",d|" + m.median + ",x|" + m.max + (0 === m.fci ? "" : ",i|" + m.fci);
272
+ return (e += "s|" + t[f] + l + n[f]);
273
+ }
274
+ function R() {
275
+ var e = [];
276
+ for (var t in d) e.push(t + "|" + d[t]);
277
+ return e.join(",");
278
+ }
279
+ function W() {
280
+ if (void 0 === T || void 0 === X) return !1;
281
+ var e = ("" + T).substr(-2);
282
+ return parseInt(e) < X;
283
+ }
284
+ function F() {
285
+ var e = [];
286
+ for (var t in f) {
287
+ var n = "" + f[t];
288
+ (t = t.replace(/,/g, "").replace(/\|/g, "")),
289
+ (n = n.replace(/,/g, "").replace(/\|/g, "")),
290
+ e.push(t + "|" + n);
291
+ }
292
+ return encodeURIComponent(e.join(","));
293
+ }
294
+ function G() {
295
+ var e = Z();
296
+ if (!e)
297
+ return (function () {
298
+ for (
299
+ var e = document.getElementsByTagName("script"), t = 0, n = 0, r = e.length;
300
+ n < r;
301
+ n++
302
+ ) {
303
+ var i = e[n];
304
+ !i.src || i.async || i.defer || t++;
305
+ }
306
+ return t;
307
+ })();
308
+ for (var t = document.getElementsByTagName("script"), n = 0, r = 0, i = t.length; r < i; r++) {
309
+ var a = t[r];
310
+ !a.src || a.async || a.defer || 0 == (4 & a.compareDocumentPosition(e)) || n++;
311
+ }
312
+ return n;
313
+ }
314
+ function q(e) {
315
+ for (var t = document.getElementsByTagName(e), n = 0, r = 0, i = t.length; r < i; r++) {
316
+ var a = t[r];
317
+ try {
318
+ n += a.innerHTML.length;
319
+ } catch (a) {
320
+ return pe("Error accessing inline element innerHTML."), -1;
321
+ }
322
+ }
323
+ return n;
324
+ }
325
+ function z() {
326
+ var e = "",
327
+ t = M;
328
+ if (_(h) && _(y)) {
329
+ var n = Math.round(_(h).startTime);
330
+ e = (t += n) + "fs0ls" + (u = Math.round(_(y).startTime) - n) + "le" + u;
331
+ } else if (L && L.timing) {
332
+ var r = L.timing,
333
+ a = (function () {
334
+ if (L && L.timing) {
335
+ var e,
336
+ t = L.timing,
466
337
  n = t.navigationStart;
467
- if (n) {
468
- if (perf && perf.getEntriesByType && perf.getEntriesByType("paint") && perf.getEntriesByType("paint").length)
469
- for (var r = perf.getEntriesByType("paint"), a = 0; a < r.length; a++) {
470
- var i = r[a];
471
- if ("first-paint" === i.name) {
472
- e = Math.round(i.startTime);
473
- break
474
- }
475
- } else if (window.chrome && "function" == typeof window.chrome.loadTimes) {
476
- var o = window.chrome.loadTimes();
477
- o && (e = Math.round(1e3 * o.firstPaintTime - n))
478
- } else t.msFirstPaint && (e = Math.round(t.msFirstPaint - n));
479
- if (e > 0) return e
338
+ if (n) {
339
+ if (
340
+ L &&
341
+ L.getEntriesByType &&
342
+ L.getEntriesByType("paint") &&
343
+ L.getEntriesByType("paint").length
344
+ )
345
+ for (var r = L.getEntriesByType("paint"), i = 0; i < r.length; i++) {
346
+ var a = r[i];
347
+ if ("first-paint" === a.name) {
348
+ e = Math.round(a.startTime);
349
+ break;
350
+ }
351
+ }
352
+ else if (window.chrome && "function" == typeof window.chrome.loadTimes) {
353
+ var o = window.chrome.loadTimes();
354
+ o && (e = Math.round(1e3 * o.firstPaintTime - n));
355
+ } else t.msFirstPaint && (e = Math.round(t.msFirstPaint - n));
356
+ if (e > 0) return e;
357
+ }
480
358
  }
481
- }
482
- return dlog("Paint Timing not supported."), null
483
- }
484
-
485
- function getCustomerId() {
486
- if (void 0 !== LUX.customerid) return LUX.customerid;
487
- var e = getScriptElement("/js/lux.js");
488
- return e ? (LUX.customerid = getQuerystringParam(e.src, "id"), LUX.customerid) : ""
489
- }
490
-
491
- function getScriptElement(e) {
492
- for (var t = document.getElementsByTagName("script"), n = 0, r = t.length; n < r; n++) {
493
- var a = t[n];
494
- if (a.src && -1 !== a.src.indexOf(e)) return a
495
- }
496
- return null
497
- }
498
-
499
- function getQuerystringParam(e, t) {
500
- for (var n = e.split("?")[1].split("&"), r = 0, a = n.length; r < a; r++) {
501
- var i = n[r].split("=");
502
- if (t === i[0]) return i[1]
503
- }
504
- }
505
-
506
- function avgDomDepth() {
507
- for (var e = document.getElementsByTagName("*"), t = e.length, n = 0; t--;) n += numParents(e[t]);
508
- return Math.round(n / e.length)
509
- }
510
-
511
- function numParents(e) {
512
- var t = 0;
513
- if (e.parentNode)
514
- for (; e = e.parentNode;) t++;
515
- return t
516
- }
517
-
518
- function docHeight(e) {
519
- var t = e.body,
520
- n = e.documentElement;
521
- return Math.max(t ? t.scrollHeight : 0, t ? t.offsetHeight : 0, n ? n.clientHeight : 0, n ? n.scrollHeight : 0, n ? n.offsetHeight : 0)
522
- }
523
-
524
- function docWidth(e) {
525
- var t = e.body,
526
- n = e.documentElement;
527
- return Math.max(t ? t.scrollWidth : 0, t ? t.offsetWidth : 0, n ? n.clientWidth : 0, n ? n.scrollWidth : 0, n ? n.offsetWidth : 0)
528
- }
529
-
530
- function docSize() {
531
- if (perf && perf.getEntriesByType) {
532
- var e = performance.getEntriesByType("navigation");
533
- if (e && e.length > 0 && e[0].encodedBodySize) return e[0].encodedBodySize
534
- }
535
- return 0
536
- }
537
-
538
- function navigationType() {
539
- return perf && perf.navigation && void 0 !== perf.navigation.type ? perf.navigation.type : ""
540
- }
541
-
542
- function connectionType() {
543
- var e = navigator.connection,
544
- t = "";
545
- return e && e.effectiveType && (t = "slow-2g" === (t = e.effectiveType) ? "Slow 2G" : "2g" === t || "3g" === t || "4g" === t || "5g" === t ? t.toUpperCase() : t.charAt(0).toUpperCase() + t.slice(1)), t
546
- }
547
-
548
- function imagesATF() {
549
- var e = document.getElementsByTagName("img"),
550
- t = [];
551
- if (e)
552
- for (var n = 0, r = e.length; n < r; n++) {
553
- var a = e[n];
554
- inViewport(a) && t.push(a)
359
+ return pe("Paint Timing not supported."), null;
360
+ })(),
361
+ o = A(),
362
+ s = (function () {
363
+ if (i.length)
364
+ for (var e = i.length - 1; e >= 0; e--) {
365
+ var t = i[e];
366
+ if ("largest-contentful-paint" === t.entryType) return Math.round(t.startTime);
367
+ }
368
+ return 0;
369
+ })();
370
+ e =
371
+ t +
372
+ (r.redirectStart ? "rs" + (r.redirectStart - t) : "") +
373
+ (r.redirectEnd ? "re" + (r.redirectEnd - t) : "") +
374
+ (r.fetchStart ? "fs" + (r.fetchStart - t) : "") +
375
+ (r.domainLookupStart ? "ds" + (r.domainLookupStart - t) : "") +
376
+ (r.domainLookupEnd ? "de" + (r.domainLookupEnd - t) : "") +
377
+ (r.connectStart ? "cs" + (r.connectStart - t) : "") +
378
+ (r.secureConnectionStart ? "sc" + (r.secureConnectionStart - t) : "") +
379
+ (r.connectEnd ? "ce" + (r.connectEnd - t) : "") +
380
+ (r.requestStart ? "qs" + (r.requestStart - t) : "") +
381
+ (r.responseStart ? "bs" + (r.responseStart - t) : "") +
382
+ (r.responseEnd ? "be" + (r.responseEnd - t) : "") +
383
+ (r.domLoading ? "ol" + (r.domLoading - t) : "") +
384
+ (r.domInteractive ? "oi" + (r.domInteractive - t) : "") +
385
+ (r.domContentLoadedEventStart ? "os" + (r.domContentLoadedEventStart - t) : "") +
386
+ (r.domContentLoadedEventEnd ? "oe" + (r.domContentLoadedEventEnd - t) : "") +
387
+ (r.domComplete ? "oc" + (r.domComplete - t) : "") +
388
+ (r.loadEventStart ? "ls" + (r.loadEventStart - t) : "") +
389
+ (r.loadEventEnd ? "le" + (r.loadEventEnd - t) : "") +
390
+ (a ? "sr" + a : "") +
391
+ (o ? "fc" + o : "") +
392
+ (s ? "lc" + s : "");
393
+ } else if (_(y)) {
394
+ var u;
395
+ e = t + "fs0ls" + (u = Math.round(_(y).startTime)) + "le" + u;
396
+ }
397
+ return e;
398
+ }
399
+ function A() {
400
+ if (L && L.getEntriesByType && L.getEntriesByType("paint"))
401
+ for (var e = L.getEntriesByType("paint"), t = 0; t < e.length; t++) {
402
+ var n = e[t];
403
+ if ("first-contentful-paint" === n.name) return Math.round(n.startTime);
404
+ }
405
+ return 0;
406
+ }
407
+ function J() {
408
+ if (void 0 !== LUX.customerid) return LUX.customerid;
409
+ var e = Y("/js/lux.js");
410
+ return e
411
+ ? ((LUX.customerid = (function (e, t) {
412
+ for (var n = e.split("?")[1].split("&"), r = 0, i = n.length; r < i; r++) {
413
+ var a = n[r].split("=");
414
+ if (t === a[0]) return a[1];
555
415
  }
556
- return t
557
- }
558
-
559
- function lastViewportElement(e) {
560
- var t;
561
- if (e || (e = document.body), e) {
562
- var n = e.children;
563
- if (n)
564
- for (var r = 0, a = n.length; r < a; r++) {
565
- var i = n[r];
566
- inViewport(i) && (t = i)
567
- }
568
- }
569
- return t ? lastViewportElement(t) : e
570
- }
571
-
572
- function inViewport(e) {
573
- var t = document.documentElement.clientHeight,
574
- n = document.documentElement.clientWidth,
575
- r = findPos(e);
576
- return r[0] >= 0 && r[1] >= 0 && r[0] < n && r[1] < t && e.offsetWidth > 0 && e.offsetHeight > 0
577
- }
578
-
579
- function findPos(e) {
580
- for (var t = 0, n = 0; e;) t += e.offsetLeft, n += e.offsetTop, e = e.offsetParent;
581
- return [t, n]
582
- }
583
-
584
- function _sendLux() {
585
- dlog("Enter LUX.send().");
586
- var e = getCustomerId();
587
- if (e && gSyncId && validDomain() && _sample() && !gbLuxSent) {
588
- _mark(gEndMark);
589
- var t = userTimingValues(),
590
- n = elementTimingValues(),
591
- r = customerDataValues(),
592
- a = "";
593
- gbIxSent || (a = ixValues());
594
- var i = cpuTimes(),
595
- o = calculateDCLS(),
596
- s = selfLoading();
597
- document.visibilityState && "visible" !== document.visibilityState && (gFlags |= gFlag_NotVisible);
598
- var d = _beaconUrl + "?v=" + version + "&id=" + e + "&sid=" + gSyncId + "&uid=" + gUid + (r ? "&CD=" + r : "") + "&l=" + encodeURIComponent(_getPageLabel()),
599
- g = inlineTagSize("script"),
600
- u = inlineTagSize("style"),
601
- c = (gbNavSent ? "" : "&NT=" + getNavTiming()) + (gbFirstPV ? "&LJS=" + s : "") + "&PS=ns" + numScripts() + "bs" + blockingScripts() + (g > -1 ? "is" + g : "") + "ss" + numStylesheets() + "bc" + blockingStylesheets() + (u > -1 ? "ic" + u : "") + "ia" + imagesATF().length + "it" + document.getElementsByTagName("img").length + "dd" + avgDomDepth() + "nd" + document.getElementsByTagName("*").length + "vh" + document.documentElement.clientHeight + "vw" + document.documentElement.clientWidth + "dh" + docHeight(document) + "dw" + docWidth(document) + (docSize() ? "ds" + docSize() : "") + (connectionType() ? "ct" + connectionType() + "_" : "") + "er" + nErrors + "nt" + navigationType() + (navigator.deviceMemory ? "dm" + Math.round(navigator.deviceMemory) : "") + (a ? "&IX=" + a : "") + (gFirstInputDelay ? "&FID=" + gFirstInputDelay : "") + (i ? "&CPU=" + i : "") + (gFlags ? "&fl=" + gFlags : "") + (n ? "&ET=" + n : "") + "&HN=" + encodeURIComponent(document.location.hostname) + (!1 !== o ? "&CLS=" + o : ""),
602
- l = "";
603
- if (t) {
604
- var f = d.length + c.length;
605
- if (f + t.length <= gMaxQuerystring) c += "&UT=" + t;
606
- else {
607
- var m = gMaxQuerystring - f,
608
- p = t.lastIndexOf(",", m);
609
- c += "&UT=" + t.substring(0, p), l = t.substring(p + 1)
610
- }
416
+ return;
417
+ })(e.src, "id")),
418
+ LUX.customerid)
419
+ : "";
420
+ }
421
+ function Y(e) {
422
+ for (var t = document.getElementsByTagName("script"), n = 0, r = t.length; n < r; n++) {
423
+ var i = t[n];
424
+ if (i.src && -1 !== i.src.indexOf(e)) return i;
425
+ }
426
+ return null;
427
+ }
428
+ function K(e) {
429
+ var t = 0;
430
+ if (e.parentNode) for (; (e = e.parentNode); ) t++;
431
+ return t;
432
+ }
433
+ function Q() {
434
+ if (L && L.getEntriesByType) {
435
+ var e = performance.getEntriesByType("navigation");
436
+ if (e && e.length > 0 && e[0].encodedBodySize) return e[0].encodedBodySize;
437
+ }
438
+ return 0;
439
+ }
440
+ function V() {
441
+ var e = navigator.connection,
442
+ t = "";
443
+ return (
444
+ e &&
445
+ e.effectiveType &&
446
+ (t =
447
+ "slow-2g" === (t = e.effectiveType)
448
+ ? "Slow 2G"
449
+ : "2g" === t || "3g" === t || "4g" === t || "5g" === t
450
+ ? t.toUpperCase()
451
+ : t.charAt(0).toUpperCase() + t.slice(1)),
452
+ t
453
+ );
454
+ }
455
+ function Z(e) {
456
+ var t;
457
+ if ((e || (e = document.body), e)) {
458
+ var n = e.children;
459
+ if (n)
460
+ for (var r = 0, i = n.length; r < i; r++) {
461
+ var a = n[r];
462
+ $(a) && (t = a);
463
+ }
464
+ }
465
+ return t ? Z(t) : e;
466
+ }
467
+ function $(e) {
468
+ var t = document.documentElement.clientHeight,
469
+ n = document.documentElement.clientWidth,
470
+ r = (function (e) {
471
+ var t = 0,
472
+ n = 0;
473
+ for (; e; ) (t += e.offsetLeft), (n += e.offsetTop), (e = e.offsetParent);
474
+ return [t, n];
475
+ })(e);
476
+ return (
477
+ r[0] >= 0 && r[1] >= 0 && r[0] < n && r[1] < t && e.offsetWidth > 0 && e.offsetHeight > 0
478
+ );
479
+ }
480
+ function ee() {
481
+ pe("Enter LUX.send().");
482
+ var e = J();
483
+ if (e && E && W() && !m) {
484
+ j(y);
485
+ var t = O(),
486
+ r = (function () {
487
+ var e = [];
488
+ if (i.length)
489
+ for (var t = 0; t < i.length; t++) {
490
+ var n = i[t];
491
+ "element" === n.entryType &&
492
+ n.identifier &&
493
+ n.startTime &&
494
+ e.push(n.identifier + "|" + Math.round(n.startTime));
495
+ }
496
+ return e.join(",");
497
+ })(),
498
+ a = F(),
499
+ o = "";
500
+ v || (o = R());
501
+ var u = H(),
502
+ c = (function () {
503
+ if ("function" != typeof LayoutShift) return !1;
504
+ for (var e = 0, t = 0; t < i.length; t++) {
505
+ var n = i[t];
506
+ "layout-shift" !== n.entryType || n.hadRecentInput || (e += n.value);
611
507
  }
612
- var v = d + c;
613
- dlog("Sending main LUX beacon: " + v), _sendBeacon(v), gbLuxSent = 1, gbNavSent = 1, gbIxSent = a ? 1 : 0;
614
- for (var h = gMaxQuerystring - d.length; l;) {
615
- var y = "";
616
- if (l.length <= h) y = l, l = "";
617
- else {
618
- var _ = l.lastIndexOf(",", h); - 1 === _ && (_ = l.indexOf(",")), -1 === _ ? (y = l, l = "") : (y = l.substring(0, _), l = l.substring(_ + 1))
508
+ return e.toFixed(6);
509
+ })(),
510
+ d = (function () {
511
+ var e = "";
512
+ if (L && L.getEntriesByName) {
513
+ var t = Y("/js/lux.js");
514
+ if (t) {
515
+ var n = L.getEntriesByName(t.src);
516
+ if (n && n.length) {
517
+ var r = n[0],
518
+ i = Math.round(r.domainLookupEnd - r.domainLookupStart),
519
+ a = Math.round(r.connectEnd - r.connectStart),
520
+ o = Math.round(r.responseStart - r.requestStart),
521
+ s = Math.round(r.responseEnd - r.responseStart),
522
+ u = i + a + o + s,
523
+ c = LUX_t_end - LUX_t_start,
524
+ d = r.encodedBodySize ? r.encodedBodySize : 0;
525
+ e =
526
+ "d" +
527
+ i +
528
+ "t" +
529
+ a +
530
+ "f" +
531
+ o +
532
+ "c" +
533
+ s +
534
+ "n" +
535
+ u +
536
+ "e" +
537
+ c +
538
+ "r" +
539
+ X +
540
+ (d ? "x" + d : "") +
541
+ (B ? "l" + B : "") +
542
+ "s" +
543
+ (LUX_t_start - M);
619
544
  }
620
- var L = d + "&UT=" + y;
621
- dlog("Sending extra User Timing beacon: " + L), _sendBeacon(L)
545
+ }
622
546
  }
623
- }
624
- }
625
-
626
- function _sendIx() {
627
- var e = getCustomerId();
628
- if (e && gSyncId && validDomain() && _sample() && !gbIxSent && gbLuxSent) {
629
- var t = ixValues();
630
- if (t) {
631
- var n = customerDataValues(),
632
- r = "?v=" + version + "&id=" + e + "&sid=" + gSyncId + "&uid=" + gUid + (n ? "&CD=" + n : "") + "&l=" + encodeURIComponent(_getPageLabel()) + "&IX=" + t + (gFirstInputDelay ? "&FID=" + gFirstInputDelay : "") + "&HN=" + encodeURIComponent(document.location.hostname),
633
- a = _beaconUrl + r;
634
- dlog("Sending Interaction Metrics beacon: " + a), _sendBeacon(a), gbIxSent = 1
635
- }
636
- }
637
- }
638
-
639
- function _sendCustomerData() {
640
- var e = getCustomerId();
641
- if (e && gSyncId && validDomain() && _sample() && gbLuxSent) {
642
- var t = customerDataValues();
643
- if (t) {
644
- var n = "?v=" + version + "&id=" + e + "&sid=" + gSyncId + "&uid=" + gUid + "&CD=" + t + "&l=" + encodeURIComponent(_getPageLabel()) + "&HN=" + encodeURIComponent(document.location.hostname),
645
- r = _beaconUrl + n;
646
- dlog("Sending late Customer Data beacon: " + r), _sendBeacon(r)
647
- }
648
- }
649
- }
650
-
651
- function _sendBeacon(e) {
652
- if ("simple" !== LUX.beaconMode) return _sendBeaconAutoUpdate(e);
653
- (new Image).src = e
654
- }
655
-
656
- function _sendBeaconAutoUpdate(e) {
657
- var t = document.createElement("script");
658
- t.async = !0, t.src = e;
659
- var n = document.getElementsByTagName("script");
660
- n.length ? n[0].parentNode.insertBefore(t, n[0]) : ((n = document.getElementsByTagName("head")).length || (n = document.getElementsByTagName("body")).length) && n[0].appendChild(t)
661
- }
662
-
663
- function interactionAttributionForElement(e) {
664
- if (e.id) return e.id;
665
- for (var t, n = e; n.parentNode && n.parentNode.tagName;) {
666
- if ((n = n.parentNode).hasAttribute("data-sctrack")) return n.getAttribute("data-sctrack");
667
- n.id && !t && (t = n.id)
668
- }
669
- var r = "INPUT" === e.tagName && "submit" === e.type,
670
- a = "BUTTON" === e.tagName,
671
- i = "A" === e.tagName;
672
- return r && e.value ? e.value : (a || i) && e.innerText ? e.innerText : t || ""
673
- }
674
-
675
- function _scrollHandler() {
676
- void 0 === ghIx.s && (ghIx.s = Math.round(_now()))
677
- }
678
-
679
- function _keyHandler(e) {
680
- if (_removeIxHandlers(), void 0 === ghIx.k) {
681
- if (ghIx.k = Math.round(_now()), e && e.target) {
682
- var t = interactionAttributionForElement(e.target);
683
- t && (ghIx.ki = t)
684
- }
685
- _sendIx()
686
- }
687
- }
688
-
689
- function _clickHandler(e) {
690
- if (_removeIxHandlers(), void 0 === ghIx.c) {
691
- ghIx.c = Math.round(_now());
692
- var t = null;
693
- try {
694
- e && e.target && (t = e.target)
695
- } catch (e) {
696
- dlog("Error accessing event target."), t = null
697
- }
698
- if (t) {
699
- e.clientX && (ghIx.cx = e.clientX, ghIx.cy = e.clientY);
700
- var n = interactionAttributionForElement(e.target);
701
- n && (ghIx.ci = n)
702
- }
703
- _sendIx()
704
- }
705
- }
706
-
707
- function _doUpdate(e, t) {
708
- if (e && version < e && document.body && !gbUpdated) {
709
- dlog("Updating cached version of lux.js from " + version + " to " + e + "."), gbUpdated = 1;
710
- var n = getScriptElement("/js/lux.js");
711
- if (n)
712
- if ("function" == typeof fetch) fetch(n.src, {
713
- cache: "reload"
714
- });
715
- else {
716
- var r = document.createElement("iframe");
717
- r.style.display = "none", r.id = "LUX_update_iframe", r.src = "//cdn.speedcurve.com/luxupdate.php?src=" + encodeURIComponent(n.src) + (t ? "&tw=" + t : ""), document.body.appendChild(r)
547
+ return e;
548
+ })();
549
+ document.visibilityState && "visible" !== document.visibilityState && (s |= 8);
550
+ var f,
551
+ g,
552
+ h,
553
+ w =
554
+ U +
555
+ "?v=" +
556
+ "216&id=" +
557
+ e +
558
+ "&sid=" +
559
+ E +
560
+ "&uid=" +
561
+ T +
562
+ (a ? "&CD=" + a : "") +
563
+ "&l=" +
564
+ encodeURIComponent(ge()),
565
+ k = q("script"),
566
+ N = q("style"),
567
+ x =
568
+ (l ? "" : "&NT=" + z()) +
569
+ (p ? "&LJS=" + d : "") +
570
+ "&PS=ns" +
571
+ (function () {
572
+ for (
573
+ var e = document.getElementsByTagName("script"), t = 0, n = 0, r = e.length;
574
+ n < r;
575
+ n++
576
+ )
577
+ e[n].src && t++;
578
+ return t;
579
+ })() +
580
+ "bs" +
581
+ G() +
582
+ (k > -1 ? "is" + k : "") +
583
+ "ss" +
584
+ (function () {
585
+ for (
586
+ var e = document.getElementsByTagName("link"), t = 0, n = 0, r = e.length;
587
+ n < r;
588
+ n++
589
+ ) {
590
+ var i = e[n];
591
+ i.href && "stylesheet" == i.rel && t++;
592
+ }
593
+ return t;
594
+ })() +
595
+ "bc" +
596
+ (function () {
597
+ for (
598
+ var e = 0, t = document.getElementsByTagName("link"), n = 0, r = t.length;
599
+ n < r;
600
+ n++
601
+ ) {
602
+ var i = t[n];
603
+ i.href &&
604
+ "stylesheet" === i.rel &&
605
+ 0 !== i.href.indexOf("data:") &&
606
+ (i.onloadcssdefined ||
607
+ "print" === i.media ||
608
+ "style" === i.as ||
609
+ ("function" == typeof i.onload && "all" === i.media) ||
610
+ e++);
611
+ }
612
+ return e;
613
+ })() +
614
+ (N > -1 ? "ic" + N : "") +
615
+ "ia" +
616
+ (function () {
617
+ var e = document.getElementsByTagName("img"),
618
+ t = [];
619
+ if (e)
620
+ for (var n = 0, r = e.length; n < r; n++) {
621
+ var i = e[n];
622
+ $(i) && t.push(i);
718
623
  }
719
- }
720
- }
721
-
722
- function addListener(e, t) {
723
- window.addEventListener ? window.addEventListener(e, t, !1) : window.attachEvent && window.attachEvent("on" + e, t)
724
- }
725
-
726
- function removeListener(e, t) {
727
- window.removeEventListener ? window.removeEventListener(e, t, !1) : window.detachEvent && window.detachEvent("on" + e, t)
728
- }
729
-
730
- function _addIxHandlers() {
731
- addListener("scroll", _scrollHandler), addListener("keypress", _keyHandler), addListener("mousedown", _clickHandler)
732
- }
733
-
734
- function _removeIxHandlers() {
735
- removeListener("scroll", _scrollHandler), removeListener("keypress", _keyHandler), removeListener("mousedown", _clickHandler)
736
- }
737
-
738
- function createSyncId(e) {
739
- return e ? Number(new Date) + "00000" : Number(new Date) + "" + _padLeft(parseInt(1e5 * Math.random()), "00000")
740
- }
741
-
742
- function refreshUniqueId(e) {
743
- var t = _getCookie("lux_uid");
744
- if (!t || t.length < 11) t = e;
745
- else {
746
- var n = parseInt(t.substring(0, 10));
747
- Number(new Date) / 1e3 - n > 86400 && (t = e)
748
- }
749
- return setUniqueId(t), t
750
- }
751
-
752
- function setUniqueId(e) {
753
- return _setCookie("lux_uid", e, gSessionTimeout), e
754
- }
755
-
756
- function _getUniqueId() {
757
- return gUid
758
- }
759
-
760
- function _getPageLabel() {
761
- if (void 0 !== LUX.label) return LUX.label;
762
- if (void 0 !== LUX.jspagelabel) {
763
- try {
764
- var label = eval(LUX.jspagelabel)
765
- } catch (e) {
766
- console.log("Error evaluating customer settings LUX page label:", e)
767
- }
768
- if (label) return label
769
- }
770
- return document.title
771
- }
772
-
773
- function validDomain() {
774
- return !0
775
- }
776
-
777
- function _getCookie(e) {
624
+ return t;
625
+ })().length +
626
+ "it" +
627
+ document.getElementsByTagName("img").length +
628
+ "dd" +
629
+ (function () {
630
+ for (var e = document.getElementsByTagName("*"), t = e.length, n = 0; t--; )
631
+ n += K(e[t]);
632
+ return Math.round(n / e.length);
633
+ })() +
634
+ "nd" +
635
+ document.getElementsByTagName("*").length +
636
+ "vh" +
637
+ document.documentElement.clientHeight +
638
+ "vw" +
639
+ document.documentElement.clientWidth +
640
+ "dh" +
641
+ ((f = document),
642
+ (g = f.body),
643
+ (h = f.documentElement),
644
+ Math.max(
645
+ g ? g.scrollHeight : 0,
646
+ g ? g.offsetHeight : 0,
647
+ h ? h.clientHeight : 0,
648
+ h ? h.scrollHeight : 0,
649
+ h ? h.offsetHeight : 0
650
+ ) + "dw") +
651
+ (function (e) {
652
+ var t = e.body,
653
+ n = e.documentElement;
654
+ return Math.max(
655
+ t ? t.scrollWidth : 0,
656
+ t ? t.offsetWidth : 0,
657
+ n ? n.clientWidth : 0,
658
+ n ? n.scrollWidth : 0,
659
+ n ? n.offsetWidth : 0
660
+ );
661
+ })(document) +
662
+ (Q() ? "ds" + Q() : "") +
663
+ (V() ? "ct" + V() + "_" : "") +
664
+ "er" +
665
+ n +
666
+ "nt" +
667
+ (L && L.navigation && void 0 !== L.navigation.type ? L.navigation.type : "") +
668
+ (navigator.deviceMemory ? "dm" + Math.round(navigator.deviceMemory) : "") +
669
+ (o ? "&IX=" + o : "") +
670
+ (S ? "&FID=" + S : "") +
671
+ (u ? "&CPU=" + u : "") +
672
+ (s ? "&fl=" + s : "") +
673
+ (r ? "&ET=" + r : "") +
674
+ "&HN=" +
675
+ encodeURIComponent(document.location.hostname) +
676
+ (!1 !== c ? "&CLS=" + c : ""),
677
+ C = "";
678
+ if (t) {
679
+ var I = w.length + x.length;
680
+ if (I + t.length <= b) x += "&UT=" + t;
681
+ else {
682
+ var D = b - I,
683
+ _ = t.lastIndexOf(",", D);
684
+ (x += "&UT=" + t.substring(0, _)), (C = t.substring(_ + 1));
685
+ }
686
+ }
687
+ var P = w + x;
688
+ pe("Sending main LUX beacon: " + P), re(P), (m = 1), (l = 1), (v = o ? 1 : 0);
689
+ for (var A = b - w.length; C; ) {
690
+ var Z = "";
691
+ if (C.length <= A) (Z = C), (C = "");
692
+ else {
693
+ var ee = C.lastIndexOf(",", A);
694
+ -1 === ee && (ee = C.indexOf(",")),
695
+ -1 === ee ? ((Z = C), (C = "")) : ((Z = C.substring(0, ee)), (C = C.substring(ee + 1)));
696
+ }
697
+ var te = w + "&UT=" + Z;
698
+ pe("Sending extra User Timing beacon: " + te), re(te);
699
+ }
700
+ }
701
+ }
702
+ function te() {
703
+ var e = J();
704
+ if (e && E && W() && !v && m) {
705
+ var t = R();
706
+ if (t) {
707
+ var n = F(),
708
+ r =
709
+ "?v=216&id=" +
710
+ e +
711
+ "&sid=" +
712
+ E +
713
+ "&uid=" +
714
+ T +
715
+ (n ? "&CD=" + n : "") +
716
+ "&l=" +
717
+ encodeURIComponent(ge()) +
718
+ "&IX=" +
719
+ t +
720
+ (S ? "&FID=" + S : "") +
721
+ "&HN=" +
722
+ encodeURIComponent(document.location.hostname),
723
+ i = U + r;
724
+ pe("Sending Interaction Metrics beacon: " + i), re(i), (v = 1);
725
+ }
726
+ }
727
+ }
728
+ function ne() {
729
+ var e = J();
730
+ if (e && E && W() && m) {
731
+ var t = F();
732
+ if (t) {
733
+ var n =
734
+ "?v=216&id=" +
735
+ e +
736
+ "&sid=" +
737
+ E +
738
+ "&uid=" +
739
+ T +
740
+ "&CD=" +
741
+ t +
742
+ "&l=" +
743
+ encodeURIComponent(ge()) +
744
+ "&HN=" +
745
+ encodeURIComponent(document.location.hostname),
746
+ r = U + n;
747
+ pe("Sending late Customer Data beacon: " + r), re(r);
748
+ }
749
+ }
750
+ }
751
+ function re(e) {
752
+ if ("simple" !== LUX.beaconMode)
753
+ return (function (e) {
754
+ var t = document.createElement("script");
755
+ (t.async = !0), (t.src = e);
756
+ var n = document.getElementsByTagName("script");
757
+ n.length
758
+ ? n[0].parentNode.insertBefore(t, n[0])
759
+ : ((n = document.getElementsByTagName("head")).length ||
760
+ (n = document.getElementsByTagName("body")).length) &&
761
+ n[0].appendChild(t);
762
+ })(e);
763
+ new Image().src = e;
764
+ }
765
+ function ie(e) {
766
+ if (e.id) return e.id;
767
+ for (var t, n = e; n.parentNode && n.parentNode.tagName; ) {
768
+ if ((n = n.parentNode).hasAttribute("data-sctrack")) return n.getAttribute("data-sctrack");
769
+ n.id && !t && (t = n.id);
770
+ }
771
+ var r = "INPUT" === e.tagName && "submit" === e.type,
772
+ i = "BUTTON" === e.tagName,
773
+ a = "A" === e.tagName;
774
+ return r && e.value ? e.value : (i || a) && e.innerText ? e.innerText : t || "";
775
+ }
776
+ function ae() {
777
+ void 0 === d.s && (d.s = Math.round(D()));
778
+ }
779
+ function oe(e) {
780
+ if ((fe(), void 0 === d.k)) {
781
+ if (((d.k = Math.round(D())), e && e.target)) {
782
+ var t = ie(e.target);
783
+ t && (d.ki = t);
784
+ }
785
+ te();
786
+ }
787
+ }
788
+ function se(e) {
789
+ if ((fe(), void 0 === d.c)) {
790
+ d.c = Math.round(D());
791
+ var t = null;
778
792
  try {
779
- for (var t = document.cookie.split(";"), n = 0; n < t.length; n++) {
780
- var r = t[n].split("=");
781
- if (e === r[0].trim()) return unescape(r[1])
782
- }
793
+ e && e.target && (t = e.target);
783
794
  } catch (e) {
784
- dlog("Error accessing document.cookie.")
795
+ pe("Error accessing event target."), (t = null);
785
796
  }
786
- }
787
-
788
- function _setCookie(e, t, n) {
797
+ if (t) {
798
+ e.clientX && ((d.cx = e.clientX), (d.cy = e.clientY));
799
+ var n = ie(e.target);
800
+ n && (d.ci = n);
801
+ }
802
+ te();
803
+ }
804
+ }
805
+ function ue(e, t) {
806
+ window.addEventListener
807
+ ? window.addEventListener(e, t, !1)
808
+ : window.attachEvent && window.attachEvent("on" + e, t);
809
+ }
810
+ function ce(e, t) {
811
+ window.removeEventListener
812
+ ? window.removeEventListener(e, t, !1)
813
+ : window.detachEvent && window.detachEvent("on" + e, t);
814
+ }
815
+ function de() {
816
+ ue("scroll", ae), ue("keypress", oe), ue("mousedown", se);
817
+ }
818
+ function fe() {
819
+ ce("scroll", ae), ce("keypress", oe), ce("mousedown", se);
820
+ }
821
+ function me(e) {
822
+ var t, n;
823
+ return e
824
+ ? Number(new Date()) + "00000"
825
+ : Number(new Date()) +
826
+ "" +
827
+ ((t = parseInt(1e5 * Math.random())), ((n = "00000") + t).slice(-n.length));
828
+ }
829
+ function le(e) {
830
+ var t = (function (e) {
831
+ try {
832
+ for (var t = document.cookie.split(";"), n = 0; n < t.length; n++) {
833
+ var r = t[n].split("=");
834
+ if (e === r[0].trim()) return unescape(r[1]);
835
+ }
836
+ } catch (e) {
837
+ pe("Error accessing document.cookie.");
838
+ }
839
+ return;
840
+ })("lux_uid");
841
+ if (!t || t.length < 11) t = e;
842
+ else {
843
+ var n = parseInt(t.substring(0, 10));
844
+ Number(new Date()) / 1e3 - n > 86400 && (t = e);
845
+ }
846
+ return ve(t), t;
847
+ }
848
+ function ve(e) {
849
+ return (
850
+ (function (e, t, n) {
851
+ try {
852
+ document.cookie =
853
+ e + "=" + escape(t) + (n ? "; max-age=" + n : "") + "; path=/; SameSite=Lax";
854
+ } catch (e) {
855
+ pe("Error setting document.cookie.");
856
+ }
857
+ })("lux_uid", e, 1800),
858
+ e
859
+ );
860
+ }
861
+ function ge() {
862
+ if (void 0 !== LUX.label) return LUX.label;
863
+ if (void 0 !== LUX.jspagelabel) {
864
+ var e = Function('"use strict"; return ' + LUX.jspagelabel);
789
865
  try {
790
- document.cookie = e + "=" + escape(t) + (n ? "; max-age=" + n : "") + "; path=/; SameSite=Lax"
866
+ var t = e();
867
+ if (t) return t;
791
868
  } catch (e) {
792
- dlog("Error setting document.cookie.")
869
+ console.log("Error evaluating customer settings LUX page label:", e);
870
+ }
871
+ }
872
+ return document.title;
873
+ }
874
+ function pe(t) {
875
+ e.push(t), LUX.debug && console.log("LUX: " + t);
876
+ }
877
+ N.forEach(function (e) {
878
+ window.addEventListener(e, I, x);
879
+ }),
880
+ k &&
881
+ ("complete" == document.readyState
882
+ ? ee()
883
+ : ue("load", function () {
884
+ setTimeout(ee, 200);
885
+ }),
886
+ ue("beforeunload", ee),
887
+ ue("unload", ee),
888
+ ue("beforeunload", te),
889
+ ue("unload", te)),
890
+ de();
891
+ var he = {
892
+ mark: j,
893
+ measure: function (e, t, n) {
894
+ if ((pe("Enter LUX.measure(), name = " + e), void 0 === t && _(h) && (t = h), L)) {
895
+ if (L.measure) return t ? (n ? L.measure(e, t, n) : L.measure(e, t)) : L.measure(e);
896
+ if (L.webkitMeasure) return L.webkitMeasure(e, t, n);
793
897
  }
794
- }
795
-
796
- function _padLeft(e, t) {
797
- return (t + e).slice(-t.length)
798
- }
799
-
800
- function dlog(e) {
801
- gaLog.push(e), LUX.debug && console.log("LUX: " + e)
802
- }
803
- gaEventTypes.forEach((function(e) {
804
- window.addEventListener(e, onInput, ghListenerOptions)
805
- })), _auto && ("complete" == document.readyState ? _sendLux() : addListener("load", (function() {
806
- setTimeout(_sendLux, 200)
807
- })), addListener("beforeunload", _sendLux), addListener("unload", _sendLux), addListener("beforeunload", _sendIx), addListener("unload", _sendIx)), _addIxHandlers();
808
- var _LUX = {
809
- mark: _mark,
810
- measure: _measure,
811
- init: _init,
812
- send: _sendLux,
813
- addData: _addData,
814
- getSessionId: _getUniqueId,
815
- getDebug: function() {
816
- return gaLog
817
- },
818
- forceSample: function() {
819
- setUniqueId(createSyncId(!0)), console.log("Sampling has been turned on for this session.")
820
- },
821
- doUpdate: _doUpdate,
822
- cmd: function(e) {
823
- var t = e.shift();
824
- "function" == typeof _LUX[t] && _LUX[t].apply(_LUX, e)
825
- },
826
- beaconUrl: _beaconUrl,
827
- samplerate: _samplerate,
828
- auto: _auto,
829
- label: void 0 !== LUX.label ? LUX.label : void 0,
830
- jspagelabel: void 0 !== LUX.jspagelabel ? LUX.jspagelabel : void 0,
831
- version: version,
832
- ae: [],
833
- al: [],
834
- debug: !!LUX.debug
835
- };
836
- return LUX.ac && LUX.ac.length && LUX.ac.forEach((function(e) {
898
+ var r = 0,
899
+ i = D();
900
+ if (t) {
901
+ var a = _(t);
902
+ if (a) r = a.startTime;
903
+ else {
904
+ if (!(L && L.timing && L.timing[t])) return;
905
+ r = L.timing[t] - L.timing.navigationStart;
906
+ }
907
+ }
908
+ if (n) {
909
+ var o = _(n);
910
+ if (o) i = o.startTime;
911
+ else {
912
+ if (!(L && L.timing && L.timing[n])) return;
913
+ i = L.timing[n] - L.timing.navigationStart;
914
+ }
915
+ }
916
+ c.push({ name: e, entryType: "measure", startTime: r, duration: i - r });
917
+ },
918
+ init: function () {
919
+ pe("Enter LUX.init()."),
920
+ (d = {}),
921
+ fe(),
922
+ de(),
923
+ (l = 0),
924
+ (m = 0),
925
+ (v = 0),
926
+ (p = 0),
927
+ (E = me()),
928
+ (T = le(E)),
929
+ i.splice(0),
930
+ (s = 0),
931
+ (s |= 1),
932
+ j(h);
933
+ },
934
+ send: ee,
935
+ addData: function (e, t) {
936
+ pe("Enter LUX.addData(), name = " + e + ", value = " + t);
937
+ var n = typeof t;
938
+ "string" !== typeof e || ("string" !== n && "number" !== n && "boolean" !== n) || (f[e] = t),
939
+ m && (o && clearTimeout(o), (o = setTimeout(ne, 100)));
940
+ },
941
+ getSessionId: function () {
942
+ return T;
943
+ },
944
+ getDebug: function () {
945
+ return e;
946
+ },
947
+ forceSample: function () {
948
+ ve(me(!0)), console.log("Sampling has been turned on for this session.");
949
+ },
950
+ doUpdate: function (e, n) {
951
+ if (e && t < e && document.body && !g) {
952
+ pe("Updating cached version of lux.js from 216 to " + e + "."), (g = 1);
953
+ var r = Y("/js/lux.js");
954
+ if (r)
955
+ if ("function" == typeof fetch) fetch(r.src, { cache: "reload" });
956
+ else {
957
+ var i = document.createElement("iframe");
958
+ (i.style.display = "none"),
959
+ (i.id = "LUX_update_iframe"),
960
+ (i.src =
961
+ "//cdn.speedcurve.com/luxupdate.php?src=" +
962
+ encodeURIComponent(r.src) +
963
+ (n ? "&tw=" + n : "")),
964
+ document.body.appendChild(i);
965
+ }
966
+ }
967
+ },
968
+ cmd: function (e) {
837
969
  var t = e.shift();
838
- "function" == typeof _LUX[t] && _LUX[t].apply(_LUX, e)
839
- })), void 0 !== window.LUX_ae && window.LUX_ae.forEach((function(e) {
840
- errorHandler(e)
841
- })), dlog("lux.js evaluation end."), _LUX
842
- }();
843
- var LUX_t_end = Date.now();
970
+ "function" == typeof he[t] && he[t].apply(he, e);
971
+ },
972
+ beaconMode: w,
973
+ beaconUrl: U,
974
+ samplerate: X,
975
+ auto: k,
976
+ label: void 0 !== LUX.label ? LUX.label : void 0,
977
+ jspagelabel: void 0 !== LUX.jspagelabel ? LUX.jspagelabel : void 0,
978
+ version: t,
979
+ ae: [],
980
+ al: [],
981
+ debug: !!LUX.debug,
982
+ };
983
+ return (
984
+ LUX.ac &&
985
+ LUX.ac.length &&
986
+ LUX.ac.forEach(function (e) {
987
+ var t = e.shift();
988
+ "function" == typeof he[t] && he[t].apply(he, e);
989
+ }),
990
+ void 0 !== window.LUX_ae &&
991
+ window.LUX_ae.forEach(function (e) {
992
+ r(e);
993
+ }),
994
+ pe("lux.js evaluation end."),
995
+ he
996
+ );
997
+ })();
998
+ var LUX_t_end = Date.now();
844
999
 
845
1000
  // -----------------------------------------------------------------------------
846
1001
  // More settings