@atlaskit/media-file-preview 0.15.2 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/cjs/globalScope/globalScope.js +3 -2
- package/dist/cjs/globalScope/originalScriptCode.js +44 -67
- package/dist/cjs/useFilePreview.js +14 -7
- package/dist/es2019/globalScope/globalScope.js +2 -1
- package/dist/es2019/globalScope/originalScriptCode.js +43 -76
- package/dist/es2019/useFilePreview.js +18 -11
- package/dist/esm/globalScope/globalScope.js +2 -1
- package/dist/esm/globalScope/originalScriptCode.js +44 -67
- package/dist/esm/useFilePreview.js +14 -7
- package/dist/types/globalScope/globalScope.d.ts +2 -0
- package/dist/types/globalScope/originalScriptCode.d.ts +0 -15
- package/dist/types/useFilePreview.d.ts +1 -1
- package/dist/types-ts4.5/globalScope/globalScope.d.ts +2 -0
- package/dist/types-ts4.5/globalScope/originalScriptCode.d.ts +0 -15
- package/dist/types-ts4.5/useFilePreview.d.ts +1 -1
- package/package.json +4 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @atlaskit/media-file-preview
|
|
2
2
|
|
|
3
|
+
## 0.15.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`71b895a2fd401`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/71b895a2fd401) -
|
|
8
|
+
Fix SSR preview generation to only be attempted in SSR and not in client if the ssr="client" prop
|
|
9
|
+
is sent
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
3
12
|
## 0.15.2
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getKey = exports.generateScriptProps = exports.GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_COUNT_SSR = exports.GLOBAL_MEDIA_CARD_SSR = void 0;
|
|
6
|
+
exports.getKey = exports.generateScriptProps = exports.GLOBAL_MEDIA_PERFORMANCE_ENTRIES = exports.GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_COUNT_SSR = exports.GLOBAL_MEDIA_CARD_SSR = void 0;
|
|
7
7
|
exports.getMediaCardSSR = getMediaCardSSR;
|
|
8
8
|
exports.getMediaGlobalScope = getMediaGlobalScope;
|
|
9
9
|
// ----- WARNING -----
|
|
@@ -14,6 +14,7 @@ exports.getMediaGlobalScope = getMediaGlobalScope;
|
|
|
14
14
|
|
|
15
15
|
var GLOBAL_MEDIA_CARD_SSR = exports.GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
|
|
16
16
|
var GLOBAL_MEDIA_COUNT_SSR = exports.GLOBAL_MEDIA_COUNT_SSR = 'mediaCountSsr';
|
|
17
|
+
var GLOBAL_MEDIA_PERFORMANCE_ENTRIES = exports.GLOBAL_MEDIA_PERFORMANCE_ENTRIES = 'performanceEntries';
|
|
17
18
|
var GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
|
|
18
19
|
var MAX_EAGER_LOAD_COUNT = 6;
|
|
19
20
|
function getMediaGlobalScope() {
|
|
@@ -61,7 +62,7 @@ var generateScript = function generateScript(identifier, dataURI, mode, srcSet,
|
|
|
61
62
|
};
|
|
62
63
|
|
|
63
64
|
// Read originalScriptCode.ts before making changes
|
|
64
|
-
return "!function(
|
|
65
|
+
return "!function(e){var r=document.currentScript,i=window.__MEDIA_INTERNAL=window.__MEDIA_INTERNAL||{},n=i.mediaCardSsr=i.mediaCardSsr||{},o=e.key,t=e.dataURI,d=e.mode,a=e.srcSet,s=e.dimensions,m=e.error,l=e.featureFlags;if(l[\"media-perf-uplift-mutation-fix\"]){var u,c,f=n[o],v=f&&f.mode===d&&(null===(u=f.dimensions)||void 0===u?void 0:u.width)&&(null==s?void 0:s.width)&&f.dimensions.width>s.width,E=v?f.srcSet:a,p=v?f.dataURI:t,w={dataURI:p,dimensions:s,error:m,srcSet:E,loading:\"lazy\",loadPromise:void 0,mode:d},S=null==r||null===(c=r.parentElement)||void 0===c?void 0:c.querySelector(\"img\");if(i.mediaCountSsr=i.mediaCountSsr||0,S){if(l[\"media-perf-lazy-loading-optimisation\"]&&i.mediaCountSsr<e.maxEagerLoadCount){i.mediaCountSsr++,S.removeAttribute(\"loading\"),w.loading=\"\";var g=new PerformanceObserver((function(e){e.getEntries().forEach((function(e){E.includes(e.name)&&(i.performanceEntries=i.performanceEntries||[],i.performanceEntries.push(e),g.disconnect())}))}));g.observe({type:\"resource\"})}p&&(S.src=p),E&&(S.srcset=E),w.loadPromise=new Promise((function(e,r){S.addEventListener(\"load\",(function(){return e()})),S.addEventListener(\"error\",(function(){return r(new Error(\"Failed to load image\"))}))}))}n[o]=v?f:w}else n[o]={dataURI:t,dimensions:s,error:m};null==r||r.remove()}({replace:\"\"});".replace('{replace:""}', JSON.stringify(params));
|
|
65
66
|
};
|
|
66
67
|
var generateScriptProps = exports.generateScriptProps = function generateScriptProps(identifier, dataURI, mode, srcSet, dimensions, error) {
|
|
67
68
|
var featureFlags = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
|
|
@@ -6,61 +6,29 @@
|
|
|
6
6
|
* Do not change the code without testing it in product first.
|
|
7
7
|
* Steps:
|
|
8
8
|
* 1. Make changes in this code
|
|
9
|
-
* 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
|
|
10
|
-
*
|
|
9
|
+
* 2. Manually minify the code into: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMGludG8lM0ElMjBodHRwcyUzQSUyRiUyRnJlcGwucGFyY2VsanMub3JnJTJGJTIzSlRkQ0pUSXlabWxzWlhNbE1qSWxNMEVsTlVJbE5VSWxNaklsTWtaemNtTWxNa1pwYm1SbGVDNTBjeVV5TWlVeVF5VTNRaVV5TW5aaGJIVmxKVEl5SlROQkpUSXlKVEpHS2lVeU1HVnpiR2x1ZEMxa2FYTmhZbXhsSlRJd0pUUXdZWFJzWVhOcmFYUWxNa1p3YkdGMFptOXliU1V5Um01dkxXUnBjbVZqZEMxa2IyTjFiV1Z1ZEMxMWMyRm5aU1V5TUNvbE1rWWxOVU51SlRWRGJpVXlSaW9xSlRJd1NVMVFUMUpVUVU1VUpUTkJKVEl3VkdocGN5VXlNR2x6SlRJd2RHaGxKVEl3YjNKcFoybHVZV3dsTWpCamIyUmxKVEl3Wm05eUpUSXdkR2hsSlRJd2MyTnlhWEIwTGlVMVEyNGxNakFxSlRJd1JHOGxNakJ1YjNRbE1qQmphR0Z1WjJVbE1qQjBhR1VsTWpCamIyUmxKVEl3ZDJsMGFHOTFkQ1V5TUhSbGMzUnBibWNsTWpCcGRDVXlNR2x1SlRJd2NISnZaSFZqZENVeU1HWnBjbk4wTGlVMVEyNGxNakFxSlRJd1UzUmxjSE1sTTBFbE5VTnVKVEl3S2lVeU1ERXVKVEl3VFdGclpTVXlNR05vWVc1blpYTWxNakJwYmlVeU1IUm9hWE1sTWpCamIyUmxKVFZEYmlVeU1Db2xNakF5TGlVeU1FMWhiblZoYkd4NUpUSXdiV2x1YVdaNUpUSXdkR2hsSlRJd1kyOWtaU1V5TUhacFlTVXlNR2gwZEhCekpUTkJKVEpHSlRKR2NtVndiQzV3WVhKalpXeHFjeTV2Y21jbE1rWWxOVU51SlRJd0tpVXlNRE11SlRJd1EyOXdlU1V5TUhSb1pTVXlNRzFwYm1sbWFXVmtKVEl3WTI5a1pTVXlNR2x1ZEc4bE1qQm5iRzlpWVd4VFkyOXdaUzUwYzNnbE1qQnlaWEJzWVdOcGJtY2xNakIwYUdVbE1qQmxlR2x6ZEdsdVp5VXlNSE4wY21sdVp5VXlNSGRvWlhKbEpUSXdhWFFsTWpCellYbHpKVEl3VUVGVFZFVWxNakJJUlZKRkpUVkRiaVV5TUNvbE1qQTBMaVV5TUZKMWJpVXlNSFJvWlNVeU1IUmxjM1J6SlRJd1lXNWtKVEl3YldGclpTVXlNSE4xY21VbE1qQjBhR1Y1SlRJd2NHRnpjeVUxUTI0bE1qQXFKVEl3TlM0bE1qQlVSVk5VSlRJd1NVNGxNakJRVWs5RVZVTlVVeVV5TUVKRlJrOVNSU1V5TUUxRlVrZEpUa2NsTlVOdUpUSXdLaVUxUTI0bE1qQXFKVEpHSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUjJ4dlltRnNVMk52Y0dVb0tTVXlNQ1UzUWlVMVEyNGxNakFsTWpCamIyNXpkQ1V5TUc1aGJXVnpjR0ZqWlNVeU1DVXpSQ1V5TUNVMVF5VXlNbDlmVFVWRVNVRmZTVTVVUlZKT1FVd2xOVU1sTWpJbE0wSWxOVU51SlRJd0pUSXdhV1lsTWpBb0lTaDNhVzVrYjNjbE1qQmhjeVV5TUdGdWVTa2xOVUp1WVcxbGMzQmhZMlVsTlVRcEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ2gzYVc1a2IzY2xNakJoY3lVeU1HRnVlU2tsTlVKdVlXMWxjM0JoWTJVbE5VUWxNakFsTTBRbE1qQWxOMElsTjBRbE0wSWxOVU51SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUhKbGRIVnliaVV5TUNoM2FXNWtiM2NsTWpCaGN5VXlNR0Z1ZVNrbE5VSnVZVzFsYzNCaFkyVWxOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUTJGeVpGTlRVaWdwSlRJd0pUZENKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdaMnh2WW1Gc1RXVmthV0VsTWpBbE0wUWxNakJuWlhSTlpXUnBZVWRzYjJKaGJGTmpiM0JsS0NrbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQnJaWGtsTWpBbE0wUWxNakFsTlVNbE1qSnRaV1JwWVVOaGNtUlRjM0lsTlVNbE1qSWxNMElsTlVOdUpUSXdKVEl3YVdZbE1qQW9JV2RzYjJKaGJFMWxaR2xoSlRWQ2EyVjVKVFZFS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQm5iRzlpWVd4TlpXUnBZU1UxUW10bGVTVTFSQ1V5TUNVelJDVXlNQ1UzUWlVM1JDVXpRaVUxUTI0bE1qQWxNakFsTjBRbE5VTnVKVEl3SlRJd2NtVjBkWEp1SlRJd1oyeHZZbUZzVFdWa2FXRWxOVUpyWlhrbE5VUWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNW1kVzVqZEdsdmJpVXlNR2RsZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdjbVYwZFhKdUpUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdsdVkzSmxiV1Z1ZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTWtJbE1rSWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNG9ablZ1WTNScGIyNGxNakFvY0dGeVlXMXpKVE5CSlRJd1lXNTVLU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1ITmpjbWx3ZENVeU1DVXpSQ1V5TUdSdlkzVnRaVzUwTG1OMWNuSmxiblJUWTNKcGNIUWxNMElsTlVOdUpUVkRiaVV5TUNVeU1DVXlSaVV5UmlVeU1GTjBiM0psSlRJd2RHaGxKVEl3WkdGMFlTVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HMWxaR2xoUTJGeVpGTnpjaVV5TUNVelJDVXlNR2RsZEUxbFpHbGhRMkZ5WkZOVFVpZ3BKVE5DSlRWRGJpVXlNQ1V5TUdOdmJuTjBKVEl3YldWa2FXRkRiM1Z1ZEZOemNpVXlNQ1V6UkNVeU1HZGxkRTFsWkdsaFEyOTFiblJUVTFJb0tTVXpRaVUxUTI0bE1qQWxNakJqYjI1emRDVXlNQ1UzUWlVeU1HdGxlU1V5TUNVM1JDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3lVelFpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1IQmhjbUZ0UkdGMFlWVlNTU1V5TUNVelJDVXlNSEJoY21GdGN5NWtZWFJoVlZKSkpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRORUpUSXdjR0Z5WVcxekxtMXZaR1VsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpCd1lYSmhiVk55WTFObGRDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3k1emNtTlRaWFFsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpBbE4wSWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUZEVKVEl3SlRORUpUSXdjR0Z5WVcxekpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdKVGRDSlRJd1pYSnliM0lsTWpBbE4wUWxNakFsTTBRbE1qQndZWEpoYlhNbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQWxOMElsTWpCbVpXRjBkWEpsUm14aFozTWxNakFsTjBRbE1qQWxNMFFsTWpCd1lYSmhiWE1sTTBJbE5VTnVKVFZEYmlVeU1DVXlNR2xtSlRJd0tHWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0ZFhCc2FXWjBMVzExZEdGMGFXOXVMV1pwZUNVMVF5VXlNaVUxUkNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQndjbVYyUkdGMFlTVXlNQ1V6UkNVeU1HMWxaR2xoUTJGeVpGTnpjaVUxUW10bGVTVTFSQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakJqYjI1emRDVXlNR2x6VUhKbGRtbHZkWE5KYldGblpVeGhjbWRsY2lVeU1DVXpSQ1UxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCd2NtVjJSR0YwWVNVeU1DVXlOaVV5TmlVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQndjbVYyUkdGMFlTNXRiMlJsSlRJd0pUTkVKVE5FSlRORUpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRJMkpUSTJKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUhCeVpYWkVZWFJoTG1ScGJXVnVjMmx2Ym5NbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V5TmlVeU5pVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V6UlNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE0wSWxOVU51SlRWRGJpVXlNQ1V5TUNVeU1DVXlNR052Ym5OMEpUSXdjM0pqVTJWMEpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVjM0pqVTJWMEpUSXdKVE5CSlRJd2NHRnlZVzFUY21OVFpYUWxNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQmtZWFJoVlZKSkpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVaR0YwWVZWU1NTVXlNQ1V6UVNVeU1IQmhjbUZ0UkdGMFlWVlNTU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd1kyOXVjM1FsTWpCamRYSnlSR0YwWVNVelFTVXlNR0Z1ZVNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjM0pqVTJWMEpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUnBibWNsTTBFbE1qQWxOVU1sTWpKc1lYcDVKVFZESlRJeUpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUlFjbTl0YVhObEpUTkJKVEl3ZFc1a1pXWnBibVZrSlRKREpUVkRiaVUxUTNRbE5VTjBKVFZEZEcxdlpHVWxNMEVsTWpCd1lYSmhiVTF2WkdVbE1rTWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVKVE5DSlRWRGJpVTFRMjRsTWpBbE1qQWxNakFsTWpCamIyNXpkQ1V5TUdsdFp5VXlNQ1V6UkNVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnpZM0pwY0hRbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjMk55YVhCMExuQmhjbVZ1ZEVWc1pXMWxiblFsTWpBbE1qWWxNallsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2MyTnlhWEIwTG5CaGNtVnVkRVZzWlcxbGJuUXVjWFZsY25sVFpXeGxZM1J2Y2lnbE5VTWxNakpwYldjbE5VTWxNaklwSlROQ0pUVkRiaVUxUTI0bE1qQWxNakFsTWpBbE1qQnBaaVV5TUNnbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdhVzFuSlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0YkdGNmVTMXNiMkZrYVc1bkxXOXdkR2x0YVhOaGRHbHZiaVUxUXlVeU1pVTFSQ1V5TUNVeU5pVXlOaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCdFpXUnBZVU52ZFc1MFUzTnlKVEl3SlROREpUSXdjR0Z5WVcxekxtMWhlRVZoWjJWeVRHOWhaRU52ZFc1MEpUVkRiaVV5TUNVeU1DVXlNQ1V5TUNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2FXNWpjbVZ0Wlc1MFRXVmthV0ZEYjNWdWRGTlRVaWdwSlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeTVuWlhSQmRIUnlhV0oxZEdVb0pUVkRKVEl5Ykc5aFpHbHVaeVUxUXlVeU1pa2xNakFsTTBRbE0wUWxNMFFsTWpBbE5VTWxNakpzWVhwNUpUVkRKVEl5S1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJwYldjdWNtVnRiM1psUVhSMGNtbGlkWFJsS0NVMVF5VXlNbXh2WVdScGJtY2xOVU1sTWpJcEpUTkNKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJqZFhKeVJHRjBZUzVzYjJGa2FXNW5KVEl3SlRORUpUSXdKVFZESlRJeUpUVkRKVEl5SlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTlVOdUpUSXdKVEl3SlRJd0pUSXdhV1lsTWpBb2FXMW5KVEl3SlRJMkpUSTJKVEl3WkdGMFlWVlNTU2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZeVV5TUNVelJDVXlNR1JoZEdGVlVra2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeVV5TUNVeU5pVXlOaVV5TUhOeVkxTmxkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZM05sZENVeU1DVXpSQ1V5TUhOeVkxTmxkQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakFsTjBRbE5VTnVKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HTjFjbkpFWVhSaExteHZZV1JRY205dGFYTmxKVEl3SlRORUpUSXdibVYzSlRJd1VISnZiV2x6WlNVelEzWnZhV1FsTTBVb1puVnVZM1JwYjI0bE1qQW9jbVZ6YjJ4MlpTVXlReVV5TUhKbGFtVmpkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVdZbE1qQW9hVzFuS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWtZbE1rWWxNakJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWxNakFsTkRCeVpYQnZKVEpHYVc1MFpYSnVZV3dsTWtaa2IyMHRaWFpsYm5SekpUSkdibTh0ZFc1ellXWmxMV1YyWlc1MExXeHBjM1JsYm1WeWN5VTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnBiV2N1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdsTlVNbE1qSnNiMkZrSlRWREpUSXlKVEpESlRJd1puVnVZM1JwYjI0bE1qQW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCeVpYTnZiSFpsS0hWdVpHVm1hVzVsWkNrbE0wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVGRFS1NVelFpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNa1lsTWtZbE1qQmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VbE1qQWxOREJ5WlhCdkpUSkdhVzUwWlhKdVlXd2xNa1prYjIwdFpYWmxiblJ6SlRKR2JtOHRkVzV6WVdabExXVjJaVzUwTFd4cGMzUmxibVZ5Y3lVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCcGJXY3VZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2xOVU1sTWpKbGNuSnZjaVUxUXlVeU1pVXlReVV5TUdaMWJtTjBhVzl1SlRJd0tDa2xNakFsTjBJbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3Y21WcVpXTjBLRzVsZHlVeU1FVnljbTl5S0NVMVF5VXlNa1poYVd4bFpDVXlNSFJ2SlRJd2JHOWhaQ1V5TUdsdFlXZGxKVFZESlRJeUtTa2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRkRUtTVXpRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVLU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd2JXVmthV0ZEWVhKa1UzTnlKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdhWE5RY21WMmFXOTFjMGx0WVdkbFRHRnlaMlZ5SlRJd0pUTkdKVEl3Y0hKbGRrUmhkR0VsTWpBbE0wRWxNakJqZFhKeVJHRjBZU1V6UWlVMVEyNGxNakFsTWpBbE4wUWxNakJsYkhObEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNRzFsWkdsaFEyRnlaRk56Y2lVMVFtdGxlU1UxUkNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVE5CSlRJd2NHRnlZVzFFWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRkRUpUTkNKVFZEYmlVeU1DVXlNQ1UzUkNVMVEyNGxOVU51SlRJd0pUSXdKVEpHSlRKR0pUSXdVbVZ0YjNabEpUSXdjMk55YVhCMEpUSXdkRzhsTWpCd2NtVjJaVzUwSlRJd2FIbGtjbUYwYVc5dUpUSXdiV2x6YldGMFkyZ2xOVU51SlRJd0pUSXdaRzlqZFcxbGJuUXVZM1Z5Y21WdWRGTmpjbWx3ZENVelJpNXlaVzF2ZG1Vb0tTVXpRaVUxUTI0bE5VTnVKVFZEZENVeVJpVXlSaVV5TUhSb2FYTWxNakJ5WlhCc1lXTmxKVEl3ZDJsc2JDVXlNR0psSlRJd2RYTmxaQ1V5TUdGekpUSXdZU1V5TUhCc1lXTmxhRzlzWkdWeUpUSXdabTl5SlRJd2RHaGxKVEl3YzNSeWFXNW5hV1pwWldRbE1qQndZWEpoYlhNbE1qQjBieVV5TUdKbEpUSXdhVzVxWldOMFpXUWxNakJwYm5SdkpUSXdkR2hsSlRJd2MyTnlhWEIwSlRWRGJpVTNSQ2tvSlRkQ0pUSXdjbVZ3YkdGalpTVXpRU1V5TUNVMVF5VXlNaVUxUXlVeU1pVXlNQ1UzUkNrbE0wSWxOVU51SlRJeUpUSkRKVEl5YVhORmJuUnllU1V5TWlVelFYUnlkV1VsTjBRbE5VUWxOVVFsTWtNbE1qSnZjSFJwYjI1ekpUSXlKVE5CSlRkQ0pUSXlaVzUwY21sbGN5VXlNaVV6UVNVMVFpVTFSQ1V5UXlVeU1tMXBibWxtZVNVeU1pVXpRWFJ5ZFdVbE1rTWxNakp6WTI5d1pVaHZhWE4wSlRJeUpUTkJkSEoxWlNVeVF5VXlNbk52ZFhKalpVMWhjSE1sTWpJbE0wRm1ZV3h6WlNVeVF5VXlNbkIxWW14cFkxVnliQ1V5TWlVelFTVXlNaVV5Umw5ZmNtVndiRjlrYVhOMEpUSXlKVEpESlRJeWRHRnlaMlYwVkhsd1pTVXlNaVV6UVNVeU1tSnliM2R6WlhKekpUSXlKVEpESlRJeWRHRnlaMlYwUlc1MkpUSXlKVE5CYm5Wc2JDVXlReVV5TW05MWRIQjFkRVp2Y20xaGRDVXlNaVV6UVc1MWJHd2xNa01sTWpKb2JYSWxNaklsTTBGbVlXeHpaU1V5UXlVeU1tMXZaR1VsTWpJbE0wRWxNakp3Y205a2RXTjBhVzl1SlRJeUpUSkRKVEl5Y21WdVpHVnlSM0poY0doekpUSXlKVE5CWm1Gc2MyVWxNa01sTWpKMmFXVjNVMjkxY21ObGJXRndjeVV5TWlVelFXWmhiSE5sSlRKREpUSXlaR1Z3Wlc1a1pXNWphV1Z6SlRJeUpUTkJKVFZDSlRWRUpUSkRKVEl5Ym5WdFYyOXlhMlZ5Y3lVeU1pVXpRVEFsTjBRbE1rTWxNakoxYzJWVVlXSnpKVEl5SlROQmRISjFaU1V5UXlVeU1tSnliM2R6WlhKRGIyeHNZWEJ6WldRbE1qSWxNMEVsTlVJbE5VUWxNa01sTWpKMmFXVjNjeVV5TWlVelFTVTFRaVV5TWlVeVJuTnlZeVV5Um1sdVpHVjRMblJ6SlRJeUpUVkVKVEpESlRJeVkzVnljbVZ1ZEZacFpYY2xNaklsTTBFd0pUZEUlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lNUN0Y29uc3QlMjBzY3JpcHQlMjAlM0QlMjBkb2N1bWVudC5jdXJyZW50U2NyaXB0JTNCJTVDbiU1Q3Rjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwKCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCUzRCUyMCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwbWVkaWFDYXJkU3NyJTIwJTNEJTIwKGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwJTdCJTIwa2V5JTJDJTIwZGF0YVVSSSUzQSUyMHBhcmFtRGF0YVVSSSUyQyUyMG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlMjBzcmNTZXQlM0ElMjBwYXJhbVNyY1NldCUyQyUyMGRpbWVuc2lvbnMlMkMlMjBlcnJvciUyQyUyMGZlYXR1cmVGbGFncyUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lNUNuJTVDdGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTVDdCU1Q3Rjb25zdCUyMHByZXZEYXRhJTIwJTNEJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTNCJTVDbiU1Q3QlNUN0Y29uc3QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0QlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGElMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEubW9kZSUyMCUzRCUzRCUzRCUyMHBhcmFtTW9kZSUyMCUyNiUyNiU1Q24lNUN0JTVDdCU1Q3RwcmV2RGF0YS5kaW1lbnNpb25zJTNGLndpZHRoJTIwJTI2JTI2JTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlM0Yud2lkdGglMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBzcmNTZXQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YS5zcmNTZXQlMjAlM0ElMjBwYXJhbVNyY1NldCUzQiU1Q24lNUN0JTVDdGNvbnN0JTIwZGF0YVVSSSUyMCUzRCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRiUyMHByZXZEYXRhLmRhdGFVUkklMjAlM0ElMjBwYXJhbURhdGFVUkklM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lNUN0JTVDdCU1Q3RkYXRhVVJJJTJDJTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlMkMlNUNuJTVDdCU1Q3QlNUN0ZXJyb3IlMkMlNUNuJTVDdCU1Q3QlNUN0c3JjU2V0JTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTVDdCU1Q3QlN0QlM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBpbWclMjAlM0QlMjBzY3JpcHQlM0YucGFyZW50RWxlbWVudCUzRi5xdWVyeVNlbGVjdG9yKCU1QyUyMmltZyU1QyUyMiklM0IlNUNuJTVDbiU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlN0MlN0MlMjAwJTNCJTVDbiU1Q24lNUN0JTVDdGlmJTIwKGltZyklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0aWYlMjAoJTVDbiU1Q3QlNUN0JTVDdCU1Q3RmZWF0dXJlRmxhZ3MlNUIlNUMlMjJtZWRpYS1wZXJmLWxhenktbG9hZGluZy1vcHRpbWlzYXRpb24lNUMlMjIlNUQlMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlM0MlMjBwYXJhbXMubWF4RWFnZXJMb2FkQ291bnQlNUNuJTVDdCU1Q3QlNUN0KSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyQiUyQiUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLnJlbW92ZUF0dHJpYnV0ZSglNUMlMjJsb2FkaW5nJTVDJTIyKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0Y3VyckRhdGEubG9hZGluZyUyMCUzRCUyMCU1QyUyMiU1QyUyMiUzQiU1Q24lNUNuJTVDdCU1Q3QlNUN0JTVDdGNvbnN0JTIwb2JzZXJ2ZXIlMjAlM0QlMjBuZXclMjBQZXJmb3JtYW5jZU9ic2VydmVyKChlbnRyaWVzKSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdGVudHJpZXMuZ2V0RW50cmllcygpLmZvckVhY2goKGVudHJ5KSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQuaW5jbHVkZXMoZW50cnkubmFtZSkpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlM0QlMjBnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlN0MlN0MlMjAlNUIlNUQlM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLnBlcmZvcm1hbmNlRW50cmllcy5wdXNoKGVudHJ5KSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0b2JzZXJ2ZXIuZGlzY29ubmVjdCgpJTNCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdG9ic2VydmVyLm9ic2VydmUoJTdCJTIwdHlwZSUzQSUyMCdyZXNvdXJjZSclMjAlN0QpJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3QlNUN0aWYlMjAoZGF0YVVSSSklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5zcmMlMjAlM0QlMjBkYXRhVVJJJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3RpbWcuc3Jjc2V0JTIwJTNEJTIwc3JjU2V0JTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RjdXJyRGF0YS5sb2FkUHJvbWlzZSUyMCUzRCUyMG5ldyUyMFByb21pc2UlM0N2b2lkJTNFKGZ1bmN0aW9uJTIwKHJlc29sdmUlMkMlMjByZWplY3QpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLmFkZEV2ZW50TGlzdGVuZXIoJTVDJTIybG9hZCU1QyUyMiUyQyUyMCgpJTIwJTNEJTNFJTIwcmVzb2x2ZSgpKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTJGJTJGJTIwZXNsaW50LWRpc2FibGUtbmV4dC1saW5lJTIwJTQwcmVwbyUyRmludGVybmFsJTJGZG9tLWV2ZW50cyUyRm5vLXVuc2FmZS1ldmVudC1saXN0ZW5lcnMlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5hZGRFdmVudExpc3RlbmVyKCU1QyUyMmVycm9yJTVDJTIyJTJDJTIwKCklMjAlM0QlM0UlMjByZWplY3QobmV3JTIwRXJyb3IoJTVDJTIyRmFpbGVkJTIwdG8lMjBsb2FkJTIwaW1hZ2UlNUMlMjIpKSklM0IlNUNuJTVDdCU1Q3QlNUN0JTdEKSUzQiU1Q24lNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3RtZWRpYUNhcmRTc3IlNUJrZXklNUQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YSUyMCUzQSUyMGN1cnJEYXRhJTNCJTVDbiU1Q3QlN0QlMjBlbHNlJTIwJTdCJTVDbiU1Q3QlNUN0bWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdGRhdGFVUkklM0ElMjBwYXJhbURhdGFVUkklMkMlNUNuJTVDdCU1Q3QlNUN0ZGltZW5zaW9ucyUyQyU1Q24lNUN0JTVDdCU1Q3RlcnJvciUyQyU1Q24lNUN0JTVDdCU3RCUzQiU1Q24lNUN0JTdEJTVDbiU1Q24lNUN0c2NyaXB0JTNGLnJlbW92ZSgpJTNCJTVDbiU1Q24lNUN0JTJGJTJGJTIwdGhpcyUyMHJlcGxhY2UlMjB3aWxsJTIwYmUlMjB1c2VkJTIwYXMlMjBhJTIwcGxhY2Vob2xkZXIlMjBmb3IlMjB0aGUlMjBzdHJpbmdpZmllZCUyMHBhcmFtcyUyMHRvJTIwYmUlMjBpbmplY3RlZCUyMGludG8lMjB0aGUlMjBzY3JpcHQlNUNuJTdEKSglN0IlMjByZXBsYWNlJTNBJTIwJTVDJTIyJTVDJTIyJTIwJTdEKSUzQiU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCU1RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJlbnRyaWVzJTIyJTNBJTVCJTVEJTJDJTIybWluaWZ5JTIyJTNBdHJ1ZSUyQyUyMnNjb3BlSG9pc3QlMjIlM0F0cnVlJTJDJTIyc291cmNlTWFwcyUyMiUzQWZhbHNlJTJDJTIycHVibGljVXJsJTIyJTNBJTIyJTJGX19yZXBsX2Rpc3QlMjIlMkMlMjJ0YXJnZXRUeXBlJTIyJTNBJTIyYnJvd3NlcnMlMjIlMkMlMjJ0YXJnZXRFbnYlMjIlM0ElMjJzaW5jZSUyMDIwMTUlMjIlMkMlMjJvdXRwdXRGb3JtYXQlMjIlM0FudWxsJTJDJTIyaG1yJTIyJTNBZmFsc2UlMkMlMjJtb2RlJTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMnJlbmRlckdyYXBocyUyMiUzQWZhbHNlJTJDJTIydmlld1NvdXJjZW1hcHMlMjIlM0FmYWxzZSUyQyUyMmRlcGVuZGVuY2llcyUyMiUzQSU1QiU1RCUyQyUyMm51bVdvcmtlcnMlMjIlM0EwJTdEJTJDJTIydXNlVGFicyUyMiUzQXRydWUlMkMlMjJicm93c2VyQ29sbGFwc2VkJTIyJTNBJTVCJTVEJTJDJTIydmlld3MlMjIlM0ElNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiU1RCUyQyUyMmN1cnJlbnRWaWV3JTIyJTNBMCU3RA==
|
|
10
|
+
* Ensure the settings have: Minification on and
|
|
11
11
|
* 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
|
|
12
12
|
* 4. Run the tests and make sure they pass
|
|
13
13
|
* 5. TEST IN PRODUCTS BEFORE MERGING
|
|
14
14
|
*
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
function
|
|
18
|
-
var namespace = "__MEDIA_INTERNAL";
|
|
19
|
-
if (!window[namespace]) {
|
|
20
|
-
window[namespace] = {};
|
|
21
|
-
}
|
|
22
|
-
return window[namespace];
|
|
23
|
-
}
|
|
24
|
-
function getMediaCardSSR() {
|
|
25
|
-
var globalMedia = getMediaGlobalScope();
|
|
26
|
-
var key = "mediaCardSsr";
|
|
27
|
-
if (!globalMedia[key]) {
|
|
28
|
-
globalMedia[key] = {};
|
|
29
|
-
}
|
|
30
|
-
return globalMedia[key];
|
|
31
|
-
}
|
|
32
|
-
function getMediaCountSSR() {
|
|
33
|
-
var globalMedia = getMediaGlobalScope();
|
|
34
|
-
var key = "mediaCountSsr";
|
|
35
|
-
if (!globalMedia[key]) {
|
|
36
|
-
globalMedia[key] = 0;
|
|
37
|
-
}
|
|
38
|
-
return globalMedia[key];
|
|
39
|
-
}
|
|
40
|
-
function incrementMediaCountSSR() {
|
|
41
|
-
var globalMedia = getMediaGlobalScope();
|
|
42
|
-
var key = "mediaCountSsr";
|
|
43
|
-
if (!globalMedia[key]) {
|
|
44
|
-
globalMedia[key] = 0;
|
|
45
|
-
}
|
|
46
|
-
globalMedia[key]++;
|
|
47
|
-
}
|
|
48
|
-
(function (params, _document$currentScri) {
|
|
17
|
+
(function (params) {
|
|
49
18
|
var script = document.currentScript;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
var error = params.error;
|
|
60
|
-
var featureFlags = params.featureFlags;
|
|
19
|
+
var globalMedia = window.__MEDIA_INTERNAL = window.__MEDIA_INTERNAL || {};
|
|
20
|
+
var mediaCardSsr = globalMedia.mediaCardSsr = globalMedia.mediaCardSsr || {};
|
|
21
|
+
var key = params.key,
|
|
22
|
+
paramDataURI = params.dataURI,
|
|
23
|
+
paramMode = params.mode,
|
|
24
|
+
paramSrcSet = params.srcSet,
|
|
25
|
+
dimensions = params.dimensions,
|
|
26
|
+
error = params.error,
|
|
27
|
+
featureFlags = params.featureFlags;
|
|
61
28
|
if (featureFlags["media-perf-uplift-mutation-fix"]) {
|
|
29
|
+
var _prevData$dimensions, _script$parentElement;
|
|
62
30
|
var prevData = mediaCardSsr[key];
|
|
63
|
-
var isPreviousImageLarger = prevData && prevData.mode === paramMode &&
|
|
31
|
+
var isPreviousImageLarger = prevData && prevData.mode === paramMode && ((_prevData$dimensions = prevData.dimensions) === null || _prevData$dimensions === void 0 ? void 0 : _prevData$dimensions.width) && (dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) && prevData.dimensions.width > dimensions.width;
|
|
64
32
|
var srcSet = isPreviousImageLarger ? prevData.srcSet : paramSrcSet;
|
|
65
33
|
var dataURI = isPreviousImageLarger ? prevData.dataURI : paramDataURI;
|
|
66
34
|
var currData = {
|
|
@@ -72,32 +40,43 @@ function incrementMediaCountSSR() {
|
|
|
72
40
|
loadPromise: undefined,
|
|
73
41
|
mode: paramMode
|
|
74
42
|
};
|
|
75
|
-
var img = script
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (
|
|
43
|
+
var img = script === null || script === void 0 || (_script$parentElement = script.parentElement) === null || _script$parentElement === void 0 ? void 0 : _script$parentElement.querySelector("img");
|
|
44
|
+
globalMedia.mediaCountSsr = globalMedia.mediaCountSsr || 0;
|
|
45
|
+
if (img) {
|
|
46
|
+
if (featureFlags["media-perf-lazy-loading-optimisation"] && globalMedia.mediaCountSsr < params.maxEagerLoadCount) {
|
|
47
|
+
globalMedia.mediaCountSsr++;
|
|
79
48
|
img.removeAttribute("loading");
|
|
49
|
+
currData.loading = "";
|
|
50
|
+
var observer = new PerformanceObserver(function (entries) {
|
|
51
|
+
entries.getEntries().forEach(function (entry) {
|
|
52
|
+
if (srcSet.includes(entry.name)) {
|
|
53
|
+
globalMedia.performanceEntries = globalMedia.performanceEntries || [];
|
|
54
|
+
globalMedia.performanceEntries.push(entry);
|
|
55
|
+
observer.disconnect();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
observer.observe({
|
|
60
|
+
type: 'resource'
|
|
61
|
+
});
|
|
80
62
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
currData.loadPromise = new Promise(function (resolve, reject) {
|
|
90
|
-
if (img) {
|
|
63
|
+
if (dataURI) {
|
|
64
|
+
img.src = dataURI;
|
|
65
|
+
}
|
|
66
|
+
if (srcSet) {
|
|
67
|
+
img.srcset = srcSet;
|
|
68
|
+
}
|
|
69
|
+
currData.loadPromise = new Promise(function (resolve, reject) {
|
|
91
70
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
92
71
|
img.addEventListener("load", function () {
|
|
93
|
-
resolve(
|
|
72
|
+
return resolve();
|
|
94
73
|
});
|
|
95
74
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
96
75
|
img.addEventListener("error", function () {
|
|
97
|
-
reject(new Error("Failed to load image"));
|
|
76
|
+
return reject(new Error("Failed to load image"));
|
|
98
77
|
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
101
80
|
mediaCardSsr[key] = isPreviousImageLarger ? prevData : currData;
|
|
102
81
|
} else {
|
|
103
82
|
mediaCardSsr[key] = {
|
|
@@ -106,9 +85,7 @@ function incrementMediaCountSSR() {
|
|
|
106
85
|
error: error
|
|
107
86
|
};
|
|
108
87
|
}
|
|
109
|
-
|
|
110
|
-
// Remove script to prevent hydration mismatch
|
|
111
|
-
(_document$currentScri = document.currentScript) === null || _document$currentScri === void 0 || _document$currentScri.remove();
|
|
88
|
+
script === null || script === void 0 || script.remove();
|
|
112
89
|
|
|
113
90
|
// this replace will be used as a placeholder for the stringified params to be injected into the script
|
|
114
91
|
})({
|
|
@@ -115,12 +115,19 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
if (!(ssrData !== null && ssrData !== void 0 && ssrData.dataURI)) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
118
|
+
// Only attempt SSR preview generation if:
|
|
119
|
+
// 1. We're on the server (ssr='server'), OR
|
|
120
|
+
// 2. We're on the client AND there is SSR data (meaning SSR actually happened)
|
|
121
|
+
// If ssr='client' but there's no SSR data, it means this is a client-side navigation
|
|
122
|
+
// where no SSR occurred, so we should skip SSR preview generation entirely.
|
|
123
|
+
if (ssr === 'server' || ssrData) {
|
|
124
|
+
try {
|
|
125
|
+
return (0, _getPreview.getSSRPreview)(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
|
|
126
|
+
} catch (e) {
|
|
127
|
+
ssrReliabilityRef.current = _objectSpread(_objectSpread({}, ssrReliabilityRef.current), {}, (0, _defineProperty2.default)({}, ssr, _objectSpread({
|
|
128
|
+
status: 'fail'
|
|
129
|
+
}, (0, _analytics.extractErrorInfo)(e, traceContext))));
|
|
130
|
+
}
|
|
124
131
|
}
|
|
125
132
|
} else {
|
|
126
133
|
var _dimensions = ssrData.dimensions,
|
|
@@ -306,7 +313,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
306
313
|
client: (0, _analytics.createFailedSSRObject)(failedPreview, traceContext)
|
|
307
314
|
});
|
|
308
315
|
}
|
|
309
|
-
var isSSR = (0, _getPreview.isSSRDataPreview)(failedPreview) || (
|
|
316
|
+
var isSSR = (0, _getPreview.isSSRDataPreview)(failedPreview) || (0, _getPreview.isSSRClientPreview)(failedPreview);
|
|
310
317
|
|
|
311
318
|
// If the preview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
|
|
312
319
|
if (isSSR) {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
export const GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
|
|
8
8
|
export const GLOBAL_MEDIA_COUNT_SSR = 'mediaCountSsr';
|
|
9
|
+
export const GLOBAL_MEDIA_PERFORMANCE_ENTRIES = 'performanceEntries';
|
|
9
10
|
export const GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
|
|
10
11
|
const MAX_EAGER_LOAD_COUNT = 6;
|
|
11
12
|
export function getMediaGlobalScope(globalScope = window) {
|
|
@@ -47,7 +48,7 @@ const generateScript = (identifier, dataURI, mode, srcSet, dimensions, error, fe
|
|
|
47
48
|
};
|
|
48
49
|
|
|
49
50
|
// Read originalScriptCode.ts before making changes
|
|
50
|
-
return `!function(
|
|
51
|
+
return `!function(e){var r=document.currentScript,i=window.__MEDIA_INTERNAL=window.__MEDIA_INTERNAL||{},n=i.mediaCardSsr=i.mediaCardSsr||{},o=e.key,t=e.dataURI,d=e.mode,a=e.srcSet,s=e.dimensions,m=e.error,l=e.featureFlags;if(l["media-perf-uplift-mutation-fix"]){var u,c,f=n[o],v=f&&f.mode===d&&(null===(u=f.dimensions)||void 0===u?void 0:u.width)&&(null==s?void 0:s.width)&&f.dimensions.width>s.width,E=v?f.srcSet:a,p=v?f.dataURI:t,w={dataURI:p,dimensions:s,error:m,srcSet:E,loading:"lazy",loadPromise:void 0,mode:d},S=null==r||null===(c=r.parentElement)||void 0===c?void 0:c.querySelector("img");if(i.mediaCountSsr=i.mediaCountSsr||0,S){if(l["media-perf-lazy-loading-optimisation"]&&i.mediaCountSsr<e.maxEagerLoadCount){i.mediaCountSsr++,S.removeAttribute("loading"),w.loading="";var g=new PerformanceObserver((function(e){e.getEntries().forEach((function(e){E.includes(e.name)&&(i.performanceEntries=i.performanceEntries||[],i.performanceEntries.push(e),g.disconnect())}))}));g.observe({type:"resource"})}p&&(S.src=p),E&&(S.srcset=E),w.loadPromise=new Promise((function(e,r){S.addEventListener("load",(function(){return e()})),S.addEventListener("error",(function(){return r(new Error("Failed to load image"))}))}))}n[o]=v?f:w}else n[o]={dataURI:t,dimensions:s,error:m};null==r||r.remove()}({replace:""});`.replace('{replace:""}', JSON.stringify(params));
|
|
51
52
|
};
|
|
52
53
|
export const generateScriptProps = (identifier, dataURI, mode, srcSet, dimensions, error, featureFlags = {}) => ({
|
|
53
54
|
dangerouslySetInnerHTML: {
|
|
@@ -4,69 +4,31 @@
|
|
|
4
4
|
* Do not change the code without testing it in product first.
|
|
5
5
|
* Steps:
|
|
6
6
|
* 1. Make changes in this code
|
|
7
|
-
* 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
|
|
8
|
-
*
|
|
7
|
+
* 2. Manually minify the code into: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMGludG8lM0ElMjBodHRwcyUzQSUyRiUyRnJlcGwucGFyY2VsanMub3JnJTJGJTIzSlRkQ0pUSXlabWxzWlhNbE1qSWxNMEVsTlVJbE5VSWxNaklsTWtaemNtTWxNa1pwYm1SbGVDNTBjeVV5TWlVeVF5VTNRaVV5TW5aaGJIVmxKVEl5SlROQkpUSXlKVEpHS2lVeU1HVnpiR2x1ZEMxa2FYTmhZbXhsSlRJd0pUUXdZWFJzWVhOcmFYUWxNa1p3YkdGMFptOXliU1V5Um01dkxXUnBjbVZqZEMxa2IyTjFiV1Z1ZEMxMWMyRm5aU1V5TUNvbE1rWWxOVU51SlRWRGJpVXlSaW9xSlRJd1NVMVFUMUpVUVU1VUpUTkJKVEl3VkdocGN5VXlNR2x6SlRJd2RHaGxKVEl3YjNKcFoybHVZV3dsTWpCamIyUmxKVEl3Wm05eUpUSXdkR2hsSlRJd2MyTnlhWEIwTGlVMVEyNGxNakFxSlRJd1JHOGxNakJ1YjNRbE1qQmphR0Z1WjJVbE1qQjBhR1VsTWpCamIyUmxKVEl3ZDJsMGFHOTFkQ1V5TUhSbGMzUnBibWNsTWpCcGRDVXlNR2x1SlRJd2NISnZaSFZqZENVeU1HWnBjbk4wTGlVMVEyNGxNakFxSlRJd1UzUmxjSE1sTTBFbE5VTnVKVEl3S2lVeU1ERXVKVEl3VFdGclpTVXlNR05vWVc1blpYTWxNakJwYmlVeU1IUm9hWE1sTWpCamIyUmxKVFZEYmlVeU1Db2xNakF5TGlVeU1FMWhiblZoYkd4NUpUSXdiV2x1YVdaNUpUSXdkR2hsSlRJd1kyOWtaU1V5TUhacFlTVXlNR2gwZEhCekpUTkJKVEpHSlRKR2NtVndiQzV3WVhKalpXeHFjeTV2Y21jbE1rWWxOVU51SlRJd0tpVXlNRE11SlRJd1EyOXdlU1V5TUhSb1pTVXlNRzFwYm1sbWFXVmtKVEl3WTI5a1pTVXlNR2x1ZEc4bE1qQm5iRzlpWVd4VFkyOXdaUzUwYzNnbE1qQnlaWEJzWVdOcGJtY2xNakIwYUdVbE1qQmxlR2x6ZEdsdVp5VXlNSE4wY21sdVp5VXlNSGRvWlhKbEpUSXdhWFFsTWpCellYbHpKVEl3VUVGVFZFVWxNakJJUlZKRkpUVkRiaVV5TUNvbE1qQTBMaVV5TUZKMWJpVXlNSFJvWlNVeU1IUmxjM1J6SlRJd1lXNWtKVEl3YldGclpTVXlNSE4xY21VbE1qQjBhR1Y1SlRJd2NHRnpjeVUxUTI0bE1qQXFKVEl3TlM0bE1qQlVSVk5VSlRJd1NVNGxNakJRVWs5RVZVTlVVeVV5TUVKRlJrOVNSU1V5TUUxRlVrZEpUa2NsTlVOdUpUSXdLaVUxUTI0bE1qQXFKVEpHSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUjJ4dlltRnNVMk52Y0dVb0tTVXlNQ1UzUWlVMVEyNGxNakFsTWpCamIyNXpkQ1V5TUc1aGJXVnpjR0ZqWlNVeU1DVXpSQ1V5TUNVMVF5VXlNbDlmVFVWRVNVRmZTVTVVUlZKT1FVd2xOVU1sTWpJbE0wSWxOVU51SlRJd0pUSXdhV1lsTWpBb0lTaDNhVzVrYjNjbE1qQmhjeVV5TUdGdWVTa2xOVUp1WVcxbGMzQmhZMlVsTlVRcEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ2gzYVc1a2IzY2xNakJoY3lVeU1HRnVlU2tsTlVKdVlXMWxjM0JoWTJVbE5VUWxNakFsTTBRbE1qQWxOMElsTjBRbE0wSWxOVU51SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUhKbGRIVnliaVV5TUNoM2FXNWtiM2NsTWpCaGN5VXlNR0Z1ZVNrbE5VSnVZVzFsYzNCaFkyVWxOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUTJGeVpGTlRVaWdwSlRJd0pUZENKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdaMnh2WW1Gc1RXVmthV0VsTWpBbE0wUWxNakJuWlhSTlpXUnBZVWRzYjJKaGJGTmpiM0JsS0NrbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQnJaWGtsTWpBbE0wUWxNakFsTlVNbE1qSnRaV1JwWVVOaGNtUlRjM0lsTlVNbE1qSWxNMElsTlVOdUpUSXdKVEl3YVdZbE1qQW9JV2RzYjJKaGJFMWxaR2xoSlRWQ2EyVjVKVFZFS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQm5iRzlpWVd4TlpXUnBZU1UxUW10bGVTVTFSQ1V5TUNVelJDVXlNQ1UzUWlVM1JDVXpRaVUxUTI0bE1qQWxNakFsTjBRbE5VTnVKVEl3SlRJd2NtVjBkWEp1SlRJd1oyeHZZbUZzVFdWa2FXRWxOVUpyWlhrbE5VUWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNW1kVzVqZEdsdmJpVXlNR2RsZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdjbVYwZFhKdUpUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdsdVkzSmxiV1Z1ZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTWtJbE1rSWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNG9ablZ1WTNScGIyNGxNakFvY0dGeVlXMXpKVE5CSlRJd1lXNTVLU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1ITmpjbWx3ZENVeU1DVXpSQ1V5TUdSdlkzVnRaVzUwTG1OMWNuSmxiblJUWTNKcGNIUWxNMElsTlVOdUpUVkRiaVV5TUNVeU1DVXlSaVV5UmlVeU1GTjBiM0psSlRJd2RHaGxKVEl3WkdGMFlTVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HMWxaR2xoUTJGeVpGTnpjaVV5TUNVelJDVXlNR2RsZEUxbFpHbGhRMkZ5WkZOVFVpZ3BKVE5DSlRWRGJpVXlNQ1V5TUdOdmJuTjBKVEl3YldWa2FXRkRiM1Z1ZEZOemNpVXlNQ1V6UkNVeU1HZGxkRTFsWkdsaFEyOTFiblJUVTFJb0tTVXpRaVUxUTI0bE1qQWxNakJqYjI1emRDVXlNQ1UzUWlVeU1HdGxlU1V5TUNVM1JDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3lVelFpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1IQmhjbUZ0UkdGMFlWVlNTU1V5TUNVelJDVXlNSEJoY21GdGN5NWtZWFJoVlZKSkpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRORUpUSXdjR0Z5WVcxekxtMXZaR1VsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpCd1lYSmhiVk55WTFObGRDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3k1emNtTlRaWFFsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpBbE4wSWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUZEVKVEl3SlRORUpUSXdjR0Z5WVcxekpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdKVGRDSlRJd1pYSnliM0lsTWpBbE4wUWxNakFsTTBRbE1qQndZWEpoYlhNbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQWxOMElsTWpCbVpXRjBkWEpsUm14aFozTWxNakFsTjBRbE1qQWxNMFFsTWpCd1lYSmhiWE1sTTBJbE5VTnVKVFZEYmlVeU1DVXlNR2xtSlRJd0tHWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0ZFhCc2FXWjBMVzExZEdGMGFXOXVMV1pwZUNVMVF5VXlNaVUxUkNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQndjbVYyUkdGMFlTVXlNQ1V6UkNVeU1HMWxaR2xoUTJGeVpGTnpjaVUxUW10bGVTVTFSQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakJqYjI1emRDVXlNR2x6VUhKbGRtbHZkWE5KYldGblpVeGhjbWRsY2lVeU1DVXpSQ1UxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCd2NtVjJSR0YwWVNVeU1DVXlOaVV5TmlVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQndjbVYyUkdGMFlTNXRiMlJsSlRJd0pUTkVKVE5FSlRORUpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRJMkpUSTJKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUhCeVpYWkVZWFJoTG1ScGJXVnVjMmx2Ym5NbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V5TmlVeU5pVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V6UlNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE0wSWxOVU51SlRWRGJpVXlNQ1V5TUNVeU1DVXlNR052Ym5OMEpUSXdjM0pqVTJWMEpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVjM0pqVTJWMEpUSXdKVE5CSlRJd2NHRnlZVzFUY21OVFpYUWxNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQmtZWFJoVlZKSkpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVaR0YwWVZWU1NTVXlNQ1V6UVNVeU1IQmhjbUZ0UkdGMFlWVlNTU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd1kyOXVjM1FsTWpCamRYSnlSR0YwWVNVelFTVXlNR0Z1ZVNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjM0pqVTJWMEpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUnBibWNsTTBFbE1qQWxOVU1sTWpKc1lYcDVKVFZESlRJeUpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUlFjbTl0YVhObEpUTkJKVEl3ZFc1a1pXWnBibVZrSlRKREpUVkRiaVUxUTNRbE5VTjBKVFZEZEcxdlpHVWxNMEVsTWpCd1lYSmhiVTF2WkdVbE1rTWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVKVE5DSlRWRGJpVTFRMjRsTWpBbE1qQWxNakFsTWpCamIyNXpkQ1V5TUdsdFp5VXlNQ1V6UkNVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnpZM0pwY0hRbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjMk55YVhCMExuQmhjbVZ1ZEVWc1pXMWxiblFsTWpBbE1qWWxNallsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2MyTnlhWEIwTG5CaGNtVnVkRVZzWlcxbGJuUXVjWFZsY25sVFpXeGxZM1J2Y2lnbE5VTWxNakpwYldjbE5VTWxNaklwSlROQ0pUVkRiaVUxUTI0bE1qQWxNakFsTWpBbE1qQnBaaVV5TUNnbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdhVzFuSlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0YkdGNmVTMXNiMkZrYVc1bkxXOXdkR2x0YVhOaGRHbHZiaVUxUXlVeU1pVTFSQ1V5TUNVeU5pVXlOaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCdFpXUnBZVU52ZFc1MFUzTnlKVEl3SlROREpUSXdjR0Z5WVcxekxtMWhlRVZoWjJWeVRHOWhaRU52ZFc1MEpUVkRiaVV5TUNVeU1DVXlNQ1V5TUNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2FXNWpjbVZ0Wlc1MFRXVmthV0ZEYjNWdWRGTlRVaWdwSlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeTVuWlhSQmRIUnlhV0oxZEdVb0pUVkRKVEl5Ykc5aFpHbHVaeVUxUXlVeU1pa2xNakFsTTBRbE0wUWxNMFFsTWpBbE5VTWxNakpzWVhwNUpUVkRKVEl5S1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJwYldjdWNtVnRiM1psUVhSMGNtbGlkWFJsS0NVMVF5VXlNbXh2WVdScGJtY2xOVU1sTWpJcEpUTkNKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJqZFhKeVJHRjBZUzVzYjJGa2FXNW5KVEl3SlRORUpUSXdKVFZESlRJeUpUVkRKVEl5SlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTlVOdUpUSXdKVEl3SlRJd0pUSXdhV1lsTWpBb2FXMW5KVEl3SlRJMkpUSTJKVEl3WkdGMFlWVlNTU2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZeVV5TUNVelJDVXlNR1JoZEdGVlVra2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeVV5TUNVeU5pVXlOaVV5TUhOeVkxTmxkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZM05sZENVeU1DVXpSQ1V5TUhOeVkxTmxkQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakFsTjBRbE5VTnVKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HTjFjbkpFWVhSaExteHZZV1JRY205dGFYTmxKVEl3SlRORUpUSXdibVYzSlRJd1VISnZiV2x6WlNVelEzWnZhV1FsTTBVb1puVnVZM1JwYjI0bE1qQW9jbVZ6YjJ4MlpTVXlReVV5TUhKbGFtVmpkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVdZbE1qQW9hVzFuS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWtZbE1rWWxNakJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWxNakFsTkRCeVpYQnZKVEpHYVc1MFpYSnVZV3dsTWtaa2IyMHRaWFpsYm5SekpUSkdibTh0ZFc1ellXWmxMV1YyWlc1MExXeHBjM1JsYm1WeWN5VTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnBiV2N1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdsTlVNbE1qSnNiMkZrSlRWREpUSXlKVEpESlRJd1puVnVZM1JwYjI0bE1qQW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCeVpYTnZiSFpsS0hWdVpHVm1hVzVsWkNrbE0wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVGRFS1NVelFpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNa1lsTWtZbE1qQmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VbE1qQWxOREJ5WlhCdkpUSkdhVzUwWlhKdVlXd2xNa1prYjIwdFpYWmxiblJ6SlRKR2JtOHRkVzV6WVdabExXVjJaVzUwTFd4cGMzUmxibVZ5Y3lVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCcGJXY3VZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2xOVU1sTWpKbGNuSnZjaVUxUXlVeU1pVXlReVV5TUdaMWJtTjBhVzl1SlRJd0tDa2xNakFsTjBJbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3Y21WcVpXTjBLRzVsZHlVeU1FVnljbTl5S0NVMVF5VXlNa1poYVd4bFpDVXlNSFJ2SlRJd2JHOWhaQ1V5TUdsdFlXZGxKVFZESlRJeUtTa2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRkRUtTVXpRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVLU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd2JXVmthV0ZEWVhKa1UzTnlKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdhWE5RY21WMmFXOTFjMGx0WVdkbFRHRnlaMlZ5SlRJd0pUTkdKVEl3Y0hKbGRrUmhkR0VsTWpBbE0wRWxNakJqZFhKeVJHRjBZU1V6UWlVMVEyNGxNakFsTWpBbE4wUWxNakJsYkhObEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNRzFsWkdsaFEyRnlaRk56Y2lVMVFtdGxlU1UxUkNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVE5CSlRJd2NHRnlZVzFFWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRkRUpUTkNKVFZEYmlVeU1DVXlNQ1UzUkNVMVEyNGxOVU51SlRJd0pUSXdKVEpHSlRKR0pUSXdVbVZ0YjNabEpUSXdjMk55YVhCMEpUSXdkRzhsTWpCd2NtVjJaVzUwSlRJd2FIbGtjbUYwYVc5dUpUSXdiV2x6YldGMFkyZ2xOVU51SlRJd0pUSXdaRzlqZFcxbGJuUXVZM1Z5Y21WdWRGTmpjbWx3ZENVelJpNXlaVzF2ZG1Vb0tTVXpRaVUxUTI0bE5VTnVKVFZEZENVeVJpVXlSaVV5TUhSb2FYTWxNakJ5WlhCc1lXTmxKVEl3ZDJsc2JDVXlNR0psSlRJd2RYTmxaQ1V5TUdGekpUSXdZU1V5TUhCc1lXTmxhRzlzWkdWeUpUSXdabTl5SlRJd2RHaGxKVEl3YzNSeWFXNW5hV1pwWldRbE1qQndZWEpoYlhNbE1qQjBieVV5TUdKbEpUSXdhVzVxWldOMFpXUWxNakJwYm5SdkpUSXdkR2hsSlRJd2MyTnlhWEIwSlRWRGJpVTNSQ2tvSlRkQ0pUSXdjbVZ3YkdGalpTVXpRU1V5TUNVMVF5VXlNaVUxUXlVeU1pVXlNQ1UzUkNrbE0wSWxOVU51SlRJeUpUSkRKVEl5YVhORmJuUnllU1V5TWlVelFYUnlkV1VsTjBRbE5VUWxOVVFsTWtNbE1qSnZjSFJwYjI1ekpUSXlKVE5CSlRkQ0pUSXlaVzUwY21sbGN5VXlNaVV6UVNVMVFpVTFSQ1V5UXlVeU1tMXBibWxtZVNVeU1pVXpRWFJ5ZFdVbE1rTWxNakp6WTI5d1pVaHZhWE4wSlRJeUpUTkJkSEoxWlNVeVF5VXlNbk52ZFhKalpVMWhjSE1sTWpJbE0wRm1ZV3h6WlNVeVF5VXlNbkIxWW14cFkxVnliQ1V5TWlVelFTVXlNaVV5Umw5ZmNtVndiRjlrYVhOMEpUSXlKVEpESlRJeWRHRnlaMlYwVkhsd1pTVXlNaVV6UVNVeU1tSnliM2R6WlhKekpUSXlKVEpESlRJeWRHRnlaMlYwUlc1MkpUSXlKVE5CYm5Wc2JDVXlReVV5TW05MWRIQjFkRVp2Y20xaGRDVXlNaVV6UVc1MWJHd2xNa01sTWpKb2JYSWxNaklsTTBGbVlXeHpaU1V5UXlVeU1tMXZaR1VsTWpJbE0wRWxNakp3Y205a2RXTjBhVzl1SlRJeUpUSkRKVEl5Y21WdVpHVnlSM0poY0doekpUSXlKVE5CWm1Gc2MyVWxNa01sTWpKMmFXVjNVMjkxY21ObGJXRndjeVV5TWlVelFXWmhiSE5sSlRKREpUSXlaR1Z3Wlc1a1pXNWphV1Z6SlRJeUpUTkJKVFZDSlRWRUpUSkRKVEl5Ym5WdFYyOXlhMlZ5Y3lVeU1pVXpRVEFsTjBRbE1rTWxNakoxYzJWVVlXSnpKVEl5SlROQmRISjFaU1V5UXlVeU1tSnliM2R6WlhKRGIyeHNZWEJ6WldRbE1qSWxNMEVsTlVJbE5VUWxNa01sTWpKMmFXVjNjeVV5TWlVelFTVTFRaVV5TWlVeVJuTnlZeVV5Um1sdVpHVjRMblJ6SlRJeUpUVkVKVEpESlRJeVkzVnljbVZ1ZEZacFpYY2xNaklsTTBFd0pUZEUlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lNUN0Y29uc3QlMjBzY3JpcHQlMjAlM0QlMjBkb2N1bWVudC5jdXJyZW50U2NyaXB0JTNCJTVDbiU1Q3Rjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwKCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCUzRCUyMCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwbWVkaWFDYXJkU3NyJTIwJTNEJTIwKGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwJTdCJTIwa2V5JTJDJTIwZGF0YVVSSSUzQSUyMHBhcmFtRGF0YVVSSSUyQyUyMG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlMjBzcmNTZXQlM0ElMjBwYXJhbVNyY1NldCUyQyUyMGRpbWVuc2lvbnMlMkMlMjBlcnJvciUyQyUyMGZlYXR1cmVGbGFncyUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lNUNuJTVDdGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTVDdCU1Q3Rjb25zdCUyMHByZXZEYXRhJTIwJTNEJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTNCJTVDbiU1Q3QlNUN0Y29uc3QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0QlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGElMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEubW9kZSUyMCUzRCUzRCUzRCUyMHBhcmFtTW9kZSUyMCUyNiUyNiU1Q24lNUN0JTVDdCU1Q3RwcmV2RGF0YS5kaW1lbnNpb25zJTNGLndpZHRoJTIwJTI2JTI2JTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlM0Yud2lkdGglMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBzcmNTZXQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YS5zcmNTZXQlMjAlM0ElMjBwYXJhbVNyY1NldCUzQiU1Q24lNUN0JTVDdGNvbnN0JTIwZGF0YVVSSSUyMCUzRCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRiUyMHByZXZEYXRhLmRhdGFVUkklMjAlM0ElMjBwYXJhbURhdGFVUkklM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lNUN0JTVDdCU1Q3RkYXRhVVJJJTJDJTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlMkMlNUNuJTVDdCU1Q3QlNUN0ZXJyb3IlMkMlNUNuJTVDdCU1Q3QlNUN0c3JjU2V0JTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTVDdCU1Q3QlN0QlM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBpbWclMjAlM0QlMjBzY3JpcHQlM0YucGFyZW50RWxlbWVudCUzRi5xdWVyeVNlbGVjdG9yKCU1QyUyMmltZyU1QyUyMiklM0IlNUNuJTVDbiU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlN0MlN0MlMjAwJTNCJTVDbiU1Q24lNUN0JTVDdGlmJTIwKGltZyklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0aWYlMjAoJTVDbiU1Q3QlNUN0JTVDdCU1Q3RmZWF0dXJlRmxhZ3MlNUIlNUMlMjJtZWRpYS1wZXJmLWxhenktbG9hZGluZy1vcHRpbWlzYXRpb24lNUMlMjIlNUQlMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlM0MlMjBwYXJhbXMubWF4RWFnZXJMb2FkQ291bnQlNUNuJTVDdCU1Q3QlNUN0KSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyQiUyQiUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLnJlbW92ZUF0dHJpYnV0ZSglNUMlMjJsb2FkaW5nJTVDJTIyKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0Y3VyckRhdGEubG9hZGluZyUyMCUzRCUyMCU1QyUyMiU1QyUyMiUzQiU1Q24lNUNuJTVDdCU1Q3QlNUN0JTVDdGNvbnN0JTIwb2JzZXJ2ZXIlMjAlM0QlMjBuZXclMjBQZXJmb3JtYW5jZU9ic2VydmVyKChlbnRyaWVzKSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdGVudHJpZXMuZ2V0RW50cmllcygpLmZvckVhY2goKGVudHJ5KSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQuaW5jbHVkZXMoZW50cnkubmFtZSkpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlM0QlMjBnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlN0MlN0MlMjAlNUIlNUQlM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLnBlcmZvcm1hbmNlRW50cmllcy5wdXNoKGVudHJ5KSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0b2JzZXJ2ZXIuZGlzY29ubmVjdCgpJTNCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdG9ic2VydmVyLm9ic2VydmUoJTdCJTIwdHlwZSUzQSUyMCdyZXNvdXJjZSclMjAlN0QpJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3QlNUN0aWYlMjAoZGF0YVVSSSklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5zcmMlMjAlM0QlMjBkYXRhVVJJJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3RpbWcuc3Jjc2V0JTIwJTNEJTIwc3JjU2V0JTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RjdXJyRGF0YS5sb2FkUHJvbWlzZSUyMCUzRCUyMG5ldyUyMFByb21pc2UlM0N2b2lkJTNFKGZ1bmN0aW9uJTIwKHJlc29sdmUlMkMlMjByZWplY3QpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLmFkZEV2ZW50TGlzdGVuZXIoJTVDJTIybG9hZCU1QyUyMiUyQyUyMCgpJTIwJTNEJTNFJTIwcmVzb2x2ZSgpKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTJGJTJGJTIwZXNsaW50LWRpc2FibGUtbmV4dC1saW5lJTIwJTQwcmVwbyUyRmludGVybmFsJTJGZG9tLWV2ZW50cyUyRm5vLXVuc2FmZS1ldmVudC1saXN0ZW5lcnMlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5hZGRFdmVudExpc3RlbmVyKCU1QyUyMmVycm9yJTVDJTIyJTJDJTIwKCklMjAlM0QlM0UlMjByZWplY3QobmV3JTIwRXJyb3IoJTVDJTIyRmFpbGVkJTIwdG8lMjBsb2FkJTIwaW1hZ2UlNUMlMjIpKSklM0IlNUNuJTVDdCU1Q3QlNUN0JTdEKSUzQiU1Q24lNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3RtZWRpYUNhcmRTc3IlNUJrZXklNUQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YSUyMCUzQSUyMGN1cnJEYXRhJTNCJTVDbiU1Q3QlN0QlMjBlbHNlJTIwJTdCJTVDbiU1Q3QlNUN0bWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdGRhdGFVUkklM0ElMjBwYXJhbURhdGFVUkklMkMlNUNuJTVDdCU1Q3QlNUN0ZGltZW5zaW9ucyUyQyU1Q24lNUN0JTVDdCU1Q3RlcnJvciUyQyU1Q24lNUN0JTVDdCU3RCUzQiU1Q24lNUN0JTdEJTVDbiU1Q24lNUN0c2NyaXB0JTNGLnJlbW92ZSgpJTNCJTVDbiU1Q24lNUN0JTJGJTJGJTIwdGhpcyUyMHJlcGxhY2UlMjB3aWxsJTIwYmUlMjB1c2VkJTIwYXMlMjBhJTIwcGxhY2Vob2xkZXIlMjBmb3IlMjB0aGUlMjBzdHJpbmdpZmllZCUyMHBhcmFtcyUyMHRvJTIwYmUlMjBpbmplY3RlZCUyMGludG8lMjB0aGUlMjBzY3JpcHQlNUNuJTdEKSglN0IlMjByZXBsYWNlJTNBJTIwJTVDJTIyJTVDJTIyJTIwJTdEKSUzQiU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCU1RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJlbnRyaWVzJTIyJTNBJTVCJTVEJTJDJTIybWluaWZ5JTIyJTNBdHJ1ZSUyQyUyMnNjb3BlSG9pc3QlMjIlM0F0cnVlJTJDJTIyc291cmNlTWFwcyUyMiUzQWZhbHNlJTJDJTIycHVibGljVXJsJTIyJTNBJTIyJTJGX19yZXBsX2Rpc3QlMjIlMkMlMjJ0YXJnZXRUeXBlJTIyJTNBJTIyYnJvd3NlcnMlMjIlMkMlMjJ0YXJnZXRFbnYlMjIlM0ElMjJzaW5jZSUyMDIwMTUlMjIlMkMlMjJvdXRwdXRGb3JtYXQlMjIlM0FudWxsJTJDJTIyaG1yJTIyJTNBZmFsc2UlMkMlMjJtb2RlJTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMnJlbmRlckdyYXBocyUyMiUzQWZhbHNlJTJDJTIydmlld1NvdXJjZW1hcHMlMjIlM0FmYWxzZSUyQyUyMmRlcGVuZGVuY2llcyUyMiUzQSU1QiU1RCUyQyUyMm51bVdvcmtlcnMlMjIlM0EwJTdEJTJDJTIydXNlVGFicyUyMiUzQXRydWUlMkMlMjJicm93c2VyQ29sbGFwc2VkJTIyJTNBJTVCJTVEJTJDJTIydmlld3MlMjIlM0ElNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiU1RCUyQyUyMmN1cnJlbnRWaWV3JTIyJTNBMCU3RA==
|
|
8
|
+
* Ensure the settings have: Minification on and
|
|
9
9
|
* 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
|
|
10
10
|
* 4. Run the tests and make sure they pass
|
|
11
11
|
* 5. TEST IN PRODUCTS BEFORE MERGING
|
|
12
12
|
*
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
function
|
|
16
|
-
const namespace = "__MEDIA_INTERNAL";
|
|
17
|
-
if (!window[namespace]) {
|
|
18
|
-
window[namespace] = {};
|
|
19
|
-
}
|
|
20
|
-
return window[namespace];
|
|
21
|
-
}
|
|
22
|
-
function getMediaCardSSR() {
|
|
23
|
-
const globalMedia = getMediaGlobalScope();
|
|
24
|
-
const key = "mediaCardSsr";
|
|
25
|
-
if (!globalMedia[key]) {
|
|
26
|
-
globalMedia[key] = {};
|
|
27
|
-
}
|
|
28
|
-
return globalMedia[key];
|
|
29
|
-
}
|
|
30
|
-
function getMediaCountSSR() {
|
|
31
|
-
const globalMedia = getMediaGlobalScope();
|
|
32
|
-
const key = "mediaCountSsr";
|
|
33
|
-
if (!globalMedia[key]) {
|
|
34
|
-
globalMedia[key] = 0;
|
|
35
|
-
}
|
|
36
|
-
return globalMedia[key];
|
|
37
|
-
}
|
|
38
|
-
function incrementMediaCountSSR() {
|
|
39
|
-
const globalMedia = getMediaGlobalScope();
|
|
40
|
-
const key = "mediaCountSsr";
|
|
41
|
-
if (!globalMedia[key]) {
|
|
42
|
-
globalMedia[key] = 0;
|
|
43
|
-
}
|
|
44
|
-
globalMedia[key]++;
|
|
45
|
-
}
|
|
46
|
-
(function (params, _document$currentScri) {
|
|
15
|
+
(function (params) {
|
|
47
16
|
const script = document.currentScript;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const mediaCardSsr = getMediaCardSSR();
|
|
51
|
-
const mediaCountSsr = getMediaCountSSR();
|
|
52
|
-
const {
|
|
53
|
-
key
|
|
54
|
-
} = params;
|
|
55
|
-
const paramDataURI = params.dataURI;
|
|
56
|
-
const paramMode = params.mode;
|
|
57
|
-
const paramSrcSet = params.srcSet;
|
|
58
|
-
const {
|
|
59
|
-
dimensions
|
|
60
|
-
} = params;
|
|
61
|
-
const {
|
|
62
|
-
error
|
|
63
|
-
} = params;
|
|
17
|
+
const globalMedia = window.__MEDIA_INTERNAL = window.__MEDIA_INTERNAL || {};
|
|
18
|
+
const mediaCardSsr = globalMedia.mediaCardSsr = globalMedia.mediaCardSsr || {};
|
|
64
19
|
const {
|
|
20
|
+
key,
|
|
21
|
+
dataURI: paramDataURI,
|
|
22
|
+
mode: paramMode,
|
|
23
|
+
srcSet: paramSrcSet,
|
|
24
|
+
dimensions,
|
|
25
|
+
error,
|
|
65
26
|
featureFlags
|
|
66
27
|
} = params;
|
|
67
28
|
if (featureFlags["media-perf-uplift-mutation-fix"]) {
|
|
29
|
+
var _prevData$dimensions, _script$parentElement;
|
|
68
30
|
const prevData = mediaCardSsr[key];
|
|
69
|
-
const isPreviousImageLarger = prevData && prevData.mode === paramMode &&
|
|
31
|
+
const isPreviousImageLarger = prevData && prevData.mode === paramMode && ((_prevData$dimensions = prevData.dimensions) === null || _prevData$dimensions === void 0 ? void 0 : _prevData$dimensions.width) && (dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) && prevData.dimensions.width > dimensions.width;
|
|
70
32
|
const srcSet = isPreviousImageLarger ? prevData.srcSet : paramSrcSet;
|
|
71
33
|
const dataURI = isPreviousImageLarger ? prevData.dataURI : paramDataURI;
|
|
72
34
|
const currData = {
|
|
@@ -78,32 +40,39 @@ function incrementMediaCountSSR() {
|
|
|
78
40
|
loadPromise: undefined,
|
|
79
41
|
mode: paramMode
|
|
80
42
|
};
|
|
81
|
-
const img = script
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (
|
|
43
|
+
const img = script === null || script === void 0 ? void 0 : (_script$parentElement = script.parentElement) === null || _script$parentElement === void 0 ? void 0 : _script$parentElement.querySelector("img");
|
|
44
|
+
globalMedia.mediaCountSsr = globalMedia.mediaCountSsr || 0;
|
|
45
|
+
if (img) {
|
|
46
|
+
if (featureFlags["media-perf-lazy-loading-optimisation"] && globalMedia.mediaCountSsr < params.maxEagerLoadCount) {
|
|
47
|
+
globalMedia.mediaCountSsr++;
|
|
85
48
|
img.removeAttribute("loading");
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
currData.loadPromise = new Promise(function (resolve, reject) {
|
|
96
|
-
if (img) {
|
|
97
|
-
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
98
|
-
img.addEventListener("load", function () {
|
|
99
|
-
resolve(undefined);
|
|
49
|
+
currData.loading = "";
|
|
50
|
+
const observer = new PerformanceObserver(entries => {
|
|
51
|
+
entries.getEntries().forEach(entry => {
|
|
52
|
+
if (srcSet.includes(entry.name)) {
|
|
53
|
+
globalMedia.performanceEntries = globalMedia.performanceEntries || [];
|
|
54
|
+
globalMedia.performanceEntries.push(entry);
|
|
55
|
+
observer.disconnect();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
100
58
|
});
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
reject(new Error("Failed to load image"));
|
|
59
|
+
observer.observe({
|
|
60
|
+
type: 'resource'
|
|
104
61
|
});
|
|
105
62
|
}
|
|
106
|
-
|
|
63
|
+
if (dataURI) {
|
|
64
|
+
img.src = dataURI;
|
|
65
|
+
}
|
|
66
|
+
if (srcSet) {
|
|
67
|
+
img.srcset = srcSet;
|
|
68
|
+
}
|
|
69
|
+
currData.loadPromise = new Promise(function (resolve, reject) {
|
|
70
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
71
|
+
img.addEventListener("load", () => resolve());
|
|
72
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
73
|
+
img.addEventListener("error", () => reject(new Error("Failed to load image")));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
107
76
|
mediaCardSsr[key] = isPreviousImageLarger ? prevData : currData;
|
|
108
77
|
} else {
|
|
109
78
|
mediaCardSsr[key] = {
|
|
@@ -112,9 +81,7 @@ function incrementMediaCountSSR() {
|
|
|
112
81
|
error
|
|
113
82
|
};
|
|
114
83
|
}
|
|
115
|
-
|
|
116
|
-
// Remove script to prevent hydration mismatch
|
|
117
|
-
(_document$currentScri = document.currentScript) === null || _document$currentScri === void 0 ? void 0 : _document$currentScri.remove();
|
|
84
|
+
script === null || script === void 0 ? void 0 : script.remove();
|
|
118
85
|
|
|
119
86
|
// this replace will be used as a placeholder for the stringified params to be injected into the script
|
|
120
87
|
})({
|
|
@@ -86,16 +86,23 @@ export const useFilePreview = ({
|
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
88
|
if (!(ssrData !== null && ssrData !== void 0 && ssrData.dataURI)) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
// Only attempt SSR preview generation if:
|
|
90
|
+
// 1. We're on the server (ssr='server'), OR
|
|
91
|
+
// 2. We're on the client AND there is SSR data (meaning SSR actually happened)
|
|
92
|
+
// If ssr='client' but there's no SSR data, it means this is a client-side navigation
|
|
93
|
+
// where no SSR occurred, so we should skip SSR preview generation entirely.
|
|
94
|
+
if (ssr === 'server' || ssrData) {
|
|
95
|
+
try {
|
|
96
|
+
return getSSRPreview(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
|
|
97
|
+
} catch (e) {
|
|
98
|
+
ssrReliabilityRef.current = {
|
|
99
|
+
...ssrReliabilityRef.current,
|
|
100
|
+
[ssr]: {
|
|
101
|
+
status: 'fail',
|
|
102
|
+
...extractErrorInfo(e, traceContext)
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
99
106
|
}
|
|
100
107
|
} else {
|
|
101
108
|
const {
|
|
@@ -282,7 +289,7 @@ export const useFilePreview = ({
|
|
|
282
289
|
client: createFailedSSRObject(failedPreview, traceContext)
|
|
283
290
|
};
|
|
284
291
|
}
|
|
285
|
-
const isSSR = isSSRDataPreview(failedPreview) ||
|
|
292
|
+
const isSSR = isSSRDataPreview(failedPreview) || isSSRClientPreview(failedPreview);
|
|
286
293
|
|
|
287
294
|
// If the preview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
|
|
288
295
|
if (isSSR) {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
export var GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
|
|
8
8
|
export var GLOBAL_MEDIA_COUNT_SSR = 'mediaCountSsr';
|
|
9
|
+
export var GLOBAL_MEDIA_PERFORMANCE_ENTRIES = 'performanceEntries';
|
|
9
10
|
export var GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
|
|
10
11
|
var MAX_EAGER_LOAD_COUNT = 6;
|
|
11
12
|
export function getMediaGlobalScope() {
|
|
@@ -53,7 +54,7 @@ var generateScript = function generateScript(identifier, dataURI, mode, srcSet,
|
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
// Read originalScriptCode.ts before making changes
|
|
56
|
-
return "!function(
|
|
57
|
+
return "!function(e){var r=document.currentScript,i=window.__MEDIA_INTERNAL=window.__MEDIA_INTERNAL||{},n=i.mediaCardSsr=i.mediaCardSsr||{},o=e.key,t=e.dataURI,d=e.mode,a=e.srcSet,s=e.dimensions,m=e.error,l=e.featureFlags;if(l[\"media-perf-uplift-mutation-fix\"]){var u,c,f=n[o],v=f&&f.mode===d&&(null===(u=f.dimensions)||void 0===u?void 0:u.width)&&(null==s?void 0:s.width)&&f.dimensions.width>s.width,E=v?f.srcSet:a,p=v?f.dataURI:t,w={dataURI:p,dimensions:s,error:m,srcSet:E,loading:\"lazy\",loadPromise:void 0,mode:d},S=null==r||null===(c=r.parentElement)||void 0===c?void 0:c.querySelector(\"img\");if(i.mediaCountSsr=i.mediaCountSsr||0,S){if(l[\"media-perf-lazy-loading-optimisation\"]&&i.mediaCountSsr<e.maxEagerLoadCount){i.mediaCountSsr++,S.removeAttribute(\"loading\"),w.loading=\"\";var g=new PerformanceObserver((function(e){e.getEntries().forEach((function(e){E.includes(e.name)&&(i.performanceEntries=i.performanceEntries||[],i.performanceEntries.push(e),g.disconnect())}))}));g.observe({type:\"resource\"})}p&&(S.src=p),E&&(S.srcset=E),w.loadPromise=new Promise((function(e,r){S.addEventListener(\"load\",(function(){return e()})),S.addEventListener(\"error\",(function(){return r(new Error(\"Failed to load image\"))}))}))}n[o]=v?f:w}else n[o]={dataURI:t,dimensions:s,error:m};null==r||r.remove()}({replace:\"\"});".replace('{replace:""}', JSON.stringify(params));
|
|
57
58
|
};
|
|
58
59
|
export var generateScriptProps = function generateScriptProps(identifier, dataURI, mode, srcSet, dimensions, error) {
|
|
59
60
|
var featureFlags = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
|
|
@@ -4,61 +4,29 @@
|
|
|
4
4
|
* Do not change the code without testing it in product first.
|
|
5
5
|
* Steps:
|
|
6
6
|
* 1. Make changes in this code
|
|
7
|
-
* 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
|
|
8
|
-
*
|
|
7
|
+
* 2. Manually minify the code into: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMGludG8lM0ElMjBodHRwcyUzQSUyRiUyRnJlcGwucGFyY2VsanMub3JnJTJGJTIzSlRkQ0pUSXlabWxzWlhNbE1qSWxNMEVsTlVJbE5VSWxNaklsTWtaemNtTWxNa1pwYm1SbGVDNTBjeVV5TWlVeVF5VTNRaVV5TW5aaGJIVmxKVEl5SlROQkpUSXlKVEpHS2lVeU1HVnpiR2x1ZEMxa2FYTmhZbXhsSlRJd0pUUXdZWFJzWVhOcmFYUWxNa1p3YkdGMFptOXliU1V5Um01dkxXUnBjbVZqZEMxa2IyTjFiV1Z1ZEMxMWMyRm5aU1V5TUNvbE1rWWxOVU51SlRWRGJpVXlSaW9xSlRJd1NVMVFUMUpVUVU1VUpUTkJKVEl3VkdocGN5VXlNR2x6SlRJd2RHaGxKVEl3YjNKcFoybHVZV3dsTWpCamIyUmxKVEl3Wm05eUpUSXdkR2hsSlRJd2MyTnlhWEIwTGlVMVEyNGxNakFxSlRJd1JHOGxNakJ1YjNRbE1qQmphR0Z1WjJVbE1qQjBhR1VsTWpCamIyUmxKVEl3ZDJsMGFHOTFkQ1V5TUhSbGMzUnBibWNsTWpCcGRDVXlNR2x1SlRJd2NISnZaSFZqZENVeU1HWnBjbk4wTGlVMVEyNGxNakFxSlRJd1UzUmxjSE1sTTBFbE5VTnVKVEl3S2lVeU1ERXVKVEl3VFdGclpTVXlNR05vWVc1blpYTWxNakJwYmlVeU1IUm9hWE1sTWpCamIyUmxKVFZEYmlVeU1Db2xNakF5TGlVeU1FMWhiblZoYkd4NUpUSXdiV2x1YVdaNUpUSXdkR2hsSlRJd1kyOWtaU1V5TUhacFlTVXlNR2gwZEhCekpUTkJKVEpHSlRKR2NtVndiQzV3WVhKalpXeHFjeTV2Y21jbE1rWWxOVU51SlRJd0tpVXlNRE11SlRJd1EyOXdlU1V5TUhSb1pTVXlNRzFwYm1sbWFXVmtKVEl3WTI5a1pTVXlNR2x1ZEc4bE1qQm5iRzlpWVd4VFkyOXdaUzUwYzNnbE1qQnlaWEJzWVdOcGJtY2xNakIwYUdVbE1qQmxlR2x6ZEdsdVp5VXlNSE4wY21sdVp5VXlNSGRvWlhKbEpUSXdhWFFsTWpCellYbHpKVEl3VUVGVFZFVWxNakJJUlZKRkpUVkRiaVV5TUNvbE1qQTBMaVV5TUZKMWJpVXlNSFJvWlNVeU1IUmxjM1J6SlRJd1lXNWtKVEl3YldGclpTVXlNSE4xY21VbE1qQjBhR1Y1SlRJd2NHRnpjeVUxUTI0bE1qQXFKVEl3TlM0bE1qQlVSVk5VSlRJd1NVNGxNakJRVWs5RVZVTlVVeVV5TUVKRlJrOVNSU1V5TUUxRlVrZEpUa2NsTlVOdUpUSXdLaVUxUTI0bE1qQXFKVEpHSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUjJ4dlltRnNVMk52Y0dVb0tTVXlNQ1UzUWlVMVEyNGxNakFsTWpCamIyNXpkQ1V5TUc1aGJXVnpjR0ZqWlNVeU1DVXpSQ1V5TUNVMVF5VXlNbDlmVFVWRVNVRmZTVTVVUlZKT1FVd2xOVU1sTWpJbE0wSWxOVU51SlRJd0pUSXdhV1lsTWpBb0lTaDNhVzVrYjNjbE1qQmhjeVV5TUdGdWVTa2xOVUp1WVcxbGMzQmhZMlVsTlVRcEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ2gzYVc1a2IzY2xNakJoY3lVeU1HRnVlU2tsTlVKdVlXMWxjM0JoWTJVbE5VUWxNakFsTTBRbE1qQWxOMElsTjBRbE0wSWxOVU51SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUhKbGRIVnliaVV5TUNoM2FXNWtiM2NsTWpCaGN5VXlNR0Z1ZVNrbE5VSnVZVzFsYzNCaFkyVWxOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdkbGRFMWxaR2xoUTJGeVpGTlRVaWdwSlRJd0pUZENKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdaMnh2WW1Gc1RXVmthV0VsTWpBbE0wUWxNakJuWlhSTlpXUnBZVWRzYjJKaGJGTmpiM0JsS0NrbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQnJaWGtsTWpBbE0wUWxNakFsTlVNbE1qSnRaV1JwWVVOaGNtUlRjM0lsTlVNbE1qSWxNMElsTlVOdUpUSXdKVEl3YVdZbE1qQW9JV2RzYjJKaGJFMWxaR2xoSlRWQ2EyVjVKVFZFS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQm5iRzlpWVd4TlpXUnBZU1UxUW10bGVTVTFSQ1V5TUNVelJDVXlNQ1UzUWlVM1JDVXpRaVUxUTI0bE1qQWxNakFsTjBRbE5VTnVKVEl3SlRJd2NtVjBkWEp1SlRJd1oyeHZZbUZzVFdWa2FXRWxOVUpyWlhrbE5VUWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNW1kVzVqZEdsdmJpVXlNR2RsZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdjbVYwZFhKdUpUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTTBJbE5VTnVKVGRFSlRWRGJpVTFRMjVtZFc1amRHbHZiaVV5TUdsdVkzSmxiV1Z1ZEUxbFpHbGhRMjkxYm5SVFUxSW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HZHNiMkpoYkUxbFpHbGhKVEl3SlRORUpUSXdaMlYwVFdWa2FXRkhiRzlpWVd4VFkyOXdaU2dwSlROQ0pUVkRiaVV5TUNVeU1HTnZibk4wSlRJd2EyVjVKVEl3SlRORUpUSXdKVFZESlRJeWJXVmthV0ZEYjNWdWRGTnpjaVUxUXlVeU1pVXpRaVUxUTI0bE1qQWxNakJwWmlVeU1DZ2haMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFwSlRJd0pUZENKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HZHNiMkpoYkUxbFpHbGhKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdNQ1V6UWlVMVEyNGxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdaMnh2WW1Gc1RXVmthV0VsTlVKclpYa2xOVVFsTWtJbE1rSWxNMElsTlVOdUpUZEVKVFZEYmlVMVEyNG9ablZ1WTNScGIyNGxNakFvY0dGeVlXMXpKVE5CSlRJd1lXNTVLU1V5TUNVM1FpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1ITmpjbWx3ZENVeU1DVXpSQ1V5TUdSdlkzVnRaVzUwTG1OMWNuSmxiblJUWTNKcGNIUWxNMElsTlVOdUpUVkRiaVV5TUNVeU1DVXlSaVV5UmlVeU1GTjBiM0psSlRJd2RHaGxKVEl3WkdGMFlTVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1HMWxaR2xoUTJGeVpGTnpjaVV5TUNVelJDVXlNR2RsZEUxbFpHbGhRMkZ5WkZOVFVpZ3BKVE5DSlRWRGJpVXlNQ1V5TUdOdmJuTjBKVEl3YldWa2FXRkRiM1Z1ZEZOemNpVXlNQ1V6UkNVeU1HZGxkRTFsWkdsaFEyOTFiblJUVTFJb0tTVXpRaVUxUTI0bE1qQWxNakJqYjI1emRDVXlNQ1UzUWlVeU1HdGxlU1V5TUNVM1JDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3lVelFpVTFRMjRsTWpBbE1qQmpiMjV6ZENVeU1IQmhjbUZ0UkdGMFlWVlNTU1V5TUNVelJDVXlNSEJoY21GdGN5NWtZWFJoVlZKSkpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRORUpUSXdjR0Z5WVcxekxtMXZaR1VsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpCd1lYSmhiVk55WTFObGRDVXlNQ1V6UkNVeU1IQmhjbUZ0Y3k1emNtTlRaWFFsTTBJbE5VTnVKVEl3SlRJd1kyOXVjM1FsTWpBbE4wSWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUZEVKVEl3SlRORUpUSXdjR0Z5WVcxekpUTkNKVFZEYmlVeU1DVXlNR052Ym5OMEpUSXdKVGRDSlRJd1pYSnliM0lsTWpBbE4wUWxNakFsTTBRbE1qQndZWEpoYlhNbE0wSWxOVU51SlRJd0pUSXdZMjl1YzNRbE1qQWxOMElsTWpCbVpXRjBkWEpsUm14aFozTWxNakFsTjBRbE1qQWxNMFFsTWpCd1lYSmhiWE1sTTBJbE5VTnVKVFZEYmlVeU1DVXlNR2xtSlRJd0tHWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0ZFhCc2FXWjBMVzExZEdGMGFXOXVMV1pwZUNVMVF5VXlNaVUxUkNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQndjbVYyUkdGMFlTVXlNQ1V6UkNVeU1HMWxaR2xoUTJGeVpGTnpjaVUxUW10bGVTVTFSQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakJqYjI1emRDVXlNR2x6VUhKbGRtbHZkWE5KYldGblpVeGhjbWRsY2lVeU1DVXpSQ1UxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCd2NtVjJSR0YwWVNVeU1DVXlOaVV5TmlVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQndjbVYyUkdGMFlTNXRiMlJsSlRJd0pUTkVKVE5FSlRORUpUSXdjR0Z5WVcxTmIyUmxKVEl3SlRJMkpUSTJKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUhCeVpYWkVZWFJoTG1ScGJXVnVjMmx2Ym5NbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V5TmlVeU5pVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrYVcxbGJuTnBiMjV6SlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjSEpsZGtSaGRHRXVaR2x0Wlc1emFXOXVjeTUzYVdSMGFDVXlNQ1V6UlNVeU1HUnBiV1Z1YzJsdmJuTXVkMmxrZEdnbE0wSWxOVU51SlRWRGJpVXlNQ1V5TUNVeU1DVXlNR052Ym5OMEpUSXdjM0pqVTJWMEpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVjM0pqVTJWMEpUSXdKVE5CSlRJd2NHRnlZVzFUY21OVFpYUWxNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdZMjl1YzNRbE1qQmtZWFJoVlZKSkpUSXdKVE5FSlRJd2FYTlFjbVYyYVc5MWMwbHRZV2RsVEdGeVoyVnlKVEl3SlROR0pUSXdjSEpsZGtSaGRHRXVaR0YwWVZWU1NTVXlNQ1V6UVNVeU1IQmhjbUZ0UkdGMFlWVlNTU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd1kyOXVjM1FsTWpCamRYSnlSR0YwWVNVelFTVXlNR0Z1ZVNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjM0pqVTJWMEpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUnBibWNsTTBFbE1qQWxOVU1sTWpKc1lYcDVKVFZESlRJeUpUSkRKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUd4dllXUlFjbTl0YVhObEpUTkJKVEl3ZFc1a1pXWnBibVZrSlRKREpUVkRiaVUxUTNRbE5VTjBKVFZEZEcxdlpHVWxNMEVsTWpCd1lYSmhiVTF2WkdVbE1rTWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVKVE5DSlRWRGJpVTFRMjRsTWpBbE1qQWxNakFsTWpCamIyNXpkQ1V5TUdsdFp5VXlNQ1V6UkNVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnpZM0pwY0hRbE1qQWxNallsTWpZbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdjMk55YVhCMExuQmhjbVZ1ZEVWc1pXMWxiblFsTWpBbE1qWWxNallsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2MyTnlhWEIwTG5CaGNtVnVkRVZzWlcxbGJuUXVjWFZsY25sVFpXeGxZM1J2Y2lnbE5VTWxNakpwYldjbE5VTWxNaklwSlROQ0pUVkRiaVUxUTI0bE1qQWxNakFsTWpBbE1qQnBaaVV5TUNnbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdhVzFuSlRJd0pUSTJKVEkySlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HWmxZWFIxY21WR2JHRm5jeVUxUWlVMVF5VXlNbTFsWkdsaExYQmxjbVl0YkdGNmVTMXNiMkZrYVc1bkxXOXdkR2x0YVhOaGRHbHZiaVUxUXlVeU1pVTFSQ1V5TUNVeU5pVXlOaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpCdFpXUnBZVU52ZFc1MFUzTnlKVEl3SlROREpUSXdjR0Z5WVcxekxtMWhlRVZoWjJWeVRHOWhaRU52ZFc1MEpUVkRiaVV5TUNVeU1DVXlNQ1V5TUNrbE1qQWxOMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd2FXNWpjbVZ0Wlc1MFRXVmthV0ZEYjNWdWRGTlRVaWdwSlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeTVuWlhSQmRIUnlhV0oxZEdVb0pUVkRKVEl5Ykc5aFpHbHVaeVUxUXlVeU1pa2xNakFsTTBRbE0wUWxNMFFsTWpBbE5VTWxNakpzWVhwNUpUVkRKVEl5S1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJwYldjdWNtVnRiM1psUVhSMGNtbGlkWFJsS0NVMVF5VXlNbXh2WVdScGJtY2xOVU1sTWpJcEpUTkNKVFZEYmlVeU1DVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJqZFhKeVJHRjBZUzVzYjJGa2FXNW5KVEl3SlRORUpUSXdKVFZESlRJeUpUVkRKVEl5SlROQ0pUVkRiaVV5TUNVeU1DVXlNQ1V5TUNVM1JDVTFRMjRsTlVOdUpUSXdKVEl3SlRJd0pUSXdhV1lsTWpBb2FXMW5KVEl3SlRJMkpUSTJKVEl3WkdGMFlWVlNTU2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZeVV5TUNVelJDVXlNR1JoZEdGVlVra2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVGRFSlRWRGJpVXlNQ1V5TUNVeU1DVXlNR2xtSlRJd0tHbHRaeVV5TUNVeU5pVXlOaVV5TUhOeVkxTmxkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVcxbkxuTnlZM05sZENVeU1DVXpSQ1V5TUhOeVkxTmxkQ1V6UWlVMVEyNGxNakFsTWpBbE1qQWxNakFsTjBRbE5VTnVKVFZEYmlVeU1DVXlNQ1V5TUNVeU1HTjFjbkpFWVhSaExteHZZV1JRY205dGFYTmxKVEl3SlRORUpUSXdibVYzSlRJd1VISnZiV2x6WlNVelEzWnZhV1FsTTBVb1puVnVZM1JwYjI0bE1qQW9jbVZ6YjJ4MlpTVXlReVV5TUhKbGFtVmpkQ2tsTWpBbE4wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3YVdZbE1qQW9hVzFuS1NVeU1DVTNRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWtZbE1rWWxNakJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWxNakFsTkRCeVpYQnZKVEpHYVc1MFpYSnVZV3dsTWtaa2IyMHRaWFpsYm5SekpUSkdibTh0ZFc1ellXWmxMV1YyWlc1MExXeHBjM1JsYm1WeWN5VTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQnBiV2N1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWdsTlVNbE1qSnNiMkZrSlRWREpUSXlKVEpESlRJd1puVnVZM1JwYjI0bE1qQW9LU1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCeVpYTnZiSFpsS0hWdVpHVm1hVzVsWkNrbE0wSWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVGRFS1NVelFpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNa1lsTWtZbE1qQmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VbE1qQWxOREJ5WlhCdkpUSkdhVzUwWlhKdVlXd2xNa1prYjIwdFpYWmxiblJ6SlRKR2JtOHRkVzV6WVdabExXVjJaVzUwTFd4cGMzUmxibVZ5Y3lVMVEyNGxNakFsTWpBbE1qQWxNakFsTWpBbE1qQWxNakFsTWpCcGJXY3VZV1JrUlhabGJuUk1hWE4wWlc1bGNpZ2xOVU1sTWpKbGNuSnZjaVUxUXlVeU1pVXlReVV5TUdaMWJtTjBhVzl1SlRJd0tDa2xNakFsTjBJbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3Y21WcVpXTjBLRzVsZHlVeU1FVnljbTl5S0NVMVF5VXlNa1poYVd4bFpDVXlNSFJ2SlRJd2JHOWhaQ1V5TUdsdFlXZGxKVFZESlRJeUtTa2xNMElsTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd0pUSXdKVEl3SlRkRUtTVXpRaVUxUTI0bE1qQWxNakFsTWpBbE1qQWxNakFsTWpBbE4wUWxOVU51SlRJd0pUSXdKVEl3SlRJd0pUZEVLU1V6UWlVMVEyNGxOVU51SlRJd0pUSXdKVEl3SlRJd2JXVmthV0ZEWVhKa1UzTnlKVFZDYTJWNUpUVkVKVEl3SlRORUpUSXdhWE5RY21WMmFXOTFjMGx0WVdkbFRHRnlaMlZ5SlRJd0pUTkdKVEl3Y0hKbGRrUmhkR0VsTWpBbE0wRWxNakJqZFhKeVJHRjBZU1V6UWlVMVEyNGxNakFsTWpBbE4wUWxNakJsYkhObEpUSXdKVGRDSlRWRGJpVXlNQ1V5TUNVeU1DVXlNRzFsWkdsaFEyRnlaRk56Y2lVMVFtdGxlU1UxUkNVeU1DVXpSQ1V5TUNVM1FpVTFRMjRsTWpBbE1qQWxNakFsTWpBbE1qQWxNakJrWVhSaFZWSkpKVE5CSlRJd2NHRnlZVzFFWVhSaFZWSkpKVEpESlRWRGJpVXlNQ1V5TUNVeU1DVXlNQ1V5TUNVeU1HUnBiV1Z1YzJsdmJuTWxNa01sTlVOdUpUSXdKVEl3SlRJd0pUSXdKVEl3SlRJd1pYSnliM0lsTWtNbE5VTnVKVEl3SlRJd0pUSXdKVEl3SlRkRUpUTkNKVFZEYmlVeU1DVXlNQ1UzUkNVMVEyNGxOVU51SlRJd0pUSXdKVEpHSlRKR0pUSXdVbVZ0YjNabEpUSXdjMk55YVhCMEpUSXdkRzhsTWpCd2NtVjJaVzUwSlRJd2FIbGtjbUYwYVc5dUpUSXdiV2x6YldGMFkyZ2xOVU51SlRJd0pUSXdaRzlqZFcxbGJuUXVZM1Z5Y21WdWRGTmpjbWx3ZENVelJpNXlaVzF2ZG1Vb0tTVXpRaVUxUTI0bE5VTnVKVFZEZENVeVJpVXlSaVV5TUhSb2FYTWxNakJ5WlhCc1lXTmxKVEl3ZDJsc2JDVXlNR0psSlRJd2RYTmxaQ1V5TUdGekpUSXdZU1V5TUhCc1lXTmxhRzlzWkdWeUpUSXdabTl5SlRJd2RHaGxKVEl3YzNSeWFXNW5hV1pwWldRbE1qQndZWEpoYlhNbE1qQjBieVV5TUdKbEpUSXdhVzVxWldOMFpXUWxNakJwYm5SdkpUSXdkR2hsSlRJd2MyTnlhWEIwSlRWRGJpVTNSQ2tvSlRkQ0pUSXdjbVZ3YkdGalpTVXpRU1V5TUNVMVF5VXlNaVUxUXlVeU1pVXlNQ1UzUkNrbE0wSWxOVU51SlRJeUpUSkRKVEl5YVhORmJuUnllU1V5TWlVelFYUnlkV1VsTjBRbE5VUWxOVVFsTWtNbE1qSnZjSFJwYjI1ekpUSXlKVE5CSlRkQ0pUSXlaVzUwY21sbGN5VXlNaVV6UVNVMVFpVTFSQ1V5UXlVeU1tMXBibWxtZVNVeU1pVXpRWFJ5ZFdVbE1rTWxNakp6WTI5d1pVaHZhWE4wSlRJeUpUTkJkSEoxWlNVeVF5VXlNbk52ZFhKalpVMWhjSE1sTWpJbE0wRm1ZV3h6WlNVeVF5VXlNbkIxWW14cFkxVnliQ1V5TWlVelFTVXlNaVV5Umw5ZmNtVndiRjlrYVhOMEpUSXlKVEpESlRJeWRHRnlaMlYwVkhsd1pTVXlNaVV6UVNVeU1tSnliM2R6WlhKekpUSXlKVEpESlRJeWRHRnlaMlYwUlc1MkpUSXlKVE5CYm5Wc2JDVXlReVV5TW05MWRIQjFkRVp2Y20xaGRDVXlNaVV6UVc1MWJHd2xNa01sTWpKb2JYSWxNaklsTTBGbVlXeHpaU1V5UXlVeU1tMXZaR1VsTWpJbE0wRWxNakp3Y205a2RXTjBhVzl1SlRJeUpUSkRKVEl5Y21WdVpHVnlSM0poY0doekpUSXlKVE5CWm1Gc2MyVWxNa01sTWpKMmFXVjNVMjkxY21ObGJXRndjeVV5TWlVelFXWmhiSE5sSlRKREpUSXlaR1Z3Wlc1a1pXNWphV1Z6SlRJeUpUTkJKVFZDSlRWRUpUSkRKVEl5Ym5WdFYyOXlhMlZ5Y3lVeU1pVXpRVEFsTjBRbE1rTWxNakoxYzJWVVlXSnpKVEl5SlROQmRISjFaU1V5UXlVeU1tSnliM2R6WlhKRGIyeHNZWEJ6WldRbE1qSWxNMEVsTlVJbE5VUWxNa01sTWpKMmFXVjNjeVV5TWlVelFTVTFRaVV5TWlVeVJuTnlZeVV5Um1sdVpHVjRMblJ6SlRJeUpUVkVKVEpESlRJeVkzVnljbVZ1ZEZacFpYY2xNaklsTTBFd0pUZEUlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lNUN0Y29uc3QlMjBzY3JpcHQlMjAlM0QlMjBkb2N1bWVudC5jdXJyZW50U2NyaXB0JTNCJTVDbiU1Q3Rjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwKCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCUzRCUyMCh3aW5kb3clMjBhcyUyMGFueSkuX19NRURJQV9JTlRFUk5BTCUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwbWVkaWFDYXJkU3NyJTIwJTNEJTIwKGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ2FyZFNzciUyMCU3QyU3QyUyMCU3QiU3RCklM0IlNUNuJTVDdGNvbnN0JTIwJTdCJTIwa2V5JTJDJTIwZGF0YVVSSSUzQSUyMHBhcmFtRGF0YVVSSSUyQyUyMG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlMjBzcmNTZXQlM0ElMjBwYXJhbVNyY1NldCUyQyUyMGRpbWVuc2lvbnMlMkMlMjBlcnJvciUyQyUyMGZlYXR1cmVGbGFncyUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lNUNuJTVDdGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTVDdCU1Q3Rjb25zdCUyMHByZXZEYXRhJTIwJTNEJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTNCJTVDbiU1Q3QlNUN0Y29uc3QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0QlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGElMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEubW9kZSUyMCUzRCUzRCUzRCUyMHBhcmFtTW9kZSUyMCUyNiUyNiU1Q24lNUN0JTVDdCU1Q3RwcmV2RGF0YS5kaW1lbnNpb25zJTNGLndpZHRoJTIwJTI2JTI2JTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlM0Yud2lkdGglMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0cHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBzcmNTZXQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YS5zcmNTZXQlMjAlM0ElMjBwYXJhbVNyY1NldCUzQiU1Q24lNUN0JTVDdGNvbnN0JTIwZGF0YVVSSSUyMCUzRCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRiUyMHByZXZEYXRhLmRhdGFVUkklMjAlM0ElMjBwYXJhbURhdGFVUkklM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lNUN0JTVDdCU1Q3RkYXRhVVJJJTJDJTVDbiU1Q3QlNUN0JTVDdGRpbWVuc2lvbnMlMkMlNUNuJTVDdCU1Q3QlNUN0ZXJyb3IlMkMlNUNuJTVDdCU1Q3QlNUN0c3JjU2V0JTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiU1Q3QlNUN0JTVDdGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTVDdCU1Q3QlN0QlM0IlNUNuJTVDbiU1Q3QlNUN0Y29uc3QlMjBpbWclMjAlM0QlMjBzY3JpcHQlM0YucGFyZW50RWxlbWVudCUzRi5xdWVyeVNlbGVjdG9yKCU1QyUyMmltZyU1QyUyMiklM0IlNUNuJTVDbiU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyMCUzRCUyMGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlN0MlN0MlMjAwJTNCJTVDbiU1Q24lNUN0JTVDdGlmJTIwKGltZyklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0aWYlMjAoJTVDbiU1Q3QlNUN0JTVDdCU1Q3RmZWF0dXJlRmxhZ3MlNUIlNUMlMjJtZWRpYS1wZXJmLWxhenktbG9hZGluZy1vcHRpbWlzYXRpb24lNUMlMjIlNUQlMjAlMjYlMjYlNUNuJTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLm1lZGlhQ291bnRTc3IlMjAlM0MlMjBwYXJhbXMubWF4RWFnZXJMb2FkQ291bnQlNUNuJTVDdCU1Q3QlNUN0KSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0Z2xvYmFsTWVkaWEubWVkaWFDb3VudFNzciUyQiUyQiUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLnJlbW92ZUF0dHJpYnV0ZSglNUMlMjJsb2FkaW5nJTVDJTIyKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0Y3VyckRhdGEubG9hZGluZyUyMCUzRCUyMCU1QyUyMiU1QyUyMiUzQiU1Q24lNUNuJTVDdCU1Q3QlNUN0JTVDdGNvbnN0JTIwb2JzZXJ2ZXIlMjAlM0QlMjBuZXclMjBQZXJmb3JtYW5jZU9ic2VydmVyKChlbnRyaWVzKSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdGVudHJpZXMuZ2V0RW50cmllcygpLmZvckVhY2goKGVudHJ5KSUyMCUzRCUzRSUyMCU3QiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQuaW5jbHVkZXMoZW50cnkubmFtZSkpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3RnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlM0QlMjBnbG9iYWxNZWRpYS5wZXJmb3JtYW5jZUVudHJpZXMlMjAlN0MlN0MlMjAlNUIlNUQlM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdGdsb2JhbE1lZGlhLnBlcmZvcm1hbmNlRW50cmllcy5wdXNoKGVudHJ5KSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU1Q3QlNUN0b2JzZXJ2ZXIuZGlzY29ubmVjdCgpJTNCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdCU3RCklM0IlNUNuJTVDdCU1Q3QlNUN0JTVDdG9ic2VydmVyLm9ic2VydmUoJTdCJTIwdHlwZSUzQSUyMCdyZXNvdXJjZSclMjAlN0QpJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3QlNUN0aWYlMjAoZGF0YVVSSSklMjAlN0IlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5zcmMlMjAlM0QlMjBkYXRhVVJJJTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RpZiUyMChzcmNTZXQpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3RpbWcuc3Jjc2V0JTIwJTNEJTIwc3JjU2V0JTNCJTVDbiU1Q3QlNUN0JTVDdCU3RCU1Q24lNUN0JTVDdCU1Q3RjdXJyRGF0YS5sb2FkUHJvbWlzZSUyMCUzRCUyMG5ldyUyMFByb21pc2UlM0N2b2lkJTNFKGZ1bmN0aW9uJTIwKHJlc29sdmUlMkMlMjByZWplY3QpJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdCU1Q3QlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lNUN0JTVDdCU1Q3QlNUN0aW1nLmFkZEV2ZW50TGlzdGVuZXIoJTVDJTIybG9hZCU1QyUyMiUyQyUyMCgpJTIwJTNEJTNFJTIwcmVzb2x2ZSgpKSUzQiU1Q24lNUN0JTVDdCU1Q3QlNUN0JTJGJTJGJTIwZXNsaW50LWRpc2FibGUtbmV4dC1saW5lJTIwJTQwcmVwbyUyRmludGVybmFsJTJGZG9tLWV2ZW50cyUyRm5vLXVuc2FmZS1ldmVudC1saXN0ZW5lcnMlNUNuJTVDdCU1Q3QlNUN0JTVDdGltZy5hZGRFdmVudExpc3RlbmVyKCU1QyUyMmVycm9yJTVDJTIyJTJDJTIwKCklMjAlM0QlM0UlMjByZWplY3QobmV3JTIwRXJyb3IoJTVDJTIyRmFpbGVkJTIwdG8lMjBsb2FkJTIwaW1hZ2UlNUMlMjIpKSklM0IlNUNuJTVDdCU1Q3QlNUN0JTdEKSUzQiU1Q24lNUN0JTVDdCU3RCU1Q24lNUNuJTVDdCU1Q3RtZWRpYUNhcmRTc3IlNUJrZXklNUQlMjAlM0QlMjBpc1ByZXZpb3VzSW1hZ2VMYXJnZXIlMjAlM0YlMjBwcmV2RGF0YSUyMCUzQSUyMGN1cnJEYXRhJTNCJTVDbiU1Q3QlN0QlMjBlbHNlJTIwJTdCJTVDbiU1Q3QlNUN0bWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwJTdCJTVDbiU1Q3QlNUN0JTVDdGRhdGFVUkklM0ElMjBwYXJhbURhdGFVUkklMkMlNUNuJTVDdCU1Q3QlNUN0ZGltZW5zaW9ucyUyQyU1Q24lNUN0JTVDdCU1Q3RlcnJvciUyQyU1Q24lNUN0JTVDdCU3RCUzQiU1Q24lNUN0JTdEJTVDbiU1Q24lNUN0c2NyaXB0JTNGLnJlbW92ZSgpJTNCJTVDbiU1Q24lNUN0JTJGJTJGJTIwdGhpcyUyMHJlcGxhY2UlMjB3aWxsJTIwYmUlMjB1c2VkJTIwYXMlMjBhJTIwcGxhY2Vob2xkZXIlMjBmb3IlMjB0aGUlMjBzdHJpbmdpZmllZCUyMHBhcmFtcyUyMHRvJTIwYmUlMjBpbmplY3RlZCUyMGludG8lMjB0aGUlMjBzY3JpcHQlNUNuJTdEKSglN0IlMjByZXBsYWNlJTNBJTIwJTVDJTIyJTVDJTIyJTIwJTdEKSUzQiU1Q24lMjIlMkMlMjJpc0VudHJ5JTIyJTNBdHJ1ZSU3RCU1RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJlbnRyaWVzJTIyJTNBJTVCJTVEJTJDJTIybWluaWZ5JTIyJTNBdHJ1ZSUyQyUyMnNjb3BlSG9pc3QlMjIlM0F0cnVlJTJDJTIyc291cmNlTWFwcyUyMiUzQWZhbHNlJTJDJTIycHVibGljVXJsJTIyJTNBJTIyJTJGX19yZXBsX2Rpc3QlMjIlMkMlMjJ0YXJnZXRUeXBlJTIyJTNBJTIyYnJvd3NlcnMlMjIlMkMlMjJ0YXJnZXRFbnYlMjIlM0ElMjJzaW5jZSUyMDIwMTUlMjIlMkMlMjJvdXRwdXRGb3JtYXQlMjIlM0FudWxsJTJDJTIyaG1yJTIyJTNBZmFsc2UlMkMlMjJtb2RlJTIyJTNBJTIycHJvZHVjdGlvbiUyMiUyQyUyMnJlbmRlckdyYXBocyUyMiUzQWZhbHNlJTJDJTIydmlld1NvdXJjZW1hcHMlMjIlM0FmYWxzZSUyQyUyMmRlcGVuZGVuY2llcyUyMiUzQSU1QiU1RCUyQyUyMm51bVdvcmtlcnMlMjIlM0EwJTdEJTJDJTIydXNlVGFicyUyMiUzQXRydWUlMkMlMjJicm93c2VyQ29sbGFwc2VkJTIyJTNBJTVCJTVEJTJDJTIydmlld3MlMjIlM0ElNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiU1RCUyQyUyMmN1cnJlbnRWaWV3JTIyJTNBMCU3RA==
|
|
8
|
+
* Ensure the settings have: Minification on and
|
|
9
9
|
* 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
|
|
10
10
|
* 4. Run the tests and make sure they pass
|
|
11
11
|
* 5. TEST IN PRODUCTS BEFORE MERGING
|
|
12
12
|
*
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
function
|
|
16
|
-
var namespace = "__MEDIA_INTERNAL";
|
|
17
|
-
if (!window[namespace]) {
|
|
18
|
-
window[namespace] = {};
|
|
19
|
-
}
|
|
20
|
-
return window[namespace];
|
|
21
|
-
}
|
|
22
|
-
function getMediaCardSSR() {
|
|
23
|
-
var globalMedia = getMediaGlobalScope();
|
|
24
|
-
var key = "mediaCardSsr";
|
|
25
|
-
if (!globalMedia[key]) {
|
|
26
|
-
globalMedia[key] = {};
|
|
27
|
-
}
|
|
28
|
-
return globalMedia[key];
|
|
29
|
-
}
|
|
30
|
-
function getMediaCountSSR() {
|
|
31
|
-
var globalMedia = getMediaGlobalScope();
|
|
32
|
-
var key = "mediaCountSsr";
|
|
33
|
-
if (!globalMedia[key]) {
|
|
34
|
-
globalMedia[key] = 0;
|
|
35
|
-
}
|
|
36
|
-
return globalMedia[key];
|
|
37
|
-
}
|
|
38
|
-
function incrementMediaCountSSR() {
|
|
39
|
-
var globalMedia = getMediaGlobalScope();
|
|
40
|
-
var key = "mediaCountSsr";
|
|
41
|
-
if (!globalMedia[key]) {
|
|
42
|
-
globalMedia[key] = 0;
|
|
43
|
-
}
|
|
44
|
-
globalMedia[key]++;
|
|
45
|
-
}
|
|
46
|
-
(function (params, _document$currentScri) {
|
|
15
|
+
(function (params) {
|
|
47
16
|
var script = document.currentScript;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
var error = params.error;
|
|
58
|
-
var featureFlags = params.featureFlags;
|
|
17
|
+
var globalMedia = window.__MEDIA_INTERNAL = window.__MEDIA_INTERNAL || {};
|
|
18
|
+
var mediaCardSsr = globalMedia.mediaCardSsr = globalMedia.mediaCardSsr || {};
|
|
19
|
+
var key = params.key,
|
|
20
|
+
paramDataURI = params.dataURI,
|
|
21
|
+
paramMode = params.mode,
|
|
22
|
+
paramSrcSet = params.srcSet,
|
|
23
|
+
dimensions = params.dimensions,
|
|
24
|
+
error = params.error,
|
|
25
|
+
featureFlags = params.featureFlags;
|
|
59
26
|
if (featureFlags["media-perf-uplift-mutation-fix"]) {
|
|
27
|
+
var _prevData$dimensions, _script$parentElement;
|
|
60
28
|
var prevData = mediaCardSsr[key];
|
|
61
|
-
var isPreviousImageLarger = prevData && prevData.mode === paramMode &&
|
|
29
|
+
var isPreviousImageLarger = prevData && prevData.mode === paramMode && ((_prevData$dimensions = prevData.dimensions) === null || _prevData$dimensions === void 0 ? void 0 : _prevData$dimensions.width) && (dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) && prevData.dimensions.width > dimensions.width;
|
|
62
30
|
var srcSet = isPreviousImageLarger ? prevData.srcSet : paramSrcSet;
|
|
63
31
|
var dataURI = isPreviousImageLarger ? prevData.dataURI : paramDataURI;
|
|
64
32
|
var currData = {
|
|
@@ -70,32 +38,43 @@ function incrementMediaCountSSR() {
|
|
|
70
38
|
loadPromise: undefined,
|
|
71
39
|
mode: paramMode
|
|
72
40
|
};
|
|
73
|
-
var img = script
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (
|
|
41
|
+
var img = script === null || script === void 0 || (_script$parentElement = script.parentElement) === null || _script$parentElement === void 0 ? void 0 : _script$parentElement.querySelector("img");
|
|
42
|
+
globalMedia.mediaCountSsr = globalMedia.mediaCountSsr || 0;
|
|
43
|
+
if (img) {
|
|
44
|
+
if (featureFlags["media-perf-lazy-loading-optimisation"] && globalMedia.mediaCountSsr < params.maxEagerLoadCount) {
|
|
45
|
+
globalMedia.mediaCountSsr++;
|
|
77
46
|
img.removeAttribute("loading");
|
|
47
|
+
currData.loading = "";
|
|
48
|
+
var observer = new PerformanceObserver(function (entries) {
|
|
49
|
+
entries.getEntries().forEach(function (entry) {
|
|
50
|
+
if (srcSet.includes(entry.name)) {
|
|
51
|
+
globalMedia.performanceEntries = globalMedia.performanceEntries || [];
|
|
52
|
+
globalMedia.performanceEntries.push(entry);
|
|
53
|
+
observer.disconnect();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
observer.observe({
|
|
58
|
+
type: 'resource'
|
|
59
|
+
});
|
|
78
60
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
currData.loadPromise = new Promise(function (resolve, reject) {
|
|
88
|
-
if (img) {
|
|
61
|
+
if (dataURI) {
|
|
62
|
+
img.src = dataURI;
|
|
63
|
+
}
|
|
64
|
+
if (srcSet) {
|
|
65
|
+
img.srcset = srcSet;
|
|
66
|
+
}
|
|
67
|
+
currData.loadPromise = new Promise(function (resolve, reject) {
|
|
89
68
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
90
69
|
img.addEventListener("load", function () {
|
|
91
|
-
resolve(
|
|
70
|
+
return resolve();
|
|
92
71
|
});
|
|
93
72
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
94
73
|
img.addEventListener("error", function () {
|
|
95
|
-
reject(new Error("Failed to load image"));
|
|
74
|
+
return reject(new Error("Failed to load image"));
|
|
96
75
|
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
99
78
|
mediaCardSsr[key] = isPreviousImageLarger ? prevData : currData;
|
|
100
79
|
} else {
|
|
101
80
|
mediaCardSsr[key] = {
|
|
@@ -104,9 +83,7 @@ function incrementMediaCountSSR() {
|
|
|
104
83
|
error: error
|
|
105
84
|
};
|
|
106
85
|
}
|
|
107
|
-
|
|
108
|
-
// Remove script to prevent hydration mismatch
|
|
109
|
-
(_document$currentScri = document.currentScript) === null || _document$currentScri === void 0 || _document$currentScri.remove();
|
|
86
|
+
script === null || script === void 0 || script.remove();
|
|
110
87
|
|
|
111
88
|
// this replace will be used as a placeholder for the stringified params to be injected into the script
|
|
112
89
|
})({
|
|
@@ -108,12 +108,19 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
108
108
|
});
|
|
109
109
|
}
|
|
110
110
|
if (!(ssrData !== null && ssrData !== void 0 && ssrData.dataURI)) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
// Only attempt SSR preview generation if:
|
|
112
|
+
// 1. We're on the server (ssr='server'), OR
|
|
113
|
+
// 2. We're on the client AND there is SSR data (meaning SSR actually happened)
|
|
114
|
+
// If ssr='client' but there's no SSR data, it means this is a client-side navigation
|
|
115
|
+
// where no SSR occurred, so we should skip SSR preview generation entirely.
|
|
116
|
+
if (ssr === 'server' || ssrData) {
|
|
117
|
+
try {
|
|
118
|
+
return getSSRPreview(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
|
|
119
|
+
} catch (e) {
|
|
120
|
+
ssrReliabilityRef.current = _objectSpread(_objectSpread({}, ssrReliabilityRef.current), {}, _defineProperty({}, ssr, _objectSpread({
|
|
121
|
+
status: 'fail'
|
|
122
|
+
}, extractErrorInfo(e, traceContext))));
|
|
123
|
+
}
|
|
117
124
|
}
|
|
118
125
|
} else {
|
|
119
126
|
var _dimensions = ssrData.dimensions,
|
|
@@ -299,7 +306,7 @@ export var useFilePreview = function useFilePreview(_ref) {
|
|
|
299
306
|
client: createFailedSSRObject(failedPreview, traceContext)
|
|
300
307
|
});
|
|
301
308
|
}
|
|
302
|
-
var isSSR = isSSRDataPreview(failedPreview) ||
|
|
309
|
+
var isSSR = isSSRDataPreview(failedPreview) || isSSRClientPreview(failedPreview);
|
|
303
310
|
|
|
304
311
|
// If the preview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
|
|
305
312
|
if (isSSR) {
|
|
@@ -5,10 +5,12 @@ import { type MediaFilePreviewErrorInfo } from '../analytics';
|
|
|
5
5
|
import { type MediaCardSsr } from './types';
|
|
6
6
|
export declare const GLOBAL_MEDIA_CARD_SSR = "mediaCardSsr";
|
|
7
7
|
export declare const GLOBAL_MEDIA_COUNT_SSR = "mediaCountSsr";
|
|
8
|
+
export declare const GLOBAL_MEDIA_PERFORMANCE_ENTRIES = "performanceEntries";
|
|
8
9
|
export declare const GLOBAL_MEDIA_NAMESPACE = "__MEDIA_INTERNAL";
|
|
9
10
|
export type MediaGlobalScope = {
|
|
10
11
|
[GLOBAL_MEDIA_CARD_SSR]?: MediaCardSsr;
|
|
11
12
|
[GLOBAL_MEDIA_COUNT_SSR]?: number;
|
|
13
|
+
[GLOBAL_MEDIA_PERFORMANCE_ENTRIES]?: PerformanceEntry[];
|
|
12
14
|
};
|
|
13
15
|
type MediaFeatureFlags = {
|
|
14
16
|
'media-perf-uplift-mutation-fix'?: boolean;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** IMPORTANT: This is the original code for the script.
|
|
2
|
-
* Do not change the code without testing it in product first.
|
|
3
|
-
* Steps:
|
|
4
|
-
* 1. Make changes in this code
|
|
5
|
-
* 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
|
|
6
|
-
* - eg: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMHZpYSUyMGh0dHBzJTNBJTJGJTJGcmVwbC5wYXJjZWxqcy5vcmclMkYlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhR2xvYmFsU2NvcGUoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMG5hbWVzcGFjZSUyMCUzRCUyMCU1QyUyMl9fTUVESUFfSU5URVJOQUwlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoISh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlMjAlM0QlMjAlN0IlN0QlM0IlNUNuJTIwJTIwJTdEJTVDbiUyMCUyMHJldHVybiUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ2FyZFNTUigpJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwZ2xvYmFsTWVkaWElMjAlM0QlMjBnZXRNZWRpYUdsb2JhbFNjb3BlKCklM0IlNUNuJTIwJTIwY29uc3QlMjBrZXklMjAlM0QlMjAlNUMlMjJtZWRpYUNhcmRTc3IlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoIWdsb2JhbE1lZGlhJTVCa2V5JTVEKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBnbG9iYWxNZWRpYSU1QmtleSU1RCUyMCUzRCUyMCU3QiU3RCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGluY3JlbWVudE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlMkIlMkIlM0IlNUNuJTdEJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMHNjcmlwdCUyMCUzRCUyMGRvY3VtZW50LmN1cnJlbnRTY3JpcHQlM0IlNUNuJTVDbiUyMCUyMCUyRiUyRiUyMFN0b3JlJTIwdGhlJTIwZGF0YSU1Q24lMjAlMjBjb25zdCUyMG1lZGlhQ2FyZFNzciUyMCUzRCUyMGdldE1lZGlhQ2FyZFNTUigpJTNCJTVDbiUyMCUyMGNvbnN0JTIwbWVkaWFDb3VudFNzciUyMCUzRCUyMGdldE1lZGlhQ291bnRTU1IoKSUzQiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMGtleSUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lMjAlMjBjb25zdCUyMHBhcmFtRGF0YVVSSSUyMCUzRCUyMHBhcmFtcy5kYXRhVVJJJTNCJTVDbiUyMCUyMGNvbnN0JTIwcGFyYW1Nb2RlJTIwJTNEJTIwcGFyYW1zLm1vZGUlM0IlNUNuJTIwJTIwY29uc3QlMjBwYXJhbVNyY1NldCUyMCUzRCUyMHBhcmFtcy5zcmNTZXQlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBkaW1lbnNpb25zJTIwJTdEJTIwJTNEJTIwcGFyYW1zJTNCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwZXJyb3IlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBmZWF0dXJlRmxhZ3MlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTVDbiUyMCUyMGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBwcmV2RGF0YSUyMCUzRCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUzQiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YSUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YS5tb2RlJTIwJTNEJTNEJTNEJTIwcGFyYW1Nb2RlJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMHByZXZEYXRhLmRpbWVuc2lvbnMlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkaW1lbnNpb25zJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMud2lkdGglMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiUyMCUyMCUyMCUyMGNvbnN0JTIwc3JjU2V0JTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuc3JjU2V0JTIwJTNBJTIwcGFyYW1TcmNTZXQlM0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBkYXRhVVJJJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuZGF0YVVSSSUyMCUzQSUyMHBhcmFtRGF0YVVSSSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc3JjU2V0JTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGltZyUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBzY3JpcHQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvciglNUMlMjJpbWclNUMlMjIpJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBpZiUyMCglNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtbGF6eS1sb2FkaW5nLW9wdGltaXNhdGlvbiU1QyUyMiU1RCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBtZWRpYUNvdW50U3NyJTIwJTNDJTIwcGFyYW1zLm1heEVhZ2VyTG9hZENvdW50JTVDbiUyMCUyMCUyMCUyMCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW5jcmVtZW50TWVkaWFDb3VudFNTUigpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKGltZy5nZXRBdHRyaWJ1dGUoJTVDJTIybG9hZGluZyU1QyUyMiklMjAlM0QlM0QlM0QlMjAlNUMlMjJsYXp5JTVDJTIyKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcucmVtb3ZlQXR0cmlidXRlKCU1QyUyMmxvYWRpbmclNUMlMjIpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBjdXJyRGF0YS5sb2FkaW5nJTIwJTNEJTIwJTVDJTIyJTVDJTIyJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTIwJTIwaWYlMjAoaW1nJTIwJTI2JTI2JTIwZGF0YVVSSSklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyYyUyMCUzRCUyMGRhdGFVUkklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMGlmJTIwKGltZyUyMCUyNiUyNiUyMHNyY1NldCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyY3NldCUyMCUzRCUyMHNyY1NldCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTVDbiUyMCUyMCUyMCUyMGN1cnJEYXRhLmxvYWRQcm9taXNlJTIwJTNEJTIwbmV3JTIwUHJvbWlzZSUzQ3ZvaWQlM0UoZnVuY3Rpb24lMjAocmVzb2x2ZSUyQyUyMHJlamVjdCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjAoaW1nKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJsb2FkJTVDJTIyJTJDJTIwZnVuY3Rpb24lMjAoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXNvbHZlKHVuZGVmaW5lZCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJlcnJvciU1QyUyMiUyQyUyMGZ1bmN0aW9uJTIwKCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVqZWN0KG5ldyUyMEVycm9yKCU1QyUyMkZhaWxlZCUyMHRvJTIwbG9hZCUyMGltYWdlJTVDJTIyKSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGElMjAlM0ElMjBjdXJyRGF0YSUzQiU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTNBJTIwcGFyYW1EYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTJGJTJGJTIwUmVtb3ZlJTIwc2NyaXB0JTIwdG8lMjBwcmV2ZW50JTIwaHlkcmF0aW9uJTIwbWlzbWF0Y2glNUNuJTIwJTIwZG9jdW1lbnQuY3VycmVudFNjcmlwdCUzRi5yZW1vdmUoKSUzQiU1Q24lNUNuJTVDdCUyRiUyRiUyMHRoaXMlMjByZXBsYWNlJTIwd2lsbCUyMGJlJTIwdXNlZCUyMGFzJTIwYSUyMHBsYWNlaG9sZGVyJTIwZm9yJTIwdGhlJTIwc3RyaW5naWZpZWQlMjBwYXJhbXMlMjB0byUyMGJlJTIwaW5qZWN0ZWQlMjBpbnRvJTIwdGhlJTIwc2NyaXB0JTVDbiU3RCkoJTdCJTIwcmVwbGFjZSUzQSUyMCU1QyUyMiU1QyUyMiUyMCU3RCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlNUQlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZW50cmllcyUyMiUzQSU1QiU1RCUyQyUyMm1pbmlmeSUyMiUzQXRydWUlMkMlMjJzY29wZUhvaXN0JTIyJTNBdHJ1ZSUyQyUyMnNvdXJjZU1hcHMlMjIlM0FmYWxzZSUyQyUyMnB1YmxpY1VybCUyMiUzQSUyMiUyRl9fcmVwbF9kaXN0JTIyJTJDJTIydGFyZ2V0VHlwZSUyMiUzQSUyMmJyb3dzZXJzJTIyJTJDJTIydGFyZ2V0RW52JTIyJTNBbnVsbCUyQyUyMm91dHB1dEZvcm1hdCUyMiUzQW51bGwlMkMlMjJobXIlMjIlM0FmYWxzZSUyQyUyMm1vZGUlMjIlM0ElMjJwcm9kdWN0aW9uJTIyJTJDJTIycmVuZGVyR3JhcGhzJTIyJTNBZmFsc2UlMkMlMjJ2aWV3U291cmNlbWFwcyUyMiUzQWZhbHNlJTJDJTIyZGVwZW5kZW5jaWVzJTIyJTNBJTVCJTVEJTJDJTIybnVtV29ya2VycyUyMiUzQTAlN0QlMkMlMjJ1c2VUYWJzJTIyJTNBdHJ1ZSUyQyUyMmJyb3dzZXJDb2xsYXBzZWQlMjIlM0ElNUIlNUQlMkMlMjJ2aWV3cyUyMiUzQSU1QiUyMiUyRnNyYyUyRmluZGV4LnRzJTIyJTVEJTJDJTIyY3VycmVudFZpZXclMjIlM0EwJTdE
|
|
7
|
-
* 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
|
|
8
|
-
* 4. Run the tests and make sure they pass
|
|
9
|
-
* 5. TEST IN PRODUCTS BEFORE MERGING
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
declare function getMediaGlobalScope(): any;
|
|
13
|
-
declare function getMediaCardSSR(): any;
|
|
14
|
-
declare function getMediaCountSSR(): any;
|
|
15
|
-
declare function incrementMediaCountSSR(): void;
|
|
@@ -39,5 +39,5 @@ export declare const useFilePreview: ({ resizeMode, identifier, ssr, dimensions,
|
|
|
39
39
|
onImageError: (failedPreview?: MediaFilePreview) => void;
|
|
40
40
|
onImageLoad: (newPreview?: MediaFilePreview) => void;
|
|
41
41
|
getSsrScriptProps: (() => import("react").ScriptHTMLAttributes<HTMLScriptElement>) | undefined;
|
|
42
|
-
copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void;
|
|
42
|
+
copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES];
|
|
43
43
|
};
|
|
@@ -5,10 +5,12 @@ import { type MediaFilePreviewErrorInfo } from '../analytics';
|
|
|
5
5
|
import { type MediaCardSsr } from './types';
|
|
6
6
|
export declare const GLOBAL_MEDIA_CARD_SSR = "mediaCardSsr";
|
|
7
7
|
export declare const GLOBAL_MEDIA_COUNT_SSR = "mediaCountSsr";
|
|
8
|
+
export declare const GLOBAL_MEDIA_PERFORMANCE_ENTRIES = "performanceEntries";
|
|
8
9
|
export declare const GLOBAL_MEDIA_NAMESPACE = "__MEDIA_INTERNAL";
|
|
9
10
|
export type MediaGlobalScope = {
|
|
10
11
|
[GLOBAL_MEDIA_CARD_SSR]?: MediaCardSsr;
|
|
11
12
|
[GLOBAL_MEDIA_COUNT_SSR]?: number;
|
|
13
|
+
[GLOBAL_MEDIA_PERFORMANCE_ENTRIES]?: PerformanceEntry[];
|
|
12
14
|
};
|
|
13
15
|
type MediaFeatureFlags = {
|
|
14
16
|
'media-perf-uplift-mutation-fix'?: boolean;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** IMPORTANT: This is the original code for the script.
|
|
2
|
-
* Do not change the code without testing it in product first.
|
|
3
|
-
* Steps:
|
|
4
|
-
* 1. Make changes in this code
|
|
5
|
-
* 2. Manually minify the code via https://repl.parceljs.org/ (using typescript preset with minify option)
|
|
6
|
-
* - eg: https://repl.parceljs.org/#JTdCJTIyZmlsZXMlMjIlM0ElNUIlNUIlMjIlMkZzcmMlMkZpbmRleC50cyUyMiUyQyU3QiUyMnZhbHVlJTIyJTNBJTIyJTJGKiUyMGVzbGludC1kaXNhYmxlJTIwJTQwYXRsYXNraXQlMkZwbGF0Zm9ybSUyRm5vLWRpcmVjdC1kb2N1bWVudC11c2FnZSUyMColMkYlNUNuJTVDbiUyRioqJTIwSU1QT1JUQU5UJTNBJTIwVGhpcyUyMGlzJTIwdGhlJTIwb3JpZ2luYWwlMjBjb2RlJTIwZm9yJTIwdGhlJTIwc2NyaXB0LiU1Q24lMjAqJTIwRG8lMjBub3QlMjBjaGFuZ2UlMjB0aGUlMjBjb2RlJTIwd2l0aG91dCUyMHRlc3RpbmclMjBpdCUyMGluJTIwcHJvZHVjdCUyMGZpcnN0LiU1Q24lMjAqJTIwU3RlcHMlM0ElNUNuJTIwKiUyMDEuJTIwTWFrZSUyMGNoYW5nZXMlMjBpbiUyMHRoaXMlMjBjb2RlJTVDbiUyMColMjAyLiUyME1hbnVhbGx5JTIwbWluaWZ5JTIwdGhlJTIwY29kZSUyMHZpYSUyMGh0dHBzJTNBJTJGJTJGcmVwbC5wYXJjZWxqcy5vcmclMkYlNUNuJTIwKiUyMDMuJTIwQ29weSUyMHRoZSUyMG1pbmlmaWVkJTIwY29kZSUyMGludG8lMjBnbG9iYWxTY29wZS50c3glMjByZXBsYWNpbmclMjB0aGUlMjBleGlzdGluZyUyMHN0cmluZyUyMHdoZXJlJTIwaXQlMjBzYXlzJTIwUEFTVEUlMjBIRVJFJTVDbiUyMColMjA0LiUyMFJ1biUyMHRoZSUyMHRlc3RzJTIwYW5kJTIwbWFrZSUyMHN1cmUlMjB0aGV5JTIwcGFzcyU1Q24lMjAqJTIwNS4lMjBURVNUJTIwSU4lMjBQUk9EVUNUUyUyMEJFRk9SRSUyME1FUkdJTkclNUNuJTIwKiU1Q24lMjAqJTJGJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhR2xvYmFsU2NvcGUoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMG5hbWVzcGFjZSUyMCUzRCUyMCU1QyUyMl9fTUVESUFfSU5URVJOQUwlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoISh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlMjAlM0QlMjAlN0IlN0QlM0IlNUNuJTIwJTIwJTdEJTVDbiUyMCUyMHJldHVybiUyMCh3aW5kb3clMjBhcyUyMGFueSklNUJuYW1lc3BhY2UlNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ2FyZFNTUigpJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwZ2xvYmFsTWVkaWElMjAlM0QlMjBnZXRNZWRpYUdsb2JhbFNjb3BlKCklM0IlNUNuJTIwJTIwY29uc3QlMjBrZXklMjAlM0QlMjAlNUMlMjJtZWRpYUNhcmRTc3IlNUMlMjIlM0IlNUNuJTIwJTIwaWYlMjAoIWdsb2JhbE1lZGlhJTVCa2V5JTVEKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjBnbG9iYWxNZWRpYSU1QmtleSU1RCUyMCUzRCUyMCU3QiU3RCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGdldE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwcmV0dXJuJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlM0IlNUNuJTdEJTVDbiU1Q25mdW5jdGlvbiUyMGluY3JlbWVudE1lZGlhQ291bnRTU1IoKSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMGdsb2JhbE1lZGlhJTIwJTNEJTIwZ2V0TWVkaWFHbG9iYWxTY29wZSgpJTNCJTVDbiUyMCUyMGNvbnN0JTIwa2V5JTIwJTNEJTIwJTVDJTIybWVkaWFDb3VudFNzciU1QyUyMiUzQiU1Q24lMjAlMjBpZiUyMCghZ2xvYmFsTWVkaWElNUJrZXklNUQpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMGdsb2JhbE1lZGlhJTVCa2V5JTVEJTIwJTNEJTIwMCUzQiU1Q24lMjAlMjAlN0QlNUNuJTIwJTIwZ2xvYmFsTWVkaWElNUJrZXklNUQlMkIlMkIlM0IlNUNuJTdEJTVDbiU1Q24oZnVuY3Rpb24lMjAocGFyYW1zJTNBJTIwYW55KSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMHNjcmlwdCUyMCUzRCUyMGRvY3VtZW50LmN1cnJlbnRTY3JpcHQlM0IlNUNuJTVDbiUyMCUyMCUyRiUyRiUyMFN0b3JlJTIwdGhlJTIwZGF0YSU1Q24lMjAlMjBjb25zdCUyMG1lZGlhQ2FyZFNzciUyMCUzRCUyMGdldE1lZGlhQ2FyZFNTUigpJTNCJTVDbiUyMCUyMGNvbnN0JTIwbWVkaWFDb3VudFNzciUyMCUzRCUyMGdldE1lZGlhQ291bnRTU1IoKSUzQiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMGtleSUyMCU3RCUyMCUzRCUyMHBhcmFtcyUzQiU1Q24lMjAlMjBjb25zdCUyMHBhcmFtRGF0YVVSSSUyMCUzRCUyMHBhcmFtcy5kYXRhVVJJJTNCJTVDbiUyMCUyMGNvbnN0JTIwcGFyYW1Nb2RlJTIwJTNEJTIwcGFyYW1zLm1vZGUlM0IlNUNuJTIwJTIwY29uc3QlMjBwYXJhbVNyY1NldCUyMCUzRCUyMHBhcmFtcy5zcmNTZXQlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBkaW1lbnNpb25zJTIwJTdEJTIwJTNEJTIwcGFyYW1zJTNCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwZXJyb3IlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTIwJTIwY29uc3QlMjAlN0IlMjBmZWF0dXJlRmxhZ3MlMjAlN0QlMjAlM0QlMjBwYXJhbXMlM0IlNUNuJTVDbiUyMCUyMGlmJTIwKGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtdXBsaWZ0LW11dGF0aW9uLWZpeCU1QyUyMiU1RCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBwcmV2RGF0YSUyMCUzRCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUzQiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGlzUHJldmlvdXNJbWFnZUxhcmdlciUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YSUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBwcmV2RGF0YS5tb2RlJTIwJTNEJTNEJTNEJTIwcGFyYW1Nb2RlJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMHByZXZEYXRhLmRpbWVuc2lvbnMlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkaW1lbnNpb25zJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMud2lkdGglMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcHJldkRhdGEuZGltZW5zaW9ucy53aWR0aCUyMCUzRSUyMGRpbWVuc2lvbnMud2lkdGglM0IlNUNuJTVDbiUyMCUyMCUyMCUyMGNvbnN0JTIwc3JjU2V0JTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuc3JjU2V0JTIwJTNBJTIwcGFyYW1TcmNTZXQlM0IlNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBkYXRhVVJJJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGEuZGF0YVVSSSUyMCUzQSUyMHBhcmFtRGF0YVVSSSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwY29uc3QlMjBjdXJyRGF0YSUzQSUyMGFueSUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc3JjU2V0JTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRpbmclM0ElMjAlNUMlMjJsYXp5JTVDJTIyJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGxvYWRQcm9taXNlJTNBJTIwdW5kZWZpbmVkJTJDJTVDbiU1Q3QlNUN0JTVDdG1vZGUlM0ElMjBwYXJhbU1vZGUlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBjb25zdCUyMGltZyUyMCUzRCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBzY3JpcHQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQlMjAlMjYlMjYlNUNuJTIwJTIwJTIwJTIwJTIwJTIwc2NyaXB0LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvciglNUMlMjJpbWclNUMlMjIpJTNCJTVDbiU1Q24lMjAlMjAlMjAlMjBpZiUyMCglNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nJTIwJTI2JTI2JTVDbiUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVGbGFncyU1QiU1QyUyMm1lZGlhLXBlcmYtbGF6eS1sb2FkaW5nLW9wdGltaXNhdGlvbiU1QyUyMiU1RCUyMCUyNiUyNiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBtZWRpYUNvdW50U3NyJTIwJTNDJTIwcGFyYW1zLm1heEVhZ2VyTG9hZENvdW50JTVDbiUyMCUyMCUyMCUyMCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW5jcmVtZW50TWVkaWFDb3VudFNTUigpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwKGltZy5nZXRBdHRyaWJ1dGUoJTVDJTIybG9hZGluZyU1QyUyMiklMjAlM0QlM0QlM0QlMjAlNUMlMjJsYXp5JTVDJTIyKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcucmVtb3ZlQXR0cmlidXRlKCU1QyUyMmxvYWRpbmclNUMlMjIpJTNCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlMjAlMjAlMjAlMjBjdXJyRGF0YS5sb2FkaW5nJTIwJTNEJTIwJTVDJTIyJTVDJTIyJTNCJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTIwJTIwaWYlMjAoaW1nJTIwJTI2JTI2JTIwZGF0YVVSSSklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyYyUyMCUzRCUyMGRhdGFVUkklM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMGlmJTIwKGltZyUyMCUyNiUyNiUyMHNyY1NldCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaW1nLnNyY3NldCUyMCUzRCUyMHNyY1NldCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTVDbiUyMCUyMCUyMCUyMGN1cnJEYXRhLmxvYWRQcm9taXNlJTIwJTNEJTIwbmV3JTIwUHJvbWlzZSUzQ3ZvaWQlM0UoZnVuY3Rpb24lMjAocmVzb2x2ZSUyQyUyMHJlamVjdCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjAoaW1nKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJsb2FkJTVDJTIyJTJDJTIwZnVuY3Rpb24lMjAoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXNvbHZlKHVuZGVmaW5lZCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMkYlMjBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUlMjAlNDByZXBvJTJGaW50ZXJuYWwlMkZkb20tZXZlbnRzJTJGbm8tdW5zYWZlLWV2ZW50LWxpc3RlbmVycyU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbWcuYWRkRXZlbnRMaXN0ZW5lciglNUMlMjJlcnJvciU1QyUyMiUyQyUyMGZ1bmN0aW9uJTIwKCklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmVqZWN0KG5ldyUyMEVycm9yKCU1QyUyMkZhaWxlZCUyMHRvJTIwbG9hZCUyMGltYWdlJTVDJTIyKSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lNUNuJTIwJTIwJTIwJTIwbWVkaWFDYXJkU3NyJTVCa2V5JTVEJTIwJTNEJTIwaXNQcmV2aW91c0ltYWdlTGFyZ2VyJTIwJTNGJTIwcHJldkRhdGElMjAlM0ElMjBjdXJyRGF0YSUzQiU1Q24lMjAlMjAlN0QlMjBlbHNlJTIwJTdCJTVDbiUyMCUyMCUyMCUyMG1lZGlhQ2FyZFNzciU1QmtleSU1RCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBkYXRhVVJJJTNBJTIwcGFyYW1EYXRhVVJJJTJDJTVDbiUyMCUyMCUyMCUyMCUyMCUyMGRpbWVuc2lvbnMlMkMlNUNuJTIwJTIwJTIwJTIwJTIwJTIwZXJyb3IlMkMlNUNuJTIwJTIwJTIwJTIwJTdEJTNCJTVDbiUyMCUyMCU3RCU1Q24lNUNuJTIwJTIwJTJGJTJGJTIwUmVtb3ZlJTIwc2NyaXB0JTIwdG8lMjBwcmV2ZW50JTIwaHlkcmF0aW9uJTIwbWlzbWF0Y2glNUNuJTIwJTIwZG9jdW1lbnQuY3VycmVudFNjcmlwdCUzRi5yZW1vdmUoKSUzQiU1Q24lNUNuJTVDdCUyRiUyRiUyMHRoaXMlMjByZXBsYWNlJTIwd2lsbCUyMGJlJTIwdXNlZCUyMGFzJTIwYSUyMHBsYWNlaG9sZGVyJTIwZm9yJTIwdGhlJTIwc3RyaW5naWZpZWQlMjBwYXJhbXMlMjB0byUyMGJlJTIwaW5qZWN0ZWQlMjBpbnRvJTIwdGhlJTIwc2NyaXB0JTVDbiU3RCkoJTdCJTIwcmVwbGFjZSUzQSUyMCU1QyUyMiU1QyUyMiUyMCU3RCklM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlNUQlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZW50cmllcyUyMiUzQSU1QiU1RCUyQyUyMm1pbmlmeSUyMiUzQXRydWUlMkMlMjJzY29wZUhvaXN0JTIyJTNBdHJ1ZSUyQyUyMnNvdXJjZU1hcHMlMjIlM0FmYWxzZSUyQyUyMnB1YmxpY1VybCUyMiUzQSUyMiUyRl9fcmVwbF9kaXN0JTIyJTJDJTIydGFyZ2V0VHlwZSUyMiUzQSUyMmJyb3dzZXJzJTIyJTJDJTIydGFyZ2V0RW52JTIyJTNBbnVsbCUyQyUyMm91dHB1dEZvcm1hdCUyMiUzQW51bGwlMkMlMjJobXIlMjIlM0FmYWxzZSUyQyUyMm1vZGUlMjIlM0ElMjJwcm9kdWN0aW9uJTIyJTJDJTIycmVuZGVyR3JhcGhzJTIyJTNBZmFsc2UlMkMlMjJ2aWV3U291cmNlbWFwcyUyMiUzQWZhbHNlJTJDJTIyZGVwZW5kZW5jaWVzJTIyJTNBJTVCJTVEJTJDJTIybnVtV29ya2VycyUyMiUzQTAlN0QlMkMlMjJ1c2VUYWJzJTIyJTNBdHJ1ZSUyQyUyMmJyb3dzZXJDb2xsYXBzZWQlMjIlM0ElNUIlNUQlMkMlMjJ2aWV3cyUyMiUzQSU1QiUyMiUyRnNyYyUyRmluZGV4LnRzJTIyJTVEJTJDJTIyY3VycmVudFZpZXclMjIlM0EwJTdE
|
|
7
|
-
* 3. Copy the minified code into globalScope.tsx replacing the existing string where it says PASTE HERE
|
|
8
|
-
* 4. Run the tests and make sure they pass
|
|
9
|
-
* 5. TEST IN PRODUCTS BEFORE MERGING
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
declare function getMediaGlobalScope(): any;
|
|
13
|
-
declare function getMediaCardSSR(): any;
|
|
14
|
-
declare function getMediaCountSSR(): any;
|
|
15
|
-
declare function incrementMediaCountSSR(): void;
|
|
@@ -39,5 +39,5 @@ export declare const useFilePreview: ({ resizeMode, identifier, ssr, dimensions,
|
|
|
39
39
|
onImageError: (failedPreview?: MediaFilePreview) => void;
|
|
40
40
|
onImageLoad: (newPreview?: MediaFilePreview) => void;
|
|
41
41
|
getSsrScriptProps: (() => import("react").ScriptHTMLAttributes<HTMLScriptElement>) | undefined;
|
|
42
|
-
copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void;
|
|
42
|
+
copyNodeRef: (instance: HTMLDivElement | HTMLImageElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES];
|
|
43
43
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/media-file-preview",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.3",
|
|
4
4
|
"description": "A React Hook to fetch and render file previews. It's overloaded with fancy features like SSR, lazy loading, memory cache and local preview.",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
"sideEffects": false,
|
|
31
31
|
"atlaskit:src": "src/index.ts",
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@atlaskit/media-client": "^35.
|
|
33
|
+
"@atlaskit/media-client": "^35.7.0",
|
|
34
34
|
"@atlaskit/media-client-react": "^4.1.0",
|
|
35
35
|
"@atlaskit/media-common": "^12.3.0",
|
|
36
36
|
"@atlaskit/media-ui": "^28.7.0",
|
|
37
37
|
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
38
|
-
"@atlaskit/react-ufo": "^4.
|
|
38
|
+
"@atlaskit/react-ufo": "^4.17.0",
|
|
39
39
|
"@babel/runtime": "^7.0.0",
|
|
40
40
|
"eventemitter2": "^4.1.0",
|
|
41
41
|
"lru_map": "^0.4.1"
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@af/visual-regression": "workspace:^",
|
|
50
50
|
"@atlaskit/media-state": "^1.8.0",
|
|
51
51
|
"@atlaskit/media-test-data": "^3.2.0",
|
|
52
|
-
"@atlaskit/section-message": "^8.
|
|
52
|
+
"@atlaskit/section-message": "^8.12.0",
|
|
53
53
|
"@atlaskit/ssr": "workspace:^",
|
|
54
54
|
"@atlassian/feature-flags-test-utils": "^1.0.0",
|
|
55
55
|
"@testing-library/react": "^13.4.0",
|
|
@@ -99,9 +99,6 @@
|
|
|
99
99
|
"media-perf-uplift-mutation-fix": {
|
|
100
100
|
"type": "boolean"
|
|
101
101
|
},
|
|
102
|
-
"jfp-magma-fix-failed-ssr-preview-load": {
|
|
103
|
-
"type": "boolean"
|
|
104
|
-
},
|
|
105
102
|
"media-perf-lazy-loading-optimisation": {
|
|
106
103
|
"type": "boolean"
|
|
107
104
|
}
|