@kutrion/cli 1.2.6 → 1.2.9

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 (3) hide show
  1. package/README.md +23 -0
  2. package/dist/index.js +1447 -134
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6,6 +6,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __esm = (fn, res) => function __init() {
10
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
11
+ };
9
12
  var __commonJS = (cb, mod2) => function __require() {
10
13
  return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;
11
14
  };
@@ -26,10 +29,564 @@ var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__
26
29
  mod2
27
30
  ));
28
31
 
32
+ // <define:__KT_HUB_FILES__>
33
+ var define_KT_HUB_FILES_default;
34
+ var init_define_KT_HUB_FILES = __esm({
35
+ "<define:__KT_HUB_FILES__>"() {
36
+ define_KT_HUB_FILES_default = { "ensure-hub.sh": `#!/bin/sh
37
+ # Installs the Kutrion Hub on macOS and Linux when it is absent or older than MIN_HUB_VERSION.
38
+ # The Hub is fetched from the update feed, its sha512 is checked against the feed and its platform
39
+ # identity against hub.conf; on any mismatch nothing is installed. Nothing here ever removes the Hub.
40
+ #
41
+ # ensure-hub.sh [--first-run] [--defer] [--force] [--verify-only] [--os mac|deb|rpm]
42
+ # ensure-hub.sh compare A B | verify-file FILE SHA512_B64
43
+ #
44
+ # Exit: 0 present, installed or skipped by policy; 10 refused; 11 cannot install here; 12 fetch failed.
45
+ # Environment: KT_NO_HUB=1 skips; KT_HUB_FEED_BASE (https or file) replaces the feed;
46
+ # KT_HUB_ALLOW_UNSIGNED=1 accepts a build with no publisher identity; KT_HUB_APPS_DIR replaces /Applications.
47
+ set -u
48
+
49
+ SELF_DIR=$(cd "$(dirname "$0")" && pwd)
50
+ CONF=\${KT_HUB_CONF:-$SELF_DIR/hub.conf}
51
+ APP_ID=com.kutrion.desktop
52
+ PKG_NAME=kutrion
53
+
54
+ log() { printf 'ensure-hub: %s\\n' "$*"; }
55
+ refuse() { log "refused, nothing installed: $*"; exit 10; }
56
+ cannot() { log "skipped: $*"; exit 11; }
57
+
58
+ conf_get() { [ -r "$CONF" ] && sed -n "s/^$1=//p" "$CONF" | head -n 1 | tr -d '\\r'; }
59
+
60
+ # Prints -1, 0 or 1 for A against B, or x when either is not a dotted number with an optional suffix.
61
+ ver_cmp() {
62
+ awk -v a="$1" -v b="$2" '
63
+ function split_ver(v, out, i, p) {
64
+ sub(/^v/, "", v); sub(/\\+.*/, "", v)
65
+ i = index(v, "-"); out["pre"] = ""
66
+ if (i > 0) { out["pre"] = substr(v, i + 1); v = substr(v, 1, i - 1) }
67
+ if (v !~ /^[0-9]+(\\.[0-9]+)*$/) return 0
68
+ out["n"] = split(v, p, ".")
69
+ for (i = 1; i <= out["n"]; i++) out[i] = p[i] + 0
70
+ return 1
71
+ }
72
+ BEGIN {
73
+ if (!split_ver(a, A) || !split_ver(b, B)) { print "x"; exit }
74
+ n = (A["n"] > B["n"]) ? A["n"] : B["n"]
75
+ for (i = 1; i <= n; i++) {
76
+ x = (i <= A["n"]) ? A[i] : 0; y = (i <= B["n"]) ? B[i] : 0
77
+ if (x != y) { print (x < y) ? -1 : 1; exit }
78
+ }
79
+ if (A["pre"] == B["pre"]) print 0
80
+ else if (A["pre"] == "") print 1
81
+ else if (B["pre"] == "") print -1
82
+ else print (A["pre"] < B["pre"]) ? -1 : 1
83
+ }'
84
+ }
85
+
86
+ # base64 sha512 of a file, the form the update feed carries.
87
+ sha512_b64() {
88
+ if command -v openssl >/dev/null 2>&1; then openssl dgst -sha512 -binary "$1" | openssl base64 -A
89
+ elif command -v sha512sum >/dev/null 2>&1; then sha512sum "$1" | cut -d' ' -f1 | xxd -r -p | base64 | tr -d '\\n'
90
+ else shasum -a 512 "$1" | cut -d' ' -f1 | xxd -r -p | base64 | tr -d '\\n'; fi
91
+ }
92
+
93
+ verify_file() {
94
+ case "$2" in
95
+ [A-Za-z0-9+/]*==) [ "\${#2}" -eq 88 ] || return 10 ;;
96
+ *) return 10 ;;
97
+ esac
98
+ got=$(sha512_b64 "$1") || return 10
99
+ [ "$got" = "$2" ] || return 10
100
+ }
101
+
102
+ fetch() {
103
+ case "$1" in
104
+ file://*) command cp "\${1#file://}" "$2" 2>/dev/null ;;
105
+ https://*)
106
+ if command -v curl >/dev/null 2>&1; then curl -fsSL --proto '=https' --tlsv1.2 --retry 2 --connect-timeout 15 --max-time 900 -o "$2" "$1"
107
+ elif command -v wget >/dev/null 2>&1; then wget -q --https-only -O "$2" "$1"
108
+ else return 1; fi ;;
109
+ *) return 1 ;;
110
+ esac
111
+ }
112
+
113
+ # A feed file name is a bare name; anything with a path, scheme or whitespace could point off the feed origin.
114
+ bare_name() { case "$1" in ''|*/*|*\\\\*|*:*|*..*|*[[:space:]]*) return 1 ;; *) return 0 ;; esac; }
115
+
116
+ # Prints "url sha512" pairs from an electron-updater channel file.
117
+ feed_files() {
118
+ awk '
119
+ /^files:/ { infiles = 1; next }
120
+ /^[^ -]/ { infiles = 0 }
121
+ infiles && /^[ ]*- url:/ { sub(/^[ ]*- url:[ ]*/, ""); gsub(/["\\047\\r]/, ""); u = $0; next }
122
+ infiles && /^[ ]+sha512:/ { sub(/^[ ]+sha512:[ ]*/, ""); gsub(/["\\047\\r]/, ""); if (u != "") print u, $0; u = "" }
123
+ ' "$1"
124
+ }
125
+
126
+ feed_version() { sed -n 's/^version:[ ]*//p' "$1" | head -n 1 | tr -d "\\"'\\r"; }
127
+
128
+ pick_artifact() { # FEEDFILE KIND -> "url sha512"
129
+ m=$(uname -m)
130
+ case "$2" in
131
+ mac) case "$m" in arm64|aarch64) pat='-arm64.*\\.dmg ' ;; *) pat='-x64.*\\.dmg ' ;; esac ;;
132
+ deb) case "$m" in aarch64|arm64) pat='-arm64\\.deb ' ;; *) pat='-amd64\\.deb ' ;; esac ;;
133
+ rpm) case "$m" in aarch64|arm64) pat='-aarch64\\.rpm ' ;; *) pat='-x86_64\\.rpm ' ;; esac ;;
134
+ *) return 1 ;;
135
+ esac
136
+ feed_files "$1" | grep -E -e "$pat" | head -n 1
137
+ }
138
+
139
+ # The installed version; "unknown" when present but unreadable; empty when absent.
140
+ detect_version() {
141
+ case "$OS" in
142
+ mac)
143
+ for d in "\${KT_HUB_APPS_DIR:-/Applications}" "$HOME/Applications"; do
144
+ if [ -d "$d/Kutrion.app" ]; then
145
+ v=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' "$d/Kutrion.app/Contents/Info.plist" 2>/dev/null)
146
+ echo "\${v:-unknown}"; return
147
+ fi
148
+ done ;;
149
+ *)
150
+ if command -v dpkg-query >/dev/null 2>&1; then
151
+ v=$(dpkg-query -W -f='\${Status}|\${Version}' "$PKG_NAME" 2>/dev/null)
152
+ case "$v" in 'install ok installed|'*) v=\${v#*|}; echo "\${v%%-*}"; return ;; esac
153
+ fi
154
+ if command -v rpm >/dev/null 2>&1; then
155
+ v=$(rpm -q --qf '%{VERSION}' "$PKG_NAME" 2>/dev/null) && { echo "$v"; return; }
156
+ fi
157
+ if [ -d /opt/Kutrion ]; then echo unknown; return; fi ;;
158
+ esac
159
+ }
160
+
161
+ state_dir() { echo "\${XDG_STATE_HOME:-$HOME/.local/state}/kutrion"; }
162
+ stamp_file() { echo "$(state_dir)/ensure-hub.stamp"; }
163
+
164
+ # One install at a time per account: the package postinst and the app's first run can start together.
165
+ take_lock() {
166
+ LOCK=$(state_dir)/ensure-hub.lock
167
+ mkdir -p "$(state_dir)" 2>/dev/null || return 0
168
+ if ! mkdir "$LOCK" 2>/dev/null; then
169
+ p=$(cat "$LOCK/pid" 2>/dev/null)
170
+ if [ -n "$p" ] && kill -0 "$p" 2>/dev/null; then return 1; fi
171
+ rm -r -f "$LOCK"; mkdir "$LOCK" 2>/dev/null || return 0
172
+ fi
173
+ echo $$ > "$LOCK/pid"; LOCK_HELD=1
174
+ }
175
+
176
+ # One attempt a day from the in-app paths, so a refused or offline run is not repeated at every launch.
177
+ first_run_gate() {
178
+ s=$(stamp_file); now=$(date +%s)
179
+ if [ -f "$s" ]; then
180
+ last=$(cat "$s" 2>/dev/null); case "$last" in ''|*[!0-9]*) last=0 ;; esac
181
+ [ $((now - last)) -ge 86400 ] || cannot "last attempt was under a day ago"
182
+ fi
183
+ mkdir -p "$(dirname "$s")" 2>/dev/null && echo "$now" > "$s" 2>/dev/null
184
+ return 0
185
+ }
186
+
187
+ have_privilege() { [ "$(id -u)" -eq 0 ] || { command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; }; }
188
+
189
+ as_root() { if [ "$(id -u)" -eq 0 ]; then "$@"; else sudo -n "$@"; fi; }
190
+
191
+ # Runs "$@" once, or until it succeeds when --defer asked to wait out the package manager's lock.
192
+ retry() {
193
+ n=0
194
+ while :; do
195
+ "$@" && return 0
196
+ [ "$DEFER" -eq 1 ] && [ "$n" -lt 36 ] || return 1
197
+ n=$((n + 1)); sleep 5
198
+ done
199
+ }
200
+
201
+ install_deb() {
202
+ if command -v apt-get >/dev/null 2>&1; then
203
+ as_root env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "$1" && return 0
204
+ as_root apt-get update -qq >/dev/null 2>&1
205
+ as_root env DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "$1"
206
+ else
207
+ as_root dpkg -i "$1"
208
+ fi
209
+ }
210
+
211
+ install_rpm() {
212
+ if command -v dnf >/dev/null 2>&1; then as_root dnf -y install "$1"
213
+ elif command -v zypper >/dev/null 2>&1; then as_root zypper --non-interactive --no-gpg-checks install --allow-unsigned-rpm "$1"
214
+ elif command -v yum >/dev/null 2>&1; then as_root yum -y install "$1"
215
+ else as_root rpm -U "$1"; fi
216
+ }
217
+
218
+ # DMG -> 0 when the image holds a Hub bundle that meets the identity policy; MOUNT is set for the caller.
219
+ verify_mac_image() {
220
+ mp=$(mktemp -d "\${TMPDIR:-/tmp}/kt-hub-mp.XXXXXX") || return 1
221
+ hdiutil attach -nobrowse -readonly -noautoopen -mountpoint "$mp" "$1" >/dev/null 2>&1 || { rmdir "$mp"; return 1; }
222
+ MOUNT=$mp
223
+ app=$mp/Kutrion.app
224
+ [ -d "$app" ] || return 2
225
+ id=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' "$app/Contents/Info.plist" 2>/dev/null)
226
+ [ "$id" = "$APP_ID" ] || return 3
227
+ bv=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleShortVersionString' "$app/Contents/Info.plist" 2>/dev/null)
228
+ c=$(ver_cmp "\${bv:-0}" "$MIN"); [ "$c" = 0 ] || [ "$c" = 1 ] || return 4
229
+ team=$(conf_get HUB_MAC_TEAM_ID)
230
+ if [ -n "$team" ]; then
231
+ codesign --verify --deep --strict "$app" >/dev/null 2>&1 || return 5
232
+ got=$(codesign -dv --verbose=4 "$app" 2>&1 | sed -n 's/^TeamIdentifier=//p')
233
+ [ "$got" = "$team" ] || return 6
234
+ elif [ "$ALLOW_UNSIGNED" -eq 1 ]; then
235
+ log "warning: no publisher identity is configured; continuing because unsigned builds were allowed"
236
+ else
237
+ return 7
238
+ fi
239
+ return 0
240
+ }
241
+
242
+ mac_reason() {
243
+ case "$1" in
244
+ 1) echo "the disk image could not be opened" ;;
245
+ 2) echo "the disk image has no Kutrion.app" ;;
246
+ 3) echo "the app bundle identifier is not $APP_ID" ;;
247
+ 4) echo "the app version is below $MIN" ;;
248
+ 5) echo "the app signature does not verify" ;;
249
+ 6) echo "the app is not signed by the configured Team ID" ;;
250
+ 7) echo "no Team ID is configured and unsigned builds are not allowed" ;;
251
+ esac
252
+ }
253
+
254
+ # KIND FILE -> 0 when the package is the Hub at or above the minimum. A deb revision ("1.2.8-9339") is not a pre-release.
255
+ verify_linux_package() {
256
+ if [ "$1" = deb ]; then
257
+ command -v dpkg-deb >/dev/null 2>&1 || return 1
258
+ pn=$(dpkg-deb -f "$2" Package 2>/dev/null); pv=$(dpkg-deb -f "$2" Version 2>/dev/null); pv=\${pv%%-*}
259
+ else
260
+ command -v rpm >/dev/null 2>&1 || return 1
261
+ pn=$(rpm -qp --qf '%{NAME}' "$2" 2>/dev/null); pv=$(rpm -qp --qf '%{VERSION}' "$2" 2>/dev/null)
262
+ fi
263
+ [ "$pn" = "$PKG_NAME" ] || return 2
264
+ c=$(ver_cmp "\${pv:-0}" "$MIN"); [ "$c" = 0 ] || [ "$c" = 1 ] || return 3
265
+ return 0
266
+ }
267
+
268
+ cleanup() {
269
+ [ "$LOCK_HELD" -eq 1 ] && rm -r -f "$LOCK"
270
+ # A run staged by the app lives in its own temp directory; nothing else is ever removed.
271
+ case "$(basename "$SELF_DIR")" in kt-hub-run-*) rm -r -f "$SELF_DIR" ;; esac
272
+ if [ -n "$MOUNT" ]; then hdiutil detach -quiet "$MOUNT" >/dev/null 2>&1 && rmdir "$MOUNT" 2>/dev/null; fi
273
+ [ -n "$WORK" ] && rm -r -f "$WORK"
274
+ return 0
275
+ }
276
+
277
+ main() {
278
+ FIRST_RUN=0; DEFER=0; FORCE=0; VERIFY_ONLY=0; OS_ARG=""; WORK=""; MOUNT=""; LOCK=""; LOCK_HELD=0
279
+ trap cleanup EXIT
280
+ while [ $# -gt 0 ]; do
281
+ case "$1" in
282
+ compare) ver_cmp "$2" "$3"; exit 0 ;;
283
+ verify-file) verify_file "$2" "$3"; exit $? ;;
284
+ --first-run) FIRST_RUN=1 ;;
285
+ --defer) DEFER=1 ;;
286
+ --force) FORCE=1 ;;
287
+ --verify-only) VERIFY_ONLY=1 ;;
288
+ --os) OS_ARG=\${2:-}; shift ;;
289
+ *) echo "usage: ensure-hub.sh [--first-run] [--defer] [--force] [--verify-only] [--os mac|deb|rpm]" >&2; exit 2 ;;
290
+ esac
291
+ shift
292
+ done
293
+
294
+ [ "\${KT_NO_HUB:-}" = 1 ] && { log "skipped: KT_NO_HUB=1"; exit 0; }
295
+ MIN=$(conf_get MIN_HUB_VERSION)
296
+ [ -n "$MIN" ] || refuse "no MIN_HUB_VERSION in $CONF"
297
+ FEED=\${KT_HUB_FEED_BASE:-$(conf_get FEED_BASE)}
298
+ [ -n "$FEED" ] || refuse "no feed configured"
299
+ ALLOW_UNSIGNED=0
300
+ [ "\${KT_HUB_ALLOW_UNSIGNED:-}" = 1 ] && ALLOW_UNSIGNED=1
301
+ [ "$(conf_get HUB_ALLOW_UNSIGNED)" = 1 ] && ALLOW_UNSIGNED=1
302
+
303
+ KIND=""
304
+ if [ -n "$OS_ARG" ]; then
305
+ case "$OS_ARG" in mac) OS=mac ;; deb|rpm) OS=linux; KIND=$OS_ARG ;; *) echo "--os takes mac, deb or rpm" >&2; exit 2 ;; esac
306
+ else case "$(uname -s)" in Darwin) OS=mac ;; Linux) OS=linux ;; *) cannot "unsupported system $(uname -s)" ;; esac; fi
307
+
308
+ if [ "$FORCE" -eq 0 ]; then
309
+ cur=$(detect_version)
310
+ if [ -n "$cur" ]; then
311
+ [ "$cur" = unknown ] && { log "present, version unreadable, left alone"; exit 0; }
312
+ c=$(ver_cmp "$cur" "$MIN")
313
+ case "$c" in
314
+ 0|1) log "present at $cur (minimum $MIN), nothing to do"; exit 0 ;;
315
+ x) log "present, version '$cur' not comparable, left alone"; exit 0 ;;
316
+ esac
317
+ log "present at $cur, below $MIN"
318
+ else
319
+ log "absent"
320
+ fi
321
+ fi
322
+
323
+ [ "$FIRST_RUN" -eq 1 ] && first_run_gate
324
+
325
+ if [ "$OS" = linux ]; then
326
+ if [ -z "$KIND" ]; then
327
+ if command -v dpkg >/dev/null 2>&1; then KIND=deb
328
+ elif command -v rpm >/dev/null 2>&1; then KIND=rpm
329
+ else cannot "no deb or rpm package manager (an AppImage Hub is installed by hand)"; fi
330
+ fi
331
+ [ "$VERIFY_ONLY" -eq 1 ] || have_privilege || cannot "installing a package needs root or passwordless sudo"
332
+ else
333
+ KIND=mac
334
+ fi
335
+
336
+ [ "$VERIFY_ONLY" -eq 1 ] || take_lock || { log "another install is running"; exit 0; }
337
+ WORK=$(mktemp -d "\${TMPDIR:-/tmp}/kt-hub.XXXXXX") || cannot "no temporary directory"
338
+
339
+ case "$OS" in mac) chan=latest-mac.yml ;; *) chan=latest-linux.yml ;; esac
340
+ fetch "$FEED/$chan" "$WORK/feed.yml" || { log "could not fetch $FEED/$chan"; exit 12; }
341
+ fv=$(feed_version "$WORK/feed.yml")
342
+ c=$(ver_cmp "\${fv:-0}" "$MIN"); [ "$c" = 0 ] || [ "$c" = 1 ] || refuse "the feed offers \${fv:-no version}, below the minimum $MIN"
343
+ pair=$(pick_artifact "$WORK/feed.yml" "$KIND")
344
+ [ -n "$pair" ] || refuse "the feed lists no $KIND package for $(uname -m)"
345
+ name=\${pair% *}; want=\${pair##* }
346
+ bare_name "$name" || refuse "the feed names '$name', which is not a plain file name"
347
+ fetch "$FEED/$name" "$WORK/$name" || { log "could not fetch $FEED/$name"; exit 12; }
348
+ verify_file "$WORK/$name" "$want" || refuse "sha512 of $name does not match the feed"
349
+ log "sha512 of $name matches the feed"
350
+
351
+ case "$KIND" in
352
+ mac)
353
+ verify_mac_image "$WORK/$name"; rc=$?
354
+ [ "$rc" -eq 0 ] || refuse "$(mac_reason $rc)"
355
+ [ "$VERIFY_ONLY" -eq 1 ] && { log "verified $name, not installing (--verify-only)"; exit 0; }
356
+ dest=\${KT_HUB_APPS_DIR:-/Applications}
357
+ [ -w "$dest" ] || { dest=$HOME/Applications; mkdir -p "$dest"; }
358
+ pgrep -x Kutrion >/dev/null 2>&1 && cannot "the Hub is running; it updates through its own feed"
359
+ ditto "$MOUNT/Kutrion.app" "$dest/.Kutrion.app.new" || { rm -r -f "$dest/.Kutrion.app.new"; log "copy failed"; exit 12; }
360
+ rm -r -f "$dest/Kutrion.app" && command mv "$dest/.Kutrion.app.new" "$dest/Kutrion.app" || { log "could not place the app in $dest"; exit 12; }
361
+ log "installed Kutrion $fv into $dest" ;;
362
+ deb|rpm)
363
+ verify_linux_package "$KIND" "$WORK/$name"; rc=$?
364
+ case $rc in
365
+ 1) refuse "cannot read the $KIND package metadata here" ;;
366
+ 2) refuse "the package is not named $PKG_NAME" ;;
367
+ 3) refuse "the package version is below $MIN" ;;
368
+ esac
369
+ [ "$VERIFY_ONLY" -eq 1 ] && { log "verified $name, not installing (--verify-only)"; exit 0; }
370
+ # The package manager's sandbox user must be able to read the file.
371
+ chmod 644 "$WORK/$name"; chmod 755 "$WORK"
372
+ if [ "$KIND" = deb ]; then retry install_deb "$WORK/$name"; else retry install_rpm "$WORK/$name"; fi || { log "the package manager failed"; exit 12; }
373
+ log "installed Kutrion $fv" ;;
374
+ esac
375
+ exit 0
376
+ }
377
+
378
+ main "$@"
379
+ `, "ensure-hub.ps1": `# Installs the Kutrion Hub for the current user when it is absent or older than MIN_HUB_VERSION.
380
+ # The installer is fetched from the update feed, its sha512 is checked against the feed and its
381
+ # Authenticode identity against hub.conf; on any mismatch nothing is installed. The Hub is never removed.
382
+ #
383
+ # ensure-hub.ps1 [-FirstRun] [-Force] [-VerifyOnly]
384
+ # Exit: 0 present, installed or skipped by policy; 10 refused; 11 cannot install here; 12 fetch or install failed.
385
+ # Environment: KT_NO_HUB=1 skips; KT_HUB_FEED_BASE (https or file) replaces the feed;
386
+ # KT_HUB_ALLOW_UNSIGNED=1 accepts a build with no publisher identity.
387
+ param(
388
+ [switch]$FirstRun,
389
+ [switch]$Force,
390
+ [switch]$VerifyOnly,
391
+ [string]$Conf = (Join-Path $PSScriptRoot 'hub.conf')
392
+ )
393
+
394
+ $ErrorActionPreference = 'Stop'
395
+ $ProgressPreference = 'SilentlyContinue'
396
+ $AppId = 'com.kutrion.desktop'
397
+
398
+ function Write-Hub([string]$m) { Write-Output "ensure-hub: $m" }
399
+ function Stop-Refused([string]$m) { Write-Hub "refused, nothing installed: $m"; exit 10 }
400
+ function Stop-Cannot([string]$m) { Write-Hub "skipped: $m"; exit 11 }
401
+
402
+ function Get-ConfValue([string]$Name) {
403
+ if (-not (Test-Path -LiteralPath $Conf)) { return '' }
404
+ foreach ($l in Get-Content -LiteralPath $Conf) {
405
+ if ($l -match ('^' + [regex]::Escape($Name) + '=(.*)$')) { return $Matches[1].Trim() }
406
+ }
407
+ return ''
408
+ }
409
+
410
+ # -1, 0 or 1 for A against B; $null when either is not a dotted number with an optional suffix.
411
+ function Compare-HubVersion([string]$A, [string]$B) {
412
+ function Split-Ver([string]$v) {
413
+ $v = $v -replace '^v', '' -replace '\\+.*$', ''
414
+ $pre = ''
415
+ $i = $v.IndexOf('-')
416
+ if ($i -ge 0) { $pre = $v.Substring($i + 1); $v = $v.Substring(0, $i) }
417
+ if ($v -notmatch '^[0-9]+(\\.[0-9]+)*$') { return $null }
418
+ return @{ Parts = @($v.Split('.') | ForEach-Object { [int64]$_ }); Pre = $pre }
419
+ }
420
+ $x = Split-Ver $A; $y = Split-Ver $B
421
+ if ($null -eq $x -or $null -eq $y) { return $null }
422
+ $n = [Math]::Max($x.Parts.Count, $y.Parts.Count)
423
+ for ($i = 0; $i -lt $n; $i++) {
424
+ $p = if ($i -lt $x.Parts.Count) { $x.Parts[$i] } else { 0 }
425
+ $q = if ($i -lt $y.Parts.Count) { $y.Parts[$i] } else { 0 }
426
+ if ($p -ne $q) { if ($p -lt $q) { return -1 } else { return 1 } }
427
+ }
428
+ if ($x.Pre -eq $y.Pre) { return 0 }
429
+ if ($x.Pre -eq '') { return 1 }
430
+ if ($y.Pre -eq '') { return -1 }
431
+ if ([string]::CompareOrdinal($x.Pre, $y.Pre) -lt 0) { return -1 } else { return 1 }
432
+ }
433
+
434
+ function Get-Sha512B64([string]$Path) {
435
+ $sha = [Security.Cryptography.SHA512]::Create()
436
+ $fs = [IO.File]::OpenRead($Path)
437
+ try { return [Convert]::ToBase64String($sha.ComputeHash($fs)) } finally { $fs.Dispose(); $sha.Dispose() }
438
+ }
439
+
440
+ function Test-FileHash([string]$Path, [string]$Want) {
441
+ if ($Want -notmatch '^[A-Za-z0-9+/]{86}==$') { return $false }
442
+ return ((Get-Sha512B64 $Path) -ceq $Want)
443
+ }
444
+
445
+ # A feed file name is a bare name; anything with a path, scheme or whitespace could point off the feed origin.
446
+ function Test-BareName([string]$n) { return ($n -ne '' -and $n -notmatch '[\\\\/:\\s]' -and $n -notmatch '\\.\\.') }
447
+
448
+ function Get-FeedVersion([string]$Text) {
449
+ if ($Text -match '(?m)^version:\\s*["'']?([^\\s"'']+)') { return $Matches[1] }
450
+ return ''
451
+ }
452
+
453
+ function Get-FeedFiles([string]$Text) {
454
+ $out = @()
455
+ $name = $null
456
+ $inFiles = $false
457
+ foreach ($raw in ($Text -split "\`n")) {
458
+ $l = $raw.TrimEnd("\`r")
459
+ if ($l -match '^files:') { $inFiles = $true; continue }
460
+ if ($l -match '^[^ -]') { $inFiles = $false }
461
+ if (-not $inFiles) { continue }
462
+ if ($l -match '^\\s*-\\s*url:\\s*["'']?([^"'']+?)["'']?\\s*$') { $name = $Matches[1]; continue }
463
+ if ($name -and $l -match '^\\s+sha512:\\s*["'']?([^"'']+?)["'']?\\s*$') { $out += [pscustomobject]@{ Name = $name; Sha512 = $Matches[1] }; $name = $null }
464
+ }
465
+ return $out
466
+ }
467
+
468
+ # The installed Hub's version; 'unknown' when present but unreadable; $null when absent.
469
+ function Get-InstalledHub {
470
+ $roots = @('HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall', 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall',
471
+ 'HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall')
472
+ foreach ($r in $roots) {
473
+ if (-not (Test-Path $r)) { continue }
474
+ foreach ($k in Get-ChildItem $r -ErrorAction SilentlyContinue) {
475
+ $p = Get-ItemProperty -LiteralPath $k.PSPath -ErrorAction SilentlyContinue
476
+ # electron-builder registers DisplayName as "<product> <version>"; "Kutrion Terminal 1.2.8" must not match.
477
+ if ($k.PSChildName -eq $AppId -or $p.DisplayName -cmatch '^Kutrion( [0-9][^ ]*)?$') {
478
+ if ($p.DisplayVersion) { return [string]$p.DisplayVersion } else { return 'unknown' }
479
+ }
480
+ }
481
+ }
482
+ return $null
483
+ }
484
+
485
+ function Get-Fetched([string]$Url, [string]$Dest) {
486
+ if ($Url -like 'file://*') { Copy-Item -LiteralPath ([Uri]$Url).LocalPath -Destination $Dest -Force; return }
487
+ if ($Url -notlike 'https://*') { throw "only https and file feeds are used: $Url" }
488
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
489
+ Invoke-WebRequest -UseBasicParsing -Uri $Url -OutFile $Dest -TimeoutSec 900
490
+ }
491
+
492
+ # Dot-sourcing loads the functions above and runs nothing, so the checks can be driven one by one.
493
+ if ($MyInvocation.InvocationName -eq '.') { return }
494
+
495
+ if ($env:KT_NO_HUB -eq '1') { Write-Hub 'skipped: KT_NO_HUB=1'; exit 0 }
496
+
497
+ $min = Get-ConfValue 'MIN_HUB_VERSION'
498
+ if (-not $min) { Stop-Refused "no MIN_HUB_VERSION in $Conf" }
499
+ $feed = if ($env:KT_HUB_FEED_BASE) { $env:KT_HUB_FEED_BASE } else { Get-ConfValue 'FEED_BASE' }
500
+ if (-not $feed) { Stop-Refused 'no feed configured' }
501
+ $publisher = Get-ConfValue 'HUB_WIN_PUBLISHER'
502
+ $allowUnsigned = ($env:KT_HUB_ALLOW_UNSIGNED -eq '1') -or ((Get-ConfValue 'HUB_ALLOW_UNSIGNED') -eq '1')
503
+
504
+ if (-not $Force) {
505
+ $cur = Get-InstalledHub
506
+ if ($null -ne $cur) {
507
+ if ($cur -eq 'unknown') { Write-Hub 'present, version unreadable, left alone'; exit 0 }
508
+ $c = Compare-HubVersion $cur $min
509
+ if ($null -eq $c) { Write-Hub "present, version '$cur' not comparable, left alone"; exit 0 }
510
+ if ($c -ge 0) { Write-Hub "present at $cur (minimum $min), nothing to do"; exit 0 }
511
+ Write-Hub "present at $cur, below $min"
512
+ } else {
513
+ Write-Hub 'absent'
514
+ }
515
+ }
516
+
517
+ if ($FirstRun) {
518
+ $stamp = Join-Path $env:LOCALAPPDATA 'Kutrion\\ensure-hub.stamp'
519
+ $now = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds()
520
+ if (Test-Path -LiteralPath $stamp) {
521
+ $last = 0L
522
+ [void][int64]::TryParse((Get-Content -LiteralPath $stamp -Raw).Trim(), [ref]$last)
523
+ if ($now - $last -lt 86400) { Stop-Cannot 'last attempt was under a day ago' }
524
+ }
525
+ New-Item -ItemType Directory -Force -Path (Split-Path $stamp) | Out-Null
526
+ Set-Content -LiteralPath $stamp -Value $now
527
+ }
528
+
529
+ # One install at a time per account: the installer's own start and the app's first run can overlap.
530
+ $mutex = New-Object Threading.Mutex($false, 'Local\\KutrionEnsureHub')
531
+ $held = $false
532
+ if (-not $VerifyOnly) {
533
+ try { $held = $mutex.WaitOne(0) } catch [Threading.AbandonedMutexException] { $held = $true }
534
+ if (-not $held) { Write-Hub 'another install is running'; exit 0 }
535
+ }
536
+
537
+ $work = Join-Path ([IO.Path]::GetTempPath()) ('kt-hub-' + [guid]::NewGuid().ToString('N'))
538
+ New-Item -ItemType Directory -Force -Path $work | Out-Null
539
+ try {
540
+ try { Get-Fetched "$feed/latest.yml" (Join-Path $work 'feed.yml') } catch { Write-Hub "could not fetch $feed/latest.yml"; exit 12 }
541
+ $text = Get-Content -LiteralPath (Join-Path $work 'feed.yml') -Raw
542
+ $fv = Get-FeedVersion $text
543
+ $c = if ($fv) { Compare-HubVersion $fv $min } else { $null }
544
+ if ($null -eq $c -or $c -lt 0) { Stop-Refused "the feed offers '$fv', below the minimum $min" }
545
+ $entry = Get-FeedFiles $text | Where-Object { $_.Name -like '*.exe' } | Select-Object -First 1
546
+ if (-not $entry) { Stop-Refused 'the feed lists no installer' }
547
+ if (-not (Test-BareName $entry.Name)) { Stop-Refused "the feed names '$($entry.Name)', which is not a plain file name" }
548
+ $exe = Join-Path $work $entry.Name
549
+ try { Get-Fetched "$feed/$($entry.Name)" $exe } catch { Write-Hub "could not fetch $feed/$($entry.Name)"; exit 12 }
550
+ if (-not (Test-FileHash $exe $entry.Sha512)) { Stop-Refused "sha512 of $($entry.Name) does not match the feed" }
551
+ Write-Hub "sha512 of $($entry.Name) matches the feed"
552
+
553
+ $sig = Get-AuthenticodeSignature -LiteralPath $exe
554
+ if ($publisher) {
555
+ if ($sig.Status -ne 'Valid') { Stop-Refused "the installer signature is $($sig.Status)" }
556
+ $subject = $sig.SignerCertificate.Subject
557
+ if ($subject -notmatch ('(^|, )CN=' + [regex]::Escape($publisher) + '(,|$)')) { Stop-Refused "the installer is signed by '$subject', not by $publisher" }
558
+ } elseif ($allowUnsigned) {
559
+ Write-Hub "warning: no publisher identity is configured; continuing because unsigned builds were allowed (signature: $($sig.Status))"
560
+ } else {
561
+ Stop-Refused 'no publisher identity is configured and unsigned builds are not allowed'
562
+ }
563
+
564
+ if ($VerifyOnly) { Write-Hub "verified $($entry.Name), not installing (-VerifyOnly)"; exit 0 }
565
+
566
+ # Waits on this pid only: Start-Process -Wait in Windows PowerShell 5.1 waits on the whole process tree, so an
567
+ # installer that starts the app never returns.
568
+ $p = [Diagnostics.Process]::Start((New-Object Diagnostics.ProcessStartInfo -Property @{ FileName = $exe; Arguments = '/S /currentuser'; UseShellExecute = $false }))
569
+ if (-not $p.WaitForExit(600000)) { & taskkill.exe /PID $p.Id /T /F | Out-Null; Write-Hub 'the installer did not finish in 10 minutes'; exit 12 }
570
+ if ($p.ExitCode -ne 0) { Write-Hub "the installer exited $($p.ExitCode)"; exit 12 }
571
+ $after = Get-InstalledHub
572
+ if ($null -eq $after) { Write-Hub 'the installer finished but no Hub is registered'; exit 12 }
573
+ Write-Hub "installed Kutrion $after"
574
+ exit 0
575
+ } finally {
576
+ Remove-Item -LiteralPath $work -Recurse -Force -ErrorAction SilentlyContinue
577
+ if ($held) { $mutex.ReleaseMutex() }
578
+ # A run staged by the app lives in its own temp directory; nothing else is ever removed.
579
+ if ((Split-Path -Leaf $PSScriptRoot) -like 'kt-hub-run-*') { Remove-Item -LiteralPath $PSScriptRoot -Recurse -Force -ErrorAction SilentlyContinue }
580
+ }
581
+ `, "hub.conf": "# Read by ensure-hub.sh and ensure-hub.ps1, and shipped beside them in every app build.\nMIN_HUB_VERSION=1.2.9\nFEED_BASE=https://kutrion.com/updates\n# Authenticode subject common name the Hub installer must carry. Empty until a certificate exists (#973).\nHUB_WIN_PUBLISHER=\n# Apple Team ID the Hub bundle must be signed with. Empty until the Developer ID exists (#973).\nHUB_MAC_TEAM_ID=\n# 0 installs nothing that cannot be tied to a publisher identity above. 1 until code signing lands (#973, #3295). On Windows this equals the NSIS updater trust: sha512 over TLS from our own HTTPS feed. On macOS and Linux it is sha512 over TLS only, weaker than the macOS updater. Owner accepted this on #3283. KT_HUB_ALLOW_UNSIGNED=1 overrides per run.\nHUB_ALLOW_UNSIGNED=1\n" };
582
+ }
583
+ });
584
+
29
585
  // node_modules/ws/lib/constants.js
30
586
  var require_constants = __commonJS({
31
587
  "node_modules/ws/lib/constants.js"(exports2, module2) {
32
588
  "use strict";
589
+ init_define_KT_HUB_FILES();
33
590
  var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
34
591
  var hasBlob = typeof Blob !== "undefined";
35
592
  if (hasBlob) BINARY_TYPES.push("blob");
@@ -53,6 +610,7 @@ var require_constants = __commonJS({
53
610
  var require_buffer_util = __commonJS({
54
611
  "node_modules/ws/lib/buffer-util.js"(exports2, module2) {
55
612
  "use strict";
613
+ init_define_KT_HUB_FILES();
56
614
  var { EMPTY_BUFFER } = require_constants();
57
615
  var FastBuffer = Buffer[Symbol.species];
58
616
  function concat(list, totalLength) {
@@ -128,6 +686,7 @@ var require_buffer_util = __commonJS({
128
686
  var require_limiter = __commonJS({
129
687
  "node_modules/ws/lib/limiter.js"(exports2, module2) {
130
688
  "use strict";
689
+ init_define_KT_HUB_FILES();
131
690
  var kDone = Symbol("kDone");
132
691
  var kRun = Symbol("kRun");
133
692
  var Limiter = class {
@@ -178,6 +737,7 @@ var require_limiter = __commonJS({
178
737
  var require_permessage_deflate = __commonJS({
179
738
  "node_modules/ws/lib/permessage-deflate.js"(exports2, module2) {
180
739
  "use strict";
740
+ init_define_KT_HUB_FILES();
181
741
  var zlib = require("zlib");
182
742
  var bufferUtil = require_buffer_util();
183
743
  var Limiter = require_limiter();
@@ -561,6 +1121,7 @@ var require_permessage_deflate = __commonJS({
561
1121
  var require_validation = __commonJS({
562
1122
  "node_modules/ws/lib/validation.js"(exports2, module2) {
563
1123
  "use strict";
1124
+ init_define_KT_HUB_FILES();
564
1125
  var { isUtf8 } = require("buffer");
565
1126
  var { hasBlob } = require_constants();
566
1127
  var tokenChars = [
@@ -762,6 +1323,7 @@ var require_validation = __commonJS({
762
1323
  var require_receiver = __commonJS({
763
1324
  "node_modules/ws/lib/receiver.js"(exports2, module2) {
764
1325
  "use strict";
1326
+ init_define_KT_HUB_FILES();
765
1327
  var { Writable } = require("stream");
766
1328
  var PerMessageDeflate2 = require_permessage_deflate();
767
1329
  var {
@@ -1394,6 +1956,7 @@ var require_receiver = __commonJS({
1394
1956
  var require_sender = __commonJS({
1395
1957
  "node_modules/ws/lib/sender.js"(exports2, module2) {
1396
1958
  "use strict";
1959
+ init_define_KT_HUB_FILES();
1397
1960
  var { Duplex } = require("stream");
1398
1961
  var { randomFillSync } = require("crypto");
1399
1962
  var {
@@ -1887,6 +2450,7 @@ var require_sender = __commonJS({
1887
2450
  var require_event_target = __commonJS({
1888
2451
  "node_modules/ws/lib/event-target.js"(exports2, module2) {
1889
2452
  "use strict";
2453
+ init_define_KT_HUB_FILES();
1890
2454
  var { kForOnEventAttribute, kListener } = require_constants();
1891
2455
  var kCode = Symbol("kCode");
1892
2456
  var kData = Symbol("kData");
@@ -2116,6 +2680,7 @@ var require_event_target = __commonJS({
2116
2680
  var require_extension = __commonJS({
2117
2681
  "node_modules/ws/lib/extension.js"(exports2, module2) {
2118
2682
  "use strict";
2683
+ init_define_KT_HUB_FILES();
2119
2684
  var { tokenChars } = require_validation();
2120
2685
  function push(dest, name, elem) {
2121
2686
  if (dest[name] === void 0) dest[name] = [elem];
@@ -2269,6 +2834,7 @@ var require_extension = __commonJS({
2269
2834
  var require_websocket = __commonJS({
2270
2835
  "node_modules/ws/lib/websocket.js"(exports2, module2) {
2271
2836
  "use strict";
2837
+ init_define_KT_HUB_FILES();
2272
2838
  var EventEmitter = require("events");
2273
2839
  var https = require("https");
2274
2840
  var http = require("http");
@@ -3165,6 +3731,7 @@ var require_websocket = __commonJS({
3165
3731
  var require_stream = __commonJS({
3166
3732
  "node_modules/ws/lib/stream.js"(exports2, module2) {
3167
3733
  "use strict";
3734
+ init_define_KT_HUB_FILES();
3168
3735
  var WebSocket2 = require_websocket();
3169
3736
  var { Duplex } = require("stream");
3170
3737
  function emitClose(stream) {
@@ -3263,6 +3830,7 @@ var require_stream = __commonJS({
3263
3830
  var require_subprotocol = __commonJS({
3264
3831
  "node_modules/ws/lib/subprotocol.js"(exports2, module2) {
3265
3832
  "use strict";
3833
+ init_define_KT_HUB_FILES();
3266
3834
  var { tokenChars } = require_validation();
3267
3835
  function parse(header) {
3268
3836
  const protocols = /* @__PURE__ */ new Set();
@@ -3308,6 +3876,7 @@ var require_subprotocol = __commonJS({
3308
3876
  var require_websocket_server = __commonJS({
3309
3877
  "node_modules/ws/lib/websocket-server.js"(exports2, module2) {
3310
3878
  "use strict";
3879
+ init_define_KT_HUB_FILES();
3311
3880
  var EventEmitter = require("events");
3312
3881
  var http = require("http");
3313
3882
  var { Duplex } = require("stream");
@@ -3320,7 +3889,7 @@ var require_websocket_server = __commonJS({
3320
3889
  var keyRegex = /^[+/0-9A-Za-z]{22}==$/;
3321
3890
  var RUNNING = 0;
3322
3891
  var CLOSING = 1;
3323
- var CLOSED = 2;
3892
+ var CLOSED2 = 2;
3324
3893
  var WebSocketServer2 = class extends EventEmitter {
3325
3894
  /**
3326
3895
  * Create a `WebSocketServer` instance.
@@ -3449,7 +4018,7 @@ var require_websocket_server = __commonJS({
3449
4018
  * @public
3450
4019
  */
3451
4020
  close(cb) {
3452
- if (this._state === CLOSED) {
4021
+ if (this._state === CLOSED2) {
3453
4022
  if (cb) {
3454
4023
  this.once("close", () => {
3455
4024
  cb(new Error("The server is not running"));
@@ -3673,7 +4242,7 @@ var require_websocket_server = __commonJS({
3673
4242
  };
3674
4243
  }
3675
4244
  function emitClose(server) {
3676
- server._state = CLOSED;
4245
+ server._state = CLOSED2;
3677
4246
  server.emit("close");
3678
4247
  }
3679
4248
  function socketOnError() {
@@ -3709,6 +4278,7 @@ var require_websocket_server = __commonJS({
3709
4278
  var require_dispatcher = __commonJS({
3710
4279
  "node_modules/undici/lib/dispatcher/dispatcher.js"(exports2, module2) {
3711
4280
  "use strict";
4281
+ init_define_KT_HUB_FILES();
3712
4282
  var EventEmitter = require("node:events");
3713
4283
  var Dispatcher2 = class extends EventEmitter {
3714
4284
  dispatch() {
@@ -3764,6 +4334,7 @@ var require_dispatcher = __commonJS({
3764
4334
  var require_errors = __commonJS({
3765
4335
  "node_modules/undici/lib/core/errors.js"(exports2, module2) {
3766
4336
  "use strict";
4337
+ init_define_KT_HUB_FILES();
3767
4338
  var UndiciError = class extends Error {
3768
4339
  constructor(message) {
3769
4340
  super(message);
@@ -3989,6 +4560,7 @@ var require_errors = __commonJS({
3989
4560
  // node_modules/undici/lib/core/symbols.js
3990
4561
  var require_symbols = __commonJS({
3991
4562
  "node_modules/undici/lib/core/symbols.js"(exports2, module2) {
4563
+ init_define_KT_HUB_FILES();
3992
4564
  module2.exports = {
3993
4565
  kClose: Symbol("close"),
3994
4566
  kDestroy: Symbol("destroy"),
@@ -4063,6 +4635,7 @@ var require_symbols = __commonJS({
4063
4635
  var require_constants2 = __commonJS({
4064
4636
  "node_modules/undici/lib/core/constants.js"(exports2, module2) {
4065
4637
  "use strict";
4638
+ init_define_KT_HUB_FILES();
4066
4639
  var headerNameLowerCasedRecord = {};
4067
4640
  var wellknownHeaderNames = [
4068
4641
  "Accept",
@@ -4178,6 +4751,7 @@ var require_constants2 = __commonJS({
4178
4751
  var require_tree = __commonJS({
4179
4752
  "node_modules/undici/lib/core/tree.js"(exports2, module2) {
4180
4753
  "use strict";
4754
+ init_define_KT_HUB_FILES();
4181
4755
  var {
4182
4756
  wellknownHeaderNames,
4183
4757
  headerNameLowerCasedRecord
@@ -4318,6 +4892,7 @@ var require_tree = __commonJS({
4318
4892
  var require_util = __commonJS({
4319
4893
  "node_modules/undici/lib/core/util.js"(exports2, module2) {
4320
4894
  "use strict";
4895
+ init_define_KT_HUB_FILES();
4321
4896
  var assert = require("node:assert");
4322
4897
  var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
4323
4898
  var { IncomingMessage } = require("node:http");
@@ -4451,22 +5026,22 @@ var require_util = __commonJS({
4451
5026
  }
4452
5027
  return url;
4453
5028
  }
4454
- function getHostname(host) {
4455
- if (host[0] === "[") {
4456
- const idx2 = host.indexOf("]");
5029
+ function getHostname(host2) {
5030
+ if (host2[0] === "[") {
5031
+ const idx2 = host2.indexOf("]");
4457
5032
  assert(idx2 !== -1);
4458
- return host.substring(1, idx2);
5033
+ return host2.substring(1, idx2);
4459
5034
  }
4460
- const idx = host.indexOf(":");
4461
- if (idx === -1) return host;
4462
- return host.substring(0, idx);
5035
+ const idx = host2.indexOf(":");
5036
+ if (idx === -1) return host2;
5037
+ return host2.substring(0, idx);
4463
5038
  }
4464
- function getServerName(host) {
4465
- if (!host) {
5039
+ function getServerName(host2) {
5040
+ if (!host2) {
4466
5041
  return null;
4467
5042
  }
4468
- assert(typeof host === "string");
4469
- const servername = getHostname(host);
5043
+ assert(typeof host2 === "string");
5044
+ const servername = getHostname(host2);
4470
5045
  if (net.isIP(servername)) {
4471
5046
  return "";
4472
5047
  }
@@ -4824,6 +5399,7 @@ var require_util = __commonJS({
4824
5399
  var require_readable = __commonJS({
4825
5400
  "node_modules/undici/lib/api/readable.js"(exports2, module2) {
4826
5401
  "use strict";
5402
+ init_define_KT_HUB_FILES();
4827
5403
  var assert = require("node:assert");
4828
5404
  var { Readable } = require("node:stream");
4829
5405
  var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors();
@@ -5116,6 +5692,7 @@ var require_readable = __commonJS({
5116
5692
  // node_modules/undici/lib/api/util.js
5117
5693
  var require_util2 = __commonJS({
5118
5694
  "node_modules/undici/lib/api/util.js"(exports2, module2) {
5695
+ init_define_KT_HUB_FILES();
5119
5696
  var assert = require("node:assert");
5120
5697
  var {
5121
5698
  ResponseStatusCodeError
@@ -5178,6 +5755,7 @@ var require_util2 = __commonJS({
5178
5755
  var require_api_request = __commonJS({
5179
5756
  "node_modules/undici/lib/api/api-request.js"(exports2, module2) {
5180
5757
  "use strict";
5758
+ init_define_KT_HUB_FILES();
5181
5759
  var assert = require("node:assert");
5182
5760
  var { Readable } = require_readable();
5183
5761
  var { InvalidArgumentError, RequestAbortedError } = require_errors();
@@ -5363,6 +5941,7 @@ var require_api_request = __commonJS({
5363
5941
  // node_modules/undici/lib/api/abort-signal.js
5364
5942
  var require_abort_signal = __commonJS({
5365
5943
  "node_modules/undici/lib/api/abort-signal.js"(exports2, module2) {
5944
+ init_define_KT_HUB_FILES();
5366
5945
  var { addAbortListener } = require_util();
5367
5946
  var { RequestAbortedError } = require_errors();
5368
5947
  var kListener = Symbol("kListener");
@@ -5415,6 +5994,7 @@ var require_abort_signal = __commonJS({
5415
5994
  var require_api_stream = __commonJS({
5416
5995
  "node_modules/undici/lib/api/api-stream.js"(exports2, module2) {
5417
5996
  "use strict";
5997
+ init_define_KT_HUB_FILES();
5418
5998
  var assert = require("node:assert");
5419
5999
  var { finished, PassThrough } = require("node:stream");
5420
6000
  var { InvalidArgumentError, InvalidReturnValueError } = require_errors();
@@ -5588,6 +6168,7 @@ var require_api_stream = __commonJS({
5588
6168
  var require_api_pipeline = __commonJS({
5589
6169
  "node_modules/undici/lib/api/api-pipeline.js"(exports2, module2) {
5590
6170
  "use strict";
6171
+ init_define_KT_HUB_FILES();
5591
6172
  var {
5592
6173
  Readable,
5593
6174
  Duplex,
@@ -5788,6 +6369,7 @@ var require_api_pipeline = __commonJS({
5788
6369
  var require_api_upgrade = __commonJS({
5789
6370
  "node_modules/undici/lib/api/api-upgrade.js"(exports2, module2) {
5790
6371
  "use strict";
6372
+ init_define_KT_HUB_FILES();
5791
6373
  var { InvalidArgumentError, SocketError } = require_errors();
5792
6374
  var { AsyncResource } = require("node:async_hooks");
5793
6375
  var util = require_util();
@@ -5880,6 +6462,7 @@ var require_api_upgrade = __commonJS({
5880
6462
  var require_api_connect = __commonJS({
5881
6463
  "node_modules/undici/lib/api/api-connect.js"(exports2, module2) {
5882
6464
  "use strict";
6465
+ init_define_KT_HUB_FILES();
5883
6466
  var assert = require("node:assert");
5884
6467
  var { AsyncResource } = require("node:async_hooks");
5885
6468
  var { InvalidArgumentError, SocketError } = require_errors();
@@ -5943,10 +6526,10 @@ var require_api_connect = __commonJS({
5943
6526
  }
5944
6527
  }
5945
6528
  };
5946
- function connect2(opts2, callback) {
6529
+ function connect3(opts2, callback) {
5947
6530
  if (callback === void 0) {
5948
6531
  return new Promise((resolve2, reject) => {
5949
- connect2.call(this, opts2, (err, data) => {
6532
+ connect3.call(this, opts2, (err, data) => {
5950
6533
  return err ? reject(err) : resolve2(data);
5951
6534
  });
5952
6535
  });
@@ -5962,7 +6545,7 @@ var require_api_connect = __commonJS({
5962
6545
  queueMicrotask(() => callback(err, { opaque }));
5963
6546
  }
5964
6547
  }
5965
- module2.exports = connect2;
6548
+ module2.exports = connect3;
5966
6549
  }
5967
6550
  });
5968
6551
 
@@ -5970,6 +6553,7 @@ var require_api_connect = __commonJS({
5970
6553
  var require_api = __commonJS({
5971
6554
  "node_modules/undici/lib/api/index.js"(exports2, module2) {
5972
6555
  "use strict";
6556
+ init_define_KT_HUB_FILES();
5973
6557
  module2.exports.request = require_api_request();
5974
6558
  module2.exports.stream = require_api_stream();
5975
6559
  module2.exports.pipeline = require_api_pipeline();
@@ -5982,6 +6566,7 @@ var require_api = __commonJS({
5982
6566
  var require_dispatcher_base = __commonJS({
5983
6567
  "node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports2, module2) {
5984
6568
  "use strict";
6569
+ init_define_KT_HUB_FILES();
5985
6570
  var Dispatcher2 = require_dispatcher();
5986
6571
  var {
5987
6572
  ClientDestroyedError,
@@ -6143,6 +6728,7 @@ var require_dispatcher_base = __commonJS({
6143
6728
  var require_fixed_queue = __commonJS({
6144
6729
  "node_modules/undici/lib/dispatcher/fixed-queue.js"(exports2, module2) {
6145
6730
  "use strict";
6731
+ init_define_KT_HUB_FILES();
6146
6732
  var kSize = 2048;
6147
6733
  var kMask = kSize - 1;
6148
6734
  var FixedCircularBuffer = class {
@@ -6199,6 +6785,7 @@ var require_fixed_queue = __commonJS({
6199
6785
  // node_modules/undici/lib/dispatcher/pool-stats.js
6200
6786
  var require_pool_stats = __commonJS({
6201
6787
  "node_modules/undici/lib/dispatcher/pool-stats.js"(exports2, module2) {
6788
+ init_define_KT_HUB_FILES();
6202
6789
  var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols();
6203
6790
  var kPool = Symbol("pool");
6204
6791
  var PoolStats = class {
@@ -6232,6 +6819,7 @@ var require_pool_stats = __commonJS({
6232
6819
  var require_pool_base = __commonJS({
6233
6820
  "node_modules/undici/lib/dispatcher/pool-base.js"(exports2, module2) {
6234
6821
  "use strict";
6822
+ init_define_KT_HUB_FILES();
6235
6823
  var DispatcherBase = require_dispatcher_base();
6236
6824
  var FixedQueue = require_fixed_queue();
6237
6825
  var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols();
@@ -6387,6 +6975,7 @@ var require_pool_base = __commonJS({
6387
6975
  var require_diagnostics = __commonJS({
6388
6976
  "node_modules/undici/lib/core/diagnostics.js"(exports2, module2) {
6389
6977
  "use strict";
6978
+ init_define_KT_HUB_FILES();
6390
6979
  var diagnosticsChannel = require("node:diagnostics_channel");
6391
6980
  var util = require("node:util");
6392
6981
  var undiciDebugLog = util.debuglog("undici");
@@ -6416,34 +7005,34 @@ var require_diagnostics = __commonJS({
6416
7005
  const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog;
6417
7006
  diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => {
6418
7007
  const {
6419
- connectParams: { version, protocol, port, host }
7008
+ connectParams: { version, protocol, port, host: host2 }
6420
7009
  } = evt;
6421
7010
  debuglog(
6422
7011
  "connecting to %s using %s%s",
6423
- `${host}${port ? `:${port}` : ""}`,
7012
+ `${host2}${port ? `:${port}` : ""}`,
6424
7013
  protocol,
6425
7014
  version
6426
7015
  );
6427
7016
  });
6428
7017
  diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => {
6429
7018
  const {
6430
- connectParams: { version, protocol, port, host }
7019
+ connectParams: { version, protocol, port, host: host2 }
6431
7020
  } = evt;
6432
7021
  debuglog(
6433
7022
  "connected to %s using %s%s",
6434
- `${host}${port ? `:${port}` : ""}`,
7023
+ `${host2}${port ? `:${port}` : ""}`,
6435
7024
  protocol,
6436
7025
  version
6437
7026
  );
6438
7027
  });
6439
7028
  diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => {
6440
7029
  const {
6441
- connectParams: { version, protocol, port, host },
7030
+ connectParams: { version, protocol, port, host: host2 },
6442
7031
  error
6443
7032
  } = evt;
6444
7033
  debuglog(
6445
7034
  "connection to %s using %s%s errored - %s",
6446
- `${host}${port ? `:${port}` : ""}`,
7035
+ `${host2}${port ? `:${port}` : ""}`,
6447
7036
  protocol,
6448
7037
  version,
6449
7038
  error.message
@@ -6494,11 +7083,11 @@ var require_diagnostics = __commonJS({
6494
7083
  const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog;
6495
7084
  diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => {
6496
7085
  const {
6497
- connectParams: { version, protocol, port, host }
7086
+ connectParams: { version, protocol, port, host: host2 }
6498
7087
  } = evt;
6499
7088
  debuglog(
6500
7089
  "connecting to %s%s using %s%s",
6501
- host,
7090
+ host2,
6502
7091
  port ? `:${port}` : "",
6503
7092
  protocol,
6504
7093
  version
@@ -6506,11 +7095,11 @@ var require_diagnostics = __commonJS({
6506
7095
  });
6507
7096
  diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => {
6508
7097
  const {
6509
- connectParams: { version, protocol, port, host }
7098
+ connectParams: { version, protocol, port, host: host2 }
6510
7099
  } = evt;
6511
7100
  debuglog(
6512
7101
  "connected to %s%s using %s%s",
6513
- host,
7102
+ host2,
6514
7103
  port ? `:${port}` : "",
6515
7104
  protocol,
6516
7105
  version
@@ -6518,12 +7107,12 @@ var require_diagnostics = __commonJS({
6518
7107
  });
6519
7108
  diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => {
6520
7109
  const {
6521
- connectParams: { version, protocol, port, host },
7110
+ connectParams: { version, protocol, port, host: host2 },
6522
7111
  error
6523
7112
  } = evt;
6524
7113
  debuglog(
6525
7114
  "connection to %s%s using %s%s errored - %s",
6526
- host,
7115
+ host2,
6527
7116
  port ? `:${port}` : "",
6528
7117
  protocol,
6529
7118
  version,
@@ -6572,6 +7161,7 @@ var require_diagnostics = __commonJS({
6572
7161
  var require_request = __commonJS({
6573
7162
  "node_modules/undici/lib/core/request.js"(exports2, module2) {
6574
7163
  "use strict";
7164
+ init_define_KT_HUB_FILES();
6575
7165
  var {
6576
7166
  InvalidArgumentError,
6577
7167
  NotSupportedError
@@ -6896,6 +7486,7 @@ var require_request = __commonJS({
6896
7486
  var require_timers = __commonJS({
6897
7487
  "node_modules/undici/lib/util/timers.js"(exports2, module2) {
6898
7488
  "use strict";
7489
+ init_define_KT_HUB_FILES();
6899
7490
  var fastNow = 0;
6900
7491
  var RESOLUTION_MS = 1e3;
6901
7492
  var TICK_MS = (RESOLUTION_MS >> 1) - 1;
@@ -7127,6 +7718,7 @@ var require_timers = __commonJS({
7127
7718
  var require_connect = __commonJS({
7128
7719
  "node_modules/undici/lib/core/connect.js"(exports2, module2) {
7129
7720
  "use strict";
7721
+ init_define_KT_HUB_FILES();
7130
7722
  var net = require("node:net");
7131
7723
  var assert = require("node:assert");
7132
7724
  var util = require_util();
@@ -7192,14 +7784,14 @@ var require_connect = __commonJS({
7192
7784
  const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions);
7193
7785
  timeout = timeout == null ? 1e4 : timeout;
7194
7786
  allowH2 = allowH2 != null ? allowH2 : false;
7195
- return function connect2({ hostname: hostname2, host, protocol, port, servername, localAddress, httpSocket }, callback) {
7787
+ return function connect3({ hostname: hostname3, host: host2, protocol, port, servername, localAddress, httpSocket }, callback) {
7196
7788
  let socket;
7197
7789
  if (protocol === "https:") {
7198
7790
  if (!tls) {
7199
7791
  tls = require("node:tls");
7200
7792
  }
7201
- servername = servername || options.servername || util.getServerName(host) || null;
7202
- const sessionKey = servername || hostname2;
7793
+ servername = servername || options.servername || util.getServerName(host2) || null;
7794
+ const sessionKey = servername || hostname3;
7203
7795
  assert(sessionKey);
7204
7796
  const session = customSession || sessionCache.get(sessionKey) || null;
7205
7797
  port = port || 443;
@@ -7215,7 +7807,7 @@ var require_connect = __commonJS({
7215
7807
  socket: httpSocket,
7216
7808
  // upgrade socket connection
7217
7809
  port,
7218
- host: hostname2
7810
+ host: hostname3
7219
7811
  });
7220
7812
  socket.on("session", function(session2) {
7221
7813
  sessionCache.set(sessionKey, session2);
@@ -7229,14 +7821,14 @@ var require_connect = __commonJS({
7229
7821
  ...options,
7230
7822
  localAddress,
7231
7823
  port,
7232
- host: hostname2
7824
+ host: hostname3
7233
7825
  });
7234
7826
  }
7235
7827
  if (options.keepAlive == null || options.keepAlive) {
7236
7828
  const keepAliveInitialDelay = options.keepAliveInitialDelay === void 0 ? 6e4 : options.keepAliveInitialDelay;
7237
7829
  socket.setKeepAlive(true, keepAliveInitialDelay);
7238
7830
  }
7239
- const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname: hostname2, port });
7831
+ const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname: hostname3, port });
7240
7832
  socket.setNoDelay(true).once(protocol === "https:" ? "secureConnect" : "connect", function() {
7241
7833
  queueMicrotask(clearConnectTimeout);
7242
7834
  if (callback) {
@@ -7307,6 +7899,7 @@ var require_connect = __commonJS({
7307
7899
  var require_utils = __commonJS({
7308
7900
  "node_modules/undici/lib/llhttp/utils.js"(exports2) {
7309
7901
  "use strict";
7902
+ init_define_KT_HUB_FILES();
7310
7903
  Object.defineProperty(exports2, "__esModule", { value: true });
7311
7904
  exports2.enumToMap = void 0;
7312
7905
  function enumToMap(obj) {
@@ -7327,6 +7920,7 @@ var require_utils = __commonJS({
7327
7920
  var require_constants3 = __commonJS({
7328
7921
  "node_modules/undici/lib/llhttp/constants.js"(exports2) {
7329
7922
  "use strict";
7923
+ init_define_KT_HUB_FILES();
7330
7924
  Object.defineProperty(exports2, "__esModule", { value: true });
7331
7925
  exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0;
7332
7926
  var utils_1 = require_utils();
@@ -7648,6 +8242,7 @@ var require_constants3 = __commonJS({
7648
8242
  var require_llhttp_wasm = __commonJS({
7649
8243
  "node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {
7650
8244
  "use strict";
8245
+ init_define_KT_HUB_FILES();
7651
8246
  var { Buffer: Buffer2 } = require("node:buffer");
7652
8247
  module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEVDF8LQZIBIQMgASAERg2aAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGhzwBqLQAARw1dIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAybAgsgAkEANgIAIAZBAWohAUEeDF4LIAEgBEYEQEGTASEDDJoCCyABLQAAQcwARw1bIAFBAWohAUEKDF0LIAEgBEYEQEGUASEDDJkCCwJAAkAgAS0AAEHBAGsODwBcXFxcXFxcXFxcXFxcAVwLIAFBAWohAUH+ACEDDIACCyABQQFqIQFB/wAhAwz/AQsgASAERgRAQZUBIQMMmAILAkACQCABLQAAQcEAaw4DAFsBWwsgAUEBaiEBQf0AIQMM/wELIAFBAWohAUGAASEDDP4BC0GWASEDIAEgBEYNlgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBp88Aai0AAEcNWSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlwILIAJBADYCACAGQQFqIQFBCwxaCyABIARGBEBBlwEhAwyWAgsCQAJAAkACQCABLQAAQS1rDiMAW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1sBW1tbW1sCW1tbA1sLIAFBAWohAUH7ACEDDP8BCyABQQFqIQFB/AAhAwz+AQsgAUEBaiEBQYEBIQMM/QELIAFBAWohAUGCASEDDPwBC0GYASEDIAEgBEYNlAIgAigCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBqc8Aai0AAEcNVyAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlQILIAJBADYCACAGQQFqIQFBGQxYC0GZASEDIAEgBEYNkwIgAigCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBrs8Aai0AAEcNViAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlAILIAJBADYCACAGQQFqIQFBBgxXC0GaASEDIAEgBEYNkgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBtM8Aai0AAEcNVSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkwILIAJBADYCACAGQQFqIQFBHAxWC0GbASEDIAEgBEYNkQIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBts8Aai0AAEcNVCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkgILIAJBADYCACAGQQFqIQFBJwxVCyABIARGBEBBnAEhAwyRAgsCQAJAIAEtAABB1ABrDgIAAVQLIAFBAWohAUGGASEDDPgBCyABQQFqIQFBhwEhAwz3AQtBnQEhAyABIARGDY8CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjPAGotAABHDVIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADJACCyACQQA2AgAgBkEBaiEBQSYMUwtBngEhAyABIARGDY4CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbrPAGotAABHDVEgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI8CCyACQQA2AgAgBkEBaiEBQQMMUgtBnwEhAyABIARGDY0CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDVAgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI4CCyACQQA2AgAgBkEBaiEBQQwMUQtBoAEhAyABIARGDYwCIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQbzPAGotAABHDU8gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI0CCyACQQA2AgAgBkEBaiEBQQ0MUAsgASAERgRAQaEBIQMMjAILAkACQCABLQAAQcYAaw4LAE9PT09PT09PTwFPCyABQQFqIQFBiwEhAwzzAQsgAUEBaiEBQYwBIQMM8gELIAEgBEYEQEGiASEDDIsCCyABLQAAQdAARw1MIAFBAWohAQxGCyABIARGBEBBowEhAwyKAgsCQAJAIAEtAABByQBrDgcBTU1NTU0ATQsgAUEBaiEBQY4BIQMM8QELIAFBAWohAUEiDE0LQaQBIQMgASAERg2IAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHAzwBqLQAARw1LIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyJAgsgAkEANgIAIAZBAWohAUEdDEwLIAEgBEYEQEGlASEDDIgCCwJAAkAgAS0AAEHSAGsOAwBLAUsLIAFBAWohAUGQASEDDO8BCyABQQFqIQFBBAxLCyABIARGBEBBpgEhAwyHAgsCQAJAAkACQAJAIAEtAABBwQBrDhUATU1NTU1NTU1NTQFNTQJNTQNNTQRNCyABQQFqIQFBiAEhAwzxAQsgAUEBaiEBQYkBIQMM8AELIAFBAWohAUGKASEDDO8BCyABQQFqIQFBjwEhAwzuAQsgAUEBaiEBQZEBIQMM7QELQacBIQMgASAERg2FAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHtzwBqLQAARw1IIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyGAgsgAkEANgIAIAZBAWohAUERDEkLQagBIQMgASAERg2EAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHCzwBqLQAARw1HIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyFAgsgAkEANgIAIAZBAWohAUEsDEgLQakBIQMgASAERg2DAiACKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHFzwBqLQAARw1GIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyEAgsgAkEANgIAIAZBAWohAUErDEcLQaoBIQMgASAERg2CAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHKzwBqLQAARw1FIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyDAgsgAkEANgIAIAZBAWohAUEUDEYLIAEgBEYEQEGrASEDDIICCwJAAkACQAJAIAEtAABBwgBrDg8AAQJHR0dHR0dHR0dHRwNHCyABQQFqIQFBkwEhAwzrAQsgAUEBaiEBQZQBIQMM6gELIAFBAWohAUGVASEDDOkBCyABQQFqIQFBlgEhAwzoAQsgASAERgRAQawBIQMMgQILIAEtAABBxQBHDUIgAUEBaiEBDD0LQa0BIQMgASAERg3/ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHNzwBqLQAARw1CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyAAgsgAkEANgIAIAZBAWohAUEODEMLIAEgBEYEQEGuASEDDP8BCyABLQAAQdAARw1AIAFBAWohAUElDEILQa8BIQMgASAERg39ASACKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEHQzwBqLQAARw1AIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz+AQsgAkEANgIAIAZBAWohAUEqDEELIAEgBEYEQEGwASEDDP0BCwJAAkAgAS0AAEHVAGsOCwBAQEBAQEBAQEABQAsgAUEBaiEBQZoBIQMM5AELIAFBAWohAUGbASEDDOMBCyABIARGBEBBsQEhAwz8AQsCQAJAIAEtAABBwQBrDhQAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/AT8LIAFBAWohAUGZASEDDOMBCyABQQFqIQFBnAEhAwziAQtBsgEhAyABIARGDfoBIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQdnPAGotAABHDT0gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPsBCyACQQA2AgAgBkEBaiEBQSEMPgtBswEhAyABIARGDfkBIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQd3PAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPoBCyACQQA2AgAgBkEBaiEBQRoMPQsgASAERgRAQbQBIQMM+QELAkACQAJAIAEtAABBxQBrDhEAPT09PT09PT09AT09PT09Aj0LIAFBAWohAUGdASEDDOEBCyABQQFqIQFBngEhAwzgAQsgAUEBaiEBQZ8BIQMM3wELQbUBIQMgASAERg33ASACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHkzwBqLQAARw06IABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz4AQsgAkEANgIAIAZBAWohAUEoDDsLQbYBIQMgASAERg32ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHqzwBqLQAARw05IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz3AQsgAkEANgIAIAZBAWohAUEHDDoLIAEgBEYEQEG3ASEDDPYBCwJAAkAgAS0AAEHFAGsODgA5OTk5OTk5OTk5OTkBOQsgAUEBaiEBQaEBIQMM3QELIAFBAWohAUGiASEDDNwBC0G4ASEDIAEgBEYN9AEgAigCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB7c8Aai0AAEcNNyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9QELIAJBADYCACAGQQFqIQFBEgw4C0G5ASEDIAEgBEYN8wEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8M8Aai0AAEcNNiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9AELIAJBADYCACAGQQFqIQFBIAw3C0G6ASEDIAEgBEYN8gEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8s8Aai0AAEcNNSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8wELIAJBADYCACAGQQFqIQFBDww2CyABIARGBEBBuwEhAwzyAQsCQAJAIAEtAABByQBrDgcANTU1NTUBNQsgAUEBaiEBQaUBIQMM2QELIAFBAWohAUGmASEDDNgBC0G8ASEDIAEgBEYN8AEgAigCACIAIAQgAWtqIQUgASAAa0EHaiEGAkADQCABLQAAIABB9M8Aai0AAEcNMyAAQQdGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8QELIAJBADYCACAGQQFqIQFBGww0CyABIARGBEBBvQEhAwzwAQsCQAJAAkAgAS0AAEHCAGsOEgA0NDQ0NDQ0NDQBNDQ0NDQ0AjQLIAFBAWohAUGkASEDDNgBCyABQQFqIQFBpwEhAwzXAQsgAUEBaiEBQagBIQMM1gELIAEgBEYEQEG+ASEDDO8BCyABLQAAQc4ARw0wIAFBAWohAQwsCyABIARGBEBBvwEhAwzuAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQcEAaw4VAAECAz8EBQY/Pz8HCAkKCz8MDQ4PPwsgAUEBaiEBQegAIQMM4wELIAFBAWohAUHpACEDDOIBCyABQQFqIQFB7gAhAwzhAQsgAUEBaiEBQfIAIQMM4AELIAFBAWohAUHzACEDDN8BCyABQQFqIQFB9gAhAwzeAQsgAUEBaiEBQfcAIQMM3QELIAFBAWohAUH6ACEDDNwBCyABQQFqIQFBgwEhAwzbAQsgAUEBaiEBQYQBIQMM2gELIAFBAWohAUGFASEDDNkBCyABQQFqIQFBkgEhAwzYAQsgAUEBaiEBQZgBIQMM1wELIAFBAWohAUGgASEDDNYBCyABQQFqIQFBowEhAwzVAQsgAUEBaiEBQaoBIQMM1AELIAEgBEcEQCACQRA2AgggAiABNgIEQasBIQMM1AELQcABIQMM7AELQQAhAAJAIAIoAjgiA0UNACADKAI0IgNFDQAgAiADEQAAIQALIABFDV4gAEEVRw0HIAJB0QA2AhwgAiABNgIUIAJBsBc2AhAgAkEVNgIMQQAhAwzrAQsgAUEBaiABIARHDQgaQcIBIQMM6gELA0ACQCABLQAAQQprDgQIAAALAAsgBCABQQFqIgFHDQALQcMBIQMM6QELIAEgBEcEQCACQRE2AgggAiABNgIEQQEhAwzQAQtBxAEhAwzoAQsgASAERgRAQcUBIQMM6AELAkACQCABLQAAQQprDgQBKCgAKAsgAUEBagwJCyABQQFqDAULIAEgBEYEQEHGASEDDOcBCwJAAkAgAS0AAEEKaw4XAQsLAQsLCwsLCwsLCwsLCwsLCwsLCwALCyABQQFqIQELQbABIQMMzQELIAEgBEYEQEHIASEDDOYBCyABLQAAQSBHDQkgAkEAOwEyIAFBAWohAUGzASEDDMwBCwNAIAEhAAJAIAEgBEcEQCABLQAAQTBrQf8BcSIDQQpJDQEMJwtBxwEhAwzmAQsCQCACLwEyIgFBmTNLDQAgAiABQQpsIgU7ATIgBUH+/wNxIANB//8Dc0sNACAAQQFqIQEgAiADIAVqIgM7ATIgA0H//wNxQegHSQ0BCwtBACEDIAJBADYCHCACQcEJNgIQIAJBDTYCDCACIABBAWo2AhQM5AELIAJBADYCHCACIAE2AhQgAkHwDDYCECACQRs2AgxBACEDDOMBCyACKAIEIQAgAkEANgIEIAIgACABECYiAA0BIAFBAWoLIQFBrQEhAwzIAQsgAkHBATYCHCACIAA2AgwgAiABQQFqNgIUQQAhAwzgAQsgAigCBCEAIAJBADYCBCACIAAgARAmIgANASABQQFqCyEBQa4BIQMMxQELIAJBwgE2AhwgAiAANgIMIAIgAUEBajYCFEEAIQMM3QELIAJBADYCHCACIAE2AhQgAkGXCzYCECACQQ02AgxBACEDDNwBCyACQQA2AhwgAiABNgIUIAJB4xA2AhAgAkEJNgIMQQAhAwzbAQsgAkECOgAoDKwBC0EAIQMgAkEANgIcIAJBrws2AhAgAkECNgIMIAIgAUEBajYCFAzZAQtBAiEDDL8BC0ENIQMMvgELQSYhAwy9AQtBFSEDDLwBC0EWIQMMuwELQRghAwy6AQtBHCEDDLkBC0EdIQMMuAELQSAhAwy3AQtBISEDDLYBC0EjIQMMtQELQcYAIQMMtAELQS4hAwyzAQtBPSEDDLIBC0HLACEDDLEBC0HOACEDDLABC0HYACEDDK8BC0HZACEDDK4BC0HbACEDDK0BC0HxACEDDKwBC0H0ACEDDKsBC0GNASEDDKoBC0GXASEDDKkBC0GpASEDDKgBC0GvASEDDKcBC0GxASEDDKYBCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB8Rs2AhAgAkEGNgIMDL0BCyACQQA2AgAgBkEBaiEBQSQLOgApIAIoAgQhACACQQA2AgQgAiAAIAEQJyIARQRAQeUAIQMMowELIAJB+QA2AhwgAiABNgIUIAIgADYCDEEAIQMMuwELIABBFUcEQCACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwy7AQsgAkH4ADYCHCACIAE2AhQgAkHKGDYCECACQRU2AgxBACEDDLoBCyACQQA2AhwgAiABNgIUIAJBjhs2AhAgAkEGNgIMQQAhAwy5AQsgAkEANgIcIAIgATYCFCACQf4RNgIQIAJBBzYCDEEAIQMMuAELIAJBADYCHCACIAE2AhQgAkGMHDYCECACQQc2AgxBACEDDLcBCyACQQA2AhwgAiABNgIUIAJBww82AhAgAkEHNgIMQQAhAwy2AQsgAkEANgIcIAIgATYCFCACQcMPNgIQIAJBBzYCDEEAIQMMtQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
7653
8248
  }
@@ -7657,6 +8252,7 @@ var require_llhttp_wasm = __commonJS({
7657
8252
  var require_llhttp_simd_wasm = __commonJS({
7658
8253
  "node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {
7659
8254
  "use strict";
8255
+ init_define_KT_HUB_FILES();
7660
8256
  var { Buffer: Buffer2 } = require("node:buffer");
7661
8257
  module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
7662
8258
  }
@@ -7666,6 +8262,7 @@ var require_llhttp_simd_wasm = __commonJS({
7666
8262
  var require_constants4 = __commonJS({
7667
8263
  "node_modules/undici/lib/web/fetch/constants.js"(exports2, module2) {
7668
8264
  "use strict";
8265
+ init_define_KT_HUB_FILES();
7669
8266
  var corsSafeListedMethods = (
7670
8267
  /** @type {const} */
7671
8268
  ["GET", "HEAD", "POST"]
@@ -7884,6 +8481,7 @@ var require_constants4 = __commonJS({
7884
8481
  var require_global = __commonJS({
7885
8482
  "node_modules/undici/lib/web/fetch/global.js"(exports2, module2) {
7886
8483
  "use strict";
8484
+ init_define_KT_HUB_FILES();
7887
8485
  var globalOrigin = Symbol.for("undici.globalOrigin.1");
7888
8486
  function getGlobalOrigin() {
7889
8487
  return globalThis[globalOrigin];
@@ -7920,6 +8518,7 @@ var require_global = __commonJS({
7920
8518
  var require_data_url = __commonJS({
7921
8519
  "node_modules/undici/lib/web/fetch/data-url.js"(exports2, module2) {
7922
8520
  "use strict";
8521
+ init_define_KT_HUB_FILES();
7923
8522
  var assert = require("node:assert");
7924
8523
  var encoder = new TextEncoder();
7925
8524
  var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;
@@ -8272,6 +8871,7 @@ var require_data_url = __commonJS({
8272
8871
  var require_webidl = __commonJS({
8273
8872
  "node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) {
8274
8873
  "use strict";
8874
+ init_define_KT_HUB_FILES();
8275
8875
  var { types, inspect } = require("node:util");
8276
8876
  var { markAsUncloneable } = require("node:worker_threads");
8277
8877
  var { toUSVString } = require_util();
@@ -8691,6 +9291,7 @@ var require_webidl = __commonJS({
8691
9291
  var require_util3 = __commonJS({
8692
9292
  "node_modules/undici/lib/web/fetch/util.js"(exports2, module2) {
8693
9293
  "use strict";
9294
+ init_define_KT_HUB_FILES();
8694
9295
  var { Transform } = require("node:stream");
8695
9296
  var zlib = require("node:zlib");
8696
9297
  var { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require_constants4();
@@ -9561,6 +10162,7 @@ var require_util3 = __commonJS({
9561
10162
  var require_symbols2 = __commonJS({
9562
10163
  "node_modules/undici/lib/web/fetch/symbols.js"(exports2, module2) {
9563
10164
  "use strict";
10165
+ init_define_KT_HUB_FILES();
9564
10166
  module2.exports = {
9565
10167
  kUrl: Symbol("url"),
9566
10168
  kHeaders: Symbol("headers"),
@@ -9575,6 +10177,7 @@ var require_symbols2 = __commonJS({
9575
10177
  var require_file = __commonJS({
9576
10178
  "node_modules/undici/lib/web/fetch/file.js"(exports2, module2) {
9577
10179
  "use strict";
10180
+ init_define_KT_HUB_FILES();
9578
10181
  var { Blob: Blob2, File } = require("node:buffer");
9579
10182
  var { kState } = require_symbols2();
9580
10183
  var { webidl } = require_webidl();
@@ -9638,6 +10241,7 @@ var require_file = __commonJS({
9638
10241
  var require_formdata = __commonJS({
9639
10242
  "node_modules/undici/lib/web/fetch/formdata.js"(exports2, module2) {
9640
10243
  "use strict";
10244
+ init_define_KT_HUB_FILES();
9641
10245
  var { isBlobLike, iteratorMixin } = require_util3();
9642
10246
  var { kState } = require_symbols2();
9643
10247
  var { kEnumerableProperty } = require_util();
@@ -9785,6 +10389,7 @@ var require_formdata = __commonJS({
9785
10389
  var require_formdata_parser = __commonJS({
9786
10390
  "node_modules/undici/lib/web/fetch/formdata-parser.js"(exports2, module2) {
9787
10391
  "use strict";
10392
+ init_define_KT_HUB_FILES();
9788
10393
  var { isUSVString, bufferToLowerCasedHeaderName } = require_util();
9789
10394
  var { utf8DecodeBytes } = require_util3();
9790
10395
  var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url();
@@ -10036,6 +10641,7 @@ var require_formdata_parser = __commonJS({
10036
10641
  var require_body = __commonJS({
10037
10642
  "node_modules/undici/lib/web/fetch/body.js"(exports2, module2) {
10038
10643
  "use strict";
10644
+ init_define_KT_HUB_FILES();
10039
10645
  var util = require_util();
10040
10646
  var {
10041
10647
  ReadableStreamFrom,
@@ -10345,6 +10951,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
10345
10951
  var require_client_h1 = __commonJS({
10346
10952
  "node_modules/undici/lib/dispatcher/client-h1.js"(exports2, module2) {
10347
10953
  "use strict";
10954
+ init_define_KT_HUB_FILES();
10348
10955
  var assert = require("node:assert");
10349
10956
  var util = require_util();
10350
10957
  var { channels } = require_diagnostics();
@@ -10971,7 +11578,7 @@ var require_client_h1 = __commonJS({
10971
11578
  return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
10972
11579
  }
10973
11580
  function writeH1(client, request) {
10974
- const { method, path, host, upgrade, blocking, reset } = request;
11581
+ const { method, path, host: host2, upgrade, blocking, reset } = request;
10975
11582
  let { body, headers, contentLength } = request;
10976
11583
  const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
10977
11584
  if (util.isFormDataLike(body)) {
@@ -11039,8 +11646,8 @@ var require_client_h1 = __commonJS({
11039
11646
  }
11040
11647
  let header = `${method} ${path} HTTP/1.1\r
11041
11648
  `;
11042
- if (typeof host === "string") {
11043
- header += `host: ${host}\r
11649
+ if (typeof host2 === "string") {
11650
+ header += `host: ${host2}\r
11044
11651
  `;
11045
11652
  } else {
11046
11653
  header += client[kHostHeader];
@@ -11365,6 +11972,7 @@ ${len.toString(16)}\r
11365
11972
  var require_client_h2 = __commonJS({
11366
11973
  "node_modules/undici/lib/dispatcher/client-h2.js"(exports2, module2) {
11367
11974
  "use strict";
11975
+ init_define_KT_HUB_FILES();
11368
11976
  var assert = require("node:assert");
11369
11977
  var { pipeline: pipeline2 } = require("node:stream");
11370
11978
  var util = require_util();
@@ -11560,7 +12168,7 @@ var require_client_h2 = __commonJS({
11560
12168
  }
11561
12169
  function writeH2(client, request) {
11562
12170
  const session = client[kHTTP2Session];
11563
- const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
12171
+ const { body, method, path, host: host2, upgrade, expectContinue, signal, headers: reqHeaders } = request;
11564
12172
  if (upgrade) {
11565
12173
  util.errorRequest(client, request, new Error("Upgrade not supported for H2"));
11566
12174
  return false;
@@ -11582,8 +12190,8 @@ var require_client_h2 = __commonJS({
11582
12190
  }
11583
12191
  }
11584
12192
  let stream;
11585
- const { hostname: hostname2, port } = client[kUrl];
11586
- headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname2}${port ? `:${port}` : ""}`;
12193
+ const { hostname: hostname3, port } = client[kUrl];
12194
+ headers[HTTP2_HEADER_AUTHORITY] = host2 || `${hostname3}${port ? `:${port}` : ""}`;
11587
12195
  headers[HTTP2_HEADER_METHOD] = method;
11588
12196
  const abort = (err) => {
11589
12197
  if (request.aborted || request.completed) {
@@ -11895,6 +12503,7 @@ var require_client_h2 = __commonJS({
11895
12503
  var require_redirect_handler = __commonJS({
11896
12504
  "node_modules/undici/lib/handler/redirect-handler.js"(exports2, module2) {
11897
12505
  "use strict";
12506
+ init_define_KT_HUB_FILES();
11898
12507
  var util = require_util();
11899
12508
  var { kBodyUsed } = require_symbols();
11900
12509
  var assert = require("node:assert");
@@ -12054,6 +12663,7 @@ var require_redirect_handler = __commonJS({
12054
12663
  var require_redirect_interceptor = __commonJS({
12055
12664
  "node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports2, module2) {
12056
12665
  "use strict";
12666
+ init_define_KT_HUB_FILES();
12057
12667
  var RedirectHandler = require_redirect_handler();
12058
12668
  function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
12059
12669
  return (dispatch) => {
@@ -12076,6 +12686,7 @@ var require_redirect_interceptor = __commonJS({
12076
12686
  var require_client = __commonJS({
12077
12687
  "node_modules/undici/lib/dispatcher/client.js"(exports2, module2) {
12078
12688
  "use strict";
12689
+ init_define_KT_HUB_FILES();
12079
12690
  var assert = require("node:assert");
12080
12691
  var net = require("node:net");
12081
12692
  var http = require("node:http");
@@ -12166,7 +12777,7 @@ var require_client = __commonJS({
12166
12777
  strictContentLength,
12167
12778
  maxCachedSessions,
12168
12779
  maxRedirections,
12169
- connect: connect3,
12780
+ connect: connect4,
12170
12781
  maxRequestsPerClient,
12171
12782
  localAddress,
12172
12783
  maxResponseSize,
@@ -12216,7 +12827,7 @@ var require_client = __commonJS({
12216
12827
  if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {
12217
12828
  throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero");
12218
12829
  }
12219
- if (connect3 != null && typeof connect3 !== "function" && typeof connect3 !== "object") {
12830
+ if (connect4 != null && typeof connect4 !== "function" && typeof connect4 !== "object") {
12220
12831
  throw new InvalidArgumentError("connect must be a function or an object");
12221
12832
  }
12222
12833
  if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
@@ -12240,15 +12851,15 @@ var require_client = __commonJS({
12240
12851
  if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1)) {
12241
12852
  throw new InvalidArgumentError("maxConcurrentStreams must be a positive integer, greater than 0");
12242
12853
  }
12243
- if (typeof connect3 !== "function") {
12244
- connect3 = buildConnector({
12854
+ if (typeof connect4 !== "function") {
12855
+ connect4 = buildConnector({
12245
12856
  ...tls,
12246
12857
  maxCachedSessions,
12247
12858
  allowH2,
12248
12859
  socketPath,
12249
12860
  timeout: connectTimeout,
12250
12861
  ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
12251
- ...connect3
12862
+ ...connect4
12252
12863
  });
12253
12864
  }
12254
12865
  if (interceptors?.Client && Array.isArray(interceptors.Client)) {
@@ -12263,7 +12874,7 @@ var require_client = __commonJS({
12263
12874
  this[kInterceptors] = [createRedirectInterceptor({ maxRedirections })];
12264
12875
  }
12265
12876
  this[kUrl] = util.parseOrigin(url);
12266
- this[kConnector] = connect3;
12877
+ this[kConnector] = connect4;
12267
12878
  this[kPipelining] = pipelining != null ? pipelining : 1;
12268
12879
  this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize;
12269
12880
  this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout;
@@ -12317,7 +12928,7 @@ var require_client = __commonJS({
12317
12928
  }
12318
12929
  /* istanbul ignore: only used for test */
12319
12930
  [kConnect](cb) {
12320
- connect2(this);
12931
+ connect3(this);
12321
12932
  this.once("connect", cb);
12322
12933
  }
12323
12934
  [kDispatch](opts2, handler) {
@@ -12381,23 +12992,23 @@ var require_client = __commonJS({
12381
12992
  assert(client[kSize] === 0);
12382
12993
  }
12383
12994
  }
12384
- async function connect2(client) {
12995
+ async function connect3(client) {
12385
12996
  assert(!client[kConnecting]);
12386
12997
  assert(!client[kHTTPContext]);
12387
- let { host, hostname: hostname2, protocol, port } = client[kUrl];
12388
- if (hostname2[0] === "[") {
12389
- const idx = hostname2.indexOf("]");
12998
+ let { host: host2, hostname: hostname3, protocol, port } = client[kUrl];
12999
+ if (hostname3[0] === "[") {
13000
+ const idx = hostname3.indexOf("]");
12390
13001
  assert(idx !== -1);
12391
- const ip = hostname2.substring(1, idx);
13002
+ const ip = hostname3.substring(1, idx);
12392
13003
  assert(net.isIP(ip));
12393
- hostname2 = ip;
13004
+ hostname3 = ip;
12394
13005
  }
12395
13006
  client[kConnecting] = true;
12396
13007
  if (channels.beforeConnect.hasSubscribers) {
12397
13008
  channels.beforeConnect.publish({
12398
13009
  connectParams: {
12399
- host,
12400
- hostname: hostname2,
13010
+ host: host2,
13011
+ hostname: hostname3,
12401
13012
  protocol,
12402
13013
  port,
12403
13014
  version: client[kHTTPContext]?.version,
@@ -12410,8 +13021,8 @@ var require_client = __commonJS({
12410
13021
  try {
12411
13022
  const socket = await new Promise((resolve2, reject) => {
12412
13023
  client[kConnector]({
12413
- host,
12414
- hostname: hostname2,
13024
+ host: host2,
13025
+ hostname: hostname3,
12415
13026
  protocol,
12416
13027
  port,
12417
13028
  servername: client[kServerName],
@@ -12443,8 +13054,8 @@ var require_client = __commonJS({
12443
13054
  if (channels.connected.hasSubscribers) {
12444
13055
  channels.connected.publish({
12445
13056
  connectParams: {
12446
- host,
12447
- hostname: hostname2,
13057
+ host: host2,
13058
+ hostname: hostname3,
12448
13059
  protocol,
12449
13060
  port,
12450
13061
  version: client[kHTTPContext]?.version,
@@ -12464,8 +13075,8 @@ var require_client = __commonJS({
12464
13075
  if (channels.connectError.hasSubscribers) {
12465
13076
  channels.connectError.publish({
12466
13077
  connectParams: {
12467
- host,
12468
- hostname: hostname2,
13078
+ host: host2,
13079
+ hostname: hostname3,
12469
13080
  protocol,
12470
13081
  port,
12471
13082
  version: client[kHTTPContext]?.version,
@@ -12552,7 +13163,7 @@ var require_client = __commonJS({
12552
13163
  return;
12553
13164
  }
12554
13165
  if (!client[kHTTPContext]) {
12555
- connect2(client);
13166
+ connect3(client);
12556
13167
  return;
12557
13168
  }
12558
13169
  if (client[kHTTPContext].destroyed) {
@@ -12576,6 +13187,7 @@ var require_client = __commonJS({
12576
13187
  var require_pool = __commonJS({
12577
13188
  "node_modules/undici/lib/dispatcher/pool.js"(exports2, module2) {
12578
13189
  "use strict";
13190
+ init_define_KT_HUB_FILES();
12579
13191
  var {
12580
13192
  PoolBase,
12581
13193
  kClients,
@@ -12600,7 +13212,7 @@ var require_pool = __commonJS({
12600
13212
  constructor(origin, {
12601
13213
  connections,
12602
13214
  factory = defaultFactory,
12603
- connect: connect2,
13215
+ connect: connect3,
12604
13216
  connectTimeout,
12605
13217
  tls,
12606
13218
  maxCachedSessions,
@@ -12617,24 +13229,24 @@ var require_pool = __commonJS({
12617
13229
  if (typeof factory !== "function") {
12618
13230
  throw new InvalidArgumentError("factory must be a function.");
12619
13231
  }
12620
- if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") {
13232
+ if (connect3 != null && typeof connect3 !== "function" && typeof connect3 !== "object") {
12621
13233
  throw new InvalidArgumentError("connect must be a function or an object");
12622
13234
  }
12623
- if (typeof connect2 !== "function") {
12624
- connect2 = buildConnector({
13235
+ if (typeof connect3 !== "function") {
13236
+ connect3 = buildConnector({
12625
13237
  ...tls,
12626
13238
  maxCachedSessions,
12627
13239
  allowH2,
12628
13240
  socketPath,
12629
13241
  timeout: connectTimeout,
12630
13242
  ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
12631
- ...connect2
13243
+ ...connect3
12632
13244
  });
12633
13245
  }
12634
13246
  this[kInterceptors] = options.interceptors?.Pool && Array.isArray(options.interceptors.Pool) ? options.interceptors.Pool : [];
12635
13247
  this[kConnections] = connections || null;
12636
13248
  this[kUrl] = util.parseOrigin(origin);
12637
- this[kOptions] = { ...util.deepClone(options), connect: connect2, allowH2 };
13249
+ this[kOptions] = { ...util.deepClone(options), connect: connect3, allowH2 };
12638
13250
  this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
12639
13251
  this[kFactory] = factory;
12640
13252
  }
@@ -12659,6 +13271,7 @@ var require_pool = __commonJS({
12659
13271
  var require_agent = __commonJS({
12660
13272
  "node_modules/undici/lib/dispatcher/agent.js"(exports2, module2) {
12661
13273
  "use strict";
13274
+ init_define_KT_HUB_FILES();
12662
13275
  var { InvalidArgumentError } = require_errors();
12663
13276
  var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
12664
13277
  var DispatcherBase = require_dispatcher_base();
@@ -12677,22 +13290,22 @@ var require_agent = __commonJS({
12677
13290
  return opts2 && opts2.connections === 1 ? new Client(origin, opts2) : new Pool(origin, opts2);
12678
13291
  }
12679
13292
  var Agent = class extends DispatcherBase {
12680
- constructor({ factory = defaultFactory, maxRedirections = 0, connect: connect2, ...options } = {}) {
13293
+ constructor({ factory = defaultFactory, maxRedirections = 0, connect: connect3, ...options } = {}) {
12681
13294
  super();
12682
13295
  if (typeof factory !== "function") {
12683
13296
  throw new InvalidArgumentError("factory must be a function.");
12684
13297
  }
12685
- if (connect2 != null && typeof connect2 !== "function" && typeof connect2 !== "object") {
13298
+ if (connect3 != null && typeof connect3 !== "function" && typeof connect3 !== "object") {
12686
13299
  throw new InvalidArgumentError("connect must be a function or an object");
12687
13300
  }
12688
13301
  if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {
12689
13302
  throw new InvalidArgumentError("maxRedirections must be a positive number");
12690
13303
  }
12691
- if (connect2 && typeof connect2 !== "function") {
12692
- connect2 = { ...connect2 };
13304
+ if (connect3 && typeof connect3 !== "function") {
13305
+ connect3 = { ...connect3 };
12693
13306
  }
12694
13307
  this[kInterceptors] = options.interceptors?.Agent && Array.isArray(options.interceptors.Agent) ? options.interceptors.Agent : [createRedirectInterceptor({ maxRedirections })];
12695
- this[kOptions] = { ...util.deepClone(options), connect: connect2 };
13308
+ this[kOptions] = { ...util.deepClone(options), connect: connect3 };
12696
13309
  this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
12697
13310
  this[kMaxRedirections] = maxRedirections;
12698
13311
  this[kFactory] = factory;
@@ -12756,6 +13369,7 @@ var require_agent = __commonJS({
12756
13369
  var require_proxy_agent = __commonJS({
12757
13370
  "node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) {
12758
13371
  "use strict";
13372
+ init_define_KT_HUB_FILES();
12759
13373
  var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols();
12760
13374
  var { URL: URL2 } = require("node:url");
12761
13375
  var Agent = require_agent();
@@ -12803,9 +13417,9 @@ var require_proxy_agent = __commonJS({
12803
13417
  } else if (username && password) {
12804
13418
  this[kProxyHeaders]["proxy-authorization"] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString("base64")}`;
12805
13419
  }
12806
- const connect2 = buildConnector({ ...opts2.proxyTls });
13420
+ const connect3 = buildConnector({ ...opts2.proxyTls });
12807
13421
  this[kConnectEndpoint] = buildConnector({ ...opts2.requestTls });
12808
- this[kClient] = clientFactory(url, { connect: connect2 });
13422
+ this[kClient] = clientFactory(url, { connect: connect3 });
12809
13423
  this[kAgent] = new Agent({
12810
13424
  ...opts2,
12811
13425
  connect: async (opts3, callback) => {
@@ -12854,8 +13468,8 @@ var require_proxy_agent = __commonJS({
12854
13468
  const headers = buildHeaders(opts2.headers);
12855
13469
  throwIfProxyAuthIsSent(headers);
12856
13470
  if (headers && !("host" in headers) && !("Host" in headers)) {
12857
- const { host } = new URL2(opts2.origin);
12858
- headers.host = host;
13471
+ const { host: host2 } = new URL2(opts2.origin);
13472
+ headers.host = host2;
12859
13473
  }
12860
13474
  return this[kAgent].dispatch(
12861
13475
  {
@@ -12911,6 +13525,7 @@ var require_proxy_agent = __commonJS({
12911
13525
  var require_env_http_proxy_agent = __commonJS({
12912
13526
  "node_modules/undici/lib/dispatcher/env-http-proxy-agent.js"(exports2, module2) {
12913
13527
  "use strict";
13528
+ init_define_KT_HUB_FILES();
12914
13529
  var DispatcherBase = require_dispatcher_base();
12915
13530
  var { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require_symbols();
12916
13531
  var ProxyAgent = require_proxy_agent();
@@ -12973,10 +13588,10 @@ var require_env_http_proxy_agent = __commonJS({
12973
13588
  }
12974
13589
  }
12975
13590
  #getProxyAgentForUrl(url) {
12976
- let { protocol, host: hostname2, port } = url;
12977
- hostname2 = hostname2.replace(/:\d*$/, "").toLowerCase();
13591
+ let { protocol, host: hostname3, port } = url;
13592
+ hostname3 = hostname3.replace(/:\d*$/, "").toLowerCase();
12978
13593
  port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0;
12979
- if (!this.#shouldProxy(hostname2, port)) {
13594
+ if (!this.#shouldProxy(hostname3, port)) {
12980
13595
  return this[kNoProxyAgent];
12981
13596
  }
12982
13597
  if (protocol === "https:") {
@@ -12984,7 +13599,7 @@ var require_env_http_proxy_agent = __commonJS({
12984
13599
  }
12985
13600
  return this[kHttpProxyAgent];
12986
13601
  }
12987
- #shouldProxy(hostname2, port) {
13602
+ #shouldProxy(hostname3, port) {
12988
13603
  if (this.#noProxyChanged) {
12989
13604
  this.#parseNoProxy();
12990
13605
  }
@@ -13000,11 +13615,11 @@ var require_env_http_proxy_agent = __commonJS({
13000
13615
  continue;
13001
13616
  }
13002
13617
  if (!/^[.*]/.test(entry.hostname)) {
13003
- if (hostname2 === entry.hostname) {
13618
+ if (hostname3 === entry.hostname) {
13004
13619
  return false;
13005
13620
  }
13006
13621
  } else {
13007
- if (hostname2.endsWith(entry.hostname.replace(/^\*/, ""))) {
13622
+ if (hostname3.endsWith(entry.hostname.replace(/^\*/, ""))) {
13008
13623
  return false;
13009
13624
  }
13010
13625
  }
@@ -13047,6 +13662,7 @@ var require_env_http_proxy_agent = __commonJS({
13047
13662
  var require_headers = __commonJS({
13048
13663
  "node_modules/undici/lib/web/fetch/headers.js"(exports2, module2) {
13049
13664
  "use strict";
13665
+ init_define_KT_HUB_FILES();
13050
13666
  var { kConstruct } = require_symbols();
13051
13667
  var { kEnumerableProperty } = require_util();
13052
13668
  var {
@@ -13491,6 +14107,7 @@ var require_headers = __commonJS({
13491
14107
  var require_response = __commonJS({
13492
14108
  "node_modules/undici/lib/web/fetch/response.js"(exports2, module2) {
13493
14109
  "use strict";
14110
+ init_define_KT_HUB_FILES();
13494
14111
  var { Headers: Headers2, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers();
13495
14112
  var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body();
13496
14113
  var util = require_util();
@@ -13887,6 +14504,7 @@ var require_response = __commonJS({
13887
14504
  var require_dispatcher_weakref = __commonJS({
13888
14505
  "node_modules/undici/lib/web/fetch/dispatcher-weakref.js"(exports2, module2) {
13889
14506
  "use strict";
14507
+ init_define_KT_HUB_FILES();
13890
14508
  var { kConnected, kSize } = require_symbols();
13891
14509
  var CompatWeakRef = class {
13892
14510
  constructor(value) {
@@ -13929,6 +14547,7 @@ var require_dispatcher_weakref = __commonJS({
13929
14547
  var require_request2 = __commonJS({
13930
14548
  "node_modules/undici/lib/web/fetch/request.js"(exports2, module2) {
13931
14549
  "use strict";
14550
+ init_define_KT_HUB_FILES();
13932
14551
  var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body();
13933
14552
  var { Headers: Headers2, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers();
13934
14553
  var { FinalizationRegistry: FinalizationRegistry2 } = require_dispatcher_weakref()();
@@ -14624,6 +15243,7 @@ var require_request2 = __commonJS({
14624
15243
  var require_global2 = __commonJS({
14625
15244
  "node_modules/undici/lib/global.js"(exports2, module2) {
14626
15245
  "use strict";
15246
+ init_define_KT_HUB_FILES();
14627
15247
  var globalDispatcher = Symbol.for("undici.globalDispatcher.1");
14628
15248
  var { InvalidArgumentError } = require_errors();
14629
15249
  var Agent = require_agent();
@@ -14655,6 +15275,7 @@ var require_global2 = __commonJS({
14655
15275
  var require_fetch = __commonJS({
14656
15276
  "node_modules/undici/lib/web/fetch/index.js"(exports2, module2) {
14657
15277
  "use strict";
15278
+ init_define_KT_HUB_FILES();
14658
15279
  var {
14659
15280
  makeNetworkError,
14660
15281
  makeAppropriateNetworkError,
@@ -15720,6 +16341,7 @@ var require_fetch = __commonJS({
15720
16341
  var require_identity = __commonJS({
15721
16342
  "node_modules/yaml/dist/nodes/identity.js"(exports2) {
15722
16343
  "use strict";
16344
+ init_define_KT_HUB_FILES();
15723
16345
  var ALIAS = Symbol.for("yaml.alias");
15724
16346
  var DOC = Symbol.for("yaml.document");
15725
16347
  var MAP = Symbol.for("yaml.map");
@@ -15777,6 +16399,7 @@ var require_identity = __commonJS({
15777
16399
  var require_visit = __commonJS({
15778
16400
  "node_modules/yaml/dist/visit.js"(exports2) {
15779
16401
  "use strict";
16402
+ init_define_KT_HUB_FILES();
15780
16403
  var identity = require_identity();
15781
16404
  var BREAK = Symbol("break visit");
15782
16405
  var SKIP = Symbol("skip children");
@@ -15935,6 +16558,7 @@ var require_visit = __commonJS({
15935
16558
  var require_directives = __commonJS({
15936
16559
  "node_modules/yaml/dist/doc/directives.js"(exports2) {
15937
16560
  "use strict";
16561
+ init_define_KT_HUB_FILES();
15938
16562
  var identity = require_identity();
15939
16563
  var visit = require_visit();
15940
16564
  var escapeChars = {
@@ -16106,6 +16730,7 @@ var require_directives = __commonJS({
16106
16730
  var require_anchors = __commonJS({
16107
16731
  "node_modules/yaml/dist/doc/anchors.js"(exports2) {
16108
16732
  "use strict";
16733
+ init_define_KT_HUB_FILES();
16109
16734
  var identity = require_identity();
16110
16735
  var visit = require_visit();
16111
16736
  function anchorIsValid(anchor) {
@@ -16176,6 +16801,7 @@ var require_anchors = __commonJS({
16176
16801
  var require_applyReviver = __commonJS({
16177
16802
  "node_modules/yaml/dist/doc/applyReviver.js"(exports2) {
16178
16803
  "use strict";
16804
+ init_define_KT_HUB_FILES();
16179
16805
  function applyReviver(reviver, obj, key, val) {
16180
16806
  if (val && typeof val === "object") {
16181
16807
  if (Array.isArray(val)) {
@@ -16226,6 +16852,7 @@ var require_applyReviver = __commonJS({
16226
16852
  var require_toJS = __commonJS({
16227
16853
  "node_modules/yaml/dist/nodes/toJS.js"(exports2) {
16228
16854
  "use strict";
16855
+ init_define_KT_HUB_FILES();
16229
16856
  var identity = require_identity();
16230
16857
  function toJS(value, arg, ctx) {
16231
16858
  if (Array.isArray(value))
@@ -16256,6 +16883,7 @@ var require_toJS = __commonJS({
16256
16883
  var require_Node = __commonJS({
16257
16884
  "node_modules/yaml/dist/nodes/Node.js"(exports2) {
16258
16885
  "use strict";
16886
+ init_define_KT_HUB_FILES();
16259
16887
  var applyReviver = require_applyReviver();
16260
16888
  var identity = require_identity();
16261
16889
  var toJS = require_toJS();
@@ -16297,6 +16925,7 @@ var require_Node = __commonJS({
16297
16925
  var require_Alias = __commonJS({
16298
16926
  "node_modules/yaml/dist/nodes/Alias.js"(exports2) {
16299
16927
  "use strict";
16928
+ init_define_KT_HUB_FILES();
16300
16929
  var anchors = require_anchors();
16301
16930
  var visit = require_visit();
16302
16931
  var identity = require_identity();
@@ -16413,6 +17042,7 @@ var require_Alias = __commonJS({
16413
17042
  var require_Scalar = __commonJS({
16414
17043
  "node_modules/yaml/dist/nodes/Scalar.js"(exports2) {
16415
17044
  "use strict";
17045
+ init_define_KT_HUB_FILES();
16416
17046
  var identity = require_identity();
16417
17047
  var Node = require_Node();
16418
17048
  var toJS = require_toJS();
@@ -16443,6 +17073,7 @@ var require_Scalar = __commonJS({
16443
17073
  var require_createNode = __commonJS({
16444
17074
  "node_modules/yaml/dist/doc/createNode.js"(exports2) {
16445
17075
  "use strict";
17076
+ init_define_KT_HUB_FILES();
16446
17077
  var Alias = require_Alias();
16447
17078
  var identity = require_identity();
16448
17079
  var Scalar = require_Scalar();
@@ -16518,6 +17149,7 @@ var require_createNode = __commonJS({
16518
17149
  var require_Collection = __commonJS({
16519
17150
  "node_modules/yaml/dist/nodes/Collection.js"(exports2) {
16520
17151
  "use strict";
17152
+ init_define_KT_HUB_FILES();
16521
17153
  var createNode = require_createNode();
16522
17154
  var identity = require_identity();
16523
17155
  var Node = require_Node();
@@ -16661,6 +17293,7 @@ var require_Collection = __commonJS({
16661
17293
  var require_stringifyComment = __commonJS({
16662
17294
  "node_modules/yaml/dist/stringify/stringifyComment.js"(exports2) {
16663
17295
  "use strict";
17296
+ init_define_KT_HUB_FILES();
16664
17297
  var stringifyComment = (str6) => str6.replace(/^(?!$)(?: $)?/gm, "#");
16665
17298
  function indentComment(comment, indent) {
16666
17299
  if (/^\n+$/.test(comment))
@@ -16678,6 +17311,7 @@ var require_stringifyComment = __commonJS({
16678
17311
  var require_foldFlowLines = __commonJS({
16679
17312
  "node_modules/yaml/dist/stringify/foldFlowLines.js"(exports2) {
16680
17313
  "use strict";
17314
+ init_define_KT_HUB_FILES();
16681
17315
  var FOLD_FLOW = "flow";
16682
17316
  var FOLD_BLOCK = "block";
16683
17317
  var FOLD_QUOTED = "quoted";
@@ -16814,6 +17448,7 @@ ${indent}${text2.slice(fold + 1, end2)}`;
16814
17448
  var require_stringifyString = __commonJS({
16815
17449
  "node_modules/yaml/dist/stringify/stringifyString.js"(exports2) {
16816
17450
  "use strict";
17451
+ init_define_KT_HUB_FILES();
16817
17452
  var Scalar = require_Scalar();
16818
17453
  var foldFlowLines = require_foldFlowLines();
16819
17454
  var getFoldOptions = (ctx, isBlock) => ({
@@ -17097,6 +17732,7 @@ ${indent}`);
17097
17732
  var require_stringify = __commonJS({
17098
17733
  "node_modules/yaml/dist/stringify/stringify.js"(exports2) {
17099
17734
  "use strict";
17735
+ init_define_KT_HUB_FILES();
17100
17736
  var anchors = require_anchors();
17101
17737
  var identity = require_identity();
17102
17738
  var stringifyComment = require_stringifyComment();
@@ -17221,6 +17857,7 @@ ${ctx.indent}${str6}`;
17221
17857
  var require_stringifyPair = __commonJS({
17222
17858
  "node_modules/yaml/dist/stringify/stringifyPair.js"(exports2) {
17223
17859
  "use strict";
17860
+ init_define_KT_HUB_FILES();
17224
17861
  var identity = require_identity();
17225
17862
  var Scalar = require_Scalar();
17226
17863
  var stringify = require_stringify();
@@ -17354,6 +17991,7 @@ ${ctx.indent}`;
17354
17991
  var require_log = __commonJS({
17355
17992
  "node_modules/yaml/dist/log.js"(exports2) {
17356
17993
  "use strict";
17994
+ init_define_KT_HUB_FILES();
17357
17995
  var node_process = require("process");
17358
17996
  function debug(logLevel, ...messages) {
17359
17997
  if (logLevel === "debug")
@@ -17376,6 +18014,7 @@ var require_log = __commonJS({
17376
18014
  var require_merge = __commonJS({
17377
18015
  "node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports2) {
17378
18016
  "use strict";
18017
+ init_define_KT_HUB_FILES();
17379
18018
  var identity = require_identity();
17380
18019
  var Scalar = require_Scalar();
17381
18020
  var MERGE_KEY = "<<";
@@ -17436,6 +18075,7 @@ var require_merge = __commonJS({
17436
18075
  var require_addPairToJSMap = __commonJS({
17437
18076
  "node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports2) {
17438
18077
  "use strict";
18078
+ init_define_KT_HUB_FILES();
17439
18079
  var log3 = require_log();
17440
18080
  var merge = require_merge();
17441
18081
  var stringify = require_stringify();
@@ -17500,6 +18140,7 @@ var require_addPairToJSMap = __commonJS({
17500
18140
  var require_Pair = __commonJS({
17501
18141
  "node_modules/yaml/dist/nodes/Pair.js"(exports2) {
17502
18142
  "use strict";
18143
+ init_define_KT_HUB_FILES();
17503
18144
  var createNode = require_createNode();
17504
18145
  var stringifyPair = require_stringifyPair();
17505
18146
  var addPairToJSMap = require_addPairToJSMap();
@@ -17540,6 +18181,7 @@ var require_Pair = __commonJS({
17540
18181
  var require_stringifyCollection = __commonJS({
17541
18182
  "node_modules/yaml/dist/stringify/stringifyCollection.js"(exports2) {
17542
18183
  "use strict";
18184
+ init_define_KT_HUB_FILES();
17543
18185
  var identity = require_identity();
17544
18186
  var stringify = require_stringify();
17545
18187
  var stringifyComment = require_stringifyComment();
@@ -17691,6 +18333,7 @@ ${indent}${end}`;
17691
18333
  var require_YAMLMap = __commonJS({
17692
18334
  "node_modules/yaml/dist/nodes/YAMLMap.js"(exports2) {
17693
18335
  "use strict";
18336
+ init_define_KT_HUB_FILES();
17694
18337
  var stringifyCollection = require_stringifyCollection();
17695
18338
  var addPairToJSMap = require_addPairToJSMap();
17696
18339
  var Collection = require_Collection();
@@ -17835,6 +18478,7 @@ var require_YAMLMap = __commonJS({
17835
18478
  var require_map = __commonJS({
17836
18479
  "node_modules/yaml/dist/schema/common/map.js"(exports2) {
17837
18480
  "use strict";
18481
+ init_define_KT_HUB_FILES();
17838
18482
  var identity = require_identity();
17839
18483
  var YAMLMap = require_YAMLMap();
17840
18484
  var map = {
@@ -17857,6 +18501,7 @@ var require_map = __commonJS({
17857
18501
  var require_YAMLSeq = __commonJS({
17858
18502
  "node_modules/yaml/dist/nodes/YAMLSeq.js"(exports2) {
17859
18503
  "use strict";
18504
+ init_define_KT_HUB_FILES();
17860
18505
  var createNode = require_createNode();
17861
18506
  var stringifyCollection = require_stringifyCollection();
17862
18507
  var Collection = require_Collection();
@@ -17973,6 +18618,7 @@ var require_YAMLSeq = __commonJS({
17973
18618
  var require_seq = __commonJS({
17974
18619
  "node_modules/yaml/dist/schema/common/seq.js"(exports2) {
17975
18620
  "use strict";
18621
+ init_define_KT_HUB_FILES();
17976
18622
  var identity = require_identity();
17977
18623
  var YAMLSeq = require_YAMLSeq();
17978
18624
  var seq = {
@@ -17995,6 +18641,7 @@ var require_seq = __commonJS({
17995
18641
  var require_string = __commonJS({
17996
18642
  "node_modules/yaml/dist/schema/common/string.js"(exports2) {
17997
18643
  "use strict";
18644
+ init_define_KT_HUB_FILES();
17998
18645
  var stringifyString = require_stringifyString();
17999
18646
  var string = {
18000
18647
  identify: (value) => typeof value === "string",
@@ -18014,6 +18661,7 @@ var require_string = __commonJS({
18014
18661
  var require_null = __commonJS({
18015
18662
  "node_modules/yaml/dist/schema/common/null.js"(exports2) {
18016
18663
  "use strict";
18664
+ init_define_KT_HUB_FILES();
18017
18665
  var Scalar = require_Scalar();
18018
18666
  var nullTag = {
18019
18667
  identify: (value) => value == null,
@@ -18032,6 +18680,7 @@ var require_null = __commonJS({
18032
18680
  var require_bool = __commonJS({
18033
18681
  "node_modules/yaml/dist/schema/core/bool.js"(exports2) {
18034
18682
  "use strict";
18683
+ init_define_KT_HUB_FILES();
18035
18684
  var Scalar = require_Scalar();
18036
18685
  var boolTag = {
18037
18686
  identify: (value) => typeof value === "boolean",
@@ -18056,6 +18705,7 @@ var require_bool = __commonJS({
18056
18705
  var require_stringifyNumber = __commonJS({
18057
18706
  "node_modules/yaml/dist/stringify/stringifyNumber.js"(exports2) {
18058
18707
  "use strict";
18708
+ init_define_KT_HUB_FILES();
18059
18709
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
18060
18710
  if (typeof value === "bigint")
18061
18711
  return String(value);
@@ -18083,6 +18733,7 @@ var require_stringifyNumber = __commonJS({
18083
18733
  var require_float = __commonJS({
18084
18734
  "node_modules/yaml/dist/schema/core/float.js"(exports2) {
18085
18735
  "use strict";
18736
+ init_define_KT_HUB_FILES();
18086
18737
  var Scalar = require_Scalar();
18087
18738
  var stringifyNumber = require_stringifyNumber();
18088
18739
  var floatNaN = {
@@ -18129,6 +18780,7 @@ var require_float = __commonJS({
18129
18780
  var require_int = __commonJS({
18130
18781
  "node_modules/yaml/dist/schema/core/int.js"(exports2) {
18131
18782
  "use strict";
18783
+ init_define_KT_HUB_FILES();
18132
18784
  var stringifyNumber = require_stringifyNumber();
18133
18785
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
18134
18786
  var intResolve = (str6, offset, radix, { intAsBigInt }) => intAsBigInt ? BigInt(str6) : parseInt(str6.substring(offset), radix);
@@ -18174,6 +18826,7 @@ var require_int = __commonJS({
18174
18826
  var require_schema = __commonJS({
18175
18827
  "node_modules/yaml/dist/schema/core/schema.js"(exports2) {
18176
18828
  "use strict";
18829
+ init_define_KT_HUB_FILES();
18177
18830
  var map = require_map();
18178
18831
  var _null = require_null();
18179
18832
  var seq = require_seq();
@@ -18202,6 +18855,7 @@ var require_schema = __commonJS({
18202
18855
  var require_schema2 = __commonJS({
18203
18856
  "node_modules/yaml/dist/schema/json/schema.js"(exports2) {
18204
18857
  "use strict";
18858
+ init_define_KT_HUB_FILES();
18205
18859
  var Scalar = require_Scalar();
18206
18860
  var map = require_map();
18207
18861
  var seq = require_seq();
@@ -18269,6 +18923,7 @@ var require_schema2 = __commonJS({
18269
18923
  var require_binary = __commonJS({
18270
18924
  "node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports2) {
18271
18925
  "use strict";
18926
+ init_define_KT_HUB_FILES();
18272
18927
  var node_buffer = require("buffer");
18273
18928
  var Scalar = require_Scalar();
18274
18929
  var stringifyString = require_stringifyString();
@@ -18335,6 +18990,7 @@ var require_binary = __commonJS({
18335
18990
  var require_pairs = __commonJS({
18336
18991
  "node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports2) {
18337
18992
  "use strict";
18993
+ init_define_KT_HUB_FILES();
18338
18994
  var identity = require_identity();
18339
18995
  var Pair = require_Pair();
18340
18996
  var Scalar = require_Scalar();
@@ -18413,6 +19069,7 @@ ${cn.comment}` : item.comment;
18413
19069
  var require_omap = __commonJS({
18414
19070
  "node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports2) {
18415
19071
  "use strict";
19072
+ init_define_KT_HUB_FILES();
18416
19073
  var identity = require_identity();
18417
19074
  var toJS = require_toJS();
18418
19075
  var YAMLMap = require_YAMLMap();
@@ -18491,6 +19148,7 @@ var require_omap = __commonJS({
18491
19148
  var require_bool2 = __commonJS({
18492
19149
  "node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports2) {
18493
19150
  "use strict";
19151
+ init_define_KT_HUB_FILES();
18494
19152
  var Scalar = require_Scalar();
18495
19153
  function boolStringify({ value, source }, ctx) {
18496
19154
  const boolObj = value ? trueTag : falseTag;
@@ -18523,6 +19181,7 @@ var require_bool2 = __commonJS({
18523
19181
  var require_float2 = __commonJS({
18524
19182
  "node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports2) {
18525
19183
  "use strict";
19184
+ init_define_KT_HUB_FILES();
18526
19185
  var Scalar = require_Scalar();
18527
19186
  var stringifyNumber = require_stringifyNumber();
18528
19187
  var floatNaN = {
@@ -18572,6 +19231,7 @@ var require_float2 = __commonJS({
18572
19231
  var require_int2 = __commonJS({
18573
19232
  "node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports2) {
18574
19233
  "use strict";
19234
+ init_define_KT_HUB_FILES();
18575
19235
  var stringifyNumber = require_stringifyNumber();
18576
19236
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
18577
19237
  function intResolve(str6, offset, radix, { intAsBigInt }) {
@@ -18651,6 +19311,7 @@ var require_int2 = __commonJS({
18651
19311
  var require_set = __commonJS({
18652
19312
  "node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports2) {
18653
19313
  "use strict";
19314
+ init_define_KT_HUB_FILES();
18654
19315
  var identity = require_identity();
18655
19316
  var Pair = require_Pair();
18656
19317
  var YAMLMap = require_YAMLMap();
@@ -18740,6 +19401,7 @@ var require_set = __commonJS({
18740
19401
  var require_timestamp = __commonJS({
18741
19402
  "node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports2) {
18742
19403
  "use strict";
19404
+ init_define_KT_HUB_FILES();
18743
19405
  var stringifyNumber = require_stringifyNumber();
18744
19406
  function parseSexagesimal(str6, asBigInt) {
18745
19407
  const sign3 = str6[0];
@@ -18828,6 +19490,7 @@ var require_timestamp = __commonJS({
18828
19490
  var require_schema3 = __commonJS({
18829
19491
  "node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports2) {
18830
19492
  "use strict";
19493
+ init_define_KT_HUB_FILES();
18831
19494
  var map = require_map();
18832
19495
  var _null = require_null();
18833
19496
  var seq = require_seq();
@@ -18872,6 +19535,7 @@ var require_schema3 = __commonJS({
18872
19535
  var require_tags = __commonJS({
18873
19536
  "node_modules/yaml/dist/schema/tags.js"(exports2) {
18874
19537
  "use strict";
19538
+ init_define_KT_HUB_FILES();
18875
19539
  var map = require_map();
18876
19540
  var _null = require_null();
18877
19541
  var seq = require_seq();
@@ -18966,6 +19630,7 @@ var require_tags = __commonJS({
18966
19630
  var require_Schema = __commonJS({
18967
19631
  "node_modules/yaml/dist/schema/Schema.js"(exports2) {
18968
19632
  "use strict";
19633
+ init_define_KT_HUB_FILES();
18969
19634
  var identity = require_identity();
18970
19635
  var map = require_map();
18971
19636
  var seq = require_seq();
@@ -18998,6 +19663,7 @@ var require_Schema = __commonJS({
18998
19663
  var require_stringifyDocument = __commonJS({
18999
19664
  "node_modules/yaml/dist/stringify/stringifyDocument.js"(exports2) {
19000
19665
  "use strict";
19666
+ init_define_KT_HUB_FILES();
19001
19667
  var identity = require_identity();
19002
19668
  var stringify = require_stringify();
19003
19669
  var stringifyComment = require_stringifyComment();
@@ -19078,6 +19744,7 @@ var require_stringifyDocument = __commonJS({
19078
19744
  var require_Document = __commonJS({
19079
19745
  "node_modules/yaml/dist/doc/Document.js"(exports2) {
19080
19746
  "use strict";
19747
+ init_define_KT_HUB_FILES();
19081
19748
  var Alias = require_Alias();
19082
19749
  var Collection = require_Collection();
19083
19750
  var identity = require_identity();
@@ -19387,6 +20054,7 @@ var require_Document = __commonJS({
19387
20054
  var require_errors2 = __commonJS({
19388
20055
  "node_modules/yaml/dist/errors.js"(exports2) {
19389
20056
  "use strict";
20057
+ init_define_KT_HUB_FILES();
19390
20058
  var YAMLError = class extends Error {
19391
20059
  constructor(name, pos, code, message) {
19392
20060
  super();
@@ -19452,6 +20120,7 @@ ${pointer}
19452
20120
  var require_resolve_props = __commonJS({
19453
20121
  "node_modules/yaml/dist/compose/resolve-props.js"(exports2) {
19454
20122
  "use strict";
20123
+ init_define_KT_HUB_FILES();
19455
20124
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
19456
20125
  let spaceBefore = false;
19457
20126
  let atNewline = startOnNewline;
@@ -19586,6 +20255,7 @@ var require_resolve_props = __commonJS({
19586
20255
  var require_util_contains_newline = __commonJS({
19587
20256
  "node_modules/yaml/dist/compose/util-contains-newline.js"(exports2) {
19588
20257
  "use strict";
20258
+ init_define_KT_HUB_FILES();
19589
20259
  function containsNewline(key) {
19590
20260
  if (!key)
19591
20261
  return null;
@@ -19628,6 +20298,7 @@ var require_util_contains_newline = __commonJS({
19628
20298
  var require_util_flow_indent_check = __commonJS({
19629
20299
  "node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports2) {
19630
20300
  "use strict";
20301
+ init_define_KT_HUB_FILES();
19631
20302
  var utilContainsNewline = require_util_contains_newline();
19632
20303
  function flowIndentCheck(indent, fc, onError) {
19633
20304
  if (fc?.type === "flow-collection") {
@@ -19646,6 +20317,7 @@ var require_util_flow_indent_check = __commonJS({
19646
20317
  var require_util_map_includes = __commonJS({
19647
20318
  "node_modules/yaml/dist/compose/util-map-includes.js"(exports2) {
19648
20319
  "use strict";
20320
+ init_define_KT_HUB_FILES();
19649
20321
  var identity = require_identity();
19650
20322
  function mapIncludes(ctx, items, search) {
19651
20323
  const { uniqueKeys } = ctx.options;
@@ -19662,6 +20334,7 @@ var require_util_map_includes = __commonJS({
19662
20334
  var require_resolve_block_map = __commonJS({
19663
20335
  "node_modules/yaml/dist/compose/resolve-block-map.js"(exports2) {
19664
20336
  "use strict";
20337
+ init_define_KT_HUB_FILES();
19665
20338
  var Pair = require_Pair();
19666
20339
  var YAMLMap = require_YAMLMap();
19667
20340
  var resolveProps = require_resolve_props();
@@ -19770,6 +20443,7 @@ var require_resolve_block_map = __commonJS({
19770
20443
  var require_resolve_block_seq = __commonJS({
19771
20444
  "node_modules/yaml/dist/compose/resolve-block-seq.js"(exports2) {
19772
20445
  "use strict";
20446
+ init_define_KT_HUB_FILES();
19773
20447
  var YAMLSeq = require_YAMLSeq();
19774
20448
  var resolveProps = require_resolve_props();
19775
20449
  var utilFlowIndentCheck = require_util_flow_indent_check();
@@ -19821,6 +20495,7 @@ var require_resolve_block_seq = __commonJS({
19821
20495
  var require_resolve_end = __commonJS({
19822
20496
  "node_modules/yaml/dist/compose/resolve-end.js"(exports2) {
19823
20497
  "use strict";
20498
+ init_define_KT_HUB_FILES();
19824
20499
  function resolveEnd(end, offset, reqSpace, onError) {
19825
20500
  let comment = "";
19826
20501
  if (end) {
@@ -19864,6 +20539,7 @@ var require_resolve_end = __commonJS({
19864
20539
  var require_resolve_flow_collection = __commonJS({
19865
20540
  "node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports2) {
19866
20541
  "use strict";
20542
+ init_define_KT_HUB_FILES();
19867
20543
  var identity = require_identity();
19868
20544
  var Pair = require_Pair();
19869
20545
  var YAMLMap = require_YAMLMap();
@@ -20058,6 +20734,7 @@ var require_resolve_flow_collection = __commonJS({
20058
20734
  var require_compose_collection = __commonJS({
20059
20735
  "node_modules/yaml/dist/compose/compose-collection.js"(exports2) {
20060
20736
  "use strict";
20737
+ init_define_KT_HUB_FILES();
20061
20738
  var identity = require_identity();
20062
20739
  var Scalar = require_Scalar();
20063
20740
  var YAMLMap = require_YAMLMap();
@@ -20123,6 +20800,7 @@ var require_compose_collection = __commonJS({
20123
20800
  var require_resolve_block_scalar = __commonJS({
20124
20801
  "node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports2) {
20125
20802
  "use strict";
20803
+ init_define_KT_HUB_FILES();
20126
20804
  var Scalar = require_Scalar();
20127
20805
  function resolveBlockScalar(ctx, scalar, onError) {
20128
20806
  const start = scalar.offset;
@@ -20306,6 +20984,7 @@ var require_resolve_block_scalar = __commonJS({
20306
20984
  var require_resolve_flow_scalar = __commonJS({
20307
20985
  "node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports2) {
20308
20986
  "use strict";
20987
+ init_define_KT_HUB_FILES();
20309
20988
  var Scalar = require_Scalar();
20310
20989
  var resolveEnd = require_resolve_end();
20311
20990
  function resolveFlowScalar(scalar, strict, onError) {
@@ -20526,6 +21205,7 @@ var require_resolve_flow_scalar = __commonJS({
20526
21205
  var require_compose_scalar = __commonJS({
20527
21206
  "node_modules/yaml/dist/compose/compose-scalar.js"(exports2) {
20528
21207
  "use strict";
21208
+ init_define_KT_HUB_FILES();
20529
21209
  var identity = require_identity();
20530
21210
  var Scalar = require_Scalar();
20531
21211
  var resolveBlockScalar = require_resolve_block_scalar();
@@ -20607,6 +21287,7 @@ var require_compose_scalar = __commonJS({
20607
21287
  var require_util_empty_scalar_position = __commonJS({
20608
21288
  "node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports2) {
20609
21289
  "use strict";
21290
+ init_define_KT_HUB_FILES();
20610
21291
  function emptyScalarPosition(offset, before, pos) {
20611
21292
  if (before) {
20612
21293
  pos ?? (pos = before.length);
@@ -20637,6 +21318,7 @@ var require_util_empty_scalar_position = __commonJS({
20637
21318
  var require_compose_node = __commonJS({
20638
21319
  "node_modules/yaml/dist/compose/compose-node.js"(exports2) {
20639
21320
  "use strict";
21321
+ init_define_KT_HUB_FILES();
20640
21322
  var Alias = require_Alias();
20641
21323
  var identity = require_identity();
20642
21324
  var composeCollection = require_compose_collection();
@@ -20743,6 +21425,7 @@ var require_compose_node = __commonJS({
20743
21425
  var require_compose_doc = __commonJS({
20744
21426
  "node_modules/yaml/dist/compose/compose-doc.js"(exports2) {
20745
21427
  "use strict";
21428
+ init_define_KT_HUB_FILES();
20746
21429
  var Document = require_Document();
20747
21430
  var composeNode = require_compose_node();
20748
21431
  var resolveEnd = require_resolve_end();
@@ -20786,6 +21469,7 @@ var require_compose_doc = __commonJS({
20786
21469
  var require_composer = __commonJS({
20787
21470
  "node_modules/yaml/dist/compose/composer.js"(exports2) {
20788
21471
  "use strict";
21472
+ init_define_KT_HUB_FILES();
20789
21473
  var node_process = require("process");
20790
21474
  var directives = require_directives();
20791
21475
  var Document = require_Document();
@@ -20994,6 +21678,7 @@ ${end.comment}` : end.comment;
20994
21678
  var require_cst_scalar = __commonJS({
20995
21679
  "node_modules/yaml/dist/parse/cst-scalar.js"(exports2) {
20996
21680
  "use strict";
21681
+ init_define_KT_HUB_FILES();
20997
21682
  var resolveBlockScalar = require_resolve_block_scalar();
20998
21683
  var resolveFlowScalar = require_resolve_flow_scalar();
20999
21684
  var errors = require_errors2();
@@ -21179,6 +21864,7 @@ var require_cst_scalar = __commonJS({
21179
21864
  var require_cst_stringify = __commonJS({
21180
21865
  "node_modules/yaml/dist/parse/cst-stringify.js"(exports2) {
21181
21866
  "use strict";
21867
+ init_define_KT_HUB_FILES();
21182
21868
  var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst);
21183
21869
  function stringifyToken(token) {
21184
21870
  switch (token.type) {
@@ -21240,6 +21926,7 @@ var require_cst_stringify = __commonJS({
21240
21926
  var require_cst_visit = __commonJS({
21241
21927
  "node_modules/yaml/dist/parse/cst-visit.js"(exports2) {
21242
21928
  "use strict";
21929
+ init_define_KT_HUB_FILES();
21243
21930
  var BREAK = Symbol("break visit");
21244
21931
  var SKIP = Symbol("skip children");
21245
21932
  var REMOVE = Symbol("remove item");
@@ -21302,6 +21989,7 @@ var require_cst_visit = __commonJS({
21302
21989
  var require_cst = __commonJS({
21303
21990
  "node_modules/yaml/dist/parse/cst.js"(exports2) {
21304
21991
  "use strict";
21992
+ init_define_KT_HUB_FILES();
21305
21993
  var cstScalar = require_cst_scalar();
21306
21994
  var cstStringify = require_cst_stringify();
21307
21995
  var cstVisit = require_cst_visit();
@@ -21404,6 +22092,7 @@ var require_cst = __commonJS({
21404
22092
  var require_lexer = __commonJS({
21405
22093
  "node_modules/yaml/dist/parse/lexer.js"(exports2) {
21406
22094
  "use strict";
22095
+ init_define_KT_HUB_FILES();
21407
22096
  var cst = require_cst();
21408
22097
  function isEmpty(ch) {
21409
22098
  switch (ch) {
@@ -21993,6 +22682,7 @@ var require_lexer = __commonJS({
21993
22682
  var require_line_counter = __commonJS({
21994
22683
  "node_modules/yaml/dist/parse/line-counter.js"(exports2) {
21995
22684
  "use strict";
22685
+ init_define_KT_HUB_FILES();
21996
22686
  var LineCounter = class {
21997
22687
  constructor() {
21998
22688
  this.lineStarts = [];
@@ -22024,6 +22714,7 @@ var require_line_counter = __commonJS({
22024
22714
  var require_parser = __commonJS({
22025
22715
  "node_modules/yaml/dist/parse/parser.js"(exports2) {
22026
22716
  "use strict";
22717
+ init_define_KT_HUB_FILES();
22027
22718
  var node_process = require("process");
22028
22719
  var cst = require_cst();
22029
22720
  var lexer = require_lexer();
@@ -22898,6 +23589,7 @@ var require_parser = __commonJS({
22898
23589
  var require_public_api = __commonJS({
22899
23590
  "node_modules/yaml/dist/public-api.js"(exports2) {
22900
23591
  "use strict";
23592
+ init_define_KT_HUB_FILES();
22901
23593
  var composer = require_composer();
22902
23594
  var Document = require_Document();
22903
23595
  var errors = require_errors2();
@@ -22995,6 +23687,7 @@ var require_public_api = __commonJS({
22995
23687
  var require_dist = __commonJS({
22996
23688
  "node_modules/yaml/dist/index.js"(exports2) {
22997
23689
  "use strict";
23690
+ init_define_KT_HUB_FILES();
22998
23691
  var composer = require_composer();
22999
23692
  var Document = require_Document();
23000
23693
  var Schema = require_Schema();
@@ -23043,7 +23736,11 @@ var require_dist = __commonJS({
23043
23736
  }
23044
23737
  });
23045
23738
 
23739
+ // src/index.ts
23740
+ init_define_KT_HUB_FILES();
23741
+
23046
23742
  // src/email-code-login.ts
23743
+ init_define_KT_HUB_FILES();
23047
23744
  async function completeEmailCodeLogin(d) {
23048
23745
  let challenge = d.first;
23049
23746
  for (; ; ) {
@@ -23063,6 +23760,7 @@ async function completeEmailCodeLogin(d) {
23063
23760
  var import_fs5 = require("fs");
23064
23761
 
23065
23762
  // src/owner-only.ts
23763
+ init_define_KT_HUB_FILES();
23066
23764
  var import_fs = require("fs");
23067
23765
  function writeOwnerOnly(path, data) {
23068
23766
  const { O_WRONLY, O_CREAT, O_NOFOLLOW } = import_fs.constants;
@@ -23079,12 +23777,13 @@ function writeOwnerOnly(path, data) {
23079
23777
  }
23080
23778
 
23081
23779
  // src/index.ts
23082
- var import_os4 = require("os");
23780
+ var import_os5 = require("os");
23083
23781
  var import_path6 = require("path");
23084
23782
  var import_readline2 = require("readline");
23085
23783
  var import_net = require("net");
23086
23784
 
23087
23785
  // node_modules/ws/wrapper.mjs
23786
+ init_define_KT_HUB_FILES();
23088
23787
  var import_stream = __toESM(require_stream(), 1);
23089
23788
  var import_extension = __toESM(require_extension(), 1);
23090
23789
  var import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
@@ -23096,6 +23795,7 @@ var import_websocket_server = __toESM(require_websocket_server(), 1);
23096
23795
  var wrapper_default = import_websocket.default;
23097
23796
 
23098
23797
  // ../packages/shared/src/types.ts
23798
+ init_define_KT_HUB_FILES();
23099
23799
  var SHARED_HOST_INJECT_ONLY_COPY = "A host shared through a vault must use an injection-only credential, so members can connect without seeing it. Mark the credential injection-only in its vault first, then share the host.";
23100
23800
  var SHARED_HOST_REFUSAL_COPY = {
23101
23801
  shared_host_requires_inject_only: SHARED_HOST_INJECT_ONLY_COPY,
@@ -23111,6 +23811,7 @@ var isBrokerNodeKind = (v) => BROKER_NODE_KINDS.includes(v);
23111
23811
  var CLIENT_HEADER = "x-kutrion-client";
23112
23812
 
23113
23813
  // ../packages/shared/src/labels.ts
23814
+ init_define_KT_HUB_FILES();
23114
23815
  var ACTION_WORDS = {
23115
23816
  AI: "AI",
23116
23817
  API: "API",
@@ -23210,7 +23911,20 @@ function auditResultLabel(raw) {
23210
23911
  return humanizeAction(raw);
23211
23912
  }
23212
23913
 
23914
+ // ../packages/shared/src/client.ts
23915
+ init_define_KT_HUB_FILES();
23916
+
23917
+ // ../packages/shared/src/payload-crypto.ts
23918
+ init_define_KT_HUB_FILES();
23919
+
23920
+ // ../packages/shared/node_modules/@noble/post-quantum/hybrid.js
23921
+ init_define_KT_HUB_FILES();
23922
+
23923
+ // ../packages/shared/node_modules/@noble/curves/utils.js
23924
+ init_define_KT_HUB_FILES();
23925
+
23213
23926
  // ../packages/shared/node_modules/@noble/hashes/utils.js
23927
+ init_define_KT_HUB_FILES();
23214
23928
  function isBytes(a) {
23215
23929
  return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array" && "BYTES_PER_ELEMENT" in a && a.BYTES_PER_ELEMENT === 1;
23216
23930
  }
@@ -23559,7 +24273,11 @@ function validateObject(object, fields = {}, optFields = {}) {
23559
24273
  iter(optFields, true);
23560
24274
  }
23561
24275
 
24276
+ // ../packages/shared/node_modules/@noble/curves/abstract/curve.js
24277
+ init_define_KT_HUB_FILES();
24278
+
23562
24279
  // ../packages/shared/node_modules/@noble/curves/abstract/modular.js
24280
+ init_define_KT_HUB_FILES();
23563
24281
  var _0n2 = /* @__PURE__ */ BigInt(0);
23564
24282
  var _1n2 = /* @__PURE__ */ BigInt(1);
23565
24283
  var _2n = /* @__PURE__ */ BigInt(2);
@@ -24197,7 +24915,11 @@ function createKeygen(randomSecretKey, getPublicKey) {
24197
24915
  };
24198
24916
  }
24199
24917
 
24918
+ // ../packages/shared/node_modules/@noble/curves/abstract/weierstrass.js
24919
+ init_define_KT_HUB_FILES();
24920
+
24200
24921
  // ../packages/shared/node_modules/@noble/hashes/hmac.js
24922
+ init_define_KT_HUB_FILES();
24201
24923
  var _HMAC = class {
24202
24924
  oHash;
24203
24925
  iHash;
@@ -25181,7 +25903,11 @@ function ecdsa(Point, hash, ecdsaOpts = {}) {
25181
25903
  });
25182
25904
  }
25183
25905
 
25906
+ // ../packages/shared/node_modules/@noble/hashes/sha2.js
25907
+ init_define_KT_HUB_FILES();
25908
+
25184
25909
  // ../packages/shared/node_modules/@noble/hashes/_md.js
25910
+ init_define_KT_HUB_FILES();
25185
25911
  function Chi(a, b, c) {
25186
25912
  return a & b ^ ~a & c;
25187
25913
  }
@@ -25296,6 +26022,7 @@ var SHA256_IV = /* @__PURE__ */ Uint32Array.from([
25296
26022
  ]);
25297
26023
 
25298
26024
  // ../packages/shared/node_modules/@noble/hashes/_u64.js
26025
+ init_define_KT_HUB_FILES();
25299
26026
  var U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
25300
26027
  var _32n = /* @__PURE__ */ BigInt(32);
25301
26028
  function fromBig(n, le = false) {
@@ -25482,6 +26209,7 @@ var sha256 = /* @__PURE__ */ createHasher(
25482
26209
  );
25483
26210
 
25484
26211
  // ../packages/shared/node_modules/@noble/curves/abstract/fft.js
26212
+ init_define_KT_HUB_FILES();
25485
26213
  function checkU32(n) {
25486
26214
  if (!Number.isSafeInteger(n) || n < 0 || n > 4294967295)
25487
26215
  throw new Error("wrong u32 integer:" + n);
@@ -25567,6 +26295,7 @@ var FFTCore = (F2, coreOpts) => {
25567
26295
  };
25568
26296
 
25569
26297
  // ../packages/shared/node_modules/@noble/curves/nist.js
26298
+ init_define_KT_HUB_FILES();
25570
26299
  var p256_CURVE = /* @__PURE__ */ (() => ({
25571
26300
  p: BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),
25572
26301
  n: BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),
@@ -25580,6 +26309,7 @@ var p256_Point = /* @__PURE__ */ weierstrass(p256_CURVE);
25580
26309
  var p256 = /* @__PURE__ */ ecdsa(p256_Point, sha256);
25581
26310
 
25582
26311
  // ../packages/shared/node_modules/@noble/hashes/sha3.js
26312
+ init_define_KT_HUB_FILES();
25583
26313
  var _0n5 = BigInt(0);
25584
26314
  var _1n5 = BigInt(1);
25585
26315
  var _2n3 = BigInt(2);
@@ -25793,7 +26523,14 @@ var genShake = (suffix, blockLen, outputLen, info = {}) => createHasher((opts2 =
25793
26523
  var shake128 = /* @__PURE__ */ genShake(31, 168, 16, /* @__PURE__ */ oidNist(11));
25794
26524
  var shake256 = /* @__PURE__ */ genShake(31, 136, 32, /* @__PURE__ */ oidNist(12));
25795
26525
 
26526
+ // ../packages/shared/node_modules/@noble/post-quantum/ml-kem.js
26527
+ init_define_KT_HUB_FILES();
26528
+
26529
+ // ../packages/shared/node_modules/@noble/post-quantum/_crystals.js
26530
+ init_define_KT_HUB_FILES();
26531
+
25796
26532
  // ../packages/shared/node_modules/@noble/post-quantum/utils.js
26533
+ init_define_KT_HUB_FILES();
25797
26534
  var abytesDoc = abytes;
25798
26535
  var randomBytes3 = randomBytes;
25799
26536
  function equalBytes(a, b) {
@@ -26517,6 +27254,7 @@ async function decryptEnvelope(sk, enc2) {
26517
27254
  }
26518
27255
 
26519
27256
  // ../packages/shared/src/transfer-stream.ts
27257
+ init_define_KT_HUB_FILES();
26520
27258
  var CONTENT_RANGE = /^bytes (\d+)-(\d+)\/(\d+|\*)$/;
26521
27259
  var RangeNotUnderstoodError = class extends Error {
26522
27260
  constructor(contentRange) {
@@ -26662,6 +27400,7 @@ async function prepareUpload(body) {
26662
27400
  }
26663
27401
 
26664
27402
  // ../packages/shared/src/error-hop.ts
27403
+ init_define_KT_HUB_FILES();
26665
27404
  var HOP_OF_SLUG = {
26666
27405
  api_unavailable: "edge",
26667
27406
  request_timeout: "server",
@@ -26691,6 +27430,7 @@ function failedHopOf(slug, status) {
26691
27430
  }
26692
27431
 
26693
27432
  // ../packages/shared/src/refresh-signing.ts
27433
+ init_define_KT_HUB_FILES();
26694
27434
  var REFRESH_SIGNATURE_PREFIX = "kutrion-refresh/v1|";
26695
27435
  function refreshSigningMessage(refreshToken) {
26696
27436
  return REFRESH_SIGNATURE_PREFIX + refreshToken;
@@ -26854,8 +27594,8 @@ function guardRedirects(inner = fetch) {
26854
27594
  };
26855
27595
  }
26856
27596
  var LOOPBACK_IPV4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
26857
- function isLoopbackHost(hostname2) {
26858
- const h = hostname2.replace(/^\[|\]$/g, "").replace(/\.$/, "").toLowerCase();
27597
+ function isLoopbackHost(hostname3) {
27598
+ const h = hostname3.replace(/^\[|\]$/g, "").replace(/\.$/, "").toLowerCase();
26859
27599
  if (h === "localhost" || h.endsWith(".localhost") || h === "::1") return true;
26860
27600
  const quad = LOOPBACK_IPV4.exec(h);
26861
27601
  return !!quad && quad[1] === "127" && quad.slice(1).every((o) => Number(o) <= 255);
@@ -27840,8 +28580,8 @@ var KutrionClient = class {
27840
28580
  return this.req("GET", `/vault/changes?${q.toString()}`);
27841
28581
  }
27842
28582
  // VT-405k: team vaults (in the caller's org) holding a login for `host` that the caller can't access.
27843
- listRequestableVaults(host) {
27844
- return this.req("GET", `/vault/host-matches?host=${encodeURIComponent(host)}`);
28583
+ listRequestableVaults(host2) {
28584
+ return this.req("GET", `/vault/host-matches?host=${encodeURIComponent(host2)}`);
27845
28585
  }
27846
28586
  getCredential(vaultId, cid) {
27847
28587
  return this.req("GET", `/vault/${vaultId}/credentials/${cid}`);
@@ -28347,8 +29087,8 @@ var KutrionClient = class {
28347
29087
  startRecoveryCheckout() {
28348
29088
  return this.req("POST", "/billing/recovery/checkout");
28349
29089
  }
28350
- changePreview(plan_code) {
28351
- return this.req("GET", `/billing/change-preview?plan_code=${encodeURIComponent(plan_code)}`);
29090
+ changePreview(plan_code, coupon_code) {
29091
+ return this.req("GET", `/billing/change-preview?plan_code=${encodeURIComponent(plan_code)}${coupon_code ? `&coupon_code=${encodeURIComponent(coupon_code)}` : ""}`);
28352
29092
  }
28353
29093
  cancelScheduledChange() {
28354
29094
  return this.req("POST", "/billing/change/cancel-scheduled");
@@ -29761,7 +30501,11 @@ var KutrionClient = class {
29761
30501
  }
29762
30502
  };
29763
30503
 
30504
+ // ../packages/shared/src/billing.ts
30505
+ init_define_KT_HUB_FILES();
30506
+
29764
30507
  // ../packages/shared/src/currency.ts
30508
+ init_define_KT_HUB_FILES();
29765
30509
  var ISO_4217_EXPONENT = {
29766
30510
  BIF: 0,
29767
30511
  CLP: 0,
@@ -29884,6 +30628,7 @@ var SUSPENDED_PAYMENT_FAILURE = "This suspension was caused by a renewal payment
29884
30628
  var SUSPENDED_PAYMENT_FAILURE_REMEDY = "It's lifted by settling that outstanding payment, not by buying a plan again.";
29885
30629
 
29886
30630
  // ../packages/shared/src/destination-refusal.ts
30631
+ init_define_KT_HUB_FILES();
29887
30632
  var DESTINATION_REFUSAL_REASONS = [
29888
30633
  "bound",
29889
30634
  "not_in_bound_set",
@@ -29982,6 +30727,7 @@ function destinationRefusalLines(r, indent = " ") {
29982
30727
  }
29983
30728
 
29984
30729
  // ../packages/shared/src/credential-size-refusal.ts
30730
+ init_define_KT_HUB_FILES();
29985
30731
  var str2 = (v) => typeof v === "string" && v.trim() ? v.replace(/\s+/g, " ").trim() : null;
29986
30732
  var num = (v) => typeof v === "number" && Number.isFinite(v) ? v : null;
29987
30733
  function parseCredentialSizeRefusal(body) {
@@ -30011,6 +30757,7 @@ function credentialSizeRefusalLines(r) {
30011
30757
  }
30012
30758
 
30013
30759
  // ../packages/shared/src/recovery-copy.ts
30760
+ init_define_KT_HUB_FILES();
30014
30761
  var DUNNED_STATUSES = /* @__PURE__ */ new Set(["past_due", "past_due_expired", "suspended"]);
30015
30762
  var SPOKEN_BLOCKS = /* @__PURE__ */ new Set(["subscription_suspended", "managed_subscription", "debt_exceeds_one_period"]);
30016
30763
  function recoverySpeaks(r) {
@@ -30109,6 +30856,7 @@ function recoveryLines(r) {
30109
30856
  }
30110
30857
 
30111
30858
  // ../packages/shared/src/sign-in-refusal.ts
30859
+ init_define_KT_HUB_FILES();
30112
30860
  var SIGN_IN_CODE_COPY = {
30113
30861
  email_code_required: {
30114
30862
  title: "Sign in with an emailed code",
@@ -30126,6 +30874,7 @@ var MICROSOFT_EMAIL_UNVERIFIED = `Microsoft did not confirm this email address,
30126
30874
  var MICROSOFT_EMAIL_EXISTS = `An account already uses this email, and Microsoft did not confirm it. Sign in with your password, then ${MICROSOFT_LINK_STEP}`;
30127
30875
 
30128
30876
  // ../packages/shared/src/platform-flag-refusal.ts
30877
+ init_define_KT_HUB_FILES();
30129
30878
  var PLATFORM_FLAG_REFUSAL_COPY = {
30130
30879
  ai_assistant_disabled: `AI features are turned off on this deployment. ${PLATFORM_FLAG_OPERATOR}`,
30131
30880
  device_clients_disabled: `Sign-in from the desktop, mobile, extension and CLI apps is turned off on this deployment. Use the web app. ${PLATFORM_FLAG_OPERATOR}`,
@@ -30138,6 +30887,7 @@ function platformFlagRefusalText(code) {
30138
30887
  }
30139
30888
 
30140
30889
  // ../packages/shared/src/ssh-refusal.ts
30890
+ init_define_KT_HUB_FILES();
30141
30891
  var SSH_REFUSAL_CLASSIFICATION = {
30142
30892
  // ---- host key: a pin exists and this host did not match it, or could not be checked ----
30143
30893
  // The pin must be cleared by an admin first; reconnecting re-earns the identical refusal.
@@ -30275,6 +31025,7 @@ function refusalFamily(code) {
30275
31025
  }
30276
31026
 
30277
31027
  // ../packages/shared/src/host-key.ts
31028
+ init_define_KT_HUB_FILES();
30278
31029
  var HOST_KEY_CONFIRM_COPY = {
30279
31030
  heading: "Confirm this host's identity before connecting",
30280
31031
  body: "This host is new to your organization, so Kutrion paused before signing in and did not send your credential. Confirming records this key for the whole organization; every later connection must match it.",
@@ -30295,12 +31046,14 @@ function isOwnHost(pending, own) {
30295
31046
  }
30296
31047
 
30297
31048
  // ../packages/shared/src/conn-import-plan.ts
31049
+ init_define_KT_HUB_FILES();
30298
31050
  function connImportNeedsCredential(row) {
30299
31051
  return !row.username || !row.password && !row.credential_id && !(row.enroll && row.protocol === "SFTP");
30300
31052
  }
30301
31053
  var CONN_IMPORT_NO_CREDENTIAL_HINT = "Will not import: this export carries no password. Enter a username and password to import it.";
30302
31054
 
30303
31055
  // ../packages/shared/src/jump-refusal.ts
31056
+ init_define_KT_HUB_FILES();
30304
31057
  var JUMP_REFUSAL_CODES = [
30305
31058
  "jump_not_found",
30306
31059
  "jump_forbidden",
@@ -30395,6 +31148,7 @@ function jumpHostInUseSummary(r, deletingName) {
30395
31148
  var JUMP_HOST_IN_USE_ACTION = "Point each of these at a different jump host, or clear the jump host to reach it directly, and then delete this connection.";
30396
31149
 
30397
31150
  // ../packages/shared/src/ssh-session-protocol.ts
31151
+ init_define_KT_HUB_FILES();
30398
31152
  function wsOrigin(apiBase) {
30399
31153
  return apiBase.replace(/\/+$/, "").replace(/^http/, "ws");
30400
31154
  }
@@ -30552,6 +31306,7 @@ window.__vtEndedByAdminCode = ${JSON.stringify(SESSION_ENDED_BY_ADMIN)};
30552
31306
  `;
30553
31307
 
30554
31308
  // ../packages/shared/src/localname.ts
31309
+ init_define_KT_HUB_FILES();
30555
31310
  var WINDOWS_RESERVED = /* @__PURE__ */ new Set([
30556
31311
  "CON",
30557
31312
  "PRN",
@@ -30589,9 +31344,20 @@ function safeLocalName(name) {
30589
31344
  var localName = (name) => safeLocalName(name) || name;
30590
31345
 
30591
31346
  // ../packages/shared/src/asciicast.ts
31347
+ init_define_KT_HUB_FILES();
30592
31348
  var SUMMARY_ENGINE_LABEL = { lan: "Self-hosted AI", cloud: "Cloud AI", none: "No model" };
30593
31349
 
31350
+ // ../packages/shared/src/vault-key.ts
31351
+ init_define_KT_HUB_FILES();
31352
+
31353
+ // ../packages/shared/node_modules/@noble/hashes/argon2.js
31354
+ init_define_KT_HUB_FILES();
31355
+
31356
+ // ../packages/shared/node_modules/@noble/hashes/blake2.js
31357
+ init_define_KT_HUB_FILES();
31358
+
30594
31359
  // ../packages/shared/node_modules/@noble/hashes/_blake.js
31360
+ init_define_KT_HUB_FILES();
30595
31361
  var BSIGMA = /* @__PURE__ */ Uint8Array.from([
30596
31362
  0,
30597
31363
  1,
@@ -31630,6 +32396,7 @@ async function openPrivateItem(item, sealed, vaultKey) {
31630
32396
  }
31631
32397
 
31632
32398
  // ../packages/shared/src/private-vault-copy.ts
32399
+ init_define_KT_HUB_FILES();
31633
32400
  var VAULT_PASSPHRASE_MIN_LENGTH = 12;
31634
32401
  var PRIVATE_VAULT_COPY = {
31635
32402
  heading: "Private vault key",
@@ -31710,6 +32477,7 @@ var PRIVATE_VAULT_COPY = {
31710
32477
  };
31711
32478
 
31712
32479
  // src/args.ts
32480
+ init_define_KT_HUB_FILES();
31713
32481
  function parseForwardSpec(spec) {
31714
32482
  const m = spec.match(/^(\d{1,5}):(.+):(\d{1,5})$/);
31715
32483
  if (!m) return null;
@@ -31854,6 +32622,7 @@ function parseArgs(argv) {
31854
32622
  }
31855
32623
 
31856
32624
  // src/history.ts
32625
+ init_define_KT_HUB_FILES();
31857
32626
  function historyScopeParams(flags) {
31858
32627
  const out = {};
31859
32628
  for (const [flag, key] of [["session", "session_id"], ["host", "connection_id"], ["since", "since"], ["until", "until"]]) {
@@ -31871,6 +32640,7 @@ function historyScanLine(scan) {
31871
32640
  }
31872
32641
 
31873
32642
  // src/exit-codes.ts
32643
+ init_define_KT_HUB_FILES();
31874
32644
  var EXIT_ERROR = 1;
31875
32645
  var EXIT_UNAUTHENTICATED = 10;
31876
32646
  var EXIT_PAYMENT_REQUIRED = 11;
@@ -31898,6 +32668,7 @@ function exitForStatus(status) {
31898
32668
  }
31899
32669
 
31900
32670
  // src/keychain.ts
32671
+ init_define_KT_HUB_FILES();
31901
32672
  var import_child_process2 = require("child_process");
31902
32673
  var import_crypto = require("crypto");
31903
32674
  var import_fs2 = require("fs");
@@ -31905,12 +32676,14 @@ var import_os = require("os");
31905
32676
  var import_path2 = require("path");
31906
32677
 
31907
32678
  // src/env.ts
32679
+ init_define_KT_HUB_FILES();
31908
32680
  function ktEnv(name, env = process.env) {
31909
32681
  const current = env[`KT_${name}`];
31910
32682
  return current !== void 0 && current !== "" ? current : env[`VT_${name}`];
31911
32683
  }
31912
32684
 
31913
32685
  // src/win-acl.ts
32686
+ init_define_KT_HUB_FILES();
31914
32687
  var import_child_process = require("child_process");
31915
32688
  var import_path = require("path");
31916
32689
  var SPAWN_TIMEOUT_MS = 4e3;
@@ -32391,11 +33164,13 @@ function osKeychainAvailable() {
32391
33164
  }
32392
33165
 
32393
33166
  // src/app-signin.ts
33167
+ init_define_KT_HUB_FILES();
32394
33168
  var import_node_crypto4 = require("node:crypto");
32395
33169
  var import_node_child_process = require("node:child_process");
32396
33170
  var import_node_http = require("node:http");
32397
33171
 
32398
33172
  // src/device-identity.ts
33173
+ init_define_KT_HUB_FILES();
32399
33174
  var import_node_crypto = require("node:crypto");
32400
33175
  function generateDeviceKey() {
32401
33176
  const { publicKey, privateKey } = (0, import_node_crypto.generateKeyPairSync)("ed25519");
@@ -32432,6 +33207,7 @@ async function bindRefreshKey(deviceId, devicePkcs8B64, certMessage, transport)
32432
33207
  }
32433
33208
 
32434
33209
  // src/hub/borrow-confirm.ts
33210
+ init_define_KT_HUB_FILES();
32435
33211
  var import_node_url = require("node:url");
32436
33212
  var text = (v) => typeof v === "string" && v.trim() ? v.trim() : null;
32437
33213
  var SCRIPTS = [
@@ -32515,15 +33291,19 @@ function createBorrowConfirm(deps) {
32515
33291
  }
32516
33292
 
32517
33293
  // src/hub-login.ts
33294
+ init_define_KT_HUB_FILES();
32518
33295
  var import_os2 = require("os");
32519
33296
  var import_path3 = require("path");
32520
33297
 
32521
33298
  // src/hub/hub-channel.ts
33299
+ init_define_KT_HUB_FILES();
32522
33300
  var import_node_crypto2 = require("node:crypto");
32523
33301
  var import_node_fs = require("node:fs");
32524
33302
  var import_node_os = require("node:os");
32525
33303
  var import_node_path = require("node:path");
32526
- var CHANNEL_VERSION = 2;
33304
+ var CHANNEL_VERSION = 3;
33305
+ var BORROW_VERSION = 2;
33306
+ var supportedVersion = (v) => v === BORROW_VERSION || v === CHANNEL_VERSION;
32527
33307
  var DOMAIN = "kutrion-hub-channel/v1";
32528
33308
  var NONCE_RE = /^[A-Za-z0-9_-]{43}$/;
32529
33309
  var PUBKEY_RE = /^[A-Za-z0-9+/]{40,}={0,2}$/;
@@ -32562,6 +33342,18 @@ function grantTranscript(p) {
32562
33342
  (0, import_node_crypto2.createHash)("sha256").update(p.code).digest("hex")
32563
33343
  ].join("|");
32564
33344
  }
33345
+ var seedParts = (p) => [
33346
+ field(p.client),
33347
+ field(p.satPk),
33348
+ field(p.hubPk),
33349
+ field(p.devicePk),
33350
+ field(p.cnonce),
33351
+ field(p.snonce),
33352
+ field(p.origin)
33353
+ ];
33354
+ var seedRequestTranscript = (p) => [DOMAIN, "seedreq", ...seedParts(p)].join("|");
33355
+ var seedAcceptTranscript = (p) => [DOMAIN, "seedok", ...seedParts(p)].join("|");
33356
+ var seedTranscript = (p) => [DOMAIN, "seed", ...seedParts(p), (0, import_node_crypto2.createHash)("sha256").update(p.code).digest("hex")].join("|");
32565
33357
  function apiOrigin(base) {
32566
33358
  try {
32567
33359
  const u = new URL(base);
@@ -32745,37 +33537,63 @@ var REFUSAL_REASONS = [
32745
33537
  "unavailable",
32746
33538
  "origin_mismatch",
32747
33539
  "client_key_revoked",
33540
+ "hub_other_account",
33541
+ "hub_private_vault",
32748
33542
  "protocol"
32749
33543
  ];
32750
33544
  function parseOffer(raw) {
32751
33545
  const o = raw;
32752
33546
  if (!o || typeof o !== "object") return null;
32753
- if (o.v !== CHANNEL_VERSION || o.t !== "offer") return null;
33547
+ if (!supportedVersion(o.v) || o.t !== "offer") return null;
32754
33548
  if (typeof o.hub_pk !== "string" || !isEd25519PublicKey(o.hub_pk)) return null;
32755
33549
  if (typeof o.snonce !== "string" || !NONCE_RE.test(o.snonce)) return null;
32756
- return { v: CHANNEL_VERSION, t: "offer", hub_pk: o.hub_pk, snonce: o.snonce };
33550
+ return { v: o.v, t: "offer", hub_pk: o.hub_pk, snonce: o.snonce };
32757
33551
  }
32758
33552
  var CODE_RE = /^[A-Za-z0-9_-]{43}$/;
32759
33553
  function parseGrant(raw) {
32760
33554
  const o = raw;
32761
33555
  if (!o || typeof o !== "object") return null;
32762
- if (o.v !== CHANNEL_VERSION || o.t !== "grant") return null;
33556
+ if (!supportedVersion(o.v) || o.t !== "grant") return null;
32763
33557
  if (typeof o.code !== "string" || !CODE_RE.test(o.code)) return null;
32764
33558
  if (typeof o.expires_in !== "number" || !Number.isFinite(o.expires_in) || o.expires_in <= 0) return null;
32765
33559
  if (typeof o.sig !== "string" || !SIG_RE.test(o.sig)) return null;
32766
- return { v: CHANNEL_VERSION, t: "grant", code: o.code, expires_in: o.expires_in, sig: o.sig };
33560
+ return { v: o.v, t: "grant", code: o.code, expires_in: o.expires_in, sig: o.sig };
32767
33561
  }
32768
33562
  function parseRefuse(raw) {
32769
33563
  const o = raw;
32770
33564
  if (!o || typeof o !== "object") return null;
32771
- if (o.v !== CHANNEL_VERSION || o.t !== "refuse") return null;
33565
+ if (!supportedVersion(o.v) || o.t !== "refuse") return null;
32772
33566
  if (typeof o.reason !== "string" || !REFUSAL_REASONS.includes(o.reason)) return null;
32773
- return { v: CHANNEL_VERSION, t: "refuse", reason: o.reason };
33567
+ return { v: o.v, t: "refuse", reason: o.reason };
33568
+ }
33569
+ function parseOfferSeed(raw) {
33570
+ const o = raw;
33571
+ if (!o || typeof o !== "object") return null;
33572
+ if (o.v !== CHANNEL_VERSION || o.t !== "offer-seed") return null;
33573
+ if (typeof o.hub_pk !== "string" || !isEd25519PublicKey(o.hub_pk)) return null;
33574
+ if (typeof o.device_pk !== "string" || !isEd25519PublicKey(o.device_pk)) return null;
33575
+ if (typeof o.snonce !== "string" || !NONCE_RE.test(o.snonce)) return null;
33576
+ return { v: CHANNEL_VERSION, t: "offer-seed", hub_pk: o.hub_pk, device_pk: o.device_pk, snonce: o.snonce };
33577
+ }
33578
+ function parseAcceptSeed(raw) {
33579
+ const o = raw;
33580
+ if (!o || typeof o !== "object") return null;
33581
+ if (o.v !== CHANNEL_VERSION || o.t !== "accept-seed") return null;
33582
+ if (typeof o.sig !== "string" || !SIG_RE.test(o.sig)) return null;
33583
+ return { v: CHANNEL_VERSION, t: "accept-seed", sig: o.sig };
33584
+ }
33585
+ function parseSeeded(raw) {
33586
+ const o = raw;
33587
+ if (!o || typeof o !== "object") return null;
33588
+ if (o.v !== CHANNEL_VERSION || o.t !== "seeded") return null;
33589
+ if (o.result !== "joined" && o.result !== "already") return null;
33590
+ return { v: CHANNEL_VERSION, t: "seeded", result: o.result };
32774
33591
  }
32775
33592
  var GRANT_WINDOW_MS = 10 * 60 * 1e3;
32776
33593
  var PROMPT_WINDOW_MS = 10 * 60 * 1e3;
32777
33594
 
32778
33595
  // src/hub/hub-borrow.ts
33596
+ init_define_KT_HUB_FILES();
32779
33597
  var import_node_net = require("node:net");
32780
33598
  var import_node_crypto3 = require("node:crypto");
32781
33599
  var REPLY_DEADLINE_MS = 13e4;
@@ -32807,7 +33625,7 @@ function borrowFromHub(deps) {
32807
33625
  sock.on("close", () => finish({ ok: false, reason: "hub_not_running" }));
32808
33626
  sock.on("connect", () => {
32809
33627
  sock.write(`${JSON.stringify({
32810
- v: CHANNEL_VERSION,
33628
+ v: BORROW_VERSION,
32811
33629
  t: "hello",
32812
33630
  client: deps.identity.client,
32813
33631
  pk: deps.identity.publicSpkiB64,
@@ -32854,7 +33672,7 @@ function borrowFromHub(deps) {
32854
33672
  origin
32855
33673
  })
32856
33674
  );
32857
- sock.write(`${JSON.stringify({ v: CHANNEL_VERSION, t: "prove", sig })}
33675
+ sock.write(`${JSON.stringify({ v: BORROW_VERSION, t: "prove", sig })}
32858
33676
  `);
32859
33677
  continue;
32860
33678
  }
@@ -32910,7 +33728,7 @@ function forgetAtHub(deps) {
32910
33728
  sock.on("error", finish);
32911
33729
  sock.on("close", finish);
32912
33730
  sock.on("connect", () => {
32913
- sock.write(`${JSON.stringify({ v: CHANNEL_VERSION, t: "hello", client: deps.client, pk: satPk, cnonce, origin })}
33731
+ sock.write(`${JSON.stringify({ v: BORROW_VERSION, t: "hello", client: deps.client, pk: satPk, cnonce, origin })}
32914
33732
  `);
32915
33733
  });
32916
33734
  sock.on("data", (chunk) => {
@@ -32930,7 +33748,7 @@ function forgetAtHub(deps) {
32930
33748
  deps.privatePkcs8B64,
32931
33749
  forgetTranscript({ client: deps.client, satPk, hubPk: offer.hub_pk, cnonce, snonce: offer.snonce })
32932
33750
  );
32933
- sock.end(`${JSON.stringify({ v: CHANNEL_VERSION, t: "forget", sig })}
33751
+ sock.end(`${JSON.stringify({ v: BORROW_VERSION, t: "forget", sig })}
32934
33752
  `);
32935
33753
  });
32936
33754
  });
@@ -33090,6 +33908,7 @@ function createBorrowSession(store, client, resolveDeps) {
33090
33908
  }
33091
33909
 
33092
33910
  // src/hub/last-account.ts
33911
+ init_define_KT_HUB_FILES();
33093
33912
  var import_node_fs2 = require("node:fs");
33094
33913
  var import_node_path2 = require("node:path");
33095
33914
  var LAST_ACCOUNT_DIR = "Kutrion";
@@ -33222,12 +34041,12 @@ function readDevice(kc, base) {
33222
34041
  }
33223
34042
  }
33224
34043
  function cliHubStores(base, kc, keychainAvailable) {
33225
- let failed = false;
34044
+ let failed2 = false;
33226
34045
  let deviceId = null;
33227
34046
  let bearer = null;
33228
34047
  const keep = (account, value) => {
33229
34048
  const ok = write(kc, account, value);
33230
- if (!ok) failed = true;
34049
+ if (!ok) failed2 = true;
33231
34050
  return ok;
33232
34051
  };
33233
34052
  const store = {
@@ -33266,7 +34085,7 @@ function cliHubStores(base, kc, keychainAvailable) {
33266
34085
  write(kc, slot.lastAccount(base), userId);
33267
34086
  }
33268
34087
  };
33269
- return { store, pin, lastAccount, failedWrite: () => failed ? { deviceId, bearer } : null };
34088
+ return { store, pin, lastAccount, failedWrite: () => failed2 ? { deviceId, bearer } : null };
33270
34089
  }
33271
34090
  function borrowedDeviceKey(base, kc) {
33272
34091
  return readDevice(kc, base).key;
@@ -33719,7 +34538,450 @@ async function browserLogin(deps) {
33719
34538
  return { kind: "signed_in", user };
33720
34539
  }
33721
34540
 
34541
+ // src/hub-seed-login.ts
34542
+ init_define_KT_HUB_FILES();
34543
+ var import_os3 = require("os");
34544
+
34545
+ // src/hub/hub-seed.ts
34546
+ init_define_KT_HUB_FILES();
34547
+ var import_node_net2 = require("node:net");
34548
+ var import_node_child_process2 = require("node:child_process");
34549
+ var import_node_fs3 = require("node:fs");
34550
+ var import_node_os2 = require("node:os");
34551
+ var import_node_path3 = require("node:path");
34552
+ var REPLY_DEADLINE_MS2 = 13e4;
34553
+ var CODE_RE2 = /^[A-Za-z0-9_-]{43}$/;
34554
+ var CLOSED = Symbol("closed");
34555
+ var BAD = Symbol("bad");
34556
+ function lineReader(sock) {
34557
+ const queue = [];
34558
+ let waiter = null;
34559
+ let buf = "";
34560
+ let ended = false;
34561
+ const push = (v) => {
34562
+ if (waiter) {
34563
+ const w = waiter;
34564
+ waiter = null;
34565
+ w(v);
34566
+ } else queue.push(v);
34567
+ };
34568
+ const end = () => {
34569
+ if (!ended) {
34570
+ ended = true;
34571
+ push(CLOSED);
34572
+ }
34573
+ };
34574
+ sock.setEncoding("utf8");
34575
+ sock.on("error", end);
34576
+ sock.on("close", end);
34577
+ sock.on("data", (chunk) => {
34578
+ buf += chunk;
34579
+ if (buf.length > MAX_FRAME_BYTES) {
34580
+ buf = "";
34581
+ push(BAD);
34582
+ return;
34583
+ }
34584
+ let i;
34585
+ while ((i = buf.indexOf("\n")) >= 0) {
34586
+ const line = buf.slice(0, i);
34587
+ buf = buf.slice(i + 1);
34588
+ try {
34589
+ push(JSON.parse(line));
34590
+ } catch {
34591
+ push(BAD);
34592
+ }
34593
+ }
34594
+ });
34595
+ return {
34596
+ next: () => queue.length ? Promise.resolve(queue.shift()) : new Promise((r) => {
34597
+ waiter = r;
34598
+ })
34599
+ };
34600
+ }
34601
+ var failed = (reason) => ({ ok: false, reason });
34602
+ function seedOnce(deps) {
34603
+ const resolved = resolveEndpoint(deps.location, { platform: deps.platform });
34604
+ if (resolved === null) return Promise.resolve(failed("hub_not_running"));
34605
+ const origin = apiOrigin(deps.apiBase);
34606
+ if (origin === null) return Promise.resolve(failed("protocol"));
34607
+ const { identity } = deps;
34608
+ const sock = (deps.connectTo ?? ((e) => (0, import_node_net2.connect)(e)))(resolved.endpoint);
34609
+ const rd = lineReader(sock);
34610
+ const timer = setTimeout(() => sock.destroy(), REPLY_DEADLINE_MS2);
34611
+ timer.unref?.();
34612
+ const send = (frame) => sock.write(`${JSON.stringify(frame)}
34613
+ `);
34614
+ return (async () => {
34615
+ const cnonce = newNonce();
34616
+ send({ v: CHANNEL_VERSION, t: "hello-seed", client: identity.client, pk: identity.publicSpkiB64, cnonce, origin });
34617
+ const first = await rd.next();
34618
+ if (first === CLOSED) return failed("hub_not_running");
34619
+ if (first === BAD) return failed("protocol");
34620
+ const refusedFirst = parseRefuse(first);
34621
+ if (refusedFirst) return failed(refusedFirst.reason);
34622
+ const offer = parseOfferSeed(first);
34623
+ if (!offer) return failed("protocol");
34624
+ const pinned = deps.pin.hubPublicKey;
34625
+ if (pinned && !sameKey(pinned, offer.hub_pk)) return failed("hub_identity_changed");
34626
+ if (resolved.expectedHubPk && !sameKey(resolved.expectedHubPk, offer.hub_pk)) return failed("hub_identity_changed");
34627
+ if (!pinned) {
34628
+ if (!await deps.confirmHub(keyFingerprint(identity.client, offer.hub_pk))) return failed("hub_unconfirmed");
34629
+ deps.pin.pin(offer.hub_pk);
34630
+ }
34631
+ const parts = {
34632
+ client: identity.client,
34633
+ satPk: identity.publicSpkiB64,
34634
+ hubPk: offer.hub_pk,
34635
+ devicePk: offer.device_pk,
34636
+ cnonce,
34637
+ snonce: offer.snonce,
34638
+ origin
34639
+ };
34640
+ send({ v: CHANNEL_VERSION, t: "prove", sig: signTranscript(identity.privatePkcs8B64, seedRequestTranscript(parts)) });
34641
+ const second = await rd.next();
34642
+ if (second === CLOSED) return failed("hub_not_running");
34643
+ if (second === BAD) return failed("protocol");
34644
+ const refusedSecond = parseRefuse(second);
34645
+ if (refusedSecond) return failed(refusedSecond.reason);
34646
+ const accept = parseAcceptSeed(second);
34647
+ if (!accept) return failed("protocol");
34648
+ if (!verifyTranscript(offer.hub_pk, seedAcceptTranscript(parts), accept.sig)) return failed("hub_not_from_hub");
34649
+ const issued = await deps.issue(offer.device_pk);
34650
+ if (!issued.ok) return failed(issued.reason);
34651
+ send({
34652
+ v: CHANNEL_VERSION,
34653
+ t: "seed",
34654
+ code: issued.code,
34655
+ sig: signTranscript(identity.privatePkcs8B64, seedTranscript({ ...parts, code: issued.code }))
34656
+ });
34657
+ const third = await rd.next();
34658
+ if (third === CLOSED) return failed("hub_not_running");
34659
+ if (third === BAD) return failed("protocol");
34660
+ const refusedThird = parseRefuse(third);
34661
+ if (refusedThird) return failed(refusedThird.reason);
34662
+ const seeded = parseSeeded(third);
34663
+ return seeded ? { ok: true, result: seeded.result, hubPublicKey: offer.hub_pk } : failed("protocol");
34664
+ })().finally(() => {
34665
+ clearTimeout(timer);
34666
+ sock.destroy();
34667
+ });
34668
+ }
34669
+ function hubCodeIssuer(p) {
34670
+ return async (devicePk) => {
34671
+ const bearer = p.bearer();
34672
+ const deviceId = p.deviceId();
34673
+ if (!bearer || !deviceId) return { ok: false, reason: "issue_refused" };
34674
+ const res = await p.post(
34675
+ "/auth/handoff/issue",
34676
+ { purpose: "enrolment", device_id: deviceId, client: { id: "hub", name: p.hubName, platform: "desktop", public_key: devicePk } },
34677
+ bearer
34678
+ );
34679
+ if (!res.ok) {
34680
+ const err = res.body?.error;
34681
+ return { ok: false, reason: res.status === 403 && err === "step_up_required" ? "step_up_required" : "issue_refused" };
34682
+ }
34683
+ const code = res.data?.code;
34684
+ return typeof code === "string" && CODE_RE2.test(code) ? { ok: true, code } : { ok: false, reason: "issue_refused" };
34685
+ };
34686
+ }
34687
+ var HUB_BUNDLE_ID = "com.kutrion.desktop";
34688
+ var LAUNCH_WAIT_MS = 1e4;
34689
+ var LAUNCH_POLL_MS = 250;
34690
+ var WIN_UNINSTALL = "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
34691
+ function installLocationFromRegistry(regOutput) {
34692
+ for (const block2 of regOutput.split(/\r?\n\r?\n/)) {
34693
+ const name = /^\s*DisplayName\s+REG_SZ\s+(.*?)\s*$/m.exec(block2)?.[1];
34694
+ const dir = /^\s*InstallLocation\s+REG_SZ\s+(.*?)\s*$/m.exec(block2)?.[1];
34695
+ if (name === "Kutrion" && dir) return dir;
34696
+ }
34697
+ return null;
34698
+ }
34699
+ function underInstallRoot(dir, roots) {
34700
+ if (!import_node_path3.win32.isAbsolute(dir)) return false;
34701
+ const norm = (p) => import_node_path3.win32.resolve(p).toLowerCase().replace(/[\\/]+$/, "");
34702
+ const d = norm(dir);
34703
+ return roots.some((r) => r && import_node_path3.win32.isAbsolute(r) && d.startsWith(norm(r) + "\\"));
34704
+ }
34705
+ function hubLauncher(env = {}) {
34706
+ const platform3 = env.platform ?? process.platform;
34707
+ const home = env.home ?? (0, import_node_os2.homedir)();
34708
+ const exists = env.exists ?? import_node_fs3.existsSync;
34709
+ const exec2 = env.exec ?? ((file, args) => new Promise((resolve2, reject) => {
34710
+ (0, import_node_child_process2.execFile)(file, args, { timeout: 5e3, windowsHide: true, maxBuffer: 4 * 1024 * 1024 }, (e, out) => e ? reject(e) : resolve2(out));
34711
+ }));
34712
+ const startDetached2 = env.startDetached ?? ((file, args) => {
34713
+ try {
34714
+ const child = (0, import_node_child_process2.spawn)(file, args, { detached: true, stdio: "ignore", windowsHide: true });
34715
+ child.on("error", () => void 0);
34716
+ child.unref();
34717
+ return true;
34718
+ } catch {
34719
+ return false;
34720
+ }
34721
+ });
34722
+ if (platform3 === "darwin") {
34723
+ const bundles = ["/Applications/Kutrion.app", (0, import_node_path3.join)(home, "Applications", "Kutrion.app")];
34724
+ return {
34725
+ installed: () => bundles.some((b) => exists(b)),
34726
+ // -g keeps focus where it is; the Hub is started by bundle id so a renamed bundle still resolves.
34727
+ launch: () => exec2("open", ["-g", "-b", HUB_BUNDLE_ID, "--args", "--background"]).then(() => true, () => false),
34728
+ foreground: () => exec2("open", ["-b", HUB_BUNDLE_ID]).then(() => true, () => false)
34729
+ };
34730
+ }
34731
+ if (platform3 === "win32") {
34732
+ const resolveExe = async () => {
34733
+ const fromRegistry = await exec2("reg", ["query", WIN_UNINSTALL, "/s"]).then(installLocationFromRegistry, () => null);
34734
+ const localAppData = env.localAppData ?? process.env.LOCALAPPDATA;
34735
+ const programFiles = env.programFiles ?? process.env.ProgramFiles;
34736
+ const roots = [localAppData ? import_node_path3.win32.join(localAppData, "Programs") : "", programFiles ?? ""];
34737
+ const dirs = [
34738
+ ...fromRegistry && underInstallRoot(fromRegistry, roots) ? [fromRegistry] : [],
34739
+ ...localAppData ? [import_node_path3.win32.join(localAppData, "Programs", "Kutrion")] : []
34740
+ ];
34741
+ for (const d of dirs) {
34742
+ const exe = import_node_path3.win32.join(d, "Kutrion.exe");
34743
+ if (exists(exe)) return exe;
34744
+ }
34745
+ return null;
34746
+ };
34747
+ return {
34748
+ installed: async () => await resolveExe() !== null,
34749
+ launch: async () => {
34750
+ const exe = await resolveExe();
34751
+ return exe !== null && startDetached2(exe, ["--background"]);
34752
+ },
34753
+ // The running Hub's single-instance handler raises its window.
34754
+ foreground: async () => {
34755
+ const exe = await resolveExe();
34756
+ return exe !== null && startDetached2(exe, []);
34757
+ }
34758
+ };
34759
+ }
34760
+ const bins = ["/opt/Kutrion/kutrion", "/usr/bin/kutrion"];
34761
+ const found = () => bins.find((b) => exists(b)) ?? null;
34762
+ return {
34763
+ installed: () => found() !== null,
34764
+ launch: () => {
34765
+ const b = found();
34766
+ return b !== null && startDetached2(b, ["--background"]);
34767
+ },
34768
+ foreground: () => {
34769
+ const b = found();
34770
+ return b !== null && startDetached2(b, []);
34771
+ }
34772
+ };
34773
+ }
34774
+ async function seedHubAfterSignIn(deps) {
34775
+ if ((deps.env ?? process.env).KT_NO_HUB === "1") return { kind: "stopped", reason: "disabled" };
34776
+ const reachable = () => resolveEndpoint(deps.location, { platform: deps.platform }) !== null;
34777
+ if (!reachable()) {
34778
+ const launcher2 = deps.launcher;
34779
+ if (!launcher2 || !await launcher2.installed()) return { kind: "retry" };
34780
+ if (!await launcher2.launch()) return { kind: "retry" };
34781
+ const sleep = deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
34782
+ const now = deps.now ?? Date.now;
34783
+ const until = now() + LAUNCH_WAIT_MS;
34784
+ while (!reachable() && now() < until) await sleep(LAUNCH_POLL_MS);
34785
+ if (!reachable()) return { kind: "retry" };
34786
+ }
34787
+ const launcher = deps.launcher;
34788
+ const confirmHub = launcher?.foreground ? async (fp) => {
34789
+ await Promise.resolve(launcher.foreground?.()).catch(() => void 0);
34790
+ return deps.confirmHub(fp);
34791
+ } : deps.confirmHub;
34792
+ const out = await seedOnce({ ...deps, confirmHub });
34793
+ if (out.ok) return { kind: "done", result: out.result };
34794
+ if (out.reason === "hub_other_account") return { kind: "other_account" };
34795
+ if (out.reason === "hub_not_running") return { kind: "retry" };
34796
+ return { kind: "stopped", reason: out.reason };
34797
+ }
34798
+
34799
+ // src/hub-seed-login.ts
34800
+ var SEED_COPY = {
34801
+ deviceLimit: "This account has reached its device limit, so this CLI was not registered as a device and the Kutrion app was not signed in. Remove a device you no longer use in the web portal, then run kt login again.",
34802
+ stepUp: "This CLI was not registered as a device because the sign-in needs to be verified again. Run kt login again and enter your second factor.",
34803
+ failed: "This CLI could not register itself as a device, so the Kutrion app was not signed in. You are still logged in.",
34804
+ failedNotRemoved: (name) => `This CLI could not register itself as a device, and the device it created could not be removed. You are still logged in. Remove "${name}" from Active devices in the web portal.`,
34805
+ joined: "The Kutrion app on this computer is now signed in to this account.",
34806
+ otherAccount: "The Kutrion app on this computer is signed in to a different account. Sign it out there first. This CLI keeps its own sign-in.",
34807
+ declined: "Not shared: the Kutrion app was not signed in.",
34808
+ stopped: (reason) => `The Kutrion app was not signed in (${printable(reason)}).`,
34809
+ firstContact: (fp) => [
34810
+ `The Kutrion app on this computer answered. Its code is ${fp}.`,
34811
+ "If you did not just open the Kutrion app yourself, answer no.",
34812
+ "Sharing gives the Kutrion app its own sign-in to your account. Your password is not sent, and you can sign it out again from Active devices."
34813
+ ],
34814
+ ask: "\x1B[0mSign the Kutrion app in too? Type yes to share, or anything else to skip: "
34815
+ };
34816
+ function seedSkipReason(env, platform3, tty) {
34817
+ if (env.KT_NO_HUB === "1") return "disabled";
34818
+ if (!tty) return "no_tty";
34819
+ if (env.CI) return "ci";
34820
+ if (env.SSH_CONNECTION || env.SSH_TTY || env.SSH_CLIENT) return "remote";
34821
+ if (platform3 !== "darwin" && platform3 !== "win32" && !env.DISPLAY && !env.WAYLAND_DISPLAY) return "no_display";
34822
+ return null;
34823
+ }
34824
+ function fetchPost(base, fetchImpl) {
34825
+ return async (path, body, bearer) => {
34826
+ try {
34827
+ const res = await fetchImpl(base + path, {
34828
+ method: "POST",
34829
+ headers: { Authorization: `Bearer ${bearer}`, Accept: "application/json", "Content-Type": "application/json" },
34830
+ body: JSON.stringify(body),
34831
+ signal: AbortSignal.timeout(15e3)
34832
+ });
34833
+ const parsed = await res.json().catch(() => null);
34834
+ return res.ok ? { ok: true, data: parsed } : { ok: false, status: res.status, body: parsed };
34835
+ } catch {
34836
+ return { ok: false, status: null, body: null };
34837
+ }
34838
+ };
34839
+ }
34840
+ function withForeground(l, tty) {
34841
+ if (tty) return l;
34842
+ const { foreground: _drop, ...rest } = l;
34843
+ return rest;
34844
+ }
34845
+ var host = () => (0, import_os3.hostname)().trim().replace(/\.local$/, "") || "this computer";
34846
+ var ownDeviceName = () => `Kutrion CLI on ${host()}`.slice(0, 255);
34847
+ async function registerOwnDevice(deps) {
34848
+ const tty = deps.tty ?? Boolean(process.stdin.isTTY && process.stderr.isTTY);
34849
+ if (seedSkipReason(deps.env ?? process.env, deps.platform ?? process.platform, tty)) return { kind: "skipped", note: null };
34850
+ if (!deps.bearer || !deps.keychainAvailable()) return { kind: "skipped", note: null };
34851
+ const { store, failedWrite } = cliHubStores(deps.base, deps.kc, deps.keychainAvailable);
34852
+ const key = resolveDeviceKey(store);
34853
+ const res = await deps.post(
34854
+ "/auth/devices/register",
34855
+ { name: ownDeviceName(), platform: "desktop", client: "cli", public_key: key.publicSpkiB64 },
34856
+ deps.bearer
34857
+ );
34858
+ if (!res.ok) {
34859
+ const err = res.body?.error;
34860
+ if (res.status === 409 && err === "device_limit") return { kind: "skipped", note: SEED_COPY.deviceLimit };
34861
+ if (res.status === 403 && err === "step_up_required") return { kind: "skipped", note: SEED_COPY.stepUp };
34862
+ return { kind: "skipped", note: SEED_COPY.failed };
34863
+ }
34864
+ const reg = res.data;
34865
+ const id = reg?.device?.id;
34866
+ if (typeof id !== "string" || typeof reg?.access_token !== "string" || typeof reg.refresh_token !== "string") {
34867
+ return { kind: "skipped", note: SEED_COPY.failed };
34868
+ }
34869
+ store.setRefresh(reg.refresh_token);
34870
+ store.setDevice(id, key.privatePkcs8B64);
34871
+ if (!failedWrite()) store.setAccess(reg.access_token);
34872
+ if (failedWrite()) {
34873
+ const removed = await deps.call("DELETE", `/auth/devices/${encodeURIComponent(id)}`, void 0, reg.access_token).then((r) => r.ok, () => false);
34874
+ dropBorrowed(deps.base, deps.kc);
34875
+ try {
34876
+ deps.kc.set(deps.base, deps.bearer);
34877
+ } catch {
34878
+ }
34879
+ return { kind: "skipped", note: removed ? SEED_COPY.failed : SEED_COPY.failedNotRemoved(ownDeviceName()) };
34880
+ }
34881
+ return { kind: "registered", deviceId: id };
34882
+ }
34883
+ async function seedHubFromLogin(deps) {
34884
+ const env = deps.env ?? process.env;
34885
+ const platform3 = deps.platform ?? process.platform;
34886
+ const tty = deps.tty ?? Boolean(process.stdin.isTTY && process.stderr.isTTY);
34887
+ const skip = seedSkipReason(env, platform3, tty);
34888
+ if (skip) return { kind: "skipped", reason: skip };
34889
+ if (!deps.location || !deps.keychainAvailable()) return { kind: "skipped", reason: "no_channel" };
34890
+ try {
34891
+ const { store, pin } = cliHubStores(deps.base, deps.kc, deps.keychainAvailable);
34892
+ const deviceId = store.deviceId();
34893
+ const keyB64 = store.devicePrivateKeyPkcs8();
34894
+ const bearer = () => {
34895
+ try {
34896
+ return deps.kc.get(deps.base) ?? null;
34897
+ } catch {
34898
+ return null;
34899
+ }
34900
+ };
34901
+ const token = bearer();
34902
+ if (!deviceId || !keyB64 || !token) return { kind: "skipped", reason: "no_device" };
34903
+ const mode = await deps.call("GET", "/billing/me", void 0, token).catch(() => null);
34904
+ if (!mode?.ok || mode.data?.vault_mode !== "audited") return { kind: "skipped", reason: "private_vault" };
34905
+ const key = resolveDeviceKey(store);
34906
+ const issuer = hubCodeIssuer({ post: deps.post, bearer, deviceId: () => store.deviceId(), hubName: `Kutrion on ${host()}`.slice(0, 255) });
34907
+ const status = await seedHubAfterSignIn({
34908
+ location: deps.location,
34909
+ identity: { client: "cli", ...key },
34910
+ pin,
34911
+ apiBase: deps.base,
34912
+ confirmHub: async (fingerprint) => {
34913
+ for (const line of SEED_COPY.firstContact(fingerprint)) deps.out(line);
34914
+ return (await deps.ask(SEED_COPY.ask).catch(() => "")).trim().toLowerCase() === "yes";
34915
+ },
34916
+ issue: async (devicePk) => {
34917
+ await deps.touch().catch(() => void 0);
34918
+ return issuer(devicePk);
34919
+ },
34920
+ launcher: withForeground(deps.launcher ?? hubLauncher({ platform: platform3, localAppData: env.LOCALAPPDATA, programFiles: env.ProgramFiles }), tty),
34921
+ env,
34922
+ platform: platform3
34923
+ });
34924
+ if (status.kind === "done" && status.result === "joined") deps.out(SEED_COPY.joined);
34925
+ else if (status.kind === "other_account") deps.out(SEED_COPY.otherAccount);
34926
+ else if (status.kind === "stopped" && status.reason === "hub_unconfirmed") deps.out(SEED_COPY.declined);
34927
+ else if (status.kind === "stopped" && status.reason !== "disabled") deps.out(SEED_COPY.stopped(status.reason));
34928
+ return status;
34929
+ } catch {
34930
+ return { kind: "skipped", reason: "error" };
34931
+ }
34932
+ }
34933
+
34934
+ // src/hub/ensure-hub.ts
34935
+ init_define_KT_HUB_FILES();
34936
+ var import_node_child_process3 = require("node:child_process");
34937
+ var import_node_fs4 = require("node:fs");
34938
+ var import_node_os3 = require("node:os");
34939
+ var import_node_path4 = require("node:path");
34940
+ var HUB_SCRIPT_FILES = ["ensure-hub.sh", "ensure-hub.ps1", "hub.conf"];
34941
+ function hubFirstRunSkip(c) {
34942
+ if (c.env.KT_NO_HUB === "1") return "KT_NO_HUB=1";
34943
+ if (!c.files) return "this build carries no installer script";
34944
+ if (c.platform !== "win32" && c.platform !== "darwin" && c.platform !== "linux") return "unsupported platform";
34945
+ if (c.platform === "linux" && !c.env.DISPLAY && !c.env.WAYLAND_DISPLAY) return "no display";
34946
+ if (c.surface === "cli") {
34947
+ if (!c.tty) return "no terminal";
34948
+ if (c.env.CI) return "CI";
34949
+ if (c.env.SSH_CONNECTION || c.env.SSH_TTY) return "remote session";
34950
+ }
34951
+ return null;
34952
+ }
34953
+ function stageFiles(files) {
34954
+ const dir = (0, import_node_fs4.mkdtempSync)((0, import_node_path4.join)((0, import_node_os3.tmpdir)(), "kt-hub-run-"));
34955
+ for (const f of HUB_SCRIPT_FILES) (0, import_node_fs4.writeFileSync)((0, import_node_path4.join)(dir, f), files[f], { mode: 384 });
34956
+ return dir;
34957
+ }
34958
+ function startDetached(command, args) {
34959
+ const child = (0, import_node_child_process3.spawn)(command, args, { detached: true, stdio: "ignore", windowsHide: true });
34960
+ child.on("error", () => void 0);
34961
+ child.unref();
34962
+ }
34963
+ function startEnsureHub(c, io = {}) {
34964
+ const reason = hubFirstRunSkip(c);
34965
+ if (reason) return { started: false, reason };
34966
+ try {
34967
+ const dir = (io.stage ?? stageFiles)(c.files);
34968
+ const start = io.start ?? startDetached;
34969
+ if (c.platform === "win32") {
34970
+ start("powershell.exe", ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-WindowStyle", "Hidden", "-File", (0, import_node_path4.join)(dir, "ensure-hub.ps1"), "-FirstRun"]);
34971
+ } else {
34972
+ start("sh", [(0, import_node_path4.join)(dir, "ensure-hub.sh"), "--first-run"]);
34973
+ }
34974
+ return { started: true };
34975
+ } catch {
34976
+ return { started: false, reason: "could not start the installer script" };
34977
+ }
34978
+ }
34979
+
34980
+ // src/shell.ts
34981
+ init_define_KT_HUB_FILES();
34982
+
33722
34983
  // src/proxy.ts
34984
+ init_define_KT_HUB_FILES();
33723
34985
  var import_http = require("http");
33724
34986
  var import_https = require("https");
33725
34987
  var import_tls = require("tls");
@@ -33742,7 +35004,7 @@ function proxyConfig(env = process.env) {
33742
35004
  function redactProxyUrls(text2) {
33743
35005
  return text2.replace(/([a-z][a-z0-9+.-]*:\/\/)[^\s/@]*@/gi, "$1***@");
33744
35006
  }
33745
- function bypassesProxy(host, port, no) {
35007
+ function bypassesProxy(host2, port, no) {
33746
35008
  if (!no) return false;
33747
35009
  for (const raw of no.split(/[\s,]+/)) {
33748
35010
  let entry = raw.trim().toLowerCase();
@@ -33754,7 +35016,7 @@ function bypassesProxy(host, port, no) {
33754
35016
  entry = colon[1];
33755
35017
  }
33756
35018
  entry = entry.replace(/^\*?\./, "");
33757
- if (host === entry || host.endsWith(`.${entry}`)) return true;
35019
+ if (host2 === entry || host2.endsWith(`.${entry}`)) return true;
33758
35020
  }
33759
35021
  return false;
33760
35022
  }
@@ -33781,14 +35043,14 @@ function redactError(e) {
33781
35043
  if (e.cause instanceof Error) e.cause.message = redactProxyUrls(e.cause.message);
33782
35044
  return e;
33783
35045
  }
33784
- function tunnel(proxy, host, port, tls, cb) {
35046
+ function tunnel(proxy, host2, port, tls, cb) {
33785
35047
  const auth = proxy.username ? `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}` : void 0;
33786
35048
  const req = (0, import_http.request)({
33787
35049
  host: proxy.hostname,
33788
35050
  port: proxy.port || (proxy.protocol === "https:" ? 443 : 80),
33789
35051
  method: "CONNECT",
33790
- path: `${host}:${port}`,
33791
- headers: { Host: `${host}:${port}`, ...auth ? { "Proxy-Authorization": `Basic ${Buffer.from(auth).toString("base64")}` } : {} }
35052
+ path: `${host2}:${port}`,
35053
+ headers: { Host: `${host2}:${port}`, ...auth ? { "Proxy-Authorization": `Basic ${Buffer.from(auth).toString("base64")}` } : {} }
33792
35054
  });
33793
35055
  req.once("connect", (res, socket) => {
33794
35056
  if (res.statusCode !== 200) {
@@ -33796,7 +35058,7 @@ function tunnel(proxy, host, port, tls, cb) {
33796
35058
  cb(new Error(`proxy refused the tunnel (HTTP ${res.statusCode})`));
33797
35059
  return;
33798
35060
  }
33799
- cb(null, tls ? (0, import_tls.connect)({ socket, servername: host }) : socket);
35061
+ cb(null, tls ? (0, import_tls.connect)({ socket, servername: host2 }) : socket);
33800
35062
  });
33801
35063
  req.once("error", (e) => cb(new Error(redactProxyUrls(`proxy connection failed: ${e.message}`))));
33802
35064
  req.end();
@@ -33821,7 +35083,11 @@ function wsAgentFor(url, env = process.env) {
33821
35083
  return new TunnelAgent();
33822
35084
  }
33823
35085
 
35086
+ // src/refusal.ts
35087
+ init_define_KT_HUB_FILES();
35088
+
33824
35089
  // src/destinations.ts
35090
+ init_define_KT_HUB_FILES();
33825
35091
  var GROUPS = [
33826
35092
  { key: "SSH", label: "SSH and SFTP", protocols: ["SSH", "SFTP"], defaultPort: 22 },
33827
35093
  { key: "FTP", label: "FTP", protocols: ["FTP"], defaultPort: 21 },
@@ -33894,11 +35160,11 @@ function destinationListLines(name, data, indent = " ") {
33894
35160
  }
33895
35161
  return lines;
33896
35162
  }
33897
- function firstBindingWarning(name, group, host, port) {
35163
+ function firstBindingWarning(name, group, host2, port) {
33898
35164
  return [
33899
35165
  `This is the first destination on "${name}".`,
33900
35166
  "",
33901
- `Right now "${name}" is not restricted \u2014 it can be presented to any host. Authorizing ${host}:${port} restricts`,
35167
+ `Right now "${name}" is not restricted \u2014 it can be presented to any host. Authorizing ${host2}:${port} restricts`,
33902
35168
  "it everywhere: it will then be refused on SSH, SFTP, FTP, FTPS, WebDAV and RDP at every destination",
33903
35169
  `except the ones you authorize. Anything using "${name}" elsewhere stops working.`,
33904
35170
  ...group.protocols.length > 1 ? ["", "Authorizing SSH also authorizes SFTP. They are one destination."] : []
@@ -33942,6 +35208,7 @@ var DEST_WRITE_REFUSALS = {
33942
35208
  var DESTINATION_REFUSAL_CLI_ROUTE = "From here: `kt cred dest ls <vaultId> <credId>` to see the list, `kt cred dest add` to authorize a destination.";
33943
35209
 
33944
35210
  // src/host-key.ts
35211
+ init_define_KT_HUB_FILES();
33945
35212
  var HOST_KEY_CONFIRM_COPY2 = {
33946
35213
  ...HOST_KEY_CONFIRM_COPY,
33947
35214
  confirm: "Fingerprint verified, trust it with:",
@@ -34502,7 +35769,7 @@ function jumpRefusalReport(frame, code, head, ctx, indent) {
34502
35769
  function wsRefusalLines(frame, indent = " ", jumpCtx = {}) {
34503
35770
  const code = str4(frame.code);
34504
35771
  const d = frame.detail ?? {};
34505
- const host = str4(d.host);
35772
+ const host2 = str4(d.host);
34506
35773
  const port = typeof d.port === "number" ? d.port : null;
34507
35774
  const allowed = Array.isArray(d.allowed_destinations) ? d.allowed_destinations.filter((x) => typeof x === "string" && x.trim() !== "") : [];
34508
35775
  if (code === "host_key_unconfirmed") {
@@ -34524,7 +35791,7 @@ function wsRefusalLines(frame, indent = " ", jumpCtx = {}) {
34524
35791
  if (jump) return jump;
34525
35792
  const lines = [code && !ourFault ? `${head} (${code})` : head, ""];
34526
35793
  lines.push(str4(frame.error) ?? "The server sent no explanation with this refusal.");
34527
- if (host) lines.push("", `${indent}endpoint: ${port === null ? host : `${host}:${port}`}`);
35794
+ if (host2) lines.push("", `${indent}endpoint: ${port === null ? host2 : `${host2}:${port}`}`);
34528
35795
  if (allowed.length) {
34529
35796
  lines.push("", destinationRefusalAllowedLabel(dest));
34530
35797
  lines.push(...allowed.map((a) => `${indent}${a}`));
@@ -34648,6 +35915,7 @@ shell error: ${e.message}\r
34648
35915
  }
34649
35916
 
34650
35917
  // src/snippets.ts
35918
+ init_define_KT_HUB_FILES();
34651
35919
  function pickSnippet(all, ref, vault) {
34652
35920
  const inVault = vault ? all.filter((s) => s.vault_id === vault || s.vault_name === vault) : all;
34653
35921
  const byId = inVault.find((s) => s.id === ref);
@@ -34674,15 +35942,18 @@ function snippetPreview(s) {
34674
35942
  }
34675
35943
 
34676
35944
  // src/mcp.ts
35945
+ init_define_KT_HUB_FILES();
34677
35946
  var import_readline = require("readline");
34678
35947
 
34679
35948
  // src/mcp-install.ts
35949
+ init_define_KT_HUB_FILES();
34680
35950
  var import_fs3 = require("fs");
34681
- var import_os3 = require("os");
35951
+ var import_os4 = require("os");
34682
35952
  var import_path4 = require("path");
34683
35953
  var import_child_process3 = require("child_process");
34684
35954
 
34685
35955
  // src/http.ts
35956
+ init_define_KT_HUB_FILES();
34686
35957
  async function jsonBody(res) {
34687
35958
  const text2 = await res.text();
34688
35959
  if (!text2) return null;
@@ -34708,7 +35979,7 @@ function refuseBodyRedirects(inner = fetch) {
34708
35979
  }
34709
35980
 
34710
35981
  // src/mcp-install.ts
34711
- var appData = () => process.env.APPDATA ?? (0, import_path4.join)((0, import_os3.homedir)(), "AppData", "Roaming");
35982
+ var appData = () => process.env.APPDATA ?? (0, import_path4.join)((0, import_os4.homedir)(), "AppData", "Roaming");
34712
35983
  var CLIENTS = {
34713
35984
  "claude-code": {
34714
35985
  id: "claude-code",
@@ -34726,8 +35997,8 @@ var CLIENTS = {
34726
35997
  key: "mcpServers",
34727
35998
  scope: "user",
34728
35999
  path: () => {
34729
- if ((0, import_os3.platform)() === "darwin") return (0, import_path4.join)((0, import_os3.homedir)(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
34730
- if ((0, import_os3.platform)() === "win32") return (0, import_path4.join)(appData(), "Claude", "claude_desktop_config.json");
36000
+ if ((0, import_os4.platform)() === "darwin") return (0, import_path4.join)((0, import_os4.homedir)(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
36001
+ if ((0, import_os4.platform)() === "win32") return (0, import_path4.join)(appData(), "Claude", "claude_desktop_config.json");
34731
36002
  return null;
34732
36003
  },
34733
36004
  next: "quit Claude Desktop completely and reopen it"
@@ -34737,7 +36008,7 @@ var CLIENTS = {
34737
36008
  label: "Cursor",
34738
36009
  key: "mcpServers",
34739
36010
  scope: "user",
34740
- path: () => (0, import_path4.join)((0, import_os3.homedir)(), ".cursor", "mcp.json"),
36011
+ path: () => (0, import_path4.join)((0, import_os4.homedir)(), ".cursor", "mcp.json"),
34741
36012
  next: "reload Cursor"
34742
36013
  },
34743
36014
  copilot: {
@@ -34788,7 +36059,7 @@ async function verifyLaunch(entry, timeoutMs = 15e3) {
34788
36059
  const res = (0, import_child_process3.spawnSync)(entry.command, entry.args, {
34789
36060
  input: probe + "\n",
34790
36061
  env: { ...inherited, ...entry.env ?? {} },
34791
- cwd: (0, import_os3.tmpdir)(),
36062
+ cwd: (0, import_os4.tmpdir)(),
34792
36063
  encoding: "utf8",
34793
36064
  timeout: timeoutMs
34794
36065
  });
@@ -34875,7 +36146,7 @@ async function installClient(o) {
34875
36146
  const target = CLIENTS[o.client];
34876
36147
  const configPath = target.path(o.dir);
34877
36148
  if (!configPath) {
34878
- throw new Error(`${target.label} is not available on this platform (${(0, import_os3.platform)()}).`);
36149
+ throw new Error(`${target.label} is not available on this platform (${(0, import_os4.platform)()}).`);
34879
36150
  }
34880
36151
  const entry = resolveLaunch(o.base, o.client);
34881
36152
  const mint = () => api2(o.base, "/agents", o.userToken, {
@@ -35097,6 +36368,7 @@ async function runMcpBridge(opts2) {
35097
36368
  }
35098
36369
 
35099
36370
  // src/ci.ts
36371
+ init_define_KT_HUB_FILES();
35100
36372
  var gitlab = {
35101
36373
  name: "gitlab",
35102
36374
  async read(env) {
@@ -35150,6 +36422,7 @@ async function ciLogin(o) {
35150
36422
  }
35151
36423
 
35152
36424
  // src/jobfile.ts
36425
+ init_define_KT_HUB_FILES();
35153
36426
  var import_yaml = __toESM(require_dist());
35154
36427
  var JobFileError = class extends Error {
35155
36428
  };
@@ -35336,6 +36609,7 @@ function checkExpectations(want, got) {
35336
36609
  }
35337
36610
 
35338
36611
  // src/runner.ts
36612
+ init_define_KT_HUB_FILES();
35339
36613
  var StepFailure = class extends Error {
35340
36614
  };
35341
36615
  var Resolver = class {
@@ -35446,6 +36720,7 @@ async function runJob(job, client, io, opts2 = {}) {
35446
36720
  }
35447
36721
 
35448
36722
  // src/mcp-runner.ts
36723
+ init_define_KT_HUB_FILES();
35449
36724
  var PROTOCOL = "2026-07-28";
35450
36725
  var META_VERSION = "io.modelcontextprotocol/protocolVersion";
35451
36726
  var META_CLIENT_INFO = "io.modelcontextprotocol/clientInfo";
@@ -35580,6 +36855,7 @@ var McpRunnerClient = class {
35580
36855
  };
35581
36856
 
35582
36857
  // src/reporters.ts
36858
+ init_define_KT_HUB_FILES();
35583
36859
  var seconds = (ms) => String(ms / 1e3);
35584
36860
  function counts(run2) {
35585
36861
  const by = (s) => run2.steps.filter((x) => x.status === s).length;
@@ -35646,6 +36922,7 @@ function report(name, run2) {
35646
36922
  }
35647
36923
 
35648
36924
  // src/format.ts
36925
+ init_define_KT_HUB_FILES();
35649
36926
  function table(rows, columns) {
35650
36927
  if (!rows.length) return "(none)";
35651
36928
  const cols = columns ?? Object.keys(rows[0]);
@@ -35755,6 +37032,7 @@ function recoveryText(rec, s) {
35755
37032
  }
35756
37033
 
35757
37034
  // src/private-vault.ts
37035
+ init_define_KT_HUB_FILES();
35758
37036
  var PASSPHRASE_STDIN_FLAG = "vault-passphrase-stdin";
35759
37037
  var PrivateVaultError = class extends Error {
35760
37038
  };
@@ -35803,6 +37081,7 @@ async function openSealedItem(client, key, vaultId, credId) {
35803
37081
  }
35804
37082
 
35805
37083
  // src/enroll.ts
37084
+ init_define_KT_HUB_FILES();
35806
37085
  var ENROLL_PURPOSES = ["shell", "exec", "forward", "sftp", "jump"];
35807
37086
  var ENROLL_USAGE = `usage: kt enroll <connId...> --purposes shell,exec,... [--confirm <connId|host>=<fingerprint>]...
35808
37087
  [--known-hosts <file>] [--key <file>] [--password-stdin] [--fallback [--vault <id>]] [--timeout <sec>] [--json]
@@ -36010,6 +37289,7 @@ function parseHostsUnconfirmed(body) {
36010
37289
  }
36011
37290
 
36012
37291
  // src/transfer.ts
37292
+ init_define_KT_HUB_FILES();
36013
37293
  var import_fs4 = require("fs");
36014
37294
  var import_path5 = require("path");
36015
37295
  var import_promises = require("stream/promises");
@@ -36298,7 +37578,7 @@ function parseDailyAt(v) {
36298
37578
  }
36299
37579
 
36300
37580
  // src/index.ts
36301
- var CONFIG = (0, import_path6.join)((0, import_os4.homedir)(), ".config", "kutrion", "config.json");
37581
+ var CONFIG = (0, import_path6.join)((0, import_os5.homedir)(), ".config", "kutrion", "config.json");
36302
37582
  function storedBase() {
36303
37583
  let file;
36304
37584
  try {
@@ -36375,8 +37655,8 @@ function storeFailure(e, session) {
36375
37655
  return lines;
36376
37656
  }
36377
37657
  var IPV4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
36378
- function isLoopback(hostname2) {
36379
- const h = hostname2.replace(/^\[|\]$/g, "").toLowerCase();
37658
+ function isLoopback(hostname3) {
37659
+ const h = hostname3.replace(/^\[|\]$/g, "").toLowerCase();
36380
37660
  if (h === "localhost" || h.endsWith(".localhost") || h === "::1") return true;
36381
37661
  const quad = IPV4.exec(h);
36382
37662
  return !!quad && quad[1] === "127" && quad.slice(1).every((o) => Number(o) <= 255);
@@ -36537,14 +37817,14 @@ async function credDest(client, args, flags, asJson, die) {
36537
37817
  if (action === "add") {
36538
37818
  const group = groupFor(String(flags.protocol ?? "SSH"));
36539
37819
  if (!group) return die(`bad --protocol; one of: ${PROTOCOL_CHOICES}`);
36540
- const host = String(flags.host ?? "").trim();
36541
- if (!host) return die(DEST_USAGE);
37820
+ const host2 = String(flags.host ?? "").trim();
37821
+ if (!host2) return die(DEST_USAGE);
36542
37822
  const portGiven = flags.port !== void 0 && flags.port !== true;
36543
37823
  const port = portGiven ? Number(flags.port) : group.defaultPort;
36544
37824
  if (portGiven && (!Number.isInteger(port) || port < 1 || port > 65535)) return die("--port must be a whole number from 1 to 65535");
36545
37825
  const before = await list();
36546
37826
  if (!before.claimed) {
36547
- for (const line of firstBindingWarning(name, group, host, port)) console.error(line);
37827
+ for (const line of firstBindingWarning(name, group, host2, port)) console.error(line);
36548
37828
  console.error("");
36549
37829
  if (!await confirmTyped("Type yes to restrict this credential and authorize this destination: ")) {
36550
37830
  return die("nothing was changed");
@@ -36555,7 +37835,7 @@ async function credDest(client, args, flags, asJson, die) {
36555
37835
  try {
36556
37836
  added = await client.addCredentialDestination(vaultId, cid, {
36557
37837
  protocol: group.key,
36558
- host,
37838
+ host: host2,
36559
37839
  ...portGiven ? { port } : {},
36560
37840
  secret
36561
37841
  });
@@ -36619,7 +37899,7 @@ var ROLES = ["OWNER", "ADMIN", "EDITOR", "VIEWER"];
36619
37899
  var TOKEN_SCOPES = ["scim", "events"];
36620
37900
  var ORG_ROLES = ["owner", "admin", "member"];
36621
37901
  var ROTATION_SERVICES = ["linux_password", "postgres_password", "mysql_password"];
36622
- var VERSION = true ? "1.2.6" : "dev";
37902
+ var VERSION = true ? "1.2.9" : "dev";
36623
37903
  var HELP = `kt \u2014 Kutrion CLI
36624
37904
  kt login [--email <e>] [--password-stdin] [--code <2fa>] prompts for the password, or reads it from stdin;
36625
37905
  at a terminal with no --email, first asks the Kutrion desktop app,
@@ -37131,6 +38411,9 @@ run \`kt --help\` for the flags each command takes`);
37131
38411
  };
37132
38412
  switch (cmd) {
37133
38413
  case "login": {
38414
+ if (typeof define_KT_HUB_FILES_default === "object") {
38415
+ startEnsureHub({ platform: process.platform, env: process.env, surface: "cli", tty: !!(process.stdin.isTTY && process.stdout.isTTY), files: define_KT_HUB_FILES_default });
38416
+ }
37134
38417
  if (flags.password !== void 0) refuseSecretFlag("password", "pipe it to --password-stdin, or leave it off to be prompted");
37135
38418
  const u = parseBase(cfg.base);
37136
38419
  if (!u) die(`error: not a valid server URL: ${cfg.base}`);
@@ -37161,7 +38444,7 @@ run \`kt --help\` for the flags each command takes`);
37161
38444
  open: openInBrowser,
37162
38445
  out: (l) => console.error(l),
37163
38446
  ask: (q) => promptLine(q),
37164
- deviceName: () => (0, import_os4.hostname)() || "Kutrion CLI",
38447
+ deviceName: () => (0, import_os5.hostname)() || "Kutrion CLI",
37165
38448
  allowLoopbackHttp: isLoopback(u.hostname)
37166
38449
  });
37167
38450
  if (r.kind === "store_failed") die(r.note);
@@ -37243,9 +38526,39 @@ run \`kt --help\` for the flags each command takes`);
37243
38526
  }
37244
38527
  const staleDevice = dropBorrowed(cfg.base, kc);
37245
38528
  if (staleDevice) await client.revokeDevice(staleDevice).catch(() => void 0);
38529
+ const post = fetchPost(cfg.base, refuseBodyRedirects());
38530
+ const registered = await registerOwnDevice({
38531
+ base: cfg.base,
38532
+ kc,
38533
+ keychainAvailable: osKeychainAvailable,
38534
+ post,
38535
+ call: hubCall,
38536
+ tty: !fromStdin && Boolean(process.stdin.isTTY && process.stderr.isTTY),
38537
+ bearer: (() => {
38538
+ try {
38539
+ return getToken(cfg.base) ?? null;
38540
+ } catch {
38541
+ return null;
38542
+ }
38543
+ })()
38544
+ }).catch(() => ({ kind: "skipped", note: null }));
37246
38545
  recordSignIn(accountRoot, signedIn);
37247
38546
  console.log(`logged in (token stored in ${backendName()})`);
37248
38547
  if (rememberBase(cfg.base)) console.log(`server saved: ${cfg.base} (later commands need no --base)`);
38548
+ if (registered.kind === "skipped" && registered.note) console.error(registered.note);
38549
+ if (registered.kind === "registered") {
38550
+ await seedHubFromLogin({
38551
+ base: cfg.base,
38552
+ location: accountRoot ? hubLocation(accountRoot) : null,
38553
+ kc,
38554
+ keychainAvailable: osKeychainAvailable,
38555
+ post,
38556
+ call: hubCall,
38557
+ touch: () => client.me(),
38558
+ out: (l) => console.error(l),
38559
+ ask: (q) => promptLine(q)
38560
+ });
38561
+ }
37249
38562
  break;
37250
38563
  }
37251
38564
  case "logout":
@@ -38247,15 +39560,15 @@ ${r.url}`);
38247
39560
  const sub = positionals[0], connId = positionals[1];
38248
39561
  if (sub === "add" || sub === "create") {
38249
39562
  const name = flags.name !== void 0 ? String(flags.name) : positionals[1];
38250
- const host = flags.host !== void 0 ? String(flags.host) : void 0;
39563
+ const host2 = flags.host !== void 0 ? String(flags.host) : void 0;
38251
39564
  const username = flags.username !== void 0 ? String(flags.username) : void 0;
38252
39565
  const credential_id = flags.cred !== void 0 ? String(flags.cred) : void 0;
38253
- if (!name || !host || !username || !credential_id) {
39566
+ if (!name || !host2 || !username || !credential_id) {
38254
39567
  die("usage: kt conn add --name <n> --host <h> --username <u> --cred <credId> [--port 22] [--agent-forward] [--jump <connId>]\n --cred is a credential id from `kt creds <vaultId>`\n --jump is a connection id from `kt conns` \u2014 this host is reached THROUGH it");
38255
39568
  }
38256
39569
  show((await client.createConnection({
38257
39570
  name,
38258
- host,
39571
+ host: host2,
38259
39572
  username,
38260
39573
  credential_id,
38261
39574
  port: flags.port !== void 0 ? Number(flags.port) : void 0,