@kalamba/sdk 0.23.0 → 0.27.0
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/dist/index.cjs +1 -1
- package/dist/index.d.ts +21 -40
- package/dist/index.js +108 -197
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.d.ts +26 -10
- package/dist/plugins.js +872 -781
- package/dist/{v4-BfzDHJEo.js → v4-85TkMtXc.js} +19 -18
- package/dist/v4-Cj9BnqmU.cjs +5 -0
- package/dist/wrapper.cjs +1 -1
- package/dist/wrapper.d.ts +22 -5
- package/dist/wrapper.js +935 -930
- package/package.json +3 -4
- package/dist/v4-CoqWKwnX.cjs +0 -5
package/dist/plugins.js
CHANGED
|
@@ -2,33 +2,33 @@
|
|
|
2
2
|
* BSD 3-Clause License
|
|
3
3
|
* Copyright (c) 2025, Kalamba Games Limited
|
|
4
4
|
*/
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var ns = Object.defineProperty;
|
|
6
|
+
var bt = (i) => {
|
|
7
7
|
throw TypeError(i);
|
|
8
8
|
};
|
|
9
|
-
var
|
|
10
|
-
var b = (i, t, e) =>
|
|
11
|
-
var k = (i, t, e) => (
|
|
12
|
-
import { a as
|
|
13
|
-
import { d as
|
|
14
|
-
import { r as
|
|
9
|
+
var os = (i, t, e) => t in i ? ns(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
|
|
10
|
+
var b = (i, t, e) => os(i, typeof t != "symbol" ? t + "" : t, e), ft = (i, t, e) => t.has(i) || bt("Cannot " + e);
|
|
11
|
+
var k = (i, t, e) => (ft(i, t, "read from private field"), e ? e.call(i) : t.get(i)), M = (i, t, e) => t.has(i) ? bt("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(i) : t.set(i, e), v = (i, t, e, s) => (ft(i, t, "write to private field"), s ? s.call(i, e) : t.set(i, e), e);
|
|
12
|
+
import { a as se } from "./errors-NnLrKjTz.js";
|
|
13
|
+
import { d as yt, e as rs } from "./encoders-BDr7fjKQ.js";
|
|
14
|
+
import { r as cs, g as ds, v as ls } from "./v4-85TkMtXc.js";
|
|
15
15
|
function P(i, t) {
|
|
16
16
|
return (e, ...s) => {
|
|
17
17
|
console.log(`[%c${i}\x1B[m] %s`, t, e, ...s);
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
function
|
|
20
|
+
function $t(i, t) {
|
|
21
21
|
return Math.round(i * 100 / t);
|
|
22
22
|
}
|
|
23
|
-
class
|
|
23
|
+
class _ {
|
|
24
24
|
constructor(t, e) {
|
|
25
25
|
b(this, "config");
|
|
26
26
|
b(this, "sdkConfig");
|
|
27
27
|
this.config = t, this.sdkConfig = e;
|
|
28
28
|
}
|
|
29
29
|
on(t, e, s) {
|
|
30
|
-
const a = function(
|
|
31
|
-
|
|
30
|
+
const a = function(o) {
|
|
31
|
+
o.data.message !== `kalamba:wrapper-casino:${t}` && o.data.message !== `kalamba:wrapper:${t}` || e(o.data.payload);
|
|
32
32
|
};
|
|
33
33
|
window.addEventListener("message", a, s);
|
|
34
34
|
}
|
|
@@ -39,10 +39,10 @@ class B {
|
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
const
|
|
43
|
-
class
|
|
42
|
+
const us = P("BasicPlugin", "color:#000000;font-weight:bold;");
|
|
43
|
+
class Js extends _ {
|
|
44
44
|
constructor(...t) {
|
|
45
|
-
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(),
|
|
45
|
+
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), us("configured");
|
|
46
46
|
}
|
|
47
47
|
registerToSdkEvents() {
|
|
48
48
|
window.addEventListener("message", (t) => {
|
|
@@ -53,8 +53,8 @@ class Xs extends B {
|
|
|
53
53
|
this.send("settings", { music: s == null ? void 0 : s.musicEnabled, sounds: s == null ? void 0 : s.soundEnabled });
|
|
54
54
|
return;
|
|
55
55
|
case "doBalanceUpdate":
|
|
56
|
-
const { currency: a, coinValueInCents:
|
|
57
|
-
s.currency === a && typeof s.balanceInCurrency == "number" ? this.send("balance", { balance:
|
|
56
|
+
const { currency: a, coinValueInCents: c } = this.sdkConfig.api;
|
|
57
|
+
s.currency === a && typeof s.balanceInCurrency == "number" ? this.send("balance", { balance: $t(s.balanceInCurrency, c) }) : (s.balanceInCoins, this.send("balance", { balance: s.balanceInCoins }));
|
|
58
58
|
return;
|
|
59
59
|
case "doGamePause":
|
|
60
60
|
this.send("freeze");
|
|
@@ -89,8 +89,8 @@ class Xs extends B {
|
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
const
|
|
93
|
-
class
|
|
92
|
+
const C = P("▼ DebuggingPlugin IN ▼", "color:#444444;font-weight:bold;"), hs = P("▲ DebuggingPlugin OUT ▲", "color:#444444;font-weight:bold;");
|
|
93
|
+
class Ys extends _ {
|
|
94
94
|
constructor(...t) {
|
|
95
95
|
super(...t), this.registerDebugToSdkEvents(), this.registerSdkToDebugEvents();
|
|
96
96
|
}
|
|
@@ -111,20 +111,20 @@ class Js extends B {
|
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
registerSdkToDebugEvents() {
|
|
114
|
-
this.on("autoplay", (t) =>
|
|
114
|
+
this.on("autoplay", (t) => C("autoplay", t)), this.on("balance", (t) => C("balance", t)), this.on("bet", (t) => C("bet", t)), this.on("cashier", (t) => C("cashier", t)), this.on("choice", (t) => C("choice", t)), this.on("close", (t) => C("close", t)), this.on("error", (t) => C("error", t)), this.on("loadEnd", (t) => C("loadEnd", t)), this.on("loadProgress", (t) => C("loadProgress", t)), this.on("loadStart", (t) => C("loadStart", t)), this.on("playCycleStart", (t) => C("playCycleStart", t)), this.on("playCycleEnd", (t) => C("playCycleEnd", t)), this.on("playEnd", (t) => C("playEnd", t)), this.on("playError", (t) => C("playError", t)), this.on("playReady", (t) => C("playReady", t)), this.on("playStart", (t) => C("playStart", t)), this.on("settings", (t) => C("settings", t));
|
|
115
115
|
}
|
|
116
116
|
_send(...t) {
|
|
117
|
-
|
|
117
|
+
hs.apply(null, t), this.send.apply(this, t);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
const
|
|
121
|
-
class
|
|
120
|
+
const kt = P("GigPlugin", "color:#000000;font-weight:bold;");
|
|
121
|
+
class Zs extends _ {
|
|
122
122
|
constructor(...t) {
|
|
123
|
-
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(),
|
|
123
|
+
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), kt("configured");
|
|
124
124
|
}
|
|
125
125
|
postMessage(t) {
|
|
126
126
|
const e = { event: t };
|
|
127
|
-
|
|
127
|
+
kt("postMessage", e), window.top.postMessage(e, "*");
|
|
128
128
|
}
|
|
129
129
|
registerToSdkEvents() {
|
|
130
130
|
window.addEventListener("message", (t) => {
|
|
@@ -166,10 +166,10 @@ class Ys extends B {
|
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
const
|
|
170
|
-
class
|
|
169
|
+
const ps = P("OryxPlugin", "color:#000000;font-weight:bold;");
|
|
170
|
+
class ei extends _ {
|
|
171
171
|
constructor(...t) {
|
|
172
|
-
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(),
|
|
172
|
+
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), ps("configured");
|
|
173
173
|
}
|
|
174
174
|
registerToSdkEvents() {
|
|
175
175
|
window.addEventListener("message", (t) => {
|
|
@@ -221,54 +221,54 @@ class Zs extends B {
|
|
|
221
221
|
});
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
-
const
|
|
225
|
-
function
|
|
224
|
+
const je = P("PariplayPlugin", "color:#000000;font-weight:bold;");
|
|
225
|
+
function $e(i) {
|
|
226
226
|
try {
|
|
227
227
|
window.top.location = i;
|
|
228
228
|
} catch {
|
|
229
229
|
window.location = i;
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
|
-
function
|
|
232
|
+
function Ke(i, t) {
|
|
233
233
|
return new Promise(function(s, a) {
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
},
|
|
234
|
+
const c = new XMLHttpRequest();
|
|
235
|
+
c.onload = function() {
|
|
236
|
+
c.status >= 200 && c.status < 300 ? s(c.responseText) : a(c.responseText);
|
|
237
|
+
}, c.open(i, t), c.send();
|
|
238
238
|
});
|
|
239
239
|
}
|
|
240
|
-
function
|
|
240
|
+
function Qe() {
|
|
241
241
|
}
|
|
242
242
|
function gs(i) {
|
|
243
243
|
return i.filter(function(e) {
|
|
244
244
|
return e.messageType.toUpperCase() === "DATA";
|
|
245
245
|
});
|
|
246
246
|
}
|
|
247
|
-
function
|
|
247
|
+
function Xe(i) {
|
|
248
248
|
return i.filter(function(e) {
|
|
249
249
|
return ["NOTIFICATION", "POPUP"].includes(e.messageType.toUpperCase());
|
|
250
250
|
});
|
|
251
251
|
}
|
|
252
|
-
function
|
|
252
|
+
function Kt(i) {
|
|
253
253
|
try {
|
|
254
254
|
return JSON.parse(i.text);
|
|
255
255
|
} catch {
|
|
256
256
|
return {};
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
|
-
function
|
|
260
|
-
return i.map(
|
|
259
|
+
function ws(i) {
|
|
260
|
+
return i.map(Kt).filter(Boolean).find(function(e) {
|
|
261
261
|
return e.betId != null && e.winId != null;
|
|
262
262
|
}) || {};
|
|
263
263
|
}
|
|
264
|
-
function
|
|
265
|
-
return i.map(
|
|
264
|
+
function ms(i) {
|
|
265
|
+
return i.map(Kt).filter(Boolean).find(function(e) {
|
|
266
266
|
return e.TotalBet != null && e.TotalWin != null;
|
|
267
267
|
}) || {};
|
|
268
268
|
}
|
|
269
|
-
class
|
|
269
|
+
class ti extends _ {
|
|
270
270
|
constructor(...t) {
|
|
271
|
-
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(),
|
|
271
|
+
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), je("configured");
|
|
272
272
|
}
|
|
273
273
|
postMessage(t, e) {
|
|
274
274
|
const s = {
|
|
@@ -276,26 +276,26 @@ class ei extends B {
|
|
|
276
276
|
sender: this.sdkConfig.api.game,
|
|
277
277
|
type: t
|
|
278
278
|
};
|
|
279
|
-
e != null && (s.data = e),
|
|
279
|
+
e != null && (s.data = e), je("postMessage", s), window.parent.postMessage(s, "*");
|
|
280
280
|
}
|
|
281
281
|
coinsToCurrency(t) {
|
|
282
282
|
return t * this.sdkConfig.api.coinValueInCents / 100;
|
|
283
283
|
}
|
|
284
284
|
handleContinueButton(t, e) {
|
|
285
|
-
t.link &&
|
|
285
|
+
t.link && Ke("GET", t.link), e();
|
|
286
286
|
}
|
|
287
287
|
handleLinkButton(t, e) {
|
|
288
288
|
switch (t.linkType.toUpperCase()) {
|
|
289
289
|
case "AJAX":
|
|
290
|
-
|
|
290
|
+
Ke("GET", t.link), e();
|
|
291
291
|
return;
|
|
292
292
|
case "AJAXRESPONSE":
|
|
293
|
-
|
|
293
|
+
Ke("GET", t.link).then(() => {
|
|
294
294
|
e();
|
|
295
295
|
});
|
|
296
296
|
return;
|
|
297
297
|
case "REDIRECT":
|
|
298
|
-
|
|
298
|
+
$e(t.link), e();
|
|
299
299
|
return;
|
|
300
300
|
}
|
|
301
301
|
}
|
|
@@ -319,17 +319,17 @@ class ei extends B {
|
|
|
319
319
|
}
|
|
320
320
|
processInfoUiMessages(t) {
|
|
321
321
|
return t.reduce((e, s) => e.then(() => new Promise((a) => {
|
|
322
|
-
const
|
|
323
|
-
buttons: s.buttons.filter((
|
|
322
|
+
const c = Object.assign({}, s, {
|
|
323
|
+
buttons: s.buttons.filter((o) => o.action.toUpperCase() === "CASHIER" ? !!this.sdkConfig.api.cashierUrl : !0).map((o) => Object.assign({}, o, {
|
|
324
324
|
onRelease: () => {
|
|
325
|
-
const
|
|
326
|
-
h ? h(
|
|
325
|
+
const p = s.messageType.toUpperCase() === "POPUP" ? Qe : a, h = this.buttonActions[o.action.toUpperCase()];
|
|
326
|
+
h ? h(o, p) : p();
|
|
327
327
|
}
|
|
328
328
|
}))
|
|
329
329
|
});
|
|
330
|
-
|
|
331
|
-
}).catch(
|
|
332
|
-
}).catch(
|
|
330
|
+
je("showMessage", c);
|
|
331
|
+
}).catch(Qe)), Promise.resolve()).then(() => {
|
|
332
|
+
}).catch(Qe);
|
|
333
333
|
}
|
|
334
334
|
registerToSdkEvents() {
|
|
335
335
|
window.addEventListener("message", (t) => {
|
|
@@ -361,12 +361,12 @@ class ei extends B {
|
|
|
361
361
|
try {
|
|
362
362
|
const a = JSON.parse(
|
|
363
363
|
JSON.parse(atob(this.sdkConfig.api.integrationData.token.split(".")[1])).token
|
|
364
|
-
),
|
|
364
|
+
), c = JSON.parse(a.integrationSpecificAttributes.sessionData || "{}");
|
|
365
365
|
s = {
|
|
366
366
|
ClientToken: a.integrationSpecificAttributes.clientToken,
|
|
367
367
|
CurrencyCode: a.currency,
|
|
368
368
|
PlayerTokenId: a.user,
|
|
369
|
-
SessionData:
|
|
369
|
+
SessionData: c
|
|
370
370
|
};
|
|
371
371
|
} catch {
|
|
372
372
|
s = void 0;
|
|
@@ -376,7 +376,7 @@ class ei extends B {
|
|
|
376
376
|
success: !0
|
|
377
377
|
});
|
|
378
378
|
try {
|
|
379
|
-
const a =
|
|
379
|
+
const a = Xe(e.contract.uiMessages);
|
|
380
380
|
this.processInfoUiMessages(a);
|
|
381
381
|
} catch {
|
|
382
382
|
}
|
|
@@ -392,14 +392,14 @@ class ei extends B {
|
|
|
392
392
|
} catch {
|
|
393
393
|
window.history.back();
|
|
394
394
|
}
|
|
395
|
-
else this.sdkConfig.api.homeUrl === "(api)" ? this.postMessage("quit") :
|
|
395
|
+
else this.sdkConfig.api.homeUrl === "(api)" ? this.postMessage("quit") : $e(this.sdkConfig.api.homeUrl);
|
|
396
396
|
}), this.on("playEnd", (e) => {
|
|
397
397
|
this.postMessage("roundEnded", {
|
|
398
398
|
balanceAfter: this.coinsToCurrency(e.contract.balance.coins),
|
|
399
399
|
win: this.coinsToCurrency(e.contract.win.round)
|
|
400
400
|
});
|
|
401
401
|
try {
|
|
402
|
-
const s =
|
|
402
|
+
const s = Xe(e.contract.uiMessages);
|
|
403
403
|
this.processInfoUiMessages(s);
|
|
404
404
|
} catch {
|
|
405
405
|
}
|
|
@@ -418,14 +418,14 @@ class ei extends B {
|
|
|
418
418
|
e.contract.balance.coins + e.contract.bet.lastPaid.base * e.contract.bet.lastPaid.multiplier
|
|
419
419
|
)
|
|
420
420
|
});
|
|
421
|
-
const s = ["BaseGame", "PaidSpin"].includes(e.contract.stateType.thisRound), a = gs(e.contract.uiMessages),
|
|
421
|
+
const s = ["BaseGame", "PaidSpin"].includes(e.contract.stateType.thisRound), a = gs(e.contract.uiMessages), c = Xe(e.contract.uiMessages), o = ws(a), p = ms(a);
|
|
422
422
|
this.postMessage("ticketReceived", {
|
|
423
423
|
Balance: this.coinsToCurrency(e.contract.balance.coins),
|
|
424
424
|
BetAmount: s ? this.coinsToCurrency(e.contract.bet.lastPaid.base * e.contract.bet.lastPaid.multiplier) : 0,
|
|
425
|
-
CreditTransactionId:
|
|
426
|
-
DebitTransactionId:
|
|
427
|
-
Message:
|
|
428
|
-
SessionData:
|
|
425
|
+
CreditTransactionId: o.betId,
|
|
426
|
+
DebitTransactionId: o.winId,
|
|
427
|
+
Message: c,
|
|
428
|
+
SessionData: p,
|
|
429
429
|
Status: {
|
|
430
430
|
ErrCode: 0
|
|
431
431
|
},
|
|
@@ -440,18 +440,18 @@ class ei extends B {
|
|
|
440
440
|
}), this.on("loadStart", () => {
|
|
441
441
|
this.postMessage("onAppFrameReady");
|
|
442
442
|
}), this.on("cashier", () => {
|
|
443
|
-
this.sdkConfig.api.cashierUrl && (this.sdkConfig.api.cashierUrl === "(api)" ? this.postMessage("cashier") :
|
|
443
|
+
this.sdkConfig.api.cashierUrl && (this.sdkConfig.api.cashierUrl === "(api)" ? this.postMessage("cashier") : $e(this.sdkConfig.api.cashierUrl));
|
|
444
444
|
});
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
|
-
const
|
|
448
|
-
class
|
|
447
|
+
const be = P("RelaxFEIMPlugin", "color:#000000;font-weight:bold;");
|
|
448
|
+
class si extends _ {
|
|
449
449
|
constructor(...e) {
|
|
450
450
|
super(...e);
|
|
451
451
|
b(this, "VERSION", "1.17.0");
|
|
452
452
|
const s = document.createElement("script");
|
|
453
453
|
s.src = `https://d3nsdzdtjbr5ml.cloudfront.net/casino/relaxlibs/feim/${this.VERSION}/rlxfeim.min.js`, s.onload = () => {
|
|
454
|
-
|
|
454
|
+
be("loaded"), window.FEIM.configure({
|
|
455
455
|
p2pConfig: {
|
|
456
456
|
currency: this.sdkConfig.api.currency,
|
|
457
457
|
launchParams: {
|
|
@@ -459,11 +459,11 @@ class ti extends B {
|
|
|
459
459
|
homeurl: "homeUrl"
|
|
460
460
|
}
|
|
461
461
|
}
|
|
462
|
-
}),
|
|
462
|
+
}), be("configured"), this.registerToSdkEvents(), this.registerFromSdkEvents();
|
|
463
463
|
}, document.body.appendChild(s);
|
|
464
464
|
}
|
|
465
465
|
registerToSdkEvents() {
|
|
466
|
-
window.FEIM.on.errorMessageDismissed(() => this.send("unfreeze")), window.FEIM.on.errorMessageDisplayed(() => this.send("freeze")), window.FEIM.on.exitingGame(() =>
|
|
466
|
+
window.FEIM.on.errorMessageDismissed(() => this.send("unfreeze")), window.FEIM.on.errorMessageDisplayed(() => this.send("freeze")), window.FEIM.on.exitingGame(() => be("!!! NOT IMPLEMENTED: exitingGame !!!")), window.FEIM.on.freeze(() => this.send("freeze")), window.FEIM.on.initialized(() => be("!!! NOT IMPLEMENTED: initialized !!!")), window.FEIM.on.pauseAutoPlay(() => this.send("suspend")), window.FEIM.on.refreshBalance(() => be("!!! NOT IMPLEMENTED: refreshBalance !!!")), window.FEIM.on.toggleGameHelp(() => {
|
|
467
467
|
this.send("help");
|
|
468
468
|
}), window.FEIM.on.togglePaytable(() => {
|
|
469
469
|
this.send("paytable");
|
|
@@ -520,20 +520,20 @@ class ti extends B {
|
|
|
520
520
|
});
|
|
521
521
|
}
|
|
522
522
|
}
|
|
523
|
-
const
|
|
524
|
-
class
|
|
523
|
+
const Je = P("TukoPlugin", "color:#000000;font-weight:bold;");
|
|
524
|
+
class ii extends _ {
|
|
525
525
|
constructor(...e) {
|
|
526
526
|
super(...e);
|
|
527
527
|
b(this, "PING_INTERVAL", 1e4);
|
|
528
528
|
const a = new URLSearchParams(window.location.search).get("pingCallbackUrl");
|
|
529
529
|
a && window.setInterval(() => {
|
|
530
530
|
this.ping(a);
|
|
531
|
-
}, this.PING_INTERVAL), this.registerToSdkEvents(), this.registerFromSdkEvents(),
|
|
531
|
+
}, this.PING_INTERVAL), this.registerToSdkEvents(), this.registerFromSdkEvents(), Je("configured");
|
|
532
532
|
}
|
|
533
533
|
ping(e) {
|
|
534
534
|
const s = new XMLHttpRequest();
|
|
535
535
|
s.onreadystatechange = function() {
|
|
536
|
-
s.readyState === XMLHttpRequest.DONE && (s.status === 0 || s.status >= 200 && s.status < 400 ?
|
|
536
|
+
s.readyState === XMLHttpRequest.DONE && (s.status === 0 || s.status >= 200 && s.status < 400 ? Je("ping ok", s) : Je("ping error", s));
|
|
537
537
|
}, s.open("GET", e), s.send();
|
|
538
538
|
}
|
|
539
539
|
registerToSdkEvents() {
|
|
@@ -545,8 +545,8 @@ class si extends B {
|
|
|
545
545
|
this.send("settings", { music: a == null ? void 0 : a.musicEnabled, sounds: a == null ? void 0 : a.soundEnabled });
|
|
546
546
|
return;
|
|
547
547
|
case "doBalanceUpdate":
|
|
548
|
-
const { currency:
|
|
549
|
-
a.currency ===
|
|
548
|
+
const { currency: c, coinValueInCents: o } = this.sdkConfig.api;
|
|
549
|
+
a.currency === c && typeof a.balanceInCurrency == "number" ? this.send("balance", { balance: $t(a.balanceInCurrency, o) }) : (a.balanceInCoins, this.send("balance", { balance: a.balanceInCoins }));
|
|
550
550
|
return;
|
|
551
551
|
case "doGamePause":
|
|
552
552
|
this.send("freeze");
|
|
@@ -581,14 +581,14 @@ class si extends B {
|
|
|
581
581
|
});
|
|
582
582
|
}
|
|
583
583
|
}
|
|
584
|
-
const
|
|
585
|
-
class
|
|
584
|
+
const vt = P("QuantaPlugin", "color:#000000;font-weight:bold;");
|
|
585
|
+
class ai extends _ {
|
|
586
586
|
constructor(...t) {
|
|
587
|
-
super(...t), this.registerFromSdkEvents(),
|
|
587
|
+
super(...t), this.registerFromSdkEvents(), vt("configured");
|
|
588
588
|
}
|
|
589
589
|
postMessage(t) {
|
|
590
590
|
const e = { event: t };
|
|
591
|
-
|
|
591
|
+
vt("postMessage", e), window.parent.postMessage(e, "*");
|
|
592
592
|
}
|
|
593
593
|
registerFromSdkEvents() {
|
|
594
594
|
this.on("close", () => {
|
|
@@ -604,14 +604,14 @@ class ii extends B {
|
|
|
604
604
|
});
|
|
605
605
|
}
|
|
606
606
|
}
|
|
607
|
-
const
|
|
608
|
-
class
|
|
607
|
+
const Et = P("SoftSwissPlugin", "color:#000000;font-weight:bold;");
|
|
608
|
+
class ni extends _ {
|
|
609
609
|
constructor(...t) {
|
|
610
|
-
super(...t), this.registerFromSdkEvents(),
|
|
610
|
+
super(...t), this.registerFromSdkEvents(), Et("configured");
|
|
611
611
|
}
|
|
612
612
|
postMessage(t, e) {
|
|
613
613
|
const s = { event: t, payload: e };
|
|
614
|
-
|
|
614
|
+
Et("postMessage", s), window.top.postMessage(s, "*");
|
|
615
615
|
}
|
|
616
616
|
registerFromSdkEvents() {
|
|
617
617
|
this.on("loadStart", () => {
|
|
@@ -633,14 +633,14 @@ class ai extends B {
|
|
|
633
633
|
});
|
|
634
634
|
}
|
|
635
635
|
}
|
|
636
|
-
const
|
|
637
|
-
class
|
|
636
|
+
const Ct = P("EveryMatrixPlugin", "color:#000000;font-weight:bold;");
|
|
637
|
+
class oi extends _ {
|
|
638
638
|
constructor(...t) {
|
|
639
|
-
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(),
|
|
639
|
+
super(...t), this.registerToSdkEvents(), this.registerFromSdkEvents(), Ct("configured");
|
|
640
640
|
}
|
|
641
641
|
postMessage(t, e) {
|
|
642
642
|
const s = { name: t, sender: "game", data: e };
|
|
643
|
-
|
|
643
|
+
Ct("postMessage", s), window.top.postMessage(s, "*");
|
|
644
644
|
}
|
|
645
645
|
registerToSdkEvents() {
|
|
646
646
|
window.addEventListener("message", (t) => {
|
|
@@ -692,92 +692,93 @@ class ni extends B {
|
|
|
692
692
|
});
|
|
693
693
|
}
|
|
694
694
|
}
|
|
695
|
-
var
|
|
695
|
+
var bs = "2.0.5", lt = 500, Mt = "user-agent", he = "", St = "?", Fe = "function", W = "undefined", pe = "object", ut = "string", S = "browser", D = "cpu", R = "device", O = "engine", x = "os", ie = "result", l = "name", n = "type", d = "vendor", u = "version", I = "architecture", Ie = "major", r = "model", Me = "console", m = "mobile", f = "tablet", y = "smarttv", U = "wearable", Oe = "xr", Se = "embedded", Z = "inapp", gt = "brands", J = "formFactors", wt = "fullVersionList", ae = "platform", mt = "platformVersion", qe = "bitness", $ = "sec-ch-ua", fs = $ + "-full-version-list", ys = $ + "-arch", ks = $ + "-" + qe, vs = $ + "-form-factors", Es = $ + "-" + m, Cs = $ + "-" + r, Qt = $ + "-" + ae, Ms = Qt + "-version", Xt = [gt, wt, m, r, ae, mt, I, J, qe], Ue = "Amazon", ee = "Apple", It = "ASUS", Tt = "BlackBerry", X = "Google", At = "Huawei", Ye = "Lenovo", Pt = "Honor", Le = "LG", Ze = "Microsoft", et = "Motorola", tt = "Nvidia", xt = "OnePlus", st = "OPPO", fe = "Samsung", Ot = "Sharp", ye = "Sony", it = "Xiaomi", at = "Zebra", Ut = "Chrome", Lt = "Chromium", V = "Chromecast", _e = "Edge", ke = "Firefox", ve = "Opera", nt = "Facebook", Rt = "Sogou", te = "Mobile ", Ee = " Browser", ht = "Windows", Ss = typeof window !== W, T = Ss && window.navigator ? window.navigator : void 0, z = T && T.userAgentData ? T.userAgentData : void 0, Is = function(i, t) {
|
|
696
696
|
var e = {}, s = t;
|
|
697
|
-
if (!
|
|
697
|
+
if (!De(t)) {
|
|
698
698
|
s = {};
|
|
699
699
|
for (var a in t)
|
|
700
|
-
for (var
|
|
701
|
-
s[
|
|
700
|
+
for (var c in t[a])
|
|
701
|
+
s[c] = t[a][c].concat(s[c] ? s[c] : []);
|
|
702
702
|
}
|
|
703
|
-
for (var
|
|
704
|
-
e[
|
|
703
|
+
for (var o in i)
|
|
704
|
+
e[o] = s[o] && s[o].length % 2 === 0 ? s[o].concat(i[o]) : i[o];
|
|
705
705
|
return e;
|
|
706
|
-
},
|
|
706
|
+
}, We = function(i) {
|
|
707
707
|
for (var t = {}, e = 0; e < i.length; e++)
|
|
708
708
|
t[i[e].toUpperCase()] = i[e];
|
|
709
709
|
return t;
|
|
710
|
-
},
|
|
711
|
-
if (typeof i ===
|
|
710
|
+
}, pt = function(i, t) {
|
|
711
|
+
if (typeof i === pe && i.length > 0) {
|
|
712
712
|
for (var e in i)
|
|
713
|
-
if (
|
|
713
|
+
if (j(t) == j(i[e])) return !0;
|
|
714
714
|
return !1;
|
|
715
715
|
}
|
|
716
|
-
return
|
|
717
|
-
},
|
|
716
|
+
return we(i) ? j(t) == j(i) : !1;
|
|
717
|
+
}, De = function(i, t) {
|
|
718
718
|
for (var e in i)
|
|
719
|
-
return /^(browser|cpu|device|engine|os)$/.test(e) || (t ?
|
|
720
|
-
},
|
|
721
|
-
return typeof i ===
|
|
722
|
-
},
|
|
719
|
+
return /^(browser|cpu|device|engine|os)$/.test(e) || (t ? De(i[e]) : !1);
|
|
720
|
+
}, we = function(i) {
|
|
721
|
+
return typeof i === ut;
|
|
722
|
+
}, ot = function(i) {
|
|
723
723
|
if (i) {
|
|
724
|
-
for (var t = [], e =
|
|
724
|
+
for (var t = [], e = ge(/\\?\"/g, i).split(","), s = 0; s < e.length; s++)
|
|
725
725
|
if (e[s].indexOf(";") > -1) {
|
|
726
|
-
var a =
|
|
726
|
+
var a = Ne(e[s]).split(";v=");
|
|
727
727
|
t[s] = { brand: a[0], version: a[1] };
|
|
728
728
|
} else
|
|
729
|
-
t[s] =
|
|
729
|
+
t[s] = Ne(e[s]);
|
|
730
730
|
return t;
|
|
731
731
|
}
|
|
732
|
+
}, j = function(i) {
|
|
733
|
+
return we(i) ? i.toLowerCase() : i;
|
|
734
|
+
}, rt = function(i) {
|
|
735
|
+
return we(i) ? ge(/[^\d\.]/g, i).split(".")[0] : void 0;
|
|
732
736
|
}, N = function(i) {
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
var e = i[t];
|
|
739
|
-
typeof e == ue && e.length == 2 ? this[e[0]] = e[1] : this[e] = void 0;
|
|
740
|
-
}
|
|
737
|
+
for (var t in i)
|
|
738
|
+
if (i.hasOwnProperty(t)) {
|
|
739
|
+
var e = i[t];
|
|
740
|
+
typeof e == pe && e.length == 2 ? this[e[0]] = e[1] : this[e] = void 0;
|
|
741
|
+
}
|
|
741
742
|
return this;
|
|
742
|
-
},
|
|
743
|
-
return
|
|
744
|
-
},
|
|
745
|
-
return
|
|
746
|
-
},
|
|
747
|
-
if (
|
|
748
|
-
return i =
|
|
749
|
-
},
|
|
743
|
+
}, ge = function(i, t) {
|
|
744
|
+
return we(t) ? t.replace(i, he) : t;
|
|
745
|
+
}, Ce = function(i) {
|
|
746
|
+
return ge(/\\?\"/g, i);
|
|
747
|
+
}, Ne = function(i, t) {
|
|
748
|
+
if (we(i))
|
|
749
|
+
return i = ge(/^\s\s*/, i), typeof t === W ? i : i.substring(0, lt);
|
|
750
|
+
}, ct = function(i, t) {
|
|
750
751
|
if (!(!i || !t))
|
|
751
|
-
for (var e = 0, s, a,
|
|
752
|
-
var
|
|
753
|
-
for (s = a = 0; s <
|
|
754
|
-
if (
|
|
755
|
-
for (
|
|
756
|
-
h =
|
|
752
|
+
for (var e = 0, s, a, c, o, p, h; e < t.length && !p; ) {
|
|
753
|
+
var w = t[e], g = t[e + 1];
|
|
754
|
+
for (s = a = 0; s < w.length && !p && w[s]; )
|
|
755
|
+
if (p = w[s++].exec(i), p)
|
|
756
|
+
for (c = 0; c < g.length; c++)
|
|
757
|
+
h = p[++a], o = g[c], typeof o === pe && o.length > 0 ? o.length === 2 ? typeof o[1] == Fe ? this[o[0]] = o[1].call(this, h) : this[o[0]] = o[1] : o.length >= 3 && (typeof o[1] === Fe && !(o[1].exec && o[1].test) ? o.length > 3 ? this[o[0]] = h ? o[1].apply(this, o.slice(2)) : void 0 : this[o[0]] = h ? o[1].call(this, h, o[2]) : void 0 : o.length == 3 ? this[o[0]] = h ? h.replace(o[1], o[2]) : void 0 : o.length == 4 ? this[o[0]] = h ? o[3].call(this, h.replace(o[1], o[2])) : void 0 : o.length > 4 && (this[o[0]] = h ? o[3].apply(this, [h.replace(o[1], o[2])].concat(o.slice(4))) : void 0)) : this[o] = h || void 0;
|
|
757
758
|
e += 2;
|
|
758
759
|
}
|
|
759
|
-
},
|
|
760
|
+
}, L = function(i, t) {
|
|
760
761
|
for (var e in t)
|
|
761
|
-
if (typeof t[e] ===
|
|
762
|
+
if (typeof t[e] === pe && t[e].length > 0) {
|
|
762
763
|
for (var s = 0; s < t[e].length; s++)
|
|
763
|
-
if (
|
|
764
|
-
return e ===
|
|
765
|
-
} else if (
|
|
766
|
-
return e ===
|
|
764
|
+
if (pt(t[e][s], i))
|
|
765
|
+
return e === St ? void 0 : e;
|
|
766
|
+
} else if (pt(t[e], i))
|
|
767
|
+
return e === St ? void 0 : e;
|
|
767
768
|
return t.hasOwnProperty("*") ? t["*"] : i;
|
|
768
|
-
}, Lt = {
|
|
769
|
-
ME: "4.90",
|
|
770
|
-
"NT 3.11": "NT3.51",
|
|
771
|
-
"NT 4.0": "NT4.0",
|
|
772
|
-
2e3: "NT 5.0",
|
|
773
|
-
XP: ["NT 5.1", "NT 5.2"],
|
|
774
|
-
Vista: "NT 6.0",
|
|
775
|
-
7: "NT 6.1",
|
|
776
|
-
8: "NT 6.2",
|
|
777
|
-
"8.1": "NT 6.3",
|
|
778
|
-
10: ["NT 6.4", "NT 10.0"],
|
|
779
|
-
RT: "ARM"
|
|
780
769
|
}, Bt = {
|
|
770
|
+
ME: "4.90",
|
|
771
|
+
"NT 3.51": "3.51",
|
|
772
|
+
"NT 4.0": "4.0",
|
|
773
|
+
2e3: ["5.0", "5.01"],
|
|
774
|
+
XP: ["5.1", "5.2"],
|
|
775
|
+
Vista: "6.0",
|
|
776
|
+
7: "6.1",
|
|
777
|
+
8: "6.2",
|
|
778
|
+
"8.1": "6.3",
|
|
779
|
+
10: ["6.4", "10.0"],
|
|
780
|
+
NT: ""
|
|
781
|
+
}, _t = {
|
|
781
782
|
embedded: "Automotive",
|
|
782
783
|
mobile: "Mobile",
|
|
783
784
|
tablet: ["Tablet", "EInk"],
|
|
@@ -786,18 +787,32 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
786
787
|
xr: ["VR", "XR"],
|
|
787
788
|
"?": ["Desktop", "Unknown"],
|
|
788
789
|
"*": void 0
|
|
789
|
-
},
|
|
790
|
+
}, Ts = {
|
|
791
|
+
Chrome: "Google Chrome",
|
|
792
|
+
Edge: "Microsoft Edge",
|
|
793
|
+
"Edge WebView2": "Microsoft Edge WebView2",
|
|
794
|
+
"Chrome WebView": "Android WebView",
|
|
795
|
+
"Chrome Headless": "HeadlessChrome",
|
|
796
|
+
"Huawei Browser": "HuaweiBrowser",
|
|
797
|
+
"MIUI Browser": "Miui Browser",
|
|
798
|
+
"Opera Mobi": "OperaMobile",
|
|
799
|
+
Yandex: "YaBrowser"
|
|
800
|
+
}, Ft = {
|
|
790
801
|
browser: [
|
|
791
802
|
[
|
|
792
803
|
// Most common regardless engine
|
|
793
804
|
/\b(?:crmo|crios)\/([\w\.]+)/i
|
|
794
805
|
// Chrome for Android/iOS
|
|
795
806
|
],
|
|
796
|
-
[u, [l,
|
|
807
|
+
[u, [l, te + "Chrome"]],
|
|
797
808
|
[
|
|
798
|
-
/
|
|
809
|
+
/webview.+edge\/([\w\.]+)/i
|
|
799
810
|
// Microsoft Edge
|
|
800
811
|
],
|
|
812
|
+
[u, [l, _e + " WebView"]],
|
|
813
|
+
[
|
|
814
|
+
/edg(?:e|ios|a)?\/([\w\.]+)/i
|
|
815
|
+
],
|
|
801
816
|
[u, [l, "Edge"]],
|
|
802
817
|
[
|
|
803
818
|
// Presto based
|
|
@@ -813,17 +828,17 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
813
828
|
/opios[\/ ]+([\w\.]+)/i
|
|
814
829
|
// Opera mini on iphone >= 8.0
|
|
815
830
|
],
|
|
816
|
-
[u, [l,
|
|
831
|
+
[u, [l, ve + " Mini"]],
|
|
817
832
|
[
|
|
818
833
|
/\bop(?:rg)?x\/([\w\.]+)/i
|
|
819
834
|
// Opera GX
|
|
820
835
|
],
|
|
821
|
-
[u, [l,
|
|
836
|
+
[u, [l, ve + " GX"]],
|
|
822
837
|
[
|
|
823
838
|
/\bopr\/([\w\.]+)/i
|
|
824
839
|
// Opera Webkit
|
|
825
840
|
],
|
|
826
|
-
[u, [l,
|
|
841
|
+
[u, [l, ve]],
|
|
827
842
|
[
|
|
828
843
|
// Mixed
|
|
829
844
|
/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
|
|
@@ -896,22 +911,22 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
896
911
|
/slbrowser\/([\w\.]+)/i
|
|
897
912
|
// Smart Lenovo Browser
|
|
898
913
|
],
|
|
899
|
-
[u, [l, "Smart " +
|
|
914
|
+
[u, [l, "Smart " + Ye + Ee]],
|
|
900
915
|
[
|
|
901
916
|
/(avast|avg)\/([\w\.]+)/i
|
|
902
917
|
// Avast/AVG Secure Browser
|
|
903
918
|
],
|
|
904
|
-
[[l, /(.+)/, "$1 Secure" +
|
|
919
|
+
[[l, /(.+)/, "$1 Secure" + Ee], u],
|
|
905
920
|
[
|
|
906
921
|
/\bfocus\/([\w\.]+)/i
|
|
907
922
|
// Firefox Focus
|
|
908
923
|
],
|
|
909
|
-
[u, [l,
|
|
924
|
+
[u, [l, ke + " Focus"]],
|
|
910
925
|
[
|
|
911
926
|
/\bopt\/([\w\.]+)/i
|
|
912
927
|
// Opera Touch
|
|
913
928
|
],
|
|
914
|
-
[u, [l,
|
|
929
|
+
[u, [l, ve + " Touch"]],
|
|
915
930
|
[
|
|
916
931
|
/coc_coc\w+\/([\w\.]+)/i
|
|
917
932
|
// Coc Coc Browser
|
|
@@ -926,17 +941,17 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
926
941
|
/coast\/([\w\.]+)/i
|
|
927
942
|
// Opera Coast
|
|
928
943
|
],
|
|
929
|
-
[u, [l,
|
|
944
|
+
[u, [l, ve + " Coast"]],
|
|
930
945
|
[
|
|
931
946
|
/miuibrowser\/([\w\.]+)/i
|
|
932
947
|
// MIUI Browser
|
|
933
948
|
],
|
|
934
|
-
[u, [l, "MIUI" +
|
|
949
|
+
[u, [l, "MIUI" + Ee]],
|
|
935
950
|
[
|
|
936
951
|
/fxios\/([\w\.-]+)/i
|
|
937
952
|
// Firefox for iOS
|
|
938
953
|
],
|
|
939
|
-
[u, [l,
|
|
954
|
+
[u, [l, te + ke]],
|
|
940
955
|
[
|
|
941
956
|
/\bqihoobrowser\/?([\w\.]*)/i
|
|
942
957
|
// 360
|
|
@@ -950,13 +965,13 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
950
965
|
[
|
|
951
966
|
/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
|
|
952
967
|
],
|
|
953
|
-
[[l, /(.+)/, "$1" +
|
|
968
|
+
[[l, /(.+)/, "$1" + Ee], u],
|
|
954
969
|
[
|
|
955
970
|
// Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
|
|
956
971
|
/samsungbrowser\/([\w\.]+)/i
|
|
957
972
|
// Samsung Internet
|
|
958
973
|
],
|
|
959
|
-
[u, [l,
|
|
974
|
+
[u, [l, fe + " Internet"]],
|
|
960
975
|
[
|
|
961
976
|
/metasr[\/ ]?([\d\.]+)/i
|
|
962
977
|
// Sogou Explorer
|
|
@@ -993,10 +1008,8 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
993
1008
|
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
|
|
994
1009
|
// Facebook App for iOS & Android
|
|
995
1010
|
],
|
|
996
|
-
[[l,
|
|
1011
|
+
[[l, nt], u, [n, Z]],
|
|
997
1012
|
[
|
|
998
|
-
/(Klarna)\/([\w\.]+)/i,
|
|
999
|
-
// Klarna Shopping Browser for iOS & Android
|
|
1000
1013
|
/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
|
|
1001
1014
|
// Kakao App
|
|
1002
1015
|
/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
|
|
@@ -1011,25 +1024,30 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1011
1024
|
// Alipay
|
|
1012
1025
|
/(twitter)(?:and| f.+e\/([\w\.]+))/i,
|
|
1013
1026
|
// Twitter
|
|
1014
|
-
/(instagram|snapchat)[\/ ]([-\w\.]+)/i
|
|
1015
|
-
// Instagram/Snapchat
|
|
1027
|
+
/(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i
|
|
1028
|
+
// Instagram/Snapchat/Klarna
|
|
1016
1029
|
],
|
|
1017
|
-
[l, u, [n,
|
|
1030
|
+
[l, u, [n, Z]],
|
|
1018
1031
|
[
|
|
1019
1032
|
/\bgsa\/([\w\.]+) .*safari\//i
|
|
1020
1033
|
// Google Search Appliance on iOS
|
|
1021
1034
|
],
|
|
1022
|
-
[u, [l, "GSA"], [n,
|
|
1035
|
+
[u, [l, "GSA"], [n, Z]],
|
|
1023
1036
|
[
|
|
1024
1037
|
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
|
|
1025
1038
|
// TikTok
|
|
1026
1039
|
],
|
|
1027
|
-
[u, [l, "TikTok"], [n,
|
|
1040
|
+
[u, [l, "TikTok"], [n, Z]],
|
|
1028
1041
|
[
|
|
1029
1042
|
/\[(linkedin)app\]/i
|
|
1030
1043
|
// LinkedIn App for iOS & Android
|
|
1031
1044
|
],
|
|
1032
|
-
[l, [n,
|
|
1045
|
+
[l, [n, Z]],
|
|
1046
|
+
[
|
|
1047
|
+
/(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i
|
|
1048
|
+
// Zalo
|
|
1049
|
+
],
|
|
1050
|
+
[[l, /(.+)/, "Zalo"], u, [n, Z]],
|
|
1033
1051
|
[
|
|
1034
1052
|
/(chromium)[\/ ]([-\w\.]+)/i
|
|
1035
1053
|
// Chromium
|
|
@@ -1039,22 +1057,27 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1039
1057
|
/headlesschrome(?:\/([\w\.]+)| )/i
|
|
1040
1058
|
// Chrome Headless
|
|
1041
1059
|
],
|
|
1042
|
-
[u, [l,
|
|
1060
|
+
[u, [l, Ut + " Headless"]],
|
|
1061
|
+
[
|
|
1062
|
+
/wv\).+chrome\/([\w\.]+).+edgw\//i
|
|
1063
|
+
// Edge WebView2
|
|
1064
|
+
],
|
|
1065
|
+
[u, [l, _e + " WebView2"]],
|
|
1043
1066
|
[
|
|
1044
1067
|
/ wv\).+(chrome)\/([\w\.]+)/i
|
|
1045
1068
|
// Chrome WebView
|
|
1046
1069
|
],
|
|
1047
|
-
[[l,
|
|
1070
|
+
[[l, Ut + " WebView"], u],
|
|
1048
1071
|
[
|
|
1049
1072
|
/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
|
|
1050
1073
|
// Android Browser
|
|
1051
1074
|
],
|
|
1052
|
-
[u, [l, "Android" +
|
|
1075
|
+
[u, [l, "Android" + Ee]],
|
|
1053
1076
|
[
|
|
1054
1077
|
/chrome\/([\w\.]+) mobile/i
|
|
1055
1078
|
// Chrome Mobile
|
|
1056
1079
|
],
|
|
1057
|
-
[u, [l,
|
|
1080
|
+
[u, [l, te + "Chrome"]],
|
|
1058
1081
|
[
|
|
1059
1082
|
/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
|
|
1060
1083
|
// Chrome/OmniWeb/Arora/Tizen/Nokia
|
|
@@ -1064,11 +1087,11 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1064
1087
|
/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i
|
|
1065
1088
|
// Safari Mobile
|
|
1066
1089
|
],
|
|
1067
|
-
[u, [l,
|
|
1090
|
+
[u, [l, te + "Safari"]],
|
|
1068
1091
|
[
|
|
1069
1092
|
/iphone .*mobile(?:\/\w+ | ?)safari/i
|
|
1070
1093
|
],
|
|
1071
|
-
[[l,
|
|
1094
|
+
[[l, te + "Safari"]],
|
|
1072
1095
|
[
|
|
1073
1096
|
/version\/([\w\.\,]+) .*(safari)/i
|
|
1074
1097
|
// Safari
|
|
@@ -1088,7 +1111,7 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1088
1111
|
/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i
|
|
1089
1112
|
// Firefox Mobile
|
|
1090
1113
|
],
|
|
1091
|
-
[[l,
|
|
1114
|
+
[[l, te + ke], u],
|
|
1092
1115
|
[
|
|
1093
1116
|
/(navigator|netscape\d?)\/([-\w\.]+)/i
|
|
1094
1117
|
// Netscape
|
|
@@ -1103,7 +1126,7 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1103
1126
|
/mobile vr; rv:([\w\.]+)\).+firefox/i
|
|
1104
1127
|
// Firefox Reality
|
|
1105
1128
|
],
|
|
1106
|
-
[u, [l,
|
|
1129
|
+
[u, [l, ke + " Reality"]],
|
|
1107
1130
|
[
|
|
1108
1131
|
/ekiohf.+(flow)\/([\w\.]+)/i,
|
|
1109
1132
|
// Flow
|
|
@@ -1128,51 +1151,54 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1128
1151
|
/(cobalt)\/([\w\.]+)/i
|
|
1129
1152
|
// Cobalt
|
|
1130
1153
|
],
|
|
1131
|
-
[l, [u, /[^\d\.]+./,
|
|
1154
|
+
[l, [u, /[^\d\.]+./, he]]
|
|
1132
1155
|
],
|
|
1133
1156
|
cpu: [
|
|
1134
1157
|
[
|
|
1135
1158
|
/\b((amd|x|x86[-_]?|wow|win)64)\b/i
|
|
1136
1159
|
// AMD64 (x64)
|
|
1137
1160
|
],
|
|
1138
|
-
[[
|
|
1161
|
+
[[I, "amd64"]],
|
|
1139
1162
|
[
|
|
1140
1163
|
/(ia32(?=;))/i,
|
|
1141
1164
|
// IA32 (quicktime)
|
|
1142
1165
|
/\b((i[346]|x)86)(pc)?\b/i
|
|
1143
1166
|
// IA32 (x86)
|
|
1144
1167
|
],
|
|
1145
|
-
[[
|
|
1168
|
+
[[I, "ia32"]],
|
|
1146
1169
|
[
|
|
1147
1170
|
/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i
|
|
1148
1171
|
// ARM64
|
|
1149
1172
|
],
|
|
1150
|
-
[[
|
|
1173
|
+
[[I, "arm64"]],
|
|
1151
1174
|
[
|
|
1152
1175
|
/\b(arm(v[67])?ht?n?[fl]p?)\b/i
|
|
1153
1176
|
// ARMHF
|
|
1154
1177
|
],
|
|
1155
|
-
[[
|
|
1178
|
+
[[I, "armhf"]],
|
|
1156
1179
|
[
|
|
1157
1180
|
// PocketPC mistakenly identified as PowerPC
|
|
1158
1181
|
/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i
|
|
1159
1182
|
],
|
|
1160
|
-
[[
|
|
1161
|
-
[
|
|
1162
|
-
/((ppc|powerpc)(64)?)( mac|;|\))/i
|
|
1163
|
-
// PowerPC
|
|
1164
|
-
],
|
|
1165
|
-
[[T, /ower/, le, N]],
|
|
1183
|
+
[[I, "arm"]],
|
|
1166
1184
|
[
|
|
1167
1185
|
/ sun4\w[;\)]/i
|
|
1168
1186
|
// SPARC
|
|
1169
1187
|
],
|
|
1170
|
-
[[
|
|
1188
|
+
[[I, "sparc"]],
|
|
1171
1189
|
[
|
|
1172
|
-
/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i
|
|
1173
1190
|
// IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
|
|
1191
|
+
/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i,
|
|
1192
|
+
/((ppc|powerpc)(64)?)( mac|;|\))/i,
|
|
1193
|
+
// PowerPC
|
|
1194
|
+
/(?:osf1|[freopnt]{3,4}bsd) (alpha)/i
|
|
1195
|
+
// Alpha
|
|
1174
1196
|
],
|
|
1175
|
-
[[
|
|
1197
|
+
[[I, /ower/, he, j]],
|
|
1198
|
+
[
|
|
1199
|
+
/winnt.+\[axp/i
|
|
1200
|
+
],
|
|
1201
|
+
[[I, "alpha"]]
|
|
1176
1202
|
],
|
|
1177
1203
|
device: [
|
|
1178
1204
|
[
|
|
@@ -1182,61 +1208,61 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1182
1208
|
// Samsung
|
|
1183
1209
|
/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
|
|
1184
1210
|
],
|
|
1185
|
-
[
|
|
1211
|
+
[r, [d, fe], [n, f]],
|
|
1186
1212
|
[
|
|
1187
1213
|
/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
|
|
1188
|
-
/samsung[- ]((?!sm-[lr])[-\w]+)/i,
|
|
1214
|
+
/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,
|
|
1189
1215
|
/sec-(sgh\w+)/i
|
|
1190
1216
|
],
|
|
1191
|
-
[
|
|
1217
|
+
[r, [d, fe], [n, m]],
|
|
1192
1218
|
[
|
|
1193
1219
|
// Apple
|
|
1194
1220
|
/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
|
|
1195
1221
|
// iPod/iPhone
|
|
1196
1222
|
],
|
|
1197
|
-
[
|
|
1223
|
+
[r, [d, ee], [n, m]],
|
|
1198
1224
|
[
|
|
1199
1225
|
/\((ipad);[-\w\),; ]+apple/i,
|
|
1200
1226
|
// iPad
|
|
1201
1227
|
/applecoremedia\/[\w\.]+ \((ipad)/i,
|
|
1202
1228
|
/\b(ipad)\d\d?,\d\d?[;\]].+ios/i
|
|
1203
1229
|
],
|
|
1204
|
-
[
|
|
1230
|
+
[r, [d, ee], [n, f]],
|
|
1205
1231
|
[
|
|
1206
1232
|
/(macintosh);/i
|
|
1207
1233
|
],
|
|
1208
|
-
[
|
|
1234
|
+
[r, [d, ee]],
|
|
1209
1235
|
[
|
|
1210
1236
|
// Sharp
|
|
1211
1237
|
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
|
|
1212
1238
|
],
|
|
1213
|
-
[
|
|
1239
|
+
[r, [d, Ot], [n, m]],
|
|
1214
1240
|
[
|
|
1215
1241
|
// Honor
|
|
1216
1242
|
/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i
|
|
1217
1243
|
],
|
|
1218
|
-
[
|
|
1244
|
+
[r, [d, Pt], [n, f]],
|
|
1219
1245
|
[
|
|
1220
1246
|
/honor([-\w ]+)[;\)]/i
|
|
1221
1247
|
],
|
|
1222
|
-
[
|
|
1248
|
+
[r, [d, Pt], [n, m]],
|
|
1223
1249
|
[
|
|
1224
1250
|
// Huawei
|
|
1225
1251
|
/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i
|
|
1226
1252
|
],
|
|
1227
|
-
[
|
|
1253
|
+
[r, [d, At], [n, f]],
|
|
1228
1254
|
[
|
|
1229
1255
|
/(?:huawei)([-\w ]+)[;\)]/i,
|
|
1230
1256
|
/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
|
|
1231
1257
|
],
|
|
1232
|
-
[
|
|
1258
|
+
[r, [d, At], [n, m]],
|
|
1233
1259
|
[
|
|
1234
1260
|
// Xiaomi
|
|
1235
1261
|
/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,
|
|
1236
1262
|
/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i
|
|
1237
1263
|
// Mi Pad tablets
|
|
1238
1264
|
],
|
|
1239
|
-
[[
|
|
1265
|
+
[[r, /_/g, " "], [d, it], [n, f]],
|
|
1240
1266
|
[
|
|
1241
1267
|
/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
|
|
1242
1268
|
// Xiaomi POCO
|
|
@@ -1252,98 +1278,107 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1252
1278
|
// Xiaomi Mi
|
|
1253
1279
|
/ ([\w ]+) miui\/v?\d/i
|
|
1254
1280
|
],
|
|
1255
|
-
[[
|
|
1281
|
+
[[r, /_/g, " "], [d, it], [n, m]],
|
|
1282
|
+
[
|
|
1283
|
+
// OnePlus
|
|
1284
|
+
/droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-k]\w[1m]10)\b/i,
|
|
1285
|
+
/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
|
|
1286
|
+
],
|
|
1287
|
+
[r, [d, xt], [n, m]],
|
|
1256
1288
|
[
|
|
1257
1289
|
// OPPO
|
|
1258
1290
|
/; (\w+) bui.+ oppo/i,
|
|
1259
1291
|
/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
|
|
1260
1292
|
],
|
|
1261
|
-
[
|
|
1293
|
+
[r, [d, st], [n, m]],
|
|
1262
1294
|
[
|
|
1263
1295
|
/\b(opd2(\d{3}a?))(?: bui|\))/i
|
|
1264
1296
|
],
|
|
1265
|
-
[
|
|
1297
|
+
[r, [d, L, { OnePlus: ["203", "304", "403", "404", "413", "415"], "*": st }], [n, f]],
|
|
1266
1298
|
[
|
|
1267
|
-
// BLU
|
|
1299
|
+
// BLU
|
|
1268
1300
|
/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i
|
|
1301
|
+
// Vivo series
|
|
1269
1302
|
],
|
|
1270
|
-
[
|
|
1303
|
+
[r, [d, "BLU"], [n, m]],
|
|
1271
1304
|
[
|
|
1272
1305
|
// Vivo
|
|
1273
1306
|
/; vivo (\w+)(?: bui|\))/i,
|
|
1274
1307
|
/\b(v[12]\d{3}\w?[at])(?: bui|;)/i
|
|
1275
1308
|
],
|
|
1276
|
-
[
|
|
1309
|
+
[r, [d, "Vivo"], [n, m]],
|
|
1277
1310
|
[
|
|
1278
1311
|
// Realme
|
|
1279
1312
|
/\b(rmx[1-3]\d{3})(?: bui|;|\))/i
|
|
1280
1313
|
],
|
|
1281
|
-
[
|
|
1314
|
+
[r, [d, "Realme"], [n, m]],
|
|
1315
|
+
[
|
|
1316
|
+
// Lenovo
|
|
1317
|
+
/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,
|
|
1318
|
+
/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i
|
|
1319
|
+
],
|
|
1320
|
+
[r, [d, Ye], [n, f]],
|
|
1321
|
+
[
|
|
1322
|
+
/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i
|
|
1323
|
+
],
|
|
1324
|
+
[r, [d, Ye], [n, m]],
|
|
1282
1325
|
[
|
|
1283
1326
|
// Motorola
|
|
1284
1327
|
/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
|
|
1285
|
-
/\bmot(?:orola)?[- ](\w
|
|
1286
|
-
/((?:moto(?! 360)[
|
|
1328
|
+
/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,
|
|
1329
|
+
/((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i
|
|
1287
1330
|
],
|
|
1288
|
-
[
|
|
1331
|
+
[r, [d, et], [n, m]],
|
|
1289
1332
|
[
|
|
1290
1333
|
/\b(mz60\d|xoom[2 ]{0,2}) build\//i
|
|
1291
1334
|
],
|
|
1292
|
-
[
|
|
1335
|
+
[r, [d, et], [n, f]],
|
|
1293
1336
|
[
|
|
1294
1337
|
// LG
|
|
1295
1338
|
/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
|
|
1296
1339
|
],
|
|
1297
|
-
[
|
|
1340
|
+
[r, [d, Le], [n, f]],
|
|
1298
1341
|
[
|
|
1299
1342
|
/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
|
|
1300
|
-
/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\w+)/i,
|
|
1343
|
+
/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,
|
|
1301
1344
|
/\blg-?([\d\w]+) bui/i
|
|
1302
1345
|
],
|
|
1303
|
-
[
|
|
1304
|
-
[
|
|
1305
|
-
// Lenovo
|
|
1306
|
-
/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,
|
|
1307
|
-
/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i
|
|
1308
|
-
],
|
|
1309
|
-
[o, [d, It], [n, f]],
|
|
1346
|
+
[r, [d, Le], [n, m]],
|
|
1310
1347
|
[
|
|
1311
1348
|
// Nokia
|
|
1312
1349
|
/(nokia) (t[12][01])/i
|
|
1313
1350
|
],
|
|
1314
|
-
[d,
|
|
1351
|
+
[d, r, [n, f]],
|
|
1315
1352
|
[
|
|
1316
1353
|
/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,
|
|
1317
1354
|
/nokia[-_ ]?(([-\w\. ]*))/i
|
|
1318
1355
|
],
|
|
1319
|
-
[[
|
|
1356
|
+
[[r, /_/g, " "], [n, m], [d, "Nokia"]],
|
|
1320
1357
|
[
|
|
1321
1358
|
// Google
|
|
1322
1359
|
/(pixel (c|tablet))\b/i
|
|
1323
1360
|
// Google Pixel C/Tablet
|
|
1324
1361
|
],
|
|
1325
|
-
[
|
|
1362
|
+
[r, [d, X], [n, f]],
|
|
1326
1363
|
[
|
|
1327
|
-
/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
|
|
1328
1364
|
// Google Pixel
|
|
1365
|
+
/droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i
|
|
1366
|
+
],
|
|
1367
|
+
[r, [d, X], [n, m]],
|
|
1368
|
+
[
|
|
1369
|
+
/(google) (pixelbook( go)?)/i
|
|
1329
1370
|
],
|
|
1330
|
-
[
|
|
1371
|
+
[d, r],
|
|
1331
1372
|
[
|
|
1332
1373
|
// Sony
|
|
1333
|
-
/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq
|
|
1374
|
+
/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
|
|
1334
1375
|
],
|
|
1335
|
-
[
|
|
1376
|
+
[r, [d, ye], [n, m]],
|
|
1336
1377
|
[
|
|
1337
1378
|
/sony tablet [ps]/i,
|
|
1338
1379
|
/\b(?:sony)?sgp\w+(?: bui|\))/i
|
|
1339
1380
|
],
|
|
1340
|
-
[[
|
|
1341
|
-
[
|
|
1342
|
-
// OnePlus
|
|
1343
|
-
/ (kb2005|in20[12]5|be20[12][59])\b/i,
|
|
1344
|
-
/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
|
|
1345
|
-
],
|
|
1346
|
-
[o, [d, Pt], [n, w]],
|
|
1381
|
+
[[r, "Xperia Tablet"], [d, ye], [n, f]],
|
|
1347
1382
|
[
|
|
1348
1383
|
// Amazon
|
|
1349
1384
|
/(alexa)webm/i,
|
|
@@ -1352,39 +1387,39 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1352
1387
|
/(kf[a-z]+)( bui|\)).+silk\//i
|
|
1353
1388
|
// Kindle Fire HD
|
|
1354
1389
|
],
|
|
1355
|
-
[
|
|
1390
|
+
[r, [d, Ue], [n, f]],
|
|
1356
1391
|
[
|
|
1357
1392
|
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
|
|
1358
1393
|
// Fire Phone
|
|
1359
1394
|
],
|
|
1360
|
-
[[
|
|
1395
|
+
[[r, /(.+)/g, "Fire Phone $1"], [d, Ue], [n, m]],
|
|
1361
1396
|
[
|
|
1362
1397
|
// BlackBerry
|
|
1363
1398
|
/(playbook);[-\w\),; ]+(rim)/i
|
|
1364
1399
|
// BlackBerry PlayBook
|
|
1365
1400
|
],
|
|
1366
|
-
[
|
|
1401
|
+
[r, d, [n, f]],
|
|
1367
1402
|
[
|
|
1368
1403
|
/\b((?:bb[a-f]|st[hv])100-\d)/i,
|
|
1369
1404
|
/\(bb10; (\w+)/i
|
|
1370
1405
|
// BlackBerry 10
|
|
1371
1406
|
],
|
|
1372
|
-
[
|
|
1407
|
+
[r, [d, Tt], [n, m]],
|
|
1373
1408
|
[
|
|
1374
1409
|
// Asus
|
|
1375
1410
|
/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
|
|
1376
1411
|
],
|
|
1377
|
-
[
|
|
1412
|
+
[r, [d, It], [n, f]],
|
|
1378
1413
|
[
|
|
1379
1414
|
/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
|
|
1380
1415
|
],
|
|
1381
|
-
[
|
|
1416
|
+
[r, [d, It], [n, m]],
|
|
1382
1417
|
[
|
|
1383
1418
|
// HTC
|
|
1384
1419
|
/(nexus 9)/i
|
|
1385
1420
|
// HTC Nexus 9
|
|
1386
1421
|
],
|
|
1387
|
-
[
|
|
1422
|
+
[r, [d, "HTC"], [n, f]],
|
|
1388
1423
|
[
|
|
1389
1424
|
/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
|
|
1390
1425
|
// HTC
|
|
@@ -1393,94 +1428,99 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1393
1428
|
/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
|
|
1394
1429
|
// Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
|
1395
1430
|
],
|
|
1396
|
-
[d, [
|
|
1431
|
+
[d, [r, /_/g, " "], [n, m]],
|
|
1397
1432
|
[
|
|
1398
1433
|
// TCL
|
|
1399
1434
|
/tcl (xess p17aa)/i,
|
|
1400
1435
|
/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i
|
|
1401
1436
|
],
|
|
1402
|
-
[
|
|
1437
|
+
[r, [d, "TCL"], [n, f]],
|
|
1403
1438
|
[
|
|
1404
1439
|
/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i
|
|
1405
1440
|
],
|
|
1406
|
-
[
|
|
1441
|
+
[r, [d, "TCL"], [n, m]],
|
|
1407
1442
|
[
|
|
1408
1443
|
// itel
|
|
1409
1444
|
/(itel) ((\w+))/i
|
|
1410
1445
|
],
|
|
1411
|
-
[[d,
|
|
1446
|
+
[[d, j], r, [n, L, { tablet: ["p10001l", "w7001"], "*": "mobile" }]],
|
|
1412
1447
|
[
|
|
1413
1448
|
// Acer
|
|
1414
1449
|
/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
|
|
1415
1450
|
],
|
|
1416
|
-
[
|
|
1451
|
+
[r, [d, "Acer"], [n, f]],
|
|
1417
1452
|
[
|
|
1418
1453
|
// Meizu
|
|
1419
1454
|
/droid.+; (m[1-5] note) bui/i,
|
|
1420
1455
|
/\bmz-([-\w]{2,})/i
|
|
1421
1456
|
],
|
|
1422
|
-
[
|
|
1457
|
+
[r, [d, "Meizu"], [n, m]],
|
|
1423
1458
|
[
|
|
1424
1459
|
// Ulefone
|
|
1425
1460
|
/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
|
|
1426
1461
|
],
|
|
1427
|
-
[
|
|
1462
|
+
[r, [d, "Ulefone"], [n, m]],
|
|
1428
1463
|
[
|
|
1429
1464
|
// Energizer
|
|
1430
1465
|
/; (energy ?\w+)(?: bui|\))/i,
|
|
1431
1466
|
/; energizer ([\w ]+)(?: bui|\))/i
|
|
1432
1467
|
],
|
|
1433
|
-
[
|
|
1468
|
+
[r, [d, "Energizer"], [n, m]],
|
|
1434
1469
|
[
|
|
1435
1470
|
// Cat
|
|
1436
1471
|
/; cat (b35);/i,
|
|
1437
1472
|
/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
|
|
1438
1473
|
],
|
|
1439
|
-
[
|
|
1474
|
+
[r, [d, "Cat"], [n, m]],
|
|
1440
1475
|
[
|
|
1441
1476
|
// Smartfren
|
|
1442
1477
|
/((?:new )?andromax[\w- ]+)(?: bui|\))/i
|
|
1443
1478
|
],
|
|
1444
|
-
[
|
|
1479
|
+
[r, [d, "Smartfren"], [n, m]],
|
|
1445
1480
|
[
|
|
1446
1481
|
// Nothing
|
|
1447
|
-
/droid.+; (a(
|
|
1482
|
+
/droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i
|
|
1448
1483
|
],
|
|
1449
|
-
[
|
|
1484
|
+
[r, [d, "Nothing"], [n, m]],
|
|
1450
1485
|
[
|
|
1451
1486
|
// Archos
|
|
1452
1487
|
/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,
|
|
1453
1488
|
/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i
|
|
1454
1489
|
],
|
|
1455
|
-
[
|
|
1490
|
+
[r, [d, "Archos"], [n, f]],
|
|
1456
1491
|
[
|
|
1457
1492
|
/archos ([\w ]+)( b|\))/i,
|
|
1458
1493
|
/; (ac[3-6]\d\w{2,8})( b|\))/i
|
|
1459
1494
|
],
|
|
1460
|
-
[
|
|
1495
|
+
[r, [d, "Archos"], [n, m]],
|
|
1496
|
+
[
|
|
1497
|
+
// HMD
|
|
1498
|
+
/; (n159v)/i
|
|
1499
|
+
],
|
|
1500
|
+
[r, [d, "HMD"], [n, m]],
|
|
1461
1501
|
[
|
|
1462
1502
|
// MIXED
|
|
1463
1503
|
/(imo) (tab \w+)/i,
|
|
1464
1504
|
// IMO
|
|
1465
|
-
/(infinix) (x1101b
|
|
1466
|
-
// Infinix XPad
|
|
1505
|
+
/(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i
|
|
1506
|
+
// Infinix XPad / Tecno
|
|
1467
1507
|
],
|
|
1468
|
-
[d,
|
|
1508
|
+
[d, r, [n, f]],
|
|
1469
1509
|
[
|
|
1470
|
-
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|
|
|
1471
|
-
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/
|
|
1472
|
-
/; (blu|hmd|imo|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,
|
|
1473
|
-
// BLU/HMD/IMO/TCL
|
|
1510
|
+
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
|
|
1511
|
+
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan
|
|
1512
|
+
/; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,
|
|
1513
|
+
// BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL
|
|
1474
1514
|
/(hp) ([\w ]+\w)/i,
|
|
1475
1515
|
// HP iPAQ
|
|
1476
1516
|
/(microsoft); (lumia[\w ]+)/i,
|
|
1477
1517
|
// Microsoft Lumia
|
|
1478
|
-
/(
|
|
1479
|
-
// Lenovo
|
|
1480
|
-
/(oppo) ?([\w ]+) bui/i
|
|
1518
|
+
/(oppo) ?([\w ]+) bui/i,
|
|
1481
1519
|
// OPPO
|
|
1520
|
+
/droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i
|
|
1521
|
+
// Philips
|
|
1482
1522
|
],
|
|
1483
|
-
[d,
|
|
1523
|
+
[d, r, [n, m]],
|
|
1484
1524
|
[
|
|
1485
1525
|
/(kobo)\s(ereader|touch)/i,
|
|
1486
1526
|
// Kobo
|
|
@@ -1489,45 +1529,47 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1489
1529
|
/(kindle)\/([\w\.]+)/i
|
|
1490
1530
|
// Kindle
|
|
1491
1531
|
],
|
|
1492
|
-
[d,
|
|
1532
|
+
[d, r, [n, f]],
|
|
1493
1533
|
[
|
|
1494
1534
|
/(surface duo)/i
|
|
1495
1535
|
// Surface Duo
|
|
1496
1536
|
],
|
|
1497
|
-
[
|
|
1537
|
+
[r, [d, Ze], [n, f]],
|
|
1498
1538
|
[
|
|
1499
1539
|
/droid [\d\.]+; (fp\du?)(?: b|\))/i
|
|
1500
1540
|
// Fairphone
|
|
1501
1541
|
],
|
|
1502
|
-
[
|
|
1542
|
+
[r, [d, "Fairphone"], [n, m]],
|
|
1503
1543
|
[
|
|
1504
1544
|
/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i
|
|
1505
1545
|
// Nvidia Tablets
|
|
1506
1546
|
],
|
|
1507
|
-
[
|
|
1547
|
+
[r, [d, tt], [n, f]],
|
|
1508
1548
|
[
|
|
1509
1549
|
/(sprint) (\w+)/i
|
|
1510
1550
|
// Sprint Phones
|
|
1511
1551
|
],
|
|
1512
|
-
[d,
|
|
1552
|
+
[d, r, [n, m]],
|
|
1513
1553
|
[
|
|
1514
1554
|
/(kin\.[onetw]{3})/i
|
|
1515
1555
|
// Microsoft Kin
|
|
1516
1556
|
],
|
|
1517
|
-
[[
|
|
1557
|
+
[[r, /\./g, " "], [d, Ze], [n, m]],
|
|
1518
1558
|
[
|
|
1519
1559
|
/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
|
|
1520
1560
|
// Zebra
|
|
1521
1561
|
],
|
|
1522
|
-
[
|
|
1562
|
+
[r, [d, at], [n, f]],
|
|
1523
1563
|
[
|
|
1524
1564
|
/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
|
|
1525
1565
|
],
|
|
1526
|
-
[
|
|
1566
|
+
[r, [d, at], [n, m]],
|
|
1527
1567
|
[
|
|
1528
1568
|
///////////////////
|
|
1529
1569
|
// SMARTTVS
|
|
1530
1570
|
///////////////////
|
|
1571
|
+
/(philips)[\w ]+tv/i,
|
|
1572
|
+
// Philips
|
|
1531
1573
|
/smart-tv.+(samsung)/i
|
|
1532
1574
|
// Samsung
|
|
1533
1575
|
],
|
|
@@ -1535,118 +1577,113 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1535
1577
|
[
|
|
1536
1578
|
/hbbtv.+maple;(\d+)/i
|
|
1537
1579
|
],
|
|
1538
|
-
[[
|
|
1580
|
+
[[r, /^/, "SmartTV"], [d, fe], [n, y]],
|
|
1539
1581
|
[
|
|
1582
|
+
/(vizio)(?: |.+model\/)(\w+-\w+)/i,
|
|
1583
|
+
// Vizio
|
|
1540
1584
|
/tcast.+(lg)e?. ([-\w]+)/i
|
|
1541
1585
|
// LG SmartTV
|
|
1542
1586
|
],
|
|
1543
|
-
[d,
|
|
1587
|
+
[d, r, [n, y]],
|
|
1544
1588
|
[
|
|
1545
1589
|
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
|
|
1546
1590
|
],
|
|
1547
|
-
[[d,
|
|
1591
|
+
[[d, Le], [n, y]],
|
|
1548
1592
|
[
|
|
1549
1593
|
/(apple) ?tv/i
|
|
1550
1594
|
// Apple TV
|
|
1551
1595
|
],
|
|
1552
|
-
[d, [
|
|
1596
|
+
[d, [r, ee + " TV"], [n, y]],
|
|
1553
1597
|
[
|
|
1554
1598
|
/crkey.*devicetype\/chromecast/i
|
|
1555
1599
|
// Google Chromecast Third Generation
|
|
1556
1600
|
],
|
|
1557
|
-
[[
|
|
1601
|
+
[[r, V + " Third Generation"], [d, X], [n, y]],
|
|
1558
1602
|
[
|
|
1559
1603
|
/crkey.*devicetype\/([^/]*)/i
|
|
1560
1604
|
// Google Chromecast with specific device type
|
|
1561
1605
|
],
|
|
1562
|
-
[[
|
|
1606
|
+
[[r, /^/, "Chromecast "], [d, X], [n, y]],
|
|
1563
1607
|
[
|
|
1564
1608
|
/fuchsia.*crkey/i
|
|
1565
1609
|
// Google Chromecast Nest Hub
|
|
1566
1610
|
],
|
|
1567
|
-
[[
|
|
1611
|
+
[[r, V + " Nest Hub"], [d, X], [n, y]],
|
|
1568
1612
|
[
|
|
1569
1613
|
/crkey/i
|
|
1570
1614
|
// Google Chromecast, Linux-based or unknown
|
|
1571
1615
|
],
|
|
1572
|
-
[[
|
|
1616
|
+
[[r, V], [d, X], [n, y]],
|
|
1573
1617
|
[
|
|
1574
1618
|
/(portaltv)/i
|
|
1575
1619
|
// Facebook Portal TV
|
|
1576
1620
|
],
|
|
1577
|
-
[
|
|
1621
|
+
[r, [d, nt], [n, y]],
|
|
1578
1622
|
[
|
|
1579
1623
|
/droid.+aft(\w+)( bui|\))/i
|
|
1580
1624
|
// Fire TV
|
|
1581
1625
|
],
|
|
1582
|
-
[
|
|
1626
|
+
[r, [d, Ue], [n, y]],
|
|
1583
1627
|
[
|
|
1584
1628
|
/(shield \w+ tv)/i
|
|
1585
1629
|
// Nvidia Shield TV
|
|
1586
1630
|
],
|
|
1587
|
-
[
|
|
1631
|
+
[r, [d, tt], [n, y]],
|
|
1588
1632
|
[
|
|
1589
1633
|
/\(dtv[\);].+(aquos)/i,
|
|
1590
1634
|
/(aquos-tv[\w ]+)\)/i
|
|
1591
1635
|
// Sharp
|
|
1592
1636
|
],
|
|
1593
|
-
[
|
|
1637
|
+
[r, [d, Ot], [n, y]],
|
|
1594
1638
|
[
|
|
1595
1639
|
/(bravia[\w ]+)( bui|\))/i
|
|
1596
1640
|
// Sony
|
|
1597
1641
|
],
|
|
1598
|
-
[
|
|
1642
|
+
[r, [d, ye], [n, y]],
|
|
1599
1643
|
[
|
|
1600
1644
|
/(mi(tv|box)-?\w+) bui/i
|
|
1601
1645
|
// Xiaomi
|
|
1602
1646
|
],
|
|
1603
|
-
[
|
|
1647
|
+
[r, [d, it], [n, y]],
|
|
1604
1648
|
[
|
|
1605
1649
|
/Hbbtv.*(technisat) (.*);/i
|
|
1606
1650
|
// TechniSAT
|
|
1607
1651
|
],
|
|
1608
|
-
[d,
|
|
1652
|
+
[d, r, [n, y]],
|
|
1609
1653
|
[
|
|
1610
1654
|
/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
|
|
1611
1655
|
// Roku
|
|
1612
1656
|
/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
|
|
1613
1657
|
// HbbTV devices
|
|
1614
1658
|
],
|
|
1615
|
-
[[d,
|
|
1659
|
+
[[d, /.+\/(\w+)/, "$1", L, { LG: "lge" }], [r, Ne], [n, y]],
|
|
1616
1660
|
[
|
|
1617
|
-
|
|
1618
|
-
|
|
1661
|
+
///////////////////
|
|
1662
|
+
// CONSOLES
|
|
1663
|
+
///////////////////
|
|
1664
|
+
/(playstation \w+)/i
|
|
1665
|
+
// Playstation
|
|
1619
1666
|
],
|
|
1620
|
-
[
|
|
1667
|
+
[r, [d, ye], [n, Me]],
|
|
1621
1668
|
[
|
|
1622
|
-
/\b(
|
|
1669
|
+
/\b(xbox(?: one)?(?!; xbox))[\); ]/i
|
|
1670
|
+
// Microsoft Xbox
|
|
1623
1671
|
],
|
|
1624
|
-
[[n,
|
|
1672
|
+
[r, [d, Ze], [n, Me]],
|
|
1625
1673
|
[
|
|
1626
|
-
///////////////////
|
|
1627
|
-
// CONSOLES
|
|
1628
|
-
///////////////////
|
|
1629
1674
|
/(ouya)/i,
|
|
1630
1675
|
// Ouya
|
|
1631
|
-
/(nintendo) (\w+)/i
|
|
1676
|
+
/(nintendo) (\w+)/i,
|
|
1632
1677
|
// Nintendo
|
|
1678
|
+
/(retroid) (pocket ([^\)]+))/i
|
|
1679
|
+
// Retroid Pocket
|
|
1633
1680
|
],
|
|
1634
|
-
[d,
|
|
1681
|
+
[d, r, [n, Me]],
|
|
1635
1682
|
[
|
|
1636
1683
|
/droid.+; (shield)( bui|\))/i
|
|
1637
1684
|
// Nvidia Portable
|
|
1638
1685
|
],
|
|
1639
|
-
[
|
|
1640
|
-
[
|
|
1641
|
-
/(playstation \w+)/i
|
|
1642
|
-
// Playstation
|
|
1643
|
-
],
|
|
1644
|
-
[o, [d, fe], [n, Ce]],
|
|
1645
|
-
[
|
|
1646
|
-
/\b(xbox(?: one)?(?!; xbox))[\); ]/i
|
|
1647
|
-
// Microsoft Xbox
|
|
1648
|
-
],
|
|
1649
|
-
[o, [d, Je], [n, Ce]],
|
|
1686
|
+
[r, [d, tt], [n, Me]],
|
|
1650
1687
|
[
|
|
1651
1688
|
///////////////////
|
|
1652
1689
|
// WEARABLES
|
|
@@ -1654,48 +1691,48 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1654
1691
|
/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i
|
|
1655
1692
|
// Samsung Galaxy Watch
|
|
1656
1693
|
],
|
|
1657
|
-
[
|
|
1694
|
+
[r, [d, fe], [n, U]],
|
|
1658
1695
|
[
|
|
1659
1696
|
/((pebble))app/i,
|
|
1660
1697
|
// Pebble
|
|
1661
1698
|
/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i
|
|
1662
1699
|
// Asus ZenWatch / LG Watch / Pixel Watch
|
|
1663
1700
|
],
|
|
1664
|
-
[d,
|
|
1701
|
+
[d, r, [n, U]],
|
|
1665
1702
|
[
|
|
1666
1703
|
/(ow(?:19|20)?we?[1-3]{1,3})/i
|
|
1667
1704
|
// Oppo Watch
|
|
1668
1705
|
],
|
|
1669
|
-
[
|
|
1706
|
+
[r, [d, st], [n, U]],
|
|
1670
1707
|
[
|
|
1671
1708
|
/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
|
|
1672
1709
|
// Apple Watch
|
|
1673
1710
|
],
|
|
1674
|
-
[
|
|
1711
|
+
[r, [d, ee], [n, U]],
|
|
1675
1712
|
[
|
|
1676
1713
|
/(opwwe\d{3})/i
|
|
1677
1714
|
// OnePlus Watch
|
|
1678
1715
|
],
|
|
1679
|
-
[
|
|
1716
|
+
[r, [d, xt], [n, U]],
|
|
1680
1717
|
[
|
|
1681
1718
|
/(moto 360)/i
|
|
1682
1719
|
// Motorola 360
|
|
1683
1720
|
],
|
|
1684
|
-
[
|
|
1721
|
+
[r, [d, et], [n, U]],
|
|
1685
1722
|
[
|
|
1686
1723
|
/(smartwatch 3)/i
|
|
1687
1724
|
// Sony SmartWatch
|
|
1688
1725
|
],
|
|
1689
|
-
[
|
|
1726
|
+
[r, [d, ye], [n, U]],
|
|
1690
1727
|
[
|
|
1691
1728
|
/(g watch r)/i
|
|
1692
1729
|
// LG G Watch R
|
|
1693
1730
|
],
|
|
1694
|
-
[
|
|
1731
|
+
[r, [d, Le], [n, U]],
|
|
1695
1732
|
[
|
|
1696
1733
|
/droid.+; (wt63?0{2,3})\)/i
|
|
1697
1734
|
],
|
|
1698
|
-
[
|
|
1735
|
+
[r, [d, at], [n, U]],
|
|
1699
1736
|
[
|
|
1700
1737
|
///////////////////
|
|
1701
1738
|
// XR
|
|
@@ -1703,17 +1740,22 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1703
1740
|
/droid.+; (glass) \d/i
|
|
1704
1741
|
// Google Glass
|
|
1705
1742
|
],
|
|
1706
|
-
[
|
|
1743
|
+
[r, [d, X], [n, Oe]],
|
|
1707
1744
|
[
|
|
1708
|
-
/(pico) (
|
|
1745
|
+
/(pico) ([\w ]+) os\d/i
|
|
1709
1746
|
// Pico
|
|
1710
1747
|
],
|
|
1711
|
-
[d,
|
|
1748
|
+
[d, r, [n, Oe]],
|
|
1712
1749
|
[
|
|
1713
1750
|
/(quest( \d| pro)?s?).+vr/i
|
|
1714
1751
|
// Meta Quest
|
|
1715
1752
|
],
|
|
1716
|
-
[
|
|
1753
|
+
[r, [d, nt], [n, Oe]],
|
|
1754
|
+
[
|
|
1755
|
+
/mobile vr; rv.+firefox/i
|
|
1756
|
+
// Unidentifiable VR device using Firefox Reality / Wolvic
|
|
1757
|
+
],
|
|
1758
|
+
[[n, Oe]],
|
|
1717
1759
|
[
|
|
1718
1760
|
///////////////////
|
|
1719
1761
|
// EMBEDDED
|
|
@@ -1721,28 +1763,38 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1721
1763
|
/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
|
|
1722
1764
|
// Tesla
|
|
1723
1765
|
],
|
|
1724
|
-
[d, [n,
|
|
1766
|
+
[d, [n, Se]],
|
|
1725
1767
|
[
|
|
1726
1768
|
/(aeobc)\b/i
|
|
1727
1769
|
// Echo Dot
|
|
1728
1770
|
],
|
|
1729
|
-
[
|
|
1771
|
+
[r, [d, Ue], [n, Se]],
|
|
1730
1772
|
[
|
|
1731
1773
|
/(homepod).+mac os/i
|
|
1732
1774
|
// Apple HomePod
|
|
1733
1775
|
],
|
|
1734
|
-
[
|
|
1776
|
+
[r, [d, ee], [n, Se]],
|
|
1735
1777
|
[
|
|
1736
1778
|
/windows iot/i
|
|
1779
|
+
// Unidentifiable embedded device using Windows IoT
|
|
1737
1780
|
],
|
|
1738
|
-
[[n,
|
|
1781
|
+
[[n, Se]],
|
|
1739
1782
|
[
|
|
1740
1783
|
////////////////////
|
|
1741
1784
|
// MIXED (GENERIC)
|
|
1742
1785
|
///////////////////
|
|
1786
|
+
/droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i
|
|
1787
|
+
// Unidentifiable SmartTV
|
|
1788
|
+
],
|
|
1789
|
+
[r, [n, y]],
|
|
1790
|
+
[
|
|
1791
|
+
/\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i
|
|
1792
|
+
],
|
|
1793
|
+
[[n, y]],
|
|
1794
|
+
[
|
|
1743
1795
|
/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+?(mobile|vr|\d) safari/i
|
|
1744
1796
|
],
|
|
1745
|
-
[
|
|
1797
|
+
[r, [n, L, { mobile: "Mobile", xr: "VR", "*": f }]],
|
|
1746
1798
|
[
|
|
1747
1799
|
/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
|
|
1748
1800
|
// Unidentifiable Tablet
|
|
@@ -1752,19 +1804,19 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1752
1804
|
/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
|
|
1753
1805
|
// Unidentifiable Mobile
|
|
1754
1806
|
],
|
|
1755
|
-
[[n,
|
|
1807
|
+
[[n, m]],
|
|
1756
1808
|
[
|
|
1757
1809
|
/droid .+?; ([\w\. -]+)( bui|\))/i
|
|
1758
1810
|
// Generic Android Device
|
|
1759
1811
|
],
|
|
1760
|
-
[
|
|
1812
|
+
[r, [d, "Generic"]]
|
|
1761
1813
|
],
|
|
1762
1814
|
engine: [
|
|
1763
1815
|
[
|
|
1764
1816
|
/windows.+ edge\/([\w\.]+)/i
|
|
1765
1817
|
// EdgeHTML
|
|
1766
1818
|
],
|
|
1767
|
-
[u, [l,
|
|
1819
|
+
[u, [l, _e + "HTML"]],
|
|
1768
1820
|
[
|
|
1769
1821
|
/(arkweb)\/([\w\.]+)/i
|
|
1770
1822
|
// ArkWeb
|
|
@@ -1803,22 +1855,27 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1803
1855
|
os: [
|
|
1804
1856
|
[
|
|
1805
1857
|
// Windows
|
|
1806
|
-
/
|
|
1807
|
-
// Windows
|
|
1858
|
+
/(windows nt) (6\.[23]); arm/i
|
|
1859
|
+
// Windows RT
|
|
1860
|
+
],
|
|
1861
|
+
[[l, /N/, "R"], [u, L, Bt]],
|
|
1862
|
+
[
|
|
1863
|
+
/(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,
|
|
1864
|
+
// Windows IoT/Mobile/Phone
|
|
1865
|
+
// Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11
|
|
1866
|
+
/(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i
|
|
1808
1867
|
],
|
|
1809
1868
|
[l, u],
|
|
1810
1869
|
[
|
|
1811
|
-
/
|
|
1812
|
-
|
|
1870
|
+
/windows nt ?([\d\.\)]*)(?!.+xbox)/i,
|
|
1871
|
+
/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i
|
|
1813
1872
|
],
|
|
1814
|
-
[
|
|
1873
|
+
[[u, /(;|\))/g, "", L, Bt], [l, ht]],
|
|
1815
1874
|
[
|
|
1816
|
-
/windows
|
|
1817
|
-
// Windows
|
|
1818
|
-
/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,
|
|
1819
|
-
/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
|
|
1875
|
+
/(windows ce)\/?([\d\.]*)/i
|
|
1876
|
+
// Windows CE
|
|
1820
1877
|
],
|
|
1821
|
-
[
|
|
1878
|
+
[l, u],
|
|
1822
1879
|
[
|
|
1823
1880
|
// iOS/macOS
|
|
1824
1881
|
/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,
|
|
@@ -1829,7 +1886,7 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1829
1886
|
[[u, /_/g, "."], [l, "iOS"]],
|
|
1830
1887
|
[
|
|
1831
1888
|
/(mac os x) ?([\w\. ]*)/i,
|
|
1832
|
-
/(macintosh|mac_powerpc\b)(?!.+haiku)/i
|
|
1889
|
+
/(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i
|
|
1833
1890
|
// Mac OS
|
|
1834
1891
|
],
|
|
1835
1892
|
[[l, "macOS"], [u, /_/g, "."]],
|
|
@@ -1861,8 +1918,8 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1861
1918
|
[u, [l, V]],
|
|
1862
1919
|
[
|
|
1863
1920
|
// Mobile OSes
|
|
1864
|
-
/droid ([\w\.]+)\b.+(android[- ]x86
|
|
1865
|
-
// Android-x86
|
|
1921
|
+
/droid ([\w\.]+)\b.+(android[- ]x86)/i
|
|
1922
|
+
// Android-x86
|
|
1866
1923
|
],
|
|
1867
1924
|
[u, l],
|
|
1868
1925
|
[
|
|
@@ -1871,15 +1928,17 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1871
1928
|
],
|
|
1872
1929
|
[[l, /(.+)/, "$1 Touch"], u],
|
|
1873
1930
|
[
|
|
1931
|
+
/(harmonyos)[\/ ]?([\d\.]*)/i,
|
|
1932
|
+
// HarmonyOS
|
|
1874
1933
|
// Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
|
|
1875
|
-
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen
|
|
1934
|
+
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i
|
|
1876
1935
|
],
|
|
1877
1936
|
[l, u],
|
|
1878
1937
|
[
|
|
1879
1938
|
/\(bb(10);/i
|
|
1880
1939
|
// BlackBerry 10
|
|
1881
1940
|
],
|
|
1882
|
-
[u, [l,
|
|
1941
|
+
[u, [l, Tt]],
|
|
1883
1942
|
[
|
|
1884
1943
|
/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i
|
|
1885
1944
|
// Symbian
|
|
@@ -1889,13 +1948,18 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1889
1948
|
/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
|
|
1890
1949
|
// Firefox OS
|
|
1891
1950
|
],
|
|
1892
|
-
[u, [l,
|
|
1951
|
+
[u, [l, ke + " OS"]],
|
|
1893
1952
|
[
|
|
1894
|
-
|
|
1895
|
-
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
|
|
1953
|
+
/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,
|
|
1896
1954
|
// WebOS
|
|
1955
|
+
/webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i
|
|
1897
1956
|
],
|
|
1898
1957
|
[u, [l, "webOS"]],
|
|
1958
|
+
[
|
|
1959
|
+
/web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i
|
|
1960
|
+
// https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine
|
|
1961
|
+
],
|
|
1962
|
+
[[u, L, { 25: "120", 24: "108", 23: "94", 22: "87", 6: "79", 5: "68", 4: "53", 3: "38", 2: "538", 1: "537", "*": "TV" }], [l, "webOS"]],
|
|
1899
1963
|
[
|
|
1900
1964
|
/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
|
|
1901
1965
|
// watchOS
|
|
@@ -1925,34 +1989,34 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1925
1989
|
// Other
|
|
1926
1990
|
/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
|
|
1927
1991
|
// Joli/Palm
|
|
1928
|
-
/(mint)[\/\(\) ]?(\w*)/i,
|
|
1992
|
+
/linux.+(mint)[\/\(\) ]?([\w\.]*)/i,
|
|
1929
1993
|
// Mint
|
|
1930
|
-
/(mageia|vectorlinux)[; ]/i,
|
|
1931
|
-
// Mageia/VectorLinux
|
|
1932
|
-
/([kxln]?ubuntu|debian|suse|opensuse|gentoo|
|
|
1933
|
-
// Ubuntu/Debian/SUSE/Gentoo/
|
|
1934
|
-
/(
|
|
1935
|
-
//
|
|
1994
|
+
/(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,
|
|
1995
|
+
// Mageia/VectorLinux/Fuchsia/ArcaOS/Arch
|
|
1996
|
+
/([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
|
|
1997
|
+
// Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix
|
|
1998
|
+
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
|
|
1999
|
+
// Solaris
|
|
2000
|
+
/\b(aix)[; ]([1-9\.]{0,4})/i,
|
|
2001
|
+
// AIX
|
|
2002
|
+
/(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,
|
|
2003
|
+
// Hurd/Linux/MorphOS
|
|
1936
2004
|
/(gnu) ?([\w\.]*)/i,
|
|
1937
2005
|
// GNU
|
|
1938
2006
|
/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
|
|
1939
2007
|
// FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
|
|
1940
|
-
/(haiku) (\
|
|
2008
|
+
/(haiku) ?(r\d)?/i
|
|
1941
2009
|
// Haiku
|
|
1942
2010
|
],
|
|
1943
2011
|
[l, u],
|
|
1944
2012
|
[
|
|
1945
|
-
/(sunos) ?([\
|
|
2013
|
+
/(sunos) ?([\d\.]*)/i
|
|
1946
2014
|
// Solaris
|
|
1947
2015
|
],
|
|
1948
2016
|
[[l, "Solaris"], u],
|
|
1949
2017
|
[
|
|
1950
|
-
|
|
1951
|
-
//
|
|
1952
|
-
/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
|
|
1953
|
-
// AIX
|
|
1954
|
-
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
|
|
1955
|
-
// BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
|
|
2018
|
+
/\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,
|
|
2019
|
+
// BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS
|
|
1956
2020
|
/(unix) ?([\w\.]*)/i
|
|
1957
2021
|
// UNIX
|
|
1958
2022
|
],
|
|
@@ -1960,229 +2024,258 @@ var ms = "2.0.3", ct = 500, Et = "user-agent", le = "", Ct = "?", Be = "function
|
|
|
1960
2024
|
]
|
|
1961
2025
|
}, Re = function() {
|
|
1962
2026
|
var i = { init: {}, isIgnore: {}, isIgnoreRgx: {}, toString: {} };
|
|
1963
|
-
return
|
|
1964
|
-
[S, [l, u,
|
|
1965
|
-
[
|
|
1966
|
-
[R, [n,
|
|
1967
|
-
[
|
|
1968
|
-
[
|
|
1969
|
-
]),
|
|
1970
|
-
[S, [u,
|
|
1971
|
-
[
|
|
1972
|
-
[
|
|
1973
|
-
]),
|
|
2027
|
+
return N.call(i.init, [
|
|
2028
|
+
[S, [l, u, Ie, n]],
|
|
2029
|
+
[D, [I]],
|
|
2030
|
+
[R, [n, r, d]],
|
|
2031
|
+
[O, [l, u]],
|
|
2032
|
+
[x, [l, u]]
|
|
2033
|
+
]), N.call(i.isIgnore, [
|
|
2034
|
+
[S, [u, Ie]],
|
|
2035
|
+
[O, [u]],
|
|
2036
|
+
[x, [u]]
|
|
2037
|
+
]), N.call(i.isIgnoreRgx, [
|
|
1974
2038
|
[S, / ?browser$/i],
|
|
1975
|
-
[
|
|
1976
|
-
]),
|
|
2039
|
+
[x, / ?os$/i]
|
|
2040
|
+
]), N.call(i.toString, [
|
|
1977
2041
|
[S, [l, u]],
|
|
1978
|
-
[
|
|
1979
|
-
[R, [d,
|
|
1980
|
-
[
|
|
1981
|
-
[
|
|
2042
|
+
[D, [I]],
|
|
2043
|
+
[R, [d, r]],
|
|
2044
|
+
[O, [l, u]],
|
|
2045
|
+
[x, [l, u]]
|
|
1982
2046
|
]), i;
|
|
1983
|
-
}(),
|
|
1984
|
-
var e = Re.init[t], s = Re.isIgnore[t] || 0, a = Re.isIgnoreRgx[t] || 0,
|
|
1985
|
-
function
|
|
1986
|
-
|
|
2047
|
+
}(), As = function(i, t) {
|
|
2048
|
+
var e = Re.init[t], s = Re.isIgnore[t] || 0, a = Re.isIgnoreRgx[t] || 0, c = Re.toString[t] || 0;
|
|
2049
|
+
function o() {
|
|
2050
|
+
N.call(this, e);
|
|
1987
2051
|
}
|
|
1988
|
-
return
|
|
2052
|
+
return o.prototype.getItem = function() {
|
|
1989
2053
|
return i;
|
|
1990
|
-
},
|
|
1991
|
-
return z ? z.getHighEntropyValues(
|
|
1992
|
-
return i.setCH(new
|
|
2054
|
+
}, o.prototype.withClientHints = function() {
|
|
2055
|
+
return z ? z.getHighEntropyValues(Xt).then(function(p) {
|
|
2056
|
+
return i.setCH(new Jt(p, !1)).parseCH().get();
|
|
1993
2057
|
}) : i.parseCH().get();
|
|
1994
|
-
},
|
|
2058
|
+
}, o.prototype.withFeatureCheck = function() {
|
|
1995
2059
|
return i.detectFeature().get();
|
|
1996
|
-
}, t !=
|
|
2060
|
+
}, t != ie && (o.prototype.is = function(p) {
|
|
1997
2061
|
var h = !1;
|
|
1998
|
-
for (var
|
|
1999
|
-
if (this.hasOwnProperty(
|
|
2000
|
-
if (h = !0,
|
|
2001
|
-
} else if (
|
|
2062
|
+
for (var w in this)
|
|
2063
|
+
if (this.hasOwnProperty(w) && !pt(s, w) && j(a ? ge(a, this[w]) : this[w]) == j(a ? ge(a, p) : p)) {
|
|
2064
|
+
if (h = !0, p != W) break;
|
|
2065
|
+
} else if (p == W && h) {
|
|
2002
2066
|
h = !h;
|
|
2003
2067
|
break;
|
|
2004
2068
|
}
|
|
2005
2069
|
return h;
|
|
2006
|
-
},
|
|
2007
|
-
var
|
|
2008
|
-
for (var h in
|
|
2009
|
-
typeof this[
|
|
2010
|
-
return
|
|
2011
|
-
}), z || (
|
|
2012
|
-
var h = this,
|
|
2013
|
-
for (var
|
|
2014
|
-
h.hasOwnProperty(
|
|
2070
|
+
}, o.prototype.toString = function() {
|
|
2071
|
+
var p = he;
|
|
2072
|
+
for (var h in c)
|
|
2073
|
+
typeof this[c[h]] !== W && (p += (p ? " " : he) + this[c[h]]);
|
|
2074
|
+
return p || W;
|
|
2075
|
+
}), z || (o.prototype.then = function(p) {
|
|
2076
|
+
var h = this, w = function() {
|
|
2077
|
+
for (var E in h)
|
|
2078
|
+
h.hasOwnProperty(E) && (this[E] = h[E]);
|
|
2015
2079
|
};
|
|
2016
|
-
|
|
2017
|
-
is:
|
|
2018
|
-
toString:
|
|
2080
|
+
w.prototype = {
|
|
2081
|
+
is: o.prototype.is,
|
|
2082
|
+
toString: o.prototype.toString
|
|
2019
2083
|
};
|
|
2020
|
-
var
|
|
2021
|
-
return g
|
|
2022
|
-
}), new
|
|
2084
|
+
var g = new w();
|
|
2085
|
+
return p(g), g;
|
|
2086
|
+
}), new o();
|
|
2023
2087
|
};
|
|
2024
|
-
function
|
|
2025
|
-
if (i = i || {},
|
|
2026
|
-
|
|
2027
|
-
[
|
|
2028
|
-
[
|
|
2029
|
-
[
|
|
2030
|
-
[
|
|
2031
|
-
[
|
|
2032
|
-
[
|
|
2033
|
-
[
|
|
2034
|
-
[
|
|
2035
|
-
[
|
|
2088
|
+
function Jt(i, t) {
|
|
2089
|
+
if (i = i || {}, N.call(this, Xt), t)
|
|
2090
|
+
N.call(this, [
|
|
2091
|
+
[gt, ot(i[$])],
|
|
2092
|
+
[wt, ot(i[fs])],
|
|
2093
|
+
[m, /\?1/.test(i[Es])],
|
|
2094
|
+
[r, Ce(i[Cs])],
|
|
2095
|
+
[ae, Ce(i[Qt])],
|
|
2096
|
+
[mt, Ce(i[Ms])],
|
|
2097
|
+
[I, Ce(i[ys])],
|
|
2098
|
+
[J, ot(i[vs])],
|
|
2099
|
+
[qe, Ce(i[ks])]
|
|
2036
2100
|
]);
|
|
2037
2101
|
else
|
|
2038
2102
|
for (var e in i)
|
|
2039
|
-
this.hasOwnProperty(e) && typeof i[e] !==
|
|
2103
|
+
this.hasOwnProperty(e) && typeof i[e] !== W && (this[e] = i[e]);
|
|
2040
2104
|
}
|
|
2041
|
-
function
|
|
2105
|
+
function Dt(i, t, e, s) {
|
|
2042
2106
|
return this.get = function(a) {
|
|
2043
2107
|
return a ? this.data.hasOwnProperty(a) ? this.data[a] : void 0 : this.data;
|
|
2044
|
-
}, this.set = function(a,
|
|
2045
|
-
return this.data[a] =
|
|
2108
|
+
}, this.set = function(a, c) {
|
|
2109
|
+
return this.data[a] = c, this;
|
|
2046
2110
|
}, this.setCH = function(a) {
|
|
2047
2111
|
return this.uaCH = a, this;
|
|
2048
2112
|
}, this.detectFeature = function() {
|
|
2049
|
-
if (
|
|
2113
|
+
if (T && T.userAgent == this.ua)
|
|
2050
2114
|
switch (this.itemType) {
|
|
2051
2115
|
case S:
|
|
2052
|
-
|
|
2116
|
+
T.brave && typeof T.brave.isBrave == Fe && this.set(l, "Brave");
|
|
2053
2117
|
break;
|
|
2054
2118
|
case R:
|
|
2055
|
-
!this.get(n) && z && z[
|
|
2119
|
+
!this.get(n) && z && z[m] && this.set(n, m), this.get(r) == "Macintosh" && T && typeof T.standalone !== W && T.maxTouchPoints && T.maxTouchPoints > 2 && this.set(r, "iPad").set(n, f);
|
|
2056
2120
|
break;
|
|
2057
|
-
case
|
|
2058
|
-
!this.get(l) && z && z[
|
|
2121
|
+
case x:
|
|
2122
|
+
!this.get(l) && z && z[ae] && this.set(l, z[ae]);
|
|
2059
2123
|
break;
|
|
2060
|
-
case
|
|
2061
|
-
var a = this.data,
|
|
2062
|
-
return a[
|
|
2124
|
+
case ie:
|
|
2125
|
+
var a = this.data, c = function(o) {
|
|
2126
|
+
return a[o].getItem().detectFeature().get();
|
|
2063
2127
|
};
|
|
2064
|
-
this.set(S,
|
|
2128
|
+
this.set(S, c(S)).set(D, c(D)).set(R, c(R)).set(O, c(O)).set(x, c(x));
|
|
2065
2129
|
}
|
|
2066
2130
|
return this;
|
|
2067
2131
|
}, this.parseUA = function() {
|
|
2068
|
-
return this.itemType !=
|
|
2132
|
+
return this.itemType != ie && ct.call(this.data, this.ua, this.rgxMap), this.itemType == S && this.set(Ie, rt(this.get(u))), this;
|
|
2069
2133
|
}, this.parseCH = function() {
|
|
2070
|
-
var a = this.uaCH,
|
|
2134
|
+
var a = this.uaCH, c = this.rgxMap;
|
|
2071
2135
|
switch (this.itemType) {
|
|
2072
2136
|
case S:
|
|
2073
|
-
case
|
|
2074
|
-
var
|
|
2075
|
-
if (
|
|
2076
|
-
for (var h
|
|
2077
|
-
var
|
|
2078
|
-
this.itemType == S && !/not.a.brand/i.test(
|
|
2079
|
-
Chrome: "Google Chrome",
|
|
2080
|
-
Edge: "Microsoft Edge",
|
|
2081
|
-
"Chrome WebView": "Android WebView",
|
|
2082
|
-
"Chrome Headless": "HeadlessChrome",
|
|
2083
|
-
"Huawei Browser": "HuaweiBrowser",
|
|
2084
|
-
"MIUI Browser": "Miui Browser",
|
|
2085
|
-
"Opera Mobi": "OperaMobile",
|
|
2086
|
-
Yandex: "YaBrowser"
|
|
2087
|
-
}), this.set(l, p).set(u, m).set(Se, nt(m)), g = p), this.itemType == x && p == Ut && this.set(u, m);
|
|
2137
|
+
case O:
|
|
2138
|
+
var o = a[wt] || a[gt], p;
|
|
2139
|
+
if (o)
|
|
2140
|
+
for (var h = 0; h < o.length; h++) {
|
|
2141
|
+
var w = o[h].brand || o[h], g = o[h].version;
|
|
2142
|
+
this.itemType == S && !/not.a.brand/i.test(w) && (!p || /Chrom/.test(p) && w != Lt || p == _e && /WebView2/.test(w)) && (w = L(w, Ts), p = this.get(l), p && !/Chrom/.test(p) && /Chrom/.test(w) || this.set(l, w).set(u, g).set(Ie, rt(g)), p = w), this.itemType == O && w == Lt && this.set(u, g);
|
|
2088
2143
|
}
|
|
2089
2144
|
break;
|
|
2090
|
-
case
|
|
2091
|
-
var
|
|
2092
|
-
|
|
2145
|
+
case D:
|
|
2146
|
+
var E = a[I];
|
|
2147
|
+
E && (E && a[qe] == "64" && (E += "64"), ct.call(this.data, E + ";", c));
|
|
2093
2148
|
break;
|
|
2094
2149
|
case R:
|
|
2095
|
-
if (a[
|
|
2150
|
+
if (a[m] && this.set(n, m), a[r] && (this.set(r, a[r]), !this.get(n) || !this.get(d))) {
|
|
2096
2151
|
var A = {};
|
|
2097
|
-
|
|
2152
|
+
ct.call(A, "droid 9; " + a[r] + ")", c), !this.get(n) && A.type && this.set(n, A.type), !this.get(d) && A.vendor && this.set(d, A.vendor);
|
|
2098
2153
|
}
|
|
2099
|
-
if (a[
|
|
2154
|
+
if (a[J]) {
|
|
2100
2155
|
var G;
|
|
2101
|
-
if (typeof a[
|
|
2102
|
-
for (var
|
|
2103
|
-
G =
|
|
2156
|
+
if (typeof a[J] != "string")
|
|
2157
|
+
for (var me = 0; !G && me < a[J].length; )
|
|
2158
|
+
G = L(a[J][me++], _t);
|
|
2104
2159
|
else
|
|
2105
|
-
G =
|
|
2160
|
+
G = L(a[J], _t);
|
|
2106
2161
|
this.set(n, G);
|
|
2107
2162
|
}
|
|
2108
2163
|
break;
|
|
2109
|
-
case
|
|
2110
|
-
var
|
|
2111
|
-
if (
|
|
2112
|
-
var
|
|
2113
|
-
|
|
2164
|
+
case x:
|
|
2165
|
+
var F = a[ae];
|
|
2166
|
+
if (F) {
|
|
2167
|
+
var Y = a[mt];
|
|
2168
|
+
F == ht && (Y = parseInt(rt(Y), 10) >= 13 ? "11" : "10"), this.set(l, F).set(u, Y);
|
|
2114
2169
|
}
|
|
2115
|
-
this.get(l) ==
|
|
2170
|
+
this.get(l) == ht && a[r] == "Xbox" && this.set(l, "Xbox").set(u, void 0);
|
|
2116
2171
|
break;
|
|
2117
|
-
case
|
|
2118
|
-
var
|
|
2119
|
-
return
|
|
2172
|
+
case ie:
|
|
2173
|
+
var K = this.data, H = function(xe) {
|
|
2174
|
+
return K[xe].getItem().setCH(a).parseCH().get();
|
|
2120
2175
|
};
|
|
2121
|
-
this.set(S, H(S)).set(
|
|
2176
|
+
this.set(S, H(S)).set(D, H(D)).set(R, H(R)).set(O, H(O)).set(x, H(x));
|
|
2122
2177
|
}
|
|
2123
2178
|
return this;
|
|
2124
|
-
},
|
|
2179
|
+
}, N.call(this, [
|
|
2125
2180
|
["itemType", i],
|
|
2126
2181
|
["ua", t],
|
|
2127
2182
|
["uaCH", s],
|
|
2128
2183
|
["rgxMap", e],
|
|
2129
|
-
["data",
|
|
2184
|
+
["data", As(this, i)]
|
|
2130
2185
|
]), this;
|
|
2131
2186
|
}
|
|
2132
|
-
function
|
|
2133
|
-
if (typeof i ===
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2187
|
+
function B(i, t, e) {
|
|
2188
|
+
if (typeof i === pe ? (De(i, !0) ? (typeof t === pe && (e = t), t = i) : (e = i, t = void 0), i = void 0) : typeof i === ut && !De(t, !0) && (e = t, t = void 0), e)
|
|
2189
|
+
if (typeof e.append === Fe) {
|
|
2190
|
+
var s = {};
|
|
2191
|
+
e.forEach(function(g, E) {
|
|
2192
|
+
s[String(E).toLowerCase()] = g;
|
|
2193
|
+
}), e = s;
|
|
2194
|
+
} else {
|
|
2195
|
+
var a = {};
|
|
2196
|
+
for (var c in e)
|
|
2197
|
+
e.hasOwnProperty(c) && (a[String(c).toLowerCase()] = e[c]);
|
|
2198
|
+
e = a;
|
|
2199
|
+
}
|
|
2200
|
+
if (!(this instanceof B))
|
|
2201
|
+
return new B(i, t, e).getResult();
|
|
2202
|
+
var o = typeof i === ut ? i : (
|
|
2142
2203
|
// Passed user-agent string
|
|
2143
|
-
e && e[
|
|
2204
|
+
e && e[Mt] ? e[Mt] : (
|
|
2144
2205
|
// User-Agent from passed headers
|
|
2145
|
-
|
|
2206
|
+
T && T.userAgent ? T.userAgent : (
|
|
2146
2207
|
// navigator.userAgent
|
|
2147
|
-
|
|
2208
|
+
he
|
|
2148
2209
|
)
|
|
2149
2210
|
)
|
|
2150
|
-
),
|
|
2151
|
-
return
|
|
2152
|
-
return new
|
|
2211
|
+
), p = new Jt(e, !0), h = t ? Is(Ft, t) : Ft, w = function(g) {
|
|
2212
|
+
return g == ie ? function() {
|
|
2213
|
+
return new Dt(g, o, h, p).set("ua", o).set(S, this.getBrowser()).set(D, this.getCPU()).set(R, this.getDevice()).set(O, this.getEngine()).set(x, this.getOS()).get();
|
|
2153
2214
|
} : function() {
|
|
2154
|
-
return new
|
|
2215
|
+
return new Dt(g, o, h[g], p).parseUA().get();
|
|
2155
2216
|
};
|
|
2156
2217
|
};
|
|
2157
|
-
return
|
|
2158
|
-
["getBrowser",
|
|
2159
|
-
["getCPU",
|
|
2160
|
-
["getDevice",
|
|
2161
|
-
["getEngine",
|
|
2162
|
-
["getOS",
|
|
2163
|
-
["getResult",
|
|
2218
|
+
return N.call(this, [
|
|
2219
|
+
["getBrowser", w(S)],
|
|
2220
|
+
["getCPU", w(D)],
|
|
2221
|
+
["getDevice", w(R)],
|
|
2222
|
+
["getEngine", w(O)],
|
|
2223
|
+
["getOS", w(x)],
|
|
2224
|
+
["getResult", w(ie)],
|
|
2164
2225
|
["getUA", function() {
|
|
2165
|
-
return
|
|
2226
|
+
return o;
|
|
2166
2227
|
}],
|
|
2167
|
-
["setUA", function(
|
|
2168
|
-
return
|
|
2228
|
+
["setUA", function(g) {
|
|
2229
|
+
return we(g) && (o = g.length > lt ? Ne(g, lt) : g), this;
|
|
2169
2230
|
}]
|
|
2170
|
-
]).setUA(
|
|
2231
|
+
]).setUA(o), this;
|
|
2171
2232
|
}
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
class
|
|
2233
|
+
B.VERSION = bs;
|
|
2234
|
+
B.BROWSER = We([l, u, Ie, n]);
|
|
2235
|
+
B.CPU = We([I]);
|
|
2236
|
+
B.DEVICE = We([r, d, n, Me, m, y, f, U, Se]);
|
|
2237
|
+
B.ENGINE = B.OS = We([l, u]);
|
|
2238
|
+
class Ps {
|
|
2178
2239
|
constructor(t, e) {
|
|
2179
2240
|
b(this, "config");
|
|
2180
2241
|
b(this, "sdkConfig");
|
|
2181
|
-
this
|
|
2242
|
+
b(this, "error");
|
|
2243
|
+
this.config = t, this.sdkConfig = e, this.on("openGame", async () => {
|
|
2244
|
+
try {
|
|
2245
|
+
this.error = void 0;
|
|
2246
|
+
const s = await this.openGame();
|
|
2247
|
+
this.send("openGameResponse", s);
|
|
2248
|
+
} catch (s) {
|
|
2249
|
+
this.error = s, this.send("openGameError", this.error);
|
|
2250
|
+
}
|
|
2251
|
+
}), this.on("play", async (s) => {
|
|
2252
|
+
try {
|
|
2253
|
+
this.error = void 0;
|
|
2254
|
+
const a = await this.play(s);
|
|
2255
|
+
this.send("playResponse", a);
|
|
2256
|
+
} catch (a) {
|
|
2257
|
+
this.error = a, this.send("playError", this.error);
|
|
2258
|
+
}
|
|
2259
|
+
}), this.on("freeRounds", async (s) => {
|
|
2260
|
+
try {
|
|
2261
|
+
this.error = void 0;
|
|
2262
|
+
const a = await this.freeRounds(s);
|
|
2263
|
+
this.send("freeRoundsResponse", a);
|
|
2264
|
+
} catch (a) {
|
|
2265
|
+
this.error = a, this.send("freeRoundsError", this.error);
|
|
2266
|
+
}
|
|
2267
|
+
}), this.on("getBalance", async () => {
|
|
2268
|
+
try {
|
|
2269
|
+
this.error = void 0;
|
|
2270
|
+
const s = await this.getBalance();
|
|
2271
|
+
this.send("balance", s);
|
|
2272
|
+
} catch {
|
|
2273
|
+
}
|
|
2274
|
+
}), this.showHistory = this.showHistory.bind(this), this.on("history", this.showHistory);
|
|
2182
2275
|
}
|
|
2183
2276
|
on(t, e, s) {
|
|
2184
|
-
const a = function(
|
|
2185
|
-
|
|
2277
|
+
const a = function(o) {
|
|
2278
|
+
o.data.message !== `kalamba:wrapper-rgs:${t}` && o.data.message !== `kalamba:wrapper:${t}` || e(o.data.payload);
|
|
2186
2279
|
};
|
|
2187
2280
|
window.addEventListener("message", a, s);
|
|
2188
2281
|
}
|
|
@@ -2192,8 +2285,25 @@ class As {
|
|
|
2192
2285
|
payload: e
|
|
2193
2286
|
});
|
|
2194
2287
|
}
|
|
2288
|
+
async openGame() {
|
|
2289
|
+
throw new Error("Not implemented");
|
|
2290
|
+
}
|
|
2291
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2292
|
+
async play(t) {
|
|
2293
|
+
throw new Error("Not implemented");
|
|
2294
|
+
}
|
|
2295
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2296
|
+
async freeRounds(t) {
|
|
2297
|
+
throw new Error("Not implemented");
|
|
2298
|
+
}
|
|
2299
|
+
async getBalance() {
|
|
2300
|
+
throw new Error("Not implemented");
|
|
2301
|
+
}
|
|
2302
|
+
async showHistory() {
|
|
2303
|
+
throw new Error("Not implemented");
|
|
2304
|
+
}
|
|
2195
2305
|
}
|
|
2196
|
-
class
|
|
2306
|
+
class xs {
|
|
2197
2307
|
constructor(t) {
|
|
2198
2308
|
b(this, "socket", null);
|
|
2199
2309
|
b(this, "webSocketUrl");
|
|
@@ -2253,7 +2363,7 @@ class Ps {
|
|
|
2253
2363
|
s !== -1 && this.eventListeners[t].splice(s, 1);
|
|
2254
2364
|
}
|
|
2255
2365
|
}
|
|
2256
|
-
function
|
|
2366
|
+
function Be(i) {
|
|
2257
2367
|
return JSON.parse(i == null ? void 0 : i.data);
|
|
2258
2368
|
}
|
|
2259
2369
|
function Os(i) {
|
|
@@ -2264,20 +2374,20 @@ function Nt(i) {
|
|
|
2264
2374
|
var t;
|
|
2265
2375
|
return ((t = i == null ? void 0 : i.header) == null ? void 0 : t.name) === "RealityCheck";
|
|
2266
2376
|
}
|
|
2267
|
-
function
|
|
2377
|
+
function Ge(i) {
|
|
2268
2378
|
return i.header.name === "GameEvent";
|
|
2269
2379
|
}
|
|
2270
|
-
function
|
|
2271
|
-
return
|
|
2380
|
+
function Us(i) {
|
|
2381
|
+
return Ge(i) && i.body.event === "OPEN_GAME";
|
|
2272
2382
|
}
|
|
2273
|
-
function
|
|
2383
|
+
function Gt(i) {
|
|
2274
2384
|
return i.header.code !== 1;
|
|
2275
2385
|
}
|
|
2276
|
-
function
|
|
2277
|
-
return
|
|
2386
|
+
function Ls(i) {
|
|
2387
|
+
return Ge(i) && i.body.event.includes("_RESULT");
|
|
2278
2388
|
}
|
|
2279
|
-
var
|
|
2280
|
-
class Rs extends
|
|
2389
|
+
var ne, Te;
|
|
2390
|
+
class Rs extends xs {
|
|
2281
2391
|
constructor(e, s) {
|
|
2282
2392
|
const a = new URL(e.apiUrl);
|
|
2283
2393
|
a.searchParams.set("cageCode", e.cageCode), a.searchParams.set("gameCode", e.gameCode), a.searchParams.set("operatorCode", e.operatorCode), a.searchParams.set("playMode", e.playMode), a.searchParams.set("token", e.token), a.searchParams.set("username", e.username);
|
|
@@ -2311,13 +2421,13 @@ class Rs extends Ps {
|
|
|
2311
2421
|
*/
|
|
2312
2422
|
b(this, "seqId", 0);
|
|
2313
2423
|
b(this, "gameCode");
|
|
2314
|
-
M(this,
|
|
2315
|
-
M(this,
|
|
2424
|
+
M(this, ne);
|
|
2425
|
+
M(this, Te);
|
|
2316
2426
|
b(this, "onMessage", (e) => {
|
|
2317
|
-
const s =
|
|
2318
|
-
(
|
|
2427
|
+
const s = Be(e);
|
|
2428
|
+
(Ge(s) || Os(s) || Nt(s)) && this.sendAcknowledgement(s), Nt(s) && this.handleRealityCheck(s);
|
|
2319
2429
|
});
|
|
2320
|
-
this.eventListeners.realityCheck = [], this.gameCode = e.gameCode, v(this,
|
|
2430
|
+
this.eventListeners.realityCheck = [], this.gameCode = e.gameCode, v(this, ne, s.requestTimeoutMs), v(this, Te, s.gameVersion ?? "unknown"), this.addEventListener("message", this.onMessage);
|
|
2321
2431
|
}
|
|
2322
2432
|
handleRealityCheck(e) {
|
|
2323
2433
|
this.eventListeners.realityCheck.forEach((s) => {
|
|
@@ -2354,89 +2464,89 @@ class Rs extends Ps {
|
|
|
2354
2464
|
}
|
|
2355
2465
|
request(e, s) {
|
|
2356
2466
|
const a = this.buildPayload(e, s);
|
|
2357
|
-
return new Promise((
|
|
2358
|
-
setTimeout(() =>
|
|
2359
|
-
const
|
|
2360
|
-
const
|
|
2467
|
+
return new Promise((c, o) => {
|
|
2468
|
+
setTimeout(() => o({ type: "timeout" }), k(this, ne));
|
|
2469
|
+
const p = (h) => {
|
|
2470
|
+
const w = Be(h);
|
|
2361
2471
|
try {
|
|
2362
|
-
e.cId ===
|
|
2472
|
+
e.cId === w.header.cId && (this.removeEventListener("message", p), w.header.code === 1 ? c(w) : o({ message: w, type: "error" }));
|
|
2363
2473
|
} catch {
|
|
2364
|
-
|
|
2474
|
+
o({ message: w, type: "error" });
|
|
2365
2475
|
}
|
|
2366
2476
|
};
|
|
2367
|
-
this.addEventListener("message",
|
|
2477
|
+
this.addEventListener("message", p), this.send(a);
|
|
2368
2478
|
});
|
|
2369
2479
|
}
|
|
2370
2480
|
freeRounds(e) {
|
|
2371
2481
|
const s = this.buildHeader("ActivateFreeRound");
|
|
2372
2482
|
return this.request(s, e).then((a) => a.body).catch((a) => {
|
|
2373
|
-
var
|
|
2374
|
-
throw { data: (
|
|
2483
|
+
var c;
|
|
2484
|
+
throw { data: (c = a == null ? void 0 : a.message) == null ? void 0 : c.body, type: a.type };
|
|
2375
2485
|
});
|
|
2376
2486
|
}
|
|
2377
2487
|
async authenticate(e = !1) {
|
|
2378
2488
|
const s = this.buildHeader("Authenticate"), a = {
|
|
2379
2489
|
clientType: 3,
|
|
2380
|
-
version: k(this,
|
|
2490
|
+
version: k(this, Te),
|
|
2381
2491
|
reconnect: e
|
|
2382
2492
|
};
|
|
2383
|
-
return this.request(s, a).then((
|
|
2384
|
-
var
|
|
2385
|
-
throw { data: (
|
|
2493
|
+
return this.request(s, a).then((c) => c.body).catch((c) => {
|
|
2494
|
+
var o;
|
|
2495
|
+
throw { data: (o = c == null ? void 0 : c.message) == null ? void 0 : o.body, type: c.type };
|
|
2386
2496
|
});
|
|
2387
2497
|
}
|
|
2388
2498
|
async getBalance() {
|
|
2389
2499
|
const e = this.buildHeader("GetBalance"), s = {};
|
|
2390
2500
|
return this.request(e, s).then((a) => a.body).catch((a) => {
|
|
2391
|
-
var
|
|
2392
|
-
throw { data: (
|
|
2501
|
+
var c;
|
|
2502
|
+
throw { data: (c = a == null ? void 0 : a.message) == null ? void 0 : c.body, type: a.type };
|
|
2393
2503
|
});
|
|
2394
2504
|
}
|
|
2395
2505
|
async openGame() {
|
|
2396
2506
|
const e = this.buildHeader("OpenGame"), s = {
|
|
2397
2507
|
gameCode: this.gameCode
|
|
2398
2508
|
};
|
|
2399
|
-
return new Promise((a,
|
|
2400
|
-
const
|
|
2401
|
-
const h =
|
|
2402
|
-
|
|
2509
|
+
return new Promise((a, c) => {
|
|
2510
|
+
const o = (p) => {
|
|
2511
|
+
const h = Be(p);
|
|
2512
|
+
Us(h) ? (this.removeEventListener("message", o), a(h.body)) : Gt(h) && c({ data: h.body, type: "error" });
|
|
2403
2513
|
};
|
|
2404
|
-
this.addEventListener("message",
|
|
2405
|
-
(
|
|
2514
|
+
this.addEventListener("message", o), this.request(e, s).catch(
|
|
2515
|
+
(p) => {
|
|
2406
2516
|
var h;
|
|
2407
|
-
return
|
|
2517
|
+
return c({ data: (h = p == null ? void 0 : p.message) == null ? void 0 : h.body, type: p.type });
|
|
2408
2518
|
}
|
|
2409
2519
|
);
|
|
2410
2520
|
});
|
|
2411
2521
|
}
|
|
2412
2522
|
sendAcknowledgement(e) {
|
|
2413
|
-
const { name: s, cId: a } = e.header,
|
|
2414
|
-
this.send(
|
|
2523
|
+
const { name: s, cId: a } = e.header, c = this.buildHeader(s, a), o = this.buildPayload(c, {});
|
|
2524
|
+
this.send(o);
|
|
2415
2525
|
}
|
|
2416
2526
|
sendAction(e, s) {
|
|
2417
|
-
const a = this.buildHeader("GameAction"),
|
|
2527
|
+
const a = this.buildHeader("GameAction"), c = {
|
|
2418
2528
|
...this.getBodyExtras(e),
|
|
2419
2529
|
data: s
|
|
2420
2530
|
};
|
|
2421
|
-
return new Promise((
|
|
2422
|
-
const h = (
|
|
2423
|
-
const
|
|
2424
|
-
|
|
2531
|
+
return new Promise((o, p) => {
|
|
2532
|
+
const h = (w) => {
|
|
2533
|
+
const g = Be(w);
|
|
2534
|
+
Ge(g) && c.seqId === g.body.correlationSeqId && (this.removeEventListener("message", h), Ls(g) ? o(g.body) : Gt(g) && p({ data: g.body, type: "error" }));
|
|
2425
2535
|
};
|
|
2426
|
-
this.addEventListener("message", h), this.request(a,
|
|
2427
|
-
(
|
|
2428
|
-
var
|
|
2429
|
-
return
|
|
2536
|
+
this.addEventListener("message", h), this.request(a, c).catch(
|
|
2537
|
+
(w) => {
|
|
2538
|
+
var g;
|
|
2539
|
+
return p({ data: (g = w == null ? void 0 : w.message) == null ? void 0 : g.body, type: w.type });
|
|
2430
2540
|
}
|
|
2431
2541
|
);
|
|
2432
2542
|
});
|
|
2433
2543
|
}
|
|
2434
2544
|
setRequestTimeoutMs(e) {
|
|
2435
|
-
v(this,
|
|
2545
|
+
v(this, ne, e);
|
|
2436
2546
|
}
|
|
2437
2547
|
}
|
|
2438
|
-
|
|
2439
|
-
const
|
|
2548
|
+
ne = new WeakMap(), Te = new WeakMap();
|
|
2549
|
+
const Bs = {
|
|
2440
2550
|
CA_BC: "CA",
|
|
2441
2551
|
CA_ON: "CA",
|
|
2442
2552
|
GER: "DE",
|
|
@@ -2445,10 +2555,10 @@ const Ls = {
|
|
|
2445
2555
|
US_NJ: "US",
|
|
2446
2556
|
USA: "US"
|
|
2447
2557
|
};
|
|
2448
|
-
function
|
|
2449
|
-
return !i || i === "NOT_APPLICABLE" ? null :
|
|
2558
|
+
function Ht(i) {
|
|
2559
|
+
return !i || i === "NOT_APPLICABLE" ? null : Bs[i] ?? i;
|
|
2450
2560
|
}
|
|
2451
|
-
function
|
|
2561
|
+
function Yt(i) {
|
|
2452
2562
|
const t = i.contract;
|
|
2453
2563
|
return t ? {
|
|
2454
2564
|
contract: {
|
|
@@ -2459,7 +2569,7 @@ function Jt(i) {
|
|
|
2459
2569
|
coinValueInCents: t.coinValueInCents,
|
|
2460
2570
|
country: t.countryCode,
|
|
2461
2571
|
currency: t.currencyCode,
|
|
2462
|
-
jurisdiction:
|
|
2572
|
+
jurisdiction: Ht(t.jurisdictionCode),
|
|
2463
2573
|
uiMessages: t.uiMessages,
|
|
2464
2574
|
username: t.username
|
|
2465
2575
|
}
|
|
@@ -2472,21 +2582,21 @@ function Jt(i) {
|
|
|
2472
2582
|
coinValueInCents: i.coinValueInCents,
|
|
2473
2583
|
country: i.countryCode,
|
|
2474
2584
|
currency: i.currencyCode,
|
|
2475
|
-
jurisdiction:
|
|
2585
|
+
jurisdiction: Ht(i.jurisdictionCode),
|
|
2476
2586
|
uiMessages: i.uiMessages,
|
|
2477
2587
|
username: i.username
|
|
2478
2588
|
}
|
|
2479
2589
|
};
|
|
2480
2590
|
}
|
|
2481
|
-
function
|
|
2591
|
+
function Zt(i) {
|
|
2482
2592
|
var t, e;
|
|
2483
2593
|
return {
|
|
2484
2594
|
// SDK error codes are the same as RGS error codes so we don't need any mapping here
|
|
2485
|
-
code: ((t = i.data) == null ? void 0 : t.code) ??
|
|
2595
|
+
code: ((t = i.data) == null ? void 0 : t.code) ?? se.UNKNOWN,
|
|
2486
2596
|
details: (e = i.data) == null ? void 0 : e.details
|
|
2487
2597
|
};
|
|
2488
2598
|
}
|
|
2489
|
-
function
|
|
2599
|
+
function es(i, t, e) {
|
|
2490
2600
|
const s = t.contract;
|
|
2491
2601
|
if (!s) {
|
|
2492
2602
|
const a = t.data;
|
|
@@ -2512,22 +2622,22 @@ function Zt(i, t, e) {
|
|
|
2512
2622
|
coins: t.balance,
|
|
2513
2623
|
version: t.balanceVersion
|
|
2514
2624
|
},
|
|
2515
|
-
freeRounds: (a.FREE_ROUNDS ?? []).map((
|
|
2625
|
+
freeRounds: (a.FREE_ROUNDS ?? []).map((c) => ({
|
|
2516
2626
|
conf: {
|
|
2517
|
-
base:
|
|
2518
|
-
multiplier:
|
|
2519
|
-
numAwarded:
|
|
2627
|
+
base: c.conf.baseBet,
|
|
2628
|
+
multiplier: c.conf.betMultiplier,
|
|
2629
|
+
numAwarded: c.conf.numAwarded
|
|
2520
2630
|
},
|
|
2521
2631
|
data: {
|
|
2522
|
-
numPlayed:
|
|
2523
|
-
win:
|
|
2524
|
-
numLeft:
|
|
2632
|
+
numPlayed: c.data.numPlayed,
|
|
2633
|
+
win: c.data.winAmount,
|
|
2634
|
+
numLeft: c.data.numLeft
|
|
2525
2635
|
},
|
|
2526
|
-
id:
|
|
2527
|
-
rejectable:
|
|
2528
|
-
skippable:
|
|
2529
|
-
status:
|
|
2530
|
-
type:
|
|
2636
|
+
id: c.id,
|
|
2637
|
+
rejectable: c.rejectable,
|
|
2638
|
+
skippable: c.skippable,
|
|
2639
|
+
status: c.status,
|
|
2640
|
+
type: c.type
|
|
2531
2641
|
})),
|
|
2532
2642
|
gameModel: a.additionalConfigData.gameModelFile,
|
|
2533
2643
|
metaData: a.gameConfigData.metaData,
|
|
@@ -2606,15 +2716,15 @@ function Zt(i, t, e) {
|
|
|
2606
2716
|
data: e ? e(t.opaqueGameServerToUi) : t.opaqueGameServerToUi
|
|
2607
2717
|
};
|
|
2608
2718
|
}
|
|
2609
|
-
function
|
|
2719
|
+
function ts(i) {
|
|
2610
2720
|
var t, e;
|
|
2611
2721
|
return {
|
|
2612
2722
|
// SDK error codes are the same as RGS error codes so we don't need any mapping here
|
|
2613
|
-
code: ((t = i.data) == null ? void 0 : t.code) ??
|
|
2723
|
+
code: ((t = i.data) == null ? void 0 : t.code) ?? se.UNKNOWN,
|
|
2614
2724
|
details: (e = i.data) == null ? void 0 : e.details
|
|
2615
2725
|
};
|
|
2616
2726
|
}
|
|
2617
|
-
function
|
|
2727
|
+
function ss(i, t) {
|
|
2618
2728
|
const e = i.contract;
|
|
2619
2729
|
if (!e) {
|
|
2620
2730
|
const s = i.data;
|
|
@@ -2714,22 +2824,22 @@ function ts(i, t) {
|
|
|
2714
2824
|
data: t ? t(i.opaqueGameServerToUi) : i.opaqueGameServerToUi
|
|
2715
2825
|
};
|
|
2716
2826
|
}
|
|
2717
|
-
function
|
|
2827
|
+
function is(i) {
|
|
2718
2828
|
var t, e;
|
|
2719
2829
|
return {
|
|
2720
2830
|
// SDK error codes are the same as RGS error codes so we don't need any mapping here
|
|
2721
|
-
code: ((t = i.data) == null ? void 0 : t.code) ??
|
|
2831
|
+
code: ((t = i.data) == null ? void 0 : t.code) ?? se.UNKNOWN,
|
|
2722
2832
|
details: (e = i.data) == null ? void 0 : e.details
|
|
2723
2833
|
};
|
|
2724
2834
|
}
|
|
2725
|
-
const
|
|
2726
|
-
parseAuthenticateResponse:
|
|
2727
|
-
parseAuthenticateError:
|
|
2728
|
-
parseOpenGameResponse:
|
|
2729
|
-
parseOpenGameError:
|
|
2730
|
-
parsePlayResponse:
|
|
2731
|
-
parsePlayError:
|
|
2732
|
-
},
|
|
2835
|
+
const ri = {
|
|
2836
|
+
parseAuthenticateResponse: Yt,
|
|
2837
|
+
parseAuthenticateError: Zt,
|
|
2838
|
+
parseOpenGameResponse: es,
|
|
2839
|
+
parseOpenGameError: ts,
|
|
2840
|
+
parsePlayResponse: ss,
|
|
2841
|
+
parsePlayError: is
|
|
2842
|
+
}, _s = {
|
|
2733
2843
|
aze: "az",
|
|
2734
2844
|
bul: "bg",
|
|
2735
2845
|
chi: "zh",
|
|
@@ -2762,46 +2872,16 @@ const oi = {
|
|
|
2762
2872
|
tur: "tr",
|
|
2763
2873
|
ukr: "uk",
|
|
2764
2874
|
vie: "vi"
|
|
2765
|
-
}, { device:
|
|
2766
|
-
class
|
|
2875
|
+
}, { device: Fs } = B(navigator.userAgent), Ds = P("KalambaBullseyePlugin", "color:#000000;font-weight:bold;");
|
|
2876
|
+
class ci extends Ps {
|
|
2767
2877
|
constructor(...e) {
|
|
2768
2878
|
super(...e);
|
|
2769
2879
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2770
2880
|
// @ts-ignore
|
|
2771
2881
|
b(this, "socket");
|
|
2772
|
-
|
|
2773
|
-
this.on("openGame", async () => {
|
|
2774
|
-
try {
|
|
2775
|
-
this.error = void 0;
|
|
2776
|
-
const s = await this.openGame();
|
|
2777
|
-
this.send("openGameResponse", s);
|
|
2778
|
-
} catch (s) {
|
|
2779
|
-
this.error = s, this.send("openGameError", s);
|
|
2780
|
-
}
|
|
2781
|
-
}), this.on("play", async (s) => {
|
|
2782
|
-
try {
|
|
2783
|
-
this.error = void 0;
|
|
2784
|
-
const a = await this.play(s);
|
|
2785
|
-
this.send("playResponse", a);
|
|
2786
|
-
} catch (a) {
|
|
2787
|
-
this.error = a, this.send("playError", a);
|
|
2788
|
-
}
|
|
2789
|
-
}), this.on("freeRounds", async (s) => {
|
|
2790
|
-
try {
|
|
2791
|
-
this.error = void 0, await this.socket.freeRounds(s), this.send("freeRoundsResponse", s);
|
|
2792
|
-
} catch (a) {
|
|
2793
|
-
this.error = a, this.send("freeRoundsError", a);
|
|
2794
|
-
}
|
|
2795
|
-
}), this.on("getBalance", async () => {
|
|
2796
|
-
try {
|
|
2797
|
-
this.error = void 0;
|
|
2798
|
-
const s = await this.socket.getBalance();
|
|
2799
|
-
this.send("balance", { balance: s.balance });
|
|
2800
|
-
} catch {
|
|
2801
|
-
}
|
|
2802
|
-
}), this.on("configured", (s) => {
|
|
2882
|
+
this.on("configured", (s) => {
|
|
2803
2883
|
this.socket.setRequestTimeoutMs(s.ui.requestTimeoutMs);
|
|
2804
|
-
})
|
|
2884
|
+
});
|
|
2805
2885
|
}
|
|
2806
2886
|
initialize(e) {
|
|
2807
2887
|
this.socket = new Rs(e, {
|
|
@@ -2813,9 +2893,9 @@ class ri extends As {
|
|
|
2813
2893
|
messageCode: "TOO_MANY_OPEN_GAMES",
|
|
2814
2894
|
messageKey: "RgsError.TOO_MANY_OPEN_GAMES"
|
|
2815
2895
|
}) : s.code === 1011 ? this.error || this.send("error", { type: "CLOSE", messageCode: "UNKNOWN", messageKey: "RgsError.UNKNOWN" }) : this.reconnect();
|
|
2816
|
-
}), ["mobile", "tablet"].includes(
|
|
2896
|
+
}), ["mobile", "tablet"].includes(Fs.type ?? "") && document.addEventListener("visibilitychange", async () => {
|
|
2817
2897
|
document.hidden || (this.socket.socket ? this.socket.socket && [WebSocket.CONNECTING, WebSocket.OPEN].includes(this.socket.socket.readyState) && this.socket.close() : this.reconnect());
|
|
2818
|
-
})), this.socket.addEventListener("error", (s) =>
|
|
2898
|
+
})), this.socket.addEventListener("error", (s) => Ds("error", s)), this.socket.addEventListener("realityCheck", (s) => {
|
|
2819
2899
|
this.send("realityCheck", s);
|
|
2820
2900
|
});
|
|
2821
2901
|
}
|
|
@@ -2827,86 +2907,97 @@ class ri extends As {
|
|
|
2827
2907
|
}
|
|
2828
2908
|
}
|
|
2829
2909
|
async openGame() {
|
|
2830
|
-
var H,
|
|
2831
|
-
const e = new URLSearchParams(window.location.search), s = e.get("apiUrl"), a = e.get("cageCode"),
|
|
2832
|
-
this.initialize({ apiUrl: s, cageCode: a, gameCode:
|
|
2910
|
+
var H, xe;
|
|
2911
|
+
const e = new URLSearchParams(window.location.search), s = e.get("apiUrl"), a = e.get("cageCode"), c = e.get("gameCode"), o = e.get("operatorCode"), p = e.get("playMode"), h = e.get("token"), w = e.get("username"), g = e.get("gameHistoryUrl"), E = e.get("homeUrl") ?? void 0, A = e.get("cashierUrl") ?? void 0;
|
|
2912
|
+
this.initialize({ apiUrl: s, cageCode: a, gameCode: c, operatorCode: o, playMode: p, token: h, username: w });
|
|
2833
2913
|
try {
|
|
2834
2914
|
await this.socket.connect();
|
|
2835
2915
|
} catch {
|
|
2836
|
-
throw { type: "error", data: { code:
|
|
2916
|
+
throw { type: "error", data: { code: se.CONNECTION_ERROR } };
|
|
2837
2917
|
}
|
|
2838
2918
|
let G;
|
|
2839
2919
|
try {
|
|
2840
2920
|
G = await this.socket.authenticate();
|
|
2841
|
-
} catch (
|
|
2842
|
-
throw { type:
|
|
2921
|
+
} catch (Q) {
|
|
2922
|
+
throw { type: Q.type, data: Q.type === "error" ? Zt(Q.data) : void 0 };
|
|
2843
2923
|
}
|
|
2844
|
-
let
|
|
2924
|
+
let me;
|
|
2845
2925
|
try {
|
|
2846
|
-
|
|
2847
|
-
} catch (
|
|
2848
|
-
throw { type:
|
|
2926
|
+
me = await this.socket.openGame();
|
|
2927
|
+
} catch (Q) {
|
|
2928
|
+
throw { type: Q.type, data: Q.type === "error" ? ts(Q.data) : void 0 };
|
|
2849
2929
|
}
|
|
2850
|
-
const
|
|
2930
|
+
const F = Yt(G), Y = es(
|
|
2851
2931
|
G,
|
|
2852
|
-
|
|
2853
|
-
this.config.dataDecoder &&
|
|
2932
|
+
me,
|
|
2933
|
+
this.config.dataDecoder && yt[this.config.dataDecoder]
|
|
2854
2934
|
);
|
|
2855
2935
|
this.sdkConfig.api = {
|
|
2856
2936
|
...this.sdkConfig.api,
|
|
2857
2937
|
brand: a,
|
|
2858
|
-
game:
|
|
2859
|
-
integration:
|
|
2860
|
-
jurisdiction:
|
|
2861
|
-
playMode:
|
|
2862
|
-
user:
|
|
2938
|
+
game: c,
|
|
2939
|
+
integration: o,
|
|
2940
|
+
jurisdiction: F.contract.jurisdiction,
|
|
2941
|
+
playMode: p,
|
|
2942
|
+
user: F.contract.username,
|
|
2863
2943
|
integrationData: {
|
|
2864
2944
|
token: h
|
|
2865
2945
|
},
|
|
2866
|
-
country:
|
|
2867
|
-
currency:
|
|
2868
|
-
coinValueInCents:
|
|
2869
|
-
gameHistoryUrl:
|
|
2870
|
-
homeUrl:
|
|
2946
|
+
country: F.contract.country,
|
|
2947
|
+
currency: F.contract.currency,
|
|
2948
|
+
coinValueInCents: F.contract.coinValueInCents,
|
|
2949
|
+
gameHistoryUrl: g,
|
|
2950
|
+
homeUrl: E,
|
|
2871
2951
|
cashierUrl: A,
|
|
2872
|
-
backendSessionId:
|
|
2873
|
-
lastRoundId: K.contract.roundId
|
|
2952
|
+
backendSessionId: Y.contract.sessionId
|
|
2874
2953
|
};
|
|
2875
|
-
const
|
|
2876
|
-
return
|
|
2954
|
+
const K = (xe = (H = e.get("languageCode")) == null ? void 0 : H.split("_")) == null ? void 0 : xe[0];
|
|
2955
|
+
return K && (this.sdkConfig.ui.language = K.length === 3 ? _s[K] ?? K : K), Y;
|
|
2877
2956
|
}
|
|
2878
2957
|
async play(e) {
|
|
2879
2958
|
for (; !this.socket.socket; )
|
|
2880
2959
|
await new Promise((A) => setTimeout(() => A(), 500));
|
|
2881
2960
|
const {
|
|
2882
|
-
contract: { bet: s, forcedOutcomes: a, ...
|
|
2883
|
-
extra:
|
|
2884
|
-
payloadToInject:
|
|
2885
|
-
|
|
2886
|
-
} = e, p = this.config.dataEncoder && os[this.config.dataEncoder], m = {
|
|
2961
|
+
contract: { bet: s, forcedOutcomes: a, ...c },
|
|
2962
|
+
extra: o,
|
|
2963
|
+
payloadToInject: p
|
|
2964
|
+
} = e, h = this.config.dataEncoder && rs[this.config.dataEncoder], w = s === null ? "BG_ACTION" : "SPIN", g = {
|
|
2887
2965
|
bet: s ? { baseBet: s.base, betMultiplier: s.multiplier } : void 0,
|
|
2888
2966
|
forcedOutcomes: a,
|
|
2889
2967
|
// TODO: get rid of contractRest - it' a legacy from old RGS
|
|
2890
|
-
...
|
|
2891
|
-
...
|
|
2892
|
-
opaqueUiToGameServer:
|
|
2968
|
+
...c,
|
|
2969
|
+
...p,
|
|
2970
|
+
opaqueUiToGameServer: h ? h(o) : o
|
|
2893
2971
|
};
|
|
2894
|
-
let
|
|
2972
|
+
let E;
|
|
2895
2973
|
try {
|
|
2896
|
-
|
|
2974
|
+
E = await this.socket.sendAction(w, g);
|
|
2897
2975
|
} catch (A) {
|
|
2898
|
-
throw { type: A.type, data: A.type === "error" ?
|
|
2976
|
+
throw { type: A.type, data: A.type === "error" ? is(A.data) : void 0 };
|
|
2899
2977
|
}
|
|
2900
|
-
return
|
|
2978
|
+
return ss(E, this.config.dataDecoder && yt[this.config.dataDecoder]);
|
|
2901
2979
|
}
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2980
|
+
async freeRounds(e) {
|
|
2981
|
+
try {
|
|
2982
|
+
await this.socket.freeRounds(e);
|
|
2983
|
+
} catch {
|
|
2984
|
+
throw { type: "error", data: { code: se.UNKNOWN } };
|
|
2985
|
+
}
|
|
2986
|
+
return e;
|
|
2987
|
+
}
|
|
2988
|
+
async getBalance() {
|
|
2989
|
+
try {
|
|
2990
|
+
return { balance: (await this.socket.getBalance()).balance };
|
|
2991
|
+
} catch {
|
|
2992
|
+
throw { type: "error", data: { code: se.UNKNOWN } };
|
|
2993
|
+
}
|
|
2994
|
+
}
|
|
2995
|
+
async showHistory() {
|
|
2996
|
+
const {
|
|
2997
|
+
api: { game: e, integration: s, integrationData: a, jurisdiction: c, user: o, gameHistoryUrl: p },
|
|
2998
|
+
ui: { language: h }
|
|
2999
|
+
} = this.sdkConfig, w = o.replace(/^user_/, "").replace(new RegExp(`_${s}$`), ""), g = new URL(window.location.href);
|
|
3000
|
+
g.hostname = g.hostname.replace(/^v\./, "").replace(/^play\./, "history."), g.pathname = g.pathname.replace(/(\/[0-9]+\.[0-9]+\.[0-9]+)?\/wrapper\.html/, "/list/index.html"), g.search = "", g.searchParams.set("apiUrl", new URL(p).origin), g.searchParams.set("gameCode", e), c && g.searchParams.set("jurisdiction", c), g.searchParams.set("operatorCode", s), g.searchParams.set("token", a.token), g.searchParams.set("username", w), g.searchParams.set("languageCode", h), this.config.gameHistoryUrl && g.searchParams.set("gameHistoryUrl", this.config.gameHistoryUrl), window.open(g.toString(), "_blank");
|
|
2910
3001
|
}
|
|
2911
3002
|
}
|
|
2912
3003
|
class Ns {
|
|
@@ -2917,8 +3008,8 @@ class Ns {
|
|
|
2917
3008
|
this.trackers = t, this.config = e, this.sdkConfig = s;
|
|
2918
3009
|
}
|
|
2919
3010
|
on(t, e, s) {
|
|
2920
|
-
const a = function(
|
|
2921
|
-
|
|
3011
|
+
const a = function(o) {
|
|
3012
|
+
o.data.message !== `kalamba:wrapper-telemetry:${t}` && o.data.message !== `kalamba:wrapper:${t}` || e(o.data.payload);
|
|
2922
3013
|
};
|
|
2923
3014
|
window.addEventListener("message", a, s);
|
|
2924
3015
|
}
|
|
@@ -2926,14 +3017,14 @@ class Ns {
|
|
|
2926
3017
|
this.trackers.forEach((s) => s.track(t, e));
|
|
2927
3018
|
}
|
|
2928
3019
|
}
|
|
2929
|
-
function
|
|
3020
|
+
function Vt(i) {
|
|
2930
3021
|
return i.reduce((t, e) => t + e, 0);
|
|
2931
3022
|
}
|
|
2932
|
-
function
|
|
2933
|
-
const t = i.length, e =
|
|
3023
|
+
function Gs(i) {
|
|
3024
|
+
const t = i.length, e = Vt(i) / t, s = i.map((c) => Math.pow(c - e, 2)), a = Vt(s) / t;
|
|
2934
3025
|
return Math.sqrt(a);
|
|
2935
3026
|
}
|
|
2936
|
-
class
|
|
3027
|
+
class zt {
|
|
2937
3028
|
constructor() {
|
|
2938
3029
|
b(this, "rafId", -1);
|
|
2939
3030
|
b(this, "startTime", 0);
|
|
@@ -2941,11 +3032,11 @@ class Vt {
|
|
|
2941
3032
|
b(this, "frames", []);
|
|
2942
3033
|
b(this, "calculateFPS", () => {
|
|
2943
3034
|
const t = Math.floor((this.stopTime - this.startTime) / 1e3);
|
|
2944
|
-
return this.frames.map((e) => Math.floor((e - this.startTime) / 1e3)).reduce((e, s, a,
|
|
3035
|
+
return this.frames.map((e) => Math.floor((e - this.startTime) / 1e3)).reduce((e, s, a, c) => (c[a] !== c[a - 1] ? e.push(1) : e[e.length - 1]++, e), []).slice(0, t);
|
|
2945
3036
|
});
|
|
2946
3037
|
b(this, "getReport", () => {
|
|
2947
|
-
const t = this.calculateFPS(), e = Math.floor(this.frames.length / ((this.stopTime - this.startTime) / 1e3)), s = t.length > 0 ? Math.max(...t) : e, a = t.length > 0 ? Math.min(...t) : e,
|
|
2948
|
-
return { fpsAvg: e, fpsMax: s, fpsMin: a, fpsStdDev:
|
|
3038
|
+
const t = this.calculateFPS(), e = Math.floor(this.frames.length / ((this.stopTime - this.startTime) / 1e3)), s = t.length > 0 ? Math.max(...t) : e, a = t.length > 0 ? Math.min(...t) : e, c = t.length > 0 ? Gs(t) : 0;
|
|
3039
|
+
return { fpsAvg: e, fpsMax: s, fpsMin: a, fpsStdDev: c };
|
|
2949
3040
|
});
|
|
2950
3041
|
b(this, "start", () => {
|
|
2951
3042
|
this.startTime = Date.now(), this.frames = [], this.trackFrames();
|
|
@@ -2958,8 +3049,8 @@ class Vt {
|
|
|
2958
3049
|
});
|
|
2959
3050
|
}
|
|
2960
3051
|
}
|
|
2961
|
-
const
|
|
2962
|
-
function
|
|
3052
|
+
const Hs = "landscape", Vs = "portrait";
|
|
3053
|
+
function zs() {
|
|
2963
3054
|
try {
|
|
2964
3055
|
const i = document.createElement("canvas");
|
|
2965
3056
|
return !!window.WebGLRenderingContext && (i.getContext("webgl") || i.getContext("experimental-webgl")) instanceof WebGLRenderingContext;
|
|
@@ -2967,7 +3058,7 @@ function Vs() {
|
|
|
2967
3058
|
return !1;
|
|
2968
3059
|
}
|
|
2969
3060
|
}
|
|
2970
|
-
async function
|
|
3061
|
+
async function qs() {
|
|
2971
3062
|
if (!window.createImageBitmap)
|
|
2972
3063
|
return !1;
|
|
2973
3064
|
const e = await (await fetch("data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAEAAQAcJaQAA3AA/v3AgAA=")).blob();
|
|
@@ -2977,33 +3068,33 @@ async function zs() {
|
|
|
2977
3068
|
return !1;
|
|
2978
3069
|
}
|
|
2979
3070
|
}
|
|
2980
|
-
function
|
|
2981
|
-
return window.innerWidth >= window.innerHeight ?
|
|
3071
|
+
function dt() {
|
|
3072
|
+
return window.innerWidth >= window.innerHeight ? Hs : Vs;
|
|
2982
3073
|
}
|
|
2983
|
-
var
|
|
2984
|
-
class
|
|
3074
|
+
var He, oe, re, ce, Ae, Ve, Pe, ze;
|
|
3075
|
+
class di extends Ns {
|
|
2985
3076
|
constructor(...e) {
|
|
2986
3077
|
super(...e);
|
|
2987
3078
|
b(this, "FPS_SAMPLE_INTERVAL", 1e4);
|
|
2988
3079
|
// wrapper state
|
|
2989
|
-
M(this,
|
|
2990
|
-
M(this, ae);
|
|
2991
|
-
M(this, ne);
|
|
3080
|
+
M(this, He, 0);
|
|
2992
3081
|
M(this, oe);
|
|
3082
|
+
M(this, re);
|
|
3083
|
+
M(this, ce);
|
|
2993
3084
|
M(this, Ae, !1);
|
|
2994
|
-
M(this,
|
|
3085
|
+
M(this, Ve, !1);
|
|
2995
3086
|
M(this, Pe, "");
|
|
2996
|
-
M(this,
|
|
2997
|
-
v(this,
|
|
2998
|
-
v(this,
|
|
3087
|
+
M(this, ze, []);
|
|
3088
|
+
v(this, re, {}), v(this, ce, this.deviceInfo()), v(this, oe, this.config.gameVersion), this.on("state", ({ balance: s }) => {
|
|
3089
|
+
v(this, He, s);
|
|
2999
3090
|
}), this.on("autoplay", ({ action: s }) => {
|
|
3000
3091
|
["start", "resume"].includes(s) ? v(this, Ae, !0) : v(this, Ae, !1);
|
|
3001
3092
|
}), this.on("settings", ({ fastPlay: s }) => {
|
|
3002
|
-
s !== void 0 && v(this,
|
|
3093
|
+
s !== void 0 && v(this, Ve, s);
|
|
3003
3094
|
}), this.registerEvents();
|
|
3004
3095
|
}
|
|
3005
3096
|
async registerEvents() {
|
|
3006
|
-
k(this,
|
|
3097
|
+
k(this, ce).then((e) => {
|
|
3007
3098
|
this.track("Device Information", e);
|
|
3008
3099
|
}), this.on("loadStart", () => {
|
|
3009
3100
|
this.track("Game Loading", { progress: 0, step: "initial" });
|
|
@@ -3017,9 +3108,9 @@ class ci extends Ns {
|
|
|
3017
3108
|
systemMessageType: e.type
|
|
3018
3109
|
});
|
|
3019
3110
|
}), this.on("openGameResponse", async (e) => {
|
|
3020
|
-
v(this, Pe, e.contract.stateType.nextRound), v(this,
|
|
3111
|
+
v(this, Pe, e.contract.stateType.nextRound), v(this, re, {
|
|
3021
3112
|
balanceInCoins: e.contract.balance.coins,
|
|
3022
|
-
clientVersion: k(this,
|
|
3113
|
+
clientVersion: k(this, oe),
|
|
3023
3114
|
coinValueInCents: this.sdkConfig.api.coinValueInCents,
|
|
3024
3115
|
coinValueInCentsFloat: this.sdkConfig.api.coinValueInCents,
|
|
3025
3116
|
currency: this.sdkConfig.api.currency,
|
|
@@ -3042,17 +3133,17 @@ class ci extends Ns {
|
|
|
3042
3133
|
// rtpVariant: 'unknown',
|
|
3043
3134
|
serverVersion: e.contract.metaData.version
|
|
3044
3135
|
// testVariants: '',
|
|
3045
|
-
}), this.track("Game Open", k(this,
|
|
3136
|
+
}), this.track("Game Open", k(this, re));
|
|
3046
3137
|
}), this.on("playCycleEnd", async (e) => {
|
|
3047
|
-
const s = await k(this,
|
|
3138
|
+
const s = await k(this, ce), { base: a, multiplier: c } = e.contract.bet.lastPaid ?? {}, o = e.contract.balance.coins, p = e.contract.bet.lastPaid.base * e.contract.bet.lastPaid.multiplier, h = e.contract.win.total, w = h - p, g = "spin", E = e.contract.roundId;
|
|
3048
3139
|
this.track("Betting Activity", {
|
|
3049
|
-
balance:
|
|
3050
|
-
balanceAfter:
|
|
3140
|
+
balance: o - w,
|
|
3141
|
+
balanceAfter: o,
|
|
3051
3142
|
baseBet: a,
|
|
3052
3143
|
// baseBetIndex,
|
|
3053
|
-
betMultiplier:
|
|
3054
|
-
betType:
|
|
3055
|
-
gameVersion: k(this,
|
|
3144
|
+
betMultiplier: c,
|
|
3145
|
+
betType: g,
|
|
3146
|
+
gameVersion: k(this, oe),
|
|
3056
3147
|
coinValueInCents: this.sdkConfig.api.coinValueInCents,
|
|
3057
3148
|
coinValueInCentsFloat: this.sdkConfig.api.coinValueInCents,
|
|
3058
3149
|
currency: this.sdkConfig.api.currency,
|
|
@@ -3060,20 +3151,20 @@ class ci extends Ns {
|
|
|
3060
3151
|
gameCode: this.sdkConfig.api.game,
|
|
3061
3152
|
gameCodeServer: this.sdkConfig.api.game,
|
|
3062
3153
|
isMobile: s.isMobile,
|
|
3063
|
-
netResult:
|
|
3154
|
+
netResult: w,
|
|
3064
3155
|
operatorName: "kalamba",
|
|
3065
|
-
orientation:
|
|
3156
|
+
orientation: dt(),
|
|
3066
3157
|
partnerId: this.sdkConfig.api.brand,
|
|
3067
3158
|
partnerParentId: this.sdkConfig.api.integration,
|
|
3068
3159
|
platform: "WEB",
|
|
3069
3160
|
playMode: this.sdkConfig.api.playMode,
|
|
3070
|
-
roundId:
|
|
3161
|
+
roundId: E,
|
|
3071
3162
|
// TODO: uncomment when tracking TrackingEvent.GameSpin is implemented
|
|
3072
3163
|
// roundTypes: [...this.#roundTypes],
|
|
3073
3164
|
roundTypes: ["BaseGame"],
|
|
3074
|
-
totalBet:
|
|
3165
|
+
totalBet: p,
|
|
3075
3166
|
totalWin: h
|
|
3076
|
-
}), v(this,
|
|
3167
|
+
}), v(this, ze, []);
|
|
3077
3168
|
}), this.on("telemetry.click", (e) => {
|
|
3078
3169
|
this.track("UI Interaction", {
|
|
3079
3170
|
action: "click",
|
|
@@ -3088,17 +3179,17 @@ class ci extends Ns {
|
|
|
3088
3179
|
}), this.reportFpsSample(), this.reportFpsRound();
|
|
3089
3180
|
}
|
|
3090
3181
|
reportFpsSample() {
|
|
3091
|
-
const e = new
|
|
3182
|
+
const e = new zt(), s = () => {
|
|
3092
3183
|
e.stop();
|
|
3093
|
-
const
|
|
3094
|
-
this.track("FPS Performance", { ...
|
|
3184
|
+
const c = e.getReport();
|
|
3185
|
+
this.track("FPS Performance", { ...c, fpsType: "sample" }), a();
|
|
3095
3186
|
}, a = async () => {
|
|
3096
3187
|
e.start(), setTimeout(s, this.FPS_SAMPLE_INTERVAL);
|
|
3097
3188
|
};
|
|
3098
3189
|
a();
|
|
3099
3190
|
}
|
|
3100
3191
|
reportFpsRound() {
|
|
3101
|
-
const e = new
|
|
3192
|
+
const e = new zt();
|
|
3102
3193
|
this.on("playCycleStart", () => {
|
|
3103
3194
|
e.start();
|
|
3104
3195
|
}), this.on("playCycleEnd", () => {
|
|
@@ -3109,26 +3200,26 @@ class ci extends Ns {
|
|
|
3109
3200
|
}
|
|
3110
3201
|
getExtraUiInteractionData() {
|
|
3111
3202
|
return {
|
|
3112
|
-
orientation:
|
|
3203
|
+
orientation: dt(),
|
|
3113
3204
|
stateType: k(this, Pe)
|
|
3114
3205
|
};
|
|
3115
3206
|
}
|
|
3116
3207
|
async deviceInfo() {
|
|
3117
|
-
var
|
|
3118
|
-
const { browser: e, device: s, os: a } =
|
|
3208
|
+
var p;
|
|
3209
|
+
const { browser: e, device: s, os: a } = B(navigator.userAgent), c = zs(), o = await qs();
|
|
3119
3210
|
return {
|
|
3120
3211
|
browserName: e.name,
|
|
3121
3212
|
browserVersion: e.version,
|
|
3122
|
-
connection: (
|
|
3213
|
+
connection: (p = navigator.connection) == null ? void 0 : p.effectiveType,
|
|
3123
3214
|
deviceName: s.model,
|
|
3124
3215
|
deviceType: s.type,
|
|
3125
3216
|
isMobile: ["mobile", "tablet"].includes(s.type ?? ""),
|
|
3126
|
-
isWebGLSupported:
|
|
3127
|
-
isWebPSupported:
|
|
3217
|
+
isWebGLSupported: c,
|
|
3218
|
+
isWebPSupported: o,
|
|
3128
3219
|
manufacturer: s.vendor,
|
|
3129
3220
|
operatingSystem: a.name,
|
|
3130
3221
|
operatingSystemVersion: a.version,
|
|
3131
|
-
orientation:
|
|
3222
|
+
orientation: dt(),
|
|
3132
3223
|
pixelRatio: window.devicePixelRatio,
|
|
3133
3224
|
screenHeight: window.screen.height,
|
|
3134
3225
|
screenSize: `${window.screen.width}x${window.screen.height}`,
|
|
@@ -3140,59 +3231,59 @@ class ci extends Ns {
|
|
|
3140
3231
|
};
|
|
3141
3232
|
}
|
|
3142
3233
|
}
|
|
3143
|
-
|
|
3144
|
-
var
|
|
3145
|
-
const
|
|
3146
|
-
class
|
|
3234
|
+
He = new WeakMap(), oe = new WeakMap(), re = new WeakMap(), ce = new WeakMap(), Ae = new WeakMap(), Ve = new WeakMap(), Pe = new WeakMap(), ze = new WeakMap();
|
|
3235
|
+
var Ws = cs();
|
|
3236
|
+
const qt = /* @__PURE__ */ ds(Ws);
|
|
3237
|
+
class as {
|
|
3147
3238
|
constructor(t, e) {
|
|
3148
3239
|
b(this, "config");
|
|
3149
3240
|
b(this, "sdkConfig");
|
|
3150
3241
|
this.config = t, this.sdkConfig = e;
|
|
3151
3242
|
}
|
|
3152
3243
|
}
|
|
3153
|
-
const
|
|
3154
|
-
var
|
|
3155
|
-
class
|
|
3244
|
+
const Wt = 25, jt = 1e4;
|
|
3245
|
+
var de, le, ue, q;
|
|
3246
|
+
class li extends as {
|
|
3156
3247
|
constructor(...e) {
|
|
3157
3248
|
super(...e);
|
|
3158
|
-
M(this,
|
|
3159
|
-
M(this,
|
|
3160
|
-
M(this,
|
|
3161
|
-
M(this,
|
|
3249
|
+
M(this, de, "https://europe-west3-stargazer-328808.cloudfunctions.net/collect-events");
|
|
3250
|
+
M(this, le);
|
|
3251
|
+
M(this, ue);
|
|
3252
|
+
M(this, q, []);
|
|
3162
3253
|
b(this, "processQueueForced");
|
|
3163
|
-
v(this,
|
|
3254
|
+
v(this, le, (/* @__PURE__ */ new Date()).getTime()), v(this, q, []), this.processQueueForced = this.processQueue.bind(this, !0), this.schedule(), fetch(k(this, de), {
|
|
3164
3255
|
method: "OPTIONS"
|
|
3165
|
-
}).catch(
|
|
3256
|
+
}).catch(qt), this.subscribe();
|
|
3166
3257
|
}
|
|
3167
3258
|
subscribe() {
|
|
3168
3259
|
window.addEventListener("beforeunload", this.processQueueForced, !1), window.addEventListener("pagehide", this.processQueueForced, !1), window.addEventListener("visibilitychange", this.processQueueForced, !1);
|
|
3169
3260
|
}
|
|
3170
3261
|
schedule() {
|
|
3171
|
-
k(this,
|
|
3262
|
+
k(this, ue) && clearTimeout(k(this, ue)), v(this, ue, window.setTimeout(() => this.processQueue(), jt));
|
|
3172
3263
|
}
|
|
3173
3264
|
send(e) {
|
|
3174
|
-
v(this,
|
|
3265
|
+
v(this, le, (/* @__PURE__ */ new Date()).getTime());
|
|
3175
3266
|
try {
|
|
3176
|
-
navigator.sendBeacon(k(this,
|
|
3267
|
+
navigator.sendBeacon(k(this, de), JSON.stringify(e));
|
|
3177
3268
|
} catch {
|
|
3178
|
-
fetch(k(this,
|
|
3269
|
+
fetch(k(this, de), {
|
|
3179
3270
|
body: JSON.stringify(e),
|
|
3180
3271
|
method: "POST",
|
|
3181
3272
|
headers: {
|
|
3182
3273
|
"Content-Type": "application/json"
|
|
3183
3274
|
},
|
|
3184
3275
|
keepalive: !0
|
|
3185
|
-
}).catch(
|
|
3276
|
+
}).catch(qt);
|
|
3186
3277
|
}
|
|
3187
3278
|
this.schedule();
|
|
3188
3279
|
}
|
|
3189
3280
|
addToQueue(e) {
|
|
3190
|
-
k(this,
|
|
3281
|
+
k(this, q).push(e), this.processQueue();
|
|
3191
3282
|
}
|
|
3192
3283
|
processQueue(e = !1) {
|
|
3193
|
-
if (!(this.sdkConfig == null || !this.sdkConfig.ui.feature.allowTelemetry) && !(!e && k(this,
|
|
3194
|
-
for (; k(this,
|
|
3195
|
-
const s = k(this,
|
|
3284
|
+
if (!(this.sdkConfig == null || !this.sdkConfig.ui.feature.allowTelemetry) && !(!e && k(this, q).length < Wt && (/* @__PURE__ */ new Date()).getTime() - k(this, le) < jt))
|
|
3285
|
+
for (; k(this, q).length; ) {
|
|
3286
|
+
const s = k(this, q).splice(0, Wt).map((a) => ({
|
|
3196
3287
|
...a,
|
|
3197
3288
|
sessionID: this.sdkConfig.api.sessionId,
|
|
3198
3289
|
userID: this.sdkConfig.api.user
|
|
@@ -3205,35 +3296,35 @@ class di extends is {
|
|
|
3205
3296
|
eventName: e,
|
|
3206
3297
|
eventParams: s,
|
|
3207
3298
|
eventTimestamp: (/* @__PURE__ */ new Date()).getTime(),
|
|
3208
|
-
eventUUID:
|
|
3299
|
+
eventUUID: ls()
|
|
3209
3300
|
});
|
|
3210
3301
|
}
|
|
3211
3302
|
}
|
|
3212
|
-
|
|
3213
|
-
const
|
|
3214
|
-
class
|
|
3303
|
+
de = new WeakMap(), le = new WeakMap(), ue = new WeakMap(), q = new WeakMap();
|
|
3304
|
+
const js = P("LoggingTracker", "color:#000000;font-weight:bold;");
|
|
3305
|
+
class ui extends as {
|
|
3215
3306
|
track(t, e) {
|
|
3216
|
-
|
|
3307
|
+
js(`@${this.sdkConfig.api.user}`, `[${t}]`, e);
|
|
3217
3308
|
}
|
|
3218
3309
|
}
|
|
3219
3310
|
export {
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3311
|
+
Js as BasicPlugin,
|
|
3312
|
+
_ as CasinoPlugin,
|
|
3313
|
+
Ys as DebuggingPlugin,
|
|
3314
|
+
oi as EveryMatrixPlugin,
|
|
3315
|
+
Zs as GigPlugin,
|
|
3316
|
+
ri as KalambaBullseyeParsers,
|
|
3317
|
+
ci as KalambaBullseyePlugin,
|
|
3318
|
+
di as KalambaStargazerPlugin,
|
|
3319
|
+
li as KalambaStargazerTracker,
|
|
3320
|
+
ui as LoggingTracker,
|
|
3321
|
+
ei as OryxPlugin,
|
|
3322
|
+
ti as PariplayPlugin,
|
|
3323
|
+
ai as QuantaPlugin,
|
|
3324
|
+
si as RelaxFEIMPlugin,
|
|
3325
|
+
Ps as RgsPlugin,
|
|
3326
|
+
ni as SoftSwissPlugin,
|
|
3236
3327
|
Ns as TelemetryPlugin,
|
|
3237
|
-
|
|
3238
|
-
|
|
3328
|
+
as as Tracker,
|
|
3329
|
+
ii as TukoPlugin
|
|
3239
3330
|
};
|