PageSourceSearch

https://www.mainfreight.com/track/Scripts/sal/SAL.Storage.js?v=1.1.2.91

js mainfreight.com collected 2026-10-02 02:45:21 UTC 13,799 bytes, 227 lines download raw bytes

1(function () {
2	var _storage = {};
3	var SETTINGS = {
4		keys: {	},
5		useFileStorage: false
6	};
7	var LZString = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", _f: String.fromCharCode, compressToBase64: function (e) { if (e == null) return ""; var t = ""; var n, r, i, s, o, u, a; var f = 0; e = LZString.compress(e); while (f < e.length * 2) { if (f % 2 == 0) { n = e.charCodeAt(f / 2) >> 8; r = e.charCodeAt(f / 2) & 255; if (f / 2 + 1 < e.length) i = e.charCodeAt(f / 2 + 1) >> 8; else i = NaN } else { n = e.charCodeAt((f - 1) / 2) & 255; if ((f + 1) / 2 < e.length) { r = e.charCodeAt((f + 1) / 2) >> 8; i = e.charCodeAt((f + 1) / 2) & 255 } else r = i = NaN } f += 3; s = n >> 2; o = (n & 3) << 4 | r >> 4; u = (r & 15) << 2 | i >> 6; a = i & 63; if (isNaN(r)) { u = a = 64 } else if (isNaN(i)) { a = 64 } t = t + LZString._keyStr.charAt(s) + LZString._keyStr.charAt(o) + LZString._keyStr.charAt(u) + LZString._keyStr.charAt(a) } return t }, decompressFromBase64: function (e) { if (e == null) return ""; var t = "", n = 0, r, i, s, o, u, a, f, l, c = 0, h = LZString._f; e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (c < e.length) { u = LZString._keyStr.indexOf(e.charAt(c++)); a = LZString._keyStr.indexOf(e.charAt(c++)); f = LZString._keyStr.indexOf(e.charAt(c++)); l = LZString._keyStr.indexOf(e.charAt(c++)); i = u << 2 | a >> 4; s = (a & 15) << 4 | f >> 2; o = (f & 3) << 6 | l; if (n % 2 == 0) { r = i << 8; if (f != 64) { t += h(r | s) } if (l != 64) { r = o << 8 } } else { t = t + h(r | i); if (f != 64) { r = s << 8 } if (l != 64) { t += h(r | o) } } n += 3 } return LZString.decompress(t) }, compressToUTF16: function (e) { if (e == null) return ""; var t = "", n, r, i, s = 0, o = LZString._f; e = LZString.compress(e); for (n = 0; n < e.length; n++) { r = e.charCodeAt(n); switch (s++) { case 0: t += o((r >> 1) + 32); i = (r & 1) << 14; break; case 1: t += o(i + (r >> 2) + 32); i = (r & 3) << 13; break; case 2: t += o(i + (r >> 3) + 32); i = (r & 7) << 12; break; case 3: t += o(i + (r >> 4) + 32); i = (r & 15) << 11; break; case 4: t += o(i + (r >> 5) + 32); i = (r & 31) << 10; break; case 5: t += o(i + (r >> 6) + 32); i = (r & 63) << 9; break; case 6: t += o(i + (r >> 7) + 32); i = (r & 127) << 8; break; case 7: t += o(i + (r >> 8) + 32); i = (r & 255) << 7; break; case 8: t += o(i + (r >> 9) + 32); i = (r & 511) << 6; break; case 9: t += o(i + (r >> 10) + 32); i = (r & 1023) << 5; break; case 10: t += o(i + (r >> 11) + 32); i = (r & 2047) << 4; break; case 11: t += o(i + (r >> 12) + 32); i = (r & 4095) << 3; break; case 12: t += o(i + (r >> 13) + 32); i = (r & 8191) << 2; break; case 13: t += o(i + (r >> 14) + 32); i = (r & 16383) << 1; break; case 14: t += o(i + (r >> 15) + 32, (r & 32767) + 32); s = 0; break } } return t + o(i + 32) }, decompressFromUTF16: function (e) { if (e == null) return ""; var t = "", n, r, i = 0, s = 0, o = LZString._f; while (s < e.length) { r = e.charCodeAt(s) - 32; switch (i++) { case 0: n = r << 1; break; case 1: t += o(n | r >> 14); n = (r & 16383) << 2; break; case 2: t += o(n | r >> 13); n = (r & 8191) << 3; break; case 3: t += o(n | r >> 12); n = (r & 4095) << 4; break; case 4: t += o(n | r >> 11); n = (r & 2047) << 5; break; case 5: t += o(n | r >> 10); n = (r & 1023) << 6; break; case 6: t += o(n | r >> 9); n = (r & 511) << 7; break; case 7: t += o(n | r >> 8); n = (r & 255) << 8; break; case 8: t += o(n | r >> 7); n = (r & 127) << 9; break; case 9: t += o(n | r >> 6); n = (r & 63) << 10; break; case 10: t += o(n | r >> 5); n = (r & 31) << 11; break; case 11: t += o(n | r >> 4); n = (r & 15) << 12; break; case 12: t += o(n | r >> 3); n = (r & 7) << 13; break; case 13: t += o(n | r >> 2); n = (r & 3) << 14; break; case 14: t += o(n | r >> 1); n = (r & 1) << 15; break; case 15: t += o(n | r); i = 0; break } s++ } return LZString.decompress(t) }, compress: function (e) { if (e == null) return ""; var t, n, r = {}, i = {}, s = "", o = "", u = "", a = 2, f = 3, l = 2, c = "", h = 0, p = 0, d, v = LZString._f; for (d = 0; d < e.length; d += 1) { s = e.charAt(d); if (!Object.prototype.hasOwnProperty.call(r, s)) { r[s] = f++; i[s] = true }
7 o = u + s; if (Object.prototype.hasOwnProperty.call(r, o)) { u = o } else { if (Object.prototype.hasOwnProperty.call(i, u)) { if (u.charCodeAt(0) < 256) { for (t = 0; t < l; t++) { h = h << 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } } n = u.charCodeAt(0); for (t = 0; t < 8; t++) { h = h << 1 | n & 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = n >> 1 } } else { n = 1; for (t = 0; t < l; t++) { h = h << 1 | n; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = 0 } n = u.charCodeAt(0); for (t = 0; t < 16; t++) { h = h << 1 | n & 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = n >> 1 } } a--; if (a == 0) { a = Math.pow(2, l); l++ } delete i[u] } else { n = r[u]; for (t = 0; t < l; t++) { h = h << 1 | n & 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = n >> 1 } } a--; if (a == 0) { a = Math.pow(2, l); l++ } r[o] = f++; u = String(s) } } if (u !== "") { if (Object.prototype.hasOwnProperty.call(i, u)) { if (u.charCodeAt(0) < 256) { for (t = 0; t < l; t++) { h = h << 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } } n = u.charCodeAt(0); for (t = 0; t < 8; t++) { h = h << 1 | n & 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = n >> 1 } } else { n = 1; for (t = 0; t < l; t++) { h = h << 1 | n; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = 0 } n = u.charCodeAt(0); for (t = 0; t < 16; t++) { h = h << 1 | n & 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = n >> 1 } } a--; if (a == 0) { a = Math.pow(2, l); l++ } delete i[u] } else { n = r[u]; for (t = 0; t < l; t++) { h = h << 1 | n & 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = n >> 1 } } a--; if (a == 0) { a = Math.pow(2, l); l++ } } n = 2; for (t = 0; t < l; t++) { h = h << 1 | n & 1; if (p == 15) { p = 0; c += v(h); h = 0 } else { p++ } n = n >> 1 } while (true) { h = h << 1; if (p == 15) { c += v(h); break } else p++ } return c }, decompress: function (e) { if (e == null) return ""; if (e == "") return null; var t = [], n, r = 4, i = 4, s = 3, o = "", u = "", a, f, l, c, h, p, d, v = LZString._f, m = { string: e, val: e.charCodeAt(0), position: 32768, index: 1 }; for (a = 0; a < 3; a += 1) { t[a] = a } l = 0; h = Math.pow(2, 2); p = 1; while (p != h) { c = m.val & m.position; m.position >>= 1; if (m.position == 0) { m.position = 32768; m.val = m.string.charCodeAt(m.index++) } l |= (c > 0 ? 1 : 0) * p; p <<= 1 } switch (n = l) { case 0: l = 0; h = Math.pow(2, 8); p = 1; while (p != h) { c = m.val & m.position; m.position >>= 1; if (m.position == 0) { m.position = 32768; m.val = m.string.charCodeAt(m.index++) } l |= (c > 0 ? 1 : 0) * p; p <<= 1 } d = v(l); break; case 1: l = 0; h = Math.pow(2, 16); p = 1; while (p != h) { c = m.val & m.position; m.position >>= 1; if (m.position == 0) { m.position = 32768; m.val = m.string.charCodeAt(m.index++) } l |= (c > 0 ? 1 : 0) * p; p <<= 1 } d = v(l); break; case 2: return "" } t[3] = d; f = u = d; while (true) { if (m.index > m.string.length) { return "" } l = 0; h = Math.pow(2, s); p = 1; while (p != h) { c = m.val & m.position; m.position >>= 1; if (m.position == 0) { m.position = 32768; m.val = m.string.charCodeAt(m.index++) } l |= (c > 0 ? 1 : 0) * p; p <<= 1 } switch (d = l) { case 0: l = 0; h = Math.pow(2, 8); p = 1; while (p != h) { c = m.val & m.position; m.position >>= 1; if (m.position == 0) { m.position = 32768; m.val = m.string.charCodeAt(m.index++) } l |= (c > 0 ? 1 : 0) * p; p <<= 1 } t[i++] = v(l); d = i - 1; r--; break; case 1: l = 0; h = Math.pow(2, 16); p = 1; while (p != h) { c = m.val & m.position; m.position >>= 1; if (m.position == 0) { m.position = 32768; m.val = m.string.charCodeAt(m.index++) } l |= (c > 0 ? 1 : 0) * p; p <<= 1 } t[i++] = v(l); d = i - 1; r--; break; case 2: return u } if (r == 0) { r = Math.pow(2, s); s++ } if (t[d]) { o = t[d] } else { if (d === i) { o = f + f.charAt(0) } else { return null } } u += o; t[i++] = f + o.charAt(0); r--; f = o; if (r == 0) { r = Math.pow(2, s); s++ } } } }; if (typeof module !== "undefined" && module != null) { module.exports = LZString }
8	var useFileStorage = null;
9	var fileSystem = null;
10	var data = {};
11	var writesInProgress = {};
12	var fileSuffix = ".json";
13	var exclude = {
14		"ga": true
15	};
16	var _hasInitialised = false;
17
18	//PRIVATE FUNCTIONS
19	function init(o, successFn) {
20		if (o) {
21			SETTINGS.keys = o.keys || SETTINGS.keys;
22			SETTINGS.useFileStorage = o.useFileStorage || SETTINGS.useFileStorage;
23		}
24
25		_storage.keys = SETTINGS.keys;
26		successFn = successFn ? successFn : function () { };
27
28		if (SETTINGS.useFileStorage) {
29			window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
30				_hasInitialised = true;
31				onRequestFileSystemSuccess(fs, successFn);
32			}, onRequestFileSystemFail);
33		} else {
34			_hasInitialised = true;
35			successFn();
36		}
37	}
38	function clear() {
39		data = {};
40	}
41	function retrieve(key, decompress) {
42		if (!key) {
43			return false;
44		}
45
46		if (!_hasInitialised) {
47			return false;
48		}
49
50		if (SETTINGS.useFileStorage) {
51			value = data[key];
52		} else {
53			value = localStorage[key];
54			value = value && decompress ? _data.decompress(value) : value;
55		}
56
57		if (value) {
58			try {
59				return JSON.parse(value);
60			} catch (e) {
61				return value;
62			}
63		}
64
65		return null;
66	}
67	function store(key, value, isJson, compress) {
68		if (!key || value === undefined || value === null) {
69			return false;
70		}
71
72		if (!_hasInitialised) {
73			return false;
74		}
75
76		if (isJson) {
77			value = JSON.stringify(value);
78		}
79
80		if (SETTINGS.useFileStorage) {
81			data[key] = value.toString();
82
83			if (writesInProgress[key]) {
84				writesInProgress[key].anotherWriteRequired = true;
85			} else if (!exclude[key]) { //IF THE KEY IS NOT IN THE EXCLUDE LIST IT WILL WRITE TO DISK
86				writeToDisk(key);
87			}
88		} else {
89			if (compress) {
90				value = _data.compress(value);
91			}
92
93			localStorage[key] = value;
94		}
95
96		return true;
97	}
98	function remove(key) {
99		if (!key) { return false; }
100
101		if (SETTINGS.useFileStorage) {
102			if (!fileSystem) { return false; }
103
104			delete data[key];
105
106			var success = function (fileEntry) {
107				fileEntry.remove(function () { }, function () { }); //TODO: BUILD CODE TO MAKE REMOVE REIABLE AND RETRY REMOVING IF THERE IS AN ERROR;
108			};
109
110			fileSystem.root.getFile(key + fileSuffix, { "create": true, "exclusive": false }, success, function (err) { onGetFileError(err, key); });
111		} else {
112			localStorage.removeItem(key);
113		}
114	}
115
116	//PRIVATE FILE STORAGE ONLY FUNCTIONS
117	function writeToDisk(key) {
118		if (!fileSystem) { return false; }
119
120		var success = function (fileEntry) {
121			fileEntry.createWriter(write, function (err) { onCreateWriterFail(err, key); });
122		};
123		var write = function (writer) {
124			writer.onwriteend = function (e) {
125				var anotherWriteRequired = (writesInProgress[key] && writesInProgress[key].anotherWriteRequired);
126
127				delete writesInProgress[key];
128
129				if (anotherWriteRequired) {
130					writeToDisk(key);
131				}
132			};
133			writer.write(data[key]);
134		};
135
136		writesInProgress[key] = {};
137		fileSystem.root.getFile(key + fileSuffix, { "create": true, "exclusive": false }, success, function (err) { onGetFileError(err, key); });
138	};
139	function onGetFileError(err, key) {
140		handleWriteFailure(key);
141	};
142	function onCreateWriterFail(err, key) {
143		handleWriteFailure(key);
144	};
145	function onRequestFileSystemSuccess(fs, onDataLoaded) {
146		fileSystem = fs;
147		loadDataToMemory(onDataLoaded);
148	};
149	function onRequestFileSystemFail(err) {
150		fileSystem = null;
151	};
152	function loadDataToMemory(onDataLoaded) {
153		if (!fileSystem) { return false; }
154
155		var dataKeys = SETTINGS.keys;
156		var dataKeysLength = Object.keys(dataKeys) ? Object.keys(dataKeys).length : 0;
157		var loadedCount = 0;
158		var loadedData = function () {
159			if (++loadedCount == dataKeysLength) {
160				onDataLoaded();
161			}
162		};
163
164		for (var key in dataKeys) {
165			(function (fileName) {
166				var success = function (fileEntry) {
167					fileEntry.file(read, onRetrieveFileError);
168				};
169				var read = function (file) {
170					var reader = new FileReader();
171
172					reader.onloadend = function (e) {
173						data[fileName] = e.target.result;
174						loadedData();
175					};
176					reader.readAsText(file);
177				};
178
179				fileSystem.root.getFile(fileName + fileSuffix, { "create": true, "exclusive": false }, success, function (err) { onGetFileError(err, fileName); });
180			})(SETTINGS.keys[key]);
181		}
182	};
183	function onRetrieveFileError(err) {
184	};
185	function handleWriteFailure(key) {
186		var fileObj = writesInProgress[key];
187
188		fileObj.failures = fileObj.failures ? fileObj.failures++ : 1;
189		fileObj.anotherWriteRequired = false;
190
191		if (fileObj.failures > 5) {
192			delete writesInProgress[key];
193		}
194	};
195
196	//PRIVATE LOCAL STORAGE ONLY FUNCTIONS
197	function compress(value) {
198		return LZString.compressToUTF16(value);
199	};
200	function decompress(value) {
201		return LZString.decompressFromUTF16(value);
202	};
203	function checkStorageConsumption() {
204		return (JSON.stringify(localStorage).length / 2048).toFixed(2) + " KBs";
205	};
206	function checkSizeOf(key, decompress) {
207		var value = localStorage[key];
208
209		if (!value) {
210			return "0 KBs";
211		}
212
213		value = decompress ? _data.decompress(value) : value;
214		return (value.length / 2048).toFixed(2) + " KBs";
215	};
216
217	//PUBLIC FUNCTIONS
218	_storage.init = init;
219	_storage.retrieve = retrieve;
220	_storage.store = store;
221	_storage.remove = remove;
222	_storage.clear = clear;
223
224	// CODE
225	window.SAL = window.SAL || {};
226	window.SAL.Storage = _storage;
227})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.