@enegelai/bot-widget 1.16.2 → 1.16.4
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/enegelaibot.umd.js +334 -321
- package/dist/index.es.js +532 -501
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { css as J, LitElement as Fe, html as u, nothing as Ae, svg as me } from "lit";
|
|
2
2
|
import { property as x, customElement as K, query as xe, state as Ha, queryAll as Va, eventOptions as sa } from "lit/decorators.js";
|
|
3
|
-
import { unsafeHTML as Y } from "lit-html/directives/unsafe-html.js";
|
|
4
3
|
import { when as W } from "lit/directives/when.js";
|
|
5
|
-
import {
|
|
4
|
+
import { unsafeHTML as Y } from "lit-html/directives/unsafe-html.js";
|
|
5
|
+
import { registerIconLibrary as Oi } from "@shoelace-style/shoelace";
|
|
6
6
|
import "@shoelace-style/shoelace/dist/components/button/button.js";
|
|
7
7
|
import "@shoelace-style/shoelace/dist/components/avatar/avatar.js";
|
|
8
8
|
import "@shoelace-style/shoelace/dist/components/input/input.js";
|
|
@@ -23,13 +23,13 @@ import "@shoelace-style/shoelace/dist/components/progress-bar/progress-bar.js";
|
|
|
23
23
|
import "@shoelace-style/shoelace/dist/components/badge/badge.js";
|
|
24
24
|
import { repeat as et } from "lit/directives/repeat.js";
|
|
25
25
|
import { until as Xt } from "lit-html/directives/until.js";
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
26
|
+
import Bi from "markdown-it";
|
|
27
|
+
import qi from "markdown-it-link-attributes";
|
|
28
|
+
import Nt from "highlight.js";
|
|
29
29
|
import "@shoelace-style/shoelace/dist/components/popup/popup.js";
|
|
30
30
|
import "@shoelace-style/shoelace/dist/components/rating/rating.js";
|
|
31
|
-
import { createRef as
|
|
32
|
-
function
|
|
31
|
+
import { createRef as Di, ref as At } from "lit/directives/ref.js";
|
|
32
|
+
function Na(a) {
|
|
33
33
|
return typeof a == "function" ? a() : a;
|
|
34
34
|
}
|
|
35
35
|
const jt = class jt extends Event {
|
|
@@ -45,7 +45,7 @@ const jt = class jt extends Event {
|
|
|
45
45
|
};
|
|
46
46
|
jt.eventName = "lit-state-changed";
|
|
47
47
|
let at = jt;
|
|
48
|
-
const
|
|
48
|
+
const Fi = (a, e) => e !== a && (e === e || a === a), ha = class ha extends EventTarget {
|
|
49
49
|
static initPropertyMap() {
|
|
50
50
|
this.propertyMap || (this.propertyMap = /* @__PURE__ */ new Map());
|
|
51
51
|
}
|
|
@@ -58,7 +58,7 @@ const Di = (a, e) => e !== a && (e === e || a === a), ha = class ha extends Even
|
|
|
58
58
|
constructor() {
|
|
59
59
|
super(), this.hookMap = /* @__PURE__ */ new Map(), this.constructor.finalize(), this.propertyMap && [...this.propertyMap].forEach(([e, t]) => {
|
|
60
60
|
if (t.initialValue !== void 0) {
|
|
61
|
-
const i =
|
|
61
|
+
const i = Na(t.initialValue);
|
|
62
62
|
this[e] = i, t.value = i;
|
|
63
63
|
}
|
|
64
64
|
});
|
|
@@ -78,7 +78,7 @@ const Di = (a, e) => e !== a && (e === e || a === a), ha = class ha extends Even
|
|
|
78
78
|
Object.defineProperty(this.prototype, e, s);
|
|
79
79
|
}
|
|
80
80
|
static getPropertyDescriptor(e, t, i) {
|
|
81
|
-
const s = i?.hasChanged ||
|
|
81
|
+
const s = i?.hasChanged || Fi;
|
|
82
82
|
return {
|
|
83
83
|
get() {
|
|
84
84
|
return this[t];
|
|
@@ -132,7 +132,7 @@ class it {
|
|
|
132
132
|
this.state.removeEventListener(at.eventName, this.callback);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
-
function
|
|
135
|
+
function z(a) {
|
|
136
136
|
return (e, t) => {
|
|
137
137
|
if (Object.getOwnPropertyDescriptor(e, t))
|
|
138
138
|
throw new Error("@property must be called before all state decorators");
|
|
@@ -146,7 +146,7 @@ function O(a) {
|
|
|
146
146
|
}), i.createProperty(t, a), s ? Object.getOwnPropertyDescriptor(e, t) : void 0;
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function ji(a, e) {
|
|
150
150
|
if (a !== null && (e === Boolean || e === Number || e === Array || e === Object))
|
|
151
151
|
try {
|
|
152
152
|
a = JSON.parse(a);
|
|
@@ -156,18 +156,18 @@ function Fi(a, e) {
|
|
|
156
156
|
return a;
|
|
157
157
|
}
|
|
158
158
|
new URL(location.href);
|
|
159
|
-
const
|
|
159
|
+
const Hi = {
|
|
160
160
|
prefix: "_ls"
|
|
161
161
|
};
|
|
162
|
-
function
|
|
163
|
-
return a = { ...
|
|
162
|
+
function ce(a) {
|
|
163
|
+
return a = { ...Hi, ...a }, (e, t) => {
|
|
164
164
|
const i = Object.getOwnPropertyDescriptor(e, t);
|
|
165
165
|
if (!i)
|
|
166
166
|
throw new Error("@local-storage decorator need to be called after @property");
|
|
167
167
|
const s = `${a?.prefix || ""}_${a?.key || String(t)}`, r = e.constructor, o = r.propertyMap.get(t), f = o?.type;
|
|
168
168
|
if (o) {
|
|
169
169
|
const w = o.initialValue;
|
|
170
|
-
o.initialValue = () =>
|
|
170
|
+
o.initialValue = () => ji(localStorage.getItem(s), f) ?? Na(w), r.propertyMap.set(t, { ...o, ...a });
|
|
171
171
|
}
|
|
172
172
|
const p = i?.set, k = {
|
|
173
173
|
...i,
|
|
@@ -178,15 +178,15 @@ function fe(a) {
|
|
|
178
178
|
Object.defineProperty(r.prototype, t, k);
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
|
-
function
|
|
181
|
+
function Ua(a) {
|
|
182
182
|
return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a;
|
|
183
183
|
}
|
|
184
|
-
var Pt = { exports: {} },
|
|
185
|
-
function
|
|
184
|
+
var Pt = { exports: {} }, Vi = Pt.exports, ka;
|
|
185
|
+
function Ni() {
|
|
186
186
|
return ka || (ka = 1, (function(a) {
|
|
187
187
|
(function(e, t) {
|
|
188
188
|
a.exports ? a.exports = t() : e.log = t();
|
|
189
|
-
})(
|
|
189
|
+
})(Vi, function() {
|
|
190
190
|
var e = function() {
|
|
191
191
|
}, t = "undefined", i = typeof window !== t && typeof window.navigator !== t && /Trident\/|MSIE /.test(window.navigator.userAgent), s = [
|
|
192
192
|
"trace",
|
|
@@ -230,7 +230,7 @@ function Vi() {
|
|
|
230
230
|
return v(M) || w.apply(this, arguments);
|
|
231
231
|
}
|
|
232
232
|
function P(M, L) {
|
|
233
|
-
var C = this, Z,
|
|
233
|
+
var C = this, Z, U, G, te = "loglevel";
|
|
234
234
|
typeof M == "string" ? te += ":" + M : typeof M == "symbol" && (te = void 0);
|
|
235
235
|
function He(j) {
|
|
236
236
|
var V = (s[j] || "silent").toUpperCase();
|
|
@@ -290,11 +290,11 @@ function Vi() {
|
|
|
290
290
|
ERROR: 4,
|
|
291
291
|
SILENT: 5
|
|
292
292
|
}, C.methodFactory = L || _, C.getLevel = function() {
|
|
293
|
-
return G ??
|
|
293
|
+
return G ?? U ?? Z;
|
|
294
294
|
}, C.setLevel = function(j, V) {
|
|
295
295
|
return G = pe(j), V !== !1 && He(G), k.call(C);
|
|
296
296
|
}, C.setDefaultLevel = function(j) {
|
|
297
|
-
|
|
297
|
+
U = pe(j), ae() || C.setLevel(j, !1);
|
|
298
298
|
}, C.resetLevel = function() {
|
|
299
299
|
G = null, he(), k.call(C);
|
|
300
300
|
}, C.enableAll = function(j) {
|
|
@@ -329,8 +329,8 @@ function Vi() {
|
|
|
329
329
|
});
|
|
330
330
|
})(Pt)), Pt.exports;
|
|
331
331
|
}
|
|
332
|
-
var Ui =
|
|
333
|
-
const Je = /* @__PURE__ */
|
|
332
|
+
var Ui = Ni();
|
|
333
|
+
const Je = /* @__PURE__ */ Ua(Ui), Wi = J`
|
|
334
334
|
:host {
|
|
335
335
|
--enegelai-bot-width: 420px;
|
|
336
336
|
--enegelai-bot-base-font-size: 16px;
|
|
@@ -385,6 +385,14 @@ const Je = /* @__PURE__ */ Na(Ui), Ni = J`
|
|
|
385
385
|
--symbol-size: 1.2em;
|
|
386
386
|
}
|
|
387
387
|
|
|
388
|
+
.cb-new-conversation-wrapper {
|
|
389
|
+
width: 100%;
|
|
390
|
+
display: flex;
|
|
391
|
+
align-items: center;
|
|
392
|
+
justify-content: center;
|
|
393
|
+
margin: 10px 0px;
|
|
394
|
+
}
|
|
395
|
+
|
|
388
396
|
@keyframes fadeIn {
|
|
389
397
|
from {
|
|
390
398
|
opacity: 0;
|
|
@@ -655,10 +663,10 @@ const Je = /* @__PURE__ */ Na(Ui), Ni = J`
|
|
|
655
663
|
color: white;
|
|
656
664
|
}
|
|
657
665
|
`;
|
|
658
|
-
var
|
|
659
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
666
|
+
var Gi = Object.defineProperty, Xi = Object.getOwnPropertyDescriptor, na = (a, e, t, i) => {
|
|
667
|
+
for (var s = i > 1 ? void 0 : i ? Xi(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
660
668
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
661
|
-
return i && s &&
|
|
669
|
+
return i && s && Gi(e, t, s), s;
|
|
662
670
|
};
|
|
663
671
|
let ut = class extends Fe {
|
|
664
672
|
constructor() {
|
|
@@ -678,7 +686,7 @@ na([
|
|
|
678
686
|
ut = na([
|
|
679
687
|
K("cb-icon")
|
|
680
688
|
], ut);
|
|
681
|
-
let
|
|
689
|
+
let Yi = (a) => crypto.getRandomValues(new Uint8Array(a)), Ji = (a, e, t) => {
|
|
682
690
|
let i = (2 << Math.log2(a.length - 1)) - 1, s = -~(1.6 * i * e / a.length);
|
|
683
691
|
return (r = e) => {
|
|
684
692
|
let o = "";
|
|
@@ -688,12 +696,12 @@ let Xi = (a) => crypto.getRandomValues(new Uint8Array(a)), Yi = (a, e, t) => {
|
|
|
688
696
|
if (o += a[f[p] & i] || "", o.length >= r) return o;
|
|
689
697
|
}
|
|
690
698
|
};
|
|
691
|
-
},
|
|
692
|
-
const
|
|
693
|
-
function
|
|
694
|
-
return
|
|
699
|
+
}, Ki = (a, e = 21) => Ji(a, e | 0, Yi);
|
|
700
|
+
const Zi = Ki("1234567890abcdefghijklmnopqrstuvwxyz", 10);
|
|
701
|
+
function fe(a = 10) {
|
|
702
|
+
return Zi(a);
|
|
695
703
|
}
|
|
696
|
-
function
|
|
704
|
+
function Qi(a) {
|
|
697
705
|
return new Promise((e, t) => {
|
|
698
706
|
try {
|
|
699
707
|
navigator.clipboard.writeText(a).then(() => {
|
|
@@ -716,7 +724,7 @@ function Ga(a = !0) {
|
|
|
716
724
|
const se = Je.noConflict();
|
|
717
725
|
se.setLevel("info");
|
|
718
726
|
const _a = 3e4;
|
|
719
|
-
class
|
|
727
|
+
class es {
|
|
720
728
|
constructor(e = {}) {
|
|
721
729
|
this.id = 0, this.url = e?.url || null, this.orgId = e?.orgId || null, this.botId = e?.botId || null, this.convId = e?.convId || null, this._options = e || {}, this._ws = null, this.started = !1, this.connected = !1, this.connecting = !1, this.suspendDetected = !1, this.onMessage = e?.onMessage || null, this.onConnecting = e?.onConnecting || null, this.onConnectError = e?.onConnectError || null, this.onClose = e?.onClose || null, this.queue = e?.queue || [], this.pause = (t) => new Promise((i) => setTimeout(i, t)), this.lastTickTs = 0, this.lastAckTs = 0, this.tickInterval = null, se.info(`WSC: Created, url: ${this.url}`);
|
|
722
730
|
}
|
|
@@ -776,7 +784,7 @@ class Qi {
|
|
|
776
784
|
this.connecting !== e && (this.connecting = e, this.onConnecting && typeof this.onConnecting == "function" && this.onConnecting(this.connecting));
|
|
777
785
|
}
|
|
778
786
|
pingConnection() {
|
|
779
|
-
this._ws && this._ws.readyState === WebSocket.OPEN && this._ws.send(JSON.stringify({ type: "heartbeat", id:
|
|
787
|
+
this._ws && this._ws.readyState === WebSocket.OPEN && this._ws.send(JSON.stringify({ type: "heartbeat", id: fe() }));
|
|
780
788
|
}
|
|
781
789
|
tick() {
|
|
782
790
|
this.pingConnection(), this.lastTickTs = Date.now();
|
|
@@ -811,7 +819,7 @@ class Qi {
|
|
|
811
819
|
sendClientInfoMessage() {
|
|
812
820
|
const e = {
|
|
813
821
|
type: "clientInfo",
|
|
814
|
-
id:
|
|
822
|
+
id: fe(),
|
|
815
823
|
data: {
|
|
816
824
|
referrer: window.location.href,
|
|
817
825
|
userAgent: window.navigator.userAgent
|
|
@@ -877,7 +885,7 @@ class Qi {
|
|
|
877
885
|
});
|
|
878
886
|
}*/
|
|
879
887
|
}
|
|
880
|
-
class
|
|
888
|
+
class ts {
|
|
881
889
|
constructor(e = {}) {
|
|
882
890
|
this.name = e.name || "EventEmitter", this.events = {};
|
|
883
891
|
}
|
|
@@ -1024,7 +1032,7 @@ const Sa = [
|
|
|
1024
1032
|
7040,
|
|
1025
1033
|
7458.62,
|
|
1026
1034
|
7902.13
|
|
1027
|
-
],
|
|
1035
|
+
], as = [
|
|
1028
1036
|
"C",
|
|
1029
1037
|
"C#",
|
|
1030
1038
|
"D",
|
|
@@ -1041,9 +1049,9 @@ const Sa = [
|
|
|
1041
1049
|
for (let a = 1; a <= 8; a++)
|
|
1042
1050
|
for (let e = 0; e < Sa.length; e++) {
|
|
1043
1051
|
const t = Sa[e];
|
|
1044
|
-
We.push(t / Math.pow(2, 8 - a)), ra.push(
|
|
1052
|
+
We.push(t / Math.pow(2, 8 - a)), ra.push(as[e] + a);
|
|
1045
1053
|
}
|
|
1046
|
-
const Rt = [32, 2e3], Ca = We.filter((a, e) => We[e] > Rt[0] && We[e] < Rt[1]),
|
|
1054
|
+
const Rt = [32, 2e3], Ca = We.filter((a, e) => We[e] > Rt[0] && We[e] < Rt[1]), is = ra.filter((a, e) => We[e] > Rt[0] && We[e] < Rt[1]);
|
|
1047
1055
|
class lt {
|
|
1048
1056
|
/**
|
|
1049
1057
|
* Retrieves frequency domain data from an AnalyserNode adjusted to a decibel range
|
|
@@ -1064,13 +1072,13 @@ class lt {
|
|
|
1064
1072
|
const I = s === "voice" ? Ca : We, M = Array(I.length).fill(r);
|
|
1065
1073
|
for (let L = 0; L < i.length; L++) {
|
|
1066
1074
|
const C = L * p, Z = i[L];
|
|
1067
|
-
for (let
|
|
1068
|
-
if (C > I[
|
|
1069
|
-
M[
|
|
1075
|
+
for (let U = I.length - 1; U >= 0; U--)
|
|
1076
|
+
if (C > I[U]) {
|
|
1077
|
+
M[U] = Math.max(M[U], Z);
|
|
1070
1078
|
break;
|
|
1071
1079
|
}
|
|
1072
1080
|
}
|
|
1073
|
-
v = M, k = s === "voice" ? Ca : We, w = s === "voice" ?
|
|
1081
|
+
v = M, k = s === "voice" ? Ca : We, w = s === "voice" ? is : ra;
|
|
1074
1082
|
} else
|
|
1075
1083
|
v = Array.from(i), k = v.map((I, M) => p * M), w = k.map((I) => `${I.toFixed(2)} Hz`);
|
|
1076
1084
|
const _ = v.map((I) => Math.max(
|
|
@@ -1146,7 +1154,7 @@ class lt {
|
|
|
1146
1154
|
}
|
|
1147
1155
|
}
|
|
1148
1156
|
globalThis.AudioAnalysis = lt;
|
|
1149
|
-
const
|
|
1157
|
+
const ss = `
|
|
1150
1158
|
class StreamProcessor extends AudioWorkletProcessor {
|
|
1151
1159
|
constructor() {
|
|
1152
1160
|
super();
|
|
@@ -1235,17 +1243,17 @@ class StreamProcessor extends AudioWorkletProcessor {
|
|
|
1235
1243
|
}
|
|
1236
1244
|
|
|
1237
1245
|
registerProcessor('stream_processor', StreamProcessor);
|
|
1238
|
-
`,
|
|
1246
|
+
`, ns = new Blob([ss], {
|
|
1239
1247
|
type: "application/javascript"
|
|
1240
|
-
}),
|
|
1241
|
-
class
|
|
1248
|
+
}), rs = URL.createObjectURL(ns), os = rs;
|
|
1249
|
+
class cs {
|
|
1242
1250
|
/**
|
|
1243
1251
|
* Creates a new WavStreamPlayer instance
|
|
1244
1252
|
* @param {{sampleRate?: number}} options
|
|
1245
1253
|
* @returns {WavStreamPlayer}
|
|
1246
1254
|
*/
|
|
1247
1255
|
constructor({ sampleRate: e = 44100, onPlaybackEnded: t = null } = {}) {
|
|
1248
|
-
this.scriptSrc =
|
|
1256
|
+
this.scriptSrc = os, this.sampleRate = e, this.context = null, this.stream = null, this.analyser = null, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this.onPlaybackEnded = t && typeof t == "function" ? t : null;
|
|
1249
1257
|
}
|
|
1250
1258
|
/**
|
|
1251
1259
|
* Connects the audio context and enables output to speakers
|
|
@@ -1340,8 +1348,8 @@ class os {
|
|
|
1340
1348
|
return this.getTrackSampleOffset(!0);
|
|
1341
1349
|
}
|
|
1342
1350
|
}
|
|
1343
|
-
globalThis.WavStreamPlayer =
|
|
1344
|
-
const
|
|
1351
|
+
globalThis.WavStreamPlayer = cs;
|
|
1352
|
+
const ls = URL.createObjectURL(
|
|
1345
1353
|
new Blob([`
|
|
1346
1354
|
class UpsampleStreamPCM extends AudioWorkletProcessor {
|
|
1347
1355
|
constructor(options) {
|
|
@@ -1558,7 +1566,7 @@ class Xa {
|
|
|
1558
1566
|
/** Build the WebAudio graph. Always audible via direct path; loopback ref is optional and non-critical. */
|
|
1559
1567
|
async connect() {
|
|
1560
1568
|
if (this.context) return !0;
|
|
1561
|
-
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(
|
|
1569
|
+
if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(ls), this._worklet = new AudioWorkletNode(this.context, "upsample-stream-pcm", {
|
|
1562
1570
|
processorOptions: {
|
|
1563
1571
|
sourceSampleRate: this.inputSampleRate,
|
|
1564
1572
|
prerollSrc: Math.round(this.inputSampleRate * 0.02)
|
|
@@ -1687,7 +1695,7 @@ class Xa {
|
|
|
1687
1695
|
}
|
|
1688
1696
|
}
|
|
1689
1697
|
globalThis.WavStreamPlayerV2 = Xa;
|
|
1690
|
-
const
|
|
1698
|
+
const ds = `
|
|
1691
1699
|
class AudioProcessor extends AudioWorkletProcessor {
|
|
1692
1700
|
|
|
1693
1701
|
constructor() {
|
|
@@ -1894,17 +1902,17 @@ class AudioProcessor extends AudioWorkletProcessor {
|
|
|
1894
1902
|
}
|
|
1895
1903
|
|
|
1896
1904
|
registerProcessor('audio_processor', AudioProcessor);
|
|
1897
|
-
`,
|
|
1905
|
+
`, fs = new Blob([ds], {
|
|
1898
1906
|
type: "application/javascript"
|
|
1899
|
-
}),
|
|
1900
|
-
class
|
|
1907
|
+
}), hs = URL.createObjectURL(fs), bs = hs;
|
|
1908
|
+
class us {
|
|
1901
1909
|
/**
|
|
1902
1910
|
* Create a new WavRecorder instance
|
|
1903
1911
|
* @param {{sampleRate?: number, outputToSpeakers?: boolean, debug?: boolean}} [options]
|
|
1904
1912
|
* @returns {WavRecorder}
|
|
1905
1913
|
*/
|
|
1906
1914
|
constructor({ sampleRate: e = 44100, outputToSpeakers: t = !1, debug: i = !1 } = {}) {
|
|
1907
|
-
this.scriptSrc =
|
|
1915
|
+
this.scriptSrc = bs, this.sampleRate = e, this.outputToSpeakers = t, this.debug = !!i, this._deviceChangeCallback = null, this._devices = [], this.stream = null, this.processor = null, this.source = null, this.node = null, this.recording = !1, this._lastEventId = 0, this.eventReceipts = {}, this.eventTimeout = 5e3, this._chunkProcessor = () => {
|
|
1908
1916
|
}, this._chunkProcessorSize = void 0, this._chunkProcessorBuffer = {
|
|
1909
1917
|
raw: new ArrayBuffer(0),
|
|
1910
1918
|
mono: new ArrayBuffer(0)
|
|
@@ -2233,8 +2241,8 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
|
|
|
2233
2241
|
return this.listenForDeviceChange(null), this.processor && await this.end(), !0;
|
|
2234
2242
|
}
|
|
2235
2243
|
}
|
|
2236
|
-
globalThis.WavRecorder =
|
|
2237
|
-
const
|
|
2244
|
+
globalThis.WavRecorder = us;
|
|
2245
|
+
const ps = URL.createObjectURL(
|
|
2238
2246
|
new Blob([`
|
|
2239
2247
|
class DownsampleRecorder extends AudioWorkletProcessor {
|
|
2240
2248
|
constructor(options) {
|
|
@@ -2455,7 +2463,7 @@ class ot {
|
|
|
2455
2463
|
echoCancellationType: this.captureInfo.trackSettings?.echoCancellationType ?? null
|
|
2456
2464
|
}, this._log("Granted track settings:", this.captureInfo.trackSettings), this.audioCtx = new (window.AudioContext || window.webkitAudioContext)({
|
|
2457
2465
|
latencyHint: "interactive"
|
|
2458
|
-
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(
|
|
2466
|
+
}), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(ps);
|
|
2459
2467
|
const s = Math.round(this.targetSampleRate * this.chunkMs / 1e3);
|
|
2460
2468
|
return this.node = new AudioWorkletNode(this.audioCtx, "downsample-recorder", {
|
|
2461
2469
|
processorOptions: {
|
|
@@ -2531,7 +2539,7 @@ class ot {
|
|
|
2531
2539
|
}
|
|
2532
2540
|
}
|
|
2533
2541
|
globalThis.WavRecorderV2 = ot;
|
|
2534
|
-
class
|
|
2542
|
+
class gs {
|
|
2535
2543
|
constructor(e = {}) {
|
|
2536
2544
|
this.sr = Math.max(8e3, e.sampleRate || 24e3), this.floor = Aa(e.floor ?? 0.12), this.attackSamples = Ce(e.attackMs ?? 12, this.sr), this.releaseSamples = Ce(e.releaseMs ?? 150, this.sr), this.escapeAttackSamples = Ce(e.escapeAttackMs ?? 10, this.sr), this.defaultGuardSamples = Ce(e.defaultGuardMs ?? 0, this.sr), this.gain = 1, this.target = 1, this.rampRemain = 0, this._step = 0, this.duckActive = !1, this.guardRemain = 0, this.vadEnabled = e.vadEnabled !== !1;
|
|
2537
2545
|
const t = Math.max(2, e.vadFastMs ?? 10), i = Math.max(t + 20, e.vadSlowMs ?? 250);
|
|
@@ -2575,15 +2583,15 @@ class ps {
|
|
|
2575
2583
|
this.guardRemain > 0 && this.guardRemain--;
|
|
2576
2584
|
const M = e[I] / 32768, L = M * M;
|
|
2577
2585
|
f = f + (1 - this.alphaFast) * (L - f), p = p + (1 - this.alphaSlow) * (L - p), this.vadEnabled && (f / (p + _) >= P ? v < this.vadAttackSamples && v++ : v = 0, v >= this.vadAttackSamples ? (w = !0, k = this.vadHangSamples) : k > 0 ? (w = !0, k--) : w = !1), w && this._shieldActive && (this._shieldActive = !1, this.target = 1, o = this.escapeAttackSamples, r = o > 0 ? (1 - s) / o : 0);
|
|
2578
|
-
let C = 1, Z = 0,
|
|
2586
|
+
let C = 1, Z = 0, U = !1;
|
|
2579
2587
|
if (this.duckActive) {
|
|
2580
2588
|
const te = this.guardRemain > 0;
|
|
2581
|
-
te && this._shieldActive && !w ? (
|
|
2589
|
+
te && this._shieldActive && !w ? (U = this._shieldHardMute, C = this._shieldHardMute ? 0 : this._shieldFloor, Z = this.attackSamples, this.guardRemain === 0 && (this._shieldActive = !1, this._shieldHardMute = !1)) : w ? (C = 1, Z = this.escapeAttackSamples) : te ? (C = this.floor, Z = this.attackSamples) : (C = 1, Z = this.releaseSamples);
|
|
2582
2590
|
} else
|
|
2583
2591
|
C = 1, Z = this.releaseSamples;
|
|
2584
2592
|
Math.abs(C - this.target) > 1e-4 && (this.target = C, o = Z, r = o > 0 ? (C - s) / o : 0, o === 0 && (s = C)), o > 0 && (s += r, o--, o === 0 && (s = this.target, r = 0));
|
|
2585
2593
|
let G;
|
|
2586
|
-
|
|
2594
|
+
U && !w ? G = 0 : (G = e[I] * s, G > 32767 ? G = 32767 : G < -32768 && (G = -32768)), i[I] = G | 0;
|
|
2587
2595
|
}
|
|
2588
2596
|
return this.gain = s, this._step = r, this.rampRemain = o, this.vadFast = f, this.vadSlow = p, this._speechCount = v, this._hangRemain = k, this._speaking = w, i;
|
|
2589
2597
|
}
|
|
@@ -2604,7 +2612,7 @@ function Ta(a, e) {
|
|
|
2604
2612
|
const t = Math.max(1, a * e / 1e3);
|
|
2605
2613
|
return Math.exp(-1 / t);
|
|
2606
2614
|
}
|
|
2607
|
-
class
|
|
2615
|
+
class ms {
|
|
2608
2616
|
/**
|
|
2609
2617
|
* @param {object} opts
|
|
2610
2618
|
* @param {number} opts.sampleRate - Hz of your PCM (e.g., 24000)
|
|
@@ -2687,11 +2695,11 @@ class gs {
|
|
|
2687
2695
|
}
|
|
2688
2696
|
I = Math.sqrt(I) + 1e-12;
|
|
2689
2697
|
const M = this.sr / this.ds, L = (this.baseLatencySec + this.outputLatencySec) * 1e3 + this.latencyCompMs, C = Math.max(0, Math.round(L * M / 1e3)), Z = Math.max(1, Math.round(this.windowMs * M / 1e3));
|
|
2690
|
-
let
|
|
2691
|
-
C > 0 && (
|
|
2698
|
+
let U = 0, G = k;
|
|
2699
|
+
C > 0 && (U = Math.max(0, Math.min(k, C - Z)), G = Math.max(U, Math.min(k, C + Z)));
|
|
2692
2700
|
const te = Math.max(1, Math.floor(this.hop / this.ds));
|
|
2693
2701
|
let He = -1;
|
|
2694
|
-
for (let ae =
|
|
2702
|
+
for (let ae = U; ae <= G; ae += te) {
|
|
2695
2703
|
let he = 0, pe = 0;
|
|
2696
2704
|
for (let V = 0; V < o; V++) {
|
|
2697
2705
|
const $e = _[V], Pe = P[ae + V];
|
|
@@ -2759,7 +2767,7 @@ class gs {
|
|
|
2759
2767
|
return o;
|
|
2760
2768
|
}
|
|
2761
2769
|
}
|
|
2762
|
-
class
|
|
2770
|
+
class ys {
|
|
2763
2771
|
/**
|
|
2764
2772
|
* @param {object} opts
|
|
2765
2773
|
* @param {number} opts.sampleRate - PCM sample rate (e.g., 24000)
|
|
@@ -2896,7 +2904,7 @@ class ms {
|
|
|
2896
2904
|
return o;
|
|
2897
2905
|
}
|
|
2898
2906
|
}
|
|
2899
|
-
class
|
|
2907
|
+
class vs {
|
|
2900
2908
|
/**
|
|
2901
2909
|
* @param {object} opts
|
|
2902
2910
|
* @param {number} opts.sampleRate - Mic PCM sample rate (e.g., 24000)
|
|
@@ -2939,9 +2947,9 @@ class ys {
|
|
|
2939
2947
|
}
|
|
2940
2948
|
}
|
|
2941
2949
|
}
|
|
2942
|
-
const
|
|
2943
|
-
|
|
2944
|
-
class pt extends
|
|
2950
|
+
const Ue = Je.noConflict();
|
|
2951
|
+
Ue.setLevel("info");
|
|
2952
|
+
class pt extends ts {
|
|
2945
2953
|
constructor(e = {}) {
|
|
2946
2954
|
super({ name: "WebAudioProcessorV2" }), this.options = e, this.muted = !1, this.audioRecorder = new ot({
|
|
2947
2955
|
targetSampleRate: 24e3,
|
|
@@ -2953,14 +2961,14 @@ class pt extends es {
|
|
|
2953
2961
|
primeMs: 200,
|
|
2954
2962
|
// keep or remove; it’s harmless
|
|
2955
2963
|
debug: !!e.debug
|
|
2956
|
-
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new
|
|
2964
|
+
}), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new vs({
|
|
2957
2965
|
sampleRate: 24e3,
|
|
2958
2966
|
windowMs: this.firstTurnDropMs,
|
|
2959
2967
|
partialPass: !0,
|
|
2960
2968
|
// pass remainder of crossing frame
|
|
2961
2969
|
hardDrop: !0
|
|
2962
2970
|
// set true if you prefer simpler "drop whole frame"
|
|
2963
|
-
}), this.ducker = new
|
|
2971
|
+
}), this.ducker = new gs({
|
|
2964
2972
|
sampleRate: 24e3,
|
|
2965
2973
|
floor: 0.12,
|
|
2966
2974
|
attackMs: 12,
|
|
@@ -2975,7 +2983,7 @@ class pt extends es {
|
|
|
2975
2983
|
vadSlowMs: 250,
|
|
2976
2984
|
vadAttackMs: 18,
|
|
2977
2985
|
vadHangMs: 120
|
|
2978
|
-
}), this.mixMinus = new
|
|
2986
|
+
}), this.mixMinus = new ms({
|
|
2979
2987
|
sampleRate: 24e3,
|
|
2980
2988
|
bufferMs: 1e3,
|
|
2981
2989
|
threshold: 0.3,
|
|
@@ -2984,7 +2992,7 @@ class pt extends es {
|
|
|
2984
2992
|
hop: 64,
|
|
2985
2993
|
downsampleFactor: 3,
|
|
2986
2994
|
minCorrLenMs: 15
|
|
2987
|
-
}), this.mixMinusSmooth = new
|
|
2995
|
+
}), this.mixMinusSmooth = new ys({
|
|
2988
2996
|
sampleRate: 24e3,
|
|
2989
2997
|
bufferMs: 800,
|
|
2990
2998
|
lowThresh: 0.25,
|
|
@@ -3019,13 +3027,13 @@ class pt extends es {
|
|
|
3019
3027
|
e(), this._latencyTimer = setInterval(e, 1e3);
|
|
3020
3028
|
try {
|
|
3021
3029
|
const t = this.audioRecorder.captureInfo?.aecGranted;
|
|
3022
|
-
t &&
|
|
3030
|
+
t && Ue.info("AEC granted:", t);
|
|
3023
3031
|
} catch {
|
|
3024
3032
|
}
|
|
3025
|
-
|
|
3033
|
+
Ue.info("WebAudioProcessorV2 started");
|
|
3026
3034
|
}
|
|
3027
3035
|
async stop() {
|
|
3028
|
-
this._stopRecWatchdog(), this.audioRecorder.getStatus() !== "ended" && (await this.audioRecorder.end(), this.audioRecorder = null), this.audioRecorderAnalyzer = null, this.audioPlayer?.context && (await this.audioPlayer.disconnect(), this.audioPlayer = null), this._latencyTimer && (clearInterval(this._latencyTimer), this._latencyTimer = null), this._didPlayOnce = !1,
|
|
3036
|
+
this._stopRecWatchdog(), this.audioRecorder.getStatus() !== "ended" && (await this.audioRecorder.end(), this.audioRecorder = null), this.audioRecorderAnalyzer = null, this.audioPlayer?.context && (await this.audioPlayer.disconnect(), this.audioPlayer = null), this._latencyTimer && (clearInterval(this._latencyTimer), this._latencyTimer = null), this._didPlayOnce = !1, Ue.info("WebAudioProcessorV2 stopped");
|
|
3029
3037
|
}
|
|
3030
3038
|
get started() {
|
|
3031
3039
|
return !!(this.audioRecorder && this.audioRecorder.getStatus() !== "ended");
|
|
@@ -3047,7 +3055,7 @@ class pt extends es {
|
|
|
3047
3055
|
}
|
|
3048
3056
|
async _checkRecordingHealth(e) {
|
|
3049
3057
|
const i = Date.now() - this._lastMicCaptureTime;
|
|
3050
|
-
i > 2e3 && (
|
|
3058
|
+
i > 2e3 && (Ue.warn(`WebAudioProcessorV2: large gap between mic frames: ${i} ms detected, possible lock or suspend - terminating audio`), this.emit("terminate").catch(() => {
|
|
3051
3059
|
}));
|
|
3052
3060
|
}
|
|
3053
3061
|
// ---- Capture ----
|
|
@@ -3056,7 +3064,7 @@ class pt extends es {
|
|
|
3056
3064
|
* Your existing 'audio' event is preserved: payload includes base64 of Int16 PCM.
|
|
3057
3065
|
*/
|
|
3058
3066
|
async beginAudioCapture() {
|
|
3059
|
-
!this.started || this.recording || (
|
|
3067
|
+
!this.started || this.recording || (Ue.info("WebAudioProcessorV2: beginAudioCapture"), this._lastMicCaptureTime = Date.now(), this._startRecWatchdog(), await this.audioRecorder.record((e) => {
|
|
3060
3068
|
if (e?.mono && e.mono?.byteLength) {
|
|
3061
3069
|
this._lastMicCaptureTime = Date.now();
|
|
3062
3070
|
let t = new Int16Array(e.mono);
|
|
@@ -3066,12 +3074,12 @@ class pt extends es {
|
|
|
3066
3074
|
const i = this.useAdaptiveSuppressor ? this.mixMinusSmooth.filterMicFrame(t) : this.mixMinus.filterMicFrame(t) || new Int16Array(0);
|
|
3067
3075
|
if (i.length === 0) return;
|
|
3068
3076
|
const s = pt.arrayBufferToBase64(i);
|
|
3069
|
-
|
|
3077
|
+
Ue.info(`Audio: mono ${e.mono.byteLength} bytes, base64 ${s.length} bytes`), this.emit("audio", { audio: s });
|
|
3070
3078
|
}
|
|
3071
3079
|
}));
|
|
3072
3080
|
}
|
|
3073
3081
|
async endAudioCapture() {
|
|
3074
|
-
!this.started || !this.recording || (
|
|
3082
|
+
!this.started || !this.recording || (Ue.info("WebAudioProcessorV2: endAudioCapture"), this._stopRecWatchdog(), await this.audioRecorder.pause());
|
|
3075
3083
|
}
|
|
3076
3084
|
// ---- Playback ----
|
|
3077
3085
|
/**
|
|
@@ -3185,7 +3193,7 @@ function Ze(a) {
|
|
|
3185
3193
|
}
|
|
3186
3194
|
};
|
|
3187
3195
|
}
|
|
3188
|
-
function
|
|
3196
|
+
function ws(a) {
|
|
3189
3197
|
return function e(t, i, s) {
|
|
3190
3198
|
switch (arguments.length) {
|
|
3191
3199
|
case 0:
|
|
@@ -3219,45 +3227,45 @@ function vs(a) {
|
|
|
3219
3227
|
}
|
|
3220
3228
|
};
|
|
3221
3229
|
}
|
|
3222
|
-
const
|
|
3230
|
+
const xs = Number.isInteger || function(e) {
|
|
3223
3231
|
return e << 0 === e;
|
|
3224
3232
|
};
|
|
3225
|
-
function
|
|
3233
|
+
function ks(a, e) {
|
|
3226
3234
|
var t = a < 0 ? e.length + a : a;
|
|
3227
3235
|
return e[t];
|
|
3228
3236
|
}
|
|
3229
|
-
var
|
|
3237
|
+
var _s = /* @__PURE__ */ Ze(function(e, t) {
|
|
3230
3238
|
return t == null || t !== t ? e : t;
|
|
3231
3239
|
});
|
|
3232
|
-
function
|
|
3240
|
+
function Ss(a, e) {
|
|
3233
3241
|
for (var t = e, i = 0; i < a.length; i += 1) {
|
|
3234
3242
|
if (t == null)
|
|
3235
3243
|
return;
|
|
3236
3244
|
var s = a[i];
|
|
3237
|
-
|
|
3245
|
+
xs(s) ? t = ks(s, t) : t = t[s];
|
|
3238
3246
|
}
|
|
3239
3247
|
return t;
|
|
3240
3248
|
}
|
|
3241
|
-
var
|
|
3242
|
-
return
|
|
3249
|
+
var Ut = /* @__PURE__ */ ws(function(e, t, i) {
|
|
3250
|
+
return _s(e, Ss(t, i));
|
|
3243
3251
|
});
|
|
3244
|
-
const Ss = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3245
|
-
var
|
|
3252
|
+
const Cs = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
|
|
3253
|
+
var As = Object.defineProperty, O = (a, e, t, i) => {
|
|
3246
3254
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
3247
3255
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
3248
|
-
return s &&
|
|
3256
|
+
return s && As(e, t, s), s;
|
|
3249
3257
|
};
|
|
3250
|
-
const
|
|
3251
|
-
|
|
3252
|
-
const
|
|
3258
|
+
const E = Je.noConflict();
|
|
3259
|
+
E.setLevel("info");
|
|
3260
|
+
const ne = "cb_", Ms = (a) => new Promise((e) => setTimeout(e, a));
|
|
3253
3261
|
class R extends Yt {
|
|
3254
3262
|
constructor() {
|
|
3255
3263
|
super(), this.actionIdCounter = 0, this.currentLoadContext = {}, this.prefilledFormValues = {}, this.wsClient = null, this.webAudioProcessor = null, this.webAudioTrackId = null, this.webAudioCurrentMark = null, this.replyMessage = null, this.streamingResponseInProgress = !1, this.streamingResponseLastText = null, this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null, this.tabsBroadcastChannel = new BroadcastChannel("c7o-bot-tabs"), this.tabId = "c7o-bot-tab-" + (self.crypto?.randomUUID?.() || Math.random().toString(36).slice(2)), this.tabsBroadcastChannel.addEventListener("message", this.handleBroadcastMessage.bind(this)), console.log(`c7o: AppState: created, tabId=${this.tabId}`);
|
|
3256
3264
|
}
|
|
3257
3265
|
// this is called at startup
|
|
3258
3266
|
setSetting(e) {
|
|
3259
|
-
|
|
3260
|
-
|
|
3267
|
+
E.info("appState: Startup: setSetting", e), this.setting = e, this.initBot().catch((t) => {
|
|
3268
|
+
E.info(`Exception during bot initialization: ${t.message}`);
|
|
3261
3269
|
});
|
|
3262
3270
|
}
|
|
3263
3271
|
// set language
|
|
@@ -3272,7 +3280,7 @@ class R extends Yt {
|
|
|
3272
3280
|
async initBot() {
|
|
3273
3281
|
if (!this.botSettingsInitialized) {
|
|
3274
3282
|
const i = `${this.setting.url.startsWith("localhost") ? "http" : "https"}://${this.setting.url}/api/bot/settings/${this.setting.orgId}/${this.setting.botId}`;
|
|
3275
|
-
|
|
3283
|
+
E.info(`Getting bot settings at ${i} ...`);
|
|
3276
3284
|
let s = null, r = null;
|
|
3277
3285
|
try {
|
|
3278
3286
|
s = await fetch(i, {
|
|
@@ -3282,13 +3290,13 @@ class R extends Yt {
|
|
|
3282
3290
|
"X-Enegel-Signature": this.setting.botId
|
|
3283
3291
|
//"ngrok-skip-browser-warning": "1",
|
|
3284
3292
|
}
|
|
3285
|
-
}), !s.ok || s.status !== 200 ?
|
|
3293
|
+
}), !s.ok || s.status !== 200 ? E.error(`Failed to get bot ${this.setting.botId} settings: ${s.status} ${s.statusText}`) : r = await s.json();
|
|
3286
3294
|
} catch (o) {
|
|
3287
|
-
|
|
3295
|
+
E.error(`Failed to get bot ${this.setting.botId} settings: ${o.message}`), r = null;
|
|
3288
3296
|
}
|
|
3289
3297
|
if (this.botSettingsInitialized = !0, this.botSettings = r, !r) {
|
|
3290
|
-
if (
|
|
3291
|
-
|
|
3298
|
+
if (E.error(`Unable to retrieve bot settings - bot disabled. Retry in ${this.botSettingsRetryTimeout} seconds.`), this.disabled = !0, this.botSettingsRetryTimeout > 80) {
|
|
3299
|
+
E.error("Failed to retrieve bot settings - bot disabled. Retries exhausted. Refresh page to attempt again.");
|
|
3292
3300
|
return;
|
|
3293
3301
|
}
|
|
3294
3302
|
this.botSettingsInitialized = !1, setTimeout(async () => {
|
|
@@ -3296,17 +3304,17 @@ class R extends Yt {
|
|
|
3296
3304
|
}, this.botSettingsRetryTimeout * 1e3), this.botSettingsRetryTimeout = this.botSettingsRetryTimeout * 2;
|
|
3297
3305
|
return;
|
|
3298
3306
|
}
|
|
3299
|
-
|
|
3307
|
+
E.info("Got bot settings - bot is enabled", r), this.disabled = !1, this.setting.welcomeMessage = r?.welcomeMessage || "How can I help ?", this.setting.disclaimerMessage = r?.disclaimerMessage && r.disclaimerMessage !== "" ? r.disclaimerMessage : null, this.setting.engageMessage = r?.engageMessage || "How can I help ?", this.setting.engageTimeout = r?.engageTimeout || 5, this.setting.splitMessagesAtBreak = "splitMessagesAtBreak" in r ? r.splitMessagesAtBreak : !1, this.setting.feedbackEnabled = "feedbackEnabled" in r ? r.feedbackEnabled : !1, this.setting.uploadImages = "uploadImages" in r ? r.uploadImages : !1, this.setting.newConversationTimeoutInSec = r?.newConversationTimeoutInSec || 86400, this.setting.enableNotificationSound = "enableNotificationSound" in r ? r.enableNotificationSound : !0, this.setting.botAdvancedSettings = r?.botAdvancedSettings ?? {}, this.setting.startFeedbackFromMessage = "startFeedbackFromMessage" in this.setting.botAdvancedSettings ? this.setting.botAdvancedSettings.startFeedbackFromMessage : 1, this.setting.enableMultiModalConnection = this.setting.botAdvancedSettings?.enableMultiModalConnection ?? !1, this.setting.enableMultiModalConnection ? this.setting.enableAudio = !0 : this.setting.enableAudio = !1, this.initConversation(), this.shouldEngage === "true" && setTimeout(() => {
|
|
3300
3308
|
this.showEngagePopup();
|
|
3301
3309
|
}, this.setting.engageTimeout * 1e3);
|
|
3302
3310
|
}
|
|
3303
3311
|
const e = new URLSearchParams(window.location.search);
|
|
3304
3312
|
if (e.has("c7o_bot_open")) {
|
|
3305
3313
|
const t = e.get("c7o_bot_open");
|
|
3306
|
-
this.open = t !== "false" && t !== "no" && t !== "0",
|
|
3314
|
+
this.open = t !== "false" && t !== "no" && t !== "0", E.info(`C7O-BOT:INIT: Force open=${this.open} from query parameter c7o_bot_open=${e.get("c7o_bot_open")}`);
|
|
3307
3315
|
}
|
|
3308
|
-
this.connectWs === "true" && (
|
|
3309
|
-
|
|
3316
|
+
this.connectWs === "true" && (E.info("appState: connectWs is true"), this.getWsClient().catch((t) => {
|
|
3317
|
+
E.error(`Exception during ws client startup: ${t.message}`);
|
|
3310
3318
|
})), setTimeout(() => {
|
|
3311
3319
|
window.dispatchEvent(
|
|
3312
3320
|
new CustomEvent("c7o:bot:stateEvent", {
|
|
@@ -3329,7 +3337,7 @@ class R extends Yt {
|
|
|
3329
3337
|
this.initStartupForm();
|
|
3330
3338
|
}
|
|
3331
3339
|
async clearConversation(e = !0) {
|
|
3332
|
-
await this.stopAudio(), this.mediaStartedAudio = !1, this.wsClient && e && (await this.wsClient.stop(), this.wsClient = null), this.connected = !1, this.conversationId =
|
|
3340
|
+
await this.stopAudio(), this.mediaStartedAudio = !1, this.wsClient && e && (await this.wsClient.stop(), this.wsClient = null), this.connected = !1, this.conversationId = fe(), this.lastConversationUpdate = Date.now(), e && (this.connectWs = "false", this.shouldEngage = "true"), this.messages = [], this.unreadMessages = 0, this.actions = [], this.showNewConversation = !1, this.context = this.currentLoadContext, this.form = null, this.addMessage({
|
|
3333
3341
|
author: "assistant",
|
|
3334
3342
|
type: "text",
|
|
3335
3343
|
data: {
|
|
@@ -3337,6 +3345,19 @@ class R extends Yt {
|
|
|
3337
3345
|
}
|
|
3338
3346
|
}), this.initStartupForm();
|
|
3339
3347
|
}
|
|
3348
|
+
// AGENT // ////////////////////////////////////////////////////
|
|
3349
|
+
async handleAgentDisconnected(e) {
|
|
3350
|
+
E.info(`c7o: Agent disconnected ${this.webAudioCurrentMark}`, e), this.addMessage({
|
|
3351
|
+
id: e?.id || null,
|
|
3352
|
+
author: "assistant",
|
|
3353
|
+
type: "text",
|
|
3354
|
+
data: {
|
|
3355
|
+
text: "_Left chat_",
|
|
3356
|
+
...e.userName && { userName: e.userName },
|
|
3357
|
+
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3358
|
+
}
|
|
3359
|
+
}), this.showNewConversation = !0;
|
|
3360
|
+
}
|
|
3340
3361
|
// BROADCAST // ///////////////////////////////////////////////////
|
|
3341
3362
|
async handleBroadcastMessage(e) {
|
|
3342
3363
|
const t = e?.data || null;
|
|
@@ -3356,7 +3377,7 @@ class R extends Yt {
|
|
|
3356
3377
|
// we will start actual audio capture only after we receive mediaStarted confirmation from server
|
|
3357
3378
|
async startAudio() {
|
|
3358
3379
|
this.mediaStartAudioRequested || (this.webAudioProcessor || (this.webAudioProcessor = new pt(), this.webAudioProcessor.on("audio", this.onAudioChunkCaptured.bind(this)), this.webAudioProcessor.on("playbackEnded", this.onPlaybackEnded.bind(this)), this.webAudioProcessor.on("terminate", this.onWebAudioTerminate.bind(this))), await this.sendEvent({
|
|
3359
|
-
id:
|
|
3380
|
+
id: fe(),
|
|
3360
3381
|
type: "mediaStart",
|
|
3361
3382
|
mediaType: "audio",
|
|
3362
3383
|
mimeType: "audio/L16",
|
|
@@ -3370,7 +3391,7 @@ class R extends Yt {
|
|
|
3370
3391
|
}
|
|
3371
3392
|
async stopAudio() {
|
|
3372
3393
|
this.webAudioProcessor && (this.webAudioProcessor.removeAllListeners(), await this.stopWebAudio(), this.webAudioProcessor = null, await this.sendEvent({
|
|
3373
|
-
id:
|
|
3394
|
+
id: fe(),
|
|
3374
3395
|
type: "mediaStop",
|
|
3375
3396
|
mediaType: "audio"
|
|
3376
3397
|
}), this.postBroadcastMessage({
|
|
@@ -3394,7 +3415,7 @@ class R extends Yt {
|
|
|
3394
3415
|
}
|
|
3395
3416
|
async onAudioChunkCaptured(e) {
|
|
3396
3417
|
!e || !e.audio || await this.sendEvent({
|
|
3397
|
-
id:
|
|
3418
|
+
id: fe(),
|
|
3398
3419
|
type: "media",
|
|
3399
3420
|
mediaType: "audio",
|
|
3400
3421
|
media: {
|
|
@@ -3404,8 +3425,8 @@ class R extends Yt {
|
|
|
3404
3425
|
}
|
|
3405
3426
|
// When finished playing audio, clear trackId and send mark message
|
|
3406
3427
|
async onPlaybackEnded() {
|
|
3407
|
-
this.webAudioCurrentMark && (
|
|
3408
|
-
id:
|
|
3428
|
+
this.webAudioCurrentMark && (E.info(`c7o: mark ${this.webAudioCurrentMark} completed`), await this.sendEvent({
|
|
3429
|
+
id: fe(),
|
|
3409
3430
|
type: "mediaMark",
|
|
3410
3431
|
mark: {
|
|
3411
3432
|
name: this.webAudioCurrentMark
|
|
@@ -3413,7 +3434,7 @@ class R extends Yt {
|
|
|
3413
3434
|
}), this.webAudioCurrentMark = null, this.webAudioTrackId = null);
|
|
3414
3435
|
}
|
|
3415
3436
|
async onWebAudioTerminate() {
|
|
3416
|
-
|
|
3437
|
+
E.info("c7o: terminating audio"), await this.stopAudio();
|
|
3417
3438
|
}
|
|
3418
3439
|
// Confirmation from server that media started
|
|
3419
3440
|
// {"type":"mediaStarted","mediaType":"audio","mediaTransport":"webmedia","webmedia":{"mimeType":"audio/L16","mediaSpec":{"sampleRate":24000,"channels":1}}}
|
|
@@ -3432,16 +3453,16 @@ class R extends Yt {
|
|
|
3432
3453
|
if (!e || e?.type !== "media" || !e?.media || e?.mediaType !== "audio" || !e?.media?.payload || !this.webAudioProcessor || !this.webAudioStarted)
|
|
3433
3454
|
return;
|
|
3434
3455
|
const t = e.media.payload;
|
|
3435
|
-
this.webAudioTrackId || (this.webAudioTrackId =
|
|
3456
|
+
this.webAudioTrackId || (this.webAudioTrackId = fe()), E.info(`${Date.now()}: Playing audio: ${t.length} bytes, trackId: ${this.webAudioTrackId}`), await this.webAudioProcessor.playAudio(t, this.webAudioTrackId);
|
|
3436
3457
|
}
|
|
3437
3458
|
// {"type": "mediaMark","mark": {"name": "1757277902935"}}
|
|
3438
3459
|
async handleMediaMark(e) {
|
|
3439
|
-
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null,
|
|
3460
|
+
!this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null, E.info(`c7o: Current media mark set to ${this.webAudioCurrentMark}`, e));
|
|
3440
3461
|
}
|
|
3441
3462
|
// Confirmation from server that media stopped
|
|
3442
3463
|
//{"type":"mediaClear","mediaType":"audio"}
|
|
3443
3464
|
async handleMediaClear(e) {
|
|
3444
|
-
|
|
3465
|
+
E.info("c7o: Got mediaClear, clearing buffered media", e), this.mediaStartedAudio = !1, !(!this.webAudioProcessor || !this.webAudioStarted) && (this.webAudioTrackId = null, await this.webAudioProcessor.interruptAudio());
|
|
3445
3466
|
}
|
|
3446
3467
|
// ////////////////////////////////////////////////////////////
|
|
3447
3468
|
setPrefilledFormFields(e) {
|
|
@@ -3464,15 +3485,15 @@ class R extends Yt {
|
|
|
3464
3485
|
return;
|
|
3465
3486
|
const e = await this.getWsClient();
|
|
3466
3487
|
if (!e) {
|
|
3467
|
-
|
|
3488
|
+
E.error("Error - failed to obtain ws client");
|
|
3468
3489
|
return;
|
|
3469
3490
|
}
|
|
3470
3491
|
const t = {
|
|
3471
|
-
id:
|
|
3492
|
+
id: fe(),
|
|
3472
3493
|
type: "setContext",
|
|
3473
3494
|
contextData: this.context
|
|
3474
3495
|
};
|
|
3475
|
-
e.sendMessage(t),
|
|
3496
|
+
e.sendMessage(t), E.info("Sent context:", this.context);
|
|
3476
3497
|
}
|
|
3477
3498
|
getContext() {
|
|
3478
3499
|
return this.context;
|
|
@@ -3485,33 +3506,33 @@ class R extends Yt {
|
|
|
3485
3506
|
this.initForm(this.form);
|
|
3486
3507
|
return;
|
|
3487
3508
|
}
|
|
3488
|
-
const e =
|
|
3509
|
+
const e = Ut(null, ["startupForm"], this.botSettings);
|
|
3489
3510
|
if (!e || !e?.name) {
|
|
3490
|
-
|
|
3511
|
+
E.info("Startup form not present");
|
|
3491
3512
|
return;
|
|
3492
3513
|
}
|
|
3493
3514
|
this.initForm(e);
|
|
3494
3515
|
}
|
|
3495
3516
|
initForm(e = null) {
|
|
3496
|
-
const t = e, i =
|
|
3517
|
+
const t = e, i = Ut(null, ["name"], e);
|
|
3497
3518
|
if (!t || !i)
|
|
3498
3519
|
return;
|
|
3499
|
-
const s =
|
|
3520
|
+
const s = Ut(null, ["fields"], e);
|
|
3500
3521
|
if (!Array.isArray(s) || s.length <= 0) {
|
|
3501
|
-
|
|
3522
|
+
E.info("form has no fields", e);
|
|
3502
3523
|
return;
|
|
3503
3524
|
}
|
|
3504
|
-
const r = `${
|
|
3525
|
+
const r = `${ne}${this.setting.botId}.${this.conversationId}.form.${i}`, o = localStorage.getItem(r);
|
|
3505
3526
|
if (o) {
|
|
3506
3527
|
let f = null;
|
|
3507
3528
|
try {
|
|
3508
3529
|
f = JSON.parse(o);
|
|
3509
3530
|
} catch (p) {
|
|
3510
|
-
|
|
3531
|
+
E.error(`Failed to parse stored form data: ${p.message}`), f = null;
|
|
3511
3532
|
}
|
|
3512
3533
|
if (f) {
|
|
3513
3534
|
this.sendFormData(i, f).catch((p) => {
|
|
3514
|
-
|
|
3535
|
+
E.error(`Error when submitting form: ${p.message}`);
|
|
3515
3536
|
});
|
|
3516
3537
|
return;
|
|
3517
3538
|
}
|
|
@@ -3522,7 +3543,7 @@ class R extends Yt {
|
|
|
3522
3543
|
this.engage = !1, this.shouldEngage = "false";
|
|
3523
3544
|
}
|
|
3524
3545
|
showEngagePopup() {
|
|
3525
|
-
this.open || (
|
|
3546
|
+
this.open || (E.info("Engaging User !"), this.engage = !0, this.playAudioNotification());
|
|
3526
3547
|
}
|
|
3527
3548
|
playAudioNotification() {
|
|
3528
3549
|
if (!this.setting.enableNotificationSound)
|
|
@@ -3533,7 +3554,7 @@ class R extends Yt {
|
|
|
3533
3554
|
o[f] = parseInt(r.substr(f * 2, 2), 16);
|
|
3534
3555
|
return o;
|
|
3535
3556
|
};
|
|
3536
|
-
let t = new Blob([e(
|
|
3557
|
+
let t = new Blob([e(Cs)], { type: "application/octet-stream" });
|
|
3537
3558
|
const i = URL.createObjectURL(t);
|
|
3538
3559
|
new Audio(i).play();
|
|
3539
3560
|
}
|
|
@@ -3546,7 +3567,7 @@ class R extends Yt {
|
|
|
3546
3567
|
if (this.wsClient)
|
|
3547
3568
|
return this.wsClient;
|
|
3548
3569
|
let t = `${this.setting.url.startsWith("localhost") ? "ws" : "wss"}://${this.setting.url}/api/bot/connect/${this.setting.orgId}/${this.setting.botId}/${this.conversationId}`;
|
|
3549
|
-
return this.setting.enableMultiModalConnection && (t += "?multiModal=true",
|
|
3570
|
+
return this.setting.enableMultiModalConnection && (t += "?multiModal=true", E.info("MultiModal connection enabled - adding multiModal=true parameter")), E.info(`Initiating ws connection to ${t} ...`), this.wsClient = new es({
|
|
3550
3571
|
url: t,
|
|
3551
3572
|
orgId: this.setting.orgId,
|
|
3552
3573
|
botId: this.setting.botId,
|
|
@@ -3566,11 +3587,11 @@ class R extends Yt {
|
|
|
3566
3587
|
}), await this.wsClient.start(), this.connectWs = "true", this.wsClient;
|
|
3567
3588
|
}
|
|
3568
3589
|
handleWscClose(e) {
|
|
3569
|
-
|
|
3590
|
+
E.info(`WSC: connection closed, connected: ${this.wsClient?.connected}`, e), this.stopWebAudio().catch((t) => {
|
|
3570
3591
|
}), this.connected = !1;
|
|
3571
3592
|
}
|
|
3572
3593
|
async handleWscConnectError(e) {
|
|
3573
|
-
|
|
3594
|
+
E.info("WSC: connect error - resetting conversation", e);
|
|
3574
3595
|
const t = this.wsClient?.url || null;
|
|
3575
3596
|
if (this.wsClient)
|
|
3576
3597
|
try {
|
|
@@ -3596,15 +3617,15 @@ class R extends Yt {
|
|
|
3596
3617
|
const s = t.includes("?"), [r, o] = s ? t.split("?") : [t, ""], f = r.split("/");
|
|
3597
3618
|
f[f.length - 1] = this.conversationId;
|
|
3598
3619
|
const p = f.join("/"), v = o ? `${p}?${o}` : p;
|
|
3599
|
-
this.wsClient.url = v, await
|
|
3620
|
+
this.wsClient.url = v, await Ms(1e3), await this.wsClient.start(), E.info(`WSC: started new conversation, conversationId=${this.conversationId}`);
|
|
3600
3621
|
} catch (i) {
|
|
3601
|
-
|
|
3622
|
+
E.error(`WSC: failed to reset conversation: ${i.message}`, i);
|
|
3602
3623
|
}
|
|
3603
3624
|
}
|
|
3604
3625
|
handleWscConnecting(e) {
|
|
3605
|
-
|
|
3626
|
+
E.info(`WSC: on connecting(${e}), connected: ${this.wsClient?.connected}`), this.connecting = e, !this.connecting && this.wsClient?.connected ? (this.connected = !0, this.context && typeof this.context == "object" && Object.keys(this.context).length > 0 && this.wsClient.queueMessage(
|
|
3606
3627
|
{
|
|
3607
|
-
id:
|
|
3628
|
+
id: fe(),
|
|
3608
3629
|
type: "setContext",
|
|
3609
3630
|
contextData: this.context
|
|
3610
3631
|
},
|
|
@@ -3619,7 +3640,7 @@ class R extends Yt {
|
|
|
3619
3640
|
}
|
|
3620
3641
|
// Update typing state based on received message
|
|
3621
3642
|
updateTypingState(e) {
|
|
3622
|
-
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1,
|
|
3643
|
+
this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1, E.info("c7o: typing stopped")) : e && e?.type === "typing" && (this.typingActive = !0, E.info("c7o: typing started"));
|
|
3623
3644
|
}
|
|
3624
3645
|
handleWscMessage(e) {
|
|
3625
3646
|
if (e?.type === "ack")
|
|
@@ -3692,22 +3713,14 @@ class R extends Yt {
|
|
|
3692
3713
|
break;
|
|
3693
3714
|
}
|
|
3694
3715
|
case "agent-disconnected": {
|
|
3695
|
-
this.
|
|
3696
|
-
id: e?.id || null,
|
|
3697
|
-
author: "assistant",
|
|
3698
|
-
type: "text",
|
|
3699
|
-
data: {
|
|
3700
|
-
text: "_Left chat_",
|
|
3701
|
-
...e.userName && { userName: e.userName },
|
|
3702
|
-
...e.userAvatar && { userAvatar: e.userAvatar }
|
|
3703
|
-
}
|
|
3716
|
+
this.handleAgentDisconnected(e).catch((i) => {
|
|
3704
3717
|
});
|
|
3705
3718
|
break;
|
|
3706
3719
|
}
|
|
3707
3720
|
//{"type":"agent-connected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
3708
3721
|
//{"type":"agent-disconnected","author":"assistant","userName":"SF DEV ADMIN"}
|
|
3709
3722
|
case "form": {
|
|
3710
|
-
if (
|
|
3723
|
+
if (E.info("Got form:", e), this.replyMessage && this.replyMessage.id) {
|
|
3711
3724
|
const i = this.replyMessage.data?.text || "";
|
|
3712
3725
|
(this.replyMessage.isThinking || i.trim() === "") && (this.removeMessage(this.replyMessage.id), this.replyMessage = null);
|
|
3713
3726
|
}
|
|
@@ -3753,7 +3766,7 @@ class R extends Yt {
|
|
|
3753
3766
|
if (e !== -1)
|
|
3754
3767
|
if (this.setting.splitMessagesAtBreak) {
|
|
3755
3768
|
const t = this.streamingResponseBuffer.substring(0, e).trim(), i = this.streamingResponseBuffer.substring(e + 4).trim();
|
|
3756
|
-
(t !== "" || this.replyMessage?.data?.text !== "") && (
|
|
3769
|
+
(t !== "" || this.replyMessage?.data?.text !== "") && (E.info(`BREAK: Splitting the message: ${this.streamingResponseBuffer} >>> prev: ${t} next: ${i}`), this.replyMessage = this.updateMessage(this.replyMessage, t), this.replyMessage = { author: "assistant", type: "text", isThinking: !1, data: { text: i } }, this.addMessage(this.replyMessage));
|
|
3757
3770
|
} else
|
|
3758
3771
|
this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer);
|
|
3759
3772
|
this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null;
|
|
@@ -3762,11 +3775,11 @@ class R extends Yt {
|
|
|
3762
3775
|
if (!this.streamingResponseBuffer || !this.replyMessage)
|
|
3763
3776
|
return;
|
|
3764
3777
|
if (this.streamingResponseBuffer.indexOf("![") === -1) {
|
|
3765
|
-
|
|
3778
|
+
E.info(`NOT IMG TAG: ${this.streamingResponseBuffer}`), this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null;
|
|
3766
3779
|
return;
|
|
3767
3780
|
}
|
|
3768
3781
|
const e = this.streamingResponseBuffer.lastIndexOf("]"), t = this.streamingResponseBuffer.lastIndexOf(")");
|
|
3769
|
-
e === -1 || t === -1 || e > t || (
|
|
3782
|
+
e === -1 || t === -1 || e > t || (E.info(`IMG TAG END: ${this.streamingResponseBuffer}`), this.isValidImageLink(this.streamingResponseBuffer) && (this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer)), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null);
|
|
3770
3783
|
}
|
|
3771
3784
|
isValidImageLink(e = "") {
|
|
3772
3785
|
return !(e.indexOf("example.com") !== -1 || e.indexOf("imgur.com") !== -1 || e.indexOf("attachment:") !== -1);
|
|
@@ -3786,7 +3799,7 @@ class R extends Yt {
|
|
|
3786
3799
|
this.streamingResponseBuffer = e, this.streamingResponseTagStartPos = e.indexOf("<"), this.streamingResponseCurrentTag = "br";
|
|
3787
3800
|
return;
|
|
3788
3801
|
} else if (e.indexOf("![") !== -1 || e.endsWith("!")) {
|
|
3789
|
-
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img",
|
|
3802
|
+
this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img", E.info(`IMG TAG START: ${this.streamingResponseBuffer}`);
|
|
3790
3803
|
return;
|
|
3791
3804
|
}
|
|
3792
3805
|
this.streamingResponseLastText = t, this.replyMessage = this.updateMessage(this.replyMessage, t);
|
|
@@ -3842,7 +3855,7 @@ class R extends Yt {
|
|
|
3842
3855
|
detail: f
|
|
3843
3856
|
})
|
|
3844
3857
|
), this.sendActionCompleted(f).catch((p) => {
|
|
3845
|
-
|
|
3858
|
+
E.error(`Error: failed to send action completed: ${p.message}`);
|
|
3846
3859
|
});
|
|
3847
3860
|
}
|
|
3848
3861
|
this.actions.splice(s, 1);
|
|
@@ -3860,10 +3873,10 @@ class R extends Yt {
|
|
|
3860
3873
|
}
|
|
3861
3874
|
}
|
|
3862
3875
|
async sendMessage(e) {
|
|
3863
|
-
e = this.formatMessage(e),
|
|
3876
|
+
e = this.formatMessage(e), E.info("Send Message:", e), this.showNewConversation && (this.showNewConversation = !1), this.messages = this.messages.concat([e]), this.lastConversationUpdate = Date.now();
|
|
3864
3877
|
const t = await this.getWsClient();
|
|
3865
3878
|
if (!t) {
|
|
3866
|
-
|
|
3879
|
+
E.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
3867
3880
|
return;
|
|
3868
3881
|
}
|
|
3869
3882
|
t.sendMessage({
|
|
@@ -3874,7 +3887,7 @@ class R extends Yt {
|
|
|
3874
3887
|
}
|
|
3875
3888
|
// TODO revisit below
|
|
3876
3889
|
formatMessage(e) {
|
|
3877
|
-
return e.id || (e.id =
|
|
3890
|
+
return e.id || (e.id = fe()), e.timestamp || (e.timestamp = Date.now()), e.author === "assistant" && !e.replyId && (e.replyId = this.messages.findLast((t) => t.author === "user")?.id || void 0), e;
|
|
3878
3891
|
}
|
|
3879
3892
|
// add message
|
|
3880
3893
|
addMessage(e) {
|
|
@@ -3909,16 +3922,16 @@ class R extends Yt {
|
|
|
3909
3922
|
// Submit current form data
|
|
3910
3923
|
async submitForm(e) {
|
|
3911
3924
|
if (!this.form) {
|
|
3912
|
-
|
|
3925
|
+
E.info("submitForm: No form is active - ignored");
|
|
3913
3926
|
return;
|
|
3914
3927
|
}
|
|
3915
|
-
const t = `${
|
|
3928
|
+
const t = `${ne}${this.setting.botId}.${this.conversationId}.form.${this.form.name}`;
|
|
3916
3929
|
await this.sendFormData(this.form.name, e), localStorage.setItem(t, JSON.stringify(e)), "name" in e && (this.feedbackName = e.name), "email" in e && (this.feedbackEmail = e.email), this.form = null;
|
|
3917
3930
|
}
|
|
3918
3931
|
async sendFormData(e, t) {
|
|
3919
3932
|
const i = await this.getWsClient();
|
|
3920
3933
|
if (!i) {
|
|
3921
|
-
|
|
3934
|
+
E.error("Error - failed to obtain ws client");
|
|
3922
3935
|
return;
|
|
3923
3936
|
}
|
|
3924
3937
|
i.sendMessage({
|
|
@@ -3930,7 +3943,7 @@ class R extends Yt {
|
|
|
3930
3943
|
async sendActionCompleted(e) {
|
|
3931
3944
|
const t = await this.getWsClient();
|
|
3932
3945
|
if (!t) {
|
|
3933
|
-
|
|
3946
|
+
E.error("Error - failed to obtain ws client");
|
|
3934
3947
|
return;
|
|
3935
3948
|
}
|
|
3936
3949
|
t.sendMessage({
|
|
@@ -3941,7 +3954,7 @@ class R extends Yt {
|
|
|
3941
3954
|
async sendEvent(e) {
|
|
3942
3955
|
const t = await this.getWsClient();
|
|
3943
3956
|
if (!t) {
|
|
3944
|
-
|
|
3957
|
+
E.error("Error - failed to obtain ws client");
|
|
3945
3958
|
return;
|
|
3946
3959
|
}
|
|
3947
3960
|
t.sendMessage(e);
|
|
@@ -3954,14 +3967,14 @@ class R extends Yt {
|
|
|
3954
3967
|
this.feedbackMessages.push(t), this.feedbackUserMessage = this.messages.findLast((i) => i.id === t.replyId)?.data?.text || "", this.feedbackAnswer = t?.data.text || "", this.feedbackAnswerMessageId = t?.id || "", this.feedbackAnswerUserName = t?.data.userName || "", this.feedback = !0;
|
|
3955
3968
|
}
|
|
3956
3969
|
async submitFeedback(e, t, i) {
|
|
3957
|
-
|
|
3970
|
+
E.info(`submitFeedback: ${this.feedbackScore}`), this.feedbackName = e, this.feedbackEmail = t;
|
|
3958
3971
|
const s = await this.getWsClient();
|
|
3959
3972
|
if (!s) {
|
|
3960
|
-
|
|
3973
|
+
E.error("Error - failed to obtain ws client"), this.replyMessage = null;
|
|
3961
3974
|
return;
|
|
3962
3975
|
}
|
|
3963
3976
|
s.sendMessage({
|
|
3964
|
-
id:
|
|
3977
|
+
id: fe(),
|
|
3965
3978
|
type: "feedback",
|
|
3966
3979
|
score: this.feedbackScore,
|
|
3967
3980
|
userMessage: this.feedbackUserMessage,
|
|
@@ -3999,13 +4012,13 @@ class R extends Yt {
|
|
|
3999
4012
|
async uploadFiles(e) {
|
|
4000
4013
|
if (!e?.length) return;
|
|
4001
4014
|
const t = await this.filesToBase64(e);
|
|
4002
|
-
|
|
4015
|
+
E.info("Uploading files:", t);
|
|
4003
4016
|
const i = await this.getWsClient();
|
|
4004
4017
|
if (!i) {
|
|
4005
|
-
|
|
4018
|
+
E.error("Error - failed to obtain ws client");
|
|
4006
4019
|
return;
|
|
4007
4020
|
}
|
|
4008
|
-
const s =
|
|
4021
|
+
const s = fe();
|
|
4009
4022
|
i.sendMessage({
|
|
4010
4023
|
id: s,
|
|
4011
4024
|
type: "upload",
|
|
@@ -4024,50 +4037,50 @@ class R extends Yt {
|
|
|
4024
4037
|
}
|
|
4025
4038
|
notifyWidgetOpenState() {
|
|
4026
4039
|
this.wsClient && this.wsClient.sendMessage({
|
|
4027
|
-
id:
|
|
4040
|
+
id: fe(),
|
|
4028
4041
|
type: "widgetState",
|
|
4029
4042
|
open: this.open
|
|
4030
4043
|
});
|
|
4031
4044
|
}
|
|
4032
4045
|
}
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4046
|
+
O([
|
|
4047
|
+
ce({ prefix: ne }),
|
|
4048
|
+
z({ value: "en" })
|
|
4036
4049
|
], R.prototype, "language");
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4050
|
+
O([
|
|
4051
|
+
ce({ prefix: ne }),
|
|
4052
|
+
z({ value: "light" })
|
|
4040
4053
|
], R.prototype, "theme");
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4054
|
+
O([
|
|
4055
|
+
ce({ prefix: ne }),
|
|
4056
|
+
z({ type: Boolean, value: !1 })
|
|
4044
4057
|
], R.prototype, "open");
|
|
4045
|
-
|
|
4046
|
-
|
|
4058
|
+
O([
|
|
4059
|
+
z({ type: Boolean, value: !1 })
|
|
4047
4060
|
], R.prototype, "alwaysOpen");
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4061
|
+
O([
|
|
4062
|
+
ce({ prefix: ne }),
|
|
4063
|
+
z({ value: "false" })
|
|
4051
4064
|
], R.prototype, "connectWs");
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4065
|
+
O([
|
|
4066
|
+
ce({ prefix: ne }),
|
|
4067
|
+
z({ value: fe() })
|
|
4055
4068
|
], R.prototype, "conversationId");
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4069
|
+
O([
|
|
4070
|
+
ce({ prefix: ne }),
|
|
4071
|
+
z({ value: 0 })
|
|
4059
4072
|
], R.prototype, "lastConversationUpdate");
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4073
|
+
O([
|
|
4074
|
+
ce({ prefix: ne }),
|
|
4075
|
+
z({ type: Array, value: [] })
|
|
4063
4076
|
], R.prototype, "messages");
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4077
|
+
O([
|
|
4078
|
+
ce({ prefix: ne }),
|
|
4079
|
+
z({ value: 0 })
|
|
4067
4080
|
], R.prototype, "unreadMessages");
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4081
|
+
O([
|
|
4082
|
+
ce({ prefix: ne }),
|
|
4083
|
+
z({
|
|
4071
4084
|
type: Array,
|
|
4072
4085
|
value: []
|
|
4073
4086
|
/*
|
|
@@ -4110,41 +4123,45 @@ B([
|
|
|
4110
4123
|
],*/
|
|
4111
4124
|
})
|
|
4112
4125
|
], R.prototype, "actions");
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
|
|
4126
|
+
O([
|
|
4127
|
+
ce({ prefix: ne }),
|
|
4128
|
+
z({ type: Object, value: null })
|
|
4116
4129
|
], R.prototype, "form");
|
|
4117
|
-
|
|
4118
|
-
|
|
4130
|
+
O([
|
|
4131
|
+
z({ type: Boolean, value: !1 })
|
|
4119
4132
|
], R.prototype, "botSettingsInitialized");
|
|
4120
|
-
|
|
4121
|
-
|
|
4133
|
+
O([
|
|
4134
|
+
z({ type: Number, value: 5 })
|
|
4122
4135
|
], R.prototype, "botSettingsRetryTimeout");
|
|
4123
|
-
|
|
4124
|
-
|
|
4136
|
+
O([
|
|
4137
|
+
z({ type: Object, value: null })
|
|
4125
4138
|
], R.prototype, "botSettings");
|
|
4126
|
-
|
|
4127
|
-
|
|
4139
|
+
O([
|
|
4140
|
+
z({ type: Boolean, value: !0 })
|
|
4128
4141
|
], R.prototype, "disabled");
|
|
4129
|
-
|
|
4130
|
-
|
|
4142
|
+
O([
|
|
4143
|
+
z({ type: Boolean, value: !1 })
|
|
4131
4144
|
], R.prototype, "connecting");
|
|
4132
|
-
|
|
4133
|
-
|
|
4145
|
+
O([
|
|
4146
|
+
z({ type: Boolean, value: !1 })
|
|
4134
4147
|
], R.prototype, "connected");
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4148
|
+
O([
|
|
4149
|
+
ce({ prefix: ne }),
|
|
4150
|
+
z({ value: "true" })
|
|
4138
4151
|
], R.prototype, "shouldEngage");
|
|
4139
|
-
|
|
4140
|
-
|
|
4152
|
+
O([
|
|
4153
|
+
z({ type: Boolean, value: !1 })
|
|
4141
4154
|
], R.prototype, "engage");
|
|
4142
|
-
|
|
4143
|
-
|
|
4155
|
+
O([
|
|
4156
|
+
ce({ prefix: ne }),
|
|
4157
|
+
z({ type: Boolean, value: !1 })
|
|
4158
|
+
], R.prototype, "showNewConversation");
|
|
4159
|
+
O([
|
|
4160
|
+
z({ type: Boolean, value: !1 })
|
|
4144
4161
|
], R.prototype, "typingActive");
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4162
|
+
O([
|
|
4163
|
+
ce({ prefix: ne }),
|
|
4164
|
+
z({
|
|
4148
4165
|
type: Object,
|
|
4149
4166
|
value: {
|
|
4150
4167
|
orgId: null,
|
|
@@ -4163,61 +4180,61 @@ B([
|
|
|
4163
4180
|
}
|
|
4164
4181
|
})
|
|
4165
4182
|
], R.prototype, "setting");
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4183
|
+
O([
|
|
4184
|
+
ce({ prefix: ne }),
|
|
4185
|
+
z({ type: Object, value: {} })
|
|
4169
4186
|
], R.prototype, "context");
|
|
4170
|
-
|
|
4171
|
-
|
|
4187
|
+
O([
|
|
4188
|
+
z({ type: String, value: "top-end" })
|
|
4172
4189
|
], R.prototype, "appearanceAnchorPopupPosition");
|
|
4173
|
-
|
|
4174
|
-
|
|
4190
|
+
O([
|
|
4191
|
+
z({ type: String, value: "danger" })
|
|
4175
4192
|
], R.prototype, "appearanceAnchorBadgeVariant");
|
|
4176
|
-
|
|
4177
|
-
|
|
4193
|
+
O([
|
|
4194
|
+
z({ type: String, value: "right" })
|
|
4178
4195
|
], R.prototype, "appearanceUserMessageAvatarPosition");
|
|
4179
|
-
|
|
4180
|
-
|
|
4196
|
+
O([
|
|
4197
|
+
z({ type: Boolean, value: !1 })
|
|
4181
4198
|
], R.prototype, "feedback");
|
|
4182
|
-
|
|
4183
|
-
|
|
4199
|
+
O([
|
|
4200
|
+
z({ type: Number, value: 5 })
|
|
4184
4201
|
], R.prototype, "feedbackScore");
|
|
4185
|
-
|
|
4186
|
-
|
|
4202
|
+
O([
|
|
4203
|
+
z({ type: String, value: "" })
|
|
4187
4204
|
], R.prototype, "feedbackUserMessage");
|
|
4188
|
-
|
|
4189
|
-
|
|
4205
|
+
O([
|
|
4206
|
+
z({ type: String, value: "" })
|
|
4190
4207
|
], R.prototype, "feedbackAnswerMessageId");
|
|
4191
|
-
|
|
4192
|
-
|
|
4208
|
+
O([
|
|
4209
|
+
z({ type: String, value: "" })
|
|
4193
4210
|
], R.prototype, "feedbackAnswer");
|
|
4194
|
-
|
|
4195
|
-
|
|
4211
|
+
O([
|
|
4212
|
+
z({ type: String, value: "" })
|
|
4196
4213
|
], R.prototype, "feedbackAnswerUserName");
|
|
4197
|
-
|
|
4198
|
-
|
|
4214
|
+
O([
|
|
4215
|
+
z({ type: Array, value: [] })
|
|
4199
4216
|
], R.prototype, "feedbackMessages");
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4217
|
+
O([
|
|
4218
|
+
ce({ prefix: ne }),
|
|
4219
|
+
z({ type: String, value: "" })
|
|
4203
4220
|
], R.prototype, "feedbackName");
|
|
4204
|
-
|
|
4205
|
-
|
|
4206
|
-
|
|
4221
|
+
O([
|
|
4222
|
+
ce({ prefix: ne }),
|
|
4223
|
+
z({ type: String, value: "" })
|
|
4207
4224
|
], R.prototype, "feedbackEmail");
|
|
4208
|
-
|
|
4209
|
-
|
|
4225
|
+
O([
|
|
4226
|
+
z({ type: Boolean, value: !1 })
|
|
4210
4227
|
], R.prototype, "mediaStartAudioRequested");
|
|
4211
|
-
|
|
4212
|
-
|
|
4228
|
+
O([
|
|
4229
|
+
z({ type: Boolean, value: !1 })
|
|
4213
4230
|
], R.prototype, "mediaStartedAudio");
|
|
4214
|
-
|
|
4215
|
-
|
|
4231
|
+
O([
|
|
4232
|
+
z({ type: Boolean, value: !1 })
|
|
4216
4233
|
], R.prototype, "webAudioStarted");
|
|
4217
|
-
|
|
4218
|
-
|
|
4234
|
+
O([
|
|
4235
|
+
z({ type: Boolean, value: !1 })
|
|
4219
4236
|
], R.prototype, "webAudioMuted");
|
|
4220
|
-
const b = new R(),
|
|
4237
|
+
const b = new R(), Ts = J`
|
|
4221
4238
|
${ke}
|
|
4222
4239
|
:host {
|
|
4223
4240
|
position: relative;
|
|
@@ -4292,12 +4309,12 @@ const b = new R(), Ms = J`
|
|
|
4292
4309
|
display: inline;
|
|
4293
4310
|
}
|
|
4294
4311
|
`;
|
|
4295
|
-
var
|
|
4312
|
+
var Is = Object.defineProperty, Es = (a, e, t, i) => {
|
|
4296
4313
|
for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
|
|
4297
4314
|
(o = a[r]) && (s = o(e, t, s) || s);
|
|
4298
|
-
return s &&
|
|
4315
|
+
return s && Is(e, t, s), s;
|
|
4299
4316
|
};
|
|
4300
|
-
|
|
4317
|
+
Oi("system", {
|
|
4301
4318
|
resolver: (a) => ""
|
|
4302
4319
|
});
|
|
4303
4320
|
(() => {
|
|
@@ -4307,7 +4324,7 @@ zi("system", {
|
|
|
4307
4324
|
return !1;
|
|
4308
4325
|
}
|
|
4309
4326
|
})();
|
|
4310
|
-
class
|
|
4327
|
+
class re extends Fe {
|
|
4311
4328
|
constructor() {
|
|
4312
4329
|
super(...arguments), this.lang = "en";
|
|
4313
4330
|
}
|
|
@@ -4334,16 +4351,16 @@ class ne extends Fe {
|
|
|
4334
4351
|
return this.dispatchEvent(i), i;
|
|
4335
4352
|
}
|
|
4336
4353
|
}
|
|
4337
|
-
|
|
4354
|
+
Es([
|
|
4338
4355
|
x({ type: String })
|
|
4339
|
-
],
|
|
4340
|
-
var
|
|
4341
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
4356
|
+
], re.prototype, "lang");
|
|
4357
|
+
var $s = Object.defineProperty, Ps = Object.getOwnPropertyDescriptor, Ya = (a, e, t, i) => {
|
|
4358
|
+
for (var s = i > 1 ? void 0 : i ? Ps(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4342
4359
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
4343
|
-
return i && s &&
|
|
4360
|
+
return i && s && $s(e, t, s), s;
|
|
4344
4361
|
};
|
|
4345
|
-
const
|
|
4346
|
-
let zt = class extends
|
|
4362
|
+
const Ls = '<svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"></path></svg>';
|
|
4363
|
+
let zt = class extends re {
|
|
4347
4364
|
constructor() {
|
|
4348
4365
|
super(...arguments), this.title = "ChatBot";
|
|
4349
4366
|
}
|
|
@@ -4363,7 +4380,7 @@ let zt = class extends ne {
|
|
|
4363
4380
|
${W(
|
|
4364
4381
|
b.alwaysOpen,
|
|
4365
4382
|
() => u``,
|
|
4366
|
-
() => u`<div class="cb-header-close" part="header-close">${Y(
|
|
4383
|
+
() => u`<div class="cb-header-close" part="header-close">${Y(Ls)}</div>`
|
|
4367
4384
|
)}
|
|
4368
4385
|
</header>`;
|
|
4369
4386
|
}
|
|
@@ -4405,14 +4422,14 @@ let zt = class extends ne {
|
|
|
4405
4422
|
});
|
|
4406
4423
|
}
|
|
4407
4424
|
};
|
|
4408
|
-
zt.styles =
|
|
4425
|
+
zt.styles = Ts;
|
|
4409
4426
|
Ya([
|
|
4410
4427
|
x({ type: String, attribute: "title" })
|
|
4411
4428
|
], zt.prototype, "title", 2);
|
|
4412
4429
|
zt = Ya([
|
|
4413
4430
|
K("cb-header")
|
|
4414
4431
|
], zt);
|
|
4415
|
-
const
|
|
4432
|
+
const Rs = J`
|
|
4416
4433
|
${ke}
|
|
4417
4434
|
.cb-footer {
|
|
4418
4435
|
line-height: 60px;
|
|
@@ -4427,12 +4444,12 @@ const Ls = J`
|
|
|
4427
4444
|
color: var(--primary-color);
|
|
4428
4445
|
}
|
|
4429
4446
|
`;
|
|
4430
|
-
var
|
|
4431
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
4447
|
+
var zs = Object.getOwnPropertyDescriptor, Os = (a, e, t, i) => {
|
|
4448
|
+
for (var s = i > 1 ? void 0 : i ? zs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
4432
4449
|
(o = a[r]) && (s = o(s) || s);
|
|
4433
4450
|
return s;
|
|
4434
4451
|
};
|
|
4435
|
-
let Jt = class extends
|
|
4452
|
+
let Jt = class extends re {
|
|
4436
4453
|
constructor() {
|
|
4437
4454
|
super(...arguments), this.year = (/* @__PURE__ */ new Date()).getFullYear();
|
|
4438
4455
|
}
|
|
@@ -4467,11 +4484,11 @@ let Jt = class extends ne {
|
|
|
4467
4484
|
`;
|
|
4468
4485
|
}
|
|
4469
4486
|
};
|
|
4470
|
-
Jt.styles =
|
|
4471
|
-
Jt =
|
|
4487
|
+
Jt.styles = Rs;
|
|
4488
|
+
Jt = Os([
|
|
4472
4489
|
K("cb-footer")
|
|
4473
4490
|
], Jt);
|
|
4474
|
-
const
|
|
4491
|
+
const Bs = J`
|
|
4475
4492
|
${ke}
|
|
4476
4493
|
|
|
4477
4494
|
:host {
|
|
@@ -4672,7 +4689,7 @@ const Os = J`
|
|
|
4672
4689
|
background-size: 100%;
|
|
4673
4690
|
transition: background 0s;
|
|
4674
4691
|
}
|
|
4675
|
-
`,
|
|
4692
|
+
`, Ja = J`
|
|
4676
4693
|
:host {
|
|
4677
4694
|
--primary-color: var(--sl-color-primary-600);
|
|
4678
4695
|
}
|
|
@@ -4826,7 +4843,7 @@ const Os = J`
|
|
|
4826
4843
|
.card-btn[aria-disabled="true"]:focus-visible {
|
|
4827
4844
|
box-shadow: none;
|
|
4828
4845
|
}
|
|
4829
|
-
`,
|
|
4846
|
+
`, Ka = J`
|
|
4830
4847
|
:host {
|
|
4831
4848
|
--primary-color: var(--sl-color-primary-600);
|
|
4832
4849
|
}
|
|
@@ -5101,7 +5118,7 @@ let Ge = class extends Fe {
|
|
|
5101
5118
|
this._onDocPointerDown && (document.removeEventListener("pointerdown", this._onDocPointerDown, { capture: !0 }), this._onDocPointerDown = void 0), this._onKeydown && (document.removeEventListener("keydown", this._onKeydown, { capture: !0 }), this._onKeydown = void 0);
|
|
5102
5119
|
}
|
|
5103
5120
|
};
|
|
5104
|
-
Ge.styles =
|
|
5121
|
+
Ge.styles = Ka;
|
|
5105
5122
|
je([
|
|
5106
5123
|
x({ type: String })
|
|
5107
5124
|
], Ge.prototype, "variant", 2);
|
|
@@ -5334,10 +5351,10 @@ st([
|
|
|
5334
5351
|
qe = st([
|
|
5335
5352
|
K("cb-toast")
|
|
5336
5353
|
], qe);
|
|
5337
|
-
var
|
|
5338
|
-
for (var s = i > 1 ? void 0 : i ?
|
|
5354
|
+
var Ns = Object.defineProperty, Us = Object.getOwnPropertyDescriptor, wt = (a, e, t, i) => {
|
|
5355
|
+
for (var s = i > 1 ? void 0 : i ? Us(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5339
5356
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5340
|
-
return i && s &&
|
|
5357
|
+
return i && s && Ns(e, t, s), s;
|
|
5341
5358
|
};
|
|
5342
5359
|
const Tt = Je.noConflict(), Ea = "M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z", Ws = J`
|
|
5343
5360
|
:host { display: block; width: 100%; color: var(--cb-fg, #111827); }
|
|
@@ -5447,10 +5464,10 @@ let Me = class extends Fe {
|
|
|
5447
5464
|
}
|
|
5448
5465
|
/* ----------------- CARD ----------------- */
|
|
5449
5466
|
renderCard(a) {
|
|
5450
|
-
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(), p = o.length > 0, v = a.info?.text, k = typeof a.info?.rating == "number" ? a.info.rating : typeof a.rating == "number" ? a.rating : void 0, w = !!v, _ = typeof k == "number", P = ["card__info", w && _ ? "card__info--between" : ""].filter(Boolean).join(" "), I = r.some((
|
|
5467
|
+
const { title: e, subtitle: t, image_url: i, image_alt: s, buttons: r = [] } = a, o = (a.url || "").trim(), f = (a.target || "").trim(), p = o.length > 0, v = a.info?.text, k = typeof a.info?.rating == "number" ? a.info.rating : typeof a.rating == "number" ? a.rating : void 0, w = !!v, _ = typeof k == "number", P = ["card__info", w && _ ? "card__info--between" : ""].filter(Boolean).join(" "), I = r.some((U) => (U.type ?? "").toLowerCase() === "primary"), M = r.some((U) => (U.type ?? "").toLowerCase() === "secondary"), L = ["card__actions", I && M ? "card__actions--between" : ""].filter(Boolean).join(" "), C = () => {
|
|
5451
5468
|
if (!i) return Ae;
|
|
5452
|
-
const
|
|
5453
|
-
return p ? u`<a class="card__image-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false" aria-label=${e ? `Open: ${e}` : "Open"}>${
|
|
5469
|
+
const U = u`<img class="card__image" src=${i} alt=${s ?? e ?? "Image"} draggable="false" />`;
|
|
5470
|
+
return p ? u`<a class="card__image-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false" aria-label=${e ? `Open: ${e}` : "Open"}>${U}</a>` : U;
|
|
5454
5471
|
}, Z = () => e ? p && !i ? u`<h3 class="card__title"><a class="card__title-link" href=${o} target=${f || "_blank"} rel="noopener noreferrer" draggable="false">${e}</a></h3>` : u`<h3 class="card__title">${e}</h3>` : Ae;
|
|
5455
5472
|
return u`
|
|
5456
5473
|
<div class="card" role="group" aria-label=${e ? `Card: ${e}` : "Card"}>
|
|
@@ -5465,7 +5482,7 @@ let Me = class extends Fe {
|
|
|
5465
5482
|
</div>` : Ae}
|
|
5466
5483
|
${r.length ? u`
|
|
5467
5484
|
<div class=${L}>
|
|
5468
|
-
${r.map((
|
|
5485
|
+
${r.map((U, G) => this.renderAnyButton(U, G))}
|
|
5469
5486
|
</div>` : Ae}
|
|
5470
5487
|
</div>
|
|
5471
5488
|
</div>
|
|
@@ -5669,7 +5686,7 @@ let Me = class extends Fe {
|
|
|
5669
5686
|
await o.json(), Tt.info("c7o: cart/add.js - cart updated"), Tt.info("c7o: reloading window after cart update"), window.location.reload();
|
|
5670
5687
|
}
|
|
5671
5688
|
};
|
|
5672
|
-
Me.styles = [Ws,
|
|
5689
|
+
Me.styles = [Ws, Ja, Ka];
|
|
5673
5690
|
Me.DRAG_THRESHOLD_PX = 10;
|
|
5674
5691
|
wt([
|
|
5675
5692
|
x({ type: Object })
|
|
@@ -5686,7 +5703,7 @@ wt([
|
|
|
5686
5703
|
Me = wt([
|
|
5687
5704
|
K("cb-block")
|
|
5688
5705
|
], Me);
|
|
5689
|
-
var Gs = Object.defineProperty, Xs = Object.getOwnPropertyDescriptor,
|
|
5706
|
+
var Gs = Object.defineProperty, Xs = Object.getOwnPropertyDescriptor, Za = (a, e, t, i) => {
|
|
5690
5707
|
for (var s = i > 1 ? void 0 : i ? Xs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
5691
5708
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
5692
5709
|
return i && s && Gs(e, t, s), s;
|
|
@@ -5714,10 +5731,10 @@ Ot.styles = J`
|
|
|
5714
5731
|
gap: 0.75em; /* vertical rhythm between blocks */
|
|
5715
5732
|
}
|
|
5716
5733
|
`;
|
|
5717
|
-
|
|
5734
|
+
Za([
|
|
5718
5735
|
x({ type: Array })
|
|
5719
5736
|
], Ot.prototype, "blocks", 2);
|
|
5720
|
-
Ot =
|
|
5737
|
+
Ot = Za([
|
|
5721
5738
|
K("cb-blocks")
|
|
5722
5739
|
], Ot);
|
|
5723
5740
|
var Lt = { exports: {} }, Ys = Lt.exports, $a;
|
|
@@ -5785,19 +5802,19 @@ function Js() {
|
|
|
5785
5802
|
})), h;
|
|
5786
5803
|
}
|
|
5787
5804
|
function w(n) {
|
|
5788
|
-
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A, T = arguments.length > 2 ? arguments[2] : void 0,
|
|
5789
|
-
function
|
|
5790
|
-
F(d) && d.call(T, q, this), y &&
|
|
5805
|
+
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A, T = arguments.length > 2 ? arguments[2] : void 0, $ = l || [];
|
|
5806
|
+
function B(q) {
|
|
5807
|
+
F(d) && d.call(T, q, this), y && B.destroy();
|
|
5791
5808
|
}
|
|
5792
|
-
return j(
|
|
5793
|
-
v(
|
|
5794
|
-
var D = k(q, n,
|
|
5795
|
-
D.found && D.all.splice(D.evt, 1), q.removeEventListener && q.removeEventListener(n,
|
|
5809
|
+
return j($) && ($ = document.querySelectorAll($)), B.destroy = function() {
|
|
5810
|
+
v($, (function(q) {
|
|
5811
|
+
var D = k(q, n, B);
|
|
5812
|
+
D.found && D.all.splice(D.evt, 1), q.removeEventListener && q.removeEventListener(n, B, S);
|
|
5796
5813
|
}));
|
|
5797
|
-
}, v(
|
|
5798
|
-
var D = k(q, n,
|
|
5799
|
-
(q.addEventListener && m && !D.found || !m) && (q.addEventListener(n,
|
|
5800
|
-
})),
|
|
5814
|
+
}, v($, (function(q) {
|
|
5815
|
+
var D = k(q, n, B);
|
|
5816
|
+
(q.addEventListener && m && !D.found || !m) && (q.addEventListener(n, B, S), D.all.push({ eventName: n, fn: B }));
|
|
5817
|
+
})), B;
|
|
5801
5818
|
}
|
|
5802
5819
|
function _(n, c) {
|
|
5803
5820
|
v(c.split(" "), (function(l) {
|
|
@@ -5839,7 +5856,7 @@ function Js() {
|
|
|
5839
5856
|
function Z(n) {
|
|
5840
5857
|
n.style.display = "block";
|
|
5841
5858
|
}
|
|
5842
|
-
function
|
|
5859
|
+
function U(n) {
|
|
5843
5860
|
n.style.display = "none";
|
|
5844
5861
|
}
|
|
5845
5862
|
function G(n) {
|
|
@@ -5955,7 +5972,7 @@ function Js() {
|
|
|
5955
5972
|
})), g = m.sort()[0];
|
|
5956
5973
|
return document.querySelector('.gbtn[data-taborder="'.concat(g, '"]'));
|
|
5957
5974
|
}
|
|
5958
|
-
function
|
|
5975
|
+
function yi(n) {
|
|
5959
5976
|
if (n.events.hasOwnProperty("keyboard")) return !1;
|
|
5960
5977
|
n.events.keyboard = w("keydown", { onElement: window, withCallback: function(c, l) {
|
|
5961
5978
|
var d = (c = c || window.event).keyCode;
|
|
@@ -5978,7 +5995,7 @@ function Js() {
|
|
|
5978
5995
|
d == 39 && n.nextSlide(), d == 37 && n.prevSlide(), d == 27 && n.close();
|
|
5979
5996
|
} });
|
|
5980
5997
|
}
|
|
5981
|
-
var
|
|
5998
|
+
var vi = s((function n(c, l) {
|
|
5982
5999
|
var d = this, h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
|
|
5983
6000
|
if (t(this, n), this.img = c, this.slide = l, this.onclose = h, this.img.setZoomEvents) return !1;
|
|
5984
6001
|
this.active = !1, this.zoomedIn = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.img.addEventListener("mousedown", (function(m) {
|
|
@@ -6023,13 +6040,13 @@ function Js() {
|
|
|
6023
6040
|
} }]), pa = s((function n() {
|
|
6024
6041
|
var c = this, l = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6025
6042
|
t(this, n);
|
|
6026
|
-
var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A, T = l.instance,
|
|
6027
|
-
this.el = d, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = m, this.toleranceY = y, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = S, this.instance =
|
|
6028
|
-
return c.dragStart(
|
|
6029
|
-
}), !1), this.el.addEventListener("mouseup", (function(
|
|
6030
|
-
return c.dragEnd(
|
|
6031
|
-
}), !1), this.el.addEventListener("mousemove", (function(
|
|
6032
|
-
return c.drag(
|
|
6043
|
+
var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A, T = l.instance, $ = T === void 0 ? null : T;
|
|
6044
|
+
this.el = d, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = m, this.toleranceY = y, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = S, this.instance = $, this.el.addEventListener("mousedown", (function(B) {
|
|
6045
|
+
return c.dragStart(B);
|
|
6046
|
+
}), !1), this.el.addEventListener("mouseup", (function(B) {
|
|
6047
|
+
return c.dragEnd(B);
|
|
6048
|
+
}), !1), this.el.addEventListener("mousemove", (function(B) {
|
|
6049
|
+
return c.drag(B);
|
|
6033
6050
|
}), !1);
|
|
6034
6051
|
}), [{ key: "dragStart", value: function(n) {
|
|
6035
6052
|
if (this.slide.classList.contains("zoomed")) this.active = !1;
|
|
@@ -6072,26 +6089,26 @@ function Js() {
|
|
|
6072
6089
|
var d = arguments.length > 3 && arguments[3] !== void 0 && arguments[3];
|
|
6073
6090
|
n.style.transition = d ? "all .2s ease" : "", n.style.transform = "translate3d(".concat(c, "px, ").concat(l, "px, 0)");
|
|
6074
6091
|
} }]);
|
|
6075
|
-
function
|
|
6092
|
+
function wi(n, c, l, d) {
|
|
6076
6093
|
var h = n.querySelector(".gslide-media"), m = new Image(), g = "gSlideTitle_" + l, y = "gSlideDesc_" + l;
|
|
6077
6094
|
m.addEventListener("load", (function() {
|
|
6078
6095
|
F(d) && d();
|
|
6079
6096
|
}), !1), m.src = c.href, c.sizes != "" && c.srcset != "" && (m.sizes = c.sizes, m.srcset = c.srcset), m.alt = "", be(c.alt) || c.alt === "" || (m.alt = c.alt), c.title !== "" && m.setAttribute("aria-labelledby", g), c.description !== "" && m.setAttribute("aria-describedby", y), c.hasOwnProperty("_hasCustomWidth") && c._hasCustomWidth && (m.style.width = c.width), c.hasOwnProperty("_hasCustomHeight") && c._hasCustomHeight && (m.style.height = c.height), h.insertBefore(m, h.firstChild);
|
|
6080
6097
|
}
|
|
6081
|
-
function
|
|
6098
|
+
function xi(n, c, l, d) {
|
|
6082
6099
|
var h = this, m = n.querySelector(".ginner-container"), g = "gvideo" + l, y = n.querySelector(".gslide-media"), A = this.getAllPlayers();
|
|
6083
6100
|
_(m, "gvideo-container"), y.insertBefore(G('<div class="gvideo-wrapper"></div>'), y.firstChild);
|
|
6084
6101
|
var S = n.querySelector(".gvideo-wrapper");
|
|
6085
6102
|
he(this.settings.plyr.css, "Plyr");
|
|
6086
|
-
var T = c.href,
|
|
6103
|
+
var T = c.href, $ = c?.videoProvider, B = !1;
|
|
6087
6104
|
y.style.maxWidth = c.width, he(this.settings.plyr.js, "Plyr", (function() {
|
|
6088
|
-
if (
|
|
6089
|
-
|
|
6105
|
+
if (!$ && T.match(/vimeo\.com\/([0-9]*)/) && ($ = "vimeo"), !$ && (T.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || T.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || T.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/) || T.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)) && ($ = "youtube"), $ === "local" || !$) {
|
|
6106
|
+
$ = "local";
|
|
6090
6107
|
var q = '<video id="' + g + '" ';
|
|
6091
|
-
q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(T, '">'),
|
|
6108
|
+
q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(T, '">'), B = G(q += "</video>");
|
|
6092
6109
|
}
|
|
6093
|
-
var D =
|
|
6094
|
-
_(S, "".concat(
|
|
6110
|
+
var D = B || G('<div id="'.concat(g, '" data-plyr-provider="').concat($, '" data-plyr-embed-id="').concat(T, '"></div>'));
|
|
6111
|
+
_(S, "".concat($, "-video gvideo")), S.appendChild(D), S.setAttribute("data-id", g), S.setAttribute("data-index", l);
|
|
6095
6112
|
var ee = ie(h.settings.plyr, "config") ? h.settings.plyr.config : {}, ge = new Plyr("#" + g, ee);
|
|
6096
6113
|
ge.on("ready", (function(ue) {
|
|
6097
6114
|
A[g] = ue.detail.plyr, F(d) && d();
|
|
@@ -6106,7 +6123,7 @@ function Js() {
|
|
|
6106
6123
|
var c = M(n.target, ".gslide-media");
|
|
6107
6124
|
n.type === "enterfullscreen" && _(c, "fullscreen"), n.type === "exitfullscreen" && P(c, "fullscreen");
|
|
6108
6125
|
}
|
|
6109
|
-
function
|
|
6126
|
+
function ki(n, c, l, d) {
|
|
6110
6127
|
var h, m = this, g = n.querySelector(".gslide-media"), y = !(!ie(c, "href") || !c.href) && c.href.split("#").pop().trim(), A = !(!ie(c, "content") || !c.content) && c.content;
|
|
6111
6128
|
if (A && (j(A) && (h = G('<div class="ginlined-content">'.concat(A, "</div>"))), V(A))) {
|
|
6112
6129
|
A.style.display == "none" && (A.style.display = "block");
|
|
@@ -6116,24 +6133,24 @@ function Js() {
|
|
|
6116
6133
|
if (y) {
|
|
6117
6134
|
var T = document.getElementById(y);
|
|
6118
6135
|
if (!T) return !1;
|
|
6119
|
-
var
|
|
6120
|
-
|
|
6136
|
+
var $ = T.cloneNode(!0);
|
|
6137
|
+
$.style.height = c.height, $.style.maxWidth = c.width, _($, "ginlined-content"), h = $;
|
|
6121
6138
|
}
|
|
6122
6139
|
if (!h) return console.error("Unable to append inline slide content", c), !1;
|
|
6123
|
-
g.style.height = c.height, g.style.width = c.width, g.appendChild(h), this.events["inlineclose" + y] = w("click", { onElement: g.querySelectorAll(".gtrigger-close"), withCallback: function(
|
|
6124
|
-
|
|
6140
|
+
g.style.height = c.height, g.style.width = c.width, g.appendChild(h), this.events["inlineclose" + y] = w("click", { onElement: g.querySelectorAll(".gtrigger-close"), withCallback: function(B) {
|
|
6141
|
+
B.preventDefault(), m.close();
|
|
6125
6142
|
} }), F(d) && d();
|
|
6126
6143
|
}
|
|
6127
|
-
function
|
|
6144
|
+
function _i(n, c, l, d) {
|
|
6128
6145
|
var h = n.querySelector(".gslide-media"), m = (function(g) {
|
|
6129
|
-
var y = g.url, A = g.allow, S = g.callback, T = g.appendTo,
|
|
6130
|
-
return
|
|
6131
|
-
|
|
6132
|
-
}, T && T.appendChild(
|
|
6146
|
+
var y = g.url, A = g.allow, S = g.callback, T = g.appendTo, $ = document.createElement("iframe");
|
|
6147
|
+
return $.className = "vimeo-video gvideo", $.src = y, $.style.width = "100%", $.style.height = "100%", A && $.setAttribute("allow", A), $.onload = function() {
|
|
6148
|
+
$.onload = null, _($, "node-ready"), F(S) && S();
|
|
6149
|
+
}, T && T.appendChild($), $;
|
|
6133
6150
|
})({ url: c.href, callback: d });
|
|
6134
6151
|
h.parentNode.style.maxWidth = c.width, h.parentNode.style.height = c.height, h.appendChild(m);
|
|
6135
6152
|
}
|
|
6136
|
-
var
|
|
6153
|
+
var Si = s((function n() {
|
|
6137
6154
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6138
6155
|
t(this, n), this.defaults = { href: "", sizes: "", srcset: "", title: "", type: "", videoProvider: "", description: "", alt: "", descPosition: "bottom", effect: "", width: "", height: "", content: !1, zoomable: !0, draggable: !0 }, Ve(c) && (this.defaults = p(this.defaults, c));
|
|
6139
6156
|
}), [{ key: "sourceType", value: function(n) {
|
|
@@ -6173,17 +6190,17 @@ function Js() {
|
|
|
6173
6190
|
}));
|
|
6174
6191
|
}
|
|
6175
6192
|
if (d.description && d.description.substring(0, 1) === ".") {
|
|
6176
|
-
var
|
|
6193
|
+
var $;
|
|
6177
6194
|
try {
|
|
6178
|
-
|
|
6195
|
+
$ = document.querySelector(d.description).innerHTML;
|
|
6179
6196
|
} catch (q) {
|
|
6180
6197
|
if (!(q instanceof DOMException)) throw q;
|
|
6181
6198
|
}
|
|
6182
|
-
|
|
6199
|
+
$ && (d.description = $);
|
|
6183
6200
|
}
|
|
6184
6201
|
if (!d.description) {
|
|
6185
|
-
var
|
|
6186
|
-
|
|
6202
|
+
var B = n.querySelector(".glightbox-desc");
|
|
6203
|
+
B && (d.description = B.innerHTML);
|
|
6187
6204
|
}
|
|
6188
6205
|
return this.setSize(d, c, n), this.slideConfig = d, d;
|
|
6189
6206
|
} }, { key: "setSize", value: function(n, c) {
|
|
@@ -6200,18 +6217,18 @@ function Js() {
|
|
|
6200
6217
|
if (I(c, "loaded")) return !1;
|
|
6201
6218
|
var d = this.instance.settings, h = this.slideConfig, m = pe();
|
|
6202
6219
|
F(d.beforeSlideLoad) && d.beforeSlideLoad({ index: this.index, slide: c, player: !1 });
|
|
6203
|
-
var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"), T = c.querySelector(".gslide-desc"),
|
|
6204
|
-
if (F(d.afterSlideLoad) && (
|
|
6220
|
+
var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"), T = c.querySelector(".gslide-desc"), $ = c.querySelector(".gdesc-inner"), B = l, q = "gSlideTitle_" + this.index, D = "gSlideDesc_" + this.index;
|
|
6221
|
+
if (F(d.afterSlideLoad) && (B = function() {
|
|
6205
6222
|
F(l) && l(), d.afterSlideLoad({ index: n.index, slide: c, player: n.instance.getSlidePlayerInstance(n.index) });
|
|
6206
|
-
}), h.title == "" && h.description == "" ?
|
|
6207
|
-
if (g !== "external") return g === "inline" ? (
|
|
6223
|
+
}), h.title == "" && h.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && h.title !== "" ? (S.id = q, S.innerHTML = h.title) : S.parentNode.removeChild(S), T && h.description !== "" ? (T.id = D, m && d.moreLength > 0 ? (h.smallDescription = this.slideShortDesc(h.description, d.moreLength, d.moreText), T.innerHTML = h.smallDescription, this.descriptionEvents(T, h)) : T.innerHTML = h.description) : T.parentNode.removeChild(T), _(A.parentNode, "desc-".concat(y)), _($.parentNode, "description-".concat(y))), _(A, "gslide-".concat(g)), _(c, "loaded"), g !== "video") {
|
|
6224
|
+
if (g !== "external") return g === "inline" ? (ki.apply(this.instance, [c, h, this.index, B]), void (h.draggable && new pa({ dragEl: c.querySelector(".gslide-inline"), toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: this.instance }))) : void (g !== "image" ? F(B) && B() : wi(c, h, this.index, (function() {
|
|
6208
6225
|
var ee = c.querySelector("img");
|
|
6209
|
-
h.draggable && new pa({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), h.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new
|
|
6226
|
+
h.draggable && new pa({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), h.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new vi(ee, c, (function() {
|
|
6210
6227
|
n.instance.resize();
|
|
6211
|
-
}))), F(
|
|
6228
|
+
}))), F(B) && B();
|
|
6212
6229
|
})));
|
|
6213
|
-
|
|
6214
|
-
} else
|
|
6230
|
+
_i.apply(this, [c, h, this.index, B]);
|
|
6231
|
+
} else xi.apply(this.instance, [c, h, this.index, B]);
|
|
6215
6232
|
} }, { key: "slideShortDesc", value: function(n) {
|
|
6216
6233
|
var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 50, l = arguments.length > 2 && arguments[2] !== void 0 && arguments[2], d = document.createElement("div");
|
|
6217
6234
|
d.innerHTML = n;
|
|
@@ -6237,13 +6254,13 @@ function Js() {
|
|
|
6237
6254
|
return G(this.instance.settings.slideHTML);
|
|
6238
6255
|
} }, { key: "getConfig", value: function() {
|
|
6239
6256
|
V(this.element) || this.element.hasOwnProperty("draggable") || (this.element.draggable = this.instance.settings.draggable);
|
|
6240
|
-
var n = new
|
|
6257
|
+
var n = new Si(this.instance.settings.slideExtraAttributes);
|
|
6241
6258
|
return this.slideConfig = n.parseConfig(this.element, this.instance.settings), this.slideConfig;
|
|
6242
6259
|
} }]);
|
|
6243
6260
|
function _t(n) {
|
|
6244
6261
|
return Math.sqrt(n.x * n.x + n.y * n.y);
|
|
6245
6262
|
}
|
|
6246
|
-
function
|
|
6263
|
+
function Ci(n, c) {
|
|
6247
6264
|
var l = (function(d, h) {
|
|
6248
6265
|
var m = _t(d) * _t(h);
|
|
6249
6266
|
if (m === 0) return 0;
|
|
@@ -6256,7 +6273,7 @@ function Js() {
|
|
|
6256
6273
|
return d.x * h.y - h.x * d.y;
|
|
6257
6274
|
})(n, c) > 0 && (l *= -1), 180 * l / Math.PI;
|
|
6258
6275
|
}
|
|
6259
|
-
var
|
|
6276
|
+
var Ai = s((function n(c) {
|
|
6260
6277
|
t(this, n), this.handlers = [], this.el = c;
|
|
6261
6278
|
}), [{ key: "add", value: function(n) {
|
|
6262
6279
|
this.handlers.push(n);
|
|
@@ -6269,15 +6286,15 @@ function Js() {
|
|
|
6269
6286
|
typeof l == "function" && l.apply(this.el, arguments);
|
|
6270
6287
|
}
|
|
6271
6288
|
} }]);
|
|
6272
|
-
function
|
|
6273
|
-
var l = new
|
|
6289
|
+
function le(n, c) {
|
|
6290
|
+
var l = new Ai(n);
|
|
6274
6291
|
return l.add(c), l;
|
|
6275
6292
|
}
|
|
6276
|
-
var
|
|
6293
|
+
var Mi = s((function n(c, l) {
|
|
6277
6294
|
t(this, n), this.element = typeof c == "string" ? document.querySelector(c) : c, this.start = this.start.bind(this), this.move = this.move.bind(this), this.end = this.end.bind(this), this.cancel = this.cancel.bind(this), this.element.addEventListener("touchstart", this.start, !1), this.element.addEventListener("touchmove", this.move, !1), this.element.addEventListener("touchend", this.end, !1), this.element.addEventListener("touchcancel", this.cancel, !1), this.preV = { x: null, y: null }, this.pinchStartLen = null, this.zoom = 1, this.isDoubleTap = !1;
|
|
6278
6295
|
var d = function() {
|
|
6279
6296
|
};
|
|
6280
|
-
this.rotate =
|
|
6297
|
+
this.rotate = le(this.element, l.rotate || d), this.touchStart = le(this.element, l.touchStart || d), this.multipointStart = le(this.element, l.multipointStart || d), this.multipointEnd = le(this.element, l.multipointEnd || d), this.pinch = le(this.element, l.pinch || d), this.swipe = le(this.element, l.swipe || d), this.tap = le(this.element, l.tap || d), this.doubleTap = le(this.element, l.doubleTap || d), this.longTap = le(this.element, l.longTap || d), this.singleTap = le(this.element, l.singleTap || d), this.pressMove = le(this.element, l.pressMove || d), this.twoFingerPressMove = le(this.element, l.twoFingerPressMove || d), this.touchMove = le(this.element, l.touchMove || d), this.touchEnd = le(this.element, l.touchEnd || d), this.touchCancel = le(this.element, l.touchCancel || d), this.translateContainer = this.element, this._cancelAllHandler = this.cancelAll.bind(this), window.addEventListener("scroll", this._cancelAllHandler), this.delta = null, this.last = null, this.now = null, this.tapTimeout = null, this.singleTapTimeout = null, this.longTapTimeout = null, this.swipeTimeout = null, this.x1 = this.x2 = this.y1 = this.y2 = null, this.preTapPosition = { x: null, y: null };
|
|
6281
6298
|
}), [{ key: "start", value: function(n) {
|
|
6282
6299
|
if (n.touches) if (n.target && n.target.nodeName && ["a", "button", "input"].indexOf(n.target.nodeName.toLowerCase()) >= 0) console.log("ignore drag for this touched element", n.target.nodeName.toLowerCase());
|
|
6283
6300
|
else {
|
|
@@ -6297,7 +6314,7 @@ function Js() {
|
|
|
6297
6314
|
var c = this.preV, l = n.touches.length, d = n.touches[0].pageX, h = n.touches[0].pageY;
|
|
6298
6315
|
if (this.isDoubleTap = !1, l > 1) {
|
|
6299
6316
|
var m = n.touches[1].pageX, g = n.touches[1].pageY, y = { x: n.touches[1].pageX - d, y: n.touches[1].pageY - h };
|
|
6300
|
-
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle =
|
|
6317
|
+
c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle = Ci(y, c), this.rotate.dispatch(n, this.element)), c.x = y.x, c.y = y.y, this.x2 !== null && this.sx2 !== null ? (n.deltaX = (d - this.x2 + m - this.sx2) / 2, n.deltaY = (h - this.y2 + g - this.sy2) / 2) : (n.deltaX = 0, n.deltaY = 0), this.twoFingerPressMove.dispatch(n, this.element), this.sx2 = m, this.sy2 = g;
|
|
6301
6318
|
} else {
|
|
6302
6319
|
if (this.x2 !== null) {
|
|
6303
6320
|
n.deltaX = d - this.x2, n.deltaY = h - this.y2;
|
|
@@ -6346,9 +6363,9 @@ function Js() {
|
|
|
6346
6363
|
P(d, "greset");
|
|
6347
6364
|
} }), d.style.opacity = "", m && (m.style.opacity = "");
|
|
6348
6365
|
}
|
|
6349
|
-
function
|
|
6366
|
+
function Ti(n) {
|
|
6350
6367
|
if (n.events.hasOwnProperty("touch")) return !1;
|
|
6351
|
-
var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null, T = null,
|
|
6368
|
+
var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null, T = null, $ = !1, B = 1, q = 1, D = !1, ee = !1, ge = null, ue = null, Le = null, oe = null, Re = 0, ze = 0, ht = !1, rt = !1, _e = {}, Se = {}, wa = 0, xa = 0, $i = document.getElementById("glightbox-slider"), St = document.querySelector(".goverlay"), Pi = new Mi($i, { touchStart: function(X) {
|
|
6352
6369
|
if (y = !0, (I(X.targetTouches[0].target, "ginner-container") || M(X.targetTouches[0].target, ".gslide-desc") || X.targetTouches[0].target.nodeName.toLowerCase() == "a") && (y = !1), M(X.targetTouches[0].target, ".gslide-inline") && !I(X.targetTouches[0].target.parentNode, "gslide-inline") && (y = !1), y) {
|
|
6353
6370
|
if (Se = X.targetTouches[0], _e.pageX = X.targetTouches[0].pageX, _e.pageY = X.targetTouches[0].pageY, wa = X.targetTouches[0].clientX, xa = X.targetTouches[0].clientY, A = n.activeSlide, S = A.querySelector(".gslide-media"), d = A.querySelector(".gslide-inline"), T = null, I(S, "gslide-image") && (T = S.querySelector("img")), (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) > 769 && (S = A.querySelector(".ginner-container")), P(St, "greset"), X.pageX > 20 && X.pageX < window.innerWidth - 20) return;
|
|
6354
6371
|
X.preventDefault();
|
|
@@ -6356,19 +6373,19 @@ function Js() {
|
|
|
6356
6373
|
}, touchMove: function(X) {
|
|
6357
6374
|
if (y && (Se = X.targetTouches[0], !D && !ee)) {
|
|
6358
6375
|
if (d && d.offsetHeight > g) {
|
|
6359
|
-
var
|
|
6360
|
-
if (Math.abs(
|
|
6376
|
+
var de = _e.pageX - Se.pageX;
|
|
6377
|
+
if (Math.abs(de) <= 13) return !1;
|
|
6361
6378
|
}
|
|
6362
|
-
|
|
6363
|
-
var
|
|
6364
|
-
if (Math.abs(
|
|
6379
|
+
$ = !0;
|
|
6380
|
+
var Ne, Ct = X.targetTouches[0].clientX, Li = X.targetTouches[0].clientY, Ri = wa - Ct, zi = xa - Li;
|
|
6381
|
+
if (Math.abs(Ri) > Math.abs(zi) ? (ht = !1, rt = !0) : (rt = !1, ht = !0), c = Se.pageX - _e.pageX, Re = 100 * c / m, l = Se.pageY - _e.pageY, ze = 100 * l / g, ht && T && (Ne = 1 - Math.abs(l) / g, St.style.opacity = Ne, n.settings.touchFollowAxis && (Re = 0)), rt && (Ne = 1 - Math.abs(c) / m, S.style.opacity = Ne, n.settings.touchFollowAxis && (ze = 0)), !T) return C(S, "translate3d(".concat(Re, "%, 0, 0)"));
|
|
6365
6382
|
C(S, "translate3d(".concat(Re, "%, ").concat(ze, "%, 0)"));
|
|
6366
6383
|
}
|
|
6367
6384
|
}, touchEnd: function() {
|
|
6368
6385
|
if (y) {
|
|
6369
|
-
if (
|
|
6370
|
-
var X = Math.abs(parseInt(ze)),
|
|
6371
|
-
if (!(X > 29 && T)) return X < 29 &&
|
|
6386
|
+
if ($ = !1, ee || D) return Le = ge, void (oe = ue);
|
|
6387
|
+
var X = Math.abs(parseInt(ze)), de = Math.abs(parseInt(Re));
|
|
6388
|
+
if (!(X > 29 && T)) return X < 29 && de < 25 ? (_(St, "greset"), St.style.opacity = 1, Vt(S)) : void 0;
|
|
6372
6389
|
n.close();
|
|
6373
6390
|
}
|
|
6374
6391
|
}, multipointEnd: function() {
|
|
@@ -6376,18 +6393,18 @@ function Js() {
|
|
|
6376
6393
|
D = !1;
|
|
6377
6394
|
}), 50);
|
|
6378
6395
|
}, multipointStart: function() {
|
|
6379
|
-
D = !0,
|
|
6396
|
+
D = !0, B = q || 1;
|
|
6380
6397
|
}, pinch: function(X) {
|
|
6381
|
-
if (!T ||
|
|
6382
|
-
D = !0, T.scaleX = T.scaleY =
|
|
6383
|
-
var
|
|
6384
|
-
if (ee = !0,
|
|
6385
|
-
|
|
6398
|
+
if (!T || $) return !1;
|
|
6399
|
+
D = !0, T.scaleX = T.scaleY = B * X.zoom;
|
|
6400
|
+
var de = B * X.zoom;
|
|
6401
|
+
if (ee = !0, de <= 1) return ee = !1, de = 1, oe = null, Le = null, ge = null, ue = null, void T.setAttribute("style", "");
|
|
6402
|
+
de > 4.5 && (de = 4.5), T.style.transform = "scale3d(".concat(de, ", ").concat(de, ", 1)"), q = de;
|
|
6386
6403
|
}, pressMove: function(X) {
|
|
6387
6404
|
if (ee && !D) {
|
|
6388
|
-
var
|
|
6389
|
-
Le && (
|
|
6390
|
-
var Ct = "translate3d(".concat(
|
|
6405
|
+
var de = Se.pageX - _e.pageX, Ne = Se.pageY - _e.pageY;
|
|
6406
|
+
Le && (de += Le), oe && (Ne += oe), ge = de, ue = Ne;
|
|
6407
|
+
var Ct = "translate3d(".concat(de, "px, ").concat(Ne, "px, 0)");
|
|
6391
6408
|
q && (Ct += " scale3d(".concat(q, ", ").concat(q, ", 1)")), C(T, Ct);
|
|
6392
6409
|
}
|
|
6393
6410
|
}, swipe: function(X) {
|
|
@@ -6403,9 +6420,9 @@ function Js() {
|
|
|
6403
6420
|
}
|
|
6404
6421
|
}
|
|
6405
6422
|
} });
|
|
6406
|
-
n.events.touch =
|
|
6423
|
+
n.events.touch = Pi;
|
|
6407
6424
|
}
|
|
6408
|
-
var ma = pe(), ya = pe() !== null || document.createTouch !== void 0 || "ontouchstart" in window || "onmsgesturechange" in window || navigator.msMaxTouchPoints, va = document.getElementsByTagName("html")[0],
|
|
6425
|
+
var ma = pe(), ya = pe() !== null || document.createTouch !== void 0 || "ontouchstart" in window || "onmsgesturechange" in window || navigator.msMaxTouchPoints, va = document.getElementsByTagName("html")[0], Ii = { selector: ".glightbox", elements: null, skin: "clean", theme: "clean", closeButton: !0, startAt: null, autoplayVideos: !0, autofocusVideos: !0, descPosition: "bottom", width: "900px", height: "506px", videosWidth: "960px", beforeSlideChange: null, afterSlideChange: null, beforeSlideLoad: null, afterSlideLoad: null, slideInserted: null, slideRemoved: null, slideExtraAttributes: null, onOpen: null, onClose: null, loop: !1, zoomable: !0, draggable: !0, dragAutoSnap: !1, dragToleranceX: 40, dragToleranceY: 65, preload: !0, oneSlidePerOpen: !1, touchNavigation: !0, touchFollowAxis: !0, keyboardNavigation: !0, closeOnOutsideClick: !0, plugins: !1, plyr: { css: "https://cdn.plyr.io/3.6.12/plyr.css", js: "https://cdn.plyr.io/3.6.12/plyr.js", config: { ratio: "16:9", fullscreen: { enabled: !0, iosNative: !0 }, youtube: { noCookie: !0, rel: 0, showinfo: 0, iv_load_policy: 3 }, vimeo: { byline: !1, portrait: !1, title: !1, transparent: !1 } } }, openEffect: "zoom", closeEffect: "zoom", slideEffect: "slide", moreText: "See more", moreLength: 60, cssEfects: { fade: { in: "fadeIn", out: "fadeOut" }, zoom: { in: "zoomIn", out: "zoomOut" }, slide: { in: "slideInRight", out: "slideOutLeft" }, slideBack: { in: "slideInLeft", out: "slideOutRight" }, none: { in: "none", out: "none" } }, svg: { close: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>', next: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>', prev: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>' }, slideHTML: `<div class="gslide">
|
|
6409
6426
|
<div class="gslide-inner-content">
|
|
6410
6427
|
<div class="ginner-container">
|
|
6411
6428
|
<div class="gslide-media">
|
|
@@ -6427,9 +6444,9 @@ function Js() {
|
|
|
6427
6444
|
<button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>
|
|
6428
6445
|
<button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>
|
|
6429
6446
|
</div>
|
|
6430
|
-
</div>` },
|
|
6447
|
+
</div>` }, Ei = s((function n() {
|
|
6431
6448
|
var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
6432
|
-
t(this, n), this.customOptions = c, this.settings = p(
|
|
6449
|
+
t(this, n), this.customOptions = c, this.settings = p(Ii, c), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;
|
|
6433
6450
|
}), [{ key: "init", value: function() {
|
|
6434
6451
|
var n = this, c = this.getSelector();
|
|
6435
6452
|
c && (this.baseEvents = w("click", { onElement: c, withCallback: function(l, d) {
|
|
@@ -6450,7 +6467,7 @@ function Js() {
|
|
|
6450
6467
|
var g = document.createElement("style");
|
|
6451
6468
|
g.type = "text/css", g.className = "gcss-styles", g.innerText = ".gscrollbar-fixer {margin-right: ".concat(m, "px}"), document.head.appendChild(g), _(h, "gscrollbar-fixer");
|
|
6452
6469
|
}
|
|
6453
|
-
_(h, "glightbox-open"), _(va, "glightbox-open"), ma && (_(document.body, "glightbox-mobile"), this.settings.slideEffect = "slide"), this.showSlide(l, !0), this.elements.length === 1 ? (_(this.prevButton, "glightbox-button-hidden"), _(this.nextButton, "glightbox-button-hidden")) : (P(this.prevButton, "glightbox-button-hidden"), P(this.nextButton, "glightbox-button-hidden")), this.lightboxOpen = !0, this.trigger("open"), F(this.settings.onOpen) && this.settings.onOpen(), ya && this.settings.touchNavigation &&
|
|
6470
|
+
_(h, "glightbox-open"), _(va, "glightbox-open"), ma && (_(document.body, "glightbox-mobile"), this.settings.slideEffect = "slide"), this.showSlide(l, !0), this.elements.length === 1 ? (_(this.prevButton, "glightbox-button-hidden"), _(this.nextButton, "glightbox-button-hidden")) : (P(this.prevButton, "glightbox-button-hidden"), P(this.nextButton, "glightbox-button-hidden")), this.lightboxOpen = !0, this.trigger("open"), F(this.settings.onOpen) && this.settings.onOpen(), ya && this.settings.touchNavigation && Ti(this), this.settings.keyboardNavigation && yi(this);
|
|
6454
6471
|
} }, { key: "openAt", value: function() {
|
|
6455
6472
|
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
|
|
6456
6473
|
this.open(null, n);
|
|
@@ -6460,12 +6477,12 @@ function Js() {
|
|
|
6460
6477
|
var d = this.slidesContainer.querySelector(".current");
|
|
6461
6478
|
d && P(d, "current"), this.slideAnimateOut();
|
|
6462
6479
|
var h = this.slidesContainer.querySelectorAll(".gslide")[c];
|
|
6463
|
-
if (I(h, "loaded")) this.slideAnimateIn(h, l),
|
|
6480
|
+
if (I(h, "loaded")) this.slideAnimateIn(h, l), U(this.loader);
|
|
6464
6481
|
else {
|
|
6465
6482
|
Z(this.loader);
|
|
6466
6483
|
var m = this.elements[c], g = { index: this.index, slide: h, slideNode: h, slideConfig: m.slideConfig, slideIndex: this.index, trigger: m.node, player: null };
|
|
6467
6484
|
this.trigger("slide_before_load", g), m.instance.setContent(h, (function() {
|
|
6468
|
-
|
|
6485
|
+
U(n.loader), n.resize(), n.slideAnimateIn(h, l), n.trigger("slide_after_load", g);
|
|
6469
6486
|
}));
|
|
6470
6487
|
}
|
|
6471
6488
|
this.slideDescription = h.querySelector(".gslide-description"), this.slideDescriptionContained = this.slideDescription && I(this.slideDescription.parentNode, "gslide-media"), this.settings.preload && (this.preloadSlide(c + 1), this.preloadSlide(c - 1)), this.updateNavigationClasses(), this.activeSlide = h;
|
|
@@ -6512,7 +6529,7 @@ function Js() {
|
|
|
6512
6529
|
c && (this.getActiveSlideIndex() == n && (n == this.elements.length - 1 ? this.prevSlide() : this.nextSlide()), c.parentNode.removeChild(c)), this.elements.splice(n, 1), this.trigger("slide_removed", n), F(this.settings.slideRemoved) && this.settings.slideRemoved(n);
|
|
6513
6530
|
} }, { key: "slideAnimateIn", value: function(n, c) {
|
|
6514
6531
|
var l = this, d = n.querySelector(".gslide-media"), h = n.querySelector(".gslide-description"), m = { index: this.prevActiveSlideIndex, slide: this.prevActiveSlide, slideNode: this.prevActiveSlide, slideIndex: this.prevActiveSlide, slideConfig: be(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig, trigger: be(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node, player: this.getSlidePlayerInstance(this.prevActiveSlideIndex) }, g = { index: this.index, slide: this.activeSlide, slideNode: this.activeSlide, slideConfig: this.elements[this.index].slideConfig, slideIndex: this.index, trigger: this.elements[this.index].node, player: this.getSlidePlayerInstance(this.index) };
|
|
6515
|
-
if (d.offsetWidth > 0 && h && (
|
|
6532
|
+
if (d.offsetWidth > 0 && h && (U(h), h.style.display = ""), P(n, this.effectsClasses), c) L(n, this.settings.cssEfects[this.settings.openEffect].in, (function() {
|
|
6516
6533
|
l.settings.autoplayVideos && l.slidePlayerPlay(n), l.trigger("slide_changed", { prev: m, current: g }), F(l.settings.afterSlideChange) && l.settings.afterSlideChange.apply(l, [m, g]);
|
|
6517
6534
|
}));
|
|
6518
6535
|
else {
|
|
@@ -6649,8 +6666,8 @@ function Js() {
|
|
|
6649
6666
|
if (h && (I(h, "description-bottom") || I(h, "description-top")) && !I(h, "gabsolute") && (y = !0), d) {
|
|
6650
6667
|
if (m <= 768) d.querySelector("img");
|
|
6651
6668
|
else if (y) {
|
|
6652
|
-
var A, S, T = h.offsetHeight,
|
|
6653
|
-
|
|
6669
|
+
var A, S, T = h.offsetHeight, $ = d.querySelector("img"), B = (A = this.elements[this.index]) === null || A === void 0 ? void 0 : A.node, q = "100vh";
|
|
6670
|
+
B && (q = (S = B.getAttribute("data-height")) !== null && S !== void 0 ? S : q), $.setAttribute("style", "max-height: calc(".concat(q, " - ").concat(T, "px)")), h.setAttribute("style", "max-width: ".concat($.offsetWidth, "px;"));
|
|
6654
6671
|
}
|
|
6655
6672
|
}
|
|
6656
6673
|
if (l) {
|
|
@@ -6719,14 +6736,14 @@ function Js() {
|
|
|
6719
6736
|
return "3.3.1";
|
|
6720
6737
|
} }]);
|
|
6721
6738
|
return function() {
|
|
6722
|
-
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new
|
|
6739
|
+
var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new Ei(n);
|
|
6723
6740
|
return c.init(), c;
|
|
6724
6741
|
};
|
|
6725
6742
|
}));
|
|
6726
6743
|
})(Lt)), Lt.exports;
|
|
6727
6744
|
}
|
|
6728
6745
|
var Ks = Js();
|
|
6729
|
-
const Zs = /* @__PURE__ */
|
|
6746
|
+
const Zs = /* @__PURE__ */ Ua(Ks);
|
|
6730
6747
|
var Qs = Object.getOwnPropertyDescriptor, en = (a, e, t, i) => {
|
|
6731
6748
|
for (var s = i > 1 ? void 0 : i ? Qs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6732
6749
|
(o = a[r]) && (s = o(s) || s);
|
|
@@ -6778,12 +6795,12 @@ Kt.styles = J`
|
|
|
6778
6795
|
Kt = en([
|
|
6779
6796
|
K("cb-thinking")
|
|
6780
6797
|
], Kt);
|
|
6781
|
-
var tn = Object.defineProperty, an = Object.getOwnPropertyDescriptor,
|
|
6798
|
+
var tn = Object.defineProperty, an = Object.getOwnPropertyDescriptor, Qa = (a, e, t, i) => {
|
|
6782
6799
|
for (var s = i > 1 ? void 0 : i ? an(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
6783
6800
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
6784
6801
|
return i && s && tn(e, t, s), s;
|
|
6785
6802
|
};
|
|
6786
|
-
let Bt = class extends
|
|
6803
|
+
let Bt = class extends re {
|
|
6787
6804
|
constructor() {
|
|
6788
6805
|
super(...arguments), this.files = [];
|
|
6789
6806
|
}
|
|
@@ -6817,10 +6834,10 @@ Bt.styles = J`
|
|
|
6817
6834
|
margin-right: 5px;
|
|
6818
6835
|
}
|
|
6819
6836
|
`;
|
|
6820
|
-
|
|
6837
|
+
Qa([
|
|
6821
6838
|
x({ type: Array })
|
|
6822
6839
|
], Bt.prototype, "files", 2);
|
|
6823
|
-
Bt =
|
|
6840
|
+
Bt = Qa([
|
|
6824
6841
|
K("cb-uploading")
|
|
6825
6842
|
], Bt);
|
|
6826
6843
|
const sn = J`
|
|
@@ -6918,7 +6935,7 @@ const Pa = {
|
|
|
6918
6935
|
doc: hn,
|
|
6919
6936
|
docx: bn
|
|
6920
6937
|
};
|
|
6921
|
-
let yt = class extends
|
|
6938
|
+
let yt = class extends re {
|
|
6922
6939
|
constructor() {
|
|
6923
6940
|
super(...arguments), this.filename = "", this.url = "";
|
|
6924
6941
|
}
|
|
@@ -6957,7 +6974,7 @@ ca([
|
|
|
6957
6974
|
yt = ca([
|
|
6958
6975
|
K("cb-file")
|
|
6959
6976
|
], yt);
|
|
6960
|
-
const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></g></svg>', La = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 8a3 3 0 1 0 0-6a3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0a2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1s1-4 6-4s6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/></svg>',
|
|
6977
|
+
const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></g></svg>', La = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 8a3 3 0 1 0 0-6a3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0a2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1s1-4 6-4s6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/></svg>', ei = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M5 9v12H1V9zm4 12a2 2 0 0 1-2-2V9c0-.55.22-1.05.59-1.41L14.17 1l1.06 1.06c.27.27.44.64.44 1.05l-.03.32L14.69 8H21a2 2 0 0 1 2 2v2c0 .26-.05.5-.14.73l-3.02 7.05C19.54 20.5 18.83 21 18 21zm0-2h9.03L21 12v-2h-8.79l1.13-5.32L9 9.03z"/></svg>', ti = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M19 15V3h4v12zM15 3a2 2 0 0 1 2 2v10c0 .55-.22 1.05-.59 1.41L9.83 23l-1.06-1.06c-.27-.27-.44-.64-.44-1.06l.03-.31l.95-4.57H3a2 2 0 0 1-2-2v-2c0-.26.05-.5.14-.73l3.02-7.05C4.46 3.5 5.17 3 6 3zm0 2H5.97L3 12v2h8.78l-1.13 5.32L15 14.97z"/></svg>', mn = J`
|
|
6961
6978
|
pre code.hljs {
|
|
6962
6979
|
display: block;
|
|
6963
6980
|
overflow-x: auto;
|
|
@@ -8410,19 +8427,19 @@ function Ra(a, e) {
|
|
|
8410
8427
|
return `<pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">${e}</span><span class="code-block-header__copy">Copy</span></div><code class="hljs code-block-body ${e}">${a}</code></pre>`;
|
|
8411
8428
|
}
|
|
8412
8429
|
function vn() {
|
|
8413
|
-
const a = new
|
|
8430
|
+
const a = new Bi({
|
|
8414
8431
|
html: !0,
|
|
8415
8432
|
breaks: !0,
|
|
8416
8433
|
linkify: !0,
|
|
8417
8434
|
highlight(e, t) {
|
|
8418
|
-
if (!!(t &&
|
|
8435
|
+
if (!!(t && Nt.getLanguage(t))) {
|
|
8419
8436
|
const s = t ?? "";
|
|
8420
|
-
return Ra(
|
|
8437
|
+
return Ra(Nt.highlight(e, { language: s }).value, s);
|
|
8421
8438
|
}
|
|
8422
|
-
return Ra(
|
|
8439
|
+
return Ra(Nt.highlightAuto(e).value, "");
|
|
8423
8440
|
}
|
|
8424
8441
|
});
|
|
8425
|
-
return a.use(
|
|
8442
|
+
return a.use(qi, { attrs: { target: "_blank", rel: "noopener" } }), a;
|
|
8426
8443
|
}
|
|
8427
8444
|
async function Zt(a) {
|
|
8428
8445
|
const t = vn().render(a);
|
|
@@ -8433,7 +8450,7 @@ var wn = Object.defineProperty, xn = Object.getOwnPropertyDescriptor, nt = (a, e
|
|
|
8433
8450
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
8434
8451
|
return i && s && wn(e, t, s), s;
|
|
8435
8452
|
};
|
|
8436
|
-
let De = class extends
|
|
8453
|
+
let De = class extends re {
|
|
8437
8454
|
constructor() {
|
|
8438
8455
|
super(...arguments), this.store = new it(this, b), this.type = "assistant", this.suppressFeedback = !1, this.lightbox = Zs({
|
|
8439
8456
|
touchNavigation: !0,
|
|
@@ -8500,7 +8517,7 @@ let De = class extends ne {
|
|
|
8500
8517
|
this.copyBtns.forEach((a) => {
|
|
8501
8518
|
a.addEventListener("click", () => {
|
|
8502
8519
|
const e = a.parentElement?.nextElementSibling?.textContent;
|
|
8503
|
-
e &&
|
|
8520
|
+
e && Qi(e).then(() => {
|
|
8504
8521
|
a.textContent = "Success", setTimeout(() => {
|
|
8505
8522
|
a.textContent = "Copy";
|
|
8506
8523
|
}, 500);
|
|
@@ -8612,8 +8629,8 @@ let De = class extends ne {
|
|
|
8612
8629
|
renderBotMessageFeedback(a) {
|
|
8613
8630
|
return this.suppressFeedback || !b.setting.feedbackEnabled || this.index < b.setting.startFeedbackFromMessage * 2 ? null : u`
|
|
8614
8631
|
<div class="cb-message-feedback-tools" part="feedback-wrapper">
|
|
8615
|
-
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${me`${Y(
|
|
8616
|
-
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${me`${Y(
|
|
8632
|
+
<div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${me`${Y(ei)}`}</div>
|
|
8633
|
+
<div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${me`${Y(ti)}`}</div>
|
|
8617
8634
|
</div>
|
|
8618
8635
|
`;
|
|
8619
8636
|
}
|
|
@@ -8694,7 +8711,7 @@ var kn = Object.defineProperty, _n = Object.getOwnPropertyDescriptor, Te = (a, e
|
|
|
8694
8711
|
};
|
|
8695
8712
|
const Oe = Je.noConflict();
|
|
8696
8713
|
Oe.setLevel("info");
|
|
8697
|
-
let ye = class extends
|
|
8714
|
+
let ye = class extends re {
|
|
8698
8715
|
constructor() {
|
|
8699
8716
|
super(...arguments), this.messages = [], this.actions = [], this.form = null, this.suppressFeedback = !1, this.calendlyInjected = !1, this.activeCalendlyAction = -1, this.hubspotMeetingInjected = !1, this.activeHubspotMeetingAction = -1, this._lastScrollTop = 0, this._scrollThrottle = !1, this._userInterruptedAutoScroll = !1, this._userInterruptedMessagesLength = 0;
|
|
8700
8717
|
}
|
|
@@ -9004,7 +9021,7 @@ let ye = class extends ne {
|
|
|
9004
9021
|
`;
|
|
9005
9022
|
}
|
|
9006
9023
|
};
|
|
9007
|
-
ye.styles =
|
|
9024
|
+
ye.styles = Bs;
|
|
9008
9025
|
Te([
|
|
9009
9026
|
x({ type: Array })
|
|
9010
9027
|
], ye.prototype, "messages", 2);
|
|
@@ -9077,13 +9094,13 @@ const Sn = J`
|
|
|
9077
9094
|
align-items: center;
|
|
9078
9095
|
margin: 6px 2px;
|
|
9079
9096
|
}
|
|
9080
|
-
`,
|
|
9097
|
+
`, ai = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/></svg>', ii = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0z"/></svg>', si = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72z"/></svg>', la = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z"/></svg>';
|
|
9081
9098
|
var Cn = Object.defineProperty, An = Object.getOwnPropertyDescriptor, Ie = (a, e, t, i) => {
|
|
9082
9099
|
for (var s = i > 1 ? void 0 : i ? An(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9083
9100
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9084
9101
|
return i && s && Cn(e, t, s), s;
|
|
9085
9102
|
};
|
|
9086
|
-
let ve = class extends
|
|
9103
|
+
let ve = class extends re {
|
|
9087
9104
|
constructor() {
|
|
9088
9105
|
super(...arguments), this.store = new it(this, b), this.placeholder = "Type a message...", this.sendButtonLabel = "Send", this.enableFileUpload = !1, this.enableAudio = !1, this.value = "", this.loading = !1, this.disabled = !1, this.currentKey = "";
|
|
9089
9106
|
}
|
|
@@ -9157,7 +9174,7 @@ let ve = class extends ne {
|
|
|
9157
9174
|
${W(
|
|
9158
9175
|
b.setting.sendIconSvg !== "",
|
|
9159
9176
|
() => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
|
|
9160
|
-
() => u`<cb-icon part="user-input-send-icon" svg="${
|
|
9177
|
+
() => u`<cb-icon part="user-input-send-icon" svg="${ai}"></cb-icon>`
|
|
9161
9178
|
)}
|
|
9162
9179
|
</sl-button>
|
|
9163
9180
|
${W(
|
|
@@ -9167,7 +9184,7 @@ let ve = class extends ne {
|
|
|
9167
9184
|
${W(
|
|
9168
9185
|
b.setting.attachIconSvg !== "",
|
|
9169
9186
|
() => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
|
|
9170
|
-
() => u`<cb-icon part="user-input-attach-icon" svg="${
|
|
9187
|
+
() => u`<cb-icon part="user-input-attach-icon" svg="${ii}"></cb-icon>`
|
|
9171
9188
|
)}
|
|
9172
9189
|
<!-- select file input -->
|
|
9173
9190
|
<input type="file" id="file" name="file" class="file-input" />
|
|
@@ -9182,7 +9199,7 @@ let ve = class extends ne {
|
|
|
9182
9199
|
${W(
|
|
9183
9200
|
b.webAudioStarted,
|
|
9184
9201
|
() => u`<cb-icon svg="${la}"></cb-icon>`,
|
|
9185
|
-
() => u`<cb-icon svg="${
|
|
9202
|
+
() => u`<cb-icon svg="${si}"></cb-icon>`
|
|
9186
9203
|
)}
|
|
9187
9204
|
</sl-button>
|
|
9188
9205
|
`,
|
|
@@ -9291,7 +9308,7 @@ var En = Object.defineProperty, $n = Object.getOwnPropertyDescriptor, Ee = (a, e
|
|
|
9291
9308
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9292
9309
|
return i && s && En(e, t, s), s;
|
|
9293
9310
|
};
|
|
9294
|
-
let we = class extends
|
|
9311
|
+
let we = class extends re {
|
|
9295
9312
|
constructor() {
|
|
9296
9313
|
super(...arguments), this.store = new it(this, b), this.placeholder = "Type a message...", this.sendButtonLabel = "Send", this.enableFileUpload = !1, this.enableAudio = !1, this.value = "", this.loading = !1, this.disabled = !1, this.currentKey = "";
|
|
9297
9314
|
}
|
|
@@ -9437,7 +9454,7 @@ let we = class extends ne {
|
|
|
9437
9454
|
${W(
|
|
9438
9455
|
b.setting.sendIconSvg !== "",
|
|
9439
9456
|
() => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
|
|
9440
|
-
() => u`<cb-icon part="user-input-send-icon" svg="${
|
|
9457
|
+
() => u`<cb-icon part="user-input-send-icon" svg="${ai}"></cb-icon>`
|
|
9441
9458
|
)}
|
|
9442
9459
|
</sl-button>
|
|
9443
9460
|
${W(
|
|
@@ -9447,7 +9464,7 @@ let we = class extends ne {
|
|
|
9447
9464
|
${W(
|
|
9448
9465
|
b.setting.attachIconSvg !== "",
|
|
9449
9466
|
() => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
|
|
9450
|
-
() => u`<cb-icon part="user-input-attach-icon" svg="${
|
|
9467
|
+
() => u`<cb-icon part="user-input-attach-icon" svg="${ii}"></cb-icon>`
|
|
9451
9468
|
)}
|
|
9452
9469
|
<!-- select file input -->
|
|
9453
9470
|
<input type="file" id="file" name="file" class="file-input" />
|
|
@@ -9462,7 +9479,7 @@ let we = class extends ne {
|
|
|
9462
9479
|
${W(
|
|
9463
9480
|
b.webAudioStarted,
|
|
9464
9481
|
() => u`<cb-icon svg="${la}"></cb-icon>`,
|
|
9465
|
-
() => u`<cb-icon svg="${
|
|
9482
|
+
() => u`<cb-icon svg="${si}"></cb-icon>`
|
|
9466
9483
|
)}
|
|
9467
9484
|
</sl-button>
|
|
9468
9485
|
`,
|
|
@@ -9507,7 +9524,7 @@ Ee([
|
|
|
9507
9524
|
we = Ee([
|
|
9508
9525
|
K("cb-user-input-mm")
|
|
9509
9526
|
], we);
|
|
9510
|
-
const
|
|
9527
|
+
const ni = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></svg>', Pn = J`
|
|
9511
9528
|
${ke}
|
|
9512
9529
|
|
|
9513
9530
|
sl-dialog::part(base) {
|
|
@@ -9547,7 +9564,7 @@ var Ln = Object.defineProperty, Rn = Object.getOwnPropertyDescriptor, Ht = (a, e
|
|
|
9547
9564
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9548
9565
|
return i && s && Ln(e, t, s), s;
|
|
9549
9566
|
};
|
|
9550
|
-
let ct = class extends
|
|
9567
|
+
let ct = class extends re {
|
|
9551
9568
|
constructor() {
|
|
9552
9569
|
super(...arguments), this.open = !1, this.label = "Dialog", this.zindex = 100;
|
|
9553
9570
|
}
|
|
@@ -9578,7 +9595,7 @@ let ct = class extends ne {
|
|
|
9578
9595
|
<cb-icon
|
|
9579
9596
|
color="default"
|
|
9580
9597
|
style="font-size: 1em;"
|
|
9581
|
-
svg="${
|
|
9598
|
+
svg="${ni}"
|
|
9582
9599
|
></cb-icon>
|
|
9583
9600
|
</sl-button>
|
|
9584
9601
|
</header>
|
|
@@ -9604,12 +9621,12 @@ Ht([
|
|
|
9604
9621
|
ct = Ht([
|
|
9605
9622
|
K("cb-dialog")
|
|
9606
9623
|
], ct);
|
|
9607
|
-
var zn = Object.defineProperty, On = Object.getOwnPropertyDescriptor,
|
|
9624
|
+
var zn = Object.defineProperty, On = Object.getOwnPropertyDescriptor, ri = (a, e, t, i) => {
|
|
9608
9625
|
for (var s = i > 1 ? void 0 : i ? On(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9609
9626
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9610
9627
|
return i && s && zn(e, t, s), s;
|
|
9611
9628
|
};
|
|
9612
|
-
let qt = class extends
|
|
9629
|
+
let qt = class extends re {
|
|
9613
9630
|
constructor() {
|
|
9614
9631
|
super(...arguments), this.open = !1;
|
|
9615
9632
|
}
|
|
@@ -9651,10 +9668,10 @@ qt.styles = J`
|
|
|
9651
9668
|
z-index: 1000;
|
|
9652
9669
|
}
|
|
9653
9670
|
`;
|
|
9654
|
-
|
|
9671
|
+
ri([
|
|
9655
9672
|
x({ type: Boolean })
|
|
9656
9673
|
], qt.prototype, "open", 2);
|
|
9657
|
-
qt =
|
|
9674
|
+
qt = ri([
|
|
9658
9675
|
K("cb-clear-message-dialog")
|
|
9659
9676
|
], qt);
|
|
9660
9677
|
const Bn = J`
|
|
@@ -9722,7 +9739,7 @@ var qn = Object.defineProperty, Dn = Object.getOwnPropertyDescriptor, dt = (a, e
|
|
|
9722
9739
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9723
9740
|
return i && s && qn(e, t, s), s;
|
|
9724
9741
|
};
|
|
9725
|
-
let Xe = class extends
|
|
9742
|
+
let Xe = class extends re {
|
|
9726
9743
|
constructor() {
|
|
9727
9744
|
super(...arguments), this.open = !1, this.clearMessageDialogOpen = !1, this.customRequest = !1;
|
|
9728
9745
|
}
|
|
@@ -9974,12 +9991,12 @@ const Fn = J`
|
|
|
9974
9991
|
margin: 4px 4px 0px 0px;
|
|
9975
9992
|
}
|
|
9976
9993
|
`;
|
|
9977
|
-
var jn = Object.defineProperty, Hn = Object.getOwnPropertyDescriptor,
|
|
9994
|
+
var jn = Object.defineProperty, Hn = Object.getOwnPropertyDescriptor, oi = (a, e, t, i) => {
|
|
9978
9995
|
for (var s = i > 1 ? void 0 : i ? Hn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
9979
9996
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
9980
9997
|
return i && s && jn(e, t, s), s;
|
|
9981
9998
|
};
|
|
9982
|
-
let Dt = class extends
|
|
9999
|
+
let Dt = class extends re {
|
|
9983
10000
|
constructor() {
|
|
9984
10001
|
super(...arguments), this.store = new it(this, b), this.open = !1;
|
|
9985
10002
|
}
|
|
@@ -10030,7 +10047,7 @@ let Dt = class extends ne {
|
|
|
10030
10047
|
)}
|
|
10031
10048
|
</sl-button>
|
|
10032
10049
|
<div class="cb-engage-popup">
|
|
10033
|
-
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${me`${Y(
|
|
10050
|
+
<div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${me`${Y(ni)}`}</div>
|
|
10034
10051
|
<div class="cb-engage-popup-content">
|
|
10035
10052
|
${this.renderPopupLogo()}
|
|
10036
10053
|
<div>${b.setting.engageMessage}</div>
|
|
@@ -10042,16 +10059,16 @@ let Dt = class extends ne {
|
|
|
10042
10059
|
}
|
|
10043
10060
|
};
|
|
10044
10061
|
Dt.styles = Fn;
|
|
10045
|
-
|
|
10062
|
+
oi([
|
|
10046
10063
|
x({ type: Boolean })
|
|
10047
10064
|
], Dt.prototype, "open", 2);
|
|
10048
|
-
Dt =
|
|
10065
|
+
Dt = oi([
|
|
10049
10066
|
K("cb-anchor")
|
|
10050
10067
|
], Dt);
|
|
10051
10068
|
const Vn = J`
|
|
10052
10069
|
${ke}
|
|
10053
|
-
`, Oa = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1L1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>',
|
|
10054
|
-
var Gn = Object.defineProperty, Xn = Object.getOwnPropertyDescriptor,
|
|
10070
|
+
`, Oa = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1L1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Nn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016a.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06a.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017a.2.2 0 0 1-.054-.06a.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/><path d="M7.002 12a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Un = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764a.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0a5.5 5.5 0 1 1-11 0"/><path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293L5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/></g></svg>', Wn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m8.93 6.588l-2.29.287l-.082.38l.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319c.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246c-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0a1 1 0 0 1 2 0"/></g></svg>';
|
|
10071
|
+
var Gn = Object.defineProperty, Xn = Object.getOwnPropertyDescriptor, ci = (a, e, t, i) => {
|
|
10055
10072
|
for (var s = i > 1 ? void 0 : i ? Xn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
10056
10073
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
10057
10074
|
return i && s && Gn(e, t, s), s;
|
|
@@ -10067,18 +10084,18 @@ const Ba = {
|
|
|
10067
10084
|
},
|
|
10068
10085
|
warning: {
|
|
10069
10086
|
variant: "warning",
|
|
10070
|
-
icon:
|
|
10087
|
+
icon: Nn
|
|
10071
10088
|
},
|
|
10072
10089
|
success: {
|
|
10073
10090
|
variant: "success",
|
|
10074
|
-
icon:
|
|
10091
|
+
icon: Un
|
|
10075
10092
|
},
|
|
10076
10093
|
info: {
|
|
10077
10094
|
variant: "primary",
|
|
10078
10095
|
icon: Wn
|
|
10079
10096
|
}
|
|
10080
10097
|
};
|
|
10081
|
-
let Ft = class extends
|
|
10098
|
+
let Ft = class extends re {
|
|
10082
10099
|
constructor() {
|
|
10083
10100
|
super(...arguments), this.status = "info";
|
|
10084
10101
|
}
|
|
@@ -10088,10 +10105,10 @@ let Ft = class extends ne {
|
|
|
10088
10105
|
}
|
|
10089
10106
|
};
|
|
10090
10107
|
Ft.styles = Wa;
|
|
10091
|
-
|
|
10108
|
+
ci([
|
|
10092
10109
|
x({ type: String })
|
|
10093
10110
|
], Ft.prototype, "status", 2);
|
|
10094
|
-
Ft =
|
|
10111
|
+
Ft = ci([
|
|
10095
10112
|
K("cb-status-icon")
|
|
10096
10113
|
], Ft);
|
|
10097
10114
|
var Yn = Object.getOwnPropertyDescriptor, Jn = (a, e, t, i) => {
|
|
@@ -10099,7 +10116,7 @@ var Yn = Object.getOwnPropertyDescriptor, Jn = (a, e, t, i) => {
|
|
|
10099
10116
|
(o = a[r]) && (s = o(s) || s);
|
|
10100
10117
|
return s;
|
|
10101
10118
|
};
|
|
10102
|
-
let Qt = class extends
|
|
10119
|
+
let Qt = class extends re {
|
|
10103
10120
|
render() {
|
|
10104
10121
|
return u` <sl-alert variant="danger" open>
|
|
10105
10122
|
<cb-status-icon status="error" slot="icon"></cb-status-icon>
|
|
@@ -10209,7 +10226,7 @@ var Zn = Object.defineProperty, Qn = Object.getOwnPropertyDescriptor, ft = (a, e
|
|
|
10209
10226
|
return i && s && Zn(e, t, s), s;
|
|
10210
10227
|
};
|
|
10211
10228
|
const qa = Je.noConflict(), er = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16"><path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/></svg>';
|
|
10212
|
-
let Ye = class extends
|
|
10229
|
+
let Ye = class extends re {
|
|
10213
10230
|
constructor() {
|
|
10214
10231
|
super(...arguments), this.store = new it(this, b), this.zindex = 100;
|
|
10215
10232
|
}
|
|
@@ -10242,7 +10259,7 @@ let Ye = class extends ne {
|
|
|
10242
10259
|
b.feedbackScore = 0;
|
|
10243
10260
|
}}"
|
|
10244
10261
|
>
|
|
10245
|
-
${me`${Y(
|
|
10262
|
+
${me`${Y(ti)}`}
|
|
10246
10263
|
</div>
|
|
10247
10264
|
<sl-rating id="cb-feedback-rating-el" class="cb-feedback-rating" @sl-change="${this._ratingChangeHandler}" label="Rating" precision="1" .value=${b.feedbackScore}></sl-rating>
|
|
10248
10265
|
<div
|
|
@@ -10251,7 +10268,7 @@ let Ye = class extends ne {
|
|
|
10251
10268
|
b.feedbackScore = 5;
|
|
10252
10269
|
}}"
|
|
10253
10270
|
>
|
|
10254
|
-
${me`${Y(
|
|
10271
|
+
${me`${Y(ei)}`}
|
|
10255
10272
|
</div>
|
|
10256
10273
|
</div>
|
|
10257
10274
|
<div style="display: flex">
|
|
@@ -10599,7 +10616,7 @@ class ar extends HTMLElement {
|
|
|
10599
10616
|
}
|
|
10600
10617
|
customElements.get("volume-visualizer") || customElements.define("volume-visualizer", ar);
|
|
10601
10618
|
const da = 1, Da = 2;
|
|
10602
|
-
class
|
|
10619
|
+
class li extends HTMLElement {
|
|
10603
10620
|
constructor() {
|
|
10604
10621
|
super(), this.attachShadow({ mode: "open" }), this._analyserInput = null, this._dataArrayInput = null, this._analyserOutput = null, this._dataArrayOutput = null, this._thinking = !1, this._muted = !1, this._fftSize = 512, this._smoothingTimeConstant = 0.55, this._canvas = null, this._context = null, this._lastTime = 0, this._render();
|
|
10605
10622
|
}
|
|
@@ -10681,7 +10698,7 @@ class ci extends HTMLElement {
|
|
|
10681
10698
|
this._stop(), this._analyserInput = null, this._analyserOutput = null;
|
|
10682
10699
|
}
|
|
10683
10700
|
}
|
|
10684
|
-
class ir extends
|
|
10701
|
+
class ir extends li {
|
|
10685
10702
|
constructor() {
|
|
10686
10703
|
super(), this._ribbons = [], this._lastTime = 0, this._ribbons.push(
|
|
10687
10704
|
new It(
|
|
@@ -10784,7 +10801,7 @@ class It {
|
|
|
10784
10801
|
}
|
|
10785
10802
|
}
|
|
10786
10803
|
}
|
|
10787
|
-
class sr extends
|
|
10804
|
+
class sr extends li {
|
|
10788
10805
|
constructor() {
|
|
10789
10806
|
super(), this._numBars = 32, this._renderHeights = Array(this._numBars).fill(0), this._targetHeights = Array(this._numBars).fill(0), this._velocity = Array(this._numBars).fill(0), this._springStrength = 25, this._damping = 0.75, this._inputColor = { r: 255, g: 126, b: 103 }, this._outputColor = { r: 99, g: 193, b: 208 }, this._currentColor = { ...this._outputColor }, this._thinkingPhase = 0;
|
|
10790
10807
|
}
|
|
@@ -10841,12 +10858,12 @@ var rr = Object.getOwnPropertyDescriptor, or = (a, e, t, i) => {
|
|
|
10841
10858
|
};
|
|
10842
10859
|
const bt = Je.noConflict();
|
|
10843
10860
|
bt.setLevel("info");
|
|
10844
|
-
let ea = class extends
|
|
10861
|
+
let ea = class extends re {
|
|
10845
10862
|
constructor() {
|
|
10846
10863
|
super(...arguments), this.store = new it(this, b), this.unsubscribeTypingActive = b.subscribe(
|
|
10847
10864
|
this._handleTypingActiveChanged.bind(this),
|
|
10848
10865
|
["typingActive"]
|
|
10849
|
-
), this.volumeVisualizerRef =
|
|
10866
|
+
), this.volumeVisualizerRef = Di(), this.volumeVisualizerInitialized = !1;
|
|
10850
10867
|
}
|
|
10851
10868
|
/*
|
|
10852
10869
|
createRenderRoot() {
|
|
@@ -10954,7 +10971,7 @@ class ta extends Error {
|
|
|
10954
10971
|
super(`Request failed with ${f}: ${t.method} ${t.url}`), this.name = "HTTPError", this.response = e, this.request = t, this.options = i;
|
|
10955
10972
|
}
|
|
10956
10973
|
}
|
|
10957
|
-
class
|
|
10974
|
+
class di extends Error {
|
|
10958
10975
|
name = "NonError";
|
|
10959
10976
|
value;
|
|
10960
10977
|
constructor(e) {
|
|
@@ -10972,7 +10989,7 @@ class Wt extends Error {
|
|
|
10972
10989
|
code;
|
|
10973
10990
|
customRequest;
|
|
10974
10991
|
constructor(e) {
|
|
10975
|
-
const t = e?.cause ? e.cause instanceof Error ? e.cause : new
|
|
10992
|
+
const t = e?.cause ? e.cause instanceof Error ? e.cause : new di(e.cause) : void 0;
|
|
10976
10993
|
super(e?.code ? `Forced retry: ${e.code}` : "Forced retry", t ? { cause: t } : void 0), this.customDelay = e?.delay, this.code = e?.code, this.customRequest = e?.request;
|
|
10977
10994
|
}
|
|
10978
10995
|
}
|
|
@@ -10995,7 +11012,7 @@ const Fa = (() => {
|
|
|
10995
11012
|
throw s;
|
|
10996
11013
|
}
|
|
10997
11014
|
return a && !e;
|
|
10998
|
-
})(), cr = typeof globalThis.AbortController == "function",
|
|
11015
|
+
})(), cr = typeof globalThis.AbortController == "function", fi = typeof globalThis.AbortSignal == "function" && typeof globalThis.AbortSignal.any == "function", lr = typeof globalThis.ReadableStream == "function", dr = typeof globalThis.FormData == "function", hi = ["get", "post", "put", "patch", "head", "delete"], fr = {
|
|
10999
11016
|
json: "application/json",
|
|
11000
11017
|
text: "text/*",
|
|
11001
11018
|
formData: "multipart/form-data",
|
|
@@ -11004,14 +11021,14 @@ const Fa = (() => {
|
|
|
11004
11021
|
// Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).
|
|
11005
11022
|
// We still feature-check at runtime before exposing the shortcut.
|
|
11006
11023
|
bytes: "*/*"
|
|
11007
|
-
}, Gt = 2147483647, hr = new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length,
|
|
11008
|
-
class
|
|
11024
|
+
}, Gt = 2147483647, hr = new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length, bi = Symbol("stop");
|
|
11025
|
+
class ui {
|
|
11009
11026
|
options;
|
|
11010
11027
|
constructor(e) {
|
|
11011
11028
|
this.options = e;
|
|
11012
11029
|
}
|
|
11013
11030
|
}
|
|
11014
|
-
const br = (a) => new
|
|
11031
|
+
const br = (a) => new ui(a), ur = {
|
|
11015
11032
|
json: !0,
|
|
11016
11033
|
parseJson: !0,
|
|
11017
11034
|
stringifyJson: !0,
|
|
@@ -11070,7 +11087,7 @@ const br = (a) => new bi(a), ur = {
|
|
|
11070
11087
|
return 0;
|
|
11071
11088
|
}
|
|
11072
11089
|
return 0;
|
|
11073
|
-
},
|
|
11090
|
+
}, pi = (a, e, t) => {
|
|
11074
11091
|
let i, s = 0;
|
|
11075
11092
|
return a.pipeThrough(new TransformStream({
|
|
11076
11093
|
transform(r, o) {
|
|
@@ -11095,7 +11112,7 @@ const br = (a) => new bi(a), ur = {
|
|
|
11095
11112
|
headers: a.headers
|
|
11096
11113
|
});
|
|
11097
11114
|
const t = Math.max(0, Number(a.headers.get("content-length")) || 0);
|
|
11098
|
-
return new Response(
|
|
11115
|
+
return new Response(pi(a.body, t, e), {
|
|
11099
11116
|
status: a.status,
|
|
11100
11117
|
statusText: a.statusText,
|
|
11101
11118
|
headers: a.headers
|
|
@@ -11107,14 +11124,14 @@ const br = (a) => new bi(a), ur = {
|
|
|
11107
11124
|
return new Request(a, {
|
|
11108
11125
|
// @ts-expect-error - Types are outdated.
|
|
11109
11126
|
duplex: "half",
|
|
11110
|
-
body:
|
|
11127
|
+
body: pi(a.body, i, e)
|
|
11111
11128
|
});
|
|
11112
11129
|
}, Qe = (a) => a !== null && typeof a == "object", Et = (...a) => {
|
|
11113
11130
|
for (const e of a)
|
|
11114
11131
|
if ((!Qe(e) || Array.isArray(e)) && e !== void 0)
|
|
11115
11132
|
throw new TypeError("The `options` argument must be an object");
|
|
11116
11133
|
return fa({}, ...a);
|
|
11117
|
-
},
|
|
11134
|
+
}, gi = (a = {}, e = {}) => {
|
|
11118
11135
|
const t = new globalThis.Headers(a), i = e instanceof globalThis.Headers, s = new globalThis.Headers(e);
|
|
11119
11136
|
for (const [r, o] of s.entries())
|
|
11120
11137
|
i && o === "undefined" || o === void 0 ? t.delete(r) : t.set(r, o);
|
|
@@ -11123,7 +11140,7 @@ const br = (a) => new bi(a), ur = {
|
|
|
11123
11140
|
function $t(a, e, t) {
|
|
11124
11141
|
return Object.hasOwn(e, t) && e[t] === void 0 ? [] : fa(a[t] ?? [], e[t] ?? []);
|
|
11125
11142
|
}
|
|
11126
|
-
const
|
|
11143
|
+
const mi = (a = {}, e = {}) => ({
|
|
11127
11144
|
beforeRequest: $t(a, e, "beforeRequest"),
|
|
11128
11145
|
beforeRetry: $t(a, e, "beforeRetry"),
|
|
11129
11146
|
afterResponse: $t(a, e, "afterResponse"),
|
|
@@ -11177,10 +11194,10 @@ const gi = (a = {}, e = {}) => ({
|
|
|
11177
11194
|
}
|
|
11178
11195
|
Qe(p) && f in e && (p = fa(e[f], p)), e = { ...e, [f]: p };
|
|
11179
11196
|
}
|
|
11180
|
-
Qe(o.hooks) && (i =
|
|
11197
|
+
Qe(o.hooks) && (i = mi(i, o.hooks), e.hooks = i), Qe(o.headers) && (t = gi(t, o.headers), e.headers = t);
|
|
11181
11198
|
}
|
|
11182
|
-
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] :
|
|
11183
|
-
}, xr = (a) =>
|
|
11199
|
+
return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] : fi ? e.signal = AbortSignal.any(r) : e.signal = r.at(-1)), e.context === void 0 && (e.context = {}), e;
|
|
11200
|
+
}, xr = (a) => hi.includes(a) ? a.toUpperCase() : a, kr = ["get", "put", "head", "delete", "options", "trace"], _r = [408, 413, 429, 500, 502, 503, 504], Sr = [413, 429, 503], ja = {
|
|
11184
11201
|
limit: 2,
|
|
11185
11202
|
methods: kr,
|
|
11186
11203
|
statusCodes: _r,
|
|
@@ -11253,7 +11270,7 @@ class vt {
|
|
|
11253
11270
|
let o = await i.#p();
|
|
11254
11271
|
for (const f of i.#e.hooks.afterResponse) {
|
|
11255
11272
|
const p = i.#d(o.clone()), v = await f(i.request, i.#o(), p, { retryCount: i.#a });
|
|
11256
|
-
if (v instanceof globalThis.Response && (o = v), v instanceof
|
|
11273
|
+
if (v instanceof globalThis.Response && (o = v), v instanceof ui)
|
|
11257
11274
|
throw await Promise.all([
|
|
11258
11275
|
p.body?.cancel(),
|
|
11259
11276
|
o.body?.cancel()
|
|
@@ -11308,8 +11325,8 @@ class vt {
|
|
|
11308
11325
|
constructor(e, t = {}) {
|
|
11309
11326
|
if (this.#t = e, this.#e = {
|
|
11310
11327
|
...t,
|
|
11311
|
-
headers:
|
|
11312
|
-
hooks:
|
|
11328
|
+
headers: gi(this.#t.headers, t.headers),
|
|
11329
|
+
hooks: mi({
|
|
11313
11330
|
beforeRequest: [],
|
|
11314
11331
|
beforeRetry: [],
|
|
11315
11332
|
beforeError: [],
|
|
@@ -11330,7 +11347,7 @@ class vt {
|
|
|
11330
11347
|
throw new Error("`input` must not begin with a slash when using `prefixUrl`");
|
|
11331
11348
|
this.#e.prefixUrl.endsWith("/") || (this.#e.prefixUrl += "/"), this.#t = this.#e.prefixUrl + this.#t;
|
|
11332
11349
|
}
|
|
11333
|
-
cr &&
|
|
11350
|
+
cr && fi && (this.#s = this.#e.signal ?? this.#t.signal, this.#i = new globalThis.AbortController(), this.#e.signal = this.#s ? AbortSignal.any([this.#s, this.#i.signal]) : this.#i.signal), Fa && (this.#e.duplex = "half"), this.#e.json !== void 0 && (this.#e.body = this.#e.stringifyJson?.(this.#e.json) ?? JSON.stringify(this.#e.json), this.#e.headers.set("content-type", this.#e.headers.get("content-type") ?? "application/json"));
|
|
11334
11351
|
const i = t.headers && new globalThis.Headers(t.headers).has("content-type");
|
|
11335
11352
|
if (this.#t instanceof globalThis.Request && (dr && this.#e.body instanceof globalThis.FormData || this.#e.body instanceof URLSearchParams) && !i && this.#e.headers.delete("content-type"), this.request = new globalThis.Request(this.#t, this.#e), Ir(this.#e.searchParams)) {
|
|
11336
11353
|
const r = "?" + (typeof this.#e.searchParams == "string" ? this.#e.searchParams.replace(/^\?/, "") : new URLSearchParams(vt.#b(this.#e.searchParams)).toString()), o = this.request.url.replace(/(?:\?.*?)?(?=#|$)/, r);
|
|
@@ -11352,7 +11369,7 @@ class vt {
|
|
|
11352
11369
|
async #u(e) {
|
|
11353
11370
|
if (this.#a++, this.#a > this.#e.retry.limit)
|
|
11354
11371
|
throw e;
|
|
11355
|
-
const t = e instanceof Error ? e : new
|
|
11372
|
+
const t = e instanceof Error ? e : new di(e);
|
|
11356
11373
|
if (t instanceof Wt)
|
|
11357
11374
|
return t.customDelay ?? this.#c();
|
|
11358
11375
|
if (!this.#e.retry.methods.includes(this.request.method.toLowerCase()))
|
|
@@ -11408,7 +11425,7 @@ class vt {
|
|
|
11408
11425
|
}
|
|
11409
11426
|
if (r instanceof globalThis.Response)
|
|
11410
11427
|
return r;
|
|
11411
|
-
if (r ===
|
|
11428
|
+
if (r === bi)
|
|
11412
11429
|
return;
|
|
11413
11430
|
}
|
|
11414
11431
|
return this.#f(e);
|
|
@@ -11444,9 +11461,9 @@ class vt {
|
|
|
11444
11461
|
}
|
|
11445
11462
|
const ia = (a) => {
|
|
11446
11463
|
const e = (t, i) => vt.create(t, Et(a, i));
|
|
11447
|
-
for (const t of
|
|
11464
|
+
for (const t of hi)
|
|
11448
11465
|
e[t] = (i, s) => vt.create(i, Et(a, s, { method: t }));
|
|
11449
|
-
return e.create = (t) => ia(Et(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), ia(Et(a, t))), e.stop =
|
|
11466
|
+
return e.create = (t) => ia(Et(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), ia(Et(a, t))), e.stop = bi, e.retry = br, e;
|
|
11450
11467
|
}, Pr = ia();
|
|
11451
11468
|
Pr.extend({
|
|
11452
11469
|
hooks: {
|
|
@@ -11477,16 +11494,16 @@ async function Lr(a, e) {
|
|
|
11477
11494
|
}).text()
|
|
11478
11495
|
);
|
|
11479
11496
|
}
|
|
11480
|
-
var Rr = Object.defineProperty, zr = Object.getOwnPropertyDescriptor,
|
|
11497
|
+
var Rr = Object.defineProperty, zr = Object.getOwnPropertyDescriptor, N = (a, e, t, i) => {
|
|
11481
11498
|
for (var s = i > 1 ? void 0 : i ? zr(e, t) : e, r = a.length - 1, o; r >= 0; r--)
|
|
11482
11499
|
(o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
|
|
11483
11500
|
return i && s && Rr(e, t, s), s;
|
|
11484
11501
|
};
|
|
11485
11502
|
const Be = Je.noConflict();
|
|
11486
11503
|
Be.setLevel("info");
|
|
11487
|
-
let H = class extends
|
|
11504
|
+
let H = class extends re {
|
|
11488
11505
|
constructor() {
|
|
11489
|
-
super(...arguments), this.store = new it(this, b), this.displayLicense = !1, this.name = "ChatBot", this.orgId = "", this.botId = "", this.url = "ws://localhost:3070", this.logoUrl = "", this.logoSvg = `<svg width="
|
|
11506
|
+
super(...arguments), this.store = new it(this, b), this.displayLicense = !1, this.name = "ChatBot", this.orgId = "", this.botId = "", this.url = "ws://localhost:3070", this.logoUrl = "", this.logoSvg = `<svg width="24" height="24" viewBox="0 0 203 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
11490
11507
|
<path d="M100.438 0C155.665 0 200.438 44.7723 200.438 100C200.438 155.228 155.665 200 100.438 200C45.2098 200 0.4375 155.228 0.4375 100C0.4375 44.7723 45.2098 0 100.438 0ZM130.093 60.6063C120.409 60.6063 115.205 61.458 109.344 65.0325C100.122 70.6592 95.629 80.1958 94.2273 93.877C94.1468 94.5544 93.8048 97.2571 93.4091 100.349C93.3152 101.06 93.2281 101.771 93.1409 102.455C92.7318 105.573 92.3093 108.739 92.0142 110.408C90.8808 117.041 89.2914 123.761 83.8927 126.759C83.6915 126.873 83.4702 126.967 83.2556 127.067C78.6013 129.093 72.2905 128.898 72.2905 128.898C72.2905 128.898 69.1988 128.885 69.1787 128.885C69.172 128.885 69.1921 128.885 69.1921 128.898L68.1057 143.632C87.7824 143.666 93.0537 139.213 93.0537 139.213C102.275 133.586 106.768 124.049 108.17 110.368C108.251 109.677 108.593 106.894 109.002 103.735C109.096 103.004 109.196 102.273 109.283 101.576C109.679 98.5246 110.095 95.4798 110.383 93.8435C111.517 87.2108 113.106 80.4842 118.505 77.4931C118.706 77.3791 118.921 77.2852 119.135 77.1846C123.756 75.1727 130.107 75.3471 130.107 75.3471C132.494 75.3269 133.219 75.4007 133.286 75.4074L134.292 60.6264C132.783 60.6264 130.107 60.6264 130.107 60.6264L130.093 60.6063Z" fill="#010101" style="fill:#010101;fill:color(display-p3 0.0039 0.0039 0.0039);fill-opacity:1;"/>
|
|
11491
11508
|
</svg>`, this.closeSvg = '<svg viewBox="0 0 16 16" width="1.4em" height="1.4em"><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"></path></svg>', this.logoSvgGradient = `<svg width="28" height="28" viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
11492
11509
|
<g clip-path="url(#clip0_830_884)">
|
|
@@ -11548,7 +11565,7 @@ let H = class extends ne {
|
|
|
11548
11565
|
}
|
|
11549
11566
|
render() {
|
|
11550
11567
|
return b.disabled && !this.alwaysOpen ? (Be.info("Bot is disabled until settings are loaded"), null) : u`
|
|
11551
|
-
<div class="cb-wrapper${b.open ? " cb-open" : ""}" part="wrapper${b.open ? " open" : ""}" exportparts="wrapper${b.open ? " open" : ""}">
|
|
11568
|
+
<div class="cb-wrapper${b.open ? " cb-open" : ""}" part="wrapper${b.open ? " open" : ""}" exportparts="new-conversation-wrapper new-conversation-button wrapper${b.open ? " open" : ""}">
|
|
11552
11569
|
<cb-header title="${this.name}" exportparts="header, header-logo, header-title, header-close"></cb-header>
|
|
11553
11570
|
<cb-message-list
|
|
11554
11571
|
.messages=${b.messages}
|
|
@@ -11556,6 +11573,15 @@ let H = class extends ne {
|
|
|
11556
11573
|
.form=${b.form}
|
|
11557
11574
|
exportparts="bot-message-list, disclaimer-message, bot-message, cb-message, bot-message-content, user-message-content, user-avatar, assistant-avatar, feedback-wrapper,feedback-up,feedback-down,form, form-title, form-input, form-submit"
|
|
11558
11575
|
></cb-message-list>
|
|
11576
|
+
${W(
|
|
11577
|
+
b.showNewConversation,
|
|
11578
|
+
() => u`
|
|
11579
|
+
<div class="cb-new-conversation-wrapper" part="new-conversation-wrapper">
|
|
11580
|
+
<button type="button" class="card-btn info" part="new-conversation-button" @click=${this.clearConversation}>Start New Conversation</button>
|
|
11581
|
+
</div>
|
|
11582
|
+
`,
|
|
11583
|
+
() => u``
|
|
11584
|
+
)}
|
|
11559
11585
|
<cb-audio-controls exportparts="audio-controls-wrapper, audio-controls, audio-mute-button, audio-unmute-button, audio-end-button, audio-controls-viz"></cb-audio-controls>
|
|
11560
11586
|
${this.renderUserInput()} ${this.renderFeedbackDialog()}
|
|
11561
11587
|
</div>
|
|
@@ -11736,6 +11762,11 @@ let H = class extends ne {
|
|
|
11736
11762
|
};
|
|
11737
11763
|
return this._processSendMessage(e);
|
|
11738
11764
|
}
|
|
11765
|
+
// [sv2] for testing only
|
|
11766
|
+
processAgentDisconnected(a) {
|
|
11767
|
+
b.handleAgentDisconnected(a).catch((e) => {
|
|
11768
|
+
});
|
|
11769
|
+
}
|
|
11739
11770
|
_processSendMessage(a) {
|
|
11740
11771
|
if (!a.data.text || typeof a.data.text != "string" || a.data.text.trim() === "") {
|
|
11741
11772
|
console.log("_processSendMessage: input text is empty, ignored", a);
|
|
@@ -11787,95 +11818,95 @@ let H = class extends ne {
|
|
|
11787
11818
|
this._messageList?.scrollToBottom();
|
|
11788
11819
|
}
|
|
11789
11820
|
};
|
|
11790
|
-
H.styles =
|
|
11791
|
-
|
|
11821
|
+
H.styles = [Wi, Ja];
|
|
11822
|
+
N([
|
|
11792
11823
|
x({ type: Boolean, attribute: "display-license" })
|
|
11793
11824
|
], H.prototype, "displayLicense", 2);
|
|
11794
|
-
|
|
11825
|
+
N([
|
|
11795
11826
|
x({ type: String, attribute: "name" })
|
|
11796
11827
|
], H.prototype, "name", 2);
|
|
11797
|
-
|
|
11828
|
+
N([
|
|
11798
11829
|
x({ type: String, attribute: "org-id" })
|
|
11799
11830
|
], H.prototype, "orgId", 2);
|
|
11800
|
-
|
|
11831
|
+
N([
|
|
11801
11832
|
x({ type: String, attribute: "bot-id" })
|
|
11802
11833
|
], H.prototype, "botId", 2);
|
|
11803
|
-
|
|
11834
|
+
N([
|
|
11804
11835
|
x({ type: String, attribute: "url" })
|
|
11805
11836
|
], H.prototype, "url", 2);
|
|
11806
|
-
|
|
11837
|
+
N([
|
|
11807
11838
|
x({ type: String, attribute: "logo-url" })
|
|
11808
11839
|
], H.prototype, "logoUrl", 2);
|
|
11809
|
-
|
|
11840
|
+
N([
|
|
11810
11841
|
x({ type: String, attribute: "logo-svg" })
|
|
11811
11842
|
], H.prototype, "logoSvg", 2);
|
|
11812
|
-
|
|
11843
|
+
N([
|
|
11813
11844
|
x({ type: String, attribute: "close-svg" })
|
|
11814
11845
|
], H.prototype, "closeSvg", 2);
|
|
11815
|
-
|
|
11846
|
+
N([
|
|
11816
11847
|
x({ type: String, attribute: "popup-logo-svg" })
|
|
11817
11848
|
], H.prototype, "popupLogoSvg", 2);
|
|
11818
|
-
|
|
11849
|
+
N([
|
|
11819
11850
|
x({ type: String, attribute: "popup-logo-url" })
|
|
11820
11851
|
], H.prototype, "popupLogoUrl", 2);
|
|
11821
|
-
|
|
11852
|
+
N([
|
|
11822
11853
|
x({ type: String, attribute: "bot-icon-svg" })
|
|
11823
11854
|
], H.prototype, "botIconSvg", 2);
|
|
11824
|
-
|
|
11855
|
+
N([
|
|
11825
11856
|
x({ type: String, attribute: "user-icon-svg" })
|
|
11826
11857
|
], H.prototype, "userIconSvg", 2);
|
|
11827
|
-
|
|
11858
|
+
N([
|
|
11828
11859
|
x({ type: String, attribute: "system-icon-svg" })
|
|
11829
11860
|
], H.prototype, "systemIconSvg", 2);
|
|
11830
|
-
|
|
11861
|
+
N([
|
|
11831
11862
|
x({ type: String, attribute: "agent-icon-svg" })
|
|
11832
11863
|
], H.prototype, "agentIconSvg", 2);
|
|
11833
|
-
|
|
11864
|
+
N([
|
|
11834
11865
|
x({ type: String, attribute: "anchor-open-svg" })
|
|
11835
11866
|
], H.prototype, "anchorOpenSvg", 2);
|
|
11836
|
-
|
|
11867
|
+
N([
|
|
11837
11868
|
x({ type: String, attribute: "anchor-close-svg" })
|
|
11838
11869
|
], H.prototype, "anchorCloseSvg", 2);
|
|
11839
|
-
|
|
11870
|
+
N([
|
|
11840
11871
|
x({ type: String, attribute: "send-icon-svg" })
|
|
11841
11872
|
], H.prototype, "sendIconSvg", 2);
|
|
11842
|
-
|
|
11873
|
+
N([
|
|
11843
11874
|
x({ type: String, attribute: "attach-icon-svg" })
|
|
11844
11875
|
], H.prototype, "attachIconSvg", 2);
|
|
11845
|
-
|
|
11876
|
+
N([
|
|
11846
11877
|
x({ type: Boolean, attribute: "stream" })
|
|
11847
11878
|
], H.prototype, "stream", 2);
|
|
11848
|
-
|
|
11879
|
+
N([
|
|
11849
11880
|
x({ type: Boolean, attribute: "custom-request" })
|
|
11850
11881
|
], H.prototype, "customRequest", 2);
|
|
11851
|
-
|
|
11882
|
+
N([
|
|
11852
11883
|
x({ type: Boolean, attribute: "enable-file-upload" })
|
|
11853
11884
|
], H.prototype, "enableFileUpload", 2);
|
|
11854
|
-
|
|
11885
|
+
N([
|
|
11855
11886
|
x({ type: String, attribute: "upload-file-url" })
|
|
11856
11887
|
], H.prototype, "uploadFileUrl", 2);
|
|
11857
|
-
|
|
11888
|
+
N([
|
|
11858
11889
|
x({ type: Boolean, attribute: "open" })
|
|
11859
11890
|
], H.prototype, "open", 2);
|
|
11860
|
-
|
|
11891
|
+
N([
|
|
11861
11892
|
x({ type: Boolean, attribute: "always-open" })
|
|
11862
11893
|
], H.prototype, "alwaysOpen", 2);
|
|
11863
|
-
|
|
11894
|
+
N([
|
|
11864
11895
|
x({ type: String, attribute: "prefilled-form-fields" })
|
|
11865
11896
|
], H.prototype, "prefilledFormFields", 2);
|
|
11866
|
-
|
|
11897
|
+
N([
|
|
11867
11898
|
x({ type: Boolean })
|
|
11868
11899
|
], H.prototype, "loading", 2);
|
|
11869
|
-
|
|
11900
|
+
N([
|
|
11870
11901
|
x({ type: Boolean })
|
|
11871
11902
|
], H.prototype, "showSetting", 2);
|
|
11872
|
-
|
|
11903
|
+
N([
|
|
11873
11904
|
x({ type: Boolean })
|
|
11874
11905
|
], H.prototype, "showAuthAlert", 2);
|
|
11875
|
-
|
|
11906
|
+
N([
|
|
11876
11907
|
xe("cb-message-list")
|
|
11877
11908
|
], H.prototype, "_messageList", 2);
|
|
11878
|
-
H =
|
|
11909
|
+
H = N([
|
|
11879
11910
|
K("enegelai-bot")
|
|
11880
11911
|
], H);
|
|
11881
11912
|
export {
|