solvoid 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +73 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +281 -0
- package/dist/client.js.map +1 -0
- package/dist/crypto/poseidon.d.ts +124 -0
- package/dist/crypto/poseidon.d.ts.map +1 -0
- package/dist/crypto/poseidon.js +293 -0
- package/dist/crypto/poseidon.js.map +1 -0
- package/dist/events/bus.d.ts +44 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +83 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/{sdk/index.d.ts → index.d.ts} +2 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/{sdk/index.js → index.js} +21 -11
- package/dist/index.js.map +1 -0
- package/dist/integrity.d.ts +371 -0
- package/dist/integrity.d.ts.map +1 -0
- package/dist/integrity.js +260 -0
- package/dist/integrity.js.map +1 -0
- package/dist/network/shadow-rpc.d.ts +36 -0
- package/dist/network/shadow-rpc.d.ts.map +1 -0
- package/dist/network/shadow-rpc.js +163 -0
- package/dist/network/shadow-rpc.js.map +1 -0
- package/dist/{sdk/passport → passport}/manager.d.ts +9 -18
- package/dist/passport/manager.d.ts.map +1 -0
- package/dist/passport/manager.js +148 -0
- package/dist/passport/manager.js.map +1 -0
- package/dist/pipeline.d.ts +25 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +127 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/privacy/relayer.d.ts.map +1 -0
- package/dist/privacy/relayer.js.map +1 -0
- package/dist/privacy/shield.d.ts +27 -0
- package/dist/privacy/shield.d.ts.map +1 -0
- package/dist/privacy/shield.js +289 -0
- package/dist/privacy/shield.js.map +1 -0
- package/dist/{sdk/privacy-engine.d.ts → privacy-engine.d.ts} +2 -1
- package/dist/privacy-engine.d.ts.map +1 -0
- package/dist/{sdk/privacy-engine.js → privacy-engine.js} +24 -15
- package/dist/privacy-engine.js.map +1 -0
- package/dist/registry/idl-fetcher.d.ts +10 -0
- package/dist/registry/idl-fetcher.d.ts.map +1 -0
- package/dist/{sdk/registry → registry}/idl-fetcher.js +19 -16
- package/dist/registry/idl-fetcher.js.map +1 -0
- package/dist/registry/programs.d.ts.map +1 -0
- package/dist/registry/programs.js.map +1 -0
- package/dist/rescue/analyzer.d.ts +20 -0
- package/dist/rescue/analyzer.d.ts.map +1 -0
- package/dist/rescue/analyzer.js +137 -0
- package/dist/rescue/analyzer.js.map +1 -0
- package/dist/rescue/builder.d.ts +23 -0
- package/dist/rescue/builder.d.ts.map +1 -0
- package/dist/rescue/builder.js +164 -0
- package/dist/rescue/builder.js.map +1 -0
- package/dist/security/key-rotation.d.ts +153 -0
- package/dist/security/key-rotation.d.ts.map +1 -0
- package/dist/security/key-rotation.js +354 -0
- package/dist/security/key-rotation.js.map +1 -0
- package/dist/{sdk/semantics → semantics}/analyzer.d.ts.map +1 -1
- package/dist/{sdk/semantics → semantics}/analyzer.js.map +1 -1
- package/dist/semantics/decoder.d.ts.map +1 -0
- package/dist/semantics/decoder.js.map +1 -0
- package/dist/{sdk/semantics → semantics}/graph.d.ts.map +1 -1
- package/dist/{sdk/semantics → semantics}/graph.js.map +1 -1
- package/dist/semantics/idl-registry.d.ts +8 -0
- package/dist/semantics/idl-registry.d.ts.map +1 -0
- package/dist/{sdk/semantics → semantics}/idl-registry.js +23 -7
- package/dist/semantics/idl-registry.js.map +1 -0
- package/dist/semantics/types.d.ts +10 -0
- package/dist/semantics/types.d.ts.map +1 -0
- package/dist/{sdk → semantics}/types.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/address.d.ts +10 -0
- package/dist/utils/address.d.ts.map +1 -0
- package/dist/utils/address.js +45 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +38 -76
- package/LICENSE +0 -21
- package/README.md +0 -123
- package/SECURITY.md +0 -174
- package/bin/solvoid-scan +0 -2
- package/dist/cli/privacy-scan.d.ts +0 -11
- package/dist/cli/privacy-scan.d.ts.map +0 -1
- package/dist/cli/privacy-scan.js +0 -112
- package/dist/cli/privacy-scan.js.map +0 -1
- package/dist/cli/solvoid-scan.d.ts +0 -13
- package/dist/cli/solvoid-scan.d.ts.map +0 -1
- package/dist/cli/solvoid-scan.js +0 -174
- package/dist/cli/solvoid-scan.js.map +0 -1
- package/dist/cli/test-forensics.d.ts +0 -2
- package/dist/cli/test-forensics.d.ts.map +0 -1
- package/dist/cli/test-forensics.js +0 -90
- package/dist/cli/test-forensics.js.map +0 -1
- package/dist/cli/test-scenarios.d.ts +0 -2
- package/dist/cli/test-scenarios.d.ts.map +0 -1
- package/dist/cli/test-scenarios.js +0 -96
- package/dist/cli/test-scenarios.js.map +0 -1
- package/dist/examples/enterprise-demo.js +0 -65
- package/dist/sdk/client.d.ts +0 -77
- package/dist/sdk/client.d.ts.map +0 -1
- package/dist/sdk/client.js +0 -180
- package/dist/sdk/client.js.map +0 -1
- package/dist/sdk/compliance/identity.d.ts +0 -34
- package/dist/sdk/compliance/identity.d.ts.map +0 -1
- package/dist/sdk/compliance/identity.js +0 -55
- package/dist/sdk/compliance/identity.js.map +0 -1
- package/dist/sdk/compliance/threat-model.d.ts +0 -14
- package/dist/sdk/compliance/threat-model.d.ts.map +0 -1
- package/dist/sdk/compliance/threat-model.js +0 -101
- package/dist/sdk/compliance/threat-model.js.map +0 -1
- package/dist/sdk/forensics/mev.js +0 -50
- package/dist/sdk/forensics/order-flow.d.ts +0 -20
- package/dist/sdk/forensics/order-flow.d.ts.map +0 -1
- package/dist/sdk/forensics/order-flow.js +0 -104
- package/dist/sdk/forensics/order-flow.js.map +0 -1
- package/dist/sdk/forensics/simulation.d.ts +0 -14
- package/dist/sdk/forensics/simulation.d.ts.map +0 -1
- package/dist/sdk/forensics/simulation.js +0 -45
- package/dist/sdk/forensics/simulation.js.map +0 -1
- package/dist/sdk/index.d.ts.map +0 -1
- package/dist/sdk/index.js.map +0 -1
- package/dist/sdk/network/shadow-rpc.d.ts +0 -18
- package/dist/sdk/network/shadow-rpc.d.ts.map +0 -1
- package/dist/sdk/network/shadow-rpc.js +0 -32
- package/dist/sdk/network/shadow-rpc.js.map +0 -1
- package/dist/sdk/obfuscator.d.ts +0 -36
- package/dist/sdk/obfuscator.d.ts.map +0 -1
- package/dist/sdk/obfuscator.js +0 -77
- package/dist/sdk/obfuscator.js.map +0 -1
- package/dist/sdk/passport/manager.d.ts.map +0 -1
- package/dist/sdk/passport/manager.js +0 -107
- package/dist/sdk/passport/manager.js.map +0 -1
- package/dist/sdk/pipeline.d.ts +0 -34
- package/dist/sdk/pipeline.d.ts.map +0 -1
- package/dist/sdk/pipeline.js +0 -81
- package/dist/sdk/pipeline.js.map +0 -1
- package/dist/sdk/privacy/confidential-transfer.d.ts +0 -81
- package/dist/sdk/privacy/confidential-transfer.d.ts.map +0 -1
- package/dist/sdk/privacy/confidential-transfer.js +0 -158
- package/dist/sdk/privacy/confidential-transfer.js.map +0 -1
- package/dist/sdk/privacy/history.d.ts +0 -11
- package/dist/sdk/privacy/history.d.ts.map +0 -1
- package/dist/sdk/privacy/history.js +0 -110
- package/dist/sdk/privacy/history.js.map +0 -1
- package/dist/sdk/privacy/light-protocol.d.ts +0 -42
- package/dist/sdk/privacy/light-protocol.d.ts.map +0 -1
- package/dist/sdk/privacy/light-protocol.js +0 -83
- package/dist/sdk/privacy/light-protocol.js.map +0 -1
- package/dist/sdk/privacy/relayer.d.ts.map +0 -1
- package/dist/sdk/privacy/relayer.js.map +0 -1
- package/dist/sdk/privacy/safe-obfuscator.d.ts +0 -38
- package/dist/sdk/privacy/safe-obfuscator.d.ts.map +0 -1
- package/dist/sdk/privacy/safe-obfuscator.js +0 -101
- package/dist/sdk/privacy/safe-obfuscator.js.map +0 -1
- package/dist/sdk/privacy/shield.d.ts +0 -34
- package/dist/sdk/privacy/shield.d.ts.map +0 -1
- package/dist/sdk/privacy/shield.js +0 -174
- package/dist/sdk/privacy/shield.js.map +0 -1
- package/dist/sdk/privacy/zk.js +0 -43
- package/dist/sdk/privacy-engine.d.ts.map +0 -1
- package/dist/sdk/privacy-engine.js.map +0 -1
- package/dist/sdk/registry/idl-fetcher.d.ts +0 -17
- package/dist/sdk/registry/idl-fetcher.d.ts.map +0 -1
- package/dist/sdk/registry/idl-fetcher.js.map +0 -1
- package/dist/sdk/registry/programs.d.ts.map +0 -1
- package/dist/sdk/registry/programs.js.map +0 -1
- package/dist/sdk/rescue/analyzer.d.ts +0 -22
- package/dist/sdk/rescue/analyzer.d.ts.map +0 -1
- package/dist/sdk/rescue/analyzer.js +0 -46
- package/dist/sdk/rescue/analyzer.js.map +0 -1
- package/dist/sdk/rescue/builder.d.ts +0 -16
- package/dist/sdk/rescue/builder.d.ts.map +0 -1
- package/dist/sdk/rescue/builder.js +0 -33
- package/dist/sdk/rescue/builder.js.map +0 -1
- package/dist/sdk/semantics/decoder.d.ts.map +0 -1
- package/dist/sdk/semantics/decoder.js.map +0 -1
- package/dist/sdk/semantics/idl-registry.d.ts +0 -7
- package/dist/sdk/semantics/idl-registry.d.ts.map +0 -1
- package/dist/sdk/semantics/idl-registry.js.map +0 -1
- package/dist/sdk/semantics/types.d.ts +0 -44
- package/dist/sdk/semantics/types.d.ts.map +0 -1
- package/dist/sdk/semantics/types.js.map +0 -1
- package/dist/sdk/simulator.d.ts +0 -15
- package/dist/sdk/simulator.d.ts.map +0 -1
- package/dist/sdk/simulator.js +0 -133
- package/dist/sdk/simulator.js.map +0 -1
- package/dist/sdk/types.d.ts +0 -53
- package/dist/sdk/types.d.ts.map +0 -1
- package/dist/sdk/utils/config.d.ts.map +0 -1
- package/dist/sdk/utils/config.js.map +0 -1
- package/dist/sdk/utils/logger.d.ts.map +0 -1
- package/dist/sdk/utils/logger.js.map +0 -1
- package/dist/tests/unit/idl-registry.test.d.ts +0 -2
- package/dist/tests/unit/idl-registry.test.d.ts.map +0 -1
- package/dist/tests/unit/idl-registry.test.js +0 -35
- package/dist/tests/unit/idl-registry.test.js.map +0 -1
- package/dist/tools/exploit_demonstration.js +0 -99
- package/dist/tools/gen-tx.js +0 -29
- package/dist/tools/get-recent-tx.js +0 -18
- /package/dist/{sdk/privacy → privacy}/relayer.d.ts +0 -0
- /package/dist/{sdk/privacy → privacy}/relayer.js +0 -0
- /package/dist/{sdk/registry → registry}/programs.d.ts +0 -0
- /package/dist/{sdk/registry → registry}/programs.js +0 -0
- /package/dist/{sdk/semantics → semantics}/analyzer.d.ts +0 -0
- /package/dist/{sdk/semantics → semantics}/analyzer.js +0 -0
- /package/dist/{sdk/semantics → semantics}/decoder.d.ts +0 -0
- /package/dist/{sdk/semantics → semantics}/decoder.js +0 -0
- /package/dist/{sdk/semantics → semantics}/graph.d.ts +0 -0
- /package/dist/{sdk/semantics → semantics}/graph.js +0 -0
- /package/dist/{sdk/semantics → semantics}/types.js +0 -0
- /package/dist/{sdk/types.js → types.js} +0 -0
- /package/dist/{sdk/utils → utils}/config.d.ts +0 -0
- /package/dist/{sdk/utils → utils}/config.js +0 -0
- /package/dist/{sdk/utils → utils}/logger.d.ts +0 -0
- /package/dist/{sdk/utils → utils}/logger.js +0 -0
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
2
|
+
import { Unit } from './integrity';
|
|
3
|
+
import { ScanResult } from './pipeline';
|
|
4
|
+
export interface SolVoidConfig {
|
|
5
|
+
readonly rpcUrl: string;
|
|
6
|
+
readonly programId: string;
|
|
7
|
+
readonly relayerUrl?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface WalletAdapter {
|
|
10
|
+
readonly publicKey: PublicKey | null;
|
|
11
|
+
readonly signTransaction: <T extends Transaction | VersionedTransaction>(tx: T) => Promise<T>;
|
|
12
|
+
readonly signAllTransactions: <T extends Transaction | VersionedTransaction>(txs: T[]) => Promise<T[]>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* SolVoidClient (Browser-safe version)
|
|
16
|
+
*/
|
|
17
|
+
export declare class SolVoidClient {
|
|
18
|
+
private readonly pipeline;
|
|
19
|
+
private readonly passport;
|
|
20
|
+
private readonly connection;
|
|
21
|
+
private readonly protocolShield;
|
|
22
|
+
constructor(config: SolVoidConfig, wallet: WalletAdapter);
|
|
23
|
+
protect(address: PublicKey): Promise<ScanResult[]>;
|
|
24
|
+
getPassport(address: string): Promise<{
|
|
25
|
+
walletAddress: string;
|
|
26
|
+
overallScore: number;
|
|
27
|
+
scoreHistory: {
|
|
28
|
+
timestamp: number;
|
|
29
|
+
score: number;
|
|
30
|
+
}[];
|
|
31
|
+
badges: {
|
|
32
|
+
name: string;
|
|
33
|
+
icon: string;
|
|
34
|
+
description: string;
|
|
35
|
+
dateEarned: number;
|
|
36
|
+
}[];
|
|
37
|
+
recommendations: string[];
|
|
38
|
+
}>;
|
|
39
|
+
rescue(address: PublicKey): Promise<{
|
|
40
|
+
status: string;
|
|
41
|
+
message: string;
|
|
42
|
+
leakCount?: undefined;
|
|
43
|
+
currentScore?: undefined;
|
|
44
|
+
potentialScore?: undefined;
|
|
45
|
+
} | {
|
|
46
|
+
status: "analysis_complete";
|
|
47
|
+
leakCount: number;
|
|
48
|
+
currentScore: number;
|
|
49
|
+
potentialScore: number;
|
|
50
|
+
message: string;
|
|
51
|
+
}>;
|
|
52
|
+
shield(amountLamports: number): Promise<{
|
|
53
|
+
status: "commitment_ready";
|
|
54
|
+
commitmentData: {
|
|
55
|
+
secret: string;
|
|
56
|
+
nullifier: string;
|
|
57
|
+
commitment: string;
|
|
58
|
+
nullifierHash: string;
|
|
59
|
+
commitmentHex: string;
|
|
60
|
+
};
|
|
61
|
+
message: string;
|
|
62
|
+
units: Unit;
|
|
63
|
+
}>;
|
|
64
|
+
prepareWithdrawal(secretHex: string, nullifierHex: string, amount: bigint, recipient: PublicKey, allCommitmentsHex: string[], wasmPath: string, zkeyPath: string): Promise<{
|
|
65
|
+
status: "proof_ready";
|
|
66
|
+
proof: any;
|
|
67
|
+
nullifierHash: string;
|
|
68
|
+
root: string;
|
|
69
|
+
recipient: string;
|
|
70
|
+
message: string;
|
|
71
|
+
}>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAO3F,OAAO,EAGH,IAAI,EAIP,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9F,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1G;AAED;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAEnC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa;IA4I3C,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBlD,WAAW,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;;IAU3B,MAAM,CAAC,OAAO,EAAE,SAAS;;;;;;;;;;;;;IA0BzB,MAAM,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;;IAoB7B,iBAAiB,CAC1B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;;;;;;;;CAwFvB"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SolVoidClient = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const buffer_1 = require("buffer");
|
|
6
|
+
const shield_1 = require("./privacy/shield");
|
|
7
|
+
const pipeline_1 = require("./pipeline");
|
|
8
|
+
const manager_1 = require("./passport/manager");
|
|
9
|
+
const bus_1 = require("./events/bus");
|
|
10
|
+
const poseidon_1 = require("./crypto/poseidon");
|
|
11
|
+
const integrity_1 = require("./integrity");
|
|
12
|
+
/**
|
|
13
|
+
* SolVoidClient (Browser-safe version)
|
|
14
|
+
*/
|
|
15
|
+
class SolVoidClient {
|
|
16
|
+
constructor(config, wallet) {
|
|
17
|
+
this.connection = new web3_js_1.Connection(config.rpcUrl, 'confirmed');
|
|
18
|
+
this.passport = new manager_1.PassportManager();
|
|
19
|
+
// Optimized Anchor 0.30 IDL
|
|
20
|
+
const idlUnvalidated = {
|
|
21
|
+
version: "0.1.0",
|
|
22
|
+
name: "solvoid",
|
|
23
|
+
instructions: [
|
|
24
|
+
{
|
|
25
|
+
name: "initialize",
|
|
26
|
+
accounts: [
|
|
27
|
+
{ name: "state", writable: true, signer: false },
|
|
28
|
+
{ name: "authority", writable: true, signer: true },
|
|
29
|
+
{ name: "systemProgram", writable: false, signer: false }
|
|
30
|
+
],
|
|
31
|
+
args: [{ name: "authority", type: "publicKey" }]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "initializeVerifier",
|
|
35
|
+
accounts: [
|
|
36
|
+
{ name: "verifierState", writable: true, signer: false },
|
|
37
|
+
{ name: "state", writable: false, signer: false },
|
|
38
|
+
{ name: "authority", writable: true, signer: true },
|
|
39
|
+
{ name: "systemProgram", writable: false, signer: false }
|
|
40
|
+
],
|
|
41
|
+
args: [{ name: "vk", type: { "defined": "VerificationKeyData" } }]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "initializeRootHistory",
|
|
45
|
+
accounts: [
|
|
46
|
+
{ name: "rootHistory", writable: true, signer: false },
|
|
47
|
+
{ name: "authority", writable: true, signer: true },
|
|
48
|
+
{ name: "systemProgram", writable: false, signer: false }
|
|
49
|
+
],
|
|
50
|
+
args: []
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "initializeTreasury",
|
|
54
|
+
accounts: [
|
|
55
|
+
{ name: "treasury", writable: true, signer: false },
|
|
56
|
+
{ name: "authority", writable: true, signer: true },
|
|
57
|
+
{ name: "systemProgram", writable: false, signer: false }
|
|
58
|
+
],
|
|
59
|
+
args: []
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: "initializeEconomics",
|
|
63
|
+
accounts: [
|
|
64
|
+
{ name: "economicState", writable: true, signer: false },
|
|
65
|
+
{ name: "authority", writable: true, signer: true },
|
|
66
|
+
{ name: "systemProgram", writable: false, signer: false }
|
|
67
|
+
],
|
|
68
|
+
args: []
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "deposit",
|
|
72
|
+
accounts: [
|
|
73
|
+
{ name: "state", writable: true, signer: false },
|
|
74
|
+
{ name: "rootHistory", writable: true, signer: false },
|
|
75
|
+
{ name: "depositor", writable: true, signer: true },
|
|
76
|
+
{ name: "vault", writable: true, signer: false },
|
|
77
|
+
{ name: "systemProgram", writable: false, signer: false }
|
|
78
|
+
],
|
|
79
|
+
args: [
|
|
80
|
+
{ name: "commitment", type: { array: ["u8", 32] } },
|
|
81
|
+
{ name: "amount", type: "u64" }
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: "withdraw",
|
|
86
|
+
accounts: [
|
|
87
|
+
{ name: "state", writable: true, signer: false },
|
|
88
|
+
{ name: "vault", writable: true, signer: false },
|
|
89
|
+
{ name: "recipient", writable: true, signer: false },
|
|
90
|
+
{ name: "relayer", writable: true, signer: true },
|
|
91
|
+
{ name: "protocolFeeAccumulator", writable: true, signer: false },
|
|
92
|
+
{ name: "verifierState", writable: false, signer: false },
|
|
93
|
+
{ name: "rootHistory", writable: true, signer: false },
|
|
94
|
+
{ name: "nullifierAccount", writable: true, signer: false },
|
|
95
|
+
{ name: "economicState", writable: true, signer: false },
|
|
96
|
+
{ name: "systemProgram", writable: false, signer: false }
|
|
97
|
+
],
|
|
98
|
+
args: [
|
|
99
|
+
{ name: "proof", type: { "defined": "ProofData" } },
|
|
100
|
+
{ name: "root", type: { array: ["u8", 32] } },
|
|
101
|
+
{ name: "nullifierHash", type: { array: ["u8", 32] } },
|
|
102
|
+
{ name: "recipient", type: "publicKey" },
|
|
103
|
+
{ name: "relayer", type: "publicKey" },
|
|
104
|
+
{ name: "fee", type: "u64" },
|
|
105
|
+
{ name: "amount", type: "u64" }
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
accounts: [],
|
|
110
|
+
types: [
|
|
111
|
+
{
|
|
112
|
+
name: "VerificationKeyData",
|
|
113
|
+
type: {
|
|
114
|
+
kind: "struct",
|
|
115
|
+
fields: [
|
|
116
|
+
{ name: "alpha", type: { array: ["u8", 32] } },
|
|
117
|
+
{ name: "beta", type: { array: ["u8", 64] } },
|
|
118
|
+
{ name: "gamma", type: { array: ["u8", 64] } },
|
|
119
|
+
{ name: "delta", type: { array: ["u8", 64] } },
|
|
120
|
+
{ name: "ic", type: { vec: { array: ["u8", 32] } } }
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "ProofData",
|
|
126
|
+
type: {
|
|
127
|
+
kind: "struct",
|
|
128
|
+
fields: [
|
|
129
|
+
{ name: "a", type: { array: ["u8", 32] } },
|
|
130
|
+
{ name: "b", type: { array: ["u8", 64] } },
|
|
131
|
+
{ name: "c", type: { array: ["u8", 32] } }
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
events: [],
|
|
137
|
+
errors: [],
|
|
138
|
+
metadata: {
|
|
139
|
+
address: config.programId
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const enforcedIdl = (0, integrity_1.enforce)(integrity_1.IdlSchema, idlUnvalidated, {
|
|
143
|
+
origin: integrity_1.DataOrigin.INTERNAL_LOGIC,
|
|
144
|
+
trust: integrity_1.DataTrust.TRUSTED,
|
|
145
|
+
createdAt: Date.now(),
|
|
146
|
+
owner: 'System'
|
|
147
|
+
});
|
|
148
|
+
// Ensure we pass the program ID as a string clearly
|
|
149
|
+
this.protocolShield = new shield_1.PrivacyShield(this.connection, enforcedIdl.value, wallet, config.programId);
|
|
150
|
+
this.pipeline = new pipeline_1.PrivacyPipeline(this.connection, this.protocolShield);
|
|
151
|
+
}
|
|
152
|
+
async protect(address) {
|
|
153
|
+
(0, integrity_1.enforce)(integrity_1.PublicKeySchema, address.toBase58(), {
|
|
154
|
+
origin: integrity_1.DataOrigin.INTERNAL_LOGIC,
|
|
155
|
+
trust: integrity_1.DataTrust.TRUSTED,
|
|
156
|
+
createdAt: Date.now(),
|
|
157
|
+
owner: 'Client'
|
|
158
|
+
});
|
|
159
|
+
const results = await this.pipeline.processAddress(address);
|
|
160
|
+
if (results.length > 0) {
|
|
161
|
+
const avgScore = results.reduce((acc, r) => acc + r.privacyScore, 0) / results.length;
|
|
162
|
+
this.passport.updateScore(address.toBase58(), Math.round(avgScore));
|
|
163
|
+
}
|
|
164
|
+
return results;
|
|
165
|
+
}
|
|
166
|
+
async getPassport(address) {
|
|
167
|
+
(0, integrity_1.enforce)(integrity_1.PublicKeySchema, address, {
|
|
168
|
+
origin: integrity_1.DataOrigin.UI_INPUT,
|
|
169
|
+
trust: integrity_1.DataTrust.UNTRUSTED,
|
|
170
|
+
createdAt: Date.now(),
|
|
171
|
+
owner: 'User'
|
|
172
|
+
});
|
|
173
|
+
return this.passport.getPassport(address);
|
|
174
|
+
}
|
|
175
|
+
async rescue(address) {
|
|
176
|
+
bus_1.EventBus.info('Initiating rescue analysis...', { address: address.toBase58() });
|
|
177
|
+
const results = await this.protect(address);
|
|
178
|
+
const allLeaks = results.flatMap((r) => r.leaks);
|
|
179
|
+
if (allLeaks.length === 0) {
|
|
180
|
+
bus_1.EventBus.info('No leaked assets found. Wallet is secure.');
|
|
181
|
+
return { status: 'secure', message: 'No leaked assets found.' };
|
|
182
|
+
}
|
|
183
|
+
bus_1.EventBus.info(`Found ${allLeaks.length} privacy leaks requiring remediation.`);
|
|
184
|
+
const avgScore = results.length > 0
|
|
185
|
+
? Math.round(results.reduce((acc, r) => acc + r.privacyScore, 0) / results.length)
|
|
186
|
+
: 100;
|
|
187
|
+
return {
|
|
188
|
+
status: 'analysis_complete',
|
|
189
|
+
leakCount: allLeaks.length,
|
|
190
|
+
currentScore: avgScore,
|
|
191
|
+
potentialScore: Math.min(95, avgScore + 40),
|
|
192
|
+
message: 'Rescue analysis complete. Use relayer service for transaction broadcast.'
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
async shield(amountLamports) {
|
|
196
|
+
if (!Number.isInteger(amountLamports) || amountLamports <= 0) {
|
|
197
|
+
throw new Error(`Invalid amount: ${amountLamports}. Must be positive integer (Lamports).`);
|
|
198
|
+
}
|
|
199
|
+
bus_1.EventBus.info('Generating commitment for shielding operation...');
|
|
200
|
+
const commitmentData = await this.protocolShield.generateCommitment();
|
|
201
|
+
bus_1.EventBus.emit('COMMITMENT_CREATED', 'Commitment generated', {
|
|
202
|
+
commitment: commitmentData.commitmentHex
|
|
203
|
+
});
|
|
204
|
+
return {
|
|
205
|
+
status: 'commitment_ready',
|
|
206
|
+
commitmentData,
|
|
207
|
+
message: 'Commitment generated. Sign and broadcast via connected wallet.',
|
|
208
|
+
units: integrity_1.Unit.LAMPORT
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
async prepareWithdrawal(secretHex, nullifierHex, amount, recipient, allCommitmentsHex, wasmPath, zkeyPath) {
|
|
212
|
+
bus_1.EventBus.info('Preparing withdrawal proof...');
|
|
213
|
+
if (!/^[0-9a-fA-F]{64}$/.test(secretHex))
|
|
214
|
+
throw new Error("Invalid secret format");
|
|
215
|
+
if (!/^[0-9a-fA-F]{64}$/.test(nullifierHex))
|
|
216
|
+
throw new Error("Invalid nullifier format");
|
|
217
|
+
const secret = buffer_1.Buffer.from(secretHex, 'hex');
|
|
218
|
+
const nullifier = buffer_1.Buffer.from(nullifierHex, 'hex');
|
|
219
|
+
// Use Poseidon(3) to match circuit commitment: Poseidon(secret, nullifier, amount)
|
|
220
|
+
const commitment = await poseidon_1.PoseidonHasher.computeCommitment(secret, nullifier, amount);
|
|
221
|
+
const commitmentHex = poseidon_1.PoseidonUtils.bufferToHex(commitment);
|
|
222
|
+
const index = allCommitmentsHex.indexOf(commitmentHex);
|
|
223
|
+
if (index === -1) {
|
|
224
|
+
bus_1.EventBus.error('Commitment not found in state (Check amount matching)');
|
|
225
|
+
throw new Error(`Commitment not found in state. Hash mismatch or invalid amount.`);
|
|
226
|
+
}
|
|
227
|
+
bus_1.EventBus.info('Generating Merkle proof...');
|
|
228
|
+
const merklePath = await this.protocolShield.getMerkleProof(index, allCommitmentsHex);
|
|
229
|
+
// Calculate actual Merkle root from proof path using Poseidon
|
|
230
|
+
const calculateMerkleRoot = async (commitmentIndex, allCommitments, merklePath) => {
|
|
231
|
+
let currentHash = poseidon_1.PoseidonUtils.hexToBuffer(allCommitments[commitmentIndex]);
|
|
232
|
+
for (let i = 0; i < merklePath.proof.length; i++) {
|
|
233
|
+
const sibling = poseidon_1.PoseidonUtils.hexToBuffer(merklePath.proof[i]);
|
|
234
|
+
if (merklePath.indices[i] === 0) {
|
|
235
|
+
// Create new Buffer to avoid SharedArrayBuffer type issues
|
|
236
|
+
const leftCopy = buffer_1.Buffer.alloc(32);
|
|
237
|
+
const rightCopy = buffer_1.Buffer.alloc(32);
|
|
238
|
+
currentHash.copy(leftCopy);
|
|
239
|
+
sibling.copy(rightCopy);
|
|
240
|
+
currentHash = await poseidon_1.PoseidonHasher.hashTwoInputs(leftCopy, rightCopy);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
// Create new Buffer to avoid SharedArrayBuffer type issues
|
|
244
|
+
const leftCopy = buffer_1.Buffer.alloc(32);
|
|
245
|
+
const rightCopy = buffer_1.Buffer.alloc(32);
|
|
246
|
+
sibling.copy(leftCopy);
|
|
247
|
+
currentHash.copy(rightCopy);
|
|
248
|
+
currentHash = await poseidon_1.PoseidonHasher.hashTwoInputs(leftCopy, rightCopy);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return poseidon_1.PoseidonUtils.bufferToHex(currentHash);
|
|
252
|
+
};
|
|
253
|
+
const rootHex = await calculateMerkleRoot(index, allCommitmentsHex, merklePath);
|
|
254
|
+
bus_1.EventBus.info('Generating ZK-SNARK proof (Groth16)...');
|
|
255
|
+
const { proof } = await this.protocolShield.generateZKProof(secretHex, nullifierHex, rootHex, Number(amount), // Convert bigint to number for shield adapter if needed
|
|
256
|
+
recipient, recipient, // relayer (default to recipient for self-withdraw)
|
|
257
|
+
0, // fee
|
|
258
|
+
merklePath, wasmPath, zkeyPath);
|
|
259
|
+
// FIXED: Mitigate Root-Lock Liveness Gap
|
|
260
|
+
// Check if the root has drifted during proof generation
|
|
261
|
+
const latestRoots = allCommitmentsHex; // In production, fetch from on-chain history
|
|
262
|
+
const currentRoot = await calculateMerkleRoot(index, latestRoots, merklePath);
|
|
263
|
+
if (currentRoot !== rootHex) {
|
|
264
|
+
bus_1.EventBus.error('Merkle root drifted during proof generation. Retrying...');
|
|
265
|
+
throw new Error("Root drifted. State churn detected.");
|
|
266
|
+
}
|
|
267
|
+
bus_1.EventBus.proofGenerated('Groth16');
|
|
268
|
+
// Use Poseidon hash to match circuit nullifier hash logic (salt=1)
|
|
269
|
+
const nullifierHash = await poseidon_1.PoseidonHasher.computeNullifierHash(nullifier);
|
|
270
|
+
return {
|
|
271
|
+
status: 'proof_ready',
|
|
272
|
+
proof,
|
|
273
|
+
nullifierHash: poseidon_1.PoseidonUtils.bufferToHex(nullifierHash),
|
|
274
|
+
root: rootHex,
|
|
275
|
+
recipient: recipient.toBase58(),
|
|
276
|
+
message: 'Proof generated. Submit via relayer or directly to chain.'
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.SolVoidClient = SolVoidClient;
|
|
281
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
/**
|
|
3
|
+
* Poseidon hash wrapper with type safety and BN254 compatibility
|
|
4
|
+
* Matches Rust implementation parameters for cryptographic consistency
|
|
5
|
+
*/
|
|
6
|
+
export declare class PoseidonHasher {
|
|
7
|
+
private static poseidon;
|
|
8
|
+
private static initialized;
|
|
9
|
+
/**
|
|
10
|
+
* Initialize Poseidon with BN254 field parameters
|
|
11
|
+
* Width: 3 (2 inputs + 1 output for binary Merkle tree)
|
|
12
|
+
* Security: 128-bit (standard for zk-SNARK applications)
|
|
13
|
+
*/
|
|
14
|
+
private static initialize;
|
|
15
|
+
/**
|
|
16
|
+
* Ensure Poseidon is initialized before use
|
|
17
|
+
*/
|
|
18
|
+
private static ensureInitialized;
|
|
19
|
+
/**
|
|
20
|
+
* Convert Buffer to BigInt for Poseidon input
|
|
21
|
+
* FIXED: Handles little-endian conversion consistently with Rust ark-ff
|
|
22
|
+
*/
|
|
23
|
+
private static bufferToBigInt;
|
|
24
|
+
/**
|
|
25
|
+
* Convert BigInt output to Buffer (32 bytes, little-endian)
|
|
26
|
+
* FIXED: Ensures compatibility with Rust field element format (little-endian)
|
|
27
|
+
*/
|
|
28
|
+
private static bigIntToBuffer;
|
|
29
|
+
/**
|
|
30
|
+
* Hash with salt for commitment derivation
|
|
31
|
+
* Matches Rust: hash_commitment_with_salt
|
|
32
|
+
*/
|
|
33
|
+
static hashWithSalt(left: Buffer, right: Buffer, saltValue: Buffer): Promise<Buffer>;
|
|
34
|
+
/**
|
|
35
|
+
* Hash two 32-byte inputs using Poseidon(2)
|
|
36
|
+
* MATCHES MerkleTreeChecker circuit: Poseidon(2)
|
|
37
|
+
*/
|
|
38
|
+
static hashTwoInputs(left: Buffer, right: Buffer): Promise<Buffer>;
|
|
39
|
+
/**
|
|
40
|
+
* Hash single input with zero for nullifier hash
|
|
41
|
+
* MATCHES circuit: Poseidon(nullifier, 1)
|
|
42
|
+
*/
|
|
43
|
+
static hashWithZero(input: Buffer): Promise<Buffer>;
|
|
44
|
+
/**
|
|
45
|
+
* Compute commitment from secret, nullifier, and amount
|
|
46
|
+
* FIXED: Includes amount to prevent value inflation
|
|
47
|
+
* Matches circuit: Poseidon(secret, nullifier, amount)
|
|
48
|
+
*/
|
|
49
|
+
static computeCommitment(secret: Buffer, nullifier: Buffer, amount: bigint): Promise<Buffer>;
|
|
50
|
+
/**
|
|
51
|
+
* Compute nullifier hash from nullifier
|
|
52
|
+
* FIXED: Uses constant domain salt matching the circuit
|
|
53
|
+
* Matches circuit: Poseidon(nullifier, 1)
|
|
54
|
+
*/
|
|
55
|
+
static computeNullifierHash(nullifier: Buffer): Promise<Buffer>;
|
|
56
|
+
/**
|
|
57
|
+
* Compute Merkle root from leaf and proof path
|
|
58
|
+
* @param leaf - 32-byte leaf value
|
|
59
|
+
* @param proof - Array of 32-byte proof elements
|
|
60
|
+
* @param indices - Array of indices (0 for left, 1 for right)
|
|
61
|
+
* @returns 32-byte Merkle root
|
|
62
|
+
*/
|
|
63
|
+
static computeMerkleRoot(leaf: Buffer, proof: Buffer[], indices: number[]): Promise<Buffer>;
|
|
64
|
+
/**
|
|
65
|
+
* Verify hash output is within BN254 field constraints
|
|
66
|
+
* Ensures compatibility with zk-SNARK circuit requirements
|
|
67
|
+
*/
|
|
68
|
+
static verifyFieldCompatibility(hash: Buffer): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Get Poseidon instance for advanced usage
|
|
71
|
+
* @returns The underlying circomlibjs Poseidon instance
|
|
72
|
+
*/
|
|
73
|
+
static getPoseidonInstance(): Promise<any>;
|
|
74
|
+
/**
|
|
75
|
+
* Reset the Poseidon instance (useful for testing)
|
|
76
|
+
*/
|
|
77
|
+
static reset(): void;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Type definitions for Poseidon operations
|
|
81
|
+
*/
|
|
82
|
+
export type PoseidonHash = Buffer;
|
|
83
|
+
export type MerkleProof = {
|
|
84
|
+
proof: Buffer[];
|
|
85
|
+
indices: number[];
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* FIXED: Secure salt generation for cryptographic domain separation
|
|
89
|
+
* Matches Rust implementation in poseidon.rs
|
|
90
|
+
*/
|
|
91
|
+
export declare class SecureSalts {
|
|
92
|
+
static generateSecureSalts(transactionContext: Buffer): {
|
|
93
|
+
commitmentSalt: Buffer;
|
|
94
|
+
nullifierSalt: Buffer;
|
|
95
|
+
pathSalt: Buffer;
|
|
96
|
+
};
|
|
97
|
+
static fromTransactionComponents(root: Buffer, nullifier: Buffer, recipient: Buffer, amount: bigint): {
|
|
98
|
+
commitmentSalt: Buffer;
|
|
99
|
+
nullifierSalt: Buffer;
|
|
100
|
+
pathSalt: Buffer;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Utility functions for working with Poseidon hashes
|
|
105
|
+
*/
|
|
106
|
+
export declare class PoseidonUtils {
|
|
107
|
+
/**
|
|
108
|
+
* Convert hex string to Buffer (32 bytes)
|
|
109
|
+
*/
|
|
110
|
+
static hexToBuffer(hex: string): Buffer;
|
|
111
|
+
/**
|
|
112
|
+
* Convert Buffer to hex string
|
|
113
|
+
*/
|
|
114
|
+
static bufferToHex(buffer: Buffer): string;
|
|
115
|
+
/**
|
|
116
|
+
* Validate Buffer is 32 bytes
|
|
117
|
+
*/
|
|
118
|
+
static validate32Bytes(buffer: Buffer): void;
|
|
119
|
+
/**
|
|
120
|
+
* Create zero Buffer (32 bytes of zeros)
|
|
121
|
+
*/
|
|
122
|
+
static zeroBuffer(): Buffer;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=poseidon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poseidon.d.ts","sourceRoot":"","sources":["../../crypto/poseidon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;GAGG;AACH,qBAAa,cAAc;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAS;IAEnC;;;;OAIG;mBACkB,UAAU;IAiB/B;;OAEG;mBACkB,iBAAiB;IAMtC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAe7B;;;OAGG;WACU,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB1F;;;OAGG;WACU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcxE;;;OAGG;WACU,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzD;;;;OAIG;WACU,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUlG;;;;OAIG;WACU,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASrE;;;;;;OAMG;WACU,iBAAiB,CAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC;IAuBlB;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAgBtD;;;OAGG;WACU,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC;IAKhD;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;CAIvB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAClC,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,qBAAa,WAAW;IACpB,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG;QACpD,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KACpB;IAuBD,MAAM,CAAC,yBAAyB,CAC5B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM;wBA9BE,MAAM;uBACP,MAAM;kBACX,MAAM;;CAoCvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACtB;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAOvC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI1C;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5C;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,MAAM;CAG9B"}
|