@logixjs/sandbox 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/package.json +3 -1
- package/public/sandbox/chunks/chunk-2AUQRESB.js +1114 -0
- package/public/sandbox/chunks/chunk-2F72LQKW.js +194 -0
- package/public/sandbox/chunks/chunk-2PYDGDD3.js +4071 -0
- package/public/sandbox/chunks/chunk-2UGKSXDZ.js +16 -0
- package/public/sandbox/chunks/chunk-2XVE7F26.js +153 -0
- package/public/sandbox/chunks/chunk-3A7TFNZN.js +219 -0
- package/public/sandbox/chunks/chunk-3BHC6JAV.js +1070 -0
- package/public/sandbox/chunks/chunk-3U4CAKCX.js +61 -0
- package/public/sandbox/chunks/chunk-3VU3JLZO.js +272 -0
- package/public/sandbox/chunks/chunk-4CPONKWY.js +1170 -0
- package/public/sandbox/chunks/chunk-4GMUQTWH.js +850 -0
- package/public/sandbox/chunks/chunk-4KIYG5E4.js +749 -0
- package/public/sandbox/chunks/chunk-4MY35XR3.js +175 -0
- package/public/sandbox/chunks/chunk-5DNHJMHA.js +69 -0
- package/public/sandbox/chunks/chunk-5EC4S7X6.js +42 -0
- package/public/sandbox/chunks/chunk-5FB7QFSH.js +227 -0
- package/public/sandbox/chunks/chunk-5GEYCJW2.js +206 -0
- package/public/sandbox/chunks/chunk-5PT7Q5SS.js +373 -0
- package/public/sandbox/chunks/chunk-5WN5IGKA.js +166 -0
- package/public/sandbox/chunks/chunk-5XOBKSOT.js +213 -0
- package/public/sandbox/chunks/chunk-67RVISUC.js +313 -0
- package/public/sandbox/chunks/chunk-6ELJEKZS.js +12 -0
- package/public/sandbox/chunks/chunk-6FKWRVP4.js +85 -0
- package/public/sandbox/chunks/chunk-6JRP52YT.js +34 -0
- package/public/sandbox/chunks/chunk-6JYAC3G6.js +42 -0
- package/public/sandbox/chunks/chunk-6TUOP63Q.js +86 -0
- package/public/sandbox/chunks/{chunk-A6JFUNQQ.js → chunk-74C5VW7Z.js} +2 -2
- package/public/sandbox/chunks/chunk-75DQFC5M.js +16 -0
- package/public/sandbox/chunks/{chunk-UCFEP3BH.js → chunk-7GPAF2UK.js} +1 -1
- package/public/sandbox/chunks/chunk-7KQFTS2Y.js +135 -0
- package/public/sandbox/chunks/chunk-7POKWYE3.js +112 -0
- package/public/sandbox/chunks/chunk-7VUEF5F3.js +395 -0
- package/public/sandbox/chunks/chunk-7W5APZS2.js +77 -0
- package/public/sandbox/chunks/chunk-A6OFCXDQ.js +397 -0
- package/public/sandbox/chunks/chunk-A7HLOSO6.js +216 -0
- package/public/sandbox/chunks/chunk-AGF4RRCB.js +408 -0
- package/public/sandbox/chunks/chunk-ASJSJAAL.js +122 -0
- package/public/sandbox/chunks/chunk-ASVMK364.js +283 -0
- package/public/sandbox/chunks/chunk-AUDTI2BQ.js +895 -0
- package/public/sandbox/chunks/chunk-B2SZTA3M.js +16 -0
- package/public/sandbox/chunks/chunk-B6YS2UMV.js +372 -0
- package/public/sandbox/chunks/chunk-BCEO3MGD.js +244 -0
- package/public/sandbox/chunks/chunk-BCOO65D4.js +373 -0
- package/public/sandbox/chunks/chunk-BJOWSSEL.js +38 -0
- package/public/sandbox/chunks/chunk-BS2WBFW4.js +373 -0
- package/public/sandbox/chunks/chunk-BUVHG3NJ.js +439 -0
- package/public/sandbox/chunks/chunk-BVE33AN6.js +42 -0
- package/public/sandbox/chunks/chunk-BWTGJZVP.js +19 -0
- package/public/sandbox/chunks/chunk-BXD7GZC3.js +1025 -0
- package/public/sandbox/chunks/chunk-BZH4EUUD.js +164 -0
- package/public/sandbox/chunks/{chunk-HFV5GJPK.js → chunk-C2MYMMO4.js} +3 -3
- package/public/sandbox/chunks/chunk-CRE4NJJ6.js +271 -0
- package/public/sandbox/chunks/chunk-CVZPRIDB.js +706 -0
- package/public/sandbox/chunks/chunk-CWOXD5NG.js +991 -0
- package/public/sandbox/chunks/chunk-D6DOC3BJ.js +373 -0
- package/public/sandbox/chunks/chunk-DEPSGFSY.js +1698 -0
- package/public/sandbox/chunks/chunk-DM7C5NP5.js +819 -0
- package/public/sandbox/chunks/chunk-DN33LMOF.js +1112 -0
- package/public/sandbox/chunks/{chunk-S46P7MC6.js → chunk-DT7YIIWE.js} +2 -2
- package/public/sandbox/chunks/chunk-DVB5WRCI.js +260 -0
- package/public/sandbox/chunks/{chunk-TOHCFMQS.js → chunk-E3EVW7NR.js} +11 -18
- package/public/sandbox/chunks/chunk-E5BV567Q.js +417 -0
- package/public/sandbox/chunks/chunk-E7BIWMQQ.js +203 -0
- package/public/sandbox/chunks/chunk-EAKGPSOQ.js +83 -0
- package/public/sandbox/chunks/chunk-EGUYL2ER.js +75 -0
- package/public/sandbox/chunks/chunk-EP5GQYZ5.js +85 -0
- package/public/sandbox/chunks/chunk-ET6CJEHC.js +221 -0
- package/public/sandbox/chunks/chunk-EU67YZHZ.js +1070 -0
- package/public/sandbox/chunks/{chunk-PTSJJANP.js → chunk-EYNDQLSB.js} +1 -1
- package/public/sandbox/chunks/{chunk-CEGSWZ5S.js → chunk-EZTMVCJF.js} +1 -1
- package/public/sandbox/chunks/chunk-F5CLVIS6.js +907 -0
- package/public/sandbox/chunks/chunk-F743SKYD.js +85 -0
- package/public/sandbox/chunks/chunk-FEGFZ5OX.js +86 -0
- package/public/sandbox/chunks/chunk-FG5B7ZX3.js +373 -0
- package/public/sandbox/chunks/chunk-FKZPYMDG.js +373 -0
- package/public/sandbox/chunks/chunk-FNLXHWIU.js +220 -0
- package/public/sandbox/chunks/chunk-FQRUTYAD.js +1991 -0
- package/public/sandbox/chunks/{chunk-VLYP4WUS.js → chunk-FY5A73NK.js} +5 -5
- package/public/sandbox/chunks/chunk-G7FAOG3O.js +221 -0
- package/public/sandbox/chunks/chunk-GFXHUC7Y.js +73 -0
- package/public/sandbox/chunks/chunk-GIPXUIZQ.js +534 -0
- package/public/sandbox/chunks/chunk-GP37MEGJ.js +52 -0
- package/public/sandbox/chunks/chunk-GXL5QCMF.js +4511 -0
- package/public/sandbox/chunks/chunk-GZ2NSE6A.js +177 -0
- package/public/sandbox/chunks/chunk-GZATW4YD.js +69 -0
- package/public/sandbox/chunks/chunk-H4EBXROQ.js +166 -0
- package/public/sandbox/chunks/chunk-HETCPK6Z.js +153 -0
- package/public/sandbox/chunks/chunk-HGUFQ2QC.js +4431 -0
- package/public/sandbox/chunks/chunk-HGV3VNH3.js +255 -0
- package/public/sandbox/chunks/chunk-HIJ67QWR.js +5397 -0
- package/public/sandbox/chunks/chunk-IDHERBKW.js +1114 -0
- package/public/sandbox/chunks/chunk-IDTK4FIY.js +102 -0
- package/public/sandbox/chunks/chunk-ILFVY7H5.js +164 -0
- package/public/sandbox/chunks/chunk-ISGSRYGO.js +57 -0
- package/public/sandbox/chunks/chunk-J45VPU24.js +408 -0
- package/public/sandbox/chunks/chunk-JAUIM3O5.js +42 -0
- package/public/sandbox/chunks/chunk-JB7OQEM6.js +373 -0
- package/public/sandbox/chunks/chunk-JCKW6NHD.js +15 -0
- package/public/sandbox/chunks/chunk-JMA7GY7Z.js +221 -0
- package/public/sandbox/chunks/chunk-JY46J6IL.js +836 -0
- package/public/sandbox/chunks/{chunk-X72PZOFA.js → chunk-K2MQ66O7.js} +1 -1
- package/public/sandbox/chunks/chunk-KA7PZA6F.js +464 -0
- package/public/sandbox/chunks/chunk-KDEQTUID.js +102 -0
- package/public/sandbox/chunks/chunk-KDJR27JV.js +1696 -0
- package/public/sandbox/chunks/chunk-KFE3JO6N.js +77 -0
- package/public/sandbox/chunks/chunk-KLDSYWT5.js +536 -0
- package/public/sandbox/chunks/chunk-KQWWFYBF.js +203 -0
- package/public/sandbox/chunks/chunk-KTFZSXOW.js +6473 -0
- package/public/sandbox/chunks/chunk-KXVIC55U.js +108 -0
- package/public/sandbox/chunks/{chunk-HNEDTEGQ.js → chunk-L4PNO2H6.js} +1 -1
- package/public/sandbox/chunks/{chunk-WE4STGO2.js → chunk-L4ZNW5DI.js} +2 -2
- package/public/sandbox/chunks/chunk-LBUINGZ4.js +836 -0
- package/public/sandbox/chunks/chunk-LIYPPU6I.js +112 -0
- package/public/sandbox/chunks/chunk-LJHTOJXW.js +221 -0
- package/public/sandbox/chunks/{chunk-BWSNPKO5.js → chunk-LQL23SWJ.js} +2 -2
- package/public/sandbox/chunks/chunk-LTFCYZQ6.js +46 -0
- package/public/sandbox/chunks/chunk-LTWLVCKQ.js +166 -0
- package/public/sandbox/chunks/chunk-LWI7BXFN.js +395 -0
- package/public/sandbox/chunks/chunk-LYBBX6WM.js +225 -0
- package/public/sandbox/chunks/chunk-MXE7HIBM.js +474 -0
- package/public/sandbox/chunks/chunk-MYBDYNK4.js +6004 -0
- package/public/sandbox/chunks/chunk-NC2MIWZX.js +732 -0
- package/public/sandbox/chunks/chunk-NE447XAF.js +597 -0
- package/public/sandbox/chunks/chunk-NEAYV5C2.js +255 -0
- package/public/sandbox/chunks/chunk-NMGFJZ4I.js +26 -0
- package/public/sandbox/chunks/chunk-NWCJJZNQ.js +71 -0
- package/public/sandbox/chunks/chunk-O57OZBDR.js +214 -0
- package/public/sandbox/chunks/chunk-OJJT664Q.js +731 -0
- package/public/sandbox/chunks/chunk-OKTBUTCH.js +1175 -0
- package/public/sandbox/chunks/chunk-OQ4SYV5D.js +534 -0
- package/public/sandbox/chunks/chunk-OTVVIHJD.js +219 -0
- package/public/sandbox/chunks/chunk-OWTMSCF7.js +1052 -0
- package/public/sandbox/chunks/chunk-P5ZQNFC3.js +122 -0
- package/public/sandbox/chunks/chunk-PBPT2U2N.js +1698 -0
- package/public/sandbox/chunks/chunk-PHBJLCP3.js +836 -0
- package/public/sandbox/chunks/chunk-PHV4HYHB.js +397 -0
- package/public/sandbox/chunks/chunk-PIXQ6SOX.js +4071 -0
- package/public/sandbox/chunks/chunk-PKJL6YLK.js +73 -0
- package/public/sandbox/chunks/chunk-PKPOITIU.js +221 -0
- package/public/sandbox/chunks/{chunk-NQW73ACJ.js → chunk-PMXBOYQI.js} +1 -1
- package/public/sandbox/chunks/chunk-PQLZD7NR.js +836 -0
- package/public/sandbox/chunks/chunk-QEESVOZU.js +16 -0
- package/public/sandbox/chunks/chunk-QGIM3FQK.js +159 -0
- package/public/sandbox/chunks/chunk-QL5JNEDO.js +69 -0
- package/public/sandbox/chunks/chunk-QQOZ3RMH.js +867 -0
- package/public/sandbox/chunks/chunk-QUMEVT2F.js +194 -0
- package/public/sandbox/chunks/chunk-QVZBXYVY.js +102 -0
- package/public/sandbox/chunks/chunk-R5HQS6RB.js +135 -0
- package/public/sandbox/chunks/chunk-R75Q2CTT.js +900 -0
- package/public/sandbox/chunks/chunk-RBB6SHW2.js +253 -0
- package/public/sandbox/chunks/chunk-RDHNRWQP.js +383 -0
- package/public/sandbox/chunks/chunk-RIWOEI3T.js +1101 -0
- package/public/sandbox/chunks/chunk-RS5FFPUV.js +103 -0
- package/public/sandbox/chunks/chunk-RYSSJBGX.js +203 -0
- package/public/sandbox/chunks/chunk-S3KBAE5Z.js +1114 -0
- package/public/sandbox/chunks/chunk-S6ZZHV6G.js +244 -0
- package/public/sandbox/chunks/chunk-SFXJ24HY.js +499 -0
- package/public/sandbox/chunks/chunk-SH7TP5CJ.js +1109 -0
- package/public/sandbox/chunks/chunk-SI5OKFFY.js +317 -0
- package/public/sandbox/chunks/chunk-SIXNQNIR.js +86 -0
- package/public/sandbox/chunks/chunk-ST353BOX.js +42 -0
- package/public/sandbox/chunks/chunk-SYEHKMLP.js +1140 -0
- package/public/sandbox/chunks/chunk-SZ4KQUJU.js +69 -0
- package/public/sandbox/chunks/{chunk-5SOP6EKV.js → chunk-SZI65PSP.js} +5 -10
- package/public/sandbox/chunks/chunk-T7RLTSMX.js +78 -0
- package/public/sandbox/chunks/chunk-TJ2RLUTW.js +57 -0
- package/public/sandbox/chunks/chunk-TJB73XPN.js +4071 -0
- package/public/sandbox/chunks/chunk-TXJCYO56.js +4046 -0
- package/public/sandbox/chunks/chunk-U5J3LCYI.js +731 -0
- package/public/sandbox/chunks/chunk-UABFN3NH.js +208 -0
- package/public/sandbox/chunks/chunk-UBMUY7WO.js +13 -0
- package/public/sandbox/chunks/chunk-UC27CE32.js +69 -0
- package/public/sandbox/chunks/chunk-UJGVDFZN.js +147 -0
- package/public/sandbox/chunks/chunk-UNVLTK4N.js +122 -0
- package/public/sandbox/chunks/chunk-UQKQ6V3V.js +208 -0
- package/public/sandbox/chunks/chunk-UZZBHWIO.js +703 -0
- package/public/sandbox/chunks/chunk-VKZIJERL.js +1114 -0
- package/public/sandbox/chunks/chunk-VQQEAGID.js +372 -0
- package/public/sandbox/chunks/{chunk-3LX3KIQQ.js → chunk-W365QUZ5.js} +3 -5
- package/public/sandbox/chunks/chunk-WJY2LSWG.js +1052 -0
- package/public/sandbox/chunks/chunk-WNOBN3DX.js +391 -0
- package/public/sandbox/chunks/chunk-X2Z5VYG3.js +245 -0
- package/public/sandbox/chunks/chunk-X74KU74D.js +959 -0
- package/public/sandbox/chunks/chunk-XE7ULSGQ.js +46 -0
- package/public/sandbox/chunks/chunk-XRXUJZ3X.js +431 -0
- package/public/sandbox/chunks/chunk-XWHIN7CC.js +85 -0
- package/public/sandbox/chunks/chunk-Y2TVGGVL.js +527 -0
- package/public/sandbox/chunks/chunk-YMVMZA3U.js +1395 -0
- package/public/sandbox/chunks/chunk-YOBLFWDV.js +431 -0
- package/public/sandbox/chunks/chunk-YR2RFEZA.js +11 -0
- package/public/sandbox/chunks/chunk-YTD6A35P.js +836 -0
- package/public/sandbox/chunks/chunk-Z5L7EZXS.js +81 -0
- package/public/sandbox/chunks/chunk-Z65I5ET2.js +108 -0
- package/public/sandbox/chunks/chunk-Z6LV34RO.js +390 -0
- package/public/sandbox/chunks/chunk-ZAKUP6QG.js +1634 -0
- package/public/sandbox/chunks/chunk-ZHNYE2YH.js +731 -0
- package/public/sandbox/chunks/chunk-ZHQX3B3Y.js +867 -0
- package/public/sandbox/chunks/chunk-ZIXDFRHJ.js +731 -0
- package/public/sandbox/chunks/chunk-ZPZ2MZ4D.js +528 -0
- package/public/sandbox/chunks/chunk-ZQD6NZXB.js +373 -0
- package/public/sandbox/chunks/chunk-ZVVBP7ON.js +16 -0
- package/public/sandbox/chunks/chunk-ZWE3P6X2.js +11 -0
- package/public/sandbox/logix-core/Bound.js +14 -14
- package/public/sandbox/logix-core/Debug.js +12 -10
- package/public/sandbox/logix-core/EffectOp.js +3 -4
- package/public/sandbox/logix-core/Env.js +5 -2
- package/public/sandbox/logix-core/ExternalStore.js +239 -0
- package/public/sandbox/logix-core/Flow.js +7 -8
- package/public/sandbox/logix-core/Kernel.js +7 -4
- package/public/sandbox/logix-core/Link.js +33 -25
- package/public/sandbox/logix-core/Middleware.js +13 -11
- package/public/sandbox/logix-core/Module.js +93 -30
- package/public/sandbox/logix-core/ModuleTag.js +28 -25
- package/public/sandbox/logix-core/Observability.js +21 -19
- package/public/sandbox/logix-core/Process.js +27 -22
- package/public/sandbox/logix-core/ReadQuery.js +7 -11
- package/public/sandbox/logix-core/Reflection.js +173 -53
- package/public/sandbox/logix-core/Resource.js +6 -3
- package/public/sandbox/logix-core/Root.js +7 -3
- package/public/sandbox/logix-core/Runtime.js +54 -40
- package/public/sandbox/logix-core/ScopeRegistry.js +6 -3
- package/public/sandbox/logix-core/StateTrait.js +17 -14
- package/public/sandbox/logix-core/TraitLifecycle.js +8 -8
- package/public/sandbox/logix-core/Workflow.js +332 -0
- package/public/sandbox/logix-core.js +11133 -6622
- package/public/sandbox/logix-core.manifest.json +4 -2
- package/public/sandbox/worker.js +3 -3
- package/public/sandbox/chunks/chunk-4LRLOTMA.js +0 -1698
- package/public/sandbox/chunks/chunk-CDLXJHXY.js +0 -120
- package/public/sandbox/chunks/chunk-CZRI7MHA.js +0 -46
- package/public/sandbox/chunks/chunk-EJDFUZ4B.js +0 -408
- package/public/sandbox/chunks/chunk-IP63FME6.js +0 -282
- package/public/sandbox/chunks/chunk-JIXTOQXJ.js +0 -1103
- package/public/sandbox/chunks/chunk-MPUSOFJ3.js +0 -1928
- package/public/sandbox/chunks/chunk-ON2LY6HJ.js +0 -135
- package/public/sandbox/chunks/chunk-POIBXAH5.js +0 -995
- package/public/sandbox/chunks/chunk-PQ652ULI.js +0 -6359
- package/public/sandbox/chunks/chunk-RJQ4PG2F.js +0 -77
- package/public/sandbox/chunks/chunk-S4EXG3OS.js +0 -533
- package/public/sandbox/chunks/chunk-SUXDGXVE.js +0 -390
- package/public/sandbox/chunks/chunk-TOQ6SJ6O.js +0 -244
- package/public/sandbox/chunks/chunk-UKYAF3NL.js +0 -1036
- package/public/sandbox/chunks/chunk-UMVN3AWO.js +0 -395
- package/public/sandbox/chunks/chunk-WFV5PPWJ.js +0 -194
- package/public/sandbox/chunks/chunk-YF6IO732.js +0 -206
- package/public/sandbox/chunks/chunk-ZUBABAAO.js +0 -86
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
// @logixjs/core subpath bundles for @logixjs/sandbox
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
// ../logix-core/src/internal/runtime/core/EffectOpCore.ts
|
|
5
|
-
import { Context, Effect, FiberRef } from "../effect.js";
|
|
6
|
-
var currentLinkId = FiberRef.unsafeMake(void 0);
|
|
7
|
-
var makeOperationRejected = (params) => ({
|
|
8
|
-
_tag: "OperationRejected",
|
|
9
|
-
message: params.message,
|
|
10
|
-
kind: params.kind,
|
|
11
|
-
name: params.name,
|
|
12
|
-
linkId: params.linkId,
|
|
13
|
-
details: params.details
|
|
14
|
-
});
|
|
15
|
-
var EffectOpMiddlewareTag = class extends Context.Tag("Logix/EffectOpMiddleware")() {
|
|
16
|
-
};
|
|
17
|
-
var composeMiddleware = (stack) => {
|
|
18
|
-
return (op) => stack.reduceRight(
|
|
19
|
-
(eff, mw) => mw({ ...op, effect: eff }),
|
|
20
|
-
op.effect
|
|
21
|
-
);
|
|
22
|
-
};
|
|
23
|
-
var runWithMiddleware = (op, stack) => {
|
|
24
|
-
return Effect.gen(function* () {
|
|
25
|
-
const existing = yield* FiberRef.get(currentLinkId);
|
|
26
|
-
const metaLinkId = op.meta?.linkId;
|
|
27
|
-
const linkId = typeof metaLinkId === "string" && metaLinkId.length > 0 ? metaLinkId : existing ?? op.id;
|
|
28
|
-
const nextOp = {
|
|
29
|
-
...op,
|
|
30
|
-
meta: {
|
|
31
|
-
...op.meta ?? {},
|
|
32
|
-
linkId
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
const program = stack.length ? composeMiddleware(stack)(nextOp) : nextOp.effect;
|
|
36
|
-
return yield* Effect.locally(currentLinkId, linkId)(program);
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
// ../logix-core/src/internal/observability/jsonValue.ts
|
|
41
|
-
var isJsonValue = (input) => {
|
|
42
|
-
const seen = /* @__PURE__ */ new WeakSet();
|
|
43
|
-
const loop = (value, depth) => {
|
|
44
|
-
if (depth > 64) return false;
|
|
45
|
-
if (value === null) return true;
|
|
46
|
-
switch (typeof value) {
|
|
47
|
-
case "string":
|
|
48
|
-
case "boolean":
|
|
49
|
-
return true;
|
|
50
|
-
case "number":
|
|
51
|
-
return Number.isFinite(value);
|
|
52
|
-
case "object": {
|
|
53
|
-
if (Array.isArray(value)) {
|
|
54
|
-
if (seen.has(value)) return false;
|
|
55
|
-
seen.add(value);
|
|
56
|
-
for (const item of value) {
|
|
57
|
-
if (!loop(item, depth + 1)) return false;
|
|
58
|
-
}
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
if (!isPlainRecord(value)) return false;
|
|
62
|
-
if (seen.has(value)) return false;
|
|
63
|
-
seen.add(value);
|
|
64
|
-
for (const v of Object.values(value)) {
|
|
65
|
-
if (!loop(v, depth + 1)) return false;
|
|
66
|
-
}
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
|
-
default:
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
return loop(input, 0);
|
|
74
|
-
};
|
|
75
|
-
var defaultOptions = {
|
|
76
|
-
maxDepth: 6,
|
|
77
|
-
maxObjectKeys: 32,
|
|
78
|
-
maxArrayLength: 32,
|
|
79
|
-
maxStringLength: 256,
|
|
80
|
-
maxJsonBytes: 4 * 1024,
|
|
81
|
-
oversizedPreviewBytes: 256
|
|
82
|
-
};
|
|
83
|
-
var truncateString = (value, maxLen, stats) => {
|
|
84
|
-
if (value.length <= maxLen) return value;
|
|
85
|
-
stats.oversized += 1;
|
|
86
|
-
return value.slice(0, maxLen);
|
|
87
|
-
};
|
|
88
|
-
var mergeDowngrade = (current, next) => {
|
|
89
|
-
if (!current) return next;
|
|
90
|
-
if (current === "non_serializable" || next === "non_serializable") return "non_serializable";
|
|
91
|
-
if (current === "oversized" || next === "oversized") return "oversized";
|
|
92
|
-
return "unknown";
|
|
93
|
-
};
|
|
94
|
-
function isPlainRecord(value) {
|
|
95
|
-
if (typeof value !== "object" || value === null) return false;
|
|
96
|
-
const proto = Object.getPrototypeOf(value);
|
|
97
|
-
return proto === Object.prototype || proto === null;
|
|
98
|
-
}
|
|
99
|
-
var asNumber = (value, stats) => {
|
|
100
|
-
if (Number.isFinite(value)) return value;
|
|
101
|
-
stats.nonSerializable += 1;
|
|
102
|
-
return String(value);
|
|
103
|
-
};
|
|
104
|
-
var toJsonValueInternal = (input, options, stats, seen, depth) => {
|
|
105
|
-
if (input === null) return null;
|
|
106
|
-
switch (typeof input) {
|
|
107
|
-
case "string":
|
|
108
|
-
return truncateString(input, options.maxStringLength, stats);
|
|
109
|
-
case "number":
|
|
110
|
-
return asNumber(input, stats);
|
|
111
|
-
case "boolean":
|
|
112
|
-
return input;
|
|
113
|
-
case "bigint":
|
|
114
|
-
stats.nonSerializable += 1;
|
|
115
|
-
return truncateString(input.toString(), options.maxStringLength, stats);
|
|
116
|
-
case "symbol":
|
|
117
|
-
stats.nonSerializable += 1;
|
|
118
|
-
return truncateString(input.toString(), options.maxStringLength, stats);
|
|
119
|
-
case "function":
|
|
120
|
-
stats.nonSerializable += 1;
|
|
121
|
-
return "[Function]";
|
|
122
|
-
case "undefined":
|
|
123
|
-
stats.dropped += 1;
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
if (depth >= options.maxDepth) {
|
|
127
|
-
stats.oversized += 1;
|
|
128
|
-
return "[Truncated]";
|
|
129
|
-
}
|
|
130
|
-
if (input instanceof Date) {
|
|
131
|
-
return input.toISOString();
|
|
132
|
-
}
|
|
133
|
-
if (input instanceof Error) {
|
|
134
|
-
stats.nonSerializable += 1;
|
|
135
|
-
return {
|
|
136
|
-
name: truncateString(input.name, options.maxStringLength, stats),
|
|
137
|
-
message: truncateString(input.message, options.maxStringLength, stats)
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
if (typeof input === "object") {
|
|
141
|
-
if (seen.has(input)) {
|
|
142
|
-
stats.nonSerializable += 1;
|
|
143
|
-
return "[Circular]";
|
|
144
|
-
}
|
|
145
|
-
seen.add(input);
|
|
146
|
-
}
|
|
147
|
-
if (Array.isArray(input)) {
|
|
148
|
-
const out2 = [];
|
|
149
|
-
const limit2 = Math.min(input.length, options.maxArrayLength);
|
|
150
|
-
for (let i = 0; i < limit2; i++) {
|
|
151
|
-
out2.push(toJsonValueInternal(input[i], options, stats, seen, depth + 1));
|
|
152
|
-
}
|
|
153
|
-
if (input.length > limit2) {
|
|
154
|
-
stats.oversized += 1;
|
|
155
|
-
out2.push(`[...${input.length - limit2} more]`);
|
|
156
|
-
}
|
|
157
|
-
return out2;
|
|
158
|
-
}
|
|
159
|
-
if (!isPlainRecord(input)) {
|
|
160
|
-
stats.nonSerializable += 1;
|
|
161
|
-
return truncateString(String(input), options.maxStringLength, stats);
|
|
162
|
-
}
|
|
163
|
-
const entries = Object.entries(input);
|
|
164
|
-
const limit = Math.min(entries.length, options.maxObjectKeys);
|
|
165
|
-
const out = {};
|
|
166
|
-
for (let i = 0; i < limit; i++) {
|
|
167
|
-
const [rawKey, rawValue] = entries[i];
|
|
168
|
-
const key = truncateString(rawKey, options.maxStringLength, stats);
|
|
169
|
-
if (rawValue === void 0) {
|
|
170
|
-
stats.dropped += 1;
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
out[key] = toJsonValueInternal(rawValue, options, stats, seen, depth + 1);
|
|
174
|
-
}
|
|
175
|
-
if (entries.length > limit) {
|
|
176
|
-
stats.oversized += 1;
|
|
177
|
-
out.__truncatedKeys = entries.length - limit;
|
|
178
|
-
}
|
|
179
|
-
return out;
|
|
180
|
-
};
|
|
181
|
-
var projectJsonValue = (input, options) => {
|
|
182
|
-
const resolved = { ...defaultOptions, ...options ?? {} };
|
|
183
|
-
const stats = { dropped: 0, oversized: 0, nonSerializable: 0 };
|
|
184
|
-
const seen = /* @__PURE__ */ new WeakSet();
|
|
185
|
-
let downgrade;
|
|
186
|
-
const value = toJsonValueInternal(input, resolved, stats, seen, 0);
|
|
187
|
-
if (stats.nonSerializable > 0) {
|
|
188
|
-
downgrade = mergeDowngrade(downgrade, "non_serializable");
|
|
189
|
-
}
|
|
190
|
-
if (stats.oversized > 0) {
|
|
191
|
-
downgrade = mergeDowngrade(downgrade, "oversized");
|
|
192
|
-
}
|
|
193
|
-
try {
|
|
194
|
-
const json = JSON.stringify(value);
|
|
195
|
-
if (json.length > resolved.maxJsonBytes) {
|
|
196
|
-
downgrade = mergeDowngrade(downgrade, "oversized");
|
|
197
|
-
const preview = json.slice(0, Math.min(resolved.oversizedPreviewBytes, resolved.maxJsonBytes));
|
|
198
|
-
return {
|
|
199
|
-
value: {
|
|
200
|
-
_tag: "oversized",
|
|
201
|
-
bytes: json.length,
|
|
202
|
-
preview
|
|
203
|
-
},
|
|
204
|
-
stats: {
|
|
205
|
-
dropped: stats.dropped,
|
|
206
|
-
oversized: stats.oversized + 1,
|
|
207
|
-
nonSerializable: stats.nonSerializable
|
|
208
|
-
},
|
|
209
|
-
downgrade
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
} catch {
|
|
213
|
-
downgrade = mergeDowngrade(downgrade, "non_serializable");
|
|
214
|
-
return {
|
|
215
|
-
value: "[Unserializable]",
|
|
216
|
-
stats: {
|
|
217
|
-
dropped: stats.dropped,
|
|
218
|
-
oversized: stats.oversized,
|
|
219
|
-
nonSerializable: stats.nonSerializable + 1
|
|
220
|
-
},
|
|
221
|
-
downgrade
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
return {
|
|
225
|
-
value,
|
|
226
|
-
stats: {
|
|
227
|
-
dropped: stats.dropped,
|
|
228
|
-
oversized: stats.oversized,
|
|
229
|
-
nonSerializable: stats.nonSerializable
|
|
230
|
-
},
|
|
231
|
-
downgrade
|
|
232
|
-
};
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
export {
|
|
236
|
-
isJsonValue,
|
|
237
|
-
projectJsonValue,
|
|
238
|
-
currentLinkId,
|
|
239
|
-
makeOperationRejected,
|
|
240
|
-
EffectOpMiddlewareTag,
|
|
241
|
-
composeMiddleware,
|
|
242
|
-
runWithMiddleware
|
|
243
|
-
};
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcnVudGltZS9jb3JlL0VmZmVjdE9wQ29yZS50cyIsICIuLi8uLi8uLi8uLi9sb2dpeC1jb3JlL3NyYy9pbnRlcm5hbC9vYnNlcnZhYmlsaXR5L2pzb25WYWx1ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLy8gRWZmZWN0T3AgY29yZSBtb2RlbCBhbmQgbWlkZGxld2FyZSBjb21wb3NpdGlvbiBsb2dpYy5cbi8vIEZvciBoaWdoZXItbGV2ZWwgUnVudGltZSAvIERldnRvb2xzIGludGVncmF0aW9uLCBzZWU6XG4vLyBzcGVjcy8wMDAtbW9kdWxlLXRyYWl0cy1ydW50aW1lL3JlZmVyZW5jZXMvZWZmZWN0b3AtYW5kLW1pZGRsZXdhcmUubWRcblxuaW1wb3J0IHsgQ29udGV4dCwgRWZmZWN0LCBGaWJlclJlZiB9IGZyb20gJ2VmZmVjdCdcblxuLyoqXG4gKiBjdXJyZW50TGlua0lkXHVGRjFBXG4gKiAtIFN0b3JlcyB0aGUgY3VycmVudCBvcGVyYXRpb24gY2hhaW4gaWQgKGxpbmtJZCkgaW4gYSBGaWJlclJlZi5cbiAqIC0gVXNlZCB0byBjb3JyZWxhdGUgbXVsdGlwbGUgYm91bmRhcnkgb3BzIHdpdGhpbiB0aGUgc2FtZSBjaGFpbiAoY2FuIGJlIHNoYXJlZCBhY3Jvc3MgbW9kdWxlcyB2aWEgdGhlIHNhbWUgRmliZXJSZWYpLlxuICovXG5leHBvcnQgY29uc3QgY3VycmVudExpbmtJZCA9IEZpYmVyUmVmLnVuc2FmZU1ha2U8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbi8qKlxuICogT3BlcmF0aW9uUG9saWN5XHVGRjFBXG4gKiAtIExvY2FsIHBvbGljeSBtYXJrZXJzIChpbnRlbnQgb25seTsgbm8gcnVsZSBsb2dpYyBhdHRhY2hlZCkuXG4gKlxuICogQ29uc3RyYWludHMgKGVuZm9yY2VkIGJ5IFJ1bnRpbWUvbWlkZGxld2FyZSB0b2dldGhlcik6XG4gKiAtIE9ubHkgb2JzZXJ2YXRpb24tb25seSBjYXBhYmlsaXRpZXMgKE9ic2VydmVyKSBtYXkgYmUgZGlzYWJsZWQ7IGdsb2JhbCBndWFyZHMgbXVzdCBub3QgYmUgZGlzYWJsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uUG9saWN5IHtcbiAgcmVhZG9ubHkgZGlzYWJsZU9ic2VydmVycz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBPcGVyYXRpb25SZWplY3RlZFx1RkYxQVxuICogLSBVbmlmaWVkIGZhaWx1cmUgcmVzdWx0IHdoZW4gYSBndWFyZCByZWplY3RzIGV4ZWN1dGlvbi5cbiAqIC0gU2VtYW50aWNzOiBleHBsaWNpdCBmYWlsdXJlIHdpdGggbm8gYnVzaW5lc3Mgc2lkZSBlZmZlY3RzIChyZWplY3Rpb24gbXVzdCBoYXBwZW4gYmVmb3JlIHVzZXIgY29kZSBleGVjdXRlcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uUmVqZWN0ZWQge1xuICByZWFkb25seSBfdGFnOiAnT3BlcmF0aW9uUmVqZWN0ZWQnXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZ1xuICByZWFkb25seSBraW5kPzogRWZmZWN0T3BbJ2tpbmQnXVxuICByZWFkb25seSBuYW1lPzogc3RyaW5nXG4gIHJlYWRvbmx5IGxpbmtJZD86IHN0cmluZ1xuICByZWFkb25seSBkZXRhaWxzPzogdW5rbm93blxufVxuXG4vKipcbiAqIE9wZXJhdGlvbkVycm9yXHVGRjFBXG4gKiAtIEFueSBib3VuZGFyeSBvcGVyYXRpb24gZXhlY3V0ZWQgdmlhIEVmZmVjdE9wIG1heSBiZSBleHBsaWNpdGx5IHJlamVjdGVkIGJ5IEd1YXJkIG1pZGRsZXdhcmUuXG4gKiAtIFRoZXJlZm9yZSwgdGhlIG1pZGRsZXdhcmUgZXJyb3IgY2hhbm5lbCBtdXN0IGFsbG93IE9wZXJhdGlvblJlamVjdGVkIHRvIGJlIGFkZGVkLlxuICovXG5leHBvcnQgdHlwZSBPcGVyYXRpb25FcnJvcjxFPiA9IEUgfCBPcGVyYXRpb25SZWplY3RlZFxuXG5leHBvcnQgY29uc3QgbWFrZU9wZXJhdGlvblJlamVjdGVkID0gKHBhcmFtczoge1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmdcbiAgcmVhZG9ubHkga2luZD86IEVmZmVjdE9wWydraW5kJ11cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZ1xuICByZWFkb25seSBsaW5rSWQ/OiBzdHJpbmdcbiAgcmVhZG9ubHkgZGV0YWlscz86IHVua25vd25cbn0pOiBPcGVyYXRpb25SZWplY3RlZCA9PiAoe1xuICBfdGFnOiAnT3BlcmF0aW9uUmVqZWN0ZWQnLFxuICBtZXNzYWdlOiBwYXJhbXMubWVzc2FnZSxcbiAga2luZDogcGFyYW1zLmtpbmQsXG4gIG5hbWU6IHBhcmFtcy5uYW1lLFxuICBsaW5rSWQ6IHBhcmFtcy5saW5rSWQsXG4gIGRldGFpbHM6IHBhcmFtcy5kZXRhaWxzLFxufSlcblxuLyoqXG4gKiBFZmZlY3RPcDogYSB1bmlmaWVkIHJlcHJlc2VudGF0aW9uIG9mIGFuIEVmZmVjdCBleGVjdXRpb24gYXQgYW4gXCJvYnNlcnZhYmxlIGJvdW5kYXJ5XCIuXG4gKlxuICogLSBPdXQgLyBFcnIgLyBFbnYgYXJlIHRoZSBnZW5lcmljIHBhcmFtZXRlcnMgb2YgdGhlIHVuZGVybHlpbmcgRWZmZWN0LlxuICogLSBtZXRhIGNhcnJpZXMgc3RydWN0dXJlZCBjb250ZXh0IG5lZWRlZCBieSBEZXZ0b29scyAvIE1pZGRsZXdhcmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWZmZWN0T3A8T3V0ID0gdW5rbm93biwgRXJyID0gdW5rbm93biwgRW52ID0gdW5rbm93bj4ge1xuICByZWFkb25seSBpZDogc3RyaW5nXG4gIHJlYWRvbmx5IGtpbmQ6XG4gICAgfCAnYWN0aW9uJ1xuICAgIHwgJ2Zsb3cnXG4gICAgfCAnc3RhdGUnXG4gICAgfCAnc2VydmljZSdcbiAgICB8ICdsaWZlY3ljbGUnXG4gICAgfCAndHJhaXQtY29tcHV0ZWQnXG4gICAgfCAndHJhaXQtbGluaydcbiAgICB8ICd0cmFpdC1zb3VyY2UnXG4gICAgfCAnZGV2dG9vbHMnXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZ1xuICByZWFkb25seSBwYXlsb2FkPzogdW5rbm93blxuICByZWFkb25seSBtZXRhPzoge1xuICAgIC8qKlxuICAgICAqIGxpbmtJZFx1RkYxQVxuICAgICAqIC0gT3BlcmF0aW9uIGNoYWluIGlkOiBtdWx0aXBsZSBib3VuZGFyeSBvcHMgaW4gdGhlIHNhbWUgY2hhaW4gbXVzdCBzaGFyZSBpdC5cbiAgICAgKiAtIFJ1bnRpbWUgZW5zdXJlcyB0aGlzIGZpZWxkIGlzIHBvcHVsYXRlZCBvbiBhbGwgYm91bmRhcnkgb3BzLlxuICAgICAqL1xuICAgIGxpbmtJZD86IHN0cmluZ1xuICAgIG1vZHVsZUlkPzogc3RyaW5nXG4gICAgaW5zdGFuY2VJZD86IHN0cmluZ1xuICAgIHJ1bnRpbWVMYWJlbD86IHN0cmluZ1xuICAgIHR4bklkPzogc3RyaW5nXG4gICAgdHhuU2VxPzogbnVtYmVyXG4gICAgb3BTZXE/OiBudW1iZXJcbiAgICBmaWVsZFBhdGg/OiBzdHJpbmdcbiAgICBkZXBzPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gICAgZnJvbT86IHN0cmluZ1xuICAgIHRvPzogc3RyaW5nXG4gICAgdHJhaXROb2RlSWQ/OiBzdHJpbmdcbiAgICBzdGVwSWQ/OiBzdHJpbmdcbiAgICByZXNvdXJjZUlkPzogc3RyaW5nXG4gICAga2V5PzogdW5rbm93blxuICAgIHRyYWNlPzogUmVhZG9ubHlBcnJheTxzdHJpbmc+XG4gICAgdGFncz86IFJlYWRvbmx5QXJyYXk8c3RyaW5nPlxuICAgIHBvbGljeT86IE9wZXJhdGlvblBvbGljeVxuICAgIC8vIFJlc2VydmVkIGV4dGVuc2lvbiBzbG90IGZvciBtaWRkbGV3YXJlL2RldnRvb2xzIHRvIGF0dGFjaCBleHRyYSBpbmZvcm1hdGlvbi5cbiAgICByZWFkb25seSBbazogc3RyaW5nXTogdW5rbm93blxuICB9XG4gIHJlYWRvbmx5IGVmZmVjdDogRWZmZWN0LkVmZmVjdDxPdXQsIEVyciwgRW52PlxufVxuXG4vKipcbiAqIE1pZGRsZXdhcmU6IHRoZSBnZW5lcmFsIG1pZGRsZXdhcmUgbW9kZWwgZm9yIG9ic2VydmluZyAvIHdyYXBwaW5nIC8gZ3VhcmRpbmcgRWZmZWN0T3BzLlxuICovXG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlID0gPEEsIEUsIFI+KG9wOiBFZmZlY3RPcDxBLCBFLCBSPikgPT4gRWZmZWN0LkVmZmVjdDxBLCBPcGVyYXRpb25FcnJvcjxFPiwgUj5cblxuZXhwb3J0IHR5cGUgTWlkZGxld2FyZVN0YWNrID0gUmVhZG9ubHlBcnJheTxNaWRkbGV3YXJlPlxuXG4vKipcbiAqIEVmZmVjdE9wTWlkZGxld2FyZUVudlx1RkYxQVxuICogLSBBIFNlcnZpY2UgaW4gRWZmZWN0IEVudiB0aGF0IGNhcnJpZXMgdGhlIGN1cnJlbnQgUnVudGltZSdzIE1pZGRsZXdhcmVTdGFjay5cbiAqIC0gSW5qZWN0ZWQgYnkgUnVudGltZS50cyB3aGVuIGNvbnN0cnVjdGluZyBhIE1hbmFnZWRSdW50aW1lLlxuICogLSBSdW50aW1lIGNvZGUgKGUuZy4gU3RhdGVUcmFpdC5pbnN0YWxsKSB1c2VzIHRoaXMgU2VydmljZSB0byBkZWNpZGUgd2hpY2ggTWlkZGxld2FyZVN0YWNrIHRvIHVzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZmZlY3RPcE1pZGRsZXdhcmVFbnYge1xuICByZWFkb25seSBzdGFjazogTWlkZGxld2FyZVN0YWNrXG59XG5cbmV4cG9ydCBjbGFzcyBFZmZlY3RPcE1pZGRsZXdhcmVUYWcgZXh0ZW5kcyBDb250ZXh0LlRhZygnTG9naXgvRWZmZWN0T3BNaWRkbGV3YXJlJyk8XG4gIEVmZmVjdE9wTWlkZGxld2FyZVRhZyxcbiAgRWZmZWN0T3BNaWRkbGV3YXJlRW52XG4+KCkge31cblxuLyoqXG4gKiBjb21wb3NlTWlkZGxld2FyZVx1RkYxQVxuICogLSBDb21wb3NlcyBNaWRkbGV3YXJlIGZyb20gXCJvdXRlciB0byBpbm5lclwiIGluIGRlY2xhcmF0aW9uIG9yZGVyOlxuICogICAtIHN0YWNrID0gW213MSwgbXcyXSA9PiBtdzEgLT4gbXcyIC0+IGVmZmVjdCAtPiBtdzIgLT4gbXcxXG4gKiAtIE1hdGNoZXMgdGhlIHJlZHVjZVJpZ2h0IGV4YW1wbGUgaW4gdGhlIHJlZmVyZW5jZSBkb2NzLlxuICovXG5leHBvcnQgY29uc3QgY29tcG9zZU1pZGRsZXdhcmUgPSAoc3RhY2s6IE1pZGRsZXdhcmVTdGFjayk6IE1pZGRsZXdhcmUgPT4ge1xuICByZXR1cm4gPEEsIEUsIFI+KG9wOiBFZmZlY3RPcDxBLCBFLCBSPik6IEVmZmVjdC5FZmZlY3Q8QSwgT3BlcmF0aW9uRXJyb3I8RT4sIFI+ID0+XG4gICAgc3RhY2sucmVkdWNlUmlnaHQ8RWZmZWN0LkVmZmVjdDxBLCBPcGVyYXRpb25FcnJvcjxFPiwgUj4+KFxuICAgICAgKGVmZiwgbXcpID0+IG13KHsgLi4ub3AsIGVmZmVjdDogZWZmIH0gYXMgYW55KSBhcyBhbnksXG4gICAgICBvcC5lZmZlY3QgYXMgRWZmZWN0LkVmZmVjdDxBLCBPcGVyYXRpb25FcnJvcjxFPiwgUj4sXG4gICAgKVxufVxuXG4vKipcbiAqIHJ1bldpdGhNaWRkbGV3YXJlXHVGRjFBXG4gKiAtIEV4ZWN1dGVzIGEgZ2l2ZW4gRWZmZWN0T3Agd2l0aCBhIE1pZGRsZXdhcmVTdGFjayBhY2NvcmRpbmcgdG8gdGhlIGNvbXBvc2l0aW9uIHJ1bGVzLlxuICogLSBJZiB0aGUgc3RhY2sgaXMgZW1wdHksIHJldHVybnMgb3AuZWZmZWN0IGRpcmVjdGx5LlxuICovXG5leHBvcnQgY29uc3QgcnVuV2l0aE1pZGRsZXdhcmUgPSA8QSwgRSwgUj4ob3A6IEVmZmVjdE9wPEEsIEUsIFI+LCBzdGFjazogTWlkZGxld2FyZVN0YWNrKTogRWZmZWN0LkVmZmVjdDxBLCBFLCBSPiA9PiB7XG4gIHJldHVybiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB5aWVsZCogRmliZXJSZWYuZ2V0KGN1cnJlbnRMaW5rSWQpXG4gICAgY29uc3QgbWV0YUxpbmtJZCA9IChvcC5tZXRhIGFzIGFueSk/LmxpbmtJZFxuICAgIGNvbnN0IGxpbmtJZCA9IHR5cGVvZiBtZXRhTGlua0lkID09PSAnc3RyaW5nJyAmJiBtZXRhTGlua0lkLmxlbmd0aCA+IDAgPyBtZXRhTGlua0lkIDogKGV4aXN0aW5nID8/IG9wLmlkKVxuXG4gICAgY29uc3QgbmV4dE9wOiBFZmZlY3RPcDxBLCBFLCBSPiA9IHtcbiAgICAgIC4uLm9wLFxuICAgICAgbWV0YToge1xuICAgICAgICAuLi4ob3AubWV0YSA/PyB7fSksXG4gICAgICAgIGxpbmtJZCxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgY29uc3QgcHJvZ3JhbSA9IHN0YWNrLmxlbmd0aCA/IGNvbXBvc2VNaWRkbGV3YXJlKHN0YWNrKShuZXh0T3ApIDogbmV4dE9wLmVmZmVjdFxuXG4gICAgLy8gbGlua0lkIGlzIGNyZWF0ZWQgYXQgdGhlIGJvdW5kYXJ5IHJvb3QgYW5kIHJldXNlZCBmb3IgbmVzdGVkIG9wcyAodGhlIEZpYmVyUmVmIGlzIHRoZSBnbG9iYWwgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCkuXG4gICAgLy8gTk9URTogbWlkZGxld2FyZSBtYXkgZXhwbGljaXRseSByZWplY3Qgd2l0aCBPcGVyYXRpb25SZWplY3RlZC5cbiAgICByZXR1cm4geWllbGQqIEVmZmVjdC5sb2NhbGx5KGN1cnJlbnRMaW5rSWQsIGxpbmtJZCkocHJvZ3JhbSBhcyBhbnkpXG4gIH0pIGFzIEVmZmVjdC5FZmZlY3Q8QSwgRSwgUj5cbn1cbiIsICJleHBvcnQgdHlwZSBKc29uVmFsdWUgPVxuICB8IG51bGxcbiAgfCBib29sZWFuXG4gIHwgbnVtYmVyXG4gIHwgc3RyaW5nXG4gIHwgUmVhZG9ubHlBcnJheTxKc29uVmFsdWU+XG4gIHwgeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBKc29uVmFsdWUgfVxuXG5leHBvcnQgdHlwZSBEb3duZ3JhZGVSZWFzb24gPSAnbm9uX3NlcmlhbGl6YWJsZScgfCAnb3ZlcnNpemVkJyB8ICd1bmtub3duJ1xuXG5leHBvcnQgY29uc3QgaXNKc29uVmFsdWUgPSAoaW5wdXQ6IHVua25vd24pOiBpbnB1dCBpcyBKc29uVmFsdWUgPT4ge1xuICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQ8b2JqZWN0PigpXG5cbiAgY29uc3QgbG9vcCA9ICh2YWx1ZTogdW5rbm93biwgZGVwdGg6IG51bWJlcik6IHZhbHVlIGlzIEpzb25WYWx1ZSA9PiB7XG4gICAgaWYgKGRlcHRoID4gNjQpIHJldHVybiBmYWxzZVxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHRydWVcblxuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHZhbHVlKVxuICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBpZiAoc2Vlbi5oYXModmFsdWUpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICBzZWVuLmFkZCh2YWx1ZSlcbiAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmICghbG9vcChpdGVtLCBkZXB0aCArIDEpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNQbGFpblJlY29yZCh2YWx1ZSkpIHJldHVybiBmYWxzZVxuICAgICAgICBpZiAoc2Vlbi5oYXModmFsdWUpKSByZXR1cm4gZmFsc2VcbiAgICAgICAgc2Vlbi5hZGQodmFsdWUpXG5cbiAgICAgICAgZm9yIChjb25zdCB2IG9mIE9iamVjdC52YWx1ZXModmFsdWUpKSB7XG4gICAgICAgICAgaWYgKCFsb29wKHYsIGRlcHRoICsgMSkpIHJldHVybiBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb29wKGlucHV0LCAwKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25WYWx1ZVByb2plY3Rpb25TdGF0cyB7XG4gIHJlYWRvbmx5IGRyb3BwZWQ6IG51bWJlclxuICByZWFkb25seSBvdmVyc2l6ZWQ6IG51bWJlclxuICByZWFkb25seSBub25TZXJpYWxpemFibGU6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25WYWx1ZVByb2plY3Rpb24ge1xuICByZWFkb25seSB2YWx1ZTogSnNvblZhbHVlXG4gIHJlYWRvbmx5IHN0YXRzOiBKc29uVmFsdWVQcm9qZWN0aW9uU3RhdHNcbiAgcmVhZG9ubHkgZG93bmdyYWRlPzogRG93bmdyYWRlUmVhc29uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblZhbHVlUHJvamVjdE9wdGlvbnMge1xuICByZWFkb25seSBtYXhEZXB0aD86IG51bWJlclxuICByZWFkb25seSBtYXhPYmplY3RLZXlzPzogbnVtYmVyXG4gIHJlYWRvbmx5IG1heEFycmF5TGVuZ3RoPzogbnVtYmVyXG4gIHJlYWRvbmx5IG1heFN0cmluZ0xlbmd0aD86IG51bWJlclxuICByZWFkb25seSBtYXhKc29uQnl0ZXM/OiBudW1iZXJcbiAgcmVhZG9ubHkgb3ZlcnNpemVkUHJldmlld0J5dGVzPzogbnVtYmVyXG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBSZXF1aXJlZDxKc29uVmFsdWVQcm9qZWN0T3B0aW9ucz4gPSB7XG4gIG1heERlcHRoOiA2LFxuICBtYXhPYmplY3RLZXlzOiAzMixcbiAgbWF4QXJyYXlMZW5ndGg6IDMyLFxuICBtYXhTdHJpbmdMZW5ndGg6IDI1NixcbiAgbWF4SnNvbkJ5dGVzOiA0ICogMTAyNCxcbiAgb3ZlcnNpemVkUHJldmlld0J5dGVzOiAyNTYsXG59XG5cbmNvbnN0IHRydW5jYXRlU3RyaW5nID0gKHZhbHVlOiBzdHJpbmcsIG1heExlbjogbnVtYmVyLCBzdGF0czogTXV0YWJsZVN0YXRzKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlLmxlbmd0aCA8PSBtYXhMZW4pIHJldHVybiB2YWx1ZVxuICBzdGF0cy5vdmVyc2l6ZWQgKz0gMVxuICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgbWF4TGVuKVxufVxuXG50eXBlIE11dGFibGVTdGF0cyA9IHtcbiAgZHJvcHBlZDogbnVtYmVyXG4gIG92ZXJzaXplZDogbnVtYmVyXG4gIG5vblNlcmlhbGl6YWJsZTogbnVtYmVyXG59XG5cbmNvbnN0IG1lcmdlRG93bmdyYWRlID0gKGN1cnJlbnQ6IERvd25ncmFkZVJlYXNvbiB8IHVuZGVmaW5lZCwgbmV4dDogRG93bmdyYWRlUmVhc29uKTogRG93bmdyYWRlUmVhc29uID0+IHtcbiAgaWYgKCFjdXJyZW50KSByZXR1cm4gbmV4dFxuICBpZiAoY3VycmVudCA9PT0gJ25vbl9zZXJpYWxpemFibGUnIHx8IG5leHQgPT09ICdub25fc2VyaWFsaXphYmxlJykgcmV0dXJuICdub25fc2VyaWFsaXphYmxlJ1xuICBpZiAoY3VycmVudCA9PT0gJ292ZXJzaXplZCcgfHwgbmV4dCA9PT0gJ292ZXJzaXplZCcpIHJldHVybiAnb3ZlcnNpemVkJ1xuICByZXR1cm4gJ3Vua25vd24nXG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5SZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG4gIHJldHVybiBwcm90byA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBwcm90byA9PT0gbnVsbFxufVxuXG5jb25zdCBhc051bWJlciA9ICh2YWx1ZTogbnVtYmVyLCBzdGF0czogTXV0YWJsZVN0YXRzKTogSnNvblZhbHVlID0+IHtcbiAgaWYgKE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHJldHVybiB2YWx1ZVxuICBzdGF0cy5ub25TZXJpYWxpemFibGUgKz0gMVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKVxufVxuXG5jb25zdCB0b0pzb25WYWx1ZUludGVybmFsID0gKFxuICBpbnB1dDogdW5rbm93bixcbiAgb3B0aW9uczogUmVxdWlyZWQ8SnNvblZhbHVlUHJvamVjdE9wdGlvbnM+LFxuICBzdGF0czogTXV0YWJsZVN0YXRzLFxuICBzZWVuOiBXZWFrU2V0PG9iamVjdD4sXG4gIGRlcHRoOiBudW1iZXIsXG4pOiBKc29uVmFsdWUgPT4ge1xuICBpZiAoaW5wdXQgPT09IG51bGwpIHJldHVybiBudWxsXG5cbiAgc3dpdGNoICh0eXBlb2YgaW5wdXQpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIHRydW5jYXRlU3RyaW5nKGlucHV0LCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpXG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiBhc051bWJlcihpbnB1dCwgc3RhdHMpXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gaW5wdXRcbiAgICBjYXNlICdiaWdpbnQnOlxuICAgICAgc3RhdHMubm9uU2VyaWFsaXphYmxlICs9IDFcbiAgICAgIHJldHVybiB0cnVuY2F0ZVN0cmluZyhpbnB1dC50b1N0cmluZygpLCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpXG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgICByZXR1cm4gdHJ1bmNhdGVTdHJpbmcoaW5wdXQudG9TdHJpbmcoKSwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKVxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgICByZXR1cm4gJ1tGdW5jdGlvbl0nXG4gICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgIHN0YXRzLmRyb3BwZWQgKz0gMVxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIG9iamVjdFxuICBpZiAoZGVwdGggPj0gb3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHN0YXRzLm92ZXJzaXplZCArPSAxXG4gICAgcmV0dXJuICdbVHJ1bmNhdGVkXSdcbiAgfVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gaW5wdXQudG9JU09TdHJpbmcoKVxuICB9XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICBzdGF0cy5ub25TZXJpYWxpemFibGUgKz0gMVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0cnVuY2F0ZVN0cmluZyhpbnB1dC5uYW1lLCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpLFxuICAgICAgbWVzc2FnZTogdHJ1bmNhdGVTdHJpbmcoaW5wdXQubWVzc2FnZSwgb3B0aW9ucy5tYXhTdHJpbmdMZW5ndGgsIHN0YXRzKSxcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0Jykge1xuICAgIGlmIChzZWVuLmhhcyhpbnB1dCkpIHtcbiAgICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nXG4gICAgfVxuICAgIHNlZW4uYWRkKGlucHV0KVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgY29uc3Qgb3V0OiBBcnJheTxKc29uVmFsdWU+ID0gW11cbiAgICBjb25zdCBsaW1pdCA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgb3B0aW9ucy5tYXhBcnJheUxlbmd0aClcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcbiAgICAgIG91dC5wdXNoKHRvSnNvblZhbHVlSW50ZXJuYWwoaW5wdXRbaV0sIG9wdGlvbnMsIHN0YXRzLCBzZWVuLCBkZXB0aCArIDEpKVxuICAgIH1cbiAgICBpZiAoaW5wdXQubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIHN0YXRzLm92ZXJzaXplZCArPSAxXG4gICAgICBvdXQucHVzaChgWy4uLiR7aW5wdXQubGVuZ3RoIC0gbGltaXR9IG1vcmVdYClcbiAgICB9XG4gICAgcmV0dXJuIG91dFxuICB9XG5cbiAgaWYgKCFpc1BsYWluUmVjb3JkKGlucHV0KSkge1xuICAgIHN0YXRzLm5vblNlcmlhbGl6YWJsZSArPSAxXG4gICAgcmV0dXJuIHRydW5jYXRlU3RyaW5nKFN0cmluZyhpbnB1dCksIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoLCBzdGF0cylcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhpbnB1dClcbiAgY29uc3QgbGltaXQgPSBNYXRoLm1pbihlbnRyaWVzLmxlbmd0aCwgb3B0aW9ucy5tYXhPYmplY3RLZXlzKVxuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT4gPSB7fVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuICAgIGNvbnN0IFtyYXdLZXksIHJhd1ZhbHVlXSA9IGVudHJpZXNbaV0hXG4gICAgY29uc3Qga2V5ID0gdHJ1bmNhdGVTdHJpbmcocmF3S2V5LCBvcHRpb25zLm1heFN0cmluZ0xlbmd0aCwgc3RhdHMpXG4gICAgaWYgKHJhd1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0YXRzLmRyb3BwZWQgKz0gMVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgb3V0W2tleV0gPSB0b0pzb25WYWx1ZUludGVybmFsKHJhd1ZhbHVlLCBvcHRpb25zLCBzdGF0cywgc2VlbiwgZGVwdGggKyAxKVxuICB9XG5cbiAgaWYgKGVudHJpZXMubGVuZ3RoID4gbGltaXQpIHtcbiAgICBzdGF0cy5vdmVyc2l6ZWQgKz0gMVxuICAgIG91dC5fX3RydW5jYXRlZEtleXMgPSBlbnRyaWVzLmxlbmd0aCAtIGxpbWl0XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydCBjb25zdCBwcm9qZWN0SnNvblZhbHVlID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogSnNvblZhbHVlUHJvamVjdE9wdGlvbnMpOiBKc29uVmFsdWVQcm9qZWN0aW9uID0+IHtcbiAgY29uc3QgcmVzb2x2ZWQ6IFJlcXVpcmVkPEpzb25WYWx1ZVByb2plY3RPcHRpb25zPiA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLihvcHRpb25zID8/IHt9KSB9XG4gIGNvbnN0IHN0YXRzOiBNdXRhYmxlU3RhdHMgPSB7IGRyb3BwZWQ6IDAsIG92ZXJzaXplZDogMCwgbm9uU2VyaWFsaXphYmxlOiAwIH1cbiAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKVxuXG4gIGxldCBkb3duZ3JhZGU6IERvd25ncmFkZVJlYXNvbiB8IHVuZGVmaW5lZFxuICBjb25zdCB2YWx1ZSA9IHRvSnNvblZhbHVlSW50ZXJuYWwoaW5wdXQsIHJlc29sdmVkLCBzdGF0cywgc2VlbiwgMClcblxuICBpZiAoc3RhdHMubm9uU2VyaWFsaXphYmxlID4gMCkge1xuICAgIGRvd25ncmFkZSA9IG1lcmdlRG93bmdyYWRlKGRvd25ncmFkZSwgJ25vbl9zZXJpYWxpemFibGUnKVxuICB9XG4gIGlmIChzdGF0cy5vdmVyc2l6ZWQgPiAwKSB7XG4gICAgZG93bmdyYWRlID0gbWVyZ2VEb3duZ3JhZGUoZG93bmdyYWRlLCAnb3ZlcnNpemVkJylcbiAgfVxuXG4gIC8vIEhhcmQgZ2F0ZTogZW5zdXJlIEpTT04uc3RyaW5naWZ5IG5ldmVyIHRocm93cyBhbmQgcmVzcGVjdCB0aGUgbWF4IGJ5dGUgYnVkZ2V0LlxuICB0cnkge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcbiAgICBpZiAoanNvbi5sZW5ndGggPiByZXNvbHZlZC5tYXhKc29uQnl0ZXMpIHtcbiAgICAgIGRvd25ncmFkZSA9IG1lcmdlRG93bmdyYWRlKGRvd25ncmFkZSwgJ292ZXJzaXplZCcpXG4gICAgICBjb25zdCBwcmV2aWV3ID0ganNvbi5zbGljZSgwLCBNYXRoLm1pbihyZXNvbHZlZC5vdmVyc2l6ZWRQcmV2aWV3Qnl0ZXMsIHJlc29sdmVkLm1heEpzb25CeXRlcykpXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIF90YWc6ICdvdmVyc2l6ZWQnLFxuICAgICAgICAgIGJ5dGVzOiBqc29uLmxlbmd0aCxcbiAgICAgICAgICBwcmV2aWV3LFxuICAgICAgICB9LFxuICAgICAgICBzdGF0czoge1xuICAgICAgICAgIGRyb3BwZWQ6IHN0YXRzLmRyb3BwZWQsXG4gICAgICAgICAgb3ZlcnNpemVkOiBzdGF0cy5vdmVyc2l6ZWQgKyAxLFxuICAgICAgICAgIG5vblNlcmlhbGl6YWJsZTogc3RhdHMubm9uU2VyaWFsaXphYmxlLFxuICAgICAgICB9LFxuICAgICAgICBkb3duZ3JhZGUsXG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICBkb3duZ3JhZGUgPSBtZXJnZURvd25ncmFkZShkb3duZ3JhZGUsICdub25fc2VyaWFsaXphYmxlJylcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6ICdbVW5zZXJpYWxpemFibGVdJyxcbiAgICAgIHN0YXRzOiB7XG4gICAgICAgIGRyb3BwZWQ6IHN0YXRzLmRyb3BwZWQsXG4gICAgICAgIG92ZXJzaXplZDogc3RhdHMub3ZlcnNpemVkLFxuICAgICAgICBub25TZXJpYWxpemFibGU6IHN0YXRzLm5vblNlcmlhbGl6YWJsZSArIDEsXG4gICAgICB9LFxuICAgICAgZG93bmdyYWRlLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgc3RhdHM6IHtcbiAgICAgIGRyb3BwZWQ6IHN0YXRzLmRyb3BwZWQsXG4gICAgICBvdmVyc2l6ZWQ6IHN0YXRzLm92ZXJzaXplZCxcbiAgICAgIG5vblNlcmlhbGl6YWJsZTogc3RhdHMubm9uU2VyaWFsaXphYmxlLFxuICAgIH0sXG4gICAgZG93bmdyYWRlLFxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBSUEsU0FBUyxTQUFTLFFBQVEsZ0JBQWdCO0FBT25DLElBQU0sZ0JBQWdCLFNBQVMsV0FBK0IsTUFBUztBQWtDdkUsSUFBTSx3QkFBd0IsQ0FBQyxZQU1aO0FBQUEsRUFDeEIsTUFBTTtBQUFBLEVBQ04sU0FBUyxPQUFPO0FBQUEsRUFDaEIsTUFBTSxPQUFPO0FBQUEsRUFDYixNQUFNLE9BQU87QUFBQSxFQUNiLFFBQVEsT0FBTztBQUFBLEVBQ2YsU0FBUyxPQUFPO0FBQ2xCO0FBcUVPLElBQU0sd0JBQU4sY0FBb0MsUUFBUSxJQUFJLDBCQUEwQixFQUcvRSxFQUFFO0FBQUM7QUFRRSxJQUFNLG9CQUFvQixDQUFDLFVBQXVDO0FBQ3ZFLFNBQU8sQ0FBVSxPQUNmLE1BQU07QUFBQSxJQUNKLENBQUMsS0FBSyxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksUUFBUSxJQUFJLENBQVE7QUFBQSxJQUM3QyxHQUFHO0FBQUEsRUFDTDtBQUNKO0FBT08sSUFBTSxvQkFBb0IsQ0FBVSxJQUF1QixVQUFtRDtBQUNuSCxTQUFPLE9BQU8sSUFBSSxhQUFhO0FBQzdCLFVBQU0sV0FBVyxPQUFPLFNBQVMsSUFBSSxhQUFhO0FBQ2xELFVBQU0sYUFBYyxHQUFHLE1BQWM7QUFDckMsVUFBTSxTQUFTLE9BQU8sZUFBZSxZQUFZLFdBQVcsU0FBUyxJQUFJLGFBQWMsWUFBWSxHQUFHO0FBRXRHLFVBQU0sU0FBNEI7QUFBQSxNQUNoQyxHQUFHO0FBQUEsTUFDSCxNQUFNO0FBQUEsUUFDSixHQUFJLEdBQUcsUUFBUSxDQUFDO0FBQUEsUUFDaEI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUVBLFVBQU0sVUFBVSxNQUFNLFNBQVMsa0JBQWtCLEtBQUssRUFBRSxNQUFNLElBQUksT0FBTztBQUl6RSxXQUFPLE9BQU8sT0FBTyxRQUFRLGVBQWUsTUFBTSxFQUFFLE9B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
|