@aztec/aztec 0.0.1-fake-c83136db25 → 0.0.2-commit.217f559981
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/README.md +1 -1
- package/dest/bin/index.d.ts +1 -1
- package/dest/bin/index.js +11 -4
- package/dest/cli/admin_api_key_store.d.ts +45 -0
- package/dest/cli/admin_api_key_store.d.ts.map +1 -0
- package/dest/cli/admin_api_key_store.js +98 -0
- package/dest/cli/aztec_start_action.d.ts +1 -1
- package/dest/cli/aztec_start_action.d.ts.map +1 -1
- package/dest/cli/aztec_start_action.js +58 -21
- package/dest/cli/aztec_start_options.d.ts +1 -1
- package/dest/cli/aztec_start_options.d.ts.map +1 -1
- package/dest/cli/aztec_start_options.js +46 -38
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.js +7 -7
- package/dest/cli/cmds/compile.d.ts +4 -0
- package/dest/cli/cmds/compile.d.ts.map +1 -0
- package/dest/cli/cmds/compile.js +95 -0
- package/dest/cli/cmds/migrate_ha_db.d.ts +3 -0
- package/dest/cli/cmds/migrate_ha_db.d.ts.map +1 -0
- package/dest/cli/cmds/migrate_ha_db.js +27 -0
- package/dest/cli/cmds/start_archiver.d.ts +1 -1
- package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
- package/dest/cli/cmds/start_archiver.js +11 -13
- package/dest/cli/cmds/start_bot.d.ts +3 -3
- package/dest/cli/cmds/start_bot.d.ts.map +1 -1
- package/dest/cli/cmds/start_bot.js +10 -6
- package/dest/cli/cmds/start_node.d.ts +1 -1
- package/dest/cli/cmds/start_node.d.ts.map +1 -1
- package/dest/cli/cmds/start_node.js +66 -14
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts +2 -2
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
- package/dest/cli/cmds/start_p2p_bootstrap.js +2 -3
- package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
- package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_agent.js +4 -4
- package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
- package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_broker.js +4 -4
- package/dest/cli/cmds/start_txe.d.ts +1 -1
- package/dest/cli/index.d.ts +1 -1
- package/dest/cli/preload_crs.d.ts +1 -1
- package/dest/cli/release_version.d.ts +1 -1
- package/dest/cli/util.d.ts +11 -20
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +13 -8
- package/dest/cli/versioning.d.ts +1 -1
- package/dest/examples/token.d.ts +1 -1
- package/dest/examples/token.js +6 -6
- package/dest/examples/util.d.ts +2 -2
- package/dest/examples/util.d.ts.map +1 -1
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/local-network/banana_fpc.d.ts +10 -0
- package/dest/local-network/banana_fpc.d.ts.map +1 -0
- package/dest/{sandbox → local-network}/banana_fpc.js +3 -3
- package/dest/local-network/index.d.ts +4 -0
- package/dest/local-network/index.d.ts.map +1 -0
- package/dest/{sandbox → local-network}/index.js +1 -1
- package/dest/local-network/local-network.d.ts +73 -0
- package/dest/local-network/local-network.d.ts.map +1 -0
- package/dest/{sandbox/sandbox.js → local-network/local-network.js} +75 -45
- package/dest/local-network/sponsored_fpc.d.ts +5 -0
- package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
- package/dest/mnemonic.d.ts +1 -1
- package/dest/splash.d.ts +1 -1
- package/dest/testing/anvil_test_watcher.d.ts +12 -4
- package/dest/testing/anvil_test_watcher.d.ts.map +1 -1
- package/dest/testing/anvil_test_watcher.js +68 -29
- package/dest/testing/cheat_codes.d.ts +1 -1
- package/dest/testing/cheat_codes.d.ts.map +1 -1
- package/dest/testing/epoch_test_settler.d.ts +19 -0
- package/dest/testing/epoch_test_settler.d.ts.map +1 -0
- package/dest/testing/epoch_test_settler.js +62 -0
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/package.json +41 -37
- package/scripts/aztec.sh +62 -0
- package/scripts/extract_function.js +47 -0
- package/scripts/flamegraph.sh +59 -0
- package/scripts/init.sh +35 -0
- package/scripts/new.sh +59 -0
- package/scripts/setup_project.sh +31 -0
- package/src/bin/index.ts +12 -4
- package/src/cli/admin_api_key_store.ts +128 -0
- package/src/cli/aztec_start_action.ts +61 -16
- package/src/cli/aztec_start_options.ts +47 -36
- package/src/cli/cli.ts +11 -11
- package/src/cli/cmds/compile.ts +107 -0
- package/src/cli/cmds/migrate_ha_db.ts +43 -0
- package/src/cli/cmds/start_archiver.ts +7 -18
- package/src/cli/cmds/start_bot.ts +9 -6
- package/src/cli/cmds/start_node.ts +55 -13
- package/src/cli/cmds/start_p2p_bootstrap.ts +3 -3
- package/src/cli/cmds/start_prover_agent.ts +4 -12
- package/src/cli/cmds/start_prover_broker.ts +7 -3
- package/src/cli/util.ts +20 -25
- package/src/examples/token.ts +6 -8
- package/src/examples/util.ts +1 -1
- package/src/index.ts +2 -2
- package/src/{sandbox → local-network}/banana_fpc.ts +11 -7
- package/src/{sandbox → local-network}/index.ts +1 -1
- package/src/local-network/local-network.ts +267 -0
- package/src/{sandbox → local-network}/sponsored_fpc.ts +3 -2
- package/src/testing/anvil_test_watcher.ts +76 -30
- package/src/testing/cheat_codes.ts +3 -2
- package/src/testing/epoch_test_settler.ts +71 -0
- package/src/testing/index.ts +1 -0
- package/dest/cli/cmds/start_blob_sink.d.ts +0 -3
- package/dest/cli/cmds/start_blob_sink.d.ts.map +0 -1
- package/dest/cli/cmds/start_blob_sink.js +0 -33
- package/dest/cli/cmds/start_prover_node.d.ts +0 -7
- package/dest/cli/cmds/start_prover_node.d.ts.map +0 -1
- package/dest/cli/cmds/start_prover_node.js +0 -108
- package/dest/sandbox/banana_fpc.d.ts +0 -10
- package/dest/sandbox/banana_fpc.d.ts.map +0 -1
- package/dest/sandbox/index.d.ts +0 -4
- package/dest/sandbox/index.d.ts.map +0 -1
- package/dest/sandbox/sandbox.d.ts +0 -74
- package/dest/sandbox/sandbox.d.ts.map +0 -1
- package/dest/sandbox/sponsored_fpc.d.ts +0 -4
- package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
- package/src/cli/cmds/start_blob_sink.ts +0 -57
- package/src/cli/cmds/start_prover_node.ts +0 -124
- package/src/sandbox/sandbox.ts +0 -242
- /package/dest/{sandbox → local-network}/sponsored_fpc.js +0 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { execFileSync, spawn } from 'child_process';
|
|
2
|
+
import { readFile, readdir, writeFile } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
/** Spawns a command with inherited stdio and rejects on non-zero exit. */ function run(cmd, args) {
|
|
5
|
+
return new Promise((resolve, reject)=>{
|
|
6
|
+
const child = spawn(cmd, args, {
|
|
7
|
+
stdio: 'inherit'
|
|
8
|
+
});
|
|
9
|
+
child.on('error', reject);
|
|
10
|
+
child.on('close', (code)=>{
|
|
11
|
+
if (code !== 0) {
|
|
12
|
+
reject(new Error(`${cmd} exited with code ${code}`));
|
|
13
|
+
} else {
|
|
14
|
+
resolve();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/** Returns paths to contract artifacts in the target directory.
|
|
20
|
+
* Contract artifacts are identified by having a `functions` array in the JSON.
|
|
21
|
+
*/ async function collectContractArtifacts() {
|
|
22
|
+
let files;
|
|
23
|
+
try {
|
|
24
|
+
files = await readdir('target');
|
|
25
|
+
} catch (err) {
|
|
26
|
+
if (err?.code === 'ENOENT') {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
throw new Error(`Failed to read target directory: ${err.message}`);
|
|
30
|
+
}
|
|
31
|
+
const artifacts = [];
|
|
32
|
+
for (const file of files){
|
|
33
|
+
if (!file.endsWith('.json')) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const filePath = join('target', file);
|
|
37
|
+
const content = JSON.parse(await readFile(filePath, 'utf-8'));
|
|
38
|
+
if (Array.isArray(content.functions)) {
|
|
39
|
+
artifacts.push(filePath);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return artifacts;
|
|
43
|
+
}
|
|
44
|
+
/** Strips the `__aztec_nr_internals__` prefix from function names in contract artifacts. */ async function stripInternalPrefixes(artifactPaths) {
|
|
45
|
+
for (const path of artifactPaths){
|
|
46
|
+
const artifact = JSON.parse(await readFile(path, 'utf-8'));
|
|
47
|
+
for (const fn of artifact.functions){
|
|
48
|
+
if (typeof fn.name === 'string') {
|
|
49
|
+
fn.name = fn.name.replace(/^__aztec_nr_internals__/, '');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
await writeFile(path, JSON.stringify(artifact, null, 2) + '\n');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Compiles Aztec Noir contracts and postprocesses artifacts. */ async function compileAztecContract(nargoArgs, log) {
|
|
56
|
+
const nargo = process.env.NARGO ?? 'nargo';
|
|
57
|
+
const bb = process.env.BB ?? 'bb';
|
|
58
|
+
await run(nargo, [
|
|
59
|
+
'compile',
|
|
60
|
+
...nargoArgs
|
|
61
|
+
]);
|
|
62
|
+
const artifacts = await collectContractArtifacts();
|
|
63
|
+
if (artifacts.length > 0) {
|
|
64
|
+
log('Postprocessing contracts...');
|
|
65
|
+
const bbArgs = artifacts.flatMap((a)=>[
|
|
66
|
+
'-i',
|
|
67
|
+
a
|
|
68
|
+
]);
|
|
69
|
+
await run(bb, [
|
|
70
|
+
'aztec_process',
|
|
71
|
+
...bbArgs
|
|
72
|
+
]);
|
|
73
|
+
// TODO: This should be part of bb aztec_process!
|
|
74
|
+
await stripInternalPrefixes(artifacts);
|
|
75
|
+
}
|
|
76
|
+
log('Compilation complete!');
|
|
77
|
+
}
|
|
78
|
+
export function injectCompileCommand(program, log) {
|
|
79
|
+
program.command('compile').argument('[nargo-args...]').passThroughOptions().allowUnknownOption().description('Compile Aztec Noir contracts using nargo and postprocess them to generate transpiled artifacts and verification keys. All options are forwarded to nargo compile.').addHelpText('after', ()=>{
|
|
80
|
+
// Show nargo's own compile options so users see all available flags in one place.
|
|
81
|
+
const nargo = process.env.NARGO ?? 'nargo';
|
|
82
|
+
try {
|
|
83
|
+
const output = execFileSync(nargo, [
|
|
84
|
+
'compile',
|
|
85
|
+
'--help'
|
|
86
|
+
], {
|
|
87
|
+
encoding: 'utf-8'
|
|
88
|
+
});
|
|
89
|
+
return `\nUnderlying nargo compile options:\n\n${output}`;
|
|
90
|
+
} catch {
|
|
91
|
+
return '\n(Run "nargo compile --help" to see available nargo options)';
|
|
92
|
+
}
|
|
93
|
+
}).action((nargoArgs)=>compileAztecContract(nargoArgs, log));
|
|
94
|
+
return program;
|
|
95
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export declare function injectMigrateCommand(program: Command, log: (msg: string) => void): Command;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0ZV9oYV9kYi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL21pZ3JhdGVfaGFfZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpDLHdCQUFnQixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssSUFBSSxHQUFHLE9BQU8sQ0FzQzFGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate_ha_db.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/migrate_ha_db.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAsC1F"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { runMigrations } from '@aztec/validator-ha-signer/migrations';
|
|
2
|
+
export function injectMigrateCommand(program, log) {
|
|
3
|
+
const migrateCommand = program.command('migrate-ha-db').description('Run validator-ha-signer database migrations');
|
|
4
|
+
migrateCommand.command('up').description('Apply pending migrations').requiredOption('--database-url <string>', 'PostgreSQL connection string', process.env.DATABASE_URL).option('--verbose', 'Enable verbose output', false).action(async (options)=>{
|
|
5
|
+
const migrations = await runMigrations(options.databaseUrl, {
|
|
6
|
+
direction: 'up',
|
|
7
|
+
verbose: options.verbose
|
|
8
|
+
});
|
|
9
|
+
if (migrations.length > 0) {
|
|
10
|
+
log(`Applied migrations: ${migrations.join(', ')}`);
|
|
11
|
+
} else {
|
|
12
|
+
log('No migrations to apply - schema is up to date');
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
migrateCommand.command('down').description('Rollback the last migration').requiredOption('--database-url <string>', 'PostgreSQL connection string', process.env.DATABASE_URL).option('--verbose', 'Enable verbose output', false).action(async (options)=>{
|
|
16
|
+
const migrations = await runMigrations(options.databaseUrl, {
|
|
17
|
+
direction: 'down',
|
|
18
|
+
verbose: options.verbose
|
|
19
|
+
});
|
|
20
|
+
if (migrations.length > 0) {
|
|
21
|
+
log(`Rolled back migrations: ${migrations.join(', ')}`);
|
|
22
|
+
} else {
|
|
23
|
+
log('No migrations to rollback');
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return program;
|
|
27
|
+
}
|
|
@@ -6,4 +6,4 @@ export type { ArchiverConfig, DataStoreConfig };
|
|
|
6
6
|
export declare function startArchiver(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers): Promise<{
|
|
7
7
|
config: ArchiverConfig & DataStoreConfig;
|
|
8
8
|
}>;
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYXJjaGl2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY21kcy9zdGFydF9hcmNoaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQW9FLE1BQU0saUJBQWlCLENBQUM7QUFJeEgsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFNbEYsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUVoRCxvQ0FBb0M7QUFDcEMsd0JBQXNCLGFBQWEsQ0FDakMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsR0FDOUIsT0FBTyxDQUFDO0lBQUUsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLENBQUE7Q0FBRSxDQUFDLENBK0J2RCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_archiver.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_archiver.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"start_archiver.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAoE,MAAM,iBAAiB,CAAC;AAIxH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAMlF,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;AAEhD,oCAAoC;AACpC,wBAAsB,aAAa,CACjC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,GAAG,eAAe,CAAA;CAAE,CAAC,CA+BvD"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { archiverConfigMappings, createArchiver, getArchiverConfigFromEnv } from '@aztec/archiver';
|
|
2
2
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
3
|
-
import {
|
|
3
|
+
import { blobClientConfigMapping, createBlobClient } from '@aztec/blob-client/client';
|
|
4
4
|
import { getL1Config } from '@aztec/cli/config';
|
|
5
5
|
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
6
|
-
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
7
6
|
import { ArchiverApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
8
7
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
9
8
|
import { extractRelevantOptions } from '../util.js';
|
|
@@ -12,7 +11,7 @@ import { extractRelevantOptions } from '../util.js';
|
|
|
12
11
|
const cliOptions = extractRelevantOptions(options, {
|
|
13
12
|
...archiverConfigMappings,
|
|
14
13
|
...dataConfigMappings,
|
|
15
|
-
...
|
|
14
|
+
...blobClientConfigMapping
|
|
16
15
|
}, 'archiver');
|
|
17
16
|
let archiverConfig = {
|
|
18
17
|
...envConfig,
|
|
@@ -28,17 +27,16 @@ import { extractRelevantOptions } from '../util.js';
|
|
|
28
27
|
...archiverConfig,
|
|
29
28
|
...l1Config
|
|
30
29
|
};
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
const telemetry = initTelemetryClient(getTelemetryClientConfig());
|
|
35
|
-
const blobSinkClient = createBlobSinkClient(archiverConfig, {
|
|
36
|
-
logger: createLogger('archiver:blob-sink:client')
|
|
30
|
+
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
31
|
+
const blobClient = createBlobClient(archiverConfig, {
|
|
32
|
+
logger: createLogger('archiver:blob-client:client')
|
|
37
33
|
});
|
|
38
|
-
const archiver = await
|
|
34
|
+
const archiver = await createArchiver(archiverConfig, {
|
|
39
35
|
telemetry,
|
|
40
|
-
|
|
41
|
-
},
|
|
36
|
+
blobClient
|
|
37
|
+
}, {
|
|
38
|
+
blockUntilSync: true
|
|
39
|
+
});
|
|
42
40
|
services.archiver = [
|
|
43
41
|
archiver,
|
|
44
42
|
ArchiverApiSchema
|
|
@@ -2,7 +2,7 @@ import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
|
2
2
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
3
|
import { type AztecNode, type AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
4
4
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
-
import {
|
|
5
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
6
6
|
export declare function startBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<void>;
|
|
7
|
-
export declare function addBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, wallet:
|
|
8
|
-
//# sourceMappingURL=
|
|
7
|
+
export declare function addBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, wallet: EmbeddedWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin?: AztecNodeAdmin, userLog?: LogFn): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbkQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssY0FBYyxFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQzdHLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUt6RCx3QkFBc0IsUUFBUSxDQUM1QixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixPQUFPLEVBQUUsS0FBSyxpQkF3QmY7QUFFRCx3QkFBc0IsTUFBTSxDQUMxQixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixNQUFNLEVBQUUsY0FBYyxFQUN0QixTQUFTLEVBQUUsU0FBUyxFQUNwQixTQUFTLEVBQUUsZUFBZSxFQUMxQixjQUFjLENBQUMsRUFBRSxjQUFjLEVBQy9CLE9BQU8sQ0FBQyxFQUFFLEtBQUssaUJBbUJoQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_bot.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_bot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAyB,MAAM,iCAAiC,CAAC;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"start_bot.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_bot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAyB,MAAM,iCAAiC,CAAC;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAKzD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAwBf;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,EAC1B,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,CAAC,EAAE,KAAK,iBAmBhB"}
|
|
@@ -3,8 +3,8 @@ import { createStore, openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
|
3
3
|
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
4
4
|
import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
5
5
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient, makeTracedFetch } from '@aztec/telemetry-client';
|
|
6
|
-
import {
|
|
7
|
-
import { extractRelevantOptions } from '../util.js';
|
|
6
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
7
|
+
import { extractRelevantOptions, stringifyConfig } from '../util.js';
|
|
8
8
|
import { getVersions } from '../versioning.js';
|
|
9
9
|
export async function startBot(options, signalHandlers, services, userLog) {
|
|
10
10
|
const { proverNode, archiver, sequencer, p2pBootstrap, txe, prover } = options;
|
|
@@ -23,12 +23,16 @@ export async function startBot(options, signalHandlers, services, userLog) {
|
|
|
23
23
|
}
|
|
24
24
|
const aztecNode = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
|
|
25
25
|
const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
26
|
+
userLog(`Creating bot wallet with config ${stringifyConfig(pxeConfig)}`);
|
|
27
|
+
const wallet = await EmbeddedWallet.create(aztecNode, {
|
|
28
|
+
pxeConfig
|
|
29
|
+
});
|
|
30
|
+
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
31
|
+
await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined, userLog);
|
|
29
32
|
}
|
|
30
|
-
export async function addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, aztecNodeAdmin) {
|
|
33
|
+
export async function addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, aztecNodeAdmin, userLog) {
|
|
31
34
|
const config = extractRelevantOptions(options, botConfigMappings, 'bot');
|
|
35
|
+
userLog?.(`Starting bot with config ${stringifyConfig(config)}`);
|
|
32
36
|
const db = await (config.dataDirectory ? createStore('bot', BotStore.SCHEMA_VERSION, config) : openTmpStore('bot', true, config.dataStoreMapSizeKb));
|
|
33
37
|
const store = new BotStore(db);
|
|
34
38
|
await store.cleanupOldClaims();
|
|
@@ -4,4 +4,4 @@ import type { LogFn } from '@aztec/foundation/log';
|
|
|
4
4
|
export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, adminServices: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
5
5
|
config: AztecNodeConfig;
|
|
6
6
|
}>;
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBTXBHLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUF3Qm5ELHdCQUFzQixTQUFTLENBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLGFBQWEsRUFBRSxxQkFBcUIsRUFDcEMsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFBO0NBQUUsQ0FBQyxDQThKdEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;AAMpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;AAMpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAwBnD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CA8JtC"}
|
|
@@ -3,16 +3,20 @@ import { aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
|
|
|
3
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
4
|
import { getSponsoredFPCAddress } from '@aztec/cli/cli-utils';
|
|
5
5
|
import { getL1Config } from '@aztec/cli/config';
|
|
6
|
-
import { getPublicClient } from '@aztec/ethereum';
|
|
6
|
+
import { getPublicClient } from '@aztec/ethereum/client';
|
|
7
7
|
import { SecretValue } from '@aztec/foundation/config';
|
|
8
|
+
import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
|
|
9
|
+
import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
|
|
8
10
|
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
9
11
|
import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
|
|
10
|
-
import { P2PApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
11
|
-
import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
12
|
-
import {
|
|
12
|
+
import { P2PApiSchema, ProverNodeApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
13
|
+
import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
14
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
13
15
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
14
|
-
import { createAztecNode } from '../../
|
|
16
|
+
import { createAztecNode } from '../../local-network/index.js';
|
|
15
17
|
import { extractNamespacedOptions, extractRelevantOptions, preloadCrsDataForVerifying, setupUpdateMonitor } from '../util.js';
|
|
18
|
+
import { getVersions } from '../versioning.js';
|
|
19
|
+
import { startProverBroker } from './start_prover_broker.js';
|
|
16
20
|
export async function startNode(options, signalHandlers, services, adminServices, userLog) {
|
|
17
21
|
// All options set from environment variables
|
|
18
22
|
const configFromEnvVars = getConfigEnvVars();
|
|
@@ -23,9 +27,40 @@ export async function startNode(options, signalHandlers, services, adminServices
|
|
|
23
27
|
...configFromEnvVars,
|
|
24
28
|
...relevantOptions
|
|
25
29
|
};
|
|
30
|
+
// Prover node configuration and broker setup
|
|
31
|
+
// REFACTOR: Move the broker setup out of here and into the prover-node factory
|
|
32
|
+
let broker = undefined;
|
|
26
33
|
if (options.proverNode) {
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
nodeConfig.enableProverNode = true;
|
|
35
|
+
if (nodeConfig.proverAgentCount === 0) {
|
|
36
|
+
userLog(`Running prover node without local prover agent. Connect prover agents or pass --proverAgent.proverAgentCount`);
|
|
37
|
+
}
|
|
38
|
+
if (nodeConfig.proverBrokerUrl) {
|
|
39
|
+
// at 1TPS we'd enqueue ~1k chonk verifier proofs and ~1k AVM proofs immediately
|
|
40
|
+
// set a lower connection limit such that we don't overload the server
|
|
41
|
+
// Keep retrying up to 30s
|
|
42
|
+
const fetch = makeTracedFetch([
|
|
43
|
+
1,
|
|
44
|
+
2,
|
|
45
|
+
3,
|
|
46
|
+
3,
|
|
47
|
+
3,
|
|
48
|
+
3,
|
|
49
|
+
3,
|
|
50
|
+
3,
|
|
51
|
+
3,
|
|
52
|
+
3,
|
|
53
|
+
3
|
|
54
|
+
], false, makeUndiciFetch(new Agent({
|
|
55
|
+
connections: 100
|
|
56
|
+
})));
|
|
57
|
+
broker = createProvingJobBrokerClient(nodeConfig.proverBrokerUrl, getVersions(nodeConfig), fetch);
|
|
58
|
+
} else if (options.proverBroker) {
|
|
59
|
+
({ broker } = await startProverBroker(options, signalHandlers, services, userLog));
|
|
60
|
+
} else {
|
|
61
|
+
userLog(`--prover-broker-url or --prover-broker is required to start a Prover Node`);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
29
64
|
}
|
|
30
65
|
await preloadCrsDataForVerifying(nodeConfig, userLog);
|
|
31
66
|
const testAccounts = nodeConfig.testAccounts ? (await getInitialTestAccountsData()).map((a)=>a.address) : [];
|
|
@@ -54,7 +89,7 @@ export async function startNode(options, signalHandlers, services, adminServices
|
|
|
54
89
|
},
|
|
55
90
|
...config
|
|
56
91
|
};
|
|
57
|
-
if (!options.sequencer) {
|
|
92
|
+
if (!options.sequencer && !nodeConfig.fishermanMode) {
|
|
58
93
|
nodeConfig.disableValidator = true;
|
|
59
94
|
} else {
|
|
60
95
|
const sequencerConfig = {
|
|
@@ -62,14 +97,14 @@ export async function startNode(options, signalHandlers, services, adminServices
|
|
|
62
97
|
...extractNamespacedOptions(options, 'sequencer')
|
|
63
98
|
};
|
|
64
99
|
// If no publisher private keys have been given, use the first validator key
|
|
65
|
-
if (sequencerConfig.
|
|
100
|
+
if (sequencerConfig.sequencerPublisherPrivateKeys === undefined || !sequencerConfig.sequencerPublisherPrivateKeys.length) {
|
|
66
101
|
if (sequencerConfig.validatorPrivateKeys?.getValue().length) {
|
|
67
|
-
sequencerConfig.
|
|
102
|
+
sequencerConfig.sequencerPublisherPrivateKeys = [
|
|
68
103
|
new SecretValue(sequencerConfig.validatorPrivateKeys.getValue()[0])
|
|
69
104
|
];
|
|
70
105
|
}
|
|
71
106
|
}
|
|
72
|
-
nodeConfig.
|
|
107
|
+
nodeConfig.sequencerPublisherPrivateKeys = sequencerConfig.sequencerPublisherPrivateKeys;
|
|
73
108
|
}
|
|
74
109
|
if (nodeConfig.p2pEnabled) {
|
|
75
110
|
// ensure bootstrapNodes is an array
|
|
@@ -78,10 +113,11 @@ export async function startNode(options, signalHandlers, services, adminServices
|
|
|
78
113
|
}
|
|
79
114
|
}
|
|
80
115
|
const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
|
|
81
|
-
const telemetry = initTelemetryClient(telemetryConfig);
|
|
116
|
+
const telemetry = await initTelemetryClient(telemetryConfig);
|
|
82
117
|
// Create and start Aztec Node
|
|
83
118
|
const node = await createAztecNode(nodeConfig, {
|
|
84
|
-
telemetry
|
|
119
|
+
telemetry,
|
|
120
|
+
proverBroker: broker
|
|
85
121
|
}, {
|
|
86
122
|
prefilledPublicData
|
|
87
123
|
});
|
|
@@ -98,13 +134,29 @@ export async function startNode(options, signalHandlers, services, adminServices
|
|
|
98
134
|
node,
|
|
99
135
|
AztecNodeAdminApiSchema
|
|
100
136
|
];
|
|
137
|
+
// Register prover-node services if the prover node subsystem is running
|
|
138
|
+
const proverNode = node.getProverNode();
|
|
139
|
+
if (proverNode) {
|
|
140
|
+
services.prover = [
|
|
141
|
+
proverNode,
|
|
142
|
+
ProverNodeApiSchema
|
|
143
|
+
];
|
|
144
|
+
if (!nodeConfig.proverBrokerUrl) {
|
|
145
|
+
services.provingJobSource = [
|
|
146
|
+
proverNode.getProver().getProvingJobSource(),
|
|
147
|
+
ProvingJobConsumerSchema
|
|
148
|
+
];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
101
151
|
// Add node stop function to signal handlers
|
|
102
152
|
signalHandlers.push(node.stop.bind(node));
|
|
103
153
|
// Add a txs bot if requested
|
|
104
154
|
if (options.bot) {
|
|
105
155
|
const { addBot } = await import('./start_bot.js');
|
|
106
156
|
const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
|
|
107
|
-
const wallet = await
|
|
157
|
+
const wallet = await EmbeddedWallet.create(node, {
|
|
158
|
+
pxeConfig
|
|
159
|
+
});
|
|
108
160
|
await addBot(options, signalHandlers, services, wallet, node, telemetry, undefined);
|
|
109
161
|
}
|
|
110
162
|
if (nodeConfig.autoUpdate !== 'disabled' && nodeConfig.autoUpdateUrl) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
|
-
import {
|
|
2
|
+
import type { LogFn } from '@aztec/foundation/log';
|
|
3
3
|
export declare function startP2PBootstrap(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
4
4
|
config: import("@aztec/stdlib/config").ChainConfig;
|
|
5
5
|
}>;
|
|
6
|
-
//# sourceMappingURL=
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcDJwX2Jvb3RzdHJhcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3AycF9ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWFuRCx3QkFBc0IsaUJBQWlCLENBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLE9BQU8sRUFBRSxLQUFLOztHQWlCZiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAanD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK;;GAiBf"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
2
|
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
3
|
import { BootstrapNode, bootnodeConfigMappings } from '@aztec/p2p';
|
|
5
4
|
import { emptyChainConfig } from '@aztec/stdlib/config';
|
|
@@ -15,8 +14,8 @@ export async function startP2PBootstrap(options, signalHandlers, services, userL
|
|
|
15
14
|
};
|
|
16
15
|
userLog(`Starting P2P bootstrap node with config: ${jsonStringify(safeConfig)}`);
|
|
17
16
|
const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
|
|
18
|
-
const telemetryClient = initTelemetryClient(telemetryConfig);
|
|
19
|
-
const store = await createStore('p2p-bootstrap', 1, config
|
|
17
|
+
const telemetryClient = await initTelemetryClient(telemetryConfig);
|
|
18
|
+
const store = await createStore('p2p-bootstrap', 1, config);
|
|
20
19
|
const node = new BootstrapNode(store, telemetryClient);
|
|
21
20
|
await node.start(config);
|
|
22
21
|
signalHandlers.push(()=>node.stop());
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
2
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
3
|
export declare function startProverAgent(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2FnZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfcHJvdmVyX2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFnQm5ELHdCQUFzQixnQkFBZ0IsQ0FDcEMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssaUJBd0RmIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAwDf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { times } from '@aztec/foundation/collection';
|
|
2
2
|
import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
|
|
3
3
|
import { buildServerCircuitProver } from '@aztec/prover-client';
|
|
4
|
-
import {
|
|
4
|
+
import { ProvingAgent, createProofStore, createProvingJobBrokerClient, proverAgentConfigMappings } from '@aztec/prover-client/broker';
|
|
5
5
|
import { getProverNodeAgentConfigFromEnv } from '@aztec/prover-node';
|
|
6
6
|
import { ProverAgentApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
7
7
|
import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
@@ -42,10 +42,10 @@ export async function startProverAgent(options, signalHandlers, services, userLo
|
|
|
42
42
|
connections: 10
|
|
43
43
|
})));
|
|
44
44
|
const broker = createProvingJobBrokerClient(config.proverBrokerUrl, getVersions(), fetch);
|
|
45
|
-
const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
|
|
45
|
+
const telemetry = await initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
|
|
46
46
|
const prover = await buildServerCircuitProver(config, telemetry);
|
|
47
|
-
const proofStore =
|
|
48
|
-
const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs
|
|
47
|
+
const proofStore = await createProofStore(config.proofStore);
|
|
48
|
+
const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs));
|
|
49
49
|
// expose all agents as individual services
|
|
50
50
|
for(let i = 0; i < agents.length; i++){
|
|
51
51
|
services[`agent${i}`] = [
|
|
@@ -6,4 +6,4 @@ export declare function startProverBroker(options: any, signalHandlers: (() => P
|
|
|
6
6
|
broker: ProvingJobBroker;
|
|
7
7
|
config: ProverBrokerConfig;
|
|
8
8
|
}>;
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2Jyb2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3Byb3Zlcl9icm9rZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBS3hFLHdCQUFzQixpQkFBaUIsQ0FDckMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUE7Q0FBRSxDQUFDLENBK0NuRSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAKxE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC,CA+CnE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getL1Config } from '@aztec/cli/config';
|
|
2
|
-
import { getPublicClient } from '@aztec/ethereum';
|
|
3
|
-
import { ProvingJobBrokerSchema, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
|
|
2
|
+
import { getPublicClient } from '@aztec/ethereum/client';
|
|
3
|
+
import { ProvingJobBrokerSchema, ProvingJobBrokerSchemaWithDebug, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
|
|
4
4
|
import { getProverNodeBrokerConfigFromEnv } from '@aztec/prover-node';
|
|
5
5
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
6
6
|
import { extractRelevantOptions, setupUpdateMonitor } from '../util.js';
|
|
@@ -20,14 +20,14 @@ export async function startProverBroker(options, signalHandlers, services, userL
|
|
|
20
20
|
const { addresses, config: rollupConfig } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId, config.rollupVersion);
|
|
21
21
|
config.l1Contracts = addresses;
|
|
22
22
|
config.rollupVersion = rollupConfig.rollupVersion;
|
|
23
|
-
const client = initTelemetryClient(getTelemetryClientConfig());
|
|
23
|
+
const client = await initTelemetryClient(getTelemetryClientConfig());
|
|
24
24
|
const broker = await createAndStartProvingBroker(config, client);
|
|
25
25
|
if (options.autoUpdate !== 'disabled' && options.autoUpdateUrl) {
|
|
26
26
|
await setupUpdateMonitor(options.autoUpdate, new URL(options.autoUpdateUrl), followsCanonicalRollup, getPublicClient(config), config.l1Contracts.registryAddress, signalHandlers);
|
|
27
27
|
}
|
|
28
28
|
services.proverBroker = [
|
|
29
29
|
broker,
|
|
30
|
-
ProvingJobBrokerSchema
|
|
30
|
+
config.proverBrokerDebugReplayEnabled ? ProvingJobBrokerSchemaWithDebug : ProvingJobBrokerSchema
|
|
31
31
|
];
|
|
32
32
|
signalHandlers.push(()=>broker.stop());
|
|
33
33
|
return {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
2
|
export declare function startTXE(options: any, debugLogger: Logger): Promise<void>;
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfdHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfdHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3BELHdCQUFzQixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFVL0QifQ==
|
package/dest/cli/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './cli.js';
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUMifQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
2
2
|
export declare function preloadCrs(_options: any, userLog: LogFn, _debugLogger: Logger): Promise<void>;
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlbG9hZF9jcnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvcHJlbG9hZF9jcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTNELHdCQUFzQixVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUVuRiJ9
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const getCliVersion: () => any;
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZV92ZXJzaW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3JlbGVhc2VfdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxlQUFPLE1BQU0sYUFBYSxXQWV6QixDQUFDIn0=
|
package/dest/cli/util.d.ts
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import type { AztecNodeConfig } from '@aztec/aztec-node';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { AccountManager } from '@aztec/aztec.js/wallet';
|
|
5
|
-
import type { ViemClient } from '@aztec/ethereum';
|
|
2
|
+
import type { AccountManager } from '@aztec/aztec.js/wallet';
|
|
3
|
+
import type { ViemClient } from '@aztec/ethereum/types';
|
|
6
4
|
import type { ConfigMappingsType } from '@aztec/foundation/config';
|
|
5
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
6
|
import { type LogFn } from '@aztec/foundation/log';
|
|
8
7
|
import type { SharedNodeConfig } from '@aztec/node-lib/config';
|
|
9
8
|
import type { ProverConfig } from '@aztec/stdlib/interfaces/server';
|
|
10
|
-
import type {
|
|
9
|
+
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
11
10
|
import type { Command } from 'commander';
|
|
12
11
|
import { type AztecStartOption } from './aztec_start_options.js';
|
|
13
12
|
export declare const enum ExitCode {
|
|
14
13
|
SUCCESS = 0,
|
|
15
14
|
ERROR = 1,
|
|
16
|
-
ROLLUP_UPGRADE = 78
|
|
17
|
-
VERSION_UPGRADE = 79
|
|
15
|
+
ROLLUP_UPGRADE = 78,
|
|
16
|
+
VERSION_UPGRADE = 79,
|
|
18
17
|
SIGHUP = 129,
|
|
19
18
|
SIGINT = 130,
|
|
20
19
|
SIGQUIT = 131,
|
|
@@ -22,23 +21,14 @@ export declare const enum ExitCode {
|
|
|
22
21
|
}
|
|
23
22
|
export declare function shutdown(logFn: LogFn, exitCode: ExitCode, cb?: Array<() => Promise<void>>): Promise<never>;
|
|
24
23
|
export declare function isShuttingDown(): boolean;
|
|
25
|
-
export declare const installSignalHandlers: (logFn: LogFn, cb?:
|
|
24
|
+
export declare const installSignalHandlers: (logFn: LogFn, cb?: (() => Promise<void>)[] | undefined) => void;
|
|
26
25
|
/**
|
|
27
26
|
* Creates logs for the initial accounts
|
|
28
27
|
* @param accounts - The initial accounts
|
|
29
|
-
* @param wallet - A
|
|
28
|
+
* @param wallet - A EmbeddedWallet instance to get the registered accounts
|
|
30
29
|
* @returns A string array containing the initial accounts details
|
|
31
30
|
*/
|
|
32
|
-
export declare function createAccountLogs(
|
|
33
|
-
/**
|
|
34
|
-
* The account object
|
|
35
|
-
*/
|
|
36
|
-
account: AccountManager;
|
|
37
|
-
/**
|
|
38
|
-
* The secret key of the account
|
|
39
|
-
*/
|
|
40
|
-
secretKey: Fr;
|
|
41
|
-
}[], wallet: TestWallet): Promise<string[]>;
|
|
31
|
+
export declare function createAccountLogs(accountManagers: AccountManager[], wallet: EmbeddedWallet): Promise<string[]>;
|
|
42
32
|
export declare function getMaxLengths(sections: {
|
|
43
33
|
[key: string]: AztecStartOption[];
|
|
44
34
|
}): [number, number];
|
|
@@ -74,4 +64,5 @@ export declare function preloadCrsDataForVerifying({ realProofs }: Pick<AztecNod
|
|
|
74
64
|
*/
|
|
75
65
|
export declare function preloadCrsDataForServerSideProving({ realProofs }: Pick<ProverConfig, 'realProofs'>, log: LogFn): Promise<void>;
|
|
76
66
|
export declare function setupUpdateMonitor(autoUpdateMode: SharedNodeConfig['autoUpdate'], updatesLocation: URL, followsCanonicalRollup: boolean, publicClient: ViemClient, registryContractAddress: EthAddress, signalHandlers: Array<() => Promise<void>>, updateNodeConfig?: (config: object) => Promise<void>): Promise<void>;
|
|
77
|
-
|
|
67
|
+
export declare function stringifyConfig(config: object): string;
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXBFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzlELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRiwwQkFBa0IsUUFBUTtJQUN4QixPQUFPLElBQUk7SUFDWCxLQUFLLElBQUk7SUFDVCxjQUFjLEtBQUs7SUFDbkIsZUFBZSxLQUFLO0lBRXBCLE1BQU0sTUFBTTtJQUNaLE1BQU0sTUFBTTtJQUNaLE9BQU8sTUFBTTtJQUNiLE9BQU8sTUFBTTtDQUNkO0FBR0Qsd0JBQWdCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQWdCMUc7QUFFRCx3QkFBZ0IsY0FBYyxJQUFJLE9BQU8sQ0FFeEM7QUFFRCxlQUFPLE1BQU0scUJBQXFCLGtFQWFqQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsaUJBQWlCLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLHFCQXlCaEc7QUFFRCx3QkFBZ0IsYUFBYSxDQUFDLFFBQVEsRUFBRTtJQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFBO0NBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FpQi9GO0FBRUQsd0JBQWdCLGNBQWMsQ0FDNUIsTUFBTSxFQUFFLE1BQU0sRUFDZCxZQUFZLEVBQUUsTUFBTSxFQUNwQixNQUFNLEVBQUUsTUFBTSxFQUNkLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLGdCQUFnQixFQUFFLE1BQU0sR0FDdkIsTUFBTSxDQUtSO0FBaUNELGVBQU8sTUFBTSxVQUFVLHFEQVN0QixDQUFDO0FBRUYsZUFBTyxNQUFNLHVCQUF1QixjQXlCbkMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsZUFBTyxNQUFNLHdCQUF3QiwwRUFTcEMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxlQUFPLE1BQU0sc0JBQXNCLEdBQUksQ0FBQyx3RkFrQ3ZDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsd0JBQXNCLDBCQUEwQixDQUM5QyxFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLEVBQ25ELEdBQUcsRUFBRSxLQUFLLEdBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUtmO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFzQixrQ0FBa0MsQ0FDdEQsRUFBRSxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxFQUNoRCxHQUFHLEVBQUUsS0FBSyxHQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLZjtBQUVELHdCQUFzQixrQkFBa0IsQ0FDdEMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUM5QyxlQUFlLEVBQUUsR0FBRyxFQUNwQixzQkFBc0IsRUFBRSxPQUFPLEVBQy9CLFlBQVksRUFBRSxVQUFVLEVBQ3hCLHVCQUF1QixFQUFFLFVBQVUsRUFDbkMsY0FBYyxFQUFFLEtBQUssQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUMxQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQStFckQ7QUFFRCx3QkFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUl0RCJ9
|