@vouchfor/embeds 0.0.0-experiment.8cafed9 → 0.0.0-experiment.8f3c7fb

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.
Files changed (59) hide show
  1. package/dist/es/embeds.js +1146 -1
  2. package/dist/es/embeds.js.map +1 -1
  3. package/dist/es/src/components/PlayerEmbed/index.d.ts +8 -7
  4. package/dist/es/src/components/PlayerEmbed/tests/data.d.ts +2 -1
  5. package/dist/es/src/components/PlayerEmbed/tests/media-data.d.ts +19 -0
  6. package/dist/iife/dialog-embed/embed.iife.js +2610 -318
  7. package/dist/iife/dialog-embed/embed.iife.js.map +1 -1
  8. package/dist/iife/embeds.iife.js +2610 -318
  9. package/dist/iife/embeds.iife.js.map +1 -1
  10. package/dist/iife/player-embed/embed.iife.js +2587 -295
  11. package/dist/iife/player-embed/embed.iife.js.map +1 -1
  12. package/package.json +12 -11
  13. package/src/components/PlayerEmbed/MultiEmbed.stories.ts +135 -0
  14. package/src/components/PlayerEmbed/PlayerEmbed.stories.ts +15 -1
  15. package/src/components/PlayerEmbed/controllers/tracking/index.ts +7 -7
  16. package/src/components/PlayerEmbed/index.ts +30 -18
  17. package/src/components/PlayerEmbed/tests/PlayerEmbed.spec.ts +14 -7
  18. package/src/components/PlayerEmbed/tests/data.ts +120 -76
  19. package/src/components/PlayerEmbed/tests/media-data.ts +22 -0
  20. package/dist/es/browser-DfO9Pnu7.js +0 -921
  21. package/dist/es/browser-DfO9Pnu7.js.map +0 -1
  22. package/dist/es/index-5G8orrrP.js +0 -2609
  23. package/dist/es/index-5G8orrrP.js.map +0 -1
  24. package/dist/iife/dialog-embed/browser-DCzTItVw.js +0 -429
  25. package/dist/iife/dialog-embed/browser-DCzTItVw.js.map +0 -1
  26. package/dist/iife/dialog-embed/embed.js +0 -5
  27. package/dist/iife/dialog-embed/embed.js.map +0 -1
  28. package/dist/iife/dialog-embed/index-CgdXxP5z.js +0 -27698
  29. package/dist/iife/dialog-embed/index-CgdXxP5z.js.map +0 -1
  30. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -20
  31. package/dist/iife/dialog-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -36
  32. package/dist/iife/dialog-embed/src/components/DialogEmbed/index.d.ts +0 -38
  33. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
  34. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
  35. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
  36. package/dist/iife/dialog-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
  37. package/dist/iife/dialog-embed/src/components/PlayerEmbed/index.d.ts +0 -74
  38. package/dist/iife/dialog-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
  39. package/dist/iife/dialog-embed/src/index.d.ts +0 -2
  40. package/dist/iife/dialog-embed/src/utils/env.d.ts +0 -12
  41. package/dist/iife/dialog-embed/src/utils/events.d.ts +0 -2
  42. package/dist/iife/player-embed/browser-BBSMddCs.js +0 -429
  43. package/dist/iife/player-embed/browser-BBSMddCs.js.map +0 -1
  44. package/dist/iife/player-embed/embed.js +0 -5
  45. package/dist/iife/player-embed/embed.js.map +0 -1
  46. package/dist/iife/player-embed/index-BGZl_iqR.js +0 -27255
  47. package/dist/iife/player-embed/index-BGZl_iqR.js.map +0 -1
  48. package/dist/iife/player-embed/src/components/DialogEmbed/DialogOverlay.d.ts +0 -20
  49. package/dist/iife/player-embed/src/components/DialogEmbed/DialogPortal.d.ts +0 -36
  50. package/dist/iife/player-embed/src/components/DialogEmbed/index.d.ts +0 -38
  51. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/event-forwarder.d.ts +0 -15
  52. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/fetcher.d.ts +0 -14
  53. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/index.d.ts +0 -36
  54. package/dist/iife/player-embed/src/components/PlayerEmbed/controllers/tracking/utils.d.ts +0 -17
  55. package/dist/iife/player-embed/src/components/PlayerEmbed/index.d.ts +0 -74
  56. package/dist/iife/player-embed/src/components/PlayerEmbed/tests/data.d.ts +0 -3
  57. package/dist/iife/player-embed/src/index.d.ts +0 -2
  58. package/dist/iife/player-embed/src/utils/env.d.ts +0 -12
  59. package/dist/iife/player-embed/src/utils/events.d.ts +0 -2
@@ -1,2609 +0,0 @@
1
- import { css, LitElement, html } from 'lit';
2
- import { property, state, customElement } from 'lit/decorators.js';
3
- import { ifDefined } from 'lit/directives/if-defined.js';
4
- import { createRef, ref } from 'lit/directives/ref.js';
5
- import { Task } from '@lit/task';
6
- import { v4 } from 'uuid';
7
- import '@vouchfor/media-player';
8
- import { styleMap } from 'lit/directives/style-map.js';
9
- import { classMap } from 'lit/directives/class-map.js';
10
- import '@a11y/focus-trap';
11
-
12
- function forwardEvent(type, fromElement, toElement) {
13
- function forwarder(event) {
14
- toElement.dispatchEvent(new CustomEvent(event.type, event));
15
- }
16
- fromElement.addEventListener(type, forwarder);
17
- return () => {
18
- fromElement.removeEventListener(type, forwarder);
19
- };
20
- }
21
-
22
- class EventForwardController {
23
- constructor(host, events) {
24
- this._events = [];
25
- this._cleanup = [];
26
- this._forwardElementRef = createRef();
27
- this.host = host;
28
- this._events = events;
29
- host.addController(this);
30
- }
31
- register() {
32
- return ref(this._forwardElementRef);
33
- }
34
- hostConnected() {
35
- requestAnimationFrame(() => {
36
- this._events.forEach((event) => {
37
- if (this._forwardElementRef.value) {
38
- this._cleanup.push(forwardEvent(event, this._forwardElementRef.value, this.host));
39
- }
40
- });
41
- });
42
- }
43
- hostDisconnected() {
44
- this._cleanup.forEach((fn) => {
45
- fn();
46
- });
47
- this._cleanup = [];
48
- }
49
- }
50
-
51
- const devVideoUrl = "https://d2rxhdlm2q91uk.cloudfront.net";
52
- const stagingVideoUrl = "https://d1ix11aj5kfygl.cloudfront.net";
53
- const prodVideoUrl = "https://d157jlwnudd93d.cloudfront.net";
54
- const devPublicApiUrl = "https://bshyfw4h5a.execute-api.ap-southeast-2.amazonaws.com/dev";
55
- const stagingPublicApiUrl = "https://gyzw7rpbq3.execute-api.ap-southeast-2.amazonaws.com/staging";
56
- const prodPublicApiUrl = "https://vfcjuim1l3.execute-api.ap-southeast-2.amazonaws.com/prod";
57
- const localEmbedApiUrl = "http://localhost:6060/v2";
58
- const devEmbedApiUrl = "https://embed-dev.vouchfor.com/v2";
59
- const stagingEmbedApiUrl = "https://embed-staging.vouchfor.com/v2";
60
- const prodEmbedApiUrl = "https://embed.vouchfor.com/v2";
61
- function getEnvUrls(env) {
62
- if (!["local", "dev", "staging", "prod"].includes(env)) {
63
- throw new Error(`Unknown environment: ${env}`);
64
- }
65
- if (env === "local") {
66
- return {
67
- videoUrl: devVideoUrl,
68
- publicApiUrl: devPublicApiUrl,
69
- embedApiUrl: localEmbedApiUrl
70
- };
71
- }
72
- if (env === "dev") {
73
- return {
74
- videoUrl: devVideoUrl,
75
- publicApiUrl: devPublicApiUrl,
76
- embedApiUrl: devEmbedApiUrl
77
- };
78
- }
79
- if (env === "staging") {
80
- return {
81
- videoUrl: stagingVideoUrl,
82
- publicApiUrl: stagingPublicApiUrl,
83
- embedApiUrl: stagingEmbedApiUrl
84
- };
85
- }
86
- if (env === "prod") {
87
- return {
88
- videoUrl: prodVideoUrl,
89
- publicApiUrl: prodPublicApiUrl,
90
- embedApiUrl: prodEmbedApiUrl
91
- };
92
- }
93
- }
94
-
95
- class FetcherController {
96
- constructor(host) {
97
- this._fetching = false;
98
- this.getVouch = async (env, apiKey, vouchId) => {
99
- const { embedApiUrl } = getEnvUrls(env);
100
- const cacheCheck = v4();
101
- const res = await fetch(`${embedApiUrl}/vouches/${vouchId}`, {
102
- method: "GET",
103
- headers: [
104
- ["X-Api-Key", apiKey],
105
- ["X-Cache-Check", cacheCheck]
106
- ]
107
- });
108
- const vouch = await res.json();
109
- this.host.dispatchEvent(new CustomEvent("vouch:loaded", { detail: vouch?.id }));
110
- const resCacheCheck = res?.headers?.get("X-Cache-Check");
111
- if (resCacheCheck !== cacheCheck) {
112
- fetch(`${embedApiUrl}/vouches/${vouchId}`, {
113
- method: "GET",
114
- headers: [
115
- ["X-Api-Key", apiKey],
116
- ["Cache-Control", "max-age=0"]
117
- ]
118
- });
119
- }
120
- return vouch;
121
- };
122
- this.getTemplate = async (env, apiKey, templateId) => {
123
- const { embedApiUrl } = getEnvUrls(env);
124
- const cacheCheck = v4();
125
- const res = await fetch(`${embedApiUrl}/templates/${templateId}`, {
126
- method: "GET",
127
- headers: [
128
- ["X-Api-Key", apiKey],
129
- ["X-Cache-Check", cacheCheck]
130
- ]
131
- });
132
- const template = await res.json();
133
- const resCacheCheck = res?.headers?.get("X-Cache-Check");
134
- if (resCacheCheck !== cacheCheck) {
135
- fetch(`${embedApiUrl}/templates/${templateId}`, {
136
- method: "GET",
137
- headers: [
138
- ["X-Api-Key", apiKey],
139
- ["Cache-Control", "max-age=0"]
140
- ]
141
- });
142
- }
143
- return template;
144
- };
145
- this.host = host;
146
- new Task(
147
- this.host,
148
- async ([env, apiKey, data, vouchId, templateId]) => {
149
- try {
150
- host.vouch = void 0;
151
- host.template = void 0;
152
- if (data) {
153
- let template;
154
- if (templateId) {
155
- this.fetching = true;
156
- template = await this.getTemplate(env, apiKey, templateId);
157
- }
158
- this._vouch = data;
159
- host.template = template ?? data?.settings?.template?.instance;
160
- } else if (vouchId) {
161
- this.fetching = true;
162
- const [vouch, template] = await Promise.all([
163
- this.getVouch(env, apiKey, vouchId),
164
- templateId ? this.getTemplate(env, apiKey, templateId) : null
165
- ]);
166
- this._vouch = vouch;
167
- host.template = template ?? vouch?.settings?.template?.instance;
168
- }
169
- } finally {
170
- this.fetching = false;
171
- }
172
- },
173
- () => [host.env, host.apiKey, host.data, host.vouchId, host.templateId]
174
- );
175
- new Task(
176
- this.host,
177
- ([vouch, questions]) => {
178
- host.vouch = vouch ? {
179
- ...vouch,
180
- questions: {
181
- items: vouch?.questions.items.filter((_, index) => !questions?.length || questions?.includes(index + 1))
182
- }
183
- } : void 0;
184
- },
185
- () => [this._vouch, host.questions]
186
- );
187
- }
188
- set fetching(value) {
189
- if (this._fetching !== value) {
190
- this._fetching = value;
191
- this.host.requestUpdate();
192
- }
193
- }
194
- get fetching() {
195
- return this._fetching;
196
- }
197
- }
198
-
199
- const copyProperty$1 = (to, from, property, ignoreNonConfigurable) => {
200
- // `Function#length` should reflect the parameters of `to` not `from` since we keep its body.
201
- // `Function#prototype` is non-writable and non-configurable so can never be modified.
202
- if (property === 'length' || property === 'prototype') {
203
- return;
204
- }
205
-
206
- // `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.
207
- if (property === 'arguments' || property === 'caller') {
208
- return;
209
- }
210
-
211
- const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
212
- const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
213
-
214
- if (!canCopyProperty$1(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
215
- return;
216
- }
217
-
218
- Object.defineProperty(to, property, fromDescriptor);
219
- };
220
-
221
- // `Object.defineProperty()` throws if the property exists, is not configurable and either:
222
- // - one its descriptors is changed
223
- // - it is non-writable and its value is changed
224
- const canCopyProperty$1 = function (toDescriptor, fromDescriptor) {
225
- return toDescriptor === undefined || toDescriptor.configurable || (
226
- toDescriptor.writable === fromDescriptor.writable
227
- && toDescriptor.enumerable === fromDescriptor.enumerable
228
- && toDescriptor.configurable === fromDescriptor.configurable
229
- && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)
230
- );
231
- };
232
-
233
- const changePrototype$1 = (to, from) => {
234
- const fromPrototype = Object.getPrototypeOf(from);
235
- if (fromPrototype === Object.getPrototypeOf(to)) {
236
- return;
237
- }
238
-
239
- Object.setPrototypeOf(to, fromPrototype);
240
- };
241
-
242
- const wrappedToString$1 = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;
243
-
244
- const toStringDescriptor$1 = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');
245
- const toStringName$1 = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');
246
-
247
- // We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.
248
- // We use `bind()` instead of a closure for the same reason.
249
- // Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.
250
- const changeToString$1 = (to, from, name) => {
251
- const withName = name === '' ? '' : `with ${name.trim()}() `;
252
- const newToString = wrappedToString$1.bind(null, withName, from.toString());
253
- // Ensure `to.toString.toString` is non-enumerable and has the same `same`
254
- Object.defineProperty(newToString, 'name', toStringName$1);
255
- const {writable, enumerable, configurable} = toStringDescriptor$1; // We destructue to avoid a potential `get` descriptor.
256
- Object.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});
257
- };
258
-
259
- function mimicFunction$1(to, from, {ignoreNonConfigurable = false} = {}) {
260
- const {name} = to;
261
-
262
- for (const property of Reflect.ownKeys(from)) {
263
- copyProperty$1(to, from, property, ignoreNonConfigurable);
264
- }
265
-
266
- changePrototype$1(to, from);
267
- changeToString$1(to, from, name);
268
-
269
- return to;
270
- }
271
-
272
- const cacheStore$1 = new WeakMap();
273
- const cacheTimerStore = new WeakMap();
274
- /**
275
- [Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.
276
-
277
- @param fn - The function to be memoized.
278
-
279
- @example
280
- ```
281
- import memoize from 'memoize';
282
-
283
- let index = 0;
284
- const counter = () => ++index;
285
- const memoized = memoize(counter);
286
-
287
- memoized('foo');
288
- //=> 1
289
-
290
- // Cached as it's the same argument
291
- memoized('foo');
292
- //=> 1
293
-
294
- // Not cached anymore as the arguments changed
295
- memoized('bar');
296
- //=> 2
297
-
298
- memoized('bar');
299
- //=> 2
300
- ```
301
- */
302
- function memoize(fn, { cacheKey, cache = new Map(), maxAge, } = {}) {
303
- if (maxAge === 0) {
304
- return fn;
305
- }
306
- if (typeof maxAge === 'number') {
307
- const maxSetIntervalValue = 2147483647;
308
- if (maxAge > maxSetIntervalValue) {
309
- throw new TypeError(`The \`maxAge\` option cannot exceed ${maxSetIntervalValue}.`);
310
- }
311
- if (maxAge < 0) {
312
- throw new TypeError('The `maxAge` option should not be a negative number.');
313
- }
314
- }
315
- const memoized = function (...arguments_) {
316
- const key = cacheKey ? cacheKey(arguments_) : arguments_[0];
317
- const cacheItem = cache.get(key);
318
- if (cacheItem) {
319
- return cacheItem.data;
320
- }
321
- const result = fn.apply(this, arguments_);
322
- cache.set(key, {
323
- data: result,
324
- maxAge: maxAge ? Date.now() + maxAge : Number.POSITIVE_INFINITY,
325
- });
326
- if (typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY) {
327
- const timer = setTimeout(() => {
328
- cache.delete(key);
329
- }, maxAge);
330
- timer.unref?.();
331
- const timers = cacheTimerStore.get(fn) ?? new Set();
332
- timers.add(timer);
333
- cacheTimerStore.set(fn, timers);
334
- }
335
- return result;
336
- };
337
- mimicFunction$1(memoized, fn, {
338
- ignoreNonConfigurable: true,
339
- });
340
- cacheStore$1.set(memoized, cache);
341
- return memoized;
342
- }
343
-
344
- var loadYoga = (() => {
345
- var _scriptDir = import.meta.url;
346
-
347
- return (
348
- function(loadYoga) {
349
- loadYoga = loadYoga || {};
350
-
351
-
352
- var h;h||(h=typeof loadYoga !== 'undefined' ? loadYoga : {});var aa,ca;h.ready=new Promise(function(a,b){aa=a;ca=b;});var da=Object.assign({},h),q="";"undefined"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);0!==q.indexOf("blob:")?q=q.substr(0,q.replace(/[?#].*/,"").lastIndexOf("/")+1):q="";var ea=h.print||console.log.bind(console),v=h.printErr||console.warn.bind(console);Object.assign(h,da);da=null;var w;h.wasmBinary&&(w=h.wasmBinary);
353
- h.noExitRuntime||!0;"object"!=typeof WebAssembly&&x("no native wasm support detected");var fa,ha=!1;function z(a,b,c){c=b+c;for(var d="";!(b>=c);){var e=a[b++];if(!e)break;if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else {var g=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|g:(e&7)<<18|f<<12|g<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023));}}else d+=String.fromCharCode(e);}return d}
354
- var ia,ja,A,C,ka,D,E,la,ma;function na(){var a=fa.buffer;ia=a;h.HEAP8=ja=new Int8Array(a);h.HEAP16=C=new Int16Array(a);h.HEAP32=D=new Int32Array(a);h.HEAPU8=A=new Uint8Array(a);h.HEAPU16=ka=new Uint16Array(a);h.HEAPU32=E=new Uint32Array(a);h.HEAPF32=la=new Float32Array(a);h.HEAPF64=ma=new Float64Array(a);}var oa,pa=[],qa=[],ra=[];function sa(){var a=h.preRun.shift();pa.unshift(a);}var F=0,G=null;
355
- function x(a){if(h.onAbort)h.onAbort(a);a="Aborted("+a+")";v(a);ha=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");ca(a);throw a;}function ua(a){return a.startsWith("data:application/octet-stream;base64,")}var H;H="data:application/octet-stream;base64,AGFzbQEAAAABrAM2YAF/AGABfwF/YAJ/fwBgA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWAAAGADf398AGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAJ/fwF9YAV/f39/fwBgAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBH9/fX8AYAZ/fH9/f38Bf2ACf30AYAR/fHx/AGAIf39/f39/f38AYA1/f39/f39/f39/f39/AGAKf39/f39/f39/fwBgBX9/f39/AXxgBH9/fX0BfWAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gBn9/fX1/fwBgAn5/AX9gA399fQF9YAN/f30BfWABfAF8YAN/fHwAYAV/f319fQBgBX9/fX19AX1gDX99f31/fX99fX19fX8Bf2ALf39/f39/f319fX0AYAh/f39/f399fQBgBH9/fn4AYAd/f39/f39/AX9gAnx/AXxgBX9/fHx/AGADf39/AXxgBH9/f3wAYAN/f30AYAZ/f31/fX8BfwK1AR4BYQFhABwBYQFiAAMBYQFjAAgBYQFkABUBYQFlABIBYQFmAB0BYQFnAAABYQFoAB4BYQFpAAMBYQFqAAABYQFrABYBYQFsAAoBYQFtAAUBYQFuAAMBYQFvAAIBYQFwABYBYQFxAAYBYQFyAAABYQFzAB8BYQF0AAoBYQF1AA0BYQF2ABUBYQF3AAEBYQF4AAMBYQF5ABcBYQF6AAEBYQFBAAIBYQFCABIBYQFDAAIBYQFEAAADiwKJAgEDEQ8PBwcHBwgAAwoSBiAKBgIGIQcYDwMTIgUGIxMHBwMkAhcDAwoKGBETCg8KAwMBCAEAAAUmAQEGBwEDAgIJDAAAJwgABQAHBQAoKQAAASoHACsBLAcHLQMuCAUKAS8NMAMBCAEAAQIGCgIBAgEFAgAFCAICAgIAAQ4BAQUCAhoDDg0NBhQBAhkUBgEIARAAAAAFMQ8yDAUGCTMFAQMFDg4ONAEDAQEBAwYBATUBAgwMDAILCwsLCwsbAQAAAAIAEAIFAQECAwERAwwLAgICAgICCwsCAQEDAQEBAQEBAwEJAgkJCQQEBAQEBAQEBAAEBAAEBAQEAAQEBAICAgkJAgICAgICCQkEBwFwAcwB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AkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAAAgBSAFWxsLcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QaAkaigCACACEC5DAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akHuAGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDQDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALcAyIADQALCyADQRBqJAALhQECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBayIBIABCCoAiBUL2AX4gAHynQTByOgAAIABC/////58BViECIAUhACACDQALCyAFpyICBEADQCABQQFrIgEgAkEKbiIDQfYBbCACakEwcjoAACACQQlLIQQgAyECIAQNAAsLIAELNwECf0EEEB4iAiABNgIAQQQQHiIDIAE2AgBB/TkgAEGeOkG6J0G3ASACQZ46Qb4nQbgBIAMQBwteAQF/IABBADYCDCAAIAM2AhACQCABBEAgAUGAgICABE8NASABQQJ0EB4hBAsgACAENgIAIAAgBCACQQJ0aiICNgIIIAAgBCABQQJ0ajYCDCAAIAI2AgQgAA8LEFAAC0cBAX8gAi8ABiIDQQdxBEAgACABQegAaiADEB8PCyABQegAaiEBIAIvAA4iA0EHcQRAIAAgASADEB8PCyAAIAEgAi8AEBAfC0cBAX8gAi8AAiIDQQdxBEAgACABQegAaiADEB8PCyABQegAaiEBIAIvAA4iA0EHcQRAIAAgASADEB8PCyAAIAEgAi8AEBAfC3sAAkACQAJAAkAgA0EBaw4CAAECCyACLwAKIgNBB3FFDQEMAgsgAi8ACCIDQQdxRQ0ADAELIAIvAAQiA0EHcQRADAELIAFB6ABqIQEgAi8ADCID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BQUgAC0AFUEEdgtBBUYEQCAALQAUQQhxDQULIAEtAABBAnENBCACIAEgAhshAgsgBEEBaiIEIAdHDQELCyACDQILIAAqApQDIQgMAgsgASECCyACEEkgAioCnAOSIQgLIANBEGokACAIC1AAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBMGoQRA8LIAAgASABQTBqIAMQRQ8LIAAgASABQTBqEEMPCxAnAAsgACABIAFBMGogAxBGC3kCAX8BfSMAQRBrIgMkACADQQhqIAAgAUECdEGwJGooAgAgAhBMQwAAwH8hBAJAAkACQCADLQAMQQFrDgIAAQILIAMqAgghBAwBCyADKgIIQwAAAACUQwrXIzyUIQQLIANBEGokACAEQwAAAACXQwAAAAAgBCAEWxsLVAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUHCAGoQRA8LIAAgASABQcIAaiADEEUPCyAAIAEgAUHCAGoQQw8LECcACyAAIAEgAUHCAGogAxBGC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQfYAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQNANAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAtwDIgANAAsLIANBEGokAAvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akHyAGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDQDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALcAyIADQALCyADQRBqJAALCgAgAEEwa0EKSQsFABACAAsEACAACxQAIAAEQCAAIAAoAgAoAgQRAAALCysBAX8gACgCDCIBBEAgARAoCyAAKAIAIgEEQCAAIAE2AgQgARAoCyAAECgL8QMBA38jAEEQayIDJAAgAEIANwIEIABBwSA7ABUgAEIANwIMIABCgICAgICAgAI3AhggACAALQAXQfgBcToAFyAAIAAtAABB4AFxQQFyOgAAIAAgAC0AFEGAAXE6ABQgAEEgakEAQc4AEC8aIABCADcCkAEgAEGEgBA2AW4gAEIANwFyIABBADYBeiAAQQA6AKQBIABBADYCoAEgAEKAgICAgICA4P8ANwKYASAAQagBakEAQcQBEC8aIABB7AJqIQQgAEGsAWohAgNAIAJCgICA/IuAgMC/fzcCECACQoGAgIAQNwIIIAJCgICA/IuAgMC/fzcCACACQRhqIgIgBEcNAAsgAEKAgID8i4CAwL9/NwLsAiAAQoCAgPyLgIDAv383AvwCIABCgYCAgBA3AvQCIABCgICA/oeAgOD/ADcCkAMgAEKAgID+h4CA4P8ANwKIAyAAQYQDaiICIAItAABB+AFxOgAAIABBmANqQQBB1AAQLxogAEEAOgD8AyAAQYCAgP4HNgL4AyAAQQA6APQDIABBgICA/gc2AvADIAAgATYC7AMgAQRAIAEtAAhBAXEEQCAAIAAtABRB8wFxQQhyOgAUIAAgAC8AFUHw/wNxQQRyOwAVCyADQRBqJAAgAA8LIANBtBk2AgAgAxBpECcACzMAIAAgAUECdEHAJGooAgBBAnRqKgKQAyAAQRRqIgAgAUEBIAIQJCAAIAFBASACECOSkguiBAIGfwJ+An9BCCEEAkACQCAAQUdLDQADQEEIIAQgBEEITRshBEGoOSkDACIHAn9BCCAAQQNqQXxxIABBCE0bIgBB/wBNBEAgAEEDdkEBawwBCyAAQR0gAGciAWt2QQRzIAFBAnRrQe4AaiAAQf8fTQ0AGkE/IABBHiABa3ZBAnMgAUEBdGtBxwBqIgEgAUE/TxsLIgOtiCIIUEUEQANAIAggCHoiCIghBwJ+IAMgCKdqIgNBBHQiAkGoMWooAgAiASACQaAxaiIGRwRAIAEgBCAAEFgiBQ0FIAEoAgQiBSABKAIINgIIIAEoAgggBTYCBCABIAY2AgggASACQaQxaiICKAIANgIEIAIgATYCACABKAIEIAE2AgggA0EBaiEDIAdCAYgMAQtBqDlBqDkpAwBCfiADrYmDNwMAIAdCAYULIghCAFINAAtBqDkpAwAhBwsCQCAHUEUEQEE/IAd5p2siBkEEdCICQagxaigCACEBAkAgB0KAgICABFQNAEHjACEDIAEgAkGgMWoiAkYNAANAIANFDQEgASAEIAAQWCIFDQUgA0EBayEDIAEoAggiASACRw0ACyACIQELIABBMGoQWg0BIAFFDQQgASAGQQR0QaAxaiICRg0EA0AgASAEIAAQWCIFDQQgASgCCCIBIAJHDQALDAQLIABBMGoQWkUNAwtBACEFIAQgBEEBa3ENASAAQUdNDQALCyAFDAELQQALC0wBAX9BASEBAkAgAC0AHkEHcQ0AIAAtACJBB3ENACAALQAuQQdxDQAgAC0AKkEHcQ0AIAAtACZBB3ENACAALQAoQQdxQQBHIQELIAELoAMBA38gASAAQQRqIgRqQQFrQQAgAWtxIgUgAmogACAAKAIAIgFqQQRrTQR/IAAoAgQiAyAAKAIINgIIIAAoAgggAzYCBCAEIAVHBEAgACAAQQRrKAIAQX5xayIDIAUgBGsiBCADKAIAaiIFNgIAIAVBfHEgA2pBBGsgBTYCACAAIARqIgAgASAEayIBNgIACwJAIAEgAkEYak8EQCAAIAJqQQhqIgMgASACa0EIayIBNgIAIAFBfHEgA2pBBGsgAUEBcjYCACADAn8gAygCAEEIayIBQf8ATQRAIAFBA3ZBAWsMAQsgAWchBCABQR0gBGt2QQRzIARBAnRrQe4AaiABQf8fTQ0AGkE/IAFBHiAEa3ZBAnMgBEEBdGtBxwBqIgEgAUE/TxsLIgFBBHQiBEGgMWo2AgQgAyAEQagxaiIEKAIANgIIIAQgAzYCACADKAIIIAM2AgRBqDlBqDkpAwBCASABrYaENwMAIAAgAkEIaiIBNgIAIAFBfHEgAGpBBGsgATYCAAwBCyAAIAFqQQRrIAE2AgALIABBBGoFIAMLC3ACAX8BfSMAQRBrIgQkACAEQQhqIAAgAUECdEGwJGooAgAgAhAuQwAAwH8hBQJAAkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAAAgBSAFWxsL5gMBBX8Cf0HwLigCACIBIABBB2pBeHEiA2ohAgJAIANBACABIAJPGw0AIAI/AEEQdEsEQCACEBZFDQELQfAuIAI2AgAgAQwBC0G4OkEwNgIAQX8LIgJBf0cEQCAAIAJqIgNBEGsiAUEQNgIMIAFBEDYCAAJAAn9BoDkoAgAiAAR/IAAoAggFQQALIAJGBEAgAiACQQRrKAIAQX5xayIEQQRrKAIAIQUgACADNgIIQXAgBCAFQX5xayIAIAAoAgBqQQRrLQAAQQFxRQ0BGiAAKAIEIgMgACgCCDYCCCAAKAIIIAM2AgQgACABIABrIgE2AgAMAgsgAkEQNgIMIAJBEDYCACACIAM2AgggAiAANgIEQaA5IAI2AgBBEAsgAmoiACABIABrIgE2AgALIAFBfHEgAGpBBGsgAUEBcjYCACAAAn8gACgCAEEIayIBQf8ATQRAIAFBA3ZBAWsMAQsgAUEdIAFnIgNrdkEEcyADQQJ0a0HuAGogAUH/H00NABpBPyABQR4gA2t2QQJzIANBAXRrQccAaiIBIAFBP08bCyIBQQR0IgNBoDFqNgIEIAAgA0GoMWoiAygCADYCCCADIAA2AgAgACgCCCAANgIEQag5Qag5KQMAQgEgAa2GhDcDAAsgAkF/RwvNAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akEgaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQNANAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAtwDIgANAAsLIANBEGokAAtAAQF/AkBB6DktAABBAXEEQEHkOSgCACECDAELQQFBwCUQDCECQeg5QQE6AABB5DkgAjYCAAsgAiAAIAFBABATC8cBAgR/An0jAEEQayICJAAgAkEIaiAAQfwAaiIEIABBHmoiBS8BABAfQQEhAwJAAkAgAioCCCIHIAEqAgAiBlwEQCAHIAdbBEAgAS0ABCEBDAILIAYgBlwhAwsgAS0ABCEBIANFDQAgAi0ADCABQf8BcUYNAQsgBCAFIAYgARA0A0AgAC0AACIBQQRxDQEgACABQQRyOgAAIAAoAhAiAQRAIAAgAREAAAsgAEGAgID+BzYCnAEgACgC3AMiAA0ACwsgAkEQaiQACw8AIAEgACgCAGogAjkDAAsNACABIAAoAgBqKwMACwsAIAAEQCAAECgLCwYAIAAQKAuWAwIDfgJ/IAC9IgJCNIinQf8PcSIEQf8PRgRAIABEAAAAAAAA8D+iIgAgAKMPCyACQgGGIgFCgICAgICAgPD/AFgEQCAARAAAAAAAAAAAoiAAIAFCgICAgICAgPD/AFEbDwsCfiAERQRAQQAhBCACQgyGIgFCAFkEQANAIARBAWshBCABQgGGIgFCAFkNAAsLIAJBASAEa62GDAELIAJC/////////weDQoCAgICAgIAIhAshASAEQf8HSgRAA0ACQCABQoCAgICAgIAIfSIDQgBTDQAgAyIBQgBSDQAgAEQAAAAAAAAAAKIPCyABQgGGIQEgBEEBayIEQf8HSg0AC0H/ByEECwJAIAFCgICAgICAgAh9IgNCAFMNACADIgFCAFINACAARAAAAAAAAAAAog8LIAFC/////////wdYBEADQCAEQQFrIQQgAUKAgICAgICABFQhBSABQgGGIQEgBQ0ACwsgAkKAgICAgICAgIB/gyABQoCAgICAgIAIfSAErUI0hoQgAUEBIARrrYggBEEAShuEvwuLAQEDfwNAIABBBHQiAUGkMWogAUGgMWoiAjYCACABQagxaiACNgIAIABBAWoiAEHAAEcNAAtBMBBaGkHUOUEGNgIAQdg5QQA2AgAQkgFB2DlBhDooAgA2AgBBhDpB1Dk2AgBBiDpBuwE2AgBBjDpBADYCABCDAUGMOkGEOigCADYCAEGEOkGIOjYCAAu9AwEHfyAABEAjAEEgayIGJAAgACgCACIBKALcAyIDBEAgAyABEGgaIAFBADYC3AMLIAEoAuQDIgIgASgC4AMiA0cEQEEBIAIgA2tBAnUiAiACQQFNGyEEQQAhAgNAIAMgAkECdGooAgBBADYC3AMgAkEBaiICIARHDQALCyABIAM2AuQDAkAgAyABQegDaiICKAIARg0AIAZBCGpBAEEAIAIQQiICKAIEIAEoAuQDIAEoAuADIgRrIgVrIgMgBCAFEDEhBSABKALgAyEEIAEgBTYC4AMgAiAENgIEIAEoAuQDIQUgASACKAIINgLkAyACIAU2AgggASgC6AMhByABIAIoAgw2AugDIAIgBDYCACACIAc2AgwgBCAFRwRAIAIgBSAEIAVrQQNqQXxxajYCCAsgBEUNACAEEGEgASgC4AMhAwsgAwRAIAEgAzYC5AMgAxBhCyABKAKUASEDIAFBADYClAEgAwRAIAMQUwsgARBhIAAoAgghASAAQQA2AgggAQRAIAEgASgCACgCBBEAAAsgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAGQSBqJAAgABAoCwupAQEBfyMAQRBrIgIkAAJ/IAEEQCABKAIAIQFBgAQQHiABEFQgAQ0BGiACQYkZNgIAIAIQaRAnAAtB0DktAABFBEBByDlCgICA/AM3AgBBwDlCADcCAEG4OUEDNgIAQdA5QQE6AABBvDlBvDktAABB/gFxOgAAQbQ5QQA2AgALQYAEEB5BtDkQVAshASAAQgA3AgQgACABNgIAIAEgADYCBCACQRBqJAAgAAsbAQF/IAAEQCAAKAIAIgEEQCABECgLIAAQKAsLcQEBfyMAQRBrIgQkAAJ9QwAAAAAgAC8AFUGA4ABxRQ0AGiAEQQhqIABBFGoiAEEBIAJBAkZBAXQgAUH+AXFBAkcbIAIQLiAELQAMBEAgACABIAIgAxB2DAELIAAgASACIAMQdYwLIQMgBEEQaiQAIAMLYAECfwJAAkAgACgC4AMiAiAAKALkAyIDRg0AA0AgAigCACABRg0BIAJBBGoiAiADRw0ACwwBCyACIANGDQAgAiACQQRqIgEgAyABaxAxGiAAIANBBGs2AuQDQQEPC0EACyYBAX8jAEEQayIBJAAgASAANgIMQfguQZwkIAAQOhogAUEQaiQAC4cDAwN/BXwCfSAAKgKcA7siBiACoCECIAAqApgDuyIHIAGgIQggACgC7AMqAhQiC0MAAAAAXARAIAAqAowDuyEJIAAqAogDIQwgACAHIAu7IgFBACAALQAAQRBxIgNBBHYiBBAyOAKYAyAAIAYgAUEAIAQQMjgCnAMgASAMuyIHohBiIgYgBmIiBEUgBplELUMc6+I2Gj9jcUUEQCAEIAZEAAAAAAAA8L+gmUQtQxzr4jYaP2NFciEFCyACIAmgIQogCCAHoCEHAn8gASAJohBiIgYgBmIiBEUEQEEAIAaZRC1DHOviNho/Yw0BGgsgBCAGRAAAAAAAAPC/oJlELUMc6+I2Gj9jRXILIQQgACAHIAEgA0EARyIDIAVxIAMgBUEBc3EQMiAIIAFBACADEDKTOAKIAyAAIAogASADIARxIAMgBEEBc3EQMiACIAFBACADEDKTOAKMAwsgACgC4AMiAyAAKALkAyIARwRAA0AgAygCACAIIAIQaiADQQRqIgMgAEcNAAsLC40CAQZ/IABBFGohCEEDIQUgAC0AFEECdkEDcSEGAkACfwJAIAFBASAAKALcAxsiCUECRgRAAkAgBkECaw4CBAACC0ECIQUMAwtBAiEFQQAgBkEBSw0BGgsgBQshByAGIQULIAAgBSAJIAIQZyECIAAgByAJIAMQZyEDIABBmANqIgBBASABQQJGQQF0IgYgBUECSSIJG0ECdGogAiAIIAUgASAEECSSOAIAIABBAyABQQJHQQF0IgogCRtBAnRqIAIgCCAFIAEgBBAjkjgCACAAIAZBASAHQQF2IgUbQQJ0aiADIAggByABIAQQJJI4AgAgACAKQQMgBRtBAnRqIAMgCCAHIAEgBBAjkjgCAAu/AgEDfyMAQcACayIBJAAgAUEAQcACEC8iAUGAgID+BzYCBCABQRBqQQBBxAEQLxogAUHUAWohAyABQRRqIQIDQCACQoCAgPyLgIDAv383AhAgAkKBgICAEDcCCCACQoCAgPyLgIDAv383AgAgAkEYaiICIANHDQALIAFCgICA/IuAgMC/fzcC5AEgAUKBgICAEDcC3AEgAUKAgID8i4CAwL9/NwLUASABQoCAgP6HgIDg/wA3A/gBIAFCgICA/oeAgOD/ADcD8AEgASABLQDsAUH4AXE6AOwBIAFBgAJqQQBBwAAQLxogAEGYAWogAUHAAhAsGiAAQgA3AogDIAAgAC0AAEEBcjoAACAAEHEgACgC4AMiAiAAKALkAyIARwRAA0AgAigCABBsIAJBBGoiAiAARw0ACwsgAUHAAmokAAuuAgIKfwJ9IwBBIGsiASQAIAFBgAI7AB4gAEHuAGohByAAQfADaiEFIABB8gBqIQggAEH2AGohCSAAQfwAaiEDQQAhAANAIAFBEGogAyAJIAFBHmogBGotAAAiAkEBdCIEaiIGLwEAEB8CQAJAIAEtABRFDQAgAUEIaiADIAYvAQAQHyABIAMgBCAIai8BABAfIAEtAAwgAS0ABEcNAAJAIAEqAggiDCAMXCIKIAEqAgAiCyALXHJFBEAgDCALk4tDF7fROF0NAQwCCyAKRSALIAtbcg0BCyABQRBqIAMgBi8BABAfDAELIAFBEGogAyAEIAdqLwEAEB8LIAUgAkEDdGoiAiABLQAUOgAEIAIgASgCEDYCAEEBIQQgACECQQEhACACRQ0ACyABQSBqJAALMgACf0EAIAAvABVBgOAAcUGAwABGDQAaQQEgABA3QwAAAABcDQAaIAAQPEMAAAAAXAsLjwICAn8BfSMAQRBrIgUkACACIAOTIgIgAlsEQCAFQQhqIABB/ABqIgYgACABQQF0ai8BchAfAn0CQAJAAn0CQAJAIAUtAAxBAWsOAgABAwsgBSoCCAwBCyAFKgIIIASUQwrXIzyUCyIHIAdbDQELQwAAAAAMAQsgByADkwshByAFQQhqIAYgACABQQF0ai8BdhAfIAcCfQJAAkACfQJAAkAgBS0ADEEBaw4CAAEDCyAFKgIIDAELIAUqAgggBJRDCtcjPJQLIgQgBFsNAQtD//9/fwwBCyAEIAOTCyIDIAIgAiADXhsiAiACIAddGyAHIAIgAiACXBsgAiACWyAHIAdbcRshAgsgBUEQaiQAIAILdgIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QaAkaigCACACEEpDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAAJdDAAAAACAFIAVbGwuRAwEIfwJAIAAoAuADIgUgACgC5AMiB0cEQANAIAAgBSgCACICKALcA0cEQAJAIAAoAuwDKAIAIgEEQCACIAAgBiABEQYAIgENAQtBgAQQHiIBIAIoAhA2AhAgASACKQIINwIIIAEgAikCADcCACABQRRqIAJBFGpB6AAQLBogAUIANwKQASABQfwAaiIDQQA7AQAgAyACQfwAahCUASABQZgBaiACQZgBakHIAhAsGiABQQA2AugDIAFCADcC4AMgAigC5AMiAyACKALgAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuQDIAEgAzYC4AMgASADIARqNgLoAyACKALgAyIEIAIoAuQDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLkAwsgASACKQLsAzcC7AMgASACKAL8AzYC/AMgASACKQL0AzcC9AMgAUEANgLcAwsgBSABNgIAIAEgADYC3AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgAL3wUDBH8FfQF8IAlDAAAAAF0gCEMAAAAAXXIEfyANBSAFIRIgASETIAMhFCAHIREgDCoCFCIVQwAAAABcBEAgAbsgFbsiFkEAQQAQMiETIAO7IBZBAEEAEDIhFCAFuyAWQQBBABAyIRIgB7sgFkEAQQAQMiERCwJ/QQAgACAERw0AGiASIBOTi0MXt9E4XSATIBNcIg0gEiASXHJFDQAaQQAgEiASWw0AGiANCyEMAkAgAiAGRw0AIBQgFFwiDSARIBFcckUEQCARIBSTi0MXt9E4XSEPDAELIBEgEVsNACANIQ8LQQEhDkEBIQ0CQCAMDQAgASAKkyEBAkAgAEUEQCABIAFcIgAgCCAIXHJFBEBBACEMIAEgCJOLQxe30ThdRQ0CDAMLQQAhDCAIIAhbDQEgAA0CDAELIABBAkYhDCAAQQJHDQAgBEEBRw0AIAEgCGANAQJAIAggCFwiACABIAFcckUEQCABIAiTi0MXt9E4XUUNAQwDC0EAIQ0gASABWw0CQQEhDSAADQILQQAhDQwBC0EAIQ0gCCAIXCIAIAEgBV1Fcg0AIAxFIAEgAVwiECAFIAVcciAEQQJHcnINAEEBIQ0gASAIYA0AQQAhDSAAIBByDQAgASAIk4tDF7fROF0hDQsCQCAPDQAgAyALkyEBAkACQCACRQRAIAEgAVwiAiAJIAlcckUEQEEAIQAgASAJk4tDF7fROF1FDQIMBAtBACEAIAkgCVsNASACDQMMAQsgAkECRiEAIAJBAkcgBkEBR3INACABIAlgBEAMAwsgCSAJXCIAIAEgAVxyRQRAIAEgCZOLQxe30ThdRQ0CDAMLQQAhDiABIAFbDQJBASEOIAANAgwBCyAJIAlcIgIgASAHXUVyDQAgAEUgASABXCIEIAcgB1xyIAZBAkdycg0AIAEgCWANAUEAIQ4gAiAEcg0BIAEgCZOLQxe30ThdIQ4MAQtBACEOCyANIA5xCwuZAQEDfwJAIAAtABRBCHFFDQBBASEBIAAvABVB8AFxQdAARg0AQQAhASAAKALkAyICIAAoAuADIgNGDQBBASACIANrQQJ1IgAgAEEBTRshAkEAIQADQCADIABBAnRqKAIAIgEvABUgAS0AF0EQdHIiAUGA4ABxQYDAAEcgAUGAHnFBgApGcSIBDQEgAEEBaiIAIAJHDQALCyABC/8SAg1/Cn0jAEEQayIOJAAgASgC4AMiFCABKALkAyIVRwRAIANBASADGyEWIABBFGohEyAFQQFqIRcDQAJAIBQoAgAiCy8AFSALLQAXQRB0ciIMQYCAEHENAAJAAn8CQAJAAkACQAJAAkACQCAMQQx2QQNxDgMBCQAJCyAJIRogCiEdIAEoAuwDLQAQQQRxRQRAIAAqApADIBNBAkEBECIgE0ECQQEQIZKTIRogACoClAMgE0EAQQEQIiATQQBBARAhkpMhHQsgC0EUaiENIAEtABRBAnZBA3EhDAJAAn8CQCADQQJHIhJFBEBBACEPQQMhEAJAIAxBAmsOAgQAAgtBAiEQDAMLQQIhEEEAIAxBAUsNARoLIBALIQ8gDCEQCyANQQJBASAaECQgDUECQQEgGhAjkiEfIA1BAEEBIBoQJCEeIA1BAEEBIBoQIyEgIAsqAvADIhghGQJAAkACQAJAIAstAPQDQQFrIgwOAgEAAgsgGCAalEMK1yM8lCEZCyAZQwAAAABgRQ0AQwAAwH8hGQJAAkACQCAMDgIAAQILIBghGQwBCyAYIBqUQwrXIzyUIRkLIB8gGZIhGQwBCyAOQQhqIA0gC0EyaiIMIAMQRkMAAMB/IRkgDi0ADEUNACAOQQhqIA0gDCADEEUgDi0ADEUNACAAKgKQAyEhIBNBAiADEDUhHCATQQIgAxBLIRsgDUECIAMgGhA+IRkgDUECIAMgGhBZIRggDkEIaiALQfwAaiIMIAsvAXIQHyAZIBiSIRkgISAcIBuSkyEYQwAAwH8hHAJAAkACQCAOLQAMQQFrDgIAAQILIA4qAgghHAwBCyAOKgIIIBqUQwrXIzyUIRwLIBggGZMhGCAOQQhqIAwgCy8BdhAfAkACQAJ9AkACQCAOLQAMQQFrDgIAAQMLIA4qAggMAQsgDioCCCAalEMK1yM8lAsiGUMAAAAAYEUNACAYIBleDQELIBxDAAAAAGBFBEAgGCEZDAELIBwgGCAYIBxdGyEZCyANQQJBASAaECYgDUECQQEQIpIgDUECQQEgGhAlIA1BAkEBECGSkiIYIBkgGCAZXhsgGCAZIBkgGVwbIBkgGVsgGCAYW3EbIRkLIB4gIJIhHiALKgL4AyIbIRgCQAJAAkAgCy0A/ANBAWsiDA4CAQACCyAbIB2UQwrXIzyUIRgLIBhDAAAAAGBFDQBDAADAfyEYAkACQAJAIAwOAgABAgsgGyEYDAELIBsgHZRDCtcjPJQhGAsgHiAYkiEYDAILIA5BCGogDSALQTJqIgwQRAJAIA4tAAxFDQAgDkEIaiANIAwQQyAOLQAMRQ0AIAAqApQDISAgE0EAIAMQNSEhIBNBACADEEshHCANQQAgAyAdED4hGyANQQAgAyAdEFkhGCAOQQhqIAtB/ABqIgwgCy8BdBAfIBsgGJIhGyAgICEgHJKTIRhDAADAfyEcAkACQAJAIA4tAAxBAWsOAgABAgsgDioCCCEcDAELIA4qAgggHZRDCtcjPJQhHAsgGCAbkyEbIA5BCGogDCALLwF4EB8CQAJAAn0CQAJAIA4tAAxBAWsOAgABAwsgDioCCAwBCyAOKgIIIB2UQwrXIzyUCyIYQwAAAABgRQ0AIBggG10NAQsgHEMAAAAAYEUEQCAbIRgMAQsgHCAbIBsgHF0bIRgLIA1BAEEBIBoQJiANQQBBARAikiANQQBBASAaECUgDUEAQQEQIZKSIhsgGCAYIBtdGyAbIBggGCAYXBsgGCAYWyAbIBtbcRshGAwCC0MAAMB/IRggGSAZXA0FIAtB/ABqIgwgC0H6AGoiES8BABAgIhsgG1sNAgwECyALLQAAQQhxDQcgACALIAIgCy0AFEEDcSIMIBYgDBsgBCAXIAYgCyoCmAMgB5IgCyoCnAMgCJIgCSAKEHQMBwsgGSAZXCAYIBhcRg0BIAtB/ABqIgwgC0H6AGoiES8BABAgIhsgG1wNASAZIBlcBEAgGCAekyAMIAsvAXoQIJQgH5IhGQwCCyAYIBhbDQELIB4gGSAfkyAMIBEvAQAQIJWSIRgLIBkgGVwNASAYIBhbDQMLQQAMAQtBAQshDCALIBogGSACQQFHIBBBAklxIBpDAAAAAF5xIAxxIhEbIBggA0ECIAwgERsgGCAYXCAaIB1BAEEGIAQgBSAGEDgaIAsqApADIA1BAkEBIBoQJCANQQJBASAaECOSkiEZIAsqApQDIA1BAEEBIBoQJCANQQBBASAaECOSkiEYCyALIBkgGCADQQBBACAaIB1BAUEBIAQgBSAGEDgaIAAgASALIAMgEEEBIBogHRB3IAAgASALIAMgD0EAIBogHRB3IAEtABQiEUECdkEDcSEMAkACfwJAAkACQAJAAkACQAJAAkACQAJ/AkAgEkUEQEEAIRBBAyEPIAxBAmsOAgMNAQtBAiEPQQAgDEEBSw0BGgsgDwshECARQQRxRQ0EIBFBCHFFDQEgDCEPCyABIQwgDRBXDQEMAgsCQCALLQA0QQdxDQAgCy0AOEEHcQ0AIAstAEJBB3ENACAMIQ8gASEMIAtBQGsvAQBBB3FFDQIMAQsgDCEPCyAAIQwLAn8CQAJAAkAgD0EBaw4DAAECBQsgC0GUA2ohDyALQaQDaiESQQEhESAMQZQDagwCCyALQZADaiEPIAtBmANqIRJBAiERIAxBkANqDAELIAtBkANqIQ8gC0GgA2ohEkEAIREgDEGQA2oLIQwgCyARQQJ0aiAMKgIAIA8qAgCTIBIqAgCTOAKYAwsgEEEBcUUNBQJAAkAgEEECcQRAIAEhDCANEFcNAQwCCyALLQA0QQdxDQAgCy0AOEEHcQ0AIAstAEJBB3ENACABIQwgC0FAay8BAEEHcUUNAQsgACEMCyAQQQFrDgMBAgMACxAnAAsgC0GUA2ohECALQaQDaiEPQQEhEiAMQZQDagwCCyALQZADaiEQIAtBmANqIQ9BAiESIAxBkANqDAELIAtBkANqIRAgC0GgA2ohD0EAIRIgDEGQA2oLIQwgCyASQQJ0aiAMKgIAIBAqAgCTIA8qAgCTOAKYAwsgCyoCnAMhGyALKgKYAyAHQwAAAAAgDRBXG5MhGQJ9AkAgCy0ANEEHcQ0AIAstADhBB3ENACALLQBCQQdxDQAgC0FAay8BAEEHcQ0AQwAAAAAMAQsgCAshGCALIBk4ApgDIAsgGyAYkzgCnAMLIBRBBGoiFCAVRw0ACwsgDkEQaiQAC3gCAX8BfSMAQRBrIgQkACAEQQhqIABBAyACQQJHQQF0IAFB/gFxQQJHGyACEC5DAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt4AgF/AX0jAEEQayIEJAAgBEEIaiAAQQEgAkECRkEBdCABQf4BcUECRxsgAhAuQwAAwH8hBQJAAkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAAAgBSAFWxsLixMCBn8EfSMAQRBrIgokACAEQf4BcSEMAkACQAJAAkACQCACKALsAy0AEEECcQRAIAUNASACLwAWQQ9xIgkhBQJ/IAlFBEAgAS0AFUEEdiEFCyAFQQVGBEBBASABLQAUQQhxRQ0BGgsgBQtBAkYhCAJ/IAlFBEAgAS0AFUEEdiEJCyAJQQVGBEBBASABLQAUQQhxRQ0BGgsgCQtBA0YgAS8AFUGAgANxQYCAAkZzIQkMAwtBASEJIApBCGogAkEUaiIIIANBAkZBAXRBASAMQQJGIg0bIgsgAxAuIAYgByANGyEHIAotAAwEQCAIIAQgAyAHEHYgAEEUaiAEIAMQIpIgCCAEIAMgBxAkkiEGAkACfwJAAkACQAJAIAQOBAIDAQAKC0ECIQkMAQtBACEJCyAJIAtGDQICQAJAIAQOBAICAAEJCyAAQZADaiEDQQAMAgsgAEGQA2ohA0EADAELIABBlANqIQNBAQshACADKgIAIAIgAEECdGoqApADkyAGkyEGCyACIARBAnRBoCRqKAIAQQJ0aiAGOAKYAwwFCyAKQQhqIAhBAyADQQJHQQF0IAxBAkcbIAMQLiAKLQAMBEACfwJAAkACQCAEDgQCAgABCAtBACEFIABBkANqDAILQQAhBSAAQZADagwBC0EBIQUgAEGUA2oLKgIAIAJBkANqIgEgBUECdGoqAgCTIABBFGogBCADECGTIAggBCADIAcQI5MgCCAEIAMgBxB1kyEGQQEhAwJAAn8CQAJAAkACQCAEDgQCAwEACgtBAiEDDAELQQAhAwsgAyALRg0CAkACQCAEDgQCAgABCQsgAEGQA2ohA0EADAILIABBkANqIQNBAAwBCyAAQZQDaiEDQQELIQAgAyoCACABIABBAnRqKgIAkyAGkyEGCyACIARBAnRBoCRqKAIAQQJ0aiAGOAKYAwwFCwJAAkACQCAFBEAgAS0AFEEEdkEHcSIAQQVLDQhBASAAdCIAQTJxDQEgAEEJcUUNAyAIIAQgAyAGEDMhBiACAn8CQAJAAkACQCAEDgQAAQIDDAsgAUHMA2ohBCABQbwDaiEDQQEMAwsgAUHUA2ohBCABQcQDaiEDQQMMAgsgAUHIA2ohBCABQbgDaiEDQQAMAQsgAUHQA2ohBCABQcADaiEDQQILQQJ0aiAGIAMqAgCSIAQqAgCSOAKYAwwICyACLwAWQQ9xIgBFBEAgAS0AFUEEdiEACyAAQQVGBEAgAS0AFEEIcUUNAgsgAS8AFUGAgANxQYCAAkYEQCAAQQJrDgIBBQMLIABBCEsNB0EBIAB0QfMDcQ0EIABBAkcNAgtBACEIAkACQAJAAkACQAJAAkAgBA4EAQEABAILIAEqApADIAFBuANqIgAqAgCTIAEqAsADkyABQcgDaiIJKgIAkyEHIAIqApADIQ4gASoC0AMhDyACQRRqIgVBAkEBIAYQJCEQIAVBAkEBIAYQIyERDAULIAEqApQDIQcCfwJAAkAgBA4CAAEDCyAHIAEqArwDkyABKgLEA5MhB0EDIQAgAUHMA2oMAQsgByABKgLEA5MgASoCvAOTIQdBASEAIAFB1ANqCyEFIAFByANqIgkgAEECdGoqAgAhDyABQbgDaiEAIAcgBSoCAJMhByACKgKUAyEOIAJBFGoiBSAEQQEgBhAkIRAgBSAEQQEgBhAjIRECQCAEDgQAAgUEAQsgAUHMA2ohCSABQbwDaiEAQQEhCAwECxAnAAsgAUHUA2ohCSABQcQDaiEAQQMhCAwCCyABKgKQAyABKgLAA5MgASoCuAOTIAEqAtADkyEHIAIqApADIQ4gASoCyAMhDyACQRRqIgVBA0EBIAYQJCEQIAVBA0EBIAYQIyERCyABQdADaiEJIAFBwANqIQBBAiEICyACIAhBAnRqIAcgD5MgDiAQIBGSkpNDAAAAP5QgACoCAJIgCSoCAJIgBSAEIAMgBhAzkjgCmAMMBgsgAS8AFUGAgANxQYCAAkcNAgsCfwJAAkACQAJAAkAgBA4EAAIDBAELIAEqAsQDIAEqAtQDkiACQRRqQQAgAyAGED2SIQYgAkGUA2ohAEEBIQMgAUGUA2oMBAsQJwALIAEqArwDIAEqAswDkiACQRRqQQEgAyAGED2SIQYgAkGUA2ohAEEDIQMgAUGUA2oMAgsgASoCwAMgASoC0AOSIAJBFGpBAiADIAYQPZIhBiACQZADaiEAQQAhAyABQZADagwBCyABKgK4AyABKgLIA5IgAkEUakEDIAMgBhA9kiEGIAJBkANqIQBBAiEDIAFBkANqCyEBIAIgA0ECdGogASoCACAAKgIAkyAGkzgCmAMMBAsgAS0AFEHwAHEiBUEgRiEJIAVBEEYhCAwBCyAIIAQgAyAGEDMhBiACAn8CQAJAAkACQCAEDgQAAQIDBgsgAUHMA2ohBCABQbwDaiEDQQEMAwsgAUHUA2ohBCABQcQDaiEDQQMMAgsgAUHIA2ohBCABQbgDaiEDQQAMAQsgAUHQA2ohBCABQcADaiEDQQILQQJ0aiAGIAMqAgCSIAQqAgCSOAKYAwwCCyAKQQhqIAJBFGoiCyAEQQJ0IgVBsCRqKAIAIAMQLgJAIAotAAxFBEAgBUGgJGooAgAhBQwBCyAKQQhqIAsgBUGgJGooAgAiBSADEC4gCi0ADA0AAn8CQAJAAkAgBA4EAgIAAQULQQAhCCAAQZADagwCC0EAIQggAEGQA2oMAQtBASEIIABBlANqCyEBIAJBmAFqIgIgBUECdGogASoCACACIAhBAnRqKgL4AZMgAEEUaiAEIAMQS5MgCyAEIAMgBiAHIAxBAkYbIgYQPZMgCyAEIAMgBhBZkzgCgAIMAgsgCkEIaiALIAUgAxAuIAhFIAotAAxBAEdyRQRAAkACQAJAAkAgBA4EAQECAAULIAEqApADIAIqApADkyEGQQIhAwwCCyABKgKUAyACKgKUA5MhBkEBIQMCQCAEDgICAAQLQQMhAwwBCyABKgKQAyACKgKQA5MhBkEAIQMLIAIgA0ECdGogBkMAAAA/lDgCmAMMAgsgCkEIaiALIAUgAxAuIAotAAwgCUEBc3INAQJAAkACQAJAIAQOBAEBAgAECyABKgKQAyACKgKQA5MhBkECIQMMAgsgASoClAMgAioClAOTIQZBASEDAkAgBA4CAgADC0EDIQMMAQsgASoCkAMgAioCkAOTIQZBACEDCyACIANBAnRqIAY4ApgDDAELECcACyAKQRBqJAALzgECA38CfSMAQRBrIgMkAEEBIQQgA0EIaiAAQfwAaiIFIAAgAUEBdGpBxABqIgEvAQAQHwJAAkAgAyoCCCIHIAIqAgAiBlwEQCAHIAdbBEAgAi0ABCECDAILIAYgBlwhBAsgAi0ABCECIARFDQAgAy0ADCACQf8BcUYNAQsgBSABIAYgAhA0A0AgAC0AACIBQQRxDQEgACABQQRyOgAAIAAoAhAiAQRAIAAgAREAAAsgAEGAgID+BzYCnAEgACgC3AMiAA0ACwsgA0EQaiQACxwAIAAgAUEIIAKnIAJCIIinIAOnIANCIIinEBULBQAQUAALOQAgAEUEQEEADwsCfyABQYB/cUGAvwNGIAFB/wBNckUEQEG4OkEZNgIAQX8MAQsgACABOgAAQQELC8QCAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgAKCwwKCwIDBAUMCwwMCgsHCAkLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LAAsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsACyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxECAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALXQEEfyAAKAIAIQIDQCACLAAAIgMQTwRAQX8hBCAAIAJBAWoiAjYCACABQcyZs+YATQR/QX8gA0EwayIDIAFBCmwiBGogAyAEQf////8Hc0obBSAECyEBDAELCyABC6gUAhJ/AX4jAEHQAGsiCCQAIAggATYCTCAIQTdqIRcgCEE4aiEUAkACQAJAAkADQCABIQ0gByAOQf////8Hc0oNASAHIA5qIQ4CQAJAAkAgDSIHLQAAIgkEQANAAkACQCAJQf8BcSIBRQRAIAchAQwBCyABQSVHDQEgByEJA0AgCS0AAUElRwRAIAkhAQwCCyAHQQFqIQcgCS0AAiEKIAlBAmoiASEJIApBJUYNAAsLIAcgDWsiByAOQf////8HcyIYSg0HIAAEQCAAIA0gBxApCyAHDQYgCCABNgJMIAFBAWohB0F/IRICQCABLAABIgoQT0UNACABLQACQSRHDQAgAUEDaiEHIApBMGshEkEBIRULIAggBzYCTEEAIQwCQCAHLAAAIglBIGsiAUEfSwRAIAchCgwBCyAHIQpBASABdCIBQYnRBHFFDQADQCAIIAdBAWoiCjYCTCABIAxyIQwgBywAASIJQSBrIgFBIE8NASAKIQdBASABdCIBQYnRBHENAAsLAkAgCUEqRgRAAn8CQCAKLAABIgEQT0UNACAKLQACQSRHDQAgAUECdCAEakHAAWtBCjYCACAKQQNqIQlBASEVIAosAAFBA3QgA2pBgANrKAIADAEL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4AMiAwRAIAAgAzYC5AMgAxAoCyAAIAEoAuADNgLgAyAAIAEoAuQDNgLkAyAAIAEoAugDNgLoAyABQQA2AugDIAFCADcC4AMgACABKQL0AzcC9AMgACABKQLsAzcC7AMgACABKAL8AzYC/AMgASgClAEhACABQQA2ApQBIAAEQCAAEFMLIAJBoARqJAAPCyACQYIcNgIQIAAgAkEQahAwECcACyACQcsRNgIAIAAgAhAwECcACwoAQQwQHiAAEGULCgBBDBAeQQAQZQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhALGQAgAUH/AXEEQBACAAsgACgCACgCDEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLDAAgACgCACABNgIQC3oBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGBFBEAgAkHdEzYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQfguQZwkIAIQOhoMAQsgAEEAQQVBnCQgAiAAKAIEEQ0AGgsgA0EQaiQAECcACyAAIAE4AhQgAkEQaiQACyMAIAFB/wFxBEAQAgALIAAoAgAiACAAKAIMQX5xIAJyNgIMCz4BAn9BBBAeIQFBHBAeIgBCgICA/AM3AhQgAEIANwIMIABBADoACCAAQQA2AgAgAEEDNgIEIAEgADYCACABCyMAIAJBBUdBACACG0UEQEH4LiADIAQQOg8LQYgwIAMgBBA6CyIBAX4gASACrSADrUIghoQgBCAAERQAIgVCIIinJAEgBacLqAEBBX8gACgCVCIDKAIAIQUgAygCBCIEIAAoAhQgACgCHCIHayIGIAQgBkkbIgYEQCAFIAcgBhAsGiADIAMoAgAgBmoiBTYCACADIAMoAgQgBmsiBDYCBAsgBCACIAIgBEsbIgQEQCAFIAEgBBAsGiADIAMoAgAgBGoiBTYCACADIAMoAgQgBGs2AgQLIAVBADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAgsEAEIACwQAQQALigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICA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AAAAAPBBYyAIRAAAAAAAAAAAZnEEQCAIqwwBC0EACyEBIAYoAgwhAyAAIAEpAwA3AwAgACABKQMINwMIIAMQESAGQTBqJAALCQAgABCEARAoCwwAIAAoAghB+hsQXAsJACAAEIYBECgLVQECfyMAQTBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxECAEEwEB4gAkEwECwhACACQTBqJAAgAAs7AQF/IAEgACgCBCIFQQF1aiEBIAAoAgAhACABIAIgAyAEIAVBAXEEfyABKAIAIABqKAIABSAACxEbAAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALEREACzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRDAALNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxECAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCQALCQAgASAAEQEACwUAQf85Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAvCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRGgALBQBB+jkL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QRhqIgEgBUcNAAsgAkKAgID8i4CAwL9/NwLkASACQoGAgIAQNwLcASACQoCAgPyLgIDAv383AtQBIAJCgICA/oeAgOD/ADcD+AEgAkKAgID+h4CA4P8ANwPwASACIAItAOwBQfgBcToA7AEgAkGAAmpBAEHAABAvGiADQZgBaiACQcACECwaIANBADYC3AMLA0AgAC0AACIBQQRxDQEgACABQQRyOgAAIAAoAhAiAQRAIAAgAREAAAsgAEGAgID+BzYCnAEgACgC3AMiAA0ACwsgBEHAAmokAAuyBwEIfyMAQdAAayIHJAAgACgCACEAAkACQCABKAIAIggoAtwDRQRAIAAoAggNASAAKALgAyIBIAJBAnRqIQYCQCAAKALkAyIEIABB6ANqIgMoAgAiBUkEQCAEIAZGBEAgBiAINgIAIAAgBkEEajYC5AMMAgsgBCAEIgJBBGsiAUsEQANAIAIgASgCADYCACACQQRqIQIgAUEEaiIBIARJDQALCyAAIAI2AuQDIAZBBGoiASAERwRAIAQgBCABayIBQXxxayAGIAEQMRoLIAYgCDYCAAwBCyAEIAFrQQJ1QQFqIgRBgICAgARPDQMCQCAHQSBqQf////8DIAUgAWsiAUEBdSIFIAQgBCAFSRsgAUH8////B08bIAIgAxBCIgMoAggiAiADKAIMRw0AIAMoAgQiASADKAIAIgRLBEAgAyABIAEgBGtBAnVBAWpBfm1BAnQiBGogASACIAFrIgEQMSABaiICNgIIIAMgAygCBCAEajYCBAwBCyAHQThqQQEgAiAEa0EBdSACIARGGyIBIAFBAnYgAygCEBBCIgUoAgghBAJ/IAMoAggiAiADKAIEIgFGBEAgBCECIAEMAQsgBCACIAFraiECA0AgBCABKAIANgIAIAFBBGohASAEQQRqIgQgAkcNAAsgAygCCCEBIAMoAgQLIQQgAygCACEJIAMgBSgCADYCACAFIAk2AgAgAyAFKAIENgIEIAUgBDYCBCADIAI2AgggBSABNgIIIAMoAgwhCiADIAUoAgw2AgwgBSAKNgIMIAEgBEcEQCAFIAEgBCABa0EDakF8cWo2AggLIAlFDQAgCRAoIAMoAgghAgsgAiAINgIAIAMgAygCCEEEajYCCCADIAMoAgQgBiAAKALgAyIBayICayABIAIQMTYCBCADKAII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CwsLgQECA38BfSMAQRBrIgMkACAAKAIAIQQCfSACtiIGIAZcBEBBACEAQwAAwH8MAQtBAEECIAZDAACAf1sgBkMAAID/W3IiBRshAEMAAMB/IAYgBRsLIQYgAyAAOgAMIAMgBjgCCCADIAMpAwg3AwAgBCABQf8BcSADEIEBIANBEGokAAt5AgF9An8jAEEQayIEJAAgACgCACEFIAQCfyACtiIDIANcBEBDAADAfyEDQQAMAQtDAADAfyADIANDAACAf1sgA0MAAID/W3IiABshAyAARQs6AAwgBCADOAIIIAQgBCkDCDcDACAFIAFB/wFxIAQQgQEgBEEQaiQACwukJSMAQYAIC8UcT25seSBsZWFmIG5vZGVzIHdpdGggY3VzdG9tIG1lYXN1cmUgZnVuY3Rpb25zIHNob3VsZCBtYW51YWxseSBtYXJrIHRoZW1zZWx2ZXMgYXMgZGlydHkAaXNEaXJ0eQBtYXJrRGlydHkAZGVzdHJveQBzZXREaXNwbGF5AGdldERpc3BsYXkAc2V0RmxleAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AHNldEZsZXhHcm93AGdldEZsZXhHcm93AHNldE92ZXJmbG93AGdldE92ZXJmbG93AGNhbGN1bGF0ZUxheW91dABnZXRDb21wdXRlZExheW91dAB1bnNpZ25lZCBzaG9ydABnZXRDaGlsZENvdW50AHVuc2lnbmVkIGludABzZXRKdXN0aWZ5Q29udGVudABnZXRKdXN0aWZ5Q29udGVudABhdmFpbGFibGVIZWlnaHQgaXMgaW5kZWZpbml0ZSBzbyBoZWlnaHRTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABhdmFpbGFibGVXaWR0aCBpcyBpbmRlZmluaXRlIHNvIHdpZHRoU2l6aW5nTW9kZSBtdXN0IGJlIFNpemluZ01vZGU6Ok1heENvbnRlbnQAc2V0QWxpZ25Db250ZW50AGdldEFsaWduQ29udGVudABnZXRQYXJlbnQAaW1wbGVtZW50AHNldE1heEhlaWdodFBlcmNlbnQAc2V0SGVpZ2h0UGVyY2VudABzZXRNaW5IZWlnaHRQZXJjZW50AHNldEZsZXhCYXNpc1BlcmNlbnQAc2V0UG9zaXRpb25QZXJjZW50AHNldE1hcmdpblBlcmNlbnQAc2V0TWF4V2lkdGhQZXJjZW50AHNldFdpZHRoUGVyY2VudABzZXRNaW5XaWR0aFBlcmNlbnQAc2V0UGFkZGluZ1BlcmNlbnQAaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQb2ludCB8fCBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6OlBlcmNlbnQAY3JlYXRlRGVmYXVsdAB1bml0AHJpZ2h0AGhlaWdodABzZXRNYXhIZWlnaHQAZ2V0TWF4SGVpZ2h0AHNldEhlaWdodABnZXRIZWlnaHQAc2V0TWluSGVpZ2h0AGdldE1pbkhlaWdodABnZXRDb21wdXRlZEhlaWdodABnZXRDb21wdXRlZFJpZ2h0AGxlZnQAZ2V0Q29tcHV0ZWRMZWZ0AHJlc2V0AF9fZGVzdHJ1Y3QAZmxvYXQAdWludDY0X3QAdXNlV2ViRGVmYXVsdHMAc2V0VXNlV2ViRGVmYXVsdHMAc2V0QWxpZ25JdGVtcwBnZXRBbGlnbkl0ZW1zAHNldEZsZXhCYXNpcwBnZXRGbGV4QmFzaXMAQ2Fubm90IGdldCBsYXlvdXQgcHJvcGVydGllcyBvZiBtdWx0aS1lZGdlIHNob3J0aGFuZHMAc2V0UG9pbnRTY2FsZUZhY3RvcgBNZWFzdXJlQ2FsbGJhY2tXcmFwcGVyAERpcnRpZWRDYWxsYmFja1dyYXBwZXIAQ2Fubm90IHJlc2V0IGEgbm9kZSBzdGlsbCBhdHRhY2hlZCB0byBhIG93bmVyAHNldEJvcmRlcgBnZXRCb3JkZXIAZ2V0Q29tcHV0ZWRCb3JkZXIAZ2V0TnVtYmVyAGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6TnVtYmVyAHVuc2lnbmVkIGNoYXIAdG9wAGdldENvbXB1dGVkVG9wAHNldEZsZXhXcmFwAGdldEZsZXhXcmFwAHNldEdhcABnZXRHYXAAJXAAc2V0SGVpZ2h0QXV0bwBzZXRGbGV4QmFzaXNBdXRvAHNldE1hcmdpbkF1dG8Ac2V0V2lkdGhBdXRvAFNjYWxlIGZhY3RvciBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiB6ZXJvAHNldEFzcGVjdFJhdGlvAGdldEFzcGVjdFJhdGlvAHNldFBvc2l0aW9uAGdldFBvc2l0aW9uAG5vdGlmeU9uRGVzdHJ1Y3Rpb24Ac2V0RmxleERpcmVjdGlvbgBnZXRGbGV4RGlyZWN0aW9uAHNldE1hcmdpbgBnZXRNYXJnaW4AZ2V0Q29tcHV0ZWRNYXJnaW4AbmFuAGJvdHRvbQBnZXRDb21wdXRlZEJvdHRvbQBib29sAGVtc2NyaXB0ZW46OnZhbABzZXRGbGV4U2hyaW5rAGdldEZsZXhTaHJpbmsAc2V0QWx3YXlzRm9ybXNDb250YWluaW5nQmxvY2sATWVhc3VyZUNhbGxiYWNrAERpcnRpZWRDYWxsYmFjawBnZXRMZW5ndGgAd2lkdGgAc2V0TWF4V2lkdGgAZ2V0TWF4V2lkdGgAc2V0V2lkdGgAZ2V0V2lkdGgAc2V0TWluV2lkdGgAZ2V0TWluV2lkdGgAZ2V0Q29tcHV0ZWRXaWR0aABwdXNoAC9ob21lL3J1bm5lci93b3JrL3lvZ2EveW9nYS9qYXZhc2NyaXB0Ly4uL3lvZ2Evc3R5bGUvU21hbGxWYWx1ZUJ1ZmZlci5oAC9ob21lL3J1bm5lci93b3JrL3lvZ2EveW9nYS9qYXZhc2NyaXB0Ly4uL3lvZ2Evc3R5bGUvU3R5bGVWYWx1ZVBvb2wuaAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQBpbmRleCA8IDQwOTYgJiYgIlNtYWxsVmFsdWVCdWZmZXIgY2FuIG9ubHkgaG9sZCB1cCB0byA0MDk2IGNodW5rcyIAJXMKAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAEAQdAkCwdpaQB2AHZpAEHgJAs33xwAAN0cAAAdHQAAFx0AAB0dAAAXHQAAaWlpZmlmaQAQHQAA4BwAAHZpaQDhHAAAJB0AAGlpaQBBoCULCbwAAAC9AAAAvgBBtCULDrwAAAC/AAAAwAAAABAdAEHQJQs+3xwAAB0dAAAXHQAAHR0AABcdAAAkHQAAHx0AACQdAABpaWlpAAAAABAdAAD1HAAAEB0AAPccAAD4HAAAJB0AQZgmCwnBAAAAwgAAAMMAQawmCxbBAAAAxAAAAMAAAAD7HAAAEB0AAPscAEHQJguiAxAdAAD7HAAAFx0AABEdAAB2aWlpaQAAABAdAAD7HAAAHR0AAHZpaWYAAAAAEB0AAPscAAAXHQAAdmlpaQAAAAAQHQAA+xwAABEdAAARHQAA/BwAABcdAAAXHQAA/BwAABEdAAD8HAAAaQBkaWkAdmlpZAAAAB0AAAAdAAD7HAAAEB0AAAAdAAAQHQAAAB0AAP8cAAAQHQAAAB0AABcdAAAQHQAAAB0AABcdAAAeHQAAdmlpaWQAAAAQHQAAAB0AAB4dAAAXHQAAAR0AAP4cAAABHQAAFx0AAP4cAAABHQAAHh0AAAEdAAAeHQAAAR0AABcdAABkaWlpAAAAAB0dAAAAHQAAFx0AAGZpaWkAAAAAEB0AAAAdAAAAHQAAGB0AABAdAAAAHQAAAB0AABgdAAABHQAAAB0AAAAdAAAAHQAAAB0AABgdAAAQHQAAAB0AABEdAAARHQAAAB0AABAdAAAAHQAA3RwAABAdAAAAHQAA9RwAABEdAAABHQAAAAAAABAdAAAAHQAAHh0AAB4dAAAXHQAAdmlpZGRpAAD9HAAAAR0AQYAqC0EZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBB0SoLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBBiysLAQwAQZcrCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQcUrCwEQAEHRKwsVDwAAAAQPAAAAAAkQAAAAAAAQAAAQAEH/KwsBEgBBiywLHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBwiwLDhoAAAAaGhoAAAAAAAAJAEHzLAsBFABB/ywLFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBrS0LARYAQbktCycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQYQuCwHKAEGsLgsI//////////8AQfAuCwlQIQEAAAAAAAUAQYQvCwHFAEGcLwsKxgAAAMcAAAA4HQBBtC8LAQIAQcQvCwj//////////wBBiDALAQUAQZQwCwHIAEGsMAsOxgAAAMkAAABIHQAAAAQAQcQwCwEBAEHUMAsF/////woAQZgxCwHL";if(!ua(H)){var va=H;H=h.locateFile?h.locateFile(va,q):q+va;}
356
- function wa(){var a=H;try{if(a==H&&w)return new Uint8Array(w);if(ua(a))try{var b=xa(a.slice(37)),c=new Uint8Array(b.length);for(a=0;a<b.length;++a)c[a]=b.charCodeAt(a);var d=c;}catch(f){throw Error("Converting base64 string to bytes failed.");}else d=void 0;var e=d;if(e)return e;throw "both async and sync fetching of the wasm failed";}catch(f){x(f);}}
357
- function ya(){return w||"function"!=typeof fetch?Promise.resolve().then(function(){return wa()}):fetch(H,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw "failed to load wasm binary file at '"+H+"'";return a.arrayBuffer()}).catch(function(){return wa()})}function za(a){for(;0<a.length;)a.shift()(h);}function Aa(a){if(void 0===a)return "_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}
358
- function Ba(a,b){a=Aa(a);return function(){return b.apply(this,arguments)}}var J=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Ca=[];function Da(a){var b=Error,c=Ba(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""));});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var K=void 0;
359
- function L(a){throw new K(a);}var M=a=>{a||L("Cannot use deleted val. handle = "+a);return J[a].value},Ea=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Ca.length?Ca.pop():J.length;J[b]={ga:1,value:a};return b}},Fa=void 0,Ga=void 0;function N(a){for(var b="";A[a];)b+=Ga[A[a++]];return b}var O=[];function Ha(){for(;O.length;){var a=O.pop();a.M.$=!1;a["delete"]();}}var P=void 0,Q={};
360
- function Ia(a,b){for(void 0===b&&L("ptr should not be undefined");a.R;)b=a.ba(b),a=a.R;return b}var R={};function Ja(a){a=Ka(a);var b=N(a);S(a);return b}function La(a,b){var c=R[a];void 0===c&&L(b+" has unknown type "+Ja(a));return c}function Ma(){}var Na=!1;function Oa(a){--a.count.value;0===a.count.value&&(a.T?a.U.W(a.T):a.P.N.W(a.O));}function Pa(a,b,c){if(b===c)return a;if(void 0===c.R)return null;a=Pa(a,b,c.R);return null===a?null:c.na(a)}var Qa={};function Ra(a,b){b=Ia(a,b);return Q[b]}
361
- var Sa=void 0;function Ta(a){throw new Sa(a);}function Ua(a,b){b.P&&b.O||Ta("makeClassHandle requires ptr and ptrType");!!b.U!==!!b.T&&Ta("Both smartPtrType and smartPtr must be specified");b.count={value:1};return T(Object.create(a,{M:{value:b}}))}function T(a){if("undefined"===typeof FinalizationRegistry)return T=b=>b,a;Na=new FinalizationRegistry(b=>{Oa(b.M);});T=b=>{var c=b.M;c.T&&Na.register(b,{M:c},b);return b};Ma=b=>{Na.unregister(b);};return T(a)}var Va={};
362
- function Wa(a){for(;a.length;){var b=a.pop();a.pop()(b);}}function Xa(a){return this.fromWireType(D[a>>2])}var U={},Ya={};function V(a,b,c){function d(k){k=c(k);k.length!==a.length&&Ta("Mismatched type converter count");for(var m=0;m<a.length;++m)W(a[m],k[m]);}a.forEach(function(k){Ya[k]=b;});var e=Array(b.length),f=[],g=0;b.forEach((k,m)=>{R.hasOwnProperty(k)?e[m]=R[k]:(f.push(k),U.hasOwnProperty(k)||(U[k]=[]),U[k].push(()=>{e[m]=R[k];++g;g===f.length&&d(e);}));});0===f.length&&d(e);}
363
- function Za(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+a);}}
364
- function W(a,b,c={}){if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");var d=b.name;a||L('type "'+d+'" must have a positive integer typeid pointer');if(R.hasOwnProperty(a)){if(c.ua)return;L("Cannot register type '"+d+"' twice");}R[a]=b;delete Ya[a];U.hasOwnProperty(a)&&(b=U[a],delete U[a],b.forEach(e=>e()));}function $a(a){L(a.M.P.N.name+" instance already deleted");}function X(){}
365
- function ab(a,b,c){if(void 0===a[b].S){var d=a[b];a[b]=function(){a[b].S.hasOwnProperty(arguments.length)||L("Function '"+c+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+a[b].S+")!");return a[b].S[arguments.length].apply(this,arguments)};a[b].S=[];a[b].S[d.Z]=d;}}
366
- function bb(a,b){h.hasOwnProperty(a)?(L("Cannot register public name '"+a+"' twice"),ab(h,a,a),h.hasOwnProperty(void 0)&&L("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),h[a].S[void 0]=b):h[a]=b;}function cb(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.X=c;this.W=d;this.R=e;this.pa=f;this.ba=g;this.na=k;this.ja=[];}
367
- function db(a,b,c){for(;b!==c;)b.ba||L("Expected null or instance of "+c.name+", got an instance of "+b.name),a=b.ba(a),b=b.R;return a}function eb(a,b){if(null===b)return this.ea&&L("null is not a valid "+this.name),0;b.M||L('Cannot pass "'+fb(b)+'" as a '+this.name);b.M.O||L("Cannot pass deleted object as a pointer of type "+this.name);return db(b.M.O,b.M.P.N,this.N)}
368
- function gb(a,b){if(null===b){this.ea&&L("null is not a valid "+this.name);if(this.da){var c=this.fa();null!==a&&a.push(this.W,c);return c}return 0}b.M||L('Cannot pass "'+fb(b)+'" as a '+this.name);b.M.O||L("Cannot pass deleted object as a pointer of type "+this.name);!this.ca&&b.M.P.ca&&L("Cannot convert argument of type "+(b.M.U?b.M.U.name:b.M.P.name)+" to parameter type "+this.name);c=db(b.M.O,b.M.P.N,this.N);if(this.da)switch(void 0===b.M.T&&L("Passing raw pointer to smart pointer is illegal"),
369
- this.Ba){case 0:b.M.U===this?c=b.M.T:L("Cannot convert argument of type "+(b.M.U?b.M.U.name:b.M.P.name)+" to parameter type "+this.name);break;case 1:c=b.M.T;break;case 2:if(b.M.U===this)c=b.M.T;else {var d=b.clone();c=this.xa(c,Ea(function(){d["delete"]();}));null!==a&&a.push(this.W,c);}break;default:L("Unsupporting sharing policy");}return c}
370
- function hb(a,b){if(null===b)return this.ea&&L("null is not a valid "+this.name),0;b.M||L('Cannot pass "'+fb(b)+'" as a '+this.name);b.M.O||L("Cannot pass deleted object as a pointer of type "+this.name);b.M.P.ca&&L("Cannot convert argument of type "+b.M.P.name+" to parameter type "+this.name);return db(b.M.O,b.M.P.N,this.N)}
371
- function Y(a,b,c,d){this.name=a;this.N=b;this.ea=c;this.ca=d;this.da=!1;this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0;void 0!==b.R?this.toWireType=gb:(this.toWireType=d?eb:hb,this.V=null);}function ib(a,b){h.hasOwnProperty(a)||Ta("Replacing nonexistant public symbol");h[a]=b;h[a].Z=void 0;}
372
- function jb(a,b){var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes("j")){var d=h["dynCall_"+a];d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b);}else d=oa.get(b).apply(null,c);return d}}function Z(a,b){a=N(a);var c=a.includes("j")?jb(a,b):oa.get(b);"function"!=typeof c&&L("unknown function pointer with signature "+a+": "+b);return c}var mb=void 0;
373
- function nb(a,b){function c(f){e[f]||R[f]||(Ya[f]?Ya[f].forEach(c):(d.push(f),e[f]=!0));}var d=[],e={};b.forEach(c);throw new mb(a+": "+d.map(Ja).join([", "]));}
374
- function ob(a,b,c,d,e){var f=b.length;2>f&&L("argTypes array size mismatch! Must at least get return value and 'this' types!");var g=null!==b[1]&&null!==c,k=!1;for(c=1;c<b.length;++c)if(null!==b[c]&&void 0===b[c].V){k=!0;break}var m="void"!==b[0].name,l=f-2,n=Array(l),p=[],r=[];return function(){arguments.length!==l&&L("function "+a+" called with "+arguments.length+" arguments, expected "+l+" args!");r.length=0;p.length=g?2:1;p[0]=e;if(g){var u=b[1].toWireType(r,this);p[1]=u;}for(var t=0;t<l;++t)n[t]=
375
- b[t+2].toWireType(r,arguments[t]),p.push(n[t]);t=d.apply(null,p);if(k)Wa(r);else for(var y=g?1:2;y<b.length;y++){var B=1===y?u:n[y-2];null!==b[y].V&&b[y].V(B);}u=m?b[0].fromWireType(t):void 0;return u}}function pb(a,b){for(var c=[],d=0;d<a;d++)c.push(E[b+4*d>>2]);return c}function qb(a){4<a&&0===--J[a].ga&&(J[a]=void 0,Ca.push(a));}function fb(a){if(null===a)return "null";var b=typeof a;return "object"===b||"array"===b||"function"===b?a.toString():""+a}
376
- function rb(a,b){switch(b){case 2:return function(c){return this.fromWireType(la[c>>2])};case 3:return function(c){return this.fromWireType(ma[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}
377
- function sb(a,b,c){switch(b){case 0:return c?function(d){return ja[d]}:function(d){return A[d]};case 1:return c?function(d){return C[d>>1]}:function(d){return ka[d>>1]};case 2:return c?function(d){return D[d>>2]}:function(d){return E[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}function tb(a,b){for(var c="",d=0;!(d>=b/2);++d){var e=C[a+2*d>>1];if(0==e)break;c+=String.fromCharCode(e);}return c}
378
- function ub(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)C[b>>1]=a.charCodeAt(e),b+=2;C[b>>1]=0;return b-d}function vb(a){return 2*a.length}function wb(a,b){for(var c=0,d="";!(c>=b/4);){var e=D[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e);}return d}
379
- function xb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.charCodeAt(e);if(55296<=f&&57343>=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023;}D[b>>2]=f;b+=4;if(b+4>c)break}D[b>>2]=0;return b-d}function yb(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&++c;b+=4;}return b}var zb={};function Ab(a){var b=zb[a];return void 0===b?N(a):b}var Bb=[];function Cb(a){var b=Bb.length;Bb.push(a);return b}
380
- function Db(a,b){for(var c=Array(a),d=0;d<a;++d)c[d]=La(E[b+4*d>>2],"parameter "+d);return c}var Eb=[],Fb=[null,[],[]];K=h.BindingError=Da("BindingError");h.count_emval_handles=function(){for(var a=0,b=5;b<J.length;++b)void 0!==J[b]&&++a;return a};h.get_first_emval=function(){for(var a=5;a<J.length;++a)if(void 0!==J[a])return J[a];return null};Fa=h.PureVirtualError=Da("PureVirtualError");for(var Gb=Array(256),Hb=0;256>Hb;++Hb)Gb[Hb]=String.fromCharCode(Hb);Ga=Gb;h.getInheritedInstanceCount=function(){return Object.keys(Q).length};
381
- h.getLiveInheritedInstances=function(){var a=[],b;for(b in Q)Q.hasOwnProperty(b)&&a.push(Q[b]);return a};h.flushPendingDeletes=Ha;h.setDelayFunction=function(a){P=a;O.length&&P&&P(Ha);};Sa=h.InternalError=Da("InternalError");X.prototype.isAliasOf=function(a){if(!(this instanceof X&&a instanceof X))return !1;var b=this.M.P.N,c=this.M.O,d=a.M.P.N;for(a=a.M.O;b.R;)c=b.ba(c),b=b.R;for(;d.R;)a=d.ba(a),d=d.R;return b===d&&c===a};
382
- X.prototype.clone=function(){this.M.O||$a(this);if(this.M.aa)return this.M.count.value+=1,this;var a=T,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.M;a=a(c.call(b,d,{M:{value:{count:e.count,$:e.$,aa:e.aa,O:e.O,P:e.P,T:e.T,U:e.U}}}));a.M.count.value+=1;a.M.$=!1;return a};X.prototype["delete"]=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L("Object already scheduled for deletion");Ma(this);Oa(this.M);this.M.aa||(this.M.T=void 0,this.M.O=void 0);};X.prototype.isDeleted=function(){return !this.M.O};
383
- X.prototype.deleteLater=function(){this.M.O||$a(this);this.M.$&&!this.M.aa&&L("Object already scheduled for deletion");O.push(this);1===O.length&&P&&P(Ha);this.M.$=!0;return this};Y.prototype.qa=function(a){this.ka&&(a=this.ka(a));return a};Y.prototype.ha=function(a){this.W&&this.W(a);};Y.prototype.argPackAdvance=8;Y.prototype.readValueFromPointer=Xa;Y.prototype.deleteObject=function(a){if(null!==a)a["delete"]();};
384
- Y.prototype.fromWireType=function(a){function b(){return this.da?Ua(this.N.X,{P:this.wa,O:c,U:this,T:a}):Ua(this.N.X,{P:this,O:a})}var c=this.qa(a);if(!c)return this.ha(a),null;var d=Ra(this.N,c);if(void 0!==d){if(0===d.M.count.value)return d.M.O=c,d.M.T=a,d.clone();d=d.clone();this.ha(a);return d}d=this.N.pa(c);d=Qa[d];if(!d)return b.call(this);d=this.ca?d.la:d.pointerType;var e=Pa(c,this.N,d.N);return null===e?b.call(this):this.da?Ua(d.N.X,{P:d,O:e,U:this,T:a}):Ua(d.N.X,{P:d,O:e})};
385
- mb=h.UnboundTypeError=Da("UnboundTypeError");
386
- var xa="function"==typeof atob?atob:function(a){var b="",c=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));d=d<<2|e>>4;
387
- e=(e&15)<<4|f>>2;var k=(f&3)<<6|g;b+=String.fromCharCode(d);64!==f&&(b+=String.fromCharCode(e));64!==g&&(b+=String.fromCharCode(k));}while(c<a.length);return b},Jb={l:function(a,b,c,d){x("Assertion failed: "+(a?z(A,a):"")+", at: "+[b?b?z(A,b):"":"unknown filename",c,d?d?z(A,d):"":"unknown function"]);},q:function(a,b,c){a=N(a);b=La(b,"wrapper");c=M(c);var d=[].slice,e=b.N,f=e.X,g=e.R.X,k=e.R.constructor;a=Ba(a,function(){e.R.ja.forEach(function(l){if(this[l]===g[l])throw new Fa("Pure virtual function "+
388
- l+" must be implemented in JavaScript");}.bind(this));Object.defineProperty(this,"__parent",{value:f});this.__construct.apply(this,d.call(arguments));});f.__construct=function(){this===f&&L("Pass correct 'this' to __construct");var l=k.implement.apply(void 0,[this].concat(d.call(arguments)));Ma(l);var n=l.M;l.notifyOnDestruction();n.aa=!0;Object.defineProperties(this,{M:{value:n}});T(this);l=n.O;l=Ia(e,l);Q.hasOwnProperty(l)?L("Tried to register registered instance: "+l):Q[l]=this;};f.__destruct=function(){this===
389
- f&&L("Pass correct 'this' to __destruct");Ma(this);var l=this.M.O;l=Ia(e,l);Q.hasOwnProperty(l)?delete Q[l]:L("Tried to unregister unregistered instance: "+l);};a.prototype=Object.create(f);for(var m in c)a.prototype[m]=c[m];return Ea(a)},j:function(a){var b=Va[a];delete Va[a];var c=b.fa,d=b.W,e=b.ia,f=e.map(g=>g.ta).concat(e.map(g=>g.za));V([a],f,g=>{var k={};e.forEach((m,l)=>{var n=g[l],p=m.ra,r=m.sa,u=g[l+e.length],t=m.ya,y=m.Aa;k[m.oa]={read:B=>n.fromWireType(p(r,B)),write:(B,ba)=>{var I=[];t(y,
390
- B,u.toWireType(I,ba));Wa(I);}};});return [{name:b.name,fromWireType:function(m){var l={},n;for(n in k)l[n]=k[n].read(m);d(m);return l},toWireType:function(m,l){for(var n in k)if(!(n in l))throw new TypeError('Missing field: "'+n+'"');var p=c();for(n in k)k[n].write(p,l[n]);null!==m&&m.push(d,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:d}]});},v:function(){},B:function(a,b,c,d,e){var f=Za(c);b=N(b);W(a,{name:b,fromWireType:function(g){return !!g},toWireType:function(g,k){return k?d:e},argPackAdvance:8,
391
- readValueFromPointer:function(g){if(1===c)var k=ja;else if(2===c)k=C;else if(4===c)k=D;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(k[g>>f])},V:null});},f:function(a,b,c,d,e,f,g,k,m,l,n,p,r){n=N(n);f=Z(e,f);k&&(k=Z(g,k));l&&(l=Z(m,l));r=Z(p,r);var u=Aa(n);bb(u,function(){nb("Cannot construct "+n+" due to unbound types",[d]);});V([a,b,c],d?[d]:[],function(t){t=t[0];if(d){var y=t.N;var B=y.X;}else B=X.prototype;t=Ba(u,function(){if(Object.getPrototypeOf(this)!==ba)throw new K("Use 'new' to construct "+
392
- n);if(void 0===I.Y)throw new K(n+" has no accessible constructor");var kb=I.Y[arguments.length];if(void 0===kb)throw new K("Tried to invoke ctor of "+n+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(I.Y).toString()+") parameters instead!");return kb.apply(this,arguments)});var ba=Object.create(B,{constructor:{value:t}});t.prototype=ba;var I=new cb(n,t,ba,r,y,f,k,l);y=new Y(n,I,!0,!1);B=new Y(n+"*",I,!1,!1);var lb=new Y(n+" const*",I,!1,!0);Qa[a]={pointerType:B,
393
- la:lb};ib(u,t);return [y,B,lb]});},d:function(a,b,c,d,e,f,g){var k=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(m){function l(){nb("Cannot call "+n+" due to unbound types",k);}m=m[0];var n=m.name+"."+b;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var p=m.N.constructor;void 0===p[b]?(l.Z=c-1,p[b]=l):(ab(p,b,n),p[b].S[c-1]=l);V([],k,function(r){r=ob(n,[r[0],null].concat(r.slice(1)),null,f,g);void 0===p[b].S?(r.Z=c-1,p[b]=r):p[b].S[c-1]=r;return []});return []});},p:function(a,b,c,d,e,f){0<b||x();var g=pb(b,
394
- c);e=Z(d,e);V([],[a],function(k){k=k[0];var m="constructor "+k.name;void 0===k.N.Y&&(k.N.Y=[]);if(void 0!==k.N.Y[b-1])throw new K("Cannot register multiple constructors with identical number of parameters ("+(b-1)+") for class '"+k.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");k.N.Y[b-1]=()=>{nb("Cannot construct "+k.name+" due to unbound types",g);};V([],g,function(l){l.splice(1,0,null);k.N.Y[b-1]=ob(m,l,null,e,f);return []});return []});},
395
- a:function(a,b,c,d,e,f,g,k){var m=pb(c,d);b=N(b);f=Z(e,f);V([],[a],function(l){function n(){nb("Cannot call "+p+" due to unbound types",m);}l=l[0];var p=l.name+"."+b;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);k&&l.N.ja.push(b);var r=l.N.X,u=r[b];void 0===u||void 0===u.S&&u.className!==l.name&&u.Z===c-2?(n.Z=c-2,n.className=l.name,r[b]=n):(ab(r,b,p),r[b].S[c-2]=n);V([],m,function(t){t=ob(p,t,l,f,g);void 0===r[b].S?(t.Z=c-2,r[b]=t):r[b].S[c-2]=t;return []});return []});},A:function(a,b){b=N(b);W(a,
396
- {name:b,fromWireType:function(c){var d=M(c);qb(c);return d},toWireType:function(c,d){return Ea(d)},argPackAdvance:8,readValueFromPointer:Xa,V:null});},n:function(a,b,c){c=Za(c);b=N(b);W(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:rb(b,c),V:null});},e:function(a,b,c,d,e){b=N(b);-1===e&&(e=4294967295);e=Za(c);var f=k=>k;if(0===d){var g=32-8*c;f=k=>k<<g>>>g;}c=b.includes("unsigned")?function(k,m){return m>>>0}:function(k,m){return m};
397
- W(a,{name:b,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:sb(b,e,0!==d),V:null});},b:function(a,b,c){function d(f){f>>=2;var g=E;return new e(ia,g[f+1],g[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=N(c);W(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ua:!0});},o:function(a,b){b=N(b);var c="std::string"===b;W(a,{name:b,fromWireType:function(d){var e=E[d>>2],f=d+4;if(c)for(var g=f,k=0;k<=e;++k){var m=
398
- f+k;if(k==e||0==A[m]){g=g?z(A,g,m-g):"";if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=m+1;}}else {l=Array(e);for(k=0;k<e;++k)l[k]=String.fromCharCode(A[f+k]);l=l.join("");}S(d);return l},toWireType:function(d,e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var f,g="string"==typeof e;g||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||L("Cannot pass non-string to std::string");if(c&&g){var k=0;for(f=0;f<e.length;++f){var m=e.charCodeAt(f);127>=m?k++:2047>=
399
- m?k+=2:55296<=m&&57343>=m?(k+=4,++f):k+=3;}f=k;}else f=e.length;k=Ib(4+f+1);m=k+4;E[k>>2]=f;if(c&&g){if(g=m,m=f+1,f=A,0<m){m=g+m-1;for(var l=0;l<e.length;++l){var n=e.charCodeAt(l);if(55296<=n&&57343>=n){var p=e.charCodeAt(++l);n=65536+((n&1023)<<10)|p&1023;}if(127>=n){if(g>=m)break;f[g++]=n;}else {if(2047>=n){if(g+1>=m)break;f[g++]=192|n>>6;}else {if(65535>=n){if(g+2>=m)break;f[g++]=224|n>>12;}else {if(g+3>=m)break;f[g++]=240|n>>18;f[g++]=128|n>>12&63;}f[g++]=128|n>>6&63;}f[g++]=128|n&63;}}f[g]=0;}}else if(g)for(g=
400
- 0;g<f;++g)l=e.charCodeAt(g),255<l&&(S(m),L("String has UTF-16 code units that do not fit in 8 bits")),A[m+g]=l;else for(g=0;g<f;++g)A[m+g]=e[g];null!==d&&d.push(S,k);return k},argPackAdvance:8,readValueFromPointer:Xa,V:function(d){S(d);}});},i:function(a,b,c){c=N(c);if(2===b){var d=tb;var e=ub;var f=vb;var g=()=>ka;var k=1;}else 4===b&&(d=wb,e=xb,f=yb,g=()=>E,k=2);W(a,{name:c,fromWireType:function(m){for(var l=E[m>>2],n=g(),p,r=m+4,u=0;u<=l;++u){var t=m+4+u*b;if(u==l||0==n[t>>k])r=d(r,t-r),void 0===
401
- p?p=r:(p+=String.fromCharCode(0),p+=r),r=t+b;}S(m);return p},toWireType:function(m,l){"string"!=typeof l&&L("Cannot pass non-string to C++ string type "+c);var n=f(l),p=Ib(4+n+b);E[p>>2]=n>>k;e(l,p+4,n+b);null!==m&&m.push(S,p);return p},argPackAdvance:8,readValueFromPointer:Xa,V:function(m){S(m);}});},k:function(a,b,c,d,e,f){Va[a]={name:N(b),fa:Z(c,d),W:Z(e,f),ia:[]};},h:function(a,b,c,d,e,f,g,k,m,l){Va[a].ia.push({oa:N(b),ta:c,ra:Z(d,e),sa:f,za:g,ya:Z(k,m),Aa:l});},C:function(a,b){b=N(b);W(a,{va:!0,name:b,
402
- argPackAdvance:0,fromWireType:function(){},toWireType:function(){}});},s:function(a,b,c,d,e){a=Bb[a];b=M(b);c=Ab(c);var f=[];E[d>>2]=Ea(f);return a(b,c,f,e)},t:function(a,b,c,d){a=Bb[a];b=M(b);c=Ab(c);a(b,c,null,d);},g:qb,m:function(a,b){var c=Db(a,b),d=c[0];b=d.name+"_$"+c.slice(1).map(function(g){return g.name}).join("_")+"$";var e=Eb[b];if(void 0!==e)return e;var f=Array(a-1);e=Cb((g,k,m,l)=>{for(var n=0,p=0;p<a-1;++p)f[p]=c[p+1].readValueFromPointer(l+n),n+=c[p+1].argPackAdvance;g=g[k].apply(g,
403
- f);for(p=0;p<a-1;++p)c[p+1].ma&&c[p+1].ma(f[p]);if(!d.va)return d.toWireType(m,g)});return Eb[b]=e},D:function(a){4<a&&(J[a].ga+=1);},r:function(a){var b=M(a);Wa(b);qb(a);},c:function(){x("");},x:function(a,b,c){A.copyWithin(a,b,b+c);},w:function(a){var b=A.length;a>>>=0;if(2147483648<a)return !1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math;d=Math.max(a,d);e=e.min.call(e,2147483648,d+(65536-d%65536)%65536);a:{try{fa.grow(e-ia.byteLength+65535>>>16);na();var f=1;break a}catch(g){}f=
404
- void 0;}if(f)return !0}return !1},z:function(){return 52},u:function(){return 70},y:function(a,b,c,d){for(var e=0,f=0;f<c;f++){var g=E[b>>2],k=E[b+4>>2];b+=8;for(var m=0;m<k;m++){var l=A[g+m],n=Fb[a];0===l||10===l?((1===a?ea:v)(z(n,0)),n.length=0):n.push(l);}e+=k;}E[d>>2]=e;return 0}};
405
- (function(){function a(e){h.asm=e.exports;fa=h.asm.E;na();oa=h.asm.J;qa.unshift(h.asm.F);F--;h.monitorRunDependencies&&h.monitorRunDependencies(F);0==F&&(G&&(e=G,G=null,e()));}function b(e){a(e.instance);}function c(e){return ya().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){v("failed to asynchronously prepare wasm: "+f);x(f);})}var d={a:Jb};F++;h.monitorRunDependencies&&h.monitorRunDependencies(F);if(h.instantiateWasm)try{return h.instantiateWasm(d,
406
- a)}catch(e){v("Module.instantiateWasm callback failed with error: "+e),ca(e);}(function(){return w||"function"!=typeof WebAssembly.instantiateStreaming||ua(H)||"function"!=typeof fetch?c(b):fetch(H,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){v("wasm streaming compile failed: "+f);v("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ca);return {}})();
407
- h.___wasm_call_ctors=function(){return (h.___wasm_call_ctors=h.asm.F).apply(null,arguments)};var Ka=h.___getTypeName=function(){return (Ka=h.___getTypeName=h.asm.G).apply(null,arguments)};h.__embind_initialize_bindings=function(){return (h.__embind_initialize_bindings=h.asm.H).apply(null,arguments)};var Ib=h._malloc=function(){return (Ib=h._malloc=h.asm.I).apply(null,arguments)},S=h._free=function(){return (S=h._free=h.asm.K).apply(null,arguments)};
408
- h.dynCall_jiji=function(){return (h.dynCall_jiji=h.asm.L).apply(null,arguments)};var Kb;G=function Lb(){Kb||Mb();Kb||(G=Lb);};
409
- function Mb(){function a(){if(!Kb&&(Kb=!0,h.calledRun=!0,!ha)){za(qa);aa(h);if(h.onRuntimeInitialized)h.onRuntimeInitialized();if(h.postRun)for("function"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();ra.unshift(b);}za(ra);}}if(!(0<F)){if(h.preRun)for("function"==typeof h.preRun&&(h.preRun=[h.preRun]);h.preRun.length;)sa();za(pa);0<F||(h.setStatus?(h.setStatus("Running..."),setTimeout(function(){setTimeout(function(){h.setStatus("");},1);a();},1)):a());}}
410
- if(h.preInit)for("function"==typeof h.preInit&&(h.preInit=[h.preInit]);0<h.preInit.length;)h.preInit.pop()();Mb();
411
-
412
-
413
- return loadYoga.ready
414
- }
415
- );
416
- })();
417
-
418
- /**
419
- * Copyright (c) Meta Platforms, Inc. and affiliates.
420
- *
421
- * This source code is licensed under the MIT license found in the
422
- * LICENSE file in the root directory of this source tree.
423
- */
424
-
425
- // @generated by enums.py
426
-
427
- let Align = /*#__PURE__*/function (Align) {
428
- Align[Align["Auto"] = 0] = "Auto";
429
- Align[Align["FlexStart"] = 1] = "FlexStart";
430
- Align[Align["Center"] = 2] = "Center";
431
- Align[Align["FlexEnd"] = 3] = "FlexEnd";
432
- Align[Align["Stretch"] = 4] = "Stretch";
433
- Align[Align["Baseline"] = 5] = "Baseline";
434
- Align[Align["SpaceBetween"] = 6] = "SpaceBetween";
435
- Align[Align["SpaceAround"] = 7] = "SpaceAround";
436
- Align[Align["SpaceEvenly"] = 8] = "SpaceEvenly";
437
- return Align;
438
- }({});
439
- let Dimension = /*#__PURE__*/function (Dimension) {
440
- Dimension[Dimension["Width"] = 0] = "Width";
441
- Dimension[Dimension["Height"] = 1] = "Height";
442
- return Dimension;
443
- }({});
444
- let Direction = /*#__PURE__*/function (Direction) {
445
- Direction[Direction["Inherit"] = 0] = "Inherit";
446
- Direction[Direction["LTR"] = 1] = "LTR";
447
- Direction[Direction["RTL"] = 2] = "RTL";
448
- return Direction;
449
- }({});
450
- let Display = /*#__PURE__*/function (Display) {
451
- Display[Display["Flex"] = 0] = "Flex";
452
- Display[Display["None"] = 1] = "None";
453
- return Display;
454
- }({});
455
- let Edge = /*#__PURE__*/function (Edge) {
456
- Edge[Edge["Left"] = 0] = "Left";
457
- Edge[Edge["Top"] = 1] = "Top";
458
- Edge[Edge["Right"] = 2] = "Right";
459
- Edge[Edge["Bottom"] = 3] = "Bottom";
460
- Edge[Edge["Start"] = 4] = "Start";
461
- Edge[Edge["End"] = 5] = "End";
462
- Edge[Edge["Horizontal"] = 6] = "Horizontal";
463
- Edge[Edge["Vertical"] = 7] = "Vertical";
464
- Edge[Edge["All"] = 8] = "All";
465
- return Edge;
466
- }({});
467
- let Errata = /*#__PURE__*/function (Errata) {
468
- Errata[Errata["None"] = 0] = "None";
469
- Errata[Errata["StretchFlexBasis"] = 1] = "StretchFlexBasis";
470
- Errata[Errata["AbsolutePositioningIncorrect"] = 2] = "AbsolutePositioningIncorrect";
471
- Errata[Errata["AbsolutePercentAgainstInnerSize"] = 4] = "AbsolutePercentAgainstInnerSize";
472
- Errata[Errata["All"] = 2147483647] = "All";
473
- Errata[Errata["Classic"] = 2147483646] = "Classic";
474
- return Errata;
475
- }({});
476
- let ExperimentalFeature = /*#__PURE__*/function (ExperimentalFeature) {
477
- ExperimentalFeature[ExperimentalFeature["WebFlexBasis"] = 0] = "WebFlexBasis";
478
- return ExperimentalFeature;
479
- }({});
480
- let FlexDirection = /*#__PURE__*/function (FlexDirection) {
481
- FlexDirection[FlexDirection["Column"] = 0] = "Column";
482
- FlexDirection[FlexDirection["ColumnReverse"] = 1] = "ColumnReverse";
483
- FlexDirection[FlexDirection["Row"] = 2] = "Row";
484
- FlexDirection[FlexDirection["RowReverse"] = 3] = "RowReverse";
485
- return FlexDirection;
486
- }({});
487
- let Gutter = /*#__PURE__*/function (Gutter) {
488
- Gutter[Gutter["Column"] = 0] = "Column";
489
- Gutter[Gutter["Row"] = 1] = "Row";
490
- Gutter[Gutter["All"] = 2] = "All";
491
- return Gutter;
492
- }({});
493
- let Justify = /*#__PURE__*/function (Justify) {
494
- Justify[Justify["FlexStart"] = 0] = "FlexStart";
495
- Justify[Justify["Center"] = 1] = "Center";
496
- Justify[Justify["FlexEnd"] = 2] = "FlexEnd";
497
- Justify[Justify["SpaceBetween"] = 3] = "SpaceBetween";
498
- Justify[Justify["SpaceAround"] = 4] = "SpaceAround";
499
- Justify[Justify["SpaceEvenly"] = 5] = "SpaceEvenly";
500
- return Justify;
501
- }({});
502
- let LogLevel = /*#__PURE__*/function (LogLevel) {
503
- LogLevel[LogLevel["Error"] = 0] = "Error";
504
- LogLevel[LogLevel["Warn"] = 1] = "Warn";
505
- LogLevel[LogLevel["Info"] = 2] = "Info";
506
- LogLevel[LogLevel["Debug"] = 3] = "Debug";
507
- LogLevel[LogLevel["Verbose"] = 4] = "Verbose";
508
- LogLevel[LogLevel["Fatal"] = 5] = "Fatal";
509
- return LogLevel;
510
- }({});
511
- let MeasureMode = /*#__PURE__*/function (MeasureMode) {
512
- MeasureMode[MeasureMode["Undefined"] = 0] = "Undefined";
513
- MeasureMode[MeasureMode["Exactly"] = 1] = "Exactly";
514
- MeasureMode[MeasureMode["AtMost"] = 2] = "AtMost";
515
- return MeasureMode;
516
- }({});
517
- let NodeType = /*#__PURE__*/function (NodeType) {
518
- NodeType[NodeType["Default"] = 0] = "Default";
519
- NodeType[NodeType["Text"] = 1] = "Text";
520
- return NodeType;
521
- }({});
522
- let Overflow = /*#__PURE__*/function (Overflow) {
523
- Overflow[Overflow["Visible"] = 0] = "Visible";
524
- Overflow[Overflow["Hidden"] = 1] = "Hidden";
525
- Overflow[Overflow["Scroll"] = 2] = "Scroll";
526
- return Overflow;
527
- }({});
528
- let PositionType = /*#__PURE__*/function (PositionType) {
529
- PositionType[PositionType["Static"] = 0] = "Static";
530
- PositionType[PositionType["Relative"] = 1] = "Relative";
531
- PositionType[PositionType["Absolute"] = 2] = "Absolute";
532
- return PositionType;
533
- }({});
534
- let Unit = /*#__PURE__*/function (Unit) {
535
- Unit[Unit["Undefined"] = 0] = "Undefined";
536
- Unit[Unit["Point"] = 1] = "Point";
537
- Unit[Unit["Percent"] = 2] = "Percent";
538
- Unit[Unit["Auto"] = 3] = "Auto";
539
- return Unit;
540
- }({});
541
- let Wrap = /*#__PURE__*/function (Wrap) {
542
- Wrap[Wrap["NoWrap"] = 0] = "NoWrap";
543
- Wrap[Wrap["Wrap"] = 1] = "Wrap";
544
- Wrap[Wrap["WrapReverse"] = 2] = "WrapReverse";
545
- return Wrap;
546
- }({});
547
- const constants = {
548
- ALIGN_AUTO: Align.Auto,
549
- ALIGN_FLEX_START: Align.FlexStart,
550
- ALIGN_CENTER: Align.Center,
551
- ALIGN_FLEX_END: Align.FlexEnd,
552
- ALIGN_STRETCH: Align.Stretch,
553
- ALIGN_BASELINE: Align.Baseline,
554
- ALIGN_SPACE_BETWEEN: Align.SpaceBetween,
555
- ALIGN_SPACE_AROUND: Align.SpaceAround,
556
- ALIGN_SPACE_EVENLY: Align.SpaceEvenly,
557
- DIMENSION_WIDTH: Dimension.Width,
558
- DIMENSION_HEIGHT: Dimension.Height,
559
- DIRECTION_INHERIT: Direction.Inherit,
560
- DIRECTION_LTR: Direction.LTR,
561
- DIRECTION_RTL: Direction.RTL,
562
- DISPLAY_FLEX: Display.Flex,
563
- DISPLAY_NONE: Display.None,
564
- EDGE_LEFT: Edge.Left,
565
- EDGE_TOP: Edge.Top,
566
- EDGE_RIGHT: Edge.Right,
567
- EDGE_BOTTOM: Edge.Bottom,
568
- EDGE_START: Edge.Start,
569
- EDGE_END: Edge.End,
570
- EDGE_HORIZONTAL: Edge.Horizontal,
571
- EDGE_VERTICAL: Edge.Vertical,
572
- EDGE_ALL: Edge.All,
573
- ERRATA_NONE: Errata.None,
574
- ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,
575
- ERRATA_ABSOLUTE_POSITIONING_INCORRECT: Errata.AbsolutePositioningIncorrect,
576
- ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE: Errata.AbsolutePercentAgainstInnerSize,
577
- ERRATA_ALL: Errata.All,
578
- ERRATA_CLASSIC: Errata.Classic,
579
- EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,
580
- FLEX_DIRECTION_COLUMN: FlexDirection.Column,
581
- FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,
582
- FLEX_DIRECTION_ROW: FlexDirection.Row,
583
- FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,
584
- GUTTER_COLUMN: Gutter.Column,
585
- GUTTER_ROW: Gutter.Row,
586
- GUTTER_ALL: Gutter.All,
587
- JUSTIFY_FLEX_START: Justify.FlexStart,
588
- JUSTIFY_CENTER: Justify.Center,
589
- JUSTIFY_FLEX_END: Justify.FlexEnd,
590
- JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,
591
- JUSTIFY_SPACE_AROUND: Justify.SpaceAround,
592
- JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,
593
- LOG_LEVEL_ERROR: LogLevel.Error,
594
- LOG_LEVEL_WARN: LogLevel.Warn,
595
- LOG_LEVEL_INFO: LogLevel.Info,
596
- LOG_LEVEL_DEBUG: LogLevel.Debug,
597
- LOG_LEVEL_VERBOSE: LogLevel.Verbose,
598
- LOG_LEVEL_FATAL: LogLevel.Fatal,
599
- MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,
600
- MEASURE_MODE_EXACTLY: MeasureMode.Exactly,
601
- MEASURE_MODE_AT_MOST: MeasureMode.AtMost,
602
- NODE_TYPE_DEFAULT: NodeType.Default,
603
- NODE_TYPE_TEXT: NodeType.Text,
604
- OVERFLOW_VISIBLE: Overflow.Visible,
605
- OVERFLOW_HIDDEN: Overflow.Hidden,
606
- OVERFLOW_SCROLL: Overflow.Scroll,
607
- POSITION_TYPE_STATIC: PositionType.Static,
608
- POSITION_TYPE_RELATIVE: PositionType.Relative,
609
- POSITION_TYPE_ABSOLUTE: PositionType.Absolute,
610
- UNIT_UNDEFINED: Unit.Undefined,
611
- UNIT_POINT: Unit.Point,
612
- UNIT_PERCENT: Unit.Percent,
613
- UNIT_AUTO: Unit.Auto,
614
- WRAP_NO_WRAP: Wrap.NoWrap,
615
- WRAP_WRAP: Wrap.Wrap,
616
- WRAP_WRAP_REVERSE: Wrap.WrapReverse
617
- };
618
-
619
- /**
620
- * Copyright (c) Meta Platforms, Inc. and affiliates.
621
- *
622
- * This source code is licensed under the MIT license found in the
623
- * LICENSE file in the root directory of this source tree.
624
- *
625
- * @format
626
- */
627
-
628
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
629
- function wrapAssembly(lib) {
630
- function patch(prototype, name, fn) {
631
- const original = prototype[name];
632
- prototype[name] = function () {
633
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
634
- args[_key] = arguments[_key];
635
- }
636
- return fn.call(this, original, ...args);
637
- };
638
- }
639
- for (const fnName of ['setPosition', 'setMargin', 'setFlexBasis', 'setWidth', 'setHeight', 'setMinWidth', 'setMinHeight', 'setMaxWidth', 'setMaxHeight', 'setPadding']) {
640
- const methods = {
641
- [Unit.Point]: lib.Node.prototype[fnName],
642
- [Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],
643
- [Unit.Auto]: lib.Node.prototype[`${fnName}Auto`]
644
- };
645
- patch(lib.Node.prototype, fnName, function (original) {
646
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
647
- args[_key2 - 1] = arguments[_key2];
648
- }
649
- // We patch all these functions to add support for the following calls:
650
- // .setWidth(100) / .setWidth("100%") / .setWidth(.getWidth()) / .setWidth("auto")
651
-
652
- const value = args.pop();
653
- let unit, asNumber;
654
- if (value === 'auto') {
655
- unit = Unit.Auto;
656
- asNumber = undefined;
657
- } else if (typeof value === 'object') {
658
- unit = value.unit;
659
- asNumber = value.valueOf();
660
- } else {
661
- unit = typeof value === 'string' && value.endsWith('%') ? Unit.Percent : Unit.Point;
662
- asNumber = parseFloat(value);
663
- if (value !== undefined && !Number.isNaN(value) && Number.isNaN(asNumber)) {
664
- throw new Error(`Invalid value ${value} for ${fnName}`);
665
- }
666
- }
667
- if (!methods[unit]) throw new Error(`Failed to execute "${fnName}": Unsupported unit '${value}'`);
668
- if (asNumber !== undefined) {
669
- return methods[unit].call(this, ...args, asNumber);
670
- } else {
671
- return methods[unit].call(this, ...args);
672
- }
673
- });
674
- }
675
- function wrapMeasureFunction(measureFunction) {
676
- return lib.MeasureCallback.implement({
677
- measure: function () {
678
- const {
679
- width,
680
- height
681
- } = measureFunction(...arguments);
682
- return {
683
- width: width ?? NaN,
684
- height: height ?? NaN
685
- };
686
- }
687
- });
688
- }
689
- patch(lib.Node.prototype, 'setMeasureFunc', function (original, measureFunc) {
690
- // This patch is just a convenience patch, since it helps write more
691
- // idiomatic source code (such as .setMeasureFunc(null))
692
- if (measureFunc) {
693
- return original.call(this, wrapMeasureFunction(measureFunc));
694
- } else {
695
- return this.unsetMeasureFunc();
696
- }
697
- });
698
- function wrapDirtiedFunc(dirtiedFunction) {
699
- return lib.DirtiedCallback.implement({
700
- dirtied: dirtiedFunction
701
- });
702
- }
703
- patch(lib.Node.prototype, 'setDirtiedFunc', function (original, dirtiedFunc) {
704
- original.call(this, wrapDirtiedFunc(dirtiedFunc));
705
- });
706
- patch(lib.Config.prototype, 'free', function () {
707
- // Since we handle the memory allocation ourselves (via lib.Config.create),
708
- // we also need to handle the deallocation
709
- lib.Config.destroy(this);
710
- });
711
- patch(lib.Node, 'create', (_, config) => {
712
- // We decide the constructor we want to call depending on the parameters
713
- return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();
714
- });
715
- patch(lib.Node.prototype, 'free', function () {
716
- // Since we handle the memory allocation ourselves (via lib.Node.create),
717
- // we also need to handle the deallocation
718
- lib.Node.destroy(this);
719
- });
720
- patch(lib.Node.prototype, 'freeRecursive', function () {
721
- for (let t = 0, T = this.getChildCount(); t < T; ++t) {
722
- this.getChild(0).freeRecursive();
723
- }
724
- this.free();
725
- });
726
- patch(lib.Node.prototype, 'calculateLayout', function (original) {
727
- let width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;
728
- let height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NaN;
729
- let direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Direction.LTR;
730
- // Just a small patch to add support for the function default parameters
731
- return original.call(this, width, height, direction);
732
- });
733
- return {
734
- Config: lib.Config,
735
- Node: lib.Node,
736
- ...constants
737
- };
738
- }
739
-
740
- /**
741
- * Copyright (c) Meta Platforms, Inc. and affiliates.
742
- *
743
- * This source code is licensed under the MIT license found in the
744
- * LICENSE file in the root directory of this source tree.
745
- *
746
- * @format
747
- */
748
-
749
- wrapAssembly(await loadYoga());
750
-
751
- var invariant = function() {
752
- };
753
-
754
- const clamp$1 = (min, max, v) => Math.min(Math.max(v, min), max);
755
-
756
- const progress = (from, to, value) => {
757
- const toFromDifference = to - from;
758
- return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;
759
- };
760
-
761
- const mix = (from, to, progress) => -progress * from + progress * to + from;
762
-
763
- const clamp = (min, max) => (v) => Math.max(Math.min(v, max), min);
764
- const sanitize = (v) => (v % 1 ? Number(v.toFixed(5)) : v);
765
- const floatRegex = /(-)?([\d]*\.?[\d])+/g;
766
- const colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi;
767
- const singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;
768
- function isString(v) {
769
- return typeof v === 'string';
770
- }
771
-
772
- const number = {
773
- test: (v) => typeof v === 'number',
774
- parse: parseFloat,
775
- transform: (v) => v,
776
- };
777
- const alpha = Object.assign(Object.assign({}, number), { transform: clamp(0, 1) });
778
- Object.assign(Object.assign({}, number), { default: 1 });
779
-
780
- const createUnitType = (unit) => ({
781
- test: (v) => isString(v) && v.endsWith(unit) && v.split(' ').length === 1,
782
- parse: parseFloat,
783
- transform: (v) => `${v}${unit}`,
784
- });
785
- const percent = createUnitType('%');
786
- Object.assign(Object.assign({}, percent), { parse: (v) => percent.parse(v) / 100, transform: (v) => percent.transform(v * 100) });
787
-
788
- const isColorString = (type, testProp) => (v) => {
789
- return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||
790
- (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));
791
- };
792
- const splitColor = (aName, bName, cName) => (v) => {
793
- if (!isString(v))
794
- return v;
795
- const [a, b, c, alpha] = v.match(floatRegex);
796
- return {
797
- [aName]: parseFloat(a),
798
- [bName]: parseFloat(b),
799
- [cName]: parseFloat(c),
800
- alpha: alpha !== undefined ? parseFloat(alpha) : 1,
801
- };
802
- };
803
-
804
- const hsla = {
805
- test: isColorString('hsl', 'hue'),
806
- parse: splitColor('hue', 'saturation', 'lightness'),
807
- transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {
808
- return ('hsla(' +
809
- Math.round(hue) +
810
- ', ' +
811
- percent.transform(sanitize(saturation)) +
812
- ', ' +
813
- percent.transform(sanitize(lightness)) +
814
- ', ' +
815
- sanitize(alpha.transform(alpha$1)) +
816
- ')');
817
- },
818
- };
819
-
820
- const clampRgbUnit = clamp(0, 255);
821
- const rgbUnit = Object.assign(Object.assign({}, number), { transform: (v) => Math.round(clampRgbUnit(v)) });
822
- const rgba = {
823
- test: isColorString('rgb', 'red'),
824
- parse: splitColor('red', 'green', 'blue'),
825
- transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => 'rgba(' +
826
- rgbUnit.transform(red) +
827
- ', ' +
828
- rgbUnit.transform(green) +
829
- ', ' +
830
- rgbUnit.transform(blue) +
831
- ', ' +
832
- sanitize(alpha.transform(alpha$1)) +
833
- ')',
834
- };
835
-
836
- function parseHex(v) {
837
- let r = '';
838
- let g = '';
839
- let b = '';
840
- let a = '';
841
- if (v.length > 5) {
842
- r = v.substr(1, 2);
843
- g = v.substr(3, 2);
844
- b = v.substr(5, 2);
845
- a = v.substr(7, 2);
846
- }
847
- else {
848
- r = v.substr(1, 1);
849
- g = v.substr(2, 1);
850
- b = v.substr(3, 1);
851
- a = v.substr(4, 1);
852
- r += r;
853
- g += g;
854
- b += b;
855
- a += a;
856
- }
857
- return {
858
- red: parseInt(r, 16),
859
- green: parseInt(g, 16),
860
- blue: parseInt(b, 16),
861
- alpha: a ? parseInt(a, 16) / 255 : 1,
862
- };
863
- }
864
- const hex = {
865
- test: isColorString('#'),
866
- parse: parseHex,
867
- transform: rgba.transform,
868
- };
869
-
870
- const color = {
871
- test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),
872
- parse: (v) => {
873
- if (rgba.test(v)) {
874
- return rgba.parse(v);
875
- }
876
- else if (hsla.test(v)) {
877
- return hsla.parse(v);
878
- }
879
- else {
880
- return hex.parse(v);
881
- }
882
- },
883
- transform: (v) => {
884
- return isString(v)
885
- ? v
886
- : v.hasOwnProperty('red')
887
- ? rgba.transform(v)
888
- : hsla.transform(v);
889
- },
890
- };
891
-
892
- const colorToken = '${c}';
893
- const numberToken = '${n}';
894
- function test(v) {
895
- var _a, _b, _c, _d;
896
- return (isNaN(v) &&
897
- isString(v) &&
898
- ((_b = (_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + ((_d = (_c = v.match(colorRegex)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0);
899
- }
900
- function analyse$1(v) {
901
- if (typeof v === 'number')
902
- v = `${v}`;
903
- const values = [];
904
- let numColors = 0;
905
- const colors = v.match(colorRegex);
906
- if (colors) {
907
- numColors = colors.length;
908
- v = v.replace(colorRegex, colorToken);
909
- values.push(...colors.map(color.parse));
910
- }
911
- const numbers = v.match(floatRegex);
912
- if (numbers) {
913
- v = v.replace(floatRegex, numberToken);
914
- values.push(...numbers.map(number.parse));
915
- }
916
- return { values, numColors, tokenised: v };
917
- }
918
- function parse(v) {
919
- return analyse$1(v).values;
920
- }
921
- function createTransformer(v) {
922
- const { values, numColors, tokenised } = analyse$1(v);
923
- const numValues = values.length;
924
- return (v) => {
925
- let output = tokenised;
926
- for (let i = 0; i < numValues; i++) {
927
- output = output.replace(i < numColors ? colorToken : numberToken, i < numColors ? color.transform(v[i]) : sanitize(v[i]));
928
- }
929
- return output;
930
- };
931
- }
932
- const convertNumbersToZero = (v) => typeof v === 'number' ? 0 : v;
933
- function getAnimatableNone(v) {
934
- const parsed = parse(v);
935
- const transformer = createTransformer(v);
936
- return transformer(parsed.map(convertNumbersToZero));
937
- }
938
- const complex = { test, parse, createTransformer, getAnimatableNone };
939
-
940
- function hueToRgb(p, q, t) {
941
- if (t < 0)
942
- t += 1;
943
- if (t > 1)
944
- t -= 1;
945
- if (t < 1 / 6)
946
- return p + (q - p) * 6 * t;
947
- if (t < 1 / 2)
948
- return q;
949
- if (t < 2 / 3)
950
- return p + (q - p) * (2 / 3 - t) * 6;
951
- return p;
952
- }
953
- function hslaToRgba({ hue, saturation, lightness, alpha }) {
954
- hue /= 360;
955
- saturation /= 100;
956
- lightness /= 100;
957
- let red = 0;
958
- let green = 0;
959
- let blue = 0;
960
- if (!saturation) {
961
- red = green = blue = lightness;
962
- }
963
- else {
964
- const q = lightness < 0.5
965
- ? lightness * (1 + saturation)
966
- : lightness + saturation - lightness * saturation;
967
- const p = 2 * lightness - q;
968
- red = hueToRgb(p, q, hue + 1 / 3);
969
- green = hueToRgb(p, q, hue);
970
- blue = hueToRgb(p, q, hue - 1 / 3);
971
- }
972
- return {
973
- red: Math.round(red * 255),
974
- green: Math.round(green * 255),
975
- blue: Math.round(blue * 255),
976
- alpha,
977
- };
978
- }
979
-
980
- const mixLinearColor = (from, to, v) => {
981
- const fromExpo = from * from;
982
- const toExpo = to * to;
983
- return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));
984
- };
985
- const colorTypes = [hex, rgba, hsla];
986
- const getColorType = (v) => colorTypes.find((type) => type.test(v));
987
- const mixColor = (from, to) => {
988
- let fromColorType = getColorType(from);
989
- let toColorType = getColorType(to);
990
- let fromColor = fromColorType.parse(from);
991
- let toColor = toColorType.parse(to);
992
- if (fromColorType === hsla) {
993
- fromColor = hslaToRgba(fromColor);
994
- fromColorType = rgba;
995
- }
996
- if (toColorType === hsla) {
997
- toColor = hslaToRgba(toColor);
998
- toColorType = rgba;
999
- }
1000
- const blended = Object.assign({}, fromColor);
1001
- return (v) => {
1002
- for (const key in blended) {
1003
- if (key !== "alpha") {
1004
- blended[key] = mixLinearColor(fromColor[key], toColor[key], v);
1005
- }
1006
- }
1007
- blended.alpha = mix(fromColor.alpha, toColor.alpha, v);
1008
- return fromColorType.transform(blended);
1009
- };
1010
- };
1011
-
1012
- const isNum = (v) => typeof v === 'number';
1013
-
1014
- const combineFunctions = (a, b) => (v) => b(a(v));
1015
- const pipe = (...transformers) => transformers.reduce(combineFunctions);
1016
-
1017
- function getMixer(origin, target) {
1018
- if (isNum(origin)) {
1019
- return (v) => mix(origin, target, v);
1020
- }
1021
- else if (color.test(origin)) {
1022
- return mixColor(origin, target);
1023
- }
1024
- else {
1025
- return mixComplex(origin, target);
1026
- }
1027
- }
1028
- const mixArray = (from, to) => {
1029
- const output = [...from];
1030
- const numValues = output.length;
1031
- const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));
1032
- return (v) => {
1033
- for (let i = 0; i < numValues; i++) {
1034
- output[i] = blendValue[i](v);
1035
- }
1036
- return output;
1037
- };
1038
- };
1039
- const mixObject = (origin, target) => {
1040
- const output = Object.assign(Object.assign({}, origin), target);
1041
- const blendValue = {};
1042
- for (const key in output) {
1043
- if (origin[key] !== undefined && target[key] !== undefined) {
1044
- blendValue[key] = getMixer(origin[key], target[key]);
1045
- }
1046
- }
1047
- return (v) => {
1048
- for (const key in blendValue) {
1049
- output[key] = blendValue[key](v);
1050
- }
1051
- return output;
1052
- };
1053
- };
1054
- function analyse(value) {
1055
- const parsed = complex.parse(value);
1056
- const numValues = parsed.length;
1057
- let numNumbers = 0;
1058
- let numRGB = 0;
1059
- let numHSL = 0;
1060
- for (let i = 0; i < numValues; i++) {
1061
- if (numNumbers || typeof parsed[i] === "number") {
1062
- numNumbers++;
1063
- }
1064
- else {
1065
- if (parsed[i].hue !== undefined) {
1066
- numHSL++;
1067
- }
1068
- else {
1069
- numRGB++;
1070
- }
1071
- }
1072
- }
1073
- return { parsed, numNumbers, numRGB, numHSL };
1074
- }
1075
- const mixComplex = (origin, target) => {
1076
- const template = complex.createTransformer(target);
1077
- const originStats = analyse(origin);
1078
- const targetStats = analyse(target);
1079
- const canInterpolate = originStats.numHSL === targetStats.numHSL &&
1080
- originStats.numRGB === targetStats.numRGB &&
1081
- originStats.numNumbers >= targetStats.numNumbers;
1082
- if (canInterpolate) {
1083
- return pipe(mixArray(originStats.parsed, targetStats.parsed), template);
1084
- }
1085
- else {
1086
- return (p) => `${p > 0 ? target : origin}`;
1087
- }
1088
- };
1089
-
1090
- const mixNumber = (from, to) => (p) => mix(from, to, p);
1091
- function detectMixerFactory(v) {
1092
- if (typeof v === 'number') {
1093
- return mixNumber;
1094
- }
1095
- else if (typeof v === 'string') {
1096
- if (color.test(v)) {
1097
- return mixColor;
1098
- }
1099
- else {
1100
- return mixComplex;
1101
- }
1102
- }
1103
- else if (Array.isArray(v)) {
1104
- return mixArray;
1105
- }
1106
- else if (typeof v === 'object') {
1107
- return mixObject;
1108
- }
1109
- }
1110
- function createMixers(output, ease, customMixer) {
1111
- const mixers = [];
1112
- const mixerFactory = customMixer || detectMixerFactory(output[0]);
1113
- const numMixers = output.length - 1;
1114
- for (let i = 0; i < numMixers; i++) {
1115
- let mixer = mixerFactory(output[i], output[i + 1]);
1116
- if (ease) {
1117
- const easingFunction = Array.isArray(ease) ? ease[i] : ease;
1118
- mixer = pipe(easingFunction, mixer);
1119
- }
1120
- mixers.push(mixer);
1121
- }
1122
- return mixers;
1123
- }
1124
- function fastInterpolate([from, to], [mixer]) {
1125
- return (v) => mixer(progress(from, to, v));
1126
- }
1127
- function slowInterpolate(input, mixers) {
1128
- const inputLength = input.length;
1129
- const lastInputIndex = inputLength - 1;
1130
- return (v) => {
1131
- let mixerIndex = 0;
1132
- let foundMixerIndex = false;
1133
- if (v <= input[0]) {
1134
- foundMixerIndex = true;
1135
- }
1136
- else if (v >= input[lastInputIndex]) {
1137
- mixerIndex = lastInputIndex - 1;
1138
- foundMixerIndex = true;
1139
- }
1140
- if (!foundMixerIndex) {
1141
- let i = 1;
1142
- for (; i < inputLength; i++) {
1143
- if (input[i] > v || i === lastInputIndex) {
1144
- break;
1145
- }
1146
- }
1147
- mixerIndex = i - 1;
1148
- }
1149
- const progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);
1150
- return mixers[mixerIndex](progressInRange);
1151
- };
1152
- }
1153
- function interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {
1154
- const inputLength = input.length;
1155
- invariant(inputLength === output.length);
1156
- invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1);
1157
- if (input[0] > input[inputLength - 1]) {
1158
- input = [].concat(input);
1159
- output = [].concat(output);
1160
- input.reverse();
1161
- output.reverse();
1162
- }
1163
- const mixers = createMixers(output, ease, mixer);
1164
- const interpolator = inputLength === 2
1165
- ? fastInterpolate(input, mixers)
1166
- : slowInterpolate(input, mixers);
1167
- return isClamp
1168
- ? (v) => interpolator(clamp$1(input[0], input[inputLength - 1], v))
1169
- : interpolator;
1170
- }
1171
-
1172
- const reverseEasing = easing => p => 1 - easing(1 - p);
1173
- const mirrorEasing = easing => p => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;
1174
- const createExpoIn = (power) => p => Math.pow(p, power);
1175
- const createBackIn = (power) => p => p * p * ((power + 1) * p - power);
1176
- const createAnticipate = (power) => {
1177
- const backEasing = createBackIn(power);
1178
- return p => (p *= 2) < 1
1179
- ? 0.5 * backEasing(p)
1180
- : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));
1181
- };
1182
-
1183
- const DEFAULT_OVERSHOOT_STRENGTH = 1.525;
1184
- const BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;
1185
- const BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;
1186
- const BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;
1187
- const linear = p => p;
1188
- const easeIn = createExpoIn(2);
1189
- const easeOut = reverseEasing(easeIn);
1190
- const easeInOut = mirrorEasing(easeIn);
1191
- const circIn = p => 1 - Math.sin(Math.acos(p));
1192
- const circOut = reverseEasing(circIn);
1193
- const circInOut = mirrorEasing(circOut);
1194
- const backIn = createBackIn(DEFAULT_OVERSHOOT_STRENGTH);
1195
- const backOut = reverseEasing(backIn);
1196
- const backInOut = mirrorEasing(backIn);
1197
- const anticipate = createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);
1198
- const ca = 4356.0 / 361.0;
1199
- const cb = 35442.0 / 1805.0;
1200
- const cc = 16061.0 / 1805.0;
1201
- const bounceOut = (p) => {
1202
- if (p === 1 || p === 0)
1203
- return p;
1204
- const p2 = p * p;
1205
- return p < BOUNCE_FIRST_THRESHOLD
1206
- ? 7.5625 * p2
1207
- : p < BOUNCE_SECOND_THRESHOLD
1208
- ? 9.075 * p2 - 9.9 * p + 3.4
1209
- : p < BOUNCE_THIRD_THRESHOLD
1210
- ? ca * p2 - cb * p + cc
1211
- : 10.8 * p * p - 20.52 * p + 10.72;
1212
- };
1213
- const bounceIn = reverseEasing(bounceOut);
1214
- const bounceInOut = (p) => p < 0.5
1215
- ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0))
1216
- : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;
1217
-
1218
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
1219
-
1220
- function getDefaultExportFromCjs (x) {
1221
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
1222
- }
1223
-
1224
- var squirrelly_min = {exports: {}};
1225
-
1226
- (function (module, exports) {
1227
- !function(e,t){t(exports);}(commonjsGlobal,(function(e){function t(e){var n,r,a=new Error(e);return n=a,r=t.prototype,Object.setPrototypeOf?Object.setPrototypeOf(n,r):n.__proto__=r,a}function n(e,n,r){var a=n.slice(0,r).split(/\n/),i=a.length,s=a[i-1].length+1;throw t(e+=" at line "+i+" col "+s+":\n\n "+n.split(/\n/)[i-1]+"\n "+Array(s).join(" ")+"^")}t.prototype=Object.create(Error.prototype,{name:{value:"Squirrelly Error",enumerable:!1}});var r=new Function("return this")().Promise,a=!1;try{a=new Function("return (async function(){}).constructor")();}catch(e){if(!(e instanceof SyntaxError))throw e}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e,t,n){for(var r in t)i(t,r)&&(null==t[r]||"object"!=typeof t[r]||"storage"!==r&&"prefixes"!==r||n?e[r]=t[r]:e[r]=s({},t[r]));return e}var c=/^async +/,o=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,l=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,f=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g,u=/[.*+\-?^${}()|[\]\\]/g;function p(e){return u.test(e)?e.replace(u,"\\$&"):e}function h(e,r){r.rmWhitespace&&(e=e.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")),o.lastIndex=0,l.lastIndex=0,f.lastIndex=0;var a=r.prefixes,i=[a.h,a.b,a.i,a.r,a.c,a.e].reduce((function(e,t){return e&&t?e+"|"+p(t):t?p(t):e}),""),s=new RegExp("([|()]|=>)|('|\"|`|\\/\\*)|\\s*((\\/)?(-|_)?"+p(r.tags[1])+")","g"),u=new RegExp("([^]*?)"+p(r.tags[0])+"(-|_)?\\s*("+i+")?\\s*","g"),h=0,d=!1;function g(t,a){var i,p={f:[]},g=0,v="c";function m(t){var a=e.slice(h,t),i=a.trim();if("f"===v)"safe"===i?p.raw=!0:r.async&&c.test(i)?(i=i.replace(c,""),p.f.push([i,"",!0])):p.f.push([i,""]);else if("fp"===v)p.f[p.f.length-1][1]+=i;else if("err"===v){if(i){var s=a.search(/\S/);n("invalid syntax",e,h+s);}}else p[v]=i;h=t+1;}for("h"===a||"b"===a||"c"===a?v="n":"r"===a&&(p.raw=!0,a="i"),s.lastIndex=h;null!==(i=s.exec(e));){var y=i[1],x=i[2],b=i[3],w=i[4],F=i[5],S=i.index;if(y)"("===y?(0===g&&("n"===v?(m(S),v="p"):"f"===v&&(m(S),v="fp")),g++):")"===y?0===--g&&"c"!==v&&(m(S),v="err"):0===g&&"|"===y?(m(S),v="f"):"=>"===y&&(m(S),h+=1,v="res");else if(x){if("/*"===x){var I=e.indexOf("*/",s.lastIndex);-1===I&&n("unclosed comment",e,i.index),s.lastIndex=I+2;}else if("'"===x){l.lastIndex=i.index,l.exec(e)?s.lastIndex=l.lastIndex:n("unclosed string",e,i.index);}else if('"'===x){f.lastIndex=i.index,f.exec(e)?s.lastIndex=f.lastIndex:n("unclosed string",e,i.index);}else if("`"===x){o.lastIndex=i.index,o.exec(e)?s.lastIndex=o.lastIndex:n("unclosed string",e,i.index);}}else if(b)return m(S),h=S+i[0].length,u.lastIndex=h,d=F,w&&"h"===a&&(a="s"),p.t=a,p}return n("unclosed tag",e,t),p}var v=function i(s,o){s.b=[],s.d=[];var l,f=!1,p=[];function v(e,t){e&&(e=function(e,t,n,r){var a,i;return "string"==typeof t.autoTrim?a=i=t.autoTrim:Array.isArray(t.autoTrim)&&(a=t.autoTrim[1],i=t.autoTrim[0]),(n||!1===n)&&(a=n),(r||!1===r)&&(i=r),"slurp"===a&&"slurp"===i?e.trim():("_"===a||"slurp"===a?e=String.prototype.trimLeft?e.trimLeft():e.replace(/^[\s\uFEFF\xA0]+/,""):"-"!==a&&"nl"!==a||(e=e.replace(/^(?:\n|\r|\r\n)/,"")),"_"===i||"slurp"===i?e=String.prototype.trimRight?e.trimRight():e.replace(/[\s\uFEFF\xA0]+$/,""):"-"!==i&&"nl"!==i||(e=e.replace(/(?:\n|\r|\r\n)$/,"")),e)}(e,r,d,t))&&(e=e.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n"),p.push(e));}for(;null!==(l=u.exec(e));){var m,y=l[1],x=l[2],b=l[3]||"";for(var w in a)if(a[w]===b){m=w;break}v(y,x),h=l.index+l[0].length,m||n("unrecognized tag type: "+b,e,h);var F=g(l.index,m),S=F.t;if("h"===S){var I=F.n||"";r.async&&c.test(I)&&(F.a=!0,F.n=I.replace(c,"")),F=i(F),p.push(F);}else if("c"===S){if(s.n===F.n)return f?(f.d=p,s.b.push(f)):s.d=p,s;n("Helper start and end don't match",e,l.index+l[0].length);}else if("b"===S){f?(f.d=p,s.b.push(f)):s.d=p;var R=F.n||"";r.async&&c.test(R)&&(F.a=!0,F.n=R.replace(c,"")),f=F,p=[];}else if("s"===S){var T=F.n||"";r.async&&c.test(T)&&(F.a=!0,F.n=T.replace(c,"")),p.push(F);}else p.push(F);}if(!o)throw t('unclosed helper "'+s.n+'"');return v(e.slice(h,e.length),!1),s.d=p,s}({f:[]},!0);if(r.plugins)for(var m=0;m<r.plugins.length;m++){var y=r.plugins[m];y.processAST&&(v.d=y.processAST(v.d,r));}return v.d}function d(e,t){var n=h(e,t),r="var tR='';"+(t.useWith?"with("+t.varName+"||{}){":"")+x(n,t)+"if(cb){cb(null,tR)} return tR"+(t.useWith?"}":"");if(t.plugins)for(var a=0;a<t.plugins.length;a++){var i=t.plugins[a];i.processFnString&&(r=i.processFnString(r,t));}return r}function g(e,t){for(var n=0;n<t.length;n++){var r=t[n][0],a=t[n][1];e=(t[n][2]?"await ":"")+"c.l('F','"+r+"')("+e,a&&(e+=","+a),e+=")";}return e}function v(e,t,n,r,a,i){var s="{exec:"+(a?"async ":"")+y(n,t,e)+",params:["+r+"]";return i&&(s+=",name:'"+i+"'"),a&&(s+=",async:true"),s+="}"}function m(e,t){for(var n="[",r=0;r<e.length;r++){var a=e[r];n+=v(t,a.res||"",a.d,a.p||"",a.a,a.n),r<e.length&&(n+=",");}return n+="]"}function y(e,t,n){return "function("+t+"){var tR='';"+x(e,n)+"return tR}"}function x(e,t){for(var n=0,r=e.length,a="";n<r;n++){var i=e[n];if("string"==typeof i){a+="tR+='"+i+"';";}else {var s=i.t,c=i.c||"",o=i.f,l=i.n||"",f=i.p||"",u=i.res||"",p=i.b,h=!!i.a;if("i"===s){t.defaultFilter&&(c="c.l('F','"+t.defaultFilter+"')("+c+")");var d=g(c,o);!i.raw&&t.autoEscape&&(d="c.l('F','e')("+d+")"),a+="tR+="+d+";";}else if("h"===s)if(t.storage.nativeHelpers.get(l))a+=t.storage.nativeHelpers.get(l)(i,t);else {var y=(h?"await ":"")+"c.l('H','"+l+"')("+v(t,u,i.d,f,h);y+=p?","+m(p,t):",[]",a+="tR+="+g(y+=",c)",o)+";";}else "s"===s?a+="tR+="+g((h?"await ":"")+"c.l('H','"+l+"')({params:["+f+"]},[],c)",o)+";":"e"===s&&(a+=c+"\n");}}return a}var b=function(){function e(e){this.cache=e;}return e.prototype.define=function(e,t){this.cache[e]=t;},e.prototype.get=function(e){return this.cache[e]},e.prototype.remove=function(e){delete this.cache[e];},e.prototype.reset=function(){this.cache={};},e.prototype.load=function(e){s(this.cache,e,!0);},e}();function w(e,n,r,a){if(n&&n.length>0)throw t((a?"Native":"")+"Helper '"+e+"' doesn't accept blocks");if(r&&r.length>0)throw t((a?"Native":"")+"Helper '"+e+"' doesn't accept filters")}var F={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function S(e){return F[e]}var I=new b({}),R=new b({each:function(e,t){var n="",r=e.params[0];if(w("each",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i){r(t[n],n).then((function(s){a+=s,n===t.length-1?i(a):e(t,n+1,r,a,i);}));}(r,0,e.exec,n,t);}));for(var a=0;a<r.length;a++)n+=e.exec(r[a],a);return n},foreach:function(e,t){var n=e.params[0];if(w("foreach",t,!1),e.async)return new Promise((function(t){!function e(t,n,r,a,i,s){a(n[r],t[n[r]]).then((function(c){i+=c,r===n.length-1?s(i):e(t,n,r+1,a,i,s);}));}(n,Object.keys(n),0,e.exec,"",t);}));var r="";for(var a in n)i(n,a)&&(r+=e.exec(a,n[a]));return r},include:function(e,n,r){w("include",n,!1);var a=r.storage.templates.get(e.params[0]);if(!a)throw t('Could not fetch template "'+e.params[0]+'"');return a(e.params[1],r)},extends:function(e,n,r){var a=e.params[1]||{};a.content=e.exec();for(var i=0;i<n.length;i++){var s=n[i];a[s.name]=s.exec();}var c=r.storage.templates.get(e.params[0]);if(!c)throw t('Could not fetch template "'+e.params[0]+'"');return c(a,r)},useScope:function(e,t){return w("useScope",t,!1),e.exec(e.params[0])}}),T=new b({if:function(e,t){w("if",!1,e.f,!0);var n="if("+e.p+"){"+x(e.d,t)+"}";if(e.b)for(var r=0;r<e.b.length;r++){var a=e.b[r];"else"===a.n?n+="else{"+x(a.d,t)+"}":"elif"===a.n&&(n+="else if("+a.p+"){"+x(a.d,t)+"}");}return n},try:function(e,n){if(w("try",!1,e.f,!0),!e.b||1!==e.b.length||"catch"!==e.b[0].n)throw t("native helper 'try' only accepts 1 block, 'catch'");var r="try{"+x(e.d,n)+"}",a=e.b[0];return r+="catch"+(a.res?"("+a.res+")":"")+"{"+x(a.d,n)+"}"},block:function(e,t){return w("block",e.b,e.f,!0),"if(!"+t.varName+"["+e.p+"]){tR+=("+y(e.d,"",t)+")()}else{tR+="+t.varName+"["+e.p+"]}"}}),E=new b({e:function(e){var t=String(e);return /[&<>"']/.test(t)?t.replace(/[&<>"']/g,S):t}}),j={varName:"it",autoTrim:[!1,"nl"],autoEscape:!0,defaultFilter:!1,tags:["{{","}}"],l:function(e,n){if("H"===e){var r=this.storage.helpers.get(n);if(r)return r;throw t("Can't find helper '"+n+"'")}if("F"===e){var a=this.storage.filters.get(n);if(a)return a;throw t("Can't find filter '"+n+"'")}},async:!1,storage:{helpers:R,nativeHelpers:T,filters:E,templates:I},prefixes:{h:"@",b:"#",i:"",r:"*",c:"/",e:"!"},cache:!1,plugins:[],useWith:!1};function H(e,t){var n={};return s(n,j),t&&s(n,t),e&&s(n,e),n.l.bind(n),n}function O(e,n){var r=H(n||{}),i=Function;if(r.async){if(!a)throw t("This environment doesn't support async/await");i=a;}try{return new i(r.varName,"c","cb",d(e,r))}catch(n){throw n instanceof SyntaxError?t("Bad template syntax\n\n"+n.message+"\n"+Array(n.message.length+1).join("=")+"\n"+d(e,r)):n}}function _(e,t){var n;return t.cache&&t.name&&t.storage.templates.get(t.name)?t.storage.templates.get(t.name):(n="function"==typeof e?e:O(e,t),t.cache&&t.name&&t.storage.templates.define(t.name,n),n)}j.l.bind(j),e.compile=O,e.compileScope=x,e.compileScopeIntoFunction=y,e.compileToString=d,e.defaultConfig=j,e.filters=E,e.getConfig=H,e.helpers=R,e.nativeHelpers=T,e.parse=h,e.render=function(e,n,a,i){var s=H(a||{});if(!s.async)return _(e,s)(n,s);if(!i){if("function"==typeof r)return new r((function(t,r){try{t(_(e,s)(n,s));}catch(e){r(e);}}));throw t("Please provide a callback function, this env doesn't support Promises")}try{_(e,s)(n,s,i);}catch(e){return i(e)}},e.templates=I,Object.defineProperty(e,"__esModule",{value:!0});}));
1228
-
1229
- } (squirrelly_min, squirrelly_min.exports));
1230
-
1231
- var squirrelly_minExports = squirrelly_min.exports;
1232
-
1233
- const copyProperty = (to, from, property, ignoreNonConfigurable) => {
1234
- // `Function#length` should reflect the parameters of `to` not `from` since we keep its body.
1235
- // `Function#prototype` is non-writable and non-configurable so can never be modified.
1236
- if (property === 'length' || property === 'prototype') {
1237
- return;
1238
- }
1239
-
1240
- // `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.
1241
- if (property === 'arguments' || property === 'caller') {
1242
- return;
1243
- }
1244
-
1245
- const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
1246
- const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
1247
-
1248
- if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
1249
- return;
1250
- }
1251
-
1252
- Object.defineProperty(to, property, fromDescriptor);
1253
- };
1254
-
1255
- // `Object.defineProperty()` throws if the property exists, is not configurable and either:
1256
- // - one its descriptors is changed
1257
- // - it is non-writable and its value is changed
1258
- const canCopyProperty = function (toDescriptor, fromDescriptor) {
1259
- return toDescriptor === undefined || toDescriptor.configurable || (
1260
- toDescriptor.writable === fromDescriptor.writable &&
1261
- toDescriptor.enumerable === fromDescriptor.enumerable &&
1262
- toDescriptor.configurable === fromDescriptor.configurable &&
1263
- (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)
1264
- );
1265
- };
1266
-
1267
- const changePrototype = (to, from) => {
1268
- const fromPrototype = Object.getPrototypeOf(from);
1269
- if (fromPrototype === Object.getPrototypeOf(to)) {
1270
- return;
1271
- }
1272
-
1273
- Object.setPrototypeOf(to, fromPrototype);
1274
- };
1275
-
1276
- const wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\n${fromBody}`;
1277
-
1278
- const toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');
1279
- const toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');
1280
-
1281
- // We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.
1282
- // We use `bind()` instead of a closure for the same reason.
1283
- // Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.
1284
- const changeToString = (to, from, name) => {
1285
- const withName = name === '' ? '' : `with ${name.trim()}() `;
1286
- const newToString = wrappedToString.bind(null, withName, from.toString());
1287
- // Ensure `to.toString.toString` is non-enumerable and has the same `same`
1288
- Object.defineProperty(newToString, 'name', toStringName);
1289
- Object.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});
1290
- };
1291
-
1292
- function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {
1293
- const {name} = to;
1294
-
1295
- for (const property of Reflect.ownKeys(from)) {
1296
- copyProperty(to, from, property, ignoreNonConfigurable);
1297
- }
1298
-
1299
- changePrototype(to, from);
1300
- changeToString(to, from, name);
1301
-
1302
- return to;
1303
- }
1304
-
1305
- const cacheStore = new WeakMap();
1306
- /**
1307
- [Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.
1308
-
1309
- @param fn - Function to be memoized.
1310
-
1311
- @example
1312
- ```
1313
- import {setTimeout as delay} from 'node:timer/promises';
1314
- import pMemoize from 'p-memoize';
1315
- import got from 'got';
1316
-
1317
- const memoizedGot = pMemoize(got);
1318
-
1319
- await memoizedGot('https://sindresorhus.com');
1320
-
1321
- // This call is cached
1322
- await memoizedGot('https://sindresorhus.com');
1323
-
1324
- await delay(2000);
1325
-
1326
- // This call is not cached as the cache has expired
1327
- await memoizedGot('https://sindresorhus.com');
1328
- ```
1329
- */
1330
- function pMemoize(fn, { cacheKey = ([firstArgument]) => firstArgument, cache = new Map(), } = {}) {
1331
- // Promise objects can't be serialized so we keep track of them internally and only provide their resolved values to `cache`
1332
- // `Promise<AsyncReturnType<FunctionToMemoize>>` is used instead of `ReturnType<FunctionToMemoize>` because promise properties are not kept
1333
- const promiseCache = new Map();
1334
- const memoized = function (...arguments_) {
1335
- const key = cacheKey(arguments_);
1336
- if (promiseCache.has(key)) {
1337
- return promiseCache.get(key);
1338
- }
1339
- const promise = (async () => {
1340
- try {
1341
- if (cache && await cache.has(key)) {
1342
- return (await cache.get(key));
1343
- }
1344
- const promise = fn.apply(this, arguments_);
1345
- const result = await promise;
1346
- try {
1347
- return result;
1348
- }
1349
- finally {
1350
- if (cache) {
1351
- await cache.set(key, result);
1352
- }
1353
- }
1354
- }
1355
- finally {
1356
- promiseCache.delete(key);
1357
- }
1358
- })();
1359
- promiseCache.set(key, promise);
1360
- return promise;
1361
- };
1362
- mimicFunction(memoized, fn, {
1363
- ignoreNonConfigurable: true,
1364
- });
1365
- cacheStore.set(memoized, cache);
1366
- return memoized;
1367
- }
1368
-
1369
- function breakWord({ context, word, maxW = Infinity }) {
1370
- const lines = [];
1371
- const fullWordMetrics = context.measureText(word);
1372
- if (fullWordMetrics.width < maxW) {
1373
- return [{ text: word, metrics: fullWordMetrics }];
1374
- }
1375
- for (let i = 0; i < word.length; i++) {
1376
- const lastLine = lines[lines.length - 1];
1377
- const newText = (lastLine?.text ?? "") + word[i];
1378
- const newLineMetrics = context.measureText(newText);
1379
- if (newLineMetrics.width < maxW) {
1380
- lines[lastLine ? lines.length - 1 : 0] = {
1381
- text: newText,
1382
- metrics: newLineMetrics
1383
- };
1384
- } else {
1385
- lines.push({ text: word[i], metrics: context.measureText(word[i]) });
1386
- }
1387
- }
1388
- return lines;
1389
- }
1390
-
1391
- memoize(
1392
- ({ font, scale, context, maxW, maxH, text, minSize, maxSize }) => {
1393
- let fontSize = 0;
1394
- if (maxSize) {
1395
- const multiplier = 1;
1396
- fontSize = (minSize ?? 0) * scale;
1397
- let widestLine = 0;
1398
- while (maxSize * scale > fontSize + multiplier) {
1399
- fontSize += multiplier;
1400
- const lines = getLines({ context, font, fontSize, text, maxW });
1401
- widestLine = lines.reduce((acc, line) => {
1402
- if (line.metrics.width > acc) {
1403
- acc = line.metrics.width;
1404
- }
1405
- return acc;
1406
- }, 0);
1407
- if (widestLine > maxW || lines.length * fontSize > maxH) {
1408
- fontSize -= multiplier;
1409
- break;
1410
- }
1411
- }
1412
- } else {
1413
- fontSize = parseFloat(font.match(fontSizeRegex)?.groups?.value ?? "0") * scale;
1414
- }
1415
- return fontSize;
1416
- },
1417
- {
1418
- cacheKey: ([{ font, text, minSize, maxSize, scale, maxW, maxH }]) => `${font}_${text}_${minSize}_${maxSize}_${scale}_${maxW}_${maxH}`
1419
- }
1420
- );
1421
-
1422
- const easingMap = {
1423
- linear,
1424
- easeIn,
1425
- easeInOut,
1426
- easeOut,
1427
- circIn,
1428
- circInOut,
1429
- circOut,
1430
- backIn,
1431
- backInOut,
1432
- backOut,
1433
- anticipate,
1434
- bounceIn,
1435
- bounceInOut,
1436
- bounceOut
1437
- };
1438
- memoize(
1439
- (from, to, { clamp = true, ease = "easeIn", ...options } = {}) => {
1440
- return interpolate(from, to, { ...options, clamp, ease: easingMap[ease] });
1441
- },
1442
- {
1443
- cacheKey: ([from, to, options]) => JSON.stringify({ from, to, options })
1444
- }
1445
- );
1446
- const fontSizeRegex = /(?<value>\d+\.?\d*)(?=px)/;
1447
-
1448
- const getLines = memoize(
1449
- ({ context, font, fontSize, text, maxW = Infinity }) => {
1450
- try {
1451
- context.save();
1452
- context.font = font.replace(fontSizeRegex, fontSize.toString());
1453
- const newLines = text.split("\n");
1454
- return newLines.flatMap((line) => {
1455
- const words = line.split(" ").filter(Boolean);
1456
- if (!words.length) {
1457
- return { text: "", metrics: context.measureText("") };
1458
- }
1459
- return words.slice(1).reduce(
1460
- (acc, word) => {
1461
- const prevLine = acc[acc.length - 1].text;
1462
- const newLine = `${prevLine} ${word}`.trim();
1463
- const newMetrics = context.measureText(newLine);
1464
- if (newMetrics.width > maxW) {
1465
- acc = [...acc, ...breakWord({ context, word, maxW })];
1466
- } else {
1467
- acc[acc.length - 1] = {
1468
- text: newLine,
1469
- metrics: newMetrics
1470
- };
1471
- }
1472
- return acc;
1473
- },
1474
- breakWord({ context, word: words[0], maxW })
1475
- );
1476
- });
1477
- } finally {
1478
- context.restore();
1479
- }
1480
- },
1481
- {
1482
- cacheKey: ([{ font, fontSize, text, maxW }]) => `${font}_${fontSize}_${text}_${maxW}`
1483
- }
1484
- );
1485
-
1486
- const template = {
1487
- id: "046f363c-960a-449c-ae5e-984ac6ab58c2",
1488
- version: "3",
1489
- name: "None",
1490
- entityId: "none",
1491
- templateId: "a95e537e-fb4d-4d2f-9c72-86c0925c7176",
1492
- layouts: [
1493
- {
1494
- name: "none",
1495
- tree: `[
1496
- {
1497
- "width": "100%",
1498
- "height": "100%",
1499
- "node": {
1500
- "type": "video",
1501
- "format": {{ it.videoFormat }},
1502
- "value": {
1503
- "id": {{ it.id }},
1504
- "key": {{ it.key }},
1505
- "src": {{ it.src }},
1506
- "playlist": {{ it.playlist }},
1507
- "poster": {{ it.poster }},
1508
- "captions": {{ it.captions }},
1509
- "duration": {{ it.duration }},
1510
- "startOffset": {{ it.startOffset }},
1511
- "endOffset": {{ it.endOffset }},
1512
- "crop": {
1513
- "x": {{ it.crop?.x }},
1514
- "y": {{ it.crop?.y }},
1515
- "width": {{ it.crop?.width }},
1516
- "height": {{ it.crop?.height }}
1517
- }
1518
- }
1519
- }
1520
- }
1521
- ]`
1522
- }
1523
- ],
1524
- content: [
1525
- {
1526
- scenes: [
1527
- {
1528
- layout: "none",
1529
- data: `{
1530
- "id": {{ it._root?.answer?.id }},
1531
- "key": {{ it._root?.answer?.id + '-intro' }},
1532
- "poster": {{ it._root?.answer?.media?.thumbnail }},
1533
- "duration": {{ it._root?.answer?.metadata?.duration }},
1534
- "startOffset": {{ it._root?.answer?.settings?.startOffset }},
1535
- "endOffset": {{ it._root?.answer?.settings?.endOffset }},
1536
- "crop": {
1537
- "x": {{ it._root?.answer?.settings?.crop?.x }},
1538
- "y": {{ it._root?.answer?.settings?.crop?.y }},
1539
- "width": {{ it._root?.answer?.settings?.crop?.width }},
1540
- "height": {{ it._root?.answer?.settings?.crop?.height }}
1541
- }
1542
- }`,
1543
- derived: `{
1544
- "src": {{ it._derived?.src }},
1545
- "playlist": {{ it._derived?.playlist }},
1546
- "captions": {{ it._derived?.captions }}
1547
- }`
1548
- }
1549
- ],
1550
- root: "{{ it.intro?.questions?.items }}"
1551
- },
1552
- {
1553
- scenes: [
1554
- {
1555
- layout: "none",
1556
- data: `{
1557
- "id": {{ it._root?.answer?.id }},
1558
- "key": {{ it._root?.answer?.id + '-' + it._index }},
1559
- "poster": {{ it._root?.answer?.media?.thumbnail }},
1560
- "duration": {{ it._root?.answer?.metadata?.duration }},
1561
- "startOffset": {{ it._root?.answer?.settings?.startOffset }},
1562
- "endOffset": {{ it._root?.answer?.settings?.endOffset }},
1563
- "crop": {
1564
- "x": {{ it._root?.answer?.settings?.crop?.x }},
1565
- "y": {{ it._root?.answer?.settings?.crop?.y }},
1566
- "width": {{ it._root?.answer?.settings?.crop?.width }},
1567
- "height": {{ it._root?.answer?.settings?.crop?.height }}
1568
- }
1569
- }`,
1570
- derived: `{
1571
- "src": {{ it._derived?.src }},
1572
- "playlist": {{ it._derived?.playlist }},
1573
- "captions": {{ it._derived?.captions }}
1574
- }`
1575
- }
1576
- ],
1577
- root: "{{ it.questions?.items }}"
1578
- },
1579
- {
1580
- scenes: [
1581
- {
1582
- layout: "none",
1583
- data: `{
1584
- "id": {{ it._root?.answer?.id }},
1585
- "key": {{ it._root?.answer?.id + '-outro' }},
1586
- "poster": {{ it._root?.answer?.media?.thumbnail }},
1587
- "duration": {{ it._root?.answer?.metadata?.duration }},
1588
- "startOffset": {{ it._root?.answer?.settings?.startOffset }},
1589
- "endOffset": {{ it._root?.answer?.settings?.endOffset }},
1590
- "crop": {
1591
- "x": {{ it._root?.answer?.settings?.crop?.x }},
1592
- "y": {{ it._root?.answer?.settings?.crop?.y }},
1593
- "width": {{ it._root?.answer?.settings?.crop?.width }},
1594
- "height": {{ it._root?.answer?.settings?.crop?.height }}
1595
- }
1596
- }`,
1597
- derived: `{
1598
- "src": {{ it._derived?.src }},
1599
- "playlist": {{ it._derived?.playlist }},
1600
- "captions": {{ it._derived?.captions }}
1601
- }`
1602
- }
1603
- ],
1604
- root: "{{ it.outro?.questions?.items }}"
1605
- }
1606
- ],
1607
- system: true,
1608
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1609
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1610
- };
1611
- ({
1612
- id: "073977ec-6384-4329-b7c5-8275fb513e74",
1613
- name: "None",
1614
- entityId: "none",
1615
- templateId: "a95e537e-fb4d-4d2f-9c72-86c0925c7176",
1616
- templates: [template],
1617
- meta: {
1618
- frameRate: 30,
1619
- resolution: 720,
1620
- transitionDuration: 1 / 3
1621
- },
1622
- system: true,
1623
- default: 0,
1624
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1625
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1626
- });
1627
-
1628
- async function imageFactory() {
1629
- if (typeof window === "undefined") {
1630
- const skiaCanvas = await import('./browser-DfO9Pnu7.js').then(n => n.b);
1631
- return new skiaCanvas.Image();
1632
- }
1633
- return new Image();
1634
- }
1635
- pMemoize(async function getImage2(src) {
1636
- if (!src) {
1637
- return null;
1638
- }
1639
- return new Promise((resolve, reject) => {
1640
- imageFactory().then((image) => {
1641
- image.onload = () => {
1642
- resolve(image);
1643
- };
1644
- image.onerror = (e) => {
1645
- reject(e);
1646
- };
1647
- image.src = src;
1648
- });
1649
- });
1650
- });
1651
- function isPlainObject(value) {
1652
- if (value === null || typeof value !== "object") {
1653
- return false;
1654
- }
1655
- if (Object.getPrototypeOf(value) === null) {
1656
- return true;
1657
- }
1658
- let proto = value;
1659
- while (Object.getPrototypeOf(proto) !== null) {
1660
- proto = Object.getPrototypeOf(proto);
1661
- }
1662
- return Object.getPrototypeOf(value) === proto;
1663
- }
1664
- function sanitizeString(unsanitized) {
1665
- return unsanitized.replace(/\\/g, "\\\\").replace(/\//g, "\\/").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t").replace(/\f/g, "\\f").replace(/"/g, '\\"');
1666
- }
1667
-
1668
- squirrelly_minExports.filters.define("parse", (data) => {
1669
- if (typeof data === "undefined") {
1670
- return null;
1671
- }
1672
- if (typeof data === "string") {
1673
- return `"${sanitizeString(data)}"`;
1674
- }
1675
- if (isPlainObject(data) || Array.isArray(data)) {
1676
- return JSON.stringify(data);
1677
- }
1678
- return data;
1679
- });
1680
-
1681
- const TEMPLATE_VERSION = "3";
1682
-
1683
- const name = "@vouchfor/embeds";
1684
- const version = "0.0.0-experiment.8cafed9";
1685
- const license = "MIT";
1686
- const author = "Aaron Williams";
1687
- const main = "dist/es/embeds.js";
1688
- const module = "dist/es/embeds.js";
1689
- const type = "module";
1690
- const types = "dist/es/src/index.d.ts";
1691
- const exports = {
1692
- ".": "./dist/es/embeds.js"
1693
- };
1694
- const files = [
1695
- "dist",
1696
- "src"
1697
- ];
1698
- const publishConfig = {
1699
- tag: "experiment",
1700
- access: "public"
1701
- };
1702
- const engines = {
1703
- node: ">=18.18.0"
1704
- };
1705
- const scripts = {
1706
- build: "rm -rf dist && tsc && yarn build:self",
1707
- "build:deps": "yarn --cwd ../media-player build",
1708
- "build:self": "vite build --mode iife && vite build --mode es && node scripts/build.cjs",
1709
- "build:package": "yarn build",
1710
- "build:storybook": "yarn prebuild && storybook build",
1711
- "generate:manifest": "wca src --outFile custom-elements.json",
1712
- lint: "eslint . --quiet",
1713
- "lint:fix": "eslint . --fix",
1714
- "lint:staged": "lint-staged",
1715
- prepublishOnly: "yarn build",
1716
- size: "size-limit",
1717
- storybook: "yarn prebuild && storybook dev -p 6007",
1718
- prebuild: "yarn build:deps && yarn generate:manifest",
1719
- test: "rm -rf test/lib && yarn prebuild && vite build --mode test && web-test-runner",
1720
- "test:ci": "yarn test --config web-test-runner.ci.config.js"
1721
- };
1722
- const dependencies = {
1723
- "@a11y/focus-trap": "^1.0.5",
1724
- "@lit/task": "^1.0.0",
1725
- "@vouchfor/media-player": "0.0.0-experiment.8cafed9",
1726
- uuid: "^9.0.1"
1727
- };
1728
- const peerDependencies = {
1729
- lit: "^3.1.2"
1730
- };
1731
- const devDependencies = {
1732
- "@esm-bundle/chai": "^4.3.4-fix.0",
1733
- "@open-wc/testing": "^4.0.0",
1734
- "@storybook/addon-essentials": "^8.0.2",
1735
- "@storybook/addon-links": "^8.0.2",
1736
- "@storybook/blocks": "^8.0.2",
1737
- "@storybook/web-components": "^8.0.2",
1738
- "@storybook/web-components-vite": "^8.0.2",
1739
- "@svgr/core": "^8.1.0",
1740
- "@types/flat": "^5.0.5",
1741
- "@types/mocha": "^10.0.6",
1742
- "@vouchfor/eslint-config": "^1.0.1",
1743
- "@vouchfor/prettier-config": "^1.0.1",
1744
- "@vouchfor/video-utils": "0.0.0-experiment.8cafed9",
1745
- "@web/dev-server-esbuild": "^1.0.2",
1746
- "@web/test-runner": "^0.18.1",
1747
- "@web/test-runner-browserstack": "^0.7.1",
1748
- "@web/test-runner-mocha": "^0.9.0",
1749
- "@web/test-runner-playwright": "^0.11.0",
1750
- glob: "^10.3.10",
1751
- "lint-staged": "^15.2.2",
1752
- lit: "^3.1.2",
1753
- lodash: "^4.17.21",
1754
- react: "^18.2.0",
1755
- "react-dom": "^18.2.0",
1756
- "rollup-plugin-internal": "^1.0.4",
1757
- "rollup-plugin-tla": "^0.0.2",
1758
- sinon: "^17.0.1",
1759
- storybook: "^8.0.2",
1760
- svgson: "^5.3.1",
1761
- typescript: "^5.4.3",
1762
- vite: "^5.2.2",
1763
- "vite-plugin-commonjs": "^0.10.1",
1764
- "vite-plugin-dts": "^3.7.3",
1765
- "web-component-analyzer": "^2.0.0"
1766
- };
1767
- const packageJson = {
1768
- name: name,
1769
- version: version,
1770
- license: license,
1771
- author: author,
1772
- main: main,
1773
- module: module,
1774
- type: type,
1775
- types: types,
1776
- exports: exports,
1777
- files: files,
1778
- publishConfig: publishConfig,
1779
- engines: engines,
1780
- scripts: scripts,
1781
- "lint-staged": {
1782
- "**/*.{ts,tsx,js}": "eslint --fix --quiet",
1783
- "**/*.{md,json,yml}": "prettier --write"
1784
- },
1785
- dependencies: dependencies,
1786
- peerDependencies: peerDependencies,
1787
- devDependencies: devDependencies
1788
- };
1789
-
1790
- function createVisitor(env) {
1791
- const { publicApiUrl } = getEnvUrls(env);
1792
- const visitorId = v4();
1793
- navigator.sendBeacon(`${publicApiUrl}/api/visitor`, JSON.stringify({ visitorId }));
1794
- return visitorId;
1795
- }
1796
- function getUids(env) {
1797
- if (typeof window === "undefined") {
1798
- return {
1799
- client: null,
1800
- tab: null,
1801
- request: v4()
1802
- };
1803
- }
1804
- let visitorId = window.localStorage?.getItem?.("vouch-uid-visitor");
1805
- let clientId = window.localStorage?.getItem?.("vouch-uid-client");
1806
- let tabId = window.sessionStorage?.getItem?.("vouch-uid-tab");
1807
- const requestId = v4();
1808
- if (!visitorId) {
1809
- visitorId = createVisitor(env);
1810
- window.localStorage?.setItem?.("vouch-uid-visitor", visitorId);
1811
- }
1812
- if (!clientId) {
1813
- clientId = v4();
1814
- window.localStorage?.setItem?.("vouch-uid-client", clientId);
1815
- }
1816
- if (!tabId) {
1817
- tabId = v4();
1818
- window.sessionStorage?.setItem?.("vouch-uid-tab", tabId);
1819
- }
1820
- return {
1821
- client: clientId,
1822
- tab: tabId,
1823
- request: requestId,
1824
- visitor: visitorId
1825
- };
1826
- }
1827
- function findVouchId(payload, vouch) {
1828
- if (payload && "vouchId" in payload) {
1829
- return payload.vouchId;
1830
- }
1831
- return vouch?.id ?? null;
1832
- }
1833
- function getReportingMetadata(source = "embedded_player") {
1834
- const [country, region] = Intl.DateTimeFormat().resolvedOptions().timeZone?.split?.("/") ?? [];
1835
- const utmParams = {};
1836
- [...new URLSearchParams(location.search).entries()].forEach(([key, value]) => {
1837
- if (/utm/.test(key)) {
1838
- const param = key.toLowerCase().replace(/[-_][a-z0-9]/g, (group) => group.slice(-1).toUpperCase());
1839
- utmParams[param] = value;
1840
- }
1841
- });
1842
- return {
1843
- source,
1844
- time: /* @__PURE__ */ new Date(),
1845
- region,
1846
- country,
1847
- screenHeight: window.screen.height,
1848
- screenWidth: window.screen.width,
1849
- referrer: document.referrer,
1850
- currentUrl: location.href,
1851
- embedType: "media-player-embed",
1852
- embedVersion: packageJson.version,
1853
- templateVersion: TEMPLATE_VERSION,
1854
- ...utmParams
1855
- };
1856
- }
1857
-
1858
- const MINIMUM_SEND_THRESHOLD = 1;
1859
- class TrackingController {
1860
- constructor(host) {
1861
- this._batchedEvents = [];
1862
- this._hasPlayed = false;
1863
- this._hasLoaded = {};
1864
- this._answersViewed = {};
1865
- this._streamStartTime = {};
1866
- this._streamLatestTime = {};
1867
- this._currentlyPlayingVideo = null;
1868
- this._createTrackingEvent = (event, payload) => {
1869
- const vouchId = findVouchId(payload, this.host.vouch);
1870
- if (!vouchId || this.host.disableTracking) {
1871
- return;
1872
- }
1873
- this._batchedEvents.push({
1874
- event,
1875
- payload: {
1876
- ...payload,
1877
- vouchId,
1878
- time: (/* @__PURE__ */ new Date()).toISOString()
1879
- }
1880
- });
1881
- };
1882
- this._sendTrackingEvent = () => {
1883
- if (this._batchedEvents.length <= 0) {
1884
- return;
1885
- }
1886
- const { publicApiUrl } = getEnvUrls(this.host.env);
1887
- const { client, tab, request, visitor } = getUids(this.host.env);
1888
- navigator.sendBeacon(
1889
- `${publicApiUrl}/api/batchevents`,
1890
- JSON.stringify({
1891
- payload: {
1892
- events: this._batchedEvents
1893
- },
1894
- context: {
1895
- "x-uid-client": client,
1896
- "x-uid-tab": tab,
1897
- "x-uid-request": request,
1898
- "x-uid-visitor": visitor,
1899
- "x-reporting-metadata": getReportingMetadata(this.host.trackingSource)
1900
- }
1901
- })
1902
- );
1903
- this._batchedEvents = [];
1904
- };
1905
- this._streamEnded = () => {
1906
- if (this._currentlyPlayingVideo) {
1907
- const { id, key } = this._currentlyPlayingVideo;
1908
- if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
1909
- this._createTrackingEvent("VIDEO_STREAMED", {
1910
- answerId: id,
1911
- streamStart: this._streamStartTime[key],
1912
- streamEnd: this._streamLatestTime[key]
1913
- });
1914
- }
1915
- delete this._streamStartTime[key];
1916
- delete this._streamLatestTime[key];
1917
- }
1918
- };
1919
- this._handleVouchLoaded = ({ detail: vouchId }) => {
1920
- if (!vouchId) {
1921
- return;
1922
- }
1923
- if (!this._hasLoaded[vouchId]) {
1924
- this._createTrackingEvent("VOUCH_LOADED", { vouchId });
1925
- this._hasLoaded[vouchId] = true;
1926
- }
1927
- };
1928
- this._handlePlay = () => {
1929
- if (!this._hasPlayed) {
1930
- this._createTrackingEvent("VIDEO_PLAYED", {
1931
- streamStart: this.host.currentTime
1932
- });
1933
- this._hasPlayed = true;
1934
- }
1935
- };
1936
- this._handleVideoPlay = ({ detail: { id, key } }) => {
1937
- if (!this._answersViewed[key]) {
1938
- this._createTrackingEvent("VOUCH_RESPONSE_VIEWED", {
1939
- answerId: id
1940
- });
1941
- this._answersViewed[key] = true;
1942
- }
1943
- };
1944
- this._handleVideoTimeUpdate = ({ detail: { id, key, node } }) => {
1945
- if (
1946
- // We only want to count any time that the video is actually playing
1947
- !this.host.paused && // Only update the latest time if this event fires for the currently active video
1948
- id === this.host.scene?.video?.id
1949
- ) {
1950
- this._currentlyPlayingVideo = { id, key, node };
1951
- this._streamLatestTime[key] = node.currentTime;
1952
- if (!this._streamStartTime[key]) {
1953
- this._streamStartTime[key] = node.currentTime;
1954
- this._streamLatestTime[key] = node.currentTime;
1955
- }
1956
- }
1957
- };
1958
- this._handleVideoPause = ({ detail: { id, key } }) => {
1959
- if (this._streamLatestTime[key] > this._streamStartTime[key] + MINIMUM_SEND_THRESHOLD) {
1960
- this._createTrackingEvent("VIDEO_STREAMED", {
1961
- answerId: id,
1962
- streamStart: this._streamStartTime[key],
1963
- streamEnd: this._streamLatestTime[key]
1964
- });
1965
- }
1966
- delete this._streamStartTime[key];
1967
- delete this._streamLatestTime[key];
1968
- };
1969
- this._pageUnloading = () => {
1970
- this._streamEnded();
1971
- this._sendTrackingEvent();
1972
- };
1973
- this._handleVisibilityChange = () => {
1974
- if (document.visibilityState === "hidden") {
1975
- this._pageUnloading();
1976
- }
1977
- };
1978
- this._handlePageHide = () => {
1979
- this._pageUnloading();
1980
- };
1981
- this.host = host;
1982
- host.addController(this);
1983
- }
1984
- hostConnected() {
1985
- requestAnimationFrame(() => {
1986
- if ("onvisibilitychange" in document) {
1987
- document.addEventListener("visibilitychange", this._handleVisibilityChange);
1988
- } else {
1989
- window.addEventListener("pagehide", this._handlePageHide);
1990
- }
1991
- this.host.addEventListener("vouch:loaded", this._handleVouchLoaded);
1992
- this.host.mediaPlayer?.addEventListener("play", this._handlePlay);
1993
- this.host.mediaPlayer?.addEventListener("video:play", this._handleVideoPlay);
1994
- this.host.mediaPlayer?.addEventListener("video:pause", this._handleVideoPause);
1995
- this.host.mediaPlayer?.addEventListener("video:timeupdate", this._handleVideoTimeUpdate);
1996
- });
1997
- }
1998
- hostDisconnected() {
1999
- this._pageUnloading();
2000
- if ("onvisibilitychange" in document) {
2001
- document.removeEventListener("visibilitychange", this._handleVisibilityChange);
2002
- } else {
2003
- window.removeEventListener("pagehide", this._handlePageHide);
2004
- }
2005
- this.host.removeEventListener("vouch:loaded", this._handleVouchLoaded);
2006
- this.host.mediaPlayer?.removeEventListener("play", this._handlePlay);
2007
- this.host.mediaPlayer?.removeEventListener("video:play", this._handleVideoPlay);
2008
- this.host.mediaPlayer?.removeEventListener("video:pause", this._handleVideoPause);
2009
- this.host.mediaPlayer?.removeEventListener("video:timeupdate", this._handleVideoTimeUpdate);
2010
- }
2011
- }
2012
-
2013
- var __defProp$3 = Object.defineProperty;
2014
- var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
2015
- var __decorateClass$3 = (decorators, target, key, kind) => {
2016
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
2017
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
2018
- if (decorator = decorators[i])
2019
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2020
- if (kind && result)
2021
- __defProp$3(target, key, result);
2022
- return result;
2023
- };
2024
- let PlayerEmbed = class extends LitElement {
2025
- constructor() {
2026
- super(...arguments);
2027
- this.env = "prod";
2028
- this.apiKey = "";
2029
- this.disableTracking = false;
2030
- this.trackingSource = "embedded_player";
2031
- this.preload = "auto";
2032
- this.autoplay = false;
2033
- this.aspectRatio = 0;
2034
- this.eventController = new EventForwardController(this, [
2035
- "durationchange",
2036
- "ended",
2037
- "error",
2038
- "loadeddata",
2039
- "pause",
2040
- "stalled",
2041
- "play",
2042
- "playing",
2043
- "ratechange",
2044
- "scenechange",
2045
- "seeking",
2046
- "seeked",
2047
- "timeupdate",
2048
- "volumechange",
2049
- "waiting",
2050
- "video:loadeddata",
2051
- "video:seeking",
2052
- "video:seeked",
2053
- "video:play",
2054
- "video:playing",
2055
- "video:pause",
2056
- "video:stalled",
2057
- "video:timeupdate",
2058
- "video:ended",
2059
- "video:error"
2060
- ]);
2061
- this._fetcherController = new FetcherController(this);
2062
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2063
- // @ts-ignore
2064
- this._trackingController = new TrackingController(this);
2065
- this._mediaPlayerRef = createRef();
2066
- }
2067
- get fetching() {
2068
- return this._fetcherController.fetching;
2069
- }
2070
- get waiting() {
2071
- return this._mediaPlayerRef.value?.waiting;
2072
- }
2073
- get initialised() {
2074
- return this._mediaPlayerRef.value?.initialised;
2075
- }
2076
- get seeking() {
2077
- return this._mediaPlayerRef.value?.seeking;
2078
- }
2079
- get paused() {
2080
- return this._mediaPlayerRef.value?.paused;
2081
- }
2082
- get captions() {
2083
- return this._mediaPlayerRef.value?.captions;
2084
- }
2085
- get fullscreen() {
2086
- return this._mediaPlayerRef.value?.fullscreen;
2087
- }
2088
- get duration() {
2089
- return this._mediaPlayerRef.value?.duration;
2090
- }
2091
- set currentTime(value) {
2092
- if (this._mediaPlayerRef.value) {
2093
- this._mediaPlayerRef.value.currentTime = value;
2094
- }
2095
- }
2096
- get currentTime() {
2097
- return this._mediaPlayerRef.value?.currentTime ?? 0;
2098
- }
2099
- set playbackRate(value) {
2100
- if (this._mediaPlayerRef.value) {
2101
- this._mediaPlayerRef.value.playbackRate = value;
2102
- }
2103
- }
2104
- get playbackRate() {
2105
- return this._mediaPlayerRef.value?.playbackRate ?? 1;
2106
- }
2107
- set volume(value) {
2108
- if (this._mediaPlayerRef.value) {
2109
- this._mediaPlayerRef.value.volume = value;
2110
- }
2111
- }
2112
- get volume() {
2113
- return this._mediaPlayerRef.value?.volume ?? 1;
2114
- }
2115
- set muted(value) {
2116
- if (this._mediaPlayerRef.value) {
2117
- this._mediaPlayerRef.value.muted = value;
2118
- }
2119
- }
2120
- get muted() {
2121
- return this._mediaPlayerRef.value?.muted ?? false;
2122
- }
2123
- get scene() {
2124
- return this._mediaPlayerRef.value?.scene ?? null;
2125
- }
2126
- get scenes() {
2127
- return this._mediaPlayerRef.value?.scenes ?? [];
2128
- }
2129
- get sceneConfig() {
2130
- return this._mediaPlayerRef.value?.sceneConfig ?? null;
2131
- }
2132
- get videoState() {
2133
- return this._mediaPlayerRef.value?.videoState;
2134
- }
2135
- get mediaPlayer() {
2136
- return this._mediaPlayerRef.value;
2137
- }
2138
- play() {
2139
- this._mediaPlayerRef.value?.play();
2140
- }
2141
- pause() {
2142
- this._mediaPlayerRef.value?.pause();
2143
- }
2144
- reset(time = 0, play = false) {
2145
- this._mediaPlayerRef.value?.reset(time, play);
2146
- }
2147
- setScene(index) {
2148
- this._mediaPlayerRef.value?.setScene(index);
2149
- }
2150
- _renderStyles() {
2151
- if (!this.aspectRatio) {
2152
- return html`
2153
- <style>
2154
- :host {
2155
- width: 100%;
2156
- height: 100%;
2157
- }
2158
- </style>
2159
- `;
2160
- }
2161
- if (typeof this.aspectRatio === "number") {
2162
- return html`
2163
- <style>
2164
- :host {
2165
- aspect-ratio: ${this.aspectRatio};
2166
- }
2167
- </style>
2168
- `;
2169
- }
2170
- return null;
2171
- }
2172
- render() {
2173
- return html`
2174
- ${this._renderStyles()}
2175
- <vmp-media-player
2176
- ${ref(this._mediaPlayerRef)}
2177
- ${this.eventController.register()}
2178
- ?autoplay=${this.autoplay}
2179
- ?loading=${this.fetching}
2180
- .data=${this.vouch}
2181
- .template=${this.template}
2182
- aspectRatio=${ifDefined(this.aspectRatio)}
2183
- preload=${ifDefined(this.preload)}
2184
- .controls=${this.controls}
2185
- ></vmp-media-player>
2186
- `;
2187
- }
2188
- };
2189
- PlayerEmbed.styles = [
2190
- css`
2191
- :host {
2192
- display: flex;
2193
- }
2194
- `
2195
- ];
2196
- __decorateClass$3([
2197
- property({ type: Object })
2198
- ], PlayerEmbed.prototype, "data", 2);
2199
- __decorateClass$3([
2200
- property({ type: String })
2201
- ], PlayerEmbed.prototype, "vouchId", 2);
2202
- __decorateClass$3([
2203
- property({ type: String })
2204
- ], PlayerEmbed.prototype, "templateId", 2);
2205
- __decorateClass$3([
2206
- property({ type: Array })
2207
- ], PlayerEmbed.prototype, "questions", 2);
2208
- __decorateClass$3([
2209
- property({ type: String })
2210
- ], PlayerEmbed.prototype, "env", 2);
2211
- __decorateClass$3([
2212
- property({ type: String })
2213
- ], PlayerEmbed.prototype, "apiKey", 2);
2214
- __decorateClass$3([
2215
- property({ type: Boolean })
2216
- ], PlayerEmbed.prototype, "disableTracking", 2);
2217
- __decorateClass$3([
2218
- property({ type: String })
2219
- ], PlayerEmbed.prototype, "trackingSource", 2);
2220
- __decorateClass$3([
2221
- property({ type: Array })
2222
- ], PlayerEmbed.prototype, "controls", 2);
2223
- __decorateClass$3([
2224
- property({ type: String })
2225
- ], PlayerEmbed.prototype, "preload", 2);
2226
- __decorateClass$3([
2227
- property({ type: Boolean })
2228
- ], PlayerEmbed.prototype, "autoplay", 2);
2229
- __decorateClass$3([
2230
- property({ type: Number })
2231
- ], PlayerEmbed.prototype, "aspectRatio", 2);
2232
- __decorateClass$3([
2233
- state()
2234
- ], PlayerEmbed.prototype, "vouch", 2);
2235
- __decorateClass$3([
2236
- state()
2237
- ], PlayerEmbed.prototype, "template", 2);
2238
- PlayerEmbed = __decorateClass$3([
2239
- customElement("vouch-embed-player")
2240
- ], PlayerEmbed);
2241
-
2242
- var __defProp$2 = Object.defineProperty;
2243
- var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
2244
- var __decorateClass$2 = (decorators, target, key, kind) => {
2245
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
2246
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
2247
- if (decorator = decorators[i])
2248
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2249
- if (kind && result)
2250
- __defProp$2(target, key, result);
2251
- return result;
2252
- };
2253
- let DialogOverlay = class extends LitElement {
2254
- constructor() {
2255
- super(...arguments);
2256
- this.open = false;
2257
- this.aspectRatio = 0;
2258
- }
2259
- render() {
2260
- return html`
2261
- <div
2262
- class=${classMap({
2263
- container: true,
2264
- hidden: !this.open
2265
- })}
2266
- >
2267
- <div
2268
- class="background"
2269
- @click=${() => this.dispatchEvent(new CustomEvent("overlay:click", { bubbles: true, composed: true }))}
2270
- ></div>
2271
- <focus-trap>
2272
- <div
2273
- class=${classMap({
2274
- "video-frame": true,
2275
- grow: this.aspectRatio === 0
2276
- })}
2277
- style=${styleMap({
2278
- aspectRatio: this.aspectRatio
2279
- })}
2280
- >
2281
- <slot></slot>
2282
- <vmp-icon-button
2283
- icon="close"
2284
- rounded="full"
2285
- weight="heavy"
2286
- @click=${() => this.dispatchEvent(new CustomEvent("close:click", { bubbles: true, composed: true }))}
2287
- ></vmp-icon-button>
2288
- </div>
2289
- </focus-trap>
2290
- </div>
2291
- `;
2292
- }
2293
- };
2294
- DialogOverlay.styles = [
2295
- css`
2296
- :host {
2297
- --vouch-media-player-border-radius: var(--vu-media-player-border-radius, 12px);
2298
- --overlay-background-color: var(--vu-overlay-background-color, black);
2299
- --overlay-background-opacity: var(--vu-overlay-background-opacity, 0.4);
2300
-
2301
- --dialog-width: var(--vu-dialog-width, 890px);
2302
- --dialog-height: var(--vu-dialog-height, 500px);
2303
- }
2304
-
2305
- .container {
2306
- position: fixed;
2307
- display: flex;
2308
- inset: 0;
2309
- opacity: 1;
2310
- z-index: 2147483647;
2311
- align-items: center;
2312
- justify-content: center;
2313
- transition: opacity 100ms ease-in;
2314
- }
2315
-
2316
- .hidden {
2317
- opacity: 0;
2318
- pointer-events: none;
2319
- }
2320
-
2321
- .background {
2322
- position: absolute;
2323
- inset: 0;
2324
- opacity: var(--overlay-background-opacity);
2325
- background-color: var(--overlay-background-color);
2326
- }
2327
-
2328
- focus-trap {
2329
- display: flex;
2330
- align-items: center;
2331
- justify-content: center;
2332
- margin: 40px;
2333
- width: var(--dialog-width);
2334
- height: var(--dialog-height);
2335
- max-width: calc(100% - 80px);
2336
- max-height: calc(100% - 80px);
2337
- }
2338
-
2339
- .video-frame {
2340
- position: relative;
2341
- display: flex;
2342
- align-items: center;
2343
- justify-content: center;
2344
- max-width: 100%;
2345
- max-height: 100%;
2346
- }
2347
-
2348
- .video-frame.grow {
2349
- width: 100%;
2350
- height: 100%;
2351
- }
2352
-
2353
- vmp-icon-button {
2354
- position: absolute;
2355
- top: 0;
2356
- right: 0;
2357
- margin: 10px;
2358
- }
2359
- `
2360
- ];
2361
- __decorateClass$2([
2362
- property({ type: Boolean })
2363
- ], DialogOverlay.prototype, "open", 2);
2364
- __decorateClass$2([
2365
- property({ type: Number })
2366
- ], DialogOverlay.prototype, "aspectRatio", 2);
2367
- DialogOverlay = __decorateClass$2([
2368
- customElement("vouch-embed-dialog-overlay")
2369
- ], DialogOverlay);
2370
-
2371
- var __defProp$1 = Object.defineProperty;
2372
- var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
2373
- var __decorateClass$1 = (decorators, target, key, kind) => {
2374
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
2375
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
2376
- if (decorator = decorators[i])
2377
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2378
- if (kind && result)
2379
- __defProp$1(target, key, result);
2380
- return result;
2381
- };
2382
- let DialogPortal = class extends LitElement {
2383
- constructor() {
2384
- super(...arguments);
2385
- this.env = "prod";
2386
- this.apiKey = "";
2387
- this.disableTracking = false;
2388
- this.trackingSource = "embedded_player";
2389
- this.preload = "none";
2390
- this.disableAutoplay = false;
2391
- this.aspectRatio = 0;
2392
- this._mediaPlayerRef = createRef();
2393
- this.open = false;
2394
- this._handleToggle = ({ detail }) => {
2395
- if (this.id === detail) {
2396
- this.open = !this.open;
2397
- if (this.open) {
2398
- if (!this.disableAutoplay && this._mediaPlayerRef?.value) {
2399
- this._mediaPlayerRef.value.muted = false;
2400
- this._mediaPlayerRef.value.play();
2401
- }
2402
- } else {
2403
- this._mediaPlayerRef?.value?.pause();
2404
- }
2405
- }
2406
- };
2407
- // We could do the same thing on close and check for the correct ID but it doesn't really matter
2408
- this._handleClose = () => {
2409
- this.open = false;
2410
- this._mediaPlayerRef?.value?.pause();
2411
- };
2412
- this._handleDocumentKeyUp = (e) => {
2413
- if (e.key === "Escape") {
2414
- this._handleClose();
2415
- }
2416
- };
2417
- }
2418
- connectedCallback() {
2419
- super.connectedCallback();
2420
- document.addEventListener("dialogembed:click", this._handleToggle);
2421
- document.addEventListener("keyup", this._handleDocumentKeyUp);
2422
- document.addEventListener("close:click", this._handleClose);
2423
- document.addEventListener("overlay:click", this._handleClose);
2424
- }
2425
- disconnectedCallback() {
2426
- super.disconnectedCallback();
2427
- document.removeEventListener("dialogembed:click", this._handleToggle);
2428
- document.removeEventListener("keyup", this._handleDocumentKeyUp);
2429
- document.removeEventListener("close:click", this._handleClose);
2430
- document.removeEventListener("overlay:click", this._handleClose);
2431
- }
2432
- createRenderRoot() {
2433
- const newNode = document.createElement("div");
2434
- document.body.appendChild(newNode);
2435
- return newNode;
2436
- }
2437
- render() {
2438
- return html`
2439
- <vouch-embed-dialog-overlay ?open=${this.open} aspectRatio=${this.aspectRatio}>
2440
- <vouch-embed-player
2441
- ${ref(this._mediaPlayerRef)}
2442
- style=${styleMap({
2443
- maxWidth: "100%",
2444
- maxHeight: "100%"
2445
- })}
2446
- ?autoplay=${false}
2447
- vouchId=${ifDefined(this.vouchId)}
2448
- templateId=${ifDefined(this.templateId)}
2449
- .questions=${this.questions}
2450
- .controls=${this.controls}
2451
- env=${ifDefined(this.env)}
2452
- apiKey=${ifDefined(this.apiKey)}
2453
- ?disableTracking=${this.disableTracking}
2454
- trackingSource=${ifDefined(this.trackingSource)}
2455
- preload=${ifDefined(this.preload)}
2456
- aspectRatio=${this.aspectRatio}
2457
- ></vouch-embed-player>
2458
- </vouch-embed-dialog-overlay>
2459
- `;
2460
- }
2461
- };
2462
- __decorateClass$1([
2463
- property({ type: String })
2464
- ], DialogPortal.prototype, "vouchId", 2);
2465
- __decorateClass$1([
2466
- property({ type: String })
2467
- ], DialogPortal.prototype, "templateId", 2);
2468
- __decorateClass$1([
2469
- property({ type: Array })
2470
- ], DialogPortal.prototype, "questions", 2);
2471
- __decorateClass$1([
2472
- property({ type: String })
2473
- ], DialogPortal.prototype, "env", 2);
2474
- __decorateClass$1([
2475
- property({ type: String })
2476
- ], DialogPortal.prototype, "apiKey", 2);
2477
- __decorateClass$1([
2478
- property({ type: Boolean })
2479
- ], DialogPortal.prototype, "disableTracking", 2);
2480
- __decorateClass$1([
2481
- property({ type: String })
2482
- ], DialogPortal.prototype, "trackingSource", 2);
2483
- __decorateClass$1([
2484
- property({ type: Array })
2485
- ], DialogPortal.prototype, "controls", 2);
2486
- __decorateClass$1([
2487
- property({ type: String })
2488
- ], DialogPortal.prototype, "preload", 2);
2489
- __decorateClass$1([
2490
- property({ type: Boolean })
2491
- ], DialogPortal.prototype, "disableAutoplay", 2);
2492
- __decorateClass$1([
2493
- property({ type: Number })
2494
- ], DialogPortal.prototype, "aspectRatio", 2);
2495
- __decorateClass$1([
2496
- state()
2497
- ], DialogPortal.prototype, "open", 2);
2498
- DialogPortal = __decorateClass$1([
2499
- customElement("vouch-embed-dialog-portal")
2500
- ], DialogPortal);
2501
-
2502
- var __defProp = Object.defineProperty;
2503
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
2504
- var __decorateClass = (decorators, target, key, kind) => {
2505
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
2506
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
2507
- if (decorator = decorators[i])
2508
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2509
- if (kind && result)
2510
- __defProp(target, key, result);
2511
- return result;
2512
- };
2513
- let DialogEmbed = class extends LitElement {
2514
- constructor() {
2515
- super(...arguments);
2516
- this.env = "prod";
2517
- this.apiKey = "";
2518
- this.disableTracking = false;
2519
- this.trackingSource = "embedded_player";
2520
- this.preload = "none";
2521
- this.disableAutoplay = false;
2522
- this.aspectRatio = 0;
2523
- this._id = v4();
2524
- this._handleRootClick = () => {
2525
- this.dispatchEvent(new CustomEvent("dialogembed:click", { detail: this._id, bubbles: true, composed: true }));
2526
- };
2527
- }
2528
- connectedCallback() {
2529
- super.connectedCallback();
2530
- this.addEventListener("click", this._handleRootClick);
2531
- }
2532
- disconnectedCallback() {
2533
- super.disconnectedCallback();
2534
- this.removeEventListener("click", this._handleRootClick);
2535
- }
2536
- render() {
2537
- return html`
2538
- <slot>
2539
- <vmp-button size="large">Play</vmp-button>
2540
- </slot>
2541
- <vouch-embed-dialog-portal
2542
- id=${this._id}
2543
- ?autoplay=${false}
2544
- vouchId=${ifDefined(this.vouchId)}
2545
- templateId=${ifDefined(this.templateId)}
2546
- .questions=${this.questions}
2547
- .controls=${this.controls}
2548
- env=${ifDefined(this.env)}
2549
- apiKey=${ifDefined(this.apiKey)}
2550
- ?disableTracking=${this.disableTracking}
2551
- trackingSource=${ifDefined(this.trackingSource)}
2552
- preload=${ifDefined(this.preload)}
2553
- aspectRatio=${this.aspectRatio}
2554
- ></vouch-embed-dialog-portal>
2555
- `;
2556
- }
2557
- };
2558
- DialogEmbed.styles = [
2559
- css`
2560
- :host {
2561
- --vu-button-padding: 10px 20px;
2562
- --vu-button-background: #287179;
2563
- --vu-button-background-hover: #4faab2;
2564
-
2565
- display: flex;
2566
- width: fit-content;
2567
- height: fit-content;
2568
- }
2569
- `
2570
- ];
2571
- __decorateClass([
2572
- property({ type: String })
2573
- ], DialogEmbed.prototype, "vouchId", 2);
2574
- __decorateClass([
2575
- property({ type: String })
2576
- ], DialogEmbed.prototype, "templateId", 2);
2577
- __decorateClass([
2578
- property({ type: Array })
2579
- ], DialogEmbed.prototype, "questions", 2);
2580
- __decorateClass([
2581
- property({ type: String })
2582
- ], DialogEmbed.prototype, "env", 2);
2583
- __decorateClass([
2584
- property({ type: String })
2585
- ], DialogEmbed.prototype, "apiKey", 2);
2586
- __decorateClass([
2587
- property({ type: Boolean })
2588
- ], DialogEmbed.prototype, "disableTracking", 2);
2589
- __decorateClass([
2590
- property({ type: String })
2591
- ], DialogEmbed.prototype, "trackingSource", 2);
2592
- __decorateClass([
2593
- property({ type: Array })
2594
- ], DialogEmbed.prototype, "controls", 2);
2595
- __decorateClass([
2596
- property({ type: String })
2597
- ], DialogEmbed.prototype, "preload", 2);
2598
- __decorateClass([
2599
- property({ type: Boolean })
2600
- ], DialogEmbed.prototype, "disableAutoplay", 2);
2601
- __decorateClass([
2602
- property({ type: Number })
2603
- ], DialogEmbed.prototype, "aspectRatio", 2);
2604
- DialogEmbed = __decorateClass([
2605
- customElement("vouch-embed-dialog")
2606
- ], DialogEmbed);
2607
-
2608
- export { DialogEmbed as D, PlayerEmbed as P, commonjsGlobal as c, getDefaultExportFromCjs as g };
2609
- //# sourceMappingURL=index-5G8orrrP.js.map