sonamu 0.10.13 → 0.11.1
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/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
- package/dist/api/base-frame.d.ts.map +1 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +3 -2
- package/dist/api/validator.d.ts.map +1 -1
- package/dist/auth/audit-log/events.d.ts.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +3 -3
- package/dist/auth/knex-adapter.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.d.ts +4 -4
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/bin/build-config.d.ts +10 -0
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +130 -6
- package/dist/bin/fixture.d.ts +7 -4
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +161 -13
- package/dist/bin/test-command.d.ts +7 -0
- package/dist/bin/test-command.d.ts.map +1 -1
- package/dist/bin/test-command.js +18 -4
- package/dist/bin/typecheck-web.d.ts +2 -0
- package/dist/bin/typecheck-web.d.ts.map +1 -0
- package/dist/bin/typecheck-web.js +36 -0
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/drivers.d.ts.map +1 -1
- package/dist/cache-control/cache-control.d.ts.map +1 -1
- package/dist/compress/compress.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +1 -1
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.types.d.ts +0 -1
- package/dist/database/base-model.types.d.ts.map +1 -1
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/puri-subset.types.d.ts +0 -1
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-wrapper.d.ts +0 -1
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri.d.ts +0 -1
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.types.d.ts +0 -1
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/dict/en.d.ts +58 -58
- package/dist/dict/en.d.ts.map +1 -1
- package/dist/dict/ko.d.ts +58 -58
- package/dist/dict/ko.d.ts.map +1 -1
- package/dist/dict/rc-keys.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.js +2 -2
- package/dist/dict/utils.d.ts.map +1 -1
- package/dist/entity/entity-manager.d.ts +115 -113
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +25 -19
- package/dist/entity/entity-template-cone.d.ts +4 -4
- package/dist/entity/entity.d.ts +6 -1
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +8 -3
- package/dist/env.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/filter/types.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/logger/configure.d.ts +10 -1
- package/dist/logger/configure.d.ts.map +1 -1
- package/dist/logger/configure.js +30 -5
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +17 -6
- package/dist/migration/migrator.d.ts +12 -1
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +77 -30
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/naite/messaging-types.d.ts +0 -1
- package/dist/naite/messaging-types.d.ts.map +1 -1
- package/dist/naite/naite-reporter.d.ts +0 -1
- package/dist/naite/naite-reporter.d.ts.map +1 -1
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/storage/base-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/drivers.d.ts.map +1 -1
- package/dist/storage/s3-driver.d.ts.map +1 -1
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/stream/ws-audience-resolver.d.ts.map +1 -1
- package/dist/stream/ws-audience.d.ts.map +1 -1
- package/dist/stream/ws-cluster-bus.d.ts.map +1 -1
- package/dist/stream/ws-delivery.d.ts.map +1 -1
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
- package/dist/stream/ws-presence-store.d.ts.map +1 -1
- package/dist/stream/ws-registry.d.ts.map +1 -1
- package/dist/stream/ws-telemetry-memory.d.ts.map +1 -1
- package/dist/stream/ws-telemetry.d.ts.map +1 -1
- package/dist/stream/ws.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +2 -2
- package/dist/syncer/file-patterns.d.ts +17 -17
- package/dist/syncer/filesystem-dependencies.js +1 -1
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/template/implementations/entity.template.d.ts +2 -2
- package/dist/template/implementations/entity.template.d.ts.map +1 -1
- package/dist/template/implementations/entry-server.template.d.ts +2 -2
- package/dist/template/implementations/entry-server.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.d.ts +2 -2
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.d.ts +2 -2
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.d.ts +2 -2
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/http_validators.template.d.ts +2 -2
- package/dist/template/implementations/http_validators.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.d.ts +2 -2
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.d.ts +2 -2
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model_test.template.d.ts +2 -2
- package/dist/template/implementations/model_test.template.d.ts.map +1 -1
- package/dist/template/implementations/queries.template.d.ts +2 -2
- package/dist/template/implementations/queries.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.d.ts +2 -2
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +1 -1
- package/dist/template/implementations/services.template.d.ts +2 -2
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.d.ts +3 -3
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_all_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.d.ts +2 -2
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.d.ts +2 -2
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/template-manager.d.ts.map +1 -1
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/data-explorer.d.ts +2 -2
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
- package/dist/testing/faker-mappings.d.ts.map +1 -1
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +1 -1
- package/dist/testing/fixture-loader.d.ts.map +1 -1
- package/dist/testing/fixture-manager.d.ts +4 -0
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +99 -25
- package/dist/testing/naite-vitest-reporter.d.ts.map +1 -1
- package/dist/testing/parallel-db-manager.d.ts.map +1 -1
- package/dist/tooling/__tests__/helpers/sonamu-test-root.d.ts +10 -0
- package/dist/tooling/__tests__/helpers/sonamu-test-root.d.ts.map +1 -0
- package/dist/tooling/__tests__/helpers/sonamu-test-root.js +42 -0
- package/dist/tooling/cdd-service.d.ts +87 -0
- package/dist/tooling/cdd-service.d.ts.map +1 -0
- package/dist/tooling/cdd-service.js +215 -0
- package/dist/tooling/cli-tooling.d.ts +11 -0
- package/dist/tooling/cli-tooling.d.ts.map +1 -0
- package/dist/tooling/cli-tooling.js +901 -0
- package/dist/tooling/fixture-service.d.ts +29 -0
- package/dist/tooling/fixture-service.d.ts.map +1 -0
- package/dist/tooling/fixture-service.js +53 -0
- package/dist/tooling/index.d.ts +2 -0
- package/dist/tooling/index.d.ts.map +1 -0
- package/dist/tooling/index.js +2 -0
- package/dist/tooling/test-run-client.d.ts +27 -0
- package/dist/tooling/test-run-client.d.ts.map +1 -0
- package/dist/tooling/test-run-client.js +120 -0
- package/dist/tsdown.api.config.js +48 -0
- package/dist/types/types.d.ts +527 -527
- package/dist/types/types.d.ts.map +1 -1
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/utils/formatter.d.ts +6 -0
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +42 -11
- package/dist/utils/model.d.ts +1 -1
- package/dist/vector/chunking.d.ts.map +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/package.json +13 -12
- package/src/api/sonamu.ts +2 -1
- package/src/auth/index.ts +1 -1
- package/src/bin/__tests__/zod-compiler-build.test.ts +67 -0
- package/src/bin/build-config.ts +151 -5
- package/src/bin/fixture.ts +204 -21
- package/src/bin/test-command.ts +27 -4
- package/src/bin/typecheck-web.ts +56 -0
- package/src/dict/sonamu-dictionary.ts +1 -1
- package/src/entity/__tests__/entity-manager-autoload.contract.test.ts +55 -0
- package/src/entity/__tests__/entity-manager-explicit-root-registration.contract.test.ts +107 -0
- package/src/entity/entity-manager.ts +31 -19
- package/src/entity/entity.ts +7 -2
- package/src/logger/__tests__/configure.test.ts +33 -0
- package/src/logger/configure.ts +45 -3
- package/src/migration/__tests__/migrator.test.ts +51 -0
- package/src/migration/migration-set.ts +22 -5
- package/src/migration/migrator.ts +103 -34
- package/src/syncer/api-parser.ts +1 -1
- package/src/testing/fixture-manager.ts +124 -32
- package/src/tooling/__tests__/cdd-rule-bootstrap.contract.test.ts +118 -0
- package/src/tooling/__tests__/cli-tooling-auth.contract.test.ts +72 -0
- package/src/tooling/__tests__/cli-tooling-cone-locale.contract.test.ts +150 -0
- package/src/tooling/__tests__/cli-tooling-entity-patch.contract.test.ts +131 -0
- package/src/tooling/__tests__/cli-tooling-fixture-transfer.contract.test.ts +255 -0
- package/src/tooling/__tests__/cli-tooling-i18n-update.contract.test.ts +104 -0
- package/src/tooling/__tests__/cli-tooling-scaffold.contract.test.ts +86 -0
- package/src/tooling/__tests__/cli-tooling-stub-practice.contract.test.ts +147 -0
- package/src/tooling/__tests__/default-cdd-adapter.contract.test.ts +73 -0
- package/src/tooling/__tests__/helpers/sonamu-test-root.ts +42 -0
- package/src/tooling/__tests__/test-run-client-config.contract.test.ts +154 -0
- package/src/tooling/cdd-service.ts +256 -0
- package/src/tooling/cli-tooling.ts +937 -0
- package/src/tooling/fixture-service.ts +72 -0
- package/src/tooling/index.ts +1 -0
- package/src/tooling/test-run-client.ts +196 -0
- package/src/utils/__tests__/formatter-bin.test.ts +99 -0
- package/src/utils/formatter.ts +74 -10
- package/tsdown.api.config.ts +8 -10
- package/bin/cli.js +0 -75
- package/dist/bin/cli.d.ts +0 -2
- package/dist/bin/cli.d.ts.map +0 -1
- package/dist/bin/cli.js +0 -956
- package/src/bin/cli.ts +0 -1166
|
@@ -74,8 +74,7 @@ var init_migrator = __esmMin((() => {
|
|
|
74
74
|
Migrator = class {
|
|
75
75
|
isMissingMigrationTableError(error) {
|
|
76
76
|
if (!isObjectValue(error) || error === null) return false;
|
|
77
|
-
|
|
78
|
-
return maybePostgresError.code === "42P01" && isStringValue(maybePostgresError.message) && maybePostgresError.message.includes("knex_migrations");
|
|
77
|
+
return error.code === "42P01";
|
|
79
78
|
}
|
|
80
79
|
/** 현재 실행 환경에서 허용된 마이그레이션 대상 키를 반환합니다. */
|
|
81
80
|
getMigrationTargetKeys() {
|
|
@@ -272,6 +271,53 @@ var init_migrator = __esmMin((() => {
|
|
|
272
271
|
}
|
|
273
272
|
}
|
|
274
273
|
/**
|
|
274
|
+
* 대상 DB에서 가장 최근에 적용된 migration batch를 반환합니다.
|
|
275
|
+
*
|
|
276
|
+
* @category 분리형 마이그레이션 API
|
|
277
|
+
*/
|
|
278
|
+
async getLatestAppliedBatch(connKey) {
|
|
279
|
+
this.assertMigrationTarget(connKey);
|
|
280
|
+
const knexOptions = Sonamu.dbConfig[connKey];
|
|
281
|
+
const connection = knexOptions.connection;
|
|
282
|
+
const tConn = createKnexInstance({
|
|
283
|
+
...knexOptions,
|
|
284
|
+
connection: {
|
|
285
|
+
...connection,
|
|
286
|
+
connectionTimeoutMillis: MIGRATION_CONN_TIMEOUT_MS
|
|
287
|
+
},
|
|
288
|
+
pool: {
|
|
289
|
+
...knexOptions.pool,
|
|
290
|
+
min: 0,
|
|
291
|
+
acquireTimeoutMillis: MIGRATION_CONN_TIMEOUT_MS,
|
|
292
|
+
createTimeoutMillis: MIGRATION_CONN_TIMEOUT_MS,
|
|
293
|
+
propagateCreateError: true
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
try {
|
|
297
|
+
const tableName = knexOptions.migrations?.tableName ?? "knex_migrations";
|
|
298
|
+
const schemaName = knexOptions.migrations?.schemaName;
|
|
299
|
+
const migrationsTable = schemaName === void 0 ? tConn(tableName) : tConn(tableName).withSchema(schemaName);
|
|
300
|
+
const latest = await migrationsTable.clone().select("batch").orderBy("batch", "desc").first();
|
|
301
|
+
if (latest === void 0) return {
|
|
302
|
+
batchNo: 0,
|
|
303
|
+
files: []
|
|
304
|
+
};
|
|
305
|
+
const rows = await migrationsTable.clone().select("name").where("batch", latest.batch).orderBy("id", "asc");
|
|
306
|
+
return {
|
|
307
|
+
batchNo: latest.batch,
|
|
308
|
+
files: rows.map(({ name }) => name.replace(/\.ts$/, ""))
|
|
309
|
+
};
|
|
310
|
+
} catch (caught) {
|
|
311
|
+
if (this.isMissingMigrationTableError(caught)) return {
|
|
312
|
+
batchNo: 0,
|
|
313
|
+
files: []
|
|
314
|
+
};
|
|
315
|
+
throw caught;
|
|
316
|
+
} finally {
|
|
317
|
+
await tConn.destroy();
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
275
321
|
* 최신 상태인 기준 DB와 엔티티 정의를 비교해 생성 예정 코드를 반환합니다.
|
|
276
322
|
*
|
|
277
323
|
* @category 분리형 마이그레이션 API
|
|
@@ -436,43 +482,44 @@ var init_migrator = __esmMin((() => {
|
|
|
436
482
|
* @category 분리형 마이그레이션 API
|
|
437
483
|
*/
|
|
438
484
|
async runShadowTest(options) {
|
|
439
|
-
const
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
485
|
+
const target = options?.target ?? "test";
|
|
486
|
+
if (target !== "test" && target !== "fixture") throw Object.assign(/* @__PURE__ */ new Error(`지원하지 않는 Shadow 마이그레이션 대상입니다: ${target}`), {
|
|
487
|
+
code: "INVALID_SHADOW_MIGRATION_TARGET",
|
|
488
|
+
target
|
|
489
|
+
});
|
|
490
|
+
const shadowTarget = target;
|
|
491
|
+
const baseTargetConn = Sonamu.dbConfig[shadowTarget].connection;
|
|
492
|
+
const configuredDatabase = baseTargetConn.database;
|
|
493
|
+
if (!configuredDatabase) throw Object.assign(/* @__PURE__ */ new Error(`Shadow 대상 DB 이름이 없습니다: ${shadowTarget}`), {
|
|
494
|
+
code: "INVALID_SHADOW_DATABASE_CONFIG",
|
|
495
|
+
target: shadowTarget
|
|
496
|
+
});
|
|
497
|
+
const workerId = shadowTarget === "test" && process.env.SONAMU_WORKER_DB === "true" ? process.env.VITEST_POOL_ID : null;
|
|
498
|
+
const templateDatabase = workerId !== null ? `${configuredDatabase}_${workerId ?? "1"}` : configuredDatabase;
|
|
446
499
|
const shadowDatabase = `${templateDatabase}__migration_shadow`;
|
|
500
|
+
const createShadowConnection = (database) => createKnexInstance({
|
|
501
|
+
...Sonamu.dbConfig[shadowTarget],
|
|
502
|
+
connection: {
|
|
503
|
+
...baseTargetConn,
|
|
504
|
+
database
|
|
505
|
+
}
|
|
506
|
+
});
|
|
447
507
|
if (isTest()) {
|
|
448
508
|
await DB.clearTestTransaction();
|
|
449
509
|
await DB.destroy();
|
|
450
510
|
}
|
|
451
|
-
const tdb =
|
|
452
|
-
...Sonamu.dbConfig.test,
|
|
453
|
-
connection: {
|
|
454
|
-
...baseTestConn,
|
|
455
|
-
database: "postgres"
|
|
456
|
-
}
|
|
457
|
-
});
|
|
511
|
+
const tdb = createShadowConnection("postgres");
|
|
458
512
|
try {
|
|
459
513
|
!isTest() && console.log(chalk.magenta(`${shadowDatabase} 삭제`));
|
|
460
|
-
await tdb.raw(
|
|
514
|
+
await tdb.raw("DROP DATABASE IF EXISTS ??", [shadowDatabase]);
|
|
461
515
|
await tdb.raw(`
|
|
462
516
|
SELECT pg_terminate_backend(pg_stat_activity.pid)
|
|
463
517
|
FROM pg_stat_activity
|
|
464
|
-
WHERE datname =
|
|
518
|
+
WHERE datname = ?
|
|
465
519
|
AND pid <> pg_backend_pid();
|
|
466
|
-
|
|
467
|
-
await tdb.raw(
|
|
468
|
-
const sdb =
|
|
469
|
-
...Sonamu.dbConfig.test,
|
|
470
|
-
connection: {
|
|
471
|
-
...tdbConn,
|
|
472
|
-
database: shadowDatabase,
|
|
473
|
-
password: tdbConn.password
|
|
474
|
-
}
|
|
475
|
-
});
|
|
520
|
+
`, [templateDatabase]);
|
|
521
|
+
await tdb.raw("CREATE DATABASE ?? TEMPLATE ??", [shadowDatabase, templateDatabase]);
|
|
522
|
+
const sdb = createShadowConnection(shadowDatabase);
|
|
476
523
|
try {
|
|
477
524
|
const progress = this.createProgressHooks("shadow", "shadow", options);
|
|
478
525
|
const [batchNo, applied] = await sdb.migrate.latest(progress);
|
|
@@ -501,7 +548,7 @@ var init_migrator = __esmMin((() => {
|
|
|
501
548
|
} finally {
|
|
502
549
|
!isTest() && console.log(chalk.magenta(`${shadowDatabase} 삭제`));
|
|
503
550
|
try {
|
|
504
|
-
await tdb.raw(
|
|
551
|
+
await tdb.raw("DROP DATABASE IF EXISTS ??", [shadowDatabase]);
|
|
505
552
|
} catch (e) {
|
|
506
553
|
console.error("Shadow DB 정리 실패:", e);
|
|
507
554
|
} finally {
|
|
@@ -515,4 +562,4 @@ var init_migrator = __esmMin((() => {
|
|
|
515
562
|
init_migrator();
|
|
516
563
|
export { MigrationTargetExecutionError, Migrator, init_migrator };
|
|
517
564
|
|
|
518
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZ3JhdGlvbi9taWdyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IG1rZGlyLCByZWFkZGlyLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgeyBncm91cCwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyB0eXBlIFNvbmFtdURCQ29uZmlnIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBjcmVhdGVLbmV4SW5zdGFuY2UgfSBmcm9tIFwiLi4vZGF0YWJhc2Uva25leFwiO1xuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vZGljdC9zZFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGdldFNvbmFtdUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2VudlwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcIi4uL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IHR5cGUgR2VuTWlncmF0aW9uQ29kZSwgdHlwZSBNaWdyYXRpb25TZXQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGlzTG9jYWwsIGlzVGVzdCB9IGZyb20gXCIuLi91dGlscy9jb250cm9sbGVyXCI7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbHMvZnMtdXRpbHNcIjtcbmltcG9ydCB7IGlzT2JqZWN0VmFsdWUsIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVBbHRlckNvZGUsIGdlbmVyYXRlQ3JlYXRlQ29kZSB9IGZyb20gXCIuL2NvZGUtZ2VuZXJhdGlvblwiO1xuaW1wb3J0IHsgZ2V0TWlncmF0aW9uU2V0RnJvbUVudGl0eSB9IGZyb20gXCIuL21pZ3JhdGlvbi1zZXRcIjtcbmltcG9ydCB7IFBvc3RncmVTUUxTY2hlbWFSZWFkZXIgfSBmcm9tIFwiLi9wb3N0Z3Jlc3FsLXNjaGVtYS1yZWFkZXJcIjtcbmltcG9ydCB7IFNsYWNrQ29uZmlybSB9IGZyb20gXCIuL3NsYWNrLWNvbmZpcm1cIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29ublN0cmluZyxcbiAgdHlwZSBNaWdyYXRpb25BY3Rpb24sXG4gIHR5cGUgTWlncmF0aW9uQ29kZSxcbiAgdHlwZSBNaWdyYXRpb25Db25uZWN0aW9uTWV0YSxcbiAgdHlwZSBNaWdyYXRpb25Db25uZWN0aW9uU3RhdHVzLFxuICB0eXBlIE1pZ3JhdGlvblByb2dyZXNzRXZlbnQsXG4gIHR5cGUgTWlncmF0aW9uUnVuT3B0aW9ucyxcbiAgdHlwZSBNaWdyYXRpb25TdGF0dXMsXG4gIHR5cGUgTWlncmF0aW9uVGFyZ2V0LFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBNaWdyYXRpb25SZXN1bHQgPSB7XG4gIGNvbm5LZXk6IHN0cmluZztcbiAgYmF0Y2hObzogbnVtYmVyO1xuICBhcHBsaWVkOiBzdHJpbmdbXTtcbn1bXTtcblxuZnVuY3Rpb24gcGFkRGF0ZVBhcnQobnVtYmVyOiBudW1iZXIsIHNpemU6IG51bWJlciA9IDIpOiBzdHJpbmcge1xuICByZXR1cm4gbnVtYmVyLnRvU3RyaW5nKCkucGFkU3RhcnQoc2l6ZSwgXCIwXCIpO1xufVxuXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uVGFyZ2V0RXhlY3V0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjb25uS2V5OiBNaWdyYXRpb25UYXJnZXQgfCBcInNoYWRvd1wiLFxuICAgIGNhdXNlOiB1bmtub3duLFxuICApIHtcbiAgICBzdXBlcihjYXVzZSBpbnN0YW5jZW9mIEVycm9yID8gY2F1c2UubWVzc2FnZSA6IFN0cmluZyhjYXVzZSkpO1xuICAgIHRoaXMubmFtZSA9IFwiTWlncmF0aW9uVGFyZ2V0RXhlY3V0aW9uRXJyb3JcIjtcbiAgfVxufVxuXG4vLyDrp4jsnbTqt7jroIjsnbTshZgg7IOB7YOcIOyhsO2ajCDsi5wgREIg7Jew6rKwIO2ZleyduCDtg4DsnoTslYTsm4MobXMpLlxuLy8gY3JlYXRlS25leEluc3RhbmNl7J2YIOy7pOuEpeyFmCDtmo3rk50g7YOA7J6E7JWE7JuDKDMw7LSIKeyXkCBzdGF0dXMvbGlzdC9jdXJyZW50VmVyc2lvbuydtFxuLy8g6rCB6rCBIOqxuOumrOuptCBDTEkvVUnqsIAg7LWc64yAIOyImOyLrSDstIggaGFuZ+2VnOuLpC4g7KCV7IOBIOydkeuLteydgCDsiJjrsLEgbXPsnbTrr4DroZwgNey0iOuptCDstqnrtoTtlZjri6QuXG5jb25zdCBNSUdSQVRJT05fQ09OTl9USU1FT1VUX01TID0gNTAwMDtcbmNvbnN0IExPQ0FMX0RCX0hPU1RTID0gbmV3IFNldChbXCJsb2NhbGhvc3RcIiwgXCIxMjcuMC4wLjFcIiwgXCIwLjAuMC4wXCIsIFwiOjoxXCJdKTtcblxuLyoqXG4gKiDso7zslrTsp4QgUHJvbWlzZeqwgCBtcyDslYjsl5Ag7JmE66OM65CY7KeAIOyViuycvOuptCBvblRpbWVvdXQg7JeQ65+s66GcIHJlamVjdO2VnOuLpC5cbiAqIOybkOuzuCBQcm9taXNlIOyekOyytOuKlCDqs4Tsho0g7KeE7ZaJ65CY66+A66GcLCDtmLjstpzsuKHsl5DshJwg7Luk64Sl7IWYIOygleumrChkZXN0cm95KeulvCDssYXsnoTsp4Tri6QuXG4gKi9cbmZ1bmN0aW9uIHdpdGhUaW1lb3V0PFQ+KHByb21pc2U6IFByb21pc2U8VD4sIG1zOiBudW1iZXIsIG9uVGltZW91dDogKCkgPT4gRXJyb3IpOiBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG9uVGltZW91dCgpKSwgbXMpO1xuICAgIHByb21pc2UudGhlbihcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfSk7XG59XG5cbi8qKlxuICogTm90ZSAyMDI2LTA4LTI2LCDrs5HspIBcbiAqIOydtCDtgbTrnpjsiqTsl5DshJwgZGVwcmVjYXRlZCDrtpnslrTsnojripQg7Lmc6rWs65Ok7J2AIO2YhCBDTEnrpbwg7JyE7ZWcIO2VmOychCDtmLjtmZjsnbTri4gsXG4gKiBDTEkg66as7Yyp7Yag66eBIOyLnOygkOyXkOyEnCDsoJzqsbDtlbTso7zshZTrj4Qg66y067Cp7ZWp64uI64ukLlxuICovXG5leHBvcnQgY2xhc3MgTWlncmF0b3Ige1xuICBwcml2YXRlIGlzTWlzc2luZ01pZ3JhdGlvblRhYmxlRXJyb3I8VmFsdWU+KGVycm9yOiBWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXNPYmplY3RWYWx1ZShlcnJvcikgfHwgZXJyb3IgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXliZVBvc3RncmVzRXJyb3IgPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBlcnJvciBhcyB7XG4gICAgICAgIGNvZGU/OiB1bmtub3duO1xuICAgICAgICBtZXNzYWdlPzogdW5rbm93bjtcbiAgICAgIH07XG4gICAgcmV0dXJuIChcbiAgICAgIG1heWJlUG9zdGdyZXNFcnJvci5jb2RlID09PSBcIjQyUDAxXCIgJiZcbiAgICAgIGlzU3RyaW5nVmFsdWUobWF5YmVQb3N0Z3Jlc0Vycm9yLm1lc3NhZ2UpICYmXG4gICAgICBtYXliZVBvc3RncmVzRXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcImtuZXhfbWlncmF0aW9uc1wiKVxuICAgICk7XG4gIH1cblxuICAvKiog7ZiE7J6sIOyLpO2WiSDtmZjqsr3sl5DshJwg7ZeI7Jqp65CcIOuniOydtOq3uOugiOydtOyFmCDrjIDsg4Eg7YKk66W8IOuwmO2ZmO2VqeuLiOuLpC4gKi9cbiAgZ2V0TWlncmF0aW9uVGFyZ2V0S2V5cygpOiBNaWdyYXRpb25UYXJnZXRbXSB7XG4gICAgY29uc3QgY29ubktleXMgPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBPYmplY3Qua2V5cyhcbiAgICAgICAgU29uYW11LmRiQ29uZmlnLFxuICAgICAgKS5maWx0ZXIoKGtleSkgPT4gIWtleS5lbmRzV2l0aChcIl9yZWFkb25seVwiKSkgYXMgKGtleW9mIFNvbmFtdURCQ29uZmlnKVtdO1xuXG4gICAgaWYgKGlzTG9jYWwoKSkge1xuICAgICAgcmV0dXJuIGNvbm5LZXlzO1xuICAgIH1cblxuICAgIGNvbnN0IGVudmlyb25tZW50ID0gZ2V0U29uYW11RW52aXJvbm1lbnQoKTtcbiAgICByZXR1cm4gY29ubktleXMuZmlsdGVyKChrZXkpID0+IGtleSA9PT0gZW52aXJvbm1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5NaWdyYXRpb25zU2VxdWVudGlhbGx5KFxuICAgIGNvbm5zOiB7IGNvbm5LZXk6IGtleW9mIFNvbmFtdURCQ29uZmlnOyBrbmV4OiBLbmV4IH1bXSxcbiAgICBhY3Rpb246IFwiYXBwbHlcIiB8IFwicm9sbGJhY2tcIixcbiAgICBvcHRpb25zPzogTWlncmF0aW9uUnVuT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCByZXN1bHRzOiBNaWdyYXRpb25SZXN1bHQgPSBbXTtcblxuICAgIGZvciAoY29uc3QgeyBjb25uS2V5LCBrbmV4IH0gb2YgY29ubnMpIHtcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy5jcmVhdGVQcm9ncmVzc0hvb2tzKGFjdGlvbiwgY29ubktleSwgb3B0aW9ucyk7XG4gICAgICBsZXQgbWlncmF0aW9uUmVzdWx0OiBbbnVtYmVyLCBzdHJpbmdbXV07XG4gICAgICB0cnkge1xuICAgICAgICBtaWdyYXRpb25SZXN1bHQgPVxuICAgICAgICAgIGFjdGlvbiA9PT0gXCJhcHBseVwiXG4gICAgICAgICAgICA/IGF3YWl0IGtuZXgubWlncmF0ZS5sYXRlc3QocHJvZ3Jlc3MpXG4gICAgICAgICAgICA6IGF3YWl0IGtuZXgubWlncmF0ZS5yb2xsYmFjayhwcm9ncmVzcyk7XG4gICAgICB9IGNhdGNoIChjYXVnaHQpIHtcbiAgICAgICAgLy8gbGlmZWN5Y2xlIGhvb2sg7J207KCE7J2YIOyXsOqysMK3bG9ja8K366qp66GdIOyhsO2ajCDsi6TtjKjrj4Qg7Iuk7KCcIOuMgOyDgSBEQuyXkCDqt4Dsho3tlanri4jri6QuXG4gICAgICAgIHRocm93IG5ldyBNaWdyYXRpb25UYXJnZXRFeGVjdXRpb25FcnJvcihjb25uS2V5LCBjYXVnaHQpO1xuICAgICAgfVxuICAgICAgY29uc3QgW2JhdGNoTm8sIGFwcGxpZWRdID0gbWlncmF0aW9uUmVzdWx0O1xuXG4gICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICBjb25uS2V5LFxuICAgICAgICBiYXRjaE5vLFxuICAgICAgICBhcHBsaWVkLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhvcHRpb25zLCB7XG4gICAgICAgIHR5cGU6IFwidGFyZ2V0LWNvbXBsZXRlXCIsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY29ubktleSxcbiAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgZmlsZXM6IGFwcGxpZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgbWlncmF0aW9uTmFtZTxWYWx1ZT4obWlncmF0aW9uOiBWYWx1ZSk6IHN0cmluZyB7XG4gICAgaWYgKGlzU3RyaW5nVmFsdWUobWlncmF0aW9uKSkge1xuICAgICAgcmV0dXJuIHBhdGguYmFzZW5hbWUobWlncmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0VmFsdWUobWlncmF0aW9uKSAmJiBtaWdyYXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9XG4gICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gbWlncmF0aW9uIGFzIHtcbiAgICAgICAgICBmaWxlPzogdW5rbm93bjtcbiAgICAgICAgICBuYW1lPzogdW5rbm93bjtcbiAgICAgICAgfTtcbiAgICAgIGlmIChpc1N0cmluZ1ZhbHVlKGNhbmRpZGF0ZS5maWxlKSkge1xuICAgICAgICByZXR1cm4gcGF0aC5iYXNlbmFtZShjYW5kaWRhdGUuZmlsZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNTdHJpbmdWYWx1ZShjYW5kaWRhdGUubmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHBhdGguYmFzZW5hbWUoY2FuZGlkYXRlLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKG1pZ3JhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm9ncmVzcyhvcHRpb25zOiBNaWdyYXRpb25SdW5PcHRpb25zIHwgdW5kZWZpbmVkLCBldmVudDogTWlncmF0aW9uUHJvZ3Jlc3NFdmVudCkge1xuICAgIHRyeSB7XG4gICAgICBvcHRpb25zPy5vblByb2dyZXNzPy4oZXZlbnQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyDsp4TtlonrpaAg7IaM67mE7J6Q7J2YIOyLpO2MqOqwgCDsnbTrr7gg7Iuc7J6R7ZWcIERCIOyekeyXheqzvCDsoJXrpqzrpbwg67Cp7ZW07ZWY66m0IOyViCDrkKnri4jri6QuXG4gICAgICBjb25zb2xlLndhcm4oXCJNaWdyYXRpb24gcHJvZ3Jlc3Mgb2JzZXJ2ZXIgZmFpbGVkOlwiLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQcm9ncmVzc0hvb2tzKFxuICAgIGFjdGlvbjogTWlncmF0aW9uQWN0aW9uLFxuICAgIGNvbm5LZXk6IE1pZ3JhdGlvblRhcmdldCB8IFwic2hhZG93XCIsXG4gICAgb3B0aW9ucz86IE1pZ3JhdGlvblJ1bk9wdGlvbnMsXG4gICk6IEtuZXguTWlncmF0b3JDb25maWdXaXRoTGlmZWN5Y2xlSG9va3Mge1xuICAgIGxldCBmaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbWl0RmlsZSA9IDxWYWx1ZT4odHlwZTogXCJmaWxlLXN0YXJ0XCIgfCBcImZpbGUtZXhlY3V0ZWRcIiwgbWlncmF0aW9uOiBWYWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZmlsZSA9IHRoaXMubWlncmF0aW9uTmFtZShtaWdyYXRpb24pO1xuICAgICAgY29uc3QgaW5kZXggPSBNYXRoLm1heChmaWxlcy5pbmRleE9mKGZpbGUpLCAwKTtcbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKG9wdGlvbnMsIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjb25uS2V5LFxuICAgICAgICBmaWxlLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgdG90YWw6IGZpbGVzLmxlbmd0aCxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgYmVmb3JlQWxsOiBhc3luYyAoX2tuZXgsIG1pZ3JhdGlvbnMpID0+IHtcbiAgICAgICAgZmlsZXMgPSBtaWdyYXRpb25zLm1hcCgobWlncmF0aW9uKSA9PiB0aGlzLm1pZ3JhdGlvbk5hbWUobWlncmF0aW9uKSk7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKG9wdGlvbnMsIHsgdHlwZTogXCJ0YXJnZXQtc3RhcnRcIiwgYWN0aW9uLCBjb25uS2V5LCBmaWxlcyB9KTtcbiAgICAgIH0sXG4gICAgICBiZWZvcmVFYWNoOiBhc3luYyAoX2tuZXgsIG1pZ3JhdGlvbnMpID0+IHtcbiAgICAgICAgbWlncmF0aW9ucy5mb3JFYWNoKChtaWdyYXRpb24pID0+IGVtaXRGaWxlKFwiZmlsZS1zdGFydFwiLCBtaWdyYXRpb24pKTtcbiAgICAgIH0sXG4gICAgICBhZnRlckVhY2g6IGFzeW5jIChfa25leCwgbWlncmF0aW9ucykgPT4ge1xuICAgICAgICBtaWdyYXRpb25zLmZvckVhY2goKG1pZ3JhdGlvbikgPT4gZW1pdEZpbGUoXCJmaWxlLWV4ZWN1dGVkXCIsIG1pZ3JhdGlvbikpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NlcnRNaWdyYXRpb25UYXJnZXQoY29ubktleTogTWlncmF0aW9uVGFyZ2V0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmdldE1pZ3JhdGlvblRhcmdldEtleXMoKS5pbmNsdWRlcyhjb25uS2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTWlncmF0aW9uIHRhcmdldCBpcyBub3QgYWxsb3dlZCBpbiBOT0RFX0VOVj0ke2dldFNvbmFtdUVudmlyb25tZW50KCl9OiAke1N0cmluZyhjb25uS2V5KX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog66eI7J206re466CI7J207IWYIOuMgOyDgSDsu6TrhKXshZjsnZgg7KCV7KCBIOuplO2DgOuNsOydtO2EsOulvCDrsJjtmZjtlanri4jri6QuXG4gICAqIERC7JeQIOyXsOqysO2VmOyngCDslYrsnLzrr4DroZwgQ0xJ7JmAIFdlYuydtCDsg4Htg5wg7KGw7ZqMIOyghOyXkCDsponsi5wg7IKs7Jqp7ZWgIOyImCDsnojsirXri4jri6QuXG4gICAqXG4gICAqIEBjYXRlZ29yeSDrtoTrpqztmJUg66eI7J206re466CI7J207IWYIEFQSVxuICAgKi9cbiAgZ2V0Q29ubmVjdGlvbnMoKTogTWlncmF0aW9uQ29ubmVjdGlvbk1ldGFbXSB7XG4gICAgY29uc3Qgc2xhY2tDb25maXJtID0gbmV3IFNsYWNrQ29uZmlybSgpO1xuICAgIHJldHVybiB0aGlzLmdldE1pZ3JhdGlvblRhcmdldEtleXMoKS5tYXAoKGNvbm5LZXkpID0+IHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPVxuICAgICAgICAvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFNvbmFtdS5kYkNvbmZpZ1tcbiAgICAgICAgICBjb25uS2V5XG4gICAgICAgIF0uY29ubmVjdGlvbiBhcyBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZztcbiAgICAgIGNvbnN0IGhvc3QgPSBjb25uZWN0aW9uLmhvc3QgPz8gXCJsb2NhbGhvc3RcIjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbm5LZXksXG4gICAgICAgIG5hbWU6IFN0cmluZyhjb25uS2V5KSxcbiAgICAgICAgaG9zdCxcbiAgICAgICAgcG9ydDogY29ubmVjdGlvbi5wb3J0ID8/IDU0MzIsXG4gICAgICAgIGRhdGFiYXNlOiBjb25uZWN0aW9uLmRhdGFiYXNlID8/IFwiXCIsXG4gICAgICAgIHJlbW90ZTogIUxPQ0FMX0RCX0hPU1RTLmhhcyhob3N0LnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICByZXF1aXJlc0FwcHJvdmFsOiBzbGFja0NvbmZpcm0uaXNUYXJnZXRSZXF1aXJlc0FwcHJvdmFsKGNvbm5LZXkpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDshozsiqTsl5Ag7KG07J6s7ZWY64qUIOuniOydtOq3uOugiOydtOyFmCDtjIzsnbwg66qp66Gd7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAgICpcbiAgICogQGNhdGVnb3J5IOu2hOumrO2YlSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBnZXRNaWdyYXRpb25Db2RlcygpOiBQcm9taXNlPE1pZ3JhdGlvbkNvZGVbXT4ge1xuICAgIGNvbnN0IHNyY01pZ3JhdGlvbnNEaXIgPSBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBcInNyY1wiLCBcIm1pZ3JhdGlvbnNcIik7IC8vIOydtOqxtCDtmZjqsr3sl5Ag6rSA6rOE7JeG7J20IO2VreyDgSBzcmPsl5DshJwg7LC+7JWE7JW8IO2VtOyalC5cblxuICAgIGlmICghKGF3YWl0IGV4aXN0cyhzcmNNaWdyYXRpb25zRGlyKSkpIHtcbiAgICAgIGF3YWl0IG1rZGlyKHNyY01pZ3JhdGlvbnNEaXIsIHtcbiAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29kZXMgPSAoYXdhaXQgcmVhZGRpcihzcmNNaWdyYXRpb25zRGlyKSlcbiAgICAgIC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoXCIudHNcIikpXG4gICAgICAubWFwKChmKSA9PiAoe1xuICAgICAgICBuYW1lOiBmLnJlcGxhY2UoXCIudHNcIiwgXCJcIiksXG4gICAgICAgIHBhdGg6IHBhdGguam9pbihzcmNNaWdyYXRpb25zRGlyLCBmKSxcbiAgICAgIH0pKVxuICAgICAgLnRvU29ydGVkKChhLCBiKSA9PiAoYS5uYW1lIDwgYi5uYW1lID8gMSA6IC0xKSk7IC8vIOydtOumhCDrgrTrprzssKjsiJwg7KCV66CsKOy1nOyLoOyInClcblxuICAgIE5haXRlLnQoXCJtaWdyYXRvcjpnZXRNaWdyYXRpb25Db2RlczpyZXN1bHRzXCIsIGNvZGVzKTtcbiAgICByZXR1cm4gY29kZXM7XG4gIH1cblxuICAvKipcbiAgICog7Luk64Sl7IWYIO2VmOuCmOydmCDtmITsnqwg67KE7KCE6rO8IHBlbmRpbmcg66qp66Gd7J2EIOuPheumveyggeycvOuhnCDsobDtmoztlanri4jri6QuXG4gICAqIOyXrOufrCDrjIDsg4HsnYAg7Zi47Lac7J6Q6rCAIOuzkeugrOuhnCDsobDrpr3tlaAg7IiYIOyeiOyKteuLiOuLpC5cbiAgICpcbiAgICogQGNhdGVnb3J5IOu2hOumrO2YlSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBnZXRDb25uZWN0aW9uU3RhdHVzKGNvbm5LZXk6IE1pZ3JhdGlvblRhcmdldCk6IFByb21pc2U8TWlncmF0aW9uQ29ubmVjdGlvblN0YXR1cz4ge1xuICAgIHRoaXMuYXNzZXJ0TWlncmF0aW9uVGFyZ2V0KGNvbm5LZXkpO1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGNvZGVzID0gYXdhaXQgdGhpcy5nZXRNaWdyYXRpb25Db2RlcygpO1xuICAgIGNvbnN0IGtuZXhPcHRpb25zID0gU29uYW11LmRiQ29uZmlnW2Nvbm5LZXldO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBrbmV4T3B0aW9ucy5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnO1xuICAgIC8vIFNBRkVUWTogS25leOqwgCDsoJzqs7XtlZwgUG9zdGdyZVNRTCDsl7DqsrAg6rWs7ISx7J2EIOuzteyCrO2VtCB0aW1lb3V0IO2VhOuTnOunjCDrja7slrTsk7Tri6QuXG4gICAgY29uc3QgdENvbm4gPSBjcmVhdGVLbmV4SW5zdGFuY2Uoe1xuICAgICAgLi4ua25leE9wdGlvbnMsXG4gICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgIC4uLmNvbm5lY3Rpb24sXG4gICAgICAgIGNvbm5lY3Rpb25UaW1lb3V0TWlsbGlzOiBNSUdSQVRJT05fQ09OTl9USU1FT1VUX01TLFxuICAgICAgfSxcbiAgICAgIHBvb2w6IHtcbiAgICAgICAgLi4ua25leE9wdGlvbnMucG9vbCxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBhY3F1aXJlVGltZW91dE1pbGxpczogTUlHUkFUSU9OX0NPTk5fVElNRU9VVF9NUyxcbiAgICAgICAgY3JlYXRlVGltZW91dE1pbGxpczogTUlHUkFUSU9OX0NPTk5fVElNRU9VVF9NUyxcbiAgICAgICAgcHJvcGFnYXRlQ3JlYXRlRXJyb3I6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdpdGhUaW1lb3V0KHRDb25uLnJhdyhcInNlbGVjdCAxXCIpLCBNSUdSQVRJT05fQ09OTl9USU1FT1VUX01TLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAgICAgICAgYERCIOyXsOqysCDsi5zqsIQg7LSI6rO8ICgke01JR1JBVElPTl9DT05OX1RJTUVPVVRfTVN9bXMpIOKAlCAke2Nvbm5lY3Rpb24uaG9zdH06JHtjb25uZWN0aW9uLnBvcnR9LyR7Y29ubmVjdGlvbi5kYXRhYmFzZX1gLFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3Qgc3RhdHVzOiBudW1iZXIgfCBcImVycm9yXCIgPSBhd2FpdCB0Q29ubi5taWdyYXRlLnN0YXR1cygpLmNhdGNoKChjYXVnaHQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNNaXNzaW5nTWlncmF0aW9uVGFibGVFcnJvcihjYXVnaHQpKSB7XG4gICAgICAgICAgcmV0dXJuIGNvZGVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlcnJvciA9IGNhdWdodCBpbnN0YW5jZW9mIEVycm9yID8gY2F1Z2h0Lm1lc3NhZ2UgOiBTdHJpbmcoY2F1Z2h0KTtcbiAgICAgICAgcmV0dXJuIFwiZXJyb3JcIiBhcyBjb25zdDtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcGVuZGluZzogc3RyaW5nW10gPSBhd2FpdCB0Q29ubi5taWdyYXRlLmxpc3QoKS50aGVuKFxuICAgICAgICAoWywgZmlsZXNdOiBbdW5rbm93bltdLCB7IGZpbGU6IHN0cmluZyB9W11dKSA9PlxuICAgICAgICAgIGZpbGVzLm1hcCgoeyBmaWxlIH0pID0+IGZpbGUucmVwbGFjZSgvXFwudHMkLywgXCJcIikpLFxuICAgICAgICAoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pc01pc3NpbmdNaWdyYXRpb25UYWJsZUVycm9yKGNhdXNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvZGVzLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlcnJvciA/Pz0gY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGNhdXNlLm1lc3NhZ2UgOiBTdHJpbmcoY2F1c2UpO1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBjb25zdCBjdXJyZW50VmVyc2lvbjogc3RyaW5nIHwgXCJub25lXCIgfCBcImVycm9yXCIgPSBhd2FpdCB0Q29ubi5taWdyYXRlXG4gICAgICAgIC5jdXJyZW50VmVyc2lvbigpXG4gICAgICAgIC5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pc01pc3NpbmdNaWdyYXRpb25UYWJsZUVycm9yKGNhdXNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibm9uZVwiIGFzIGNvbnN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlcnJvciA/Pz0gY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGNhdXNlLm1lc3NhZ2UgOiBTdHJpbmcoY2F1c2UpO1xuICAgICAgICAgIHJldHVybiBcImVycm9yXCIgYXMgY29uc3Q7XG4gICAgICAgIH0pO1xuICAgICAgTmFpdGUudChcIm1pZ3JhdG9yOmdldFN0YXR1czpzdGF0dXNcIiwgc3RhdHVzKTtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXM6IE1pZ3JhdGlvbkNvbm5lY3Rpb25TdGF0dXMgPSB7XG4gICAgICAgIGNvbm5LZXksXG4gICAgICAgIGN1cnJlbnRWZXJzaW9uLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHBlbmRpbmcsXG4gICAgICAgIGxhdGVuY3lNczogcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICB9O1xuICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIGNvbm5lY3Rpb25TdGF0dXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uU3RhdHVzO1xuICAgIH0gY2F0Y2ggKGNhdWdodCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBjYXVnaHQgaW5zdGFuY2VvZiBFcnJvciA/IGNhdWdodC5tZXNzYWdlIDogU3RyaW5nKGNhdWdodCk7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgICBgJHtTdHJpbmcoY29ubktleSl97J2YIOuniOydtOq3uOugiOydtOyFmCDsg4Htg5zrpbwg6rCA7KC47Jik64qUIOuNsOyXkCDsi6TtjKjtlZjsmIDsirXri4jri6QuXFxuJHtlcnJvcn1gLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbm5LZXksXG4gICAgICAgIGN1cnJlbnRWZXJzaW9uOiBcImVycm9yXCIsXG4gICAgICAgIHN0YXR1czogXCJlcnJvclwiLFxuICAgICAgICBwZW5kaW5nOiBbXSxcbiAgICAgICAgbGF0ZW5jeU1zOiBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgICAgZXJyb3IsXG4gICAgICB9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCB3aXRoVGltZW91dCh0Q29ubi5kZXN0cm95KCksIE1JR1JBVElPTl9DT05OX1RJTUVPVVRfTVMsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcImNvbm5lY3Rpb24gZGVzdHJveSB0aW1lb3V0XCIpO1xuICAgICAgfSkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDstZzsi6Ag7IOB7YOc7J24IOq4sOykgCBEQuyZgCDsl5Tti7Dti7Ag7KCV7J2Y66W8IOu5hOq1kO2VtCDsg53shLEg7JiI7KCVIOy9lOuTnOulvCDrsJjtmZjtlanri4jri6QuXG4gICAqXG4gICAqIEBjYXRlZ29yeSDrtoTrpqztmJUg66eI7J206re466CI7J207IWYIEFQSVxuICAgKi9cbiAgYXN5bmMgZ2V0UHJlcGFyZWRDb2Rlcyhjb21wYXJlQ29ubktleTogTWlncmF0aW9uVGFyZ2V0KTogUHJvbWlzZTxHZW5NaWdyYXRpb25Db2RlW10+IHtcbiAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLmdldENvbm5lY3Rpb25TdGF0dXMoY29tcGFyZUNvbm5LZXkpO1xuICAgIGlmIChzdGF0dXMuc3RhdHVzICE9PSAwIHx8IHN0YXR1cy5lcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBNaWdyYXRpb24gY29tcGFyaXNvbiByZXF1aXJlcyBhbiB1cC10by1kYXRlIGRhdGFiYXNlOiAke1N0cmluZyhjb21wYXJlQ29ubktleSl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcGFyZVdpdGhDb25uZWN0aW9uKGNvbXBhcmVDb25uS2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29tcGFyZVdpdGhDb25uZWN0aW9uKGNvbXBhcmVDb25uS2V5OiBNaWdyYXRpb25UYXJnZXQpIHtcbiAgICBjb25zdCBjb21wYXJlREIgPSBjcmVhdGVLbmV4SW5zdGFuY2UoU29uYW11LmRiQ29uZmlnW2NvbXBhcmVDb25uS2V5XSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbXBhcmVNaWdyYXRpb25zKGNvbXBhcmVEQik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGNvbXBhcmVEQi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIOyLoOq3nCBVSeyXkOyEnOuKlCDsu6TrhKXshZjrs4Qg7KGw7ZqMIEFQSeulvCDsgqzsmqntlanri4jri6QuXG4gICAqIOq4sOyhtCBDTEnsmYAg7Iqk7YGs66a97Yq4IO2YuO2ZmOydhCDsnITtlbQg7KCE7LK0IOyDge2DnOulvCDsobDrpr3tlanri4jri6QuXG4gICAqIEBjYXRlZ29yeSDtmLjtmZjsmqkg66eI7J206re466CI7J207IWYIEFQSVxuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdHVzKCk6IFByb21pc2U8TWlncmF0aW9uU3RhdHVzPiB7XG4gICAgY29uc3QgW2NvZGVzLCBjb25uZWN0aW9uc10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmdldE1pZ3JhdGlvbkNvZGVzKCksXG4gICAgICBQcm9taXNlLnJlc29sdmUodGhpcy5nZXRDb25uZWN0aW9ucygpKSxcbiAgICBdKTtcbiAgICBOYWl0ZS50KFwibWlncmF0b3I6Z2V0U3RhdHVzOmNvZGVzXCIsIGNvZGVzKTtcblxuICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29ubmVjdGlvbnMubWFwKCh7IGNvbm5LZXkgfSkgPT4gdGhpcy5nZXRDb25uZWN0aW9uU3RhdHVzKGNvbm5LZXkpKSxcbiAgICApO1xuICAgIGNvbnN0IGNvbm5zID0gY29ubmVjdGlvbnMubWFwKChjb25uZWN0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdHVzID0gY29ubmVjdGlvblN0YXR1c2VzW2luZGV4XTtcbiAgICAgIGFzc2VydChzdGF0dXMgIT09IHVuZGVmaW5lZCk7XG4gICAgICBjb25zdCBjb25maWd1cmVkID1cbiAgICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBTb25hbXUuZGJDb25maWdbXG4gICAgICAgICAgY29ubmVjdGlvbi5jb25uS2V5XG4gICAgICAgIF0uY29ubmVjdGlvbiBhcyBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGNvbm5lY3Rpb24ubmFtZSxcbiAgICAgICAgY29ubktleTogY29ubmVjdGlvbi5jb25uS2V5LFxuICAgICAgICBjb25uU3RyaW5nOlxuICAgICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gYHBnOi8vJHtjb25maWd1cmVkLnVzZXIgPz8gXCJcIn1AJHtjb25maWd1cmVkLmhvc3R9OiR7Y29uZmlndXJlZC5wb3J0fS8ke2NvbmZpZ3VyZWQuZGF0YWJhc2V9YCBhcyBDb25uU3RyaW5nLFxuICAgICAgICBjdXJyZW50VmVyc2lvbjogc3RhdHVzLmN1cnJlbnRWZXJzaW9uLFxuICAgICAgICBzdGF0dXM6IHN0YXR1cy5zdGF0dXMsXG4gICAgICAgIHBlbmRpbmc6IHN0YXR1cy5wZW5kaW5nLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBOYWl0ZS50KFwibWlncmF0b3I6Z2V0U3RhdHVzOmNvbm5zXCIsIGNvbm5zKTtcblxuICAgIGNvbnN0IGNvbXBhcmVDb25uID0gY29ubmVjdGlvblN0YXR1c2VzLmZpbmQoXG4gICAgICAoeyBzdGF0dXMsIGVycm9yIH0pID0+IHN0YXR1cyA9PT0gMCAmJiBlcnJvciA9PT0gdW5kZWZpbmVkLFxuICAgICk7XG4gICAgY29uc3QgcHJlcGFyZWRDb2RlcyA9XG4gICAgICBjb21wYXJlQ29ubiA9PT0gdW5kZWZpbmVkID8gW10gOiBhd2FpdCB0aGlzLmNvbXBhcmVXaXRoQ29ubmVjdGlvbihjb21wYXJlQ29ubi5jb25uS2V5KTtcbiAgICBOYWl0ZS50KFwibWlncmF0b3I6Z2V0U3RhdHVzOnByZXBhcmVkQ29kZXNcIiwgcHJlcGFyZWRDb2Rlcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29ubnMsXG4gICAgICBjb2RlcyxcbiAgICAgIHByZXBhcmVkQ29kZXMsXG4gICAgICBlcnJvcjogY29ubmVjdGlvblN0YXR1c2VzLmZpbmQoKHsgZXJyb3IgfSkgPT4gZXJyb3IgIT09IHVuZGVmaW5lZCk/LmVycm9yLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog64yA7IOBIERC7JeQIHBlbmRpbmcg66eI7J206re466CI7J207IWY7J2EIOyggeyaqe2VqeuLiOuLpC5cbiAgICogQ0xJ7JmAIFdlYuydgCDqsJnsnYAg66mU7ISc65Oc66W8IOyCrOyaqe2VmOupsCwgV2Vi7J2AIGBvblByb2dyZXNzYOulvCBzdHJlYW3snLzroZwg67OA7ZmY7ZWp64uI64ukLlxuICAgKlxuICAgKiBAY2F0ZWdvcnkg67aE66as7ZiVIOuniOydtOq3uOugiOydtOyFmCBBUElcbiAgICovXG4gIGFzeW5jIGFwcGx5KHRhcmdldHM6IE1pZ3JhdGlvblRhcmdldFtdLCBvcHRpb25zPzogTWlncmF0aW9uUnVuT3B0aW9ucyk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucnVuQWN0aW9uV2l0aFByb2dyZXNzKFwiYXBwbHlcIiwgdGFyZ2V0cywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog64yA7IOBIERC7JeQ7IScIOqwgOyepSDstZzqt7wgbWlncmF0aW9uIGJhdGNo66W8IOuhpOuwse2VqeuLiOuLpC5cbiAgICogQ0xJ7JmAIFdlYuydgCDqsJnsnYAg66mU7ISc65Oc66W8IOyCrOyaqe2VmOupsCwgV2Vi7J2AIGBvblByb2dyZXNzYOulvCBzdHJlYW3snLzroZwg67OA7ZmY7ZWp64uI64ukLlxuICAgKlxuICAgKiBAY2F0ZWdvcnkg67aE66as7ZiVIOuniOydtOq3uOugiOydtOyFmCBBUElcbiAgICovXG4gIGFzeW5jIHJvbGxiYWNrKFxuICAgIHRhcmdldHM6IE1pZ3JhdGlvblRhcmdldFtdLFxuICAgIG9wdGlvbnM/OiBNaWdyYXRpb25SdW5PcHRpb25zLFxuICApOiBQcm9taXNlPE1pZ3JhdGlvblJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnJ1bkFjdGlvbldpdGhQcm9ncmVzcyhcInJvbGxiYWNrXCIsIHRhcmdldHMsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGFjdGlvbiDrrLjsnpDsl7Qg64yA7IugIHtAbGluayBhcHBseX0g65iQ64qUIHtAbGluayByb2xsYmFja33snYQg7KeB7KCRIOyCrOyaqe2VqeuLiOuLpC5cbiAgICog6riw7KG0IOyZuOu2gCDtmLjstpzsnZgg7ZWY7JyEIO2YuO2ZmOunjOydhCDsnITtlbQg7Jyg7KeA7ZWp64uI64ukLlxuICAgKiBAY2F0ZWdvcnkg7Zi47ZmY7JqpIOuniOydtOq3uOugiOydtOyFmCBBUElcbiAgICovXG4gIGFzeW5jIHJ1bkFjdGlvbihcbiAgICBhY3Rpb246IFwiYXBwbHlcIiB8IFwicm9sbGJhY2tcIixcbiAgICB0YXJnZXRzOiAoa2V5b2YgU29uYW11REJDb25maWcpW10sXG4gICk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIGFjdGlvbiA9PT0gXCJhcHBseVwiID8gdGhpcy5hcHBseSh0YXJnZXRzKSA6IHRoaXMucm9sbGJhY2sodGFyZ2V0cyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bkFjdGlvbldpdGhQcm9ncmVzcyhcbiAgICBhY3Rpb246IFwiYXBwbHlcIiB8IFwicm9sbGJhY2tcIixcbiAgICB0YXJnZXRzOiBNaWdyYXRpb25UYXJnZXRbXSxcbiAgICBvcHRpb25zPzogTWlncmF0aW9uUnVuT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHQ+IHtcbiAgICBOYWl0ZS50KFwibWlncmF0b3I6cnVuQWN0aW9uOmFjdGlvblwiLCBhY3Rpb24pO1xuICAgIE5haXRlLnQoXCJtaWdyYXRvcjpydW5BY3Rpb246dGFyZ2V0c1wiLCB0YXJnZXRzKTtcblxuICAgIGNvbnN0IGFsbG93ZWRUYXJnZXRzID0gbmV3IFNldCh0aGlzLmdldE1pZ3JhdGlvblRhcmdldEtleXMoKSk7XG4gICAgY29uc3QgZGlzYWxsb3dlZFRhcmdldHMgPSB0YXJnZXRzLmZpbHRlcigodGFyZ2V0KSA9PiAhYWxsb3dlZFRhcmdldHMuaGFzKHRhcmdldCkpO1xuICAgIGlmIChkaXNhbGxvd2VkVGFyZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBNaWdyYXRpb24gdGFyZ2V0cyBhcmUgbm90IGFsbG93ZWQgaW4gTk9ERV9FTlY9JHtnZXRTb25hbXVFbnZpcm9ubWVudCgpfTogJHtkaXNhbGxvd2VkVGFyZ2V0cy5qb2luKFwiLCBcIil9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZ2V0IHVuaXEga25leCBjb25maWdzXG4gICAgY29uc3QgY29uZmlncyA9IHVuaXF1ZShcbiAgICAgIHRhcmdldHNcbiAgICAgICAgLm1hcCgodGFyZ2V0KSA9PiAoe1xuICAgICAgICAgIGNvbm5LZXk6IHRhcmdldCxcbiAgICAgICAgICBvcHRpb25zOiBTb25hbXUuZGJDb25maWdbdGFyZ2V0XSxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIoKGMpID0+IGMub3B0aW9ucyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICh7IG9wdGlvbnM6IGRiT3B0aW9ucyB9KSA9PlxuICAgICAgICBgJHsvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChkYk9wdGlvbnMuY29ubmVjdGlvbiBhcyBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZykuaG9zdH06JHtcbiAgICAgICAgICAvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAgIGRiT3B0aW9ucy5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnXG4gICAgICAgICAgKS5wb3J0ID8/IDU0MzJcbiAgICAgICAgfS8key8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKGRiT3B0aW9ucy5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnKS5kYXRhYmFzZX1gLFxuICAgICk7XG5cbiAgICAvLyBnZXQgY29ubmVjdGlvbnNcbiAgICBjb25zdCBjb25ucyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29uZmlncy5tYXAoYXN5bmMgKGNvbmZpZykgPT4gKHtcbiAgICAgICAgY29ubktleTogY29uZmlnLmNvbm5LZXksXG4gICAgICAgIGtuZXg6IGNyZWF0ZUtuZXhJbnN0YW5jZShjb25maWcub3B0aW9ucyksXG4gICAgICB9KSksXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bk1pZ3JhdGlvbnNTZXF1ZW50aWFsbHkoY29ubnMsIGFjdGlvbiwgb3B0aW9ucyk7XG5cbiAgICAgIE5haXRlLnQoXCJtaWdyYXRvcjpydW5BY3Rpb246cmVzdWx0XCIsIHJlc3VsdCk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBjb25ucy5tYXAoKHsga25leCB9KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGtuZXguZGVzdHJveSgpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5EYXRlVGFnKGluZGV4OiBudW1iZXIsIGJhc2VEYXRlOiBEYXRlID0gbmV3IERhdGUoKSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGJhc2VEYXRlLmdldFRpbWUoKSArIGluZGV4ICogMTAwMCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpICtcbiAgICAgIHBhZERhdGVQYXJ0KGRhdGUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgIHBhZERhdGVQYXJ0KGRhdGUuZ2V0RGF0ZSgpKSArXG4gICAgICBwYWREYXRlUGFydChkYXRlLmdldEhvdXJzKCkpICtcbiAgICAgIHBhZERhdGVQYXJ0KGRhdGUuZ2V0TWludXRlcygpKSArXG4gICAgICBwYWREYXRlUGFydChkYXRlLmdldFNlY29uZHMoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOuniOydtOq3uOugiOydtOyFmCDsvZTrk5wg7YyM7J287J2EIOyDneyEse2VqeuLiOuLpC5cbiAgICpcbiAgICogU29uYW11IFVJ7JeQ7IScIOyCrOyaqeuQqeuLiOuLpC5cbiAgICpcbiAgICogQHJldHVybnMg7IOd7ISx65CcIOuniOydtOq3uOugiOydtOyFmCDsvZTrk5wg7YyM7J28IOqwnOyImFxuICAgKi9cbiAgYXN5bmMgZ2VuZXJhdGVQcmVwYXJlZENvZGVzKGNvbXBhcmVDb25uS2V5PzogTWlncmF0aW9uVGFyZ2V0KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBwcmVwYXJlZENvZGVzID1cbiAgICAgIGNvbXBhcmVDb25uS2V5ID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAoYXdhaXQgdGhpcy5nZXRTdGF0dXMoKSkucHJlcGFyZWRDb2Rlc1xuICAgICAgICA6IGF3YWl0IHRoaXMuZ2V0UHJlcGFyZWRDb2Rlcyhjb21wYXJlQ29ubktleSk7XG4gICAgTmFpdGUudChcIm1pZ3JhdG9yOmdlbmVyYXRlUHJlcGFyZWRDb2RlczpwcmVwYXJlZENvZGVzXCIsIHByZXBhcmVkQ29kZXMpO1xuICAgIGlmIChwcmVwYXJlZENvZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oXCJcXG7tmITsnqwg66qo65GQIOyLse2BrOuQnCDsg4Htg5zsnoXri4jri6QuXCIpKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIOyLpOygnCDsvZTrk5wg7IOd7ISxXG4gICAgY29uc3QgbWlncmF0aW9uc0RpciA9IGAke1NvbmFtdS5hcGlSb290UGF0aH0vc3JjL21pZ3JhdGlvbnNgO1xuXG4gICAgZm9yIChjb25zdCBbaW5kZXgsIHBjb2RlXSBvZiBwcmVwYXJlZENvZGVzLmVudHJpZXMoKSkge1xuICAgICAgaWYgKHBjb2RlLmZvcm1hdHRlZCkge1xuICAgICAgICBjb25zdCBkYXRlVGFnID0gdGhpcy5nZW5EYXRlVGFnKGluZGV4KTtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBgJHttaWdyYXRpb25zRGlyfS8ke2RhdGVUYWd9XyR7cGNvZGUudGl0bGV9LnRzYDtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGZpbGVQYXRoLCBwY29kZS5mb3JtYXR0ZWQpO1xuICAgICAgICAhaXNUZXN0KCkgJiYgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYE1JR1JBVElPTiBDUkVBVEVEICR7ZmlsZVBhdGh9YCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcmVwYXJlZENvZGVzLmxlbmd0aDtcbiAgfVxuXG4gIGFzeW5jIGNvbXBhcmVNaWdyYXRpb25zKGNvbXBhcmVEQjogS25leCk6IFByb21pc2U8R2VuTWlncmF0aW9uQ29kZVtdPiB7XG4gICAgLy8gRW50aXR5IOyInO2ajO2VmOyXrCDsi7HtgaxcbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuXG4gICAgLy8g7KGw7J247YWM7J2067iUIO2PrO2VqO2VmOyXrCBFbnRpdHnsl5DshJwgTWlncmF0aW9uU2V0IOy2lOy2nFxuICAgIGNvbnN0IGVudGl0eVNldHNXaXRoSm9pblRhYmxlID0gZW50aXR5SWRzXG4gICAgICAuZmlsdGVyKChlbnRpdHlJZCkgPT4gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpLnByb3BzLmxlbmd0aCA+IDApXG4gICAgICAubWFwKChlbnRpdHlJZCkgPT4gZ2V0TWlncmF0aW9uU2V0RnJvbUVudGl0eShFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCkpKTtcblxuICAgIC8vIOyhsOyduO2FjOydtOu4lOunjCDstpTstpxcbiAgICBjb25zdCBqb2luVGFibGVzV2l0aER1cCA9IGVudGl0eVNldHNXaXRoSm9pblRhYmxlLmZsYXRNYXAoKGVudGl0eVNldCkgPT4gZW50aXR5U2V0LmpvaW5UYWJsZXMpO1xuICAgIC8vIOykkeuztSDsoJzqsbAgKOykkeuzteyduCDqsr3smrAgaW5kZXhlc+ulvCDrs5HtlakpXG4gICAgY29uc3Qgam9pblRhYmxlcyA9IE9iamVjdC52YWx1ZXMoZ3JvdXAoam9pblRhYmxlc1dpdGhEdXAsIChqdCkgPT4ganQudGFibGUpKS5tYXAoKHRhYmxlcykgPT4ge1xuICAgICAgYXNzZXJ0KHRhYmxlcyAhPT0gdW5kZWZpbmVkLCBcInRhYmxlcyBpcyB1bmRlZmluZWRcIik7XG4gICAgICBpZiAodGFibGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdGFibGVzWzBdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4udGFibGVzWzBdLFxuICAgICAgICBpbmRleGVzOiB1bmlxdWUoXG4gICAgICAgICAgdGFibGVzLmZsYXRNYXAoKHQpID0+IHQuaW5kZXhlcyksXG4gICAgICAgICAgKGluZGV4KSA9PiBbaW5kZXgudHlwZSwgLi4uaW5kZXguY29sdW1uc10uam9pbihcIi1cIiksXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8g7KGw7J247YWM7J2067iUIO2PrO2VqO2VmOyXrCBNaWdyYXRpb25TZXQg67Cw7Je0XG4gICAgY29uc3QgZW50aXR5U2V0czogTWlncmF0aW9uU2V0W10gPSBbLi4uZW50aXR5U2V0c1dpdGhKb2luVGFibGUsIC4uLmpvaW5UYWJsZXNdO1xuXG4gICAgY29uc3QgY29kZXM6IEdlbk1pZ3JhdGlvbkNvZGVbXSA9IFtdO1xuICAgIGNvbnN0IGJhdGNoU2l6ZSA9IDQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudGl0eVNldHMubGVuZ3RoOyBpICs9IGJhdGNoU2l6ZSkge1xuICAgICAgY29uc3QgYmF0Y2hDb2RlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBlbnRpdHlTZXRzLnNsaWNlKGksIGkgKyBiYXRjaFNpemUpLm1hcChhc3luYyAoZW50aXR5U2V0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGJTZXQgPSBhd2FpdCBQb3N0Z3JlU1FMU2NoZW1hUmVhZGVyLmdldE1pZ3JhdGlvblNldEZyb21EQihcbiAgICAgICAgICAgIGNvbXBhcmVEQixcbiAgICAgICAgICAgIGVudGl0eVNldC50YWJsZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIE5haXRlLnQoYG1pZ3JhdG9yOmNvbXBhcmVNaWdyYXRpb25zOmVudGl0eVNldDoke2VudGl0eVNldC50YWJsZX1gLCBlbnRpdHlTZXQpO1xuICAgICAgICAgIE5haXRlLnQoYG1pZ3JhdG9yOmNvbXBhcmVNaWdyYXRpb25zOmRiU2V0OiR7ZW50aXR5U2V0LnRhYmxlfWAsIGRiU2V0KTtcblxuICAgICAgICAgIGlmIChkYlNldCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8g6riw7KG0IO2FjOydtOu4lCDsl4bsnYwsIOyDiOuhnCDthYzsnbTruJQg7IOd7ISxXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZ2VuZXJhdGVDcmVhdGVDb2RlKGVudGl0eVNldCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIOq4sOyhtCDthYzsnbTruJQg7KG07J6s7ZWY64qUIOy8gOydtOyKpFxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGdlbmVyYXRlQWx0ZXJDb2RlKGVudGl0eVNldCwgZGJTZXQsIGNvbXBhcmVEQik7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIGNvZGVzLnB1c2goLi4uYmF0Y2hDb2Rlcy5mbGF0KCkpO1xuICAgIH1cblxuICAgIC8vIG5vcm1hbCDtg4DsnoXsnbQg7JWe7Jy866GcLCBmb3JlaWdu7J20IOuSpOuhnFxuICAgIGNvZGVzLnNvcnQoKGNvZGVBLCBjb2RlQikgPT4ge1xuICAgICAgaWYgKGNvZGVBLnR5cGUgPT09IFwiZm9yZWlnblwiICYmIGNvZGVCLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2UgaWYgKGNvZGVBLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgY29kZUIudHlwZSA9PT0gXCJmb3JlaWduXCIpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29kZXM7XG4gIH1cblxuICAvKipcbiAgICogdGVzdCBEQuydmCBzbmFwc2hvdOycvOuhnCDsnoTsi5wgU2hhZG93IERC66W8IOunjOuTpOqzoCDsoITssrQg66eI7J206re466CI7J207IWY7J2EIOqygOymne2VqeuLiOuLpC5cbiAgICogQ0xJ7JmAIFdlYuydgCBgb25Qcm9ncmVzc2Ag7Jyg66y066eMIOuLrOumrO2VtCDqsJnsnYAg7Iuk7ZaJIOydmOuvuOulvCDqs7XsnKDtlaAg7IiYIOyeiOyKteuLiOuLpC5cbiAgICpcbiAgICogQGNhdGVnb3J5IOu2hOumrO2YlSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBydW5TaGFkb3dUZXN0KG9wdGlvbnM/OiBNaWdyYXRpb25SdW5PcHRpb25zKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCBiYXNlVGVzdENvbm4gPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBTb25hbXUuZGJDb25maWdcbiAgICAgICAgLnRlc3QuY29ubmVjdGlvbiBhcyBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZztcbiAgICBjb25zdCB3b3JrZXJJZCA9IHByb2Nlc3MuZW52LlNPTkFNVV9XT1JLRVJfREIgPT09IFwidHJ1ZVwiID8gcHJvY2Vzcy5lbnYuVklURVNUX1BPT0xfSUQgOiBudWxsO1xuICAgIGNvbnN0IHRlbXBsYXRlRGF0YWJhc2UgPVxuICAgICAgd29ya2VySWQgIT09IG51bGwgPyBgJHtiYXNlVGVzdENvbm4uZGF0YWJhc2V9XyR7d29ya2VySWQgPz8gXCIxXCJ9YCA6IGJhc2VUZXN0Q29ubi5kYXRhYmFzZTtcbiAgICBjb25zdCB0ZGJDb25uID0geyAuLi5iYXNlVGVzdENvbm4sIGRhdGFiYXNlOiB0ZW1wbGF0ZURhdGFiYXNlIH07XG4gICAgY29uc3Qgc2hhZG93RGF0YWJhc2UgPSBgJHt0ZW1wbGF0ZURhdGFiYXNlfV9fbWlncmF0aW9uX3NoYWRvd2A7XG5cbiAgICAvLyDthYzsiqTtirgg7IOB7Zmp7JeQ7ISc64qUIO2KuOuenOyereyFmOydhCDstIjquLDtmZTtlZjqs6AsIOyDiCDrjbDsnbTthLDrsqDsnbTsiqQg7Luk64Sl7IWY7J2EIOqwgOyguOyZgOyVvCDtlahcbiAgICBpZiAoaXNUZXN0KCkpIHtcbiAgICAgIGF3YWl0IERCLmNsZWFyVGVzdFRyYW5zYWN0aW9uKCk7XG4gICAgICBhd2FpdCBEQi5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgLy8g6riw7KG0IFNoYWRvdyBEQiDsgq3soJwg7ZuEIFNoYWRvdyBEQiDsg53shLFcbiAgICBjb25zdCB0ZGIgPSBjcmVhdGVLbmV4SW5zdGFuY2Uoe1xuICAgICAgLi4uU29uYW11LmRiQ29uZmlnLnRlc3QsXG4gICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgIC4uLmJhc2VUZXN0Q29ubixcbiAgICAgICAgZGF0YWJhc2U6IFwicG9zdGdyZXNcIixcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgICFpc1Rlc3QoKSAmJiBjb25zb2xlLmxvZyhjaGFsay5tYWdlbnRhKGAke3NoYWRvd0RhdGFiYXNlfSDsgq3soJxgKSk7XG4gICAgICBhd2FpdCB0ZGIucmF3KGBEUk9QIERBVEFCQVNFIElGIEVYSVNUUyAke3NoYWRvd0RhdGFiYXNlfWApO1xuICAgICAgYXdhaXQgdGRiLnJhdyhgXG4gICAgICAgIFNFTEVDVCBwZ190ZXJtaW5hdGVfYmFja2VuZChwZ19zdGF0X2FjdGl2aXR5LnBpZClcbiAgICAgICAgRlJPTSBwZ19zdGF0X2FjdGl2aXR5XG4gICAgICAgIFdIRVJFIGRhdG5hbWUgPSAnJHt0ZGJDb25uLmRhdGFiYXNlfSdcbiAgICAgICAgICBBTkQgcGlkIDw+IHBnX2JhY2tlbmRfcGlkKCk7XG4gICAgICBgKTtcbiAgICAgIGF3YWl0IHRkYi5yYXcoYENSRUFURSBEQVRBQkFTRSAke3NoYWRvd0RhdGFiYXNlfSBURU1QTEFURSAke3RkYkNvbm4uZGF0YWJhc2V9YCk7XG5cbiAgICAgIC8vIFNoYWRvdyBEQuyXkCDsl7DqsrBcbiAgICAgIGNvbnN0IHNkYiA9IGNyZWF0ZUtuZXhJbnN0YW5jZSh7XG4gICAgICAgIC4uLlNvbmFtdS5kYkNvbmZpZy50ZXN0LFxuICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgLi4udGRiQ29ubixcbiAgICAgICAgICBkYXRhYmFzZTogc2hhZG93RGF0YWJhc2UsXG4gICAgICAgICAgcGFzc3dvcmQ6IHRkYkNvbm4ucGFzc3dvcmQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gc2hhZG93IERCIO2FjOyKpO2KuCDsp4TtlolcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy5jcmVhdGVQcm9ncmVzc0hvb2tzKFwic2hhZG93XCIsIFwic2hhZG93XCIsIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBbYmF0Y2hObywgYXBwbGllZF0gPSBhd2FpdCBzZGIubWlncmF0ZS5sYXRlc3QocHJvZ3Jlc3MpO1xuICAgICAgICAhaXNUZXN0KCkgJiZcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihcIlNoYWRvdyBEQiDthYzsiqTtirjsl5Ag7ISx6rO17ZaI7Iq164uI64ukIVwiKSwge1xuICAgICAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgICAgIGFwcGxpZWQsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3Mob3B0aW9ucywge1xuICAgICAgICAgIHR5cGU6IFwidGFyZ2V0LWNvbXBsZXRlXCIsXG4gICAgICAgICAgYWN0aW9uOiBcInNoYWRvd1wiLFxuICAgICAgICAgIGNvbm5LZXk6IFwic2hhZG93XCIsXG4gICAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgICBmaWxlczogYXBwbGllZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25uS2V5OiBcInNoYWRvd1wiLFxuICAgICAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgICAgIGFwcGxpZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgdGhyb3cgbmV3IE1pZ3JhdGlvblRhcmdldEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICAgIFwic2hhZG93XCIsXG4gICAgICAgICAgbmV3IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbihTRChcInNvbmFtdS5lcnJvci5zaGFkb3dEYlRlc3RGYWlsZWRcIikpLFxuICAgICAgICApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgc2RiLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gU2hhZG93IERCIOyCreygnFxuICAgICAgIWlzVGVzdCgpICYmIGNvbnNvbGUubG9nKGNoYWxrLm1hZ2VudGEoYCR7c2hhZG93RGF0YWJhc2V9IOyCreygnGApKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRkYi5yYXcoYERST1AgREFUQUJBU0UgSUYgRVhJU1RTICR7c2hhZG93RGF0YWJhc2V9YCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJTaGFkb3cgREIg7KCV66asIOyLpO2MqDpcIiwgZSk7IC8vIOydtOqyjCDsl4bsnLzrqbQg7KGw7Jqp7Z6IIOuIhOyImFxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgdGRiLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJDQSxTQUFTLFlBQVksUUFBZ0IsT0FBZSxHQUFXO0NBQzdELE9BQU8sT0FBTyxTQUFTLENBQUMsQ0FBQyxTQUFTLE1BQU0sR0FBRztBQUM3Qzs7Ozs7QUFzQkEsU0FBUyxZQUFlLFNBQXFCLElBQVksV0FBb0M7Q0FDM0YsT0FBTyxJQUFJLFNBQVksU0FBUyxXQUFXO0VBQ3pDLE1BQU0sUUFBUSxpQkFBaUIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFO0VBQ3RELFFBQVEsTUFDTCxVQUFVO0dBQ1QsYUFBYSxLQUFLO0dBQ2xCLFFBQVEsS0FBSztFQUNmLElBQ0MsVUFBVTtHQUNULGFBQWEsS0FBSztHQUNsQixPQUFPLEtBQUs7RUFDZCxDQUNGO0NBQ0YsQ0FBQztBQUNIOzs7YUF6RXNDO1NBQ0g7V0FFa0I7U0FDdEI7cUJBQ3lCO1VB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
|
|
565
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZ3JhdGlvbi9taWdyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IG1rZGlyLCByZWFkZGlyLCB3cml0ZUZpbGUgfSBmcm9tIFwiZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgeyBncm91cCwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyB0eXBlIFNvbmFtdURCQ29uZmlnIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBjcmVhdGVLbmV4SW5zdGFuY2UgfSBmcm9tIFwiLi4vZGF0YWJhc2Uva25leFwiO1xuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vZGljdC9zZFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGdldFNvbmFtdUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2VudlwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcIi4uL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IHR5cGUgR2VuTWlncmF0aW9uQ29kZSwgdHlwZSBNaWdyYXRpb25TZXQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGlzTG9jYWwsIGlzVGVzdCB9IGZyb20gXCIuLi91dGlscy9jb250cm9sbGVyXCI7XG5pbXBvcnQgeyBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbHMvZnMtdXRpbHNcIjtcbmltcG9ydCB7IGlzT2JqZWN0VmFsdWUsIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVBbHRlckNvZGUsIGdlbmVyYXRlQ3JlYXRlQ29kZSB9IGZyb20gXCIuL2NvZGUtZ2VuZXJhdGlvblwiO1xuaW1wb3J0IHsgZ2V0TWlncmF0aW9uU2V0RnJvbUVudGl0eSB9IGZyb20gXCIuL21pZ3JhdGlvbi1zZXRcIjtcbmltcG9ydCB7IFBvc3RncmVTUUxTY2hlbWFSZWFkZXIgfSBmcm9tIFwiLi9wb3N0Z3Jlc3FsLXNjaGVtYS1yZWFkZXJcIjtcbmltcG9ydCB7IFNsYWNrQ29uZmlybSB9IGZyb20gXCIuL3NsYWNrLWNvbmZpcm1cIjtcbmltcG9ydCB7XG4gIHR5cGUgQ29ublN0cmluZyxcbiAgdHlwZSBNaWdyYXRpb25BY3Rpb24sXG4gIHR5cGUgTWlncmF0aW9uQ29kZSxcbiAgdHlwZSBNaWdyYXRpb25Db25uZWN0aW9uTWV0YSxcbiAgdHlwZSBNaWdyYXRpb25Db25uZWN0aW9uU3RhdHVzLFxuICB0eXBlIE1pZ3JhdGlvblByb2dyZXNzRXZlbnQsXG4gIHR5cGUgTWlncmF0aW9uUnVuT3B0aW9ucyxcbiAgdHlwZSBNaWdyYXRpb25TdGF0dXMsXG4gIHR5cGUgTWlncmF0aW9uVGFyZ2V0LFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBNaWdyYXRpb25SZXN1bHQgPSB7XG4gIGNvbm5LZXk6IHN0cmluZztcbiAgYmF0Y2hObzogbnVtYmVyO1xuICBhcHBsaWVkOiBzdHJpbmdbXTtcbn1bXTtcblxudHlwZSBTaGFkb3dNaWdyYXRpb25UYXJnZXQgPSBFeHRyYWN0PE1pZ3JhdGlvblRhcmdldCwgXCJmaXh0dXJlXCIgfCBcInRlc3RcIj47XG5cbmZ1bmN0aW9uIHBhZERhdGVQYXJ0KG51bWJlcjogbnVtYmVyLCBzaXplOiBudW1iZXIgPSAyKTogc3RyaW5nIHtcbiAgcmV0dXJuIG51bWJlci50b1N0cmluZygpLnBhZFN0YXJ0KHNpemUsIFwiMFwiKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvblRhcmdldEV4ZWN1dGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29ubktleTogTWlncmF0aW9uVGFyZ2V0IHwgXCJzaGFkb3dcIixcbiAgICBjYXVzZTogdW5rbm93bixcbiAgKSB7XG4gICAgc3VwZXIoY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGNhdXNlLm1lc3NhZ2UgOiBTdHJpbmcoY2F1c2UpKTtcbiAgICB0aGlzLm5hbWUgPSBcIk1pZ3JhdGlvblRhcmdldEV4ZWN1dGlvbkVycm9yXCI7XG4gIH1cbn1cblxuLy8g66eI7J206re466CI7J207IWYIOyDge2DnCDsobDtmowg7IucIERCIOyXsOqysCDtmZXsnbgg7YOA7J6E7JWE7JuDKG1zKS5cbi8vIGNyZWF0ZUtuZXhJbnN0YW5jZeydmCDsu6TrhKXshZgg7ZqN65OdIO2DgOyehOyVhOybgygzMOy0iCnsl5Agc3RhdHVzL2xpc3QvY3VycmVudFZlcnNpb27snbRcbi8vIOqwgeqwgSDqsbjrpqzrqbQgQ0xJL1VJ6rCAIOy1nOuMgCDsiJjsi60g7LSIIGhhbmftlZzri6QuIOygleyDgSDsnZHri7XsnYAg7IiY67CxIG1z7J2066+A66GcIDXstIjrqbQg7Lap67aE7ZWY64ukLlxuY29uc3QgTUlHUkFUSU9OX0NPTk5fVElNRU9VVF9NUyA9IDUwMDA7XG5jb25zdCBMT0NBTF9EQl9IT1NUUyA9IG5ldyBTZXQoW1wibG9jYWxob3N0XCIsIFwiMTI3LjAuMC4xXCIsIFwiMC4wLjAuMFwiLCBcIjo6MVwiXSk7XG5cbi8qKlxuICog7KO87Ja07KeEIFByb21pc2XqsIAgbXMg7JWI7JeQIOyZhOujjOuQmOyngCDslYrsnLzrqbQgb25UaW1lb3V0IOyXkOufrOuhnCByZWplY3TtlZzri6QuXG4gKiDsm5Drs7ggUHJvbWlzZSDsnpDssrTripQg6rOE7IaNIOynhO2WieuQmOuvgOuhnCwg7Zi47Lac7Lih7JeQ7IScIOy7pOuEpeyFmCDsoJXrpqwoZGVzdHJveSnrpbwg7LGF7J6E7KeE64ukLlxuICovXG5mdW5jdGlvbiB3aXRoVGltZW91dDxUPihwcm9taXNlOiBQcm9taXNlPFQ+LCBtczogbnVtYmVyLCBvblRpbWVvdXQ6ICgpID0+IEVycm9yKTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChvblRpbWVvdXQoKSksIG1zKTtcbiAgICBwcm9taXNlLnRoZW4oXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9LFxuICAgICk7XG4gIH0pO1xufVxuXG4vKipcbiAqIE5vdGUgMjAyNi0wOC0yNiwg67OR7KSAXG4gKiDsnbQg7YG0656Y7Iqk7JeQ7IScIGRlcHJlY2F0ZWQg67aZ7Ja07J6I64qUIOy5nOq1rOuTpOydgCDtmIQgQ0xJ66W8IOychO2VnCDtlZjsnIQg7Zi47ZmY7J2064uILFxuICogQ0xJIOumrO2Mqe2GoOungSDsi5zsoJDsl5DshJwg7KCc6rGw7ZW07KO87IWU64+EIOustOuwqe2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pZ3JhdG9yIHtcbiAgcHJpdmF0ZSBpc01pc3NpbmdNaWdyYXRpb25UYWJsZUVycm9yPFZhbHVlPihlcnJvcjogVmFsdWUpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzT2JqZWN0VmFsdWUoZXJyb3IpIHx8IGVycm9yID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbWF5YmVQb3N0Z3Jlc0Vycm9yID1cbiAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gZXJyb3IgYXMge1xuICAgICAgICBjb2RlPzogdW5rbm93bjtcbiAgICAgIH07XG4gICAgLy8gUG9zdGdyZVNRTCB1bmRlZmluZWRfdGFibGUg7L2U65Oc64qUIOyCrOyaqeyekCDsp4DsoJUgbWlncmF0aW9uIHRhYmxl7JeQ64+EIOuPmeydvO2VmOqyjCDsoIHsmqnrkKnri4jri6QuXG4gICAgcmV0dXJuIG1heWJlUG9zdGdyZXNFcnJvci5jb2RlID09PSBcIjQyUDAxXCI7XG4gIH1cblxuICAvKiog7ZiE7J6sIOyLpO2WiSDtmZjqsr3sl5DshJwg7ZeI7Jqp65CcIOuniOydtOq3uOugiOydtOyFmCDrjIDsg4Eg7YKk66W8IOuwmO2ZmO2VqeuLiOuLpC4gKi9cbiAgZ2V0TWlncmF0aW9uVGFyZ2V0S2V5cygpOiBNaWdyYXRpb25UYXJnZXRbXSB7XG4gICAgY29uc3QgY29ubktleXMgPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBPYmplY3Qua2V5cyhcbiAgICAgICAgU29uYW11LmRiQ29uZmlnLFxuICAgICAgKS5maWx0ZXIoKGtleSkgPT4gIWtleS5lbmRzV2l0aChcIl9yZWFkb25seVwiKSkgYXMgKGtleW9mIFNvbmFtdURCQ29uZmlnKVtdO1xuXG4gICAgaWYgKGlzTG9jYWwoKSkge1xuICAgICAgcmV0dXJuIGNvbm5LZXlzO1xuICAgIH1cblxuICAgIGNvbnN0IGVudmlyb25tZW50ID0gZ2V0U29uYW11RW52aXJvbm1lbnQoKTtcbiAgICByZXR1cm4gY29ubktleXMuZmlsdGVyKChrZXkpID0+IGtleSA9PT0gZW52aXJvbm1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBydW5NaWdyYXRpb25zU2VxdWVudGlhbGx5KFxuICAgIGNvbm5zOiB7IGNvbm5LZXk6IGtleW9mIFNvbmFtdURCQ29uZmlnOyBrbmV4OiBLbmV4IH1bXSxcbiAgICBhY3Rpb246IFwiYXBwbHlcIiB8IFwicm9sbGJhY2tcIixcbiAgICBvcHRpb25zPzogTWlncmF0aW9uUnVuT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCByZXN1bHRzOiBNaWdyYXRpb25SZXN1bHQgPSBbXTtcblxuICAgIGZvciAoY29uc3QgeyBjb25uS2V5LCBrbmV4IH0gb2YgY29ubnMpIHtcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy5jcmVhdGVQcm9ncmVzc0hvb2tzKGFjdGlvbiwgY29ubktleSwgb3B0aW9ucyk7XG4gICAgICBsZXQgbWlncmF0aW9uUmVzdWx0OiBbbnVtYmVyLCBzdHJpbmdbXV07XG4gICAgICB0cnkge1xuICAgICAgICBtaWdyYXRpb25SZXN1bHQgPVxuICAgICAgICAgIGFjdGlvbiA9PT0gXCJhcHBseVwiXG4gICAgICAgICAgICA/IGF3YWl0IGtuZXgubWlncmF0ZS5sYXRlc3QocHJvZ3Jlc3MpXG4gICAgICAgICAgICA6IGF3YWl0IGtuZXgubWlncmF0ZS5yb2xsYmFjayhwcm9ncmVzcyk7XG4gICAgICB9IGNhdGNoIChjYXVnaHQpIHtcbiAgICAgICAgLy8gbGlmZWN5Y2xlIGhvb2sg7J207KCE7J2YIOyXsOqysMK3bG9ja8K366qp66GdIOyhsO2ajCDsi6TtjKjrj4Qg7Iuk7KCcIOuMgOyDgSBEQuyXkCDqt4Dsho3tlanri4jri6QuXG4gICAgICAgIHRocm93IG5ldyBNaWdyYXRpb25UYXJnZXRFeGVjdXRpb25FcnJvcihjb25uS2V5LCBjYXVnaHQpO1xuICAgICAgfVxuICAgICAgY29uc3QgW2JhdGNoTm8sIGFwcGxpZWRdID0gbWlncmF0aW9uUmVzdWx0O1xuXG4gICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICBjb25uS2V5LFxuICAgICAgICBiYXRjaE5vLFxuICAgICAgICBhcHBsaWVkLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhvcHRpb25zLCB7XG4gICAgICAgIHR5cGU6IFwidGFyZ2V0LWNvbXBsZXRlXCIsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY29ubktleSxcbiAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgZmlsZXM6IGFwcGxpZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIHByaXZhdGUgbWlncmF0aW9uTmFtZTxWYWx1ZT4obWlncmF0aW9uOiBWYWx1ZSk6IHN0cmluZyB7XG4gICAgaWYgKGlzU3RyaW5nVmFsdWUobWlncmF0aW9uKSkge1xuICAgICAgcmV0dXJuIHBhdGguYmFzZW5hbWUobWlncmF0aW9uKTtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0VmFsdWUobWlncmF0aW9uKSAmJiBtaWdyYXRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9XG4gICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gbWlncmF0aW9uIGFzIHtcbiAgICAgICAgICBmaWxlPzogdW5rbm93bjtcbiAgICAgICAgICBuYW1lPzogdW5rbm93bjtcbiAgICAgICAgfTtcbiAgICAgIGlmIChpc1N0cmluZ1ZhbHVlKGNhbmRpZGF0ZS5maWxlKSkge1xuICAgICAgICByZXR1cm4gcGF0aC5iYXNlbmFtZShjYW5kaWRhdGUuZmlsZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNTdHJpbmdWYWx1ZShjYW5kaWRhdGUubmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHBhdGguYmFzZW5hbWUoY2FuZGlkYXRlLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKG1pZ3JhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRQcm9ncmVzcyhvcHRpb25zOiBNaWdyYXRpb25SdW5PcHRpb25zIHwgdW5kZWZpbmVkLCBldmVudDogTWlncmF0aW9uUHJvZ3Jlc3NFdmVudCkge1xuICAgIHRyeSB7XG4gICAgICBvcHRpb25zPy5vblByb2dyZXNzPy4oZXZlbnQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyDsp4TtlonrpaAg7IaM67mE7J6Q7J2YIOyLpO2MqOqwgCDsnbTrr7gg7Iuc7J6R7ZWcIERCIOyekeyXheqzvCDsoJXrpqzrpbwg67Cp7ZW07ZWY66m0IOyViCDrkKnri4jri6QuXG4gICAgICBjb25zb2xlLndhcm4oXCJNaWdyYXRpb24gcHJvZ3Jlc3Mgb2JzZXJ2ZXIgZmFpbGVkOlwiLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQcm9ncmVzc0hvb2tzKFxuICAgIGFjdGlvbjogTWlncmF0aW9uQWN0aW9uLFxuICAgIGNvbm5LZXk6IE1pZ3JhdGlvblRhcmdldCB8IFwic2hhZG93XCIsXG4gICAgb3B0aW9ucz86IE1pZ3JhdGlvblJ1bk9wdGlvbnMsXG4gICk6IEtuZXguTWlncmF0b3JDb25maWdXaXRoTGlmZWN5Y2xlSG9va3Mge1xuICAgIGxldCBmaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbWl0RmlsZSA9IDxWYWx1ZT4odHlwZTogXCJmaWxlLXN0YXJ0XCIgfCBcImZpbGUtZXhlY3V0ZWRcIiwgbWlncmF0aW9uOiBWYWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZmlsZSA9IHRoaXMubWlncmF0aW9uTmFtZShtaWdyYXRpb24pO1xuICAgICAgY29uc3QgaW5kZXggPSBNYXRoLm1heChmaWxlcy5pbmRleE9mKGZpbGUpLCAwKTtcbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKG9wdGlvbnMsIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjb25uS2V5LFxuICAgICAgICBmaWxlLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgdG90YWw6IGZpbGVzLmxlbmd0aCxcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgYmVmb3JlQWxsOiBhc3luYyAoX2tuZXgsIG1pZ3JhdGlvbnMpID0+IHtcbiAgICAgICAgZmlsZXMgPSBtaWdyYXRpb25zLm1hcCgobWlncmF0aW9uKSA9PiB0aGlzLm1pZ3JhdGlvbk5hbWUobWlncmF0aW9uKSk7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKG9wdGlvbnMsIHsgdHlwZTogXCJ0YXJnZXQtc3RhcnRcIiwgYWN0aW9uLCBjb25uS2V5LCBmaWxlcyB9KTtcbiAgICAgIH0sXG4gICAgICBiZWZvcmVFYWNoOiBhc3luYyAoX2tuZXgsIG1pZ3JhdGlvbnMpID0+IHtcbiAgICAgICAgbWlncmF0aW9ucy5mb3JFYWNoKChtaWdyYXRpb24pID0+IGVtaXRGaWxlKFwiZmlsZS1zdGFydFwiLCBtaWdyYXRpb24pKTtcbiAgICAgIH0sXG4gICAgICBhZnRlckVhY2g6IGFzeW5jIChfa25leCwgbWlncmF0aW9ucykgPT4ge1xuICAgICAgICBtaWdyYXRpb25zLmZvckVhY2goKG1pZ3JhdGlvbikgPT4gZW1pdEZpbGUoXCJmaWxlLWV4ZWN1dGVkXCIsIG1pZ3JhdGlvbikpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NlcnRNaWdyYXRpb25UYXJnZXQoY29ubktleTogTWlncmF0aW9uVGFyZ2V0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmdldE1pZ3JhdGlvblRhcmdldEtleXMoKS5pbmNsdWRlcyhjb25uS2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTWlncmF0aW9uIHRhcmdldCBpcyBub3QgYWxsb3dlZCBpbiBOT0RFX0VOVj0ke2dldFNvbmFtdUVudmlyb25tZW50KCl9OiAke1N0cmluZyhjb25uS2V5KX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog66eI7J206re466CI7J207IWYIOuMgOyDgSDsu6TrhKXshZjsnZgg7KCV7KCBIOuplO2DgOuNsOydtO2EsOulvCDrsJjtmZjtlanri4jri6QuXG4gICAqIERC7JeQIOyXsOqysO2VmOyngCDslYrsnLzrr4DroZwgQ0xJ7JmAIFdlYuydtCDsg4Htg5wg7KGw7ZqMIOyghOyXkCDsponsi5wg7IKs7Jqp7ZWgIOyImCDsnojsirXri4jri6QuXG4gICAqXG4gICAqIEBjYXRlZ29yeSDrtoTrpqztmJUg66eI7J206re466CI7J207IWYIEFQSVxuICAgKi9cbiAgZ2V0Q29ubmVjdGlvbnMoKTogTWlncmF0aW9uQ29ubmVjdGlvbk1ldGFbXSB7XG4gICAgY29uc3Qgc2xhY2tDb25maXJtID0gbmV3IFNsYWNrQ29uZmlybSgpO1xuICAgIHJldHVybiB0aGlzLmdldE1pZ3JhdGlvblRhcmdldEtleXMoKS5tYXAoKGNvbm5LZXkpID0+IHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPVxuICAgICAgICAvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFNvbmFtdS5kYkNvbmZpZ1tcbiAgICAgICAgICBjb25uS2V5XG4gICAgICAgIF0uY29ubmVjdGlvbiBhcyBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZztcbiAgICAgIGNvbnN0IGhvc3QgPSBjb25uZWN0aW9uLmhvc3QgPz8gXCJsb2NhbGhvc3RcIjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbm5LZXksXG4gICAgICAgIG5hbWU6IFN0cmluZyhjb25uS2V5KSxcbiAgICAgICAgaG9zdCxcbiAgICAgICAgcG9ydDogY29ubmVjdGlvbi5wb3J0ID8/IDU0MzIsXG4gICAgICAgIGRhdGFiYXNlOiBjb25uZWN0aW9uLmRhdGFiYXNlID8/IFwiXCIsXG4gICAgICAgIHJlbW90ZTogIUxPQ0FMX0RCX0hPU1RTLmhhcyhob3N0LnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICByZXF1aXJlc0FwcHJvdmFsOiBzbGFja0NvbmZpcm0uaXNUYXJnZXRSZXF1aXJlc0FwcHJvdmFsKGNvbm5LZXkpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDshozsiqTsl5Ag7KG07J6s7ZWY64qUIOuniOydtOq3uOugiOydtOyFmCDtjIzsnbwg66qp66Gd7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAgICpcbiAgICogQGNhdGVnb3J5IOu2hOumrO2YlSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBnZXRNaWdyYXRpb25Db2RlcygpOiBQcm9taXNlPE1pZ3JhdGlvbkNvZGVbXT4ge1xuICAgIGNvbnN0IHNyY01pZ3JhdGlvbnNEaXIgPSBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBcInNyY1wiLCBcIm1pZ3JhdGlvbnNcIik7IC8vIOydtOqxtCDtmZjqsr3sl5Ag6rSA6rOE7JeG7J20IO2VreyDgSBzcmPsl5DshJwg7LC+7JWE7JW8IO2VtOyalC5cblxuICAgIGlmICghKGF3YWl0IGV4aXN0cyhzcmNNaWdyYXRpb25zRGlyKSkpIHtcbiAgICAgIGF3YWl0IG1rZGlyKHNyY01pZ3JhdGlvbnNEaXIsIHtcbiAgICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29kZXMgPSAoYXdhaXQgcmVhZGRpcihzcmNNaWdyYXRpb25zRGlyKSlcbiAgICAgIC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoXCIudHNcIikpXG4gICAgICAubWFwKChmKSA9PiAoe1xuICAgICAgICBuYW1lOiBmLnJlcGxhY2UoXCIudHNcIiwgXCJcIiksXG4gICAgICAgIHBhdGg6IHBhdGguam9pbihzcmNNaWdyYXRpb25zRGlyLCBmKSxcbiAgICAgIH0pKVxuICAgICAgLnRvU29ydGVkKChhLCBiKSA9PiAoYS5uYW1lIDwgYi5uYW1lID8gMSA6IC0xKSk7IC8vIOydtOumhCDrgrTrprzssKjsiJwg7KCV66CsKOy1nOyLoOyInClcblxuICAgIE5haXRlLnQoXCJtaWdyYXRvcjpnZXRNaWdyYXRpb25Db2RlczpyZXN1bHRzXCIsIGNvZGVzKTtcbiAgICByZXR1cm4gY29kZXM7XG4gIH1cblxuICAvKipcbiAgICog7Luk64Sl7IWYIO2VmOuCmOydmCDtmITsnqwg67KE7KCE6rO8IHBlbmRpbmcg66qp66Gd7J2EIOuPheumveyggeycvOuhnCDsobDtmoztlanri4jri6QuXG4gICAqIOyXrOufrCDrjIDsg4HsnYAg7Zi47Lac7J6Q6rCAIOuzkeugrOuhnCDsobDrpr3tlaAg7IiYIOyeiOyKteuLiOuLpC5cbiAgICpcbiAgICogQGNhdGVnb3J5IOu2hOumrO2YlSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBnZXRDb25uZWN0aW9uU3RhdHVzKGNvbm5LZXk6IE1pZ3JhdGlvblRhcmdldCk6IFByb21pc2U8TWlncmF0aW9uQ29ubmVjdGlvblN0YXR1cz4ge1xuICAgIHRoaXMuYXNzZXJ0TWlncmF0aW9uVGFyZ2V0KGNvbm5LZXkpO1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IGNvZGVzID0gYXdhaXQgdGhpcy5nZXRNaWdyYXRpb25Db2RlcygpO1xuICAgIGNvbnN0IGtuZXhPcHRpb25zID0gU29uYW11LmRiQ29uZmlnW2Nvbm5LZXldO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBrbmV4T3B0aW9ucy5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnO1xuICAgIC8vIFNBRkVUWTogS25leOqwgCDsoJzqs7XtlZwgUG9zdGdyZVNRTCDsl7DqsrAg6rWs7ISx7J2EIOuzteyCrO2VtCB0aW1lb3V0IO2VhOuTnOunjCDrja7slrTsk7Tri6QuXG4gICAgY29uc3QgdENvbm4gPSBjcmVhdGVLbmV4SW5zdGFuY2Uoe1xuICAgICAgLi4ua25leE9wdGlvbnMsXG4gICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgIC4uLmNvbm5lY3Rpb24sXG4gICAgICAgIGNvbm5lY3Rpb25UaW1lb3V0TWlsbGlzOiBNSUdSQVRJT05fQ09OTl9USU1FT1VUX01TLFxuICAgICAgfSxcbiAgICAgIHBvb2w6IHtcbiAgICAgICAgLi4ua25leE9wdGlvbnMucG9vbCxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBhY3F1aXJlVGltZW91dE1pbGxpczogTUlHUkFUSU9OX0NPTk5fVElNRU9VVF9NUyxcbiAgICAgICAgY3JlYXRlVGltZW91dE1pbGxpczogTUlHUkFUSU9OX0NPTk5fVElNRU9VVF9NUyxcbiAgICAgICAgcHJvcGFnYXRlQ3JlYXRlRXJyb3I6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdpdGhUaW1lb3V0KHRDb25uLnJhdyhcInNlbGVjdCAxXCIpLCBNSUdSQVRJT05fQ09OTl9USU1FT1VUX01TLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAgICAgICAgYERCIOyXsOqysCDsi5zqsIQg7LSI6rO8ICgke01JR1JBVElPTl9DT05OX1RJTUVPVVRfTVN9bXMpIOKAlCAke2Nvbm5lY3Rpb24uaG9zdH06JHtjb25uZWN0aW9uLnBvcnR9LyR7Y29ubmVjdGlvbi5kYXRhYmFzZX1gLFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBlcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3Qgc3RhdHVzOiBudW1iZXIgfCBcImVycm9yXCIgPSBhd2FpdCB0Q29ubi5taWdyYXRlLnN0YXR1cygpLmNhdGNoKChjYXVnaHQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNNaXNzaW5nTWlncmF0aW9uVGFibGVFcnJvcihjYXVnaHQpKSB7XG4gICAgICAgICAgcmV0dXJuIGNvZGVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlcnJvciA9IGNhdWdodCBpbnN0YW5jZW9mIEVycm9yID8gY2F1Z2h0Lm1lc3NhZ2UgOiBTdHJpbmcoY2F1Z2h0KTtcbiAgICAgICAgcmV0dXJuIFwiZXJyb3JcIiBhcyBjb25zdDtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcGVuZGluZzogc3RyaW5nW10gPSBhd2FpdCB0Q29ubi5taWdyYXRlLmxpc3QoKS50aGVuKFxuICAgICAgICAoWywgZmlsZXNdOiBbdW5rbm93bltdLCB7IGZpbGU6IHN0cmluZyB9W11dKSA9PlxuICAgICAgICAgIGZpbGVzLm1hcCgoeyBmaWxlIH0pID0+IGZpbGUucmVwbGFjZSgvXFwudHMkLywgXCJcIikpLFxuICAgICAgICAoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pc01pc3NpbmdNaWdyYXRpb25UYWJsZUVycm9yKGNhdXNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvZGVzLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlcnJvciA/Pz0gY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGNhdXNlLm1lc3NhZ2UgOiBTdHJpbmcoY2F1c2UpO1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBjb25zdCBjdXJyZW50VmVyc2lvbjogc3RyaW5nIHwgXCJub25lXCIgfCBcImVycm9yXCIgPSBhd2FpdCB0Q29ubi5taWdyYXRlXG4gICAgICAgIC5jdXJyZW50VmVyc2lvbigpXG4gICAgICAgIC5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pc01pc3NpbmdNaWdyYXRpb25UYWJsZUVycm9yKGNhdXNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwibm9uZVwiIGFzIGNvbnN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlcnJvciA/Pz0gY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGNhdXNlLm1lc3NhZ2UgOiBTdHJpbmcoY2F1c2UpO1xuICAgICAgICAgIHJldHVybiBcImVycm9yXCIgYXMgY29uc3Q7XG4gICAgICAgIH0pO1xuICAgICAgTmFpdGUudChcIm1pZ3JhdG9yOmdldFN0YXR1czpzdGF0dXNcIiwgc3RhdHVzKTtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXM6IE1pZ3JhdGlvbkNvbm5lY3Rpb25TdGF0dXMgPSB7XG4gICAgICAgIGNvbm5LZXksXG4gICAgICAgIGN1cnJlbnRWZXJzaW9uLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHBlbmRpbmcsXG4gICAgICAgIGxhdGVuY3lNczogcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICB9O1xuICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIGNvbm5lY3Rpb25TdGF0dXMuZXJyb3IgPSBlcnJvcjtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uU3RhdHVzO1xuICAgIH0gY2F0Y2ggKGNhdWdodCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBjYXVnaHQgaW5zdGFuY2VvZiBFcnJvciA/IGNhdWdodC5tZXNzYWdlIDogU3RyaW5nKGNhdWdodCk7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgICBgJHtTdHJpbmcoY29ubktleSl97J2YIOuniOydtOq3uOugiOydtOyFmCDsg4Htg5zrpbwg6rCA7KC47Jik64qUIOuNsOyXkCDsi6TtjKjtlZjsmIDsirXri4jri6QuXFxuJHtlcnJvcn1gLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbm5LZXksXG4gICAgICAgIGN1cnJlbnRWZXJzaW9uOiBcImVycm9yXCIsXG4gICAgICAgIHN0YXR1czogXCJlcnJvclwiLFxuICAgICAgICBwZW5kaW5nOiBbXSxcbiAgICAgICAgbGF0ZW5jeU1zOiBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgICAgZXJyb3IsXG4gICAgICB9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCB3aXRoVGltZW91dCh0Q29ubi5kZXN0cm95KCksIE1JR1JBVElPTl9DT05OX1RJTUVPVVRfTVMsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcImNvbm5lY3Rpb24gZGVzdHJveSB0aW1lb3V0XCIpO1xuICAgICAgfSkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDrjIDsg4EgRELsl5DshJwg6rCA7J6lIOy1nOq3vOyXkCDsoIHsmqnrkJwgbWlncmF0aW9uIGJhdGNo66W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAgICpcbiAgICogQGNhdGVnb3J5IOu2hOumrO2YlSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBnZXRMYXRlc3RBcHBsaWVkQmF0Y2goXG4gICAgY29ubktleTogTWlncmF0aW9uVGFyZ2V0LFxuICApOiBQcm9taXNlPHsgYmF0Y2hObzogbnVtYmVyOyBmaWxlczogc3RyaW5nW10gfT4ge1xuICAgIHRoaXMuYXNzZXJ0TWlncmF0aW9uVGFyZ2V0KGNvbm5LZXkpO1xuICAgIGNvbnN0IGtuZXhPcHRpb25zID0gU29uYW11LmRiQ29uZmlnW2Nvbm5LZXldO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBrbmV4T3B0aW9ucy5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnO1xuICAgIGNvbnN0IHRDb25uID0gY3JlYXRlS25leEluc3RhbmNlKHtcbiAgICAgIC4uLmtuZXhPcHRpb25zLFxuICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAuLi5jb25uZWN0aW9uLFxuICAgICAgICBjb25uZWN0aW9uVGltZW91dE1pbGxpczogTUlHUkFUSU9OX0NPTk5fVElNRU9VVF9NUyxcbiAgICAgIH0sXG4gICAgICBwb29sOiB7XG4gICAgICAgIC4uLmtuZXhPcHRpb25zLnBvb2wsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgYWNxdWlyZVRpbWVvdXRNaWxsaXM6IE1JR1JBVElPTl9DT05OX1RJTUVPVVRfTVMsXG4gICAgICAgIGNyZWF0ZVRpbWVvdXRNaWxsaXM6IE1JR1JBVElPTl9DT05OX1RJTUVPVVRfTVMsXG4gICAgICAgIHByb3BhZ2F0ZUNyZWF0ZUVycm9yOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0YWJsZU5hbWUgPSBrbmV4T3B0aW9ucy5taWdyYXRpb25zPy50YWJsZU5hbWUgPz8gXCJrbmV4X21pZ3JhdGlvbnNcIjtcbiAgICAgIGNvbnN0IHNjaGVtYU5hbWUgPSBrbmV4T3B0aW9ucy5taWdyYXRpb25zPy5zY2hlbWFOYW1lO1xuICAgICAgY29uc3QgbWlncmF0aW9uc1RhYmxlID1cbiAgICAgICAgc2NoZW1hTmFtZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB0Q29ubjx7IGlkOiBudW1iZXI7IG5hbWU6IHN0cmluZzsgYmF0Y2g6IG51bWJlciB9Pih0YWJsZU5hbWUpXG4gICAgICAgICAgOiB0Q29ubjx7IGlkOiBudW1iZXI7IG5hbWU6IHN0cmluZzsgYmF0Y2g6IG51bWJlciB9Pih0YWJsZU5hbWUpLndpdGhTY2hlbWEoc2NoZW1hTmFtZSk7XG4gICAgICBjb25zdCBsYXRlc3QgPSBhd2FpdCBtaWdyYXRpb25zVGFibGUuY2xvbmUoKS5zZWxlY3QoXCJiYXRjaFwiKS5vcmRlckJ5KFwiYmF0Y2hcIiwgXCJkZXNjXCIpLmZpcnN0KCk7XG4gICAgICBpZiAobGF0ZXN0ID09PSB1bmRlZmluZWQpIHJldHVybiB7IGJhdGNoTm86IDAsIGZpbGVzOiBbXSB9O1xuXG4gICAgICAvLyDqsJnsnYAgYmF0Y2gg7JWI7JeQ7ISc64qUIEtuZXgg7Iuk7ZaJIOyInOyEnOuMgOuhnCDroaTrsLEg6rOE7ZqN7J2EIOqzoOygle2VnOuLpC5cbiAgICAgIGNvbnN0IHJvd3MgPSBhd2FpdCBtaWdyYXRpb25zVGFibGVcbiAgICAgICAgLmNsb25lKClcbiAgICAgICAgLnNlbGVjdChcIm5hbWVcIilcbiAgICAgICAgLndoZXJlKFwiYmF0Y2hcIiwgbGF0ZXN0LmJhdGNoKVxuICAgICAgICAub3JkZXJCeShcImlkXCIsIFwiYXNjXCIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmF0Y2hObzogbGF0ZXN0LmJhdGNoLFxuICAgICAgICBmaWxlczogcm93cy5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lLnJlcGxhY2UoL1xcLnRzJC8sIFwiXCIpKSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoY2F1Z2h0KSB7XG4gICAgICBpZiAodGhpcy5pc01pc3NpbmdNaWdyYXRpb25UYWJsZUVycm9yKGNhdWdodCkpIHJldHVybiB7IGJhdGNoTm86IDAsIGZpbGVzOiBbXSB9O1xuICAgICAgdGhyb3cgY2F1Z2h0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCB0Q29ubi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOy1nOyLoCDsg4Htg5zsnbgg6riw7KSAIERC7JmAIOyXlO2LsO2LsCDsoJXsnZjrpbwg67mE6rWQ7ZW0IOyDneyEsSDsmIjsoJUg7L2U65Oc66W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAgICpcbiAgICogQGNhdGVnb3J5IOu2hOumrO2YlSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBnZXRQcmVwYXJlZENvZGVzKGNvbXBhcmVDb25uS2V5OiBNaWdyYXRpb25UYXJnZXQpOiBQcm9taXNlPEdlbk1pZ3JhdGlvbkNvZGVbXT4ge1xuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMuZ2V0Q29ubmVjdGlvblN0YXR1cyhjb21wYXJlQ29ubktleSk7XG4gICAgaWYgKHN0YXR1cy5zdGF0dXMgIT09IDAgfHwgc3RhdHVzLmVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1pZ3JhdGlvbiBjb21wYXJpc29uIHJlcXVpcmVzIGFuIHVwLXRvLWRhdGUgZGF0YWJhc2U6ICR7U3RyaW5nKGNvbXBhcmVDb25uS2V5KX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb21wYXJlV2l0aENvbm5lY3Rpb24oY29tcGFyZUNvbm5LZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb21wYXJlV2l0aENvbm5lY3Rpb24oY29tcGFyZUNvbm5LZXk6IE1pZ3JhdGlvblRhcmdldCkge1xuICAgIGNvbnN0IGNvbXBhcmVEQiA9IGNyZWF0ZUtuZXhJbnN0YW5jZShTb25hbXUuZGJDb25maWdbY29tcGFyZUNvbm5LZXldKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29tcGFyZU1pZ3JhdGlvbnMoY29tcGFyZURCKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY29tcGFyZURCLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQg7Iug6recIFVJ7JeQ7ISc64qUIOy7pOuEpeyFmOuzhCDsobDtmowgQVBJ66W8IOyCrOyaqe2VqeuLiOuLpC5cbiAgICog6riw7KG0IENMSeyZgCDsiqTtgazrpr3tirgg7Zi47ZmY7J2EIOychO2VtCDsoITssrQg7IOB7YOc66W8IOyhsOumve2VqeuLiOuLpC5cbiAgICogQGNhdGVnb3J5IO2YuO2ZmOyaqSDrp4jsnbTqt7jroIjsnbTshZggQVBJXG4gICAqL1xuICBhc3luYyBnZXRTdGF0dXMoKTogUHJvbWlzZTxNaWdyYXRpb25TdGF0dXM+IHtcbiAgICBjb25zdCBbY29kZXMsIGNvbm5lY3Rpb25zXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZ2V0TWlncmF0aW9uQ29kZXMoKSxcbiAgICAgIFByb21pc2UucmVzb2x2ZSh0aGlzLmdldENvbm5lY3Rpb25zKCkpLFxuICAgIF0pO1xuICAgIE5haXRlLnQoXCJtaWdyYXRvcjpnZXRTdGF0dXM6Y29kZXNcIiwgY29kZXMpO1xuXG4gICAgY29uc3QgY29ubmVjdGlvblN0YXR1c2VzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb25uZWN0aW9ucy5tYXAoKHsgY29ubktleSB9KSA9PiB0aGlzLmdldENvbm5lY3Rpb25TdGF0dXMoY29ubktleSkpLFxuICAgICk7XG4gICAgY29uc3QgY29ubnMgPSBjb25uZWN0aW9ucy5tYXAoKGNvbm5lY3Rpb24sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzZXNbaW5kZXhdO1xuICAgICAgYXNzZXJ0KHN0YXR1cyAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyZWQgPVxuICAgICAgICAvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFNvbmFtdS5kYkNvbmZpZ1tcbiAgICAgICAgICBjb25uZWN0aW9uLmNvbm5LZXlcbiAgICAgICAgXS5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogY29ubmVjdGlvbi5uYW1lLFxuICAgICAgICBjb25uS2V5OiBjb25uZWN0aW9uLmNvbm5LZXksXG4gICAgICAgIGNvbm5TdHJpbmc6XG4gICAgICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBgcGc6Ly8ke2NvbmZpZ3VyZWQudXNlciA/PyBcIlwifUAke2NvbmZpZ3VyZWQuaG9zdH06JHtjb25maWd1cmVkLnBvcnR9LyR7Y29uZmlndXJlZC5kYXRhYmFzZX1gIGFzIENvbm5TdHJpbmcsXG4gICAgICAgIGN1cnJlbnRWZXJzaW9uOiBzdGF0dXMuY3VycmVudFZlcnNpb24sXG4gICAgICAgIHN0YXR1czogc3RhdHVzLnN0YXR1cyxcbiAgICAgICAgcGVuZGluZzogc3RhdHVzLnBlbmRpbmcsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIE5haXRlLnQoXCJtaWdyYXRvcjpnZXRTdGF0dXM6Y29ubnNcIiwgY29ubnMpO1xuXG4gICAgY29uc3QgY29tcGFyZUNvbm4gPSBjb25uZWN0aW9uU3RhdHVzZXMuZmluZChcbiAgICAgICh7IHN0YXR1cywgZXJyb3IgfSkgPT4gc3RhdHVzID09PSAwICYmIGVycm9yID09PSB1bmRlZmluZWQsXG4gICAgKTtcbiAgICBjb25zdCBwcmVwYXJlZENvZGVzID1cbiAgICAgIGNvbXBhcmVDb25uID09PSB1bmRlZmluZWQgPyBbXSA6IGF3YWl0IHRoaXMuY29tcGFyZVdpdGhDb25uZWN0aW9uKGNvbXBhcmVDb25uLmNvbm5LZXkpO1xuICAgIE5haXRlLnQoXCJtaWdyYXRvcjpnZXRTdGF0dXM6cHJlcGFyZWRDb2Rlc1wiLCBwcmVwYXJlZENvZGVzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb25ucyxcbiAgICAgIGNvZGVzLFxuICAgICAgcHJlcGFyZWRDb2RlcyxcbiAgICAgIGVycm9yOiBjb25uZWN0aW9uU3RhdHVzZXMuZmluZCgoeyBlcnJvciB9KSA9PiBlcnJvciAhPT0gdW5kZWZpbmVkKT8uZXJyb3IsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiDrjIDsg4EgRELsl5AgcGVuZGluZyDrp4jsnbTqt7jroIjsnbTshZjsnYQg7KCB7Jqp7ZWp64uI64ukLlxuICAgKiBDTEnsmYAgV2Vi7J2AIOqwmeydgCDrqZTshJzrk5zrpbwg7IKs7Jqp7ZWY66mwLCBXZWLsnYAgYG9uUHJvZ3Jlc3Ng66W8IHN0cmVhbeycvOuhnCDrs4DtmZjtlanri4jri6QuXG4gICAqXG4gICAqIEBjYXRlZ29yeSDrtoTrpqztmJUg66eI7J206re466CI7J207IWYIEFQSVxuICAgKi9cbiAgYXN5bmMgYXBwbHkodGFyZ2V0czogTWlncmF0aW9uVGFyZ2V0W10sIG9wdGlvbnM/OiBNaWdyYXRpb25SdW5PcHRpb25zKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5ydW5BY3Rpb25XaXRoUHJvZ3Jlc3MoXCJhcHBseVwiLCB0YXJnZXRzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDrjIDsg4EgRELsl5DshJwg6rCA7J6lIOy1nOq3vCBtaWdyYXRpb24gYmF0Y2jrpbwg66Gk67Cx7ZWp64uI64ukLlxuICAgKiBDTEnsmYAgV2Vi7J2AIOqwmeydgCDrqZTshJzrk5zrpbwg7IKs7Jqp7ZWY66mwLCBXZWLsnYAgYG9uUHJvZ3Jlc3Ng66W8IHN0cmVhbeycvOuhnCDrs4DtmZjtlanri4jri6QuXG4gICAqXG4gICAqIEBjYXRlZ29yeSDrtoTrpqztmJUg66eI7J206re466CI7J207IWYIEFQSVxuICAgKi9cbiAgYXN5bmMgcm9sbGJhY2soXG4gICAgdGFyZ2V0czogTWlncmF0aW9uVGFyZ2V0W10sXG4gICAgb3B0aW9ucz86IE1pZ3JhdGlvblJ1bk9wdGlvbnMsXG4gICk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0PiB7XG4gICAgcmV0dXJuIHRoaXMucnVuQWN0aW9uV2l0aFByb2dyZXNzKFwicm9sbGJhY2tcIiwgdGFyZ2V0cywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgYWN0aW9uIOusuOyekOyXtCDrjIDsi6Age0BsaW5rIGFwcGx5fSDrmJDripQge0BsaW5rIHJvbGxiYWNrfeydhCDsp4HsoJEg7IKs7Jqp7ZWp64uI64ukLlxuICAgKiDquLDsobQg7Jm467aAIO2YuOy2nOydmCDtlZjsnIQg7Zi47ZmY66eM7J2EIOychO2VtCDsnKDsp4Dtlanri4jri6QuXG4gICAqIEBjYXRlZ29yeSDtmLjtmZjsmqkg66eI7J206re466CI7J207IWYIEFQSVxuICAgKi9cbiAgYXN5bmMgcnVuQWN0aW9uKFxuICAgIGFjdGlvbjogXCJhcHBseVwiIHwgXCJyb2xsYmFja1wiLFxuICAgIHRhcmdldHM6IChrZXlvZiBTb25hbXVEQkNvbmZpZylbXSxcbiAgKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gYWN0aW9uID09PSBcImFwcGx5XCIgPyB0aGlzLmFwcGx5KHRhcmdldHMpIDogdGhpcy5yb2xsYmFjayh0YXJnZXRzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuQWN0aW9uV2l0aFByb2dyZXNzKFxuICAgIGFjdGlvbjogXCJhcHBseVwiIHwgXCJyb2xsYmFja1wiLFxuICAgIHRhcmdldHM6IE1pZ3JhdGlvblRhcmdldFtdLFxuICAgIG9wdGlvbnM/OiBNaWdyYXRpb25SdW5PcHRpb25zLFxuICApOiBQcm9taXNlPE1pZ3JhdGlvblJlc3VsdD4ge1xuICAgIE5haXRlLnQoXCJtaWdyYXRvcjpydW5BY3Rpb246YWN0aW9uXCIsIGFjdGlvbik7XG4gICAgTmFpdGUudChcIm1pZ3JhdG9yOnJ1bkFjdGlvbjp0YXJnZXRzXCIsIHRhcmdldHMpO1xuXG4gICAgY29uc3QgYWxsb3dlZFRhcmdldHMgPSBuZXcgU2V0KHRoaXMuZ2V0TWlncmF0aW9uVGFyZ2V0S2V5cygpKTtcbiAgICBjb25zdCBkaXNhbGxvd2VkVGFyZ2V0cyA9IHRhcmdldHMuZmlsdGVyKCh0YXJnZXQpID0+ICFhbGxvd2VkVGFyZ2V0cy5oYXModGFyZ2V0KSk7XG4gICAgaWYgKGRpc2FsbG93ZWRUYXJnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1pZ3JhdGlvbiB0YXJnZXRzIGFyZSBub3QgYWxsb3dlZCBpbiBOT0RFX0VOVj0ke2dldFNvbmFtdUVudmlyb25tZW50KCl9OiAke2Rpc2FsbG93ZWRUYXJnZXRzLmpvaW4oXCIsIFwiKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBnZXQgdW5pcSBrbmV4IGNvbmZpZ3NcbiAgICBjb25zdCBjb25maWdzID0gdW5pcXVlKFxuICAgICAgdGFyZ2V0c1xuICAgICAgICAubWFwKCh0YXJnZXQpID0+ICh7XG4gICAgICAgICAgY29ubktleTogdGFyZ2V0LFxuICAgICAgICAgIG9wdGlvbnM6IFNvbmFtdS5kYkNvbmZpZ1t0YXJnZXRdLFxuICAgICAgICB9KSlcbiAgICAgICAgLmZpbHRlcigoYykgPT4gYy5vcHRpb25zICE9PSB1bmRlZmluZWQpLFxuICAgICAgKHsgb3B0aW9uczogZGJPcHRpb25zIH0pID0+XG4gICAgICAgIGAkey8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKGRiT3B0aW9ucy5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnKS5ob3N0fToke1xuICAgICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgICAgZGJPcHRpb25zLmNvbm5lY3Rpb24gYXMgS25leC5QZ0Nvbm5lY3Rpb25Db25maWdcbiAgICAgICAgICApLnBvcnQgPz8gNTQzMlxuICAgICAgICB9LyR7LyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoZGJPcHRpb25zLmNvbm5lY3Rpb24gYXMgS25leC5QZ0Nvbm5lY3Rpb25Db25maWcpLmRhdGFiYXNlfWAsXG4gICAgKTtcblxuICAgIC8vIGdldCBjb25uZWN0aW9uc1xuICAgIGNvbnN0IGNvbm5zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb25maWdzLm1hcChhc3luYyAoY29uZmlnKSA9PiAoe1xuICAgICAgICBjb25uS2V5OiBjb25maWcuY29ubktleSxcbiAgICAgICAga25leDogY3JlYXRlS25leEluc3RhbmNlKGNvbmZpZy5vcHRpb25zKSxcbiAgICAgIH0pKSxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucnVuTWlncmF0aW9uc1NlcXVlbnRpYWxseShjb25ucywgYWN0aW9uLCBvcHRpb25zKTtcblxuICAgICAgTmFpdGUudChcIm1pZ3JhdG9yOnJ1bkFjdGlvbjpyZXN1bHRcIiwgcmVzdWx0KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGNvbm5zLm1hcCgoeyBrbmV4IH0pID0+IHtcbiAgICAgICAgICByZXR1cm4ga25leC5kZXN0cm95KCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbkRhdGVUYWcoaW5kZXg6IG51bWJlciwgYmFzZURhdGU6IERhdGUgPSBuZXcgRGF0ZSgpKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoYmFzZURhdGUuZ2V0VGltZSgpICsgaW5kZXggKiAxMDAwKTtcbiAgICByZXR1cm4gKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkgK1xuICAgICAgcGFkRGF0ZVBhcnQoZGF0ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgcGFkRGF0ZVBhcnQoZGF0ZS5nZXREYXRlKCkpICtcbiAgICAgIHBhZERhdGVQYXJ0KGRhdGUuZ2V0SG91cnMoKSkgK1xuICAgICAgcGFkRGF0ZVBhcnQoZGF0ZS5nZXRNaW51dGVzKCkpICtcbiAgICAgIHBhZERhdGVQYXJ0KGRhdGUuZ2V0U2Vjb25kcygpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog66eI7J206re466CI7J207IWYIOy9lOuTnCDtjIzsnbzsnYQg7IOd7ISx7ZWp64uI64ukLlxuICAgKlxuICAgKiBTb25hbXUgVUnsl5DshJwg7IKs7Jqp65Cp64uI64ukLlxuICAgKlxuICAgKiBAcmV0dXJucyDsg53shLHrkJwg66eI7J206re466CI7J207IWYIOy9lOuTnCDtjIzsnbwg6rCc7IiYXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVByZXBhcmVkQ29kZXMoY29tcGFyZUNvbm5LZXk/OiBNaWdyYXRpb25UYXJnZXQpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHByZXBhcmVkQ29kZXMgPVxuICAgICAgY29tcGFyZUNvbm5LZXkgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IChhd2FpdCB0aGlzLmdldFN0YXR1cygpKS5wcmVwYXJlZENvZGVzXG4gICAgICAgIDogYXdhaXQgdGhpcy5nZXRQcmVwYXJlZENvZGVzKGNvbXBhcmVDb25uS2V5KTtcbiAgICBOYWl0ZS50KFwibWlncmF0b3I6Z2VuZXJhdGVQcmVwYXJlZENvZGVzOnByZXBhcmVkQ29kZXNcIiwgcHJlcGFyZWRDb2Rlcyk7XG4gICAgaWYgKHByZXBhcmVkQ29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihcIlxcbu2YhOyerCDrqqjrkZAg7Iux7YGs65CcIOyDge2DnOyeheuLiOuLpC5cIikpO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLy8g7Iuk7KCcIOy9lOuTnCDsg53shLFcbiAgICBjb25zdCBtaWdyYXRpb25zRGlyID0gYCR7U29uYW11LmFwaVJvb3RQYXRofS9zcmMvbWlncmF0aW9uc2A7XG5cbiAgICBmb3IgKGNvbnN0IFtpbmRleCwgcGNvZGVdIG9mIHByZXBhcmVkQ29kZXMuZW50cmllcygpKSB7XG4gICAgICBpZiAocGNvZGUuZm9ybWF0dGVkKSB7XG4gICAgICAgIGNvbnN0IGRhdGVUYWcgPSB0aGlzLmdlbkRhdGVUYWcoaW5kZXgpO1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGAke21pZ3JhdGlvbnNEaXJ9LyR7ZGF0ZVRhZ31fJHtwY29kZS50aXRsZX0udHNgO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIHBjb2RlLmZvcm1hdHRlZCk7XG4gICAgICAgICFpc1Rlc3QoKSAmJiBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgTUlHUkFUSU9OIENSRUFURUQgJHtmaWxlUGF0aH1gKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZXBhcmVkQ29kZXMubGVuZ3RoO1xuICB9XG5cbiAgYXN5bmMgY29tcGFyZU1pZ3JhdGlvbnMoY29tcGFyZURCOiBLbmV4KTogUHJvbWlzZTxHZW5NaWdyYXRpb25Db2RlW10+IHtcbiAgICAvLyBFbnRpdHkg7Iic7ZqM7ZWY7JesIOyLse2BrFxuICAgIGNvbnN0IGVudGl0eUlkcyA9IEVudGl0eU1hbmFnZXIuZ2V0QWxsSWRzKCk7XG5cbiAgICAvLyDsobDsnbjthYzsnbTruJQg7Y+s7ZWo7ZWY7JesIEVudGl0eeyXkOyEnCBNaWdyYXRpb25TZXQg7LaU7LacXG4gICAgY29uc3QgZW50aXR5U2V0c1dpdGhKb2luVGFibGUgPSBlbnRpdHlJZHNcbiAgICAgIC5maWx0ZXIoKGVudGl0eUlkKSA9PiBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCkucHJvcHMubGVuZ3RoID4gMClcbiAgICAgIC5tYXAoKGVudGl0eUlkKSA9PiBnZXRNaWdyYXRpb25TZXRGcm9tRW50aXR5KEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKSkpO1xuXG4gICAgLy8g7KGw7J247YWM7J2067iU66eMIOy2lOy2nFxuICAgIGNvbnN0IGpvaW5UYWJsZXNXaXRoRHVwID0gZW50aXR5U2V0c1dpdGhKb2luVGFibGUuZmxhdE1hcCgoZW50aXR5U2V0KSA9PiBlbnRpdHlTZXQuam9pblRhYmxlcyk7XG4gICAgLy8g7KSR67O1IOygnOqxsCAo7KSR67O17J24IOqyveyasCBpbmRleGVz66W8IOuzke2VqSlcbiAgICBjb25zdCBqb2luVGFibGVzID0gT2JqZWN0LnZhbHVlcyhncm91cChqb2luVGFibGVzV2l0aER1cCwgKGp0KSA9PiBqdC50YWJsZSkpLm1hcCgodGFibGVzKSA9PiB7XG4gICAgICBhc3NlcnQodGFibGVzICE9PSB1bmRlZmluZWQsIFwidGFibGVzIGlzIHVuZGVmaW5lZFwiKTtcbiAgICAgIGlmICh0YWJsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB0YWJsZXNbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi50YWJsZXNbMF0sXG4gICAgICAgIGluZGV4ZXM6IHVuaXF1ZShcbiAgICAgICAgICB0YWJsZXMuZmxhdE1hcCgodCkgPT4gdC5pbmRleGVzKSxcbiAgICAgICAgICAoaW5kZXgpID0+IFtpbmRleC50eXBlLCAuLi5pbmRleC5jb2x1bW5zXS5qb2luKFwiLVwiKSxcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyDsobDsnbjthYzsnbTruJQg7Y+s7ZWo7ZWY7JesIE1pZ3JhdGlvblNldCDrsLDsl7RcbiAgICBjb25zdCBlbnRpdHlTZXRzOiBNaWdyYXRpb25TZXRbXSA9IFsuLi5lbnRpdHlTZXRzV2l0aEpvaW5UYWJsZSwgLi4uam9pblRhYmxlc107XG5cbiAgICBjb25zdCBjb2RlczogR2VuTWlncmF0aW9uQ29kZVtdID0gW107XG4gICAgY29uc3QgYmF0Y2hTaXplID0gNDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW50aXR5U2V0cy5sZW5ndGg7IGkgKz0gYmF0Y2hTaXplKSB7XG4gICAgICBjb25zdCBiYXRjaENvZGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGVudGl0eVNldHMuc2xpY2UoaSwgaSArIGJhdGNoU2l6ZSkubWFwKGFzeW5jIChlbnRpdHlTZXQpID0+IHtcbiAgICAgICAgICBjb25zdCBkYlNldCA9IGF3YWl0IFBvc3RncmVTUUxTY2hlbWFSZWFkZXIuZ2V0TWlncmF0aW9uU2V0RnJvbURCKFxuICAgICAgICAgICAgY29tcGFyZURCLFxuICAgICAgICAgICAgZW50aXR5U2V0LnRhYmxlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgTmFpdGUudChgbWlncmF0b3I6Y29tcGFyZU1pZ3JhdGlvbnM6ZW50aXR5U2V0OiR7ZW50aXR5U2V0LnRhYmxlfWAsIGVudGl0eVNldCk7XG4gICAgICAgICAgTmFpdGUudChgbWlncmF0b3I6Y29tcGFyZU1pZ3JhdGlvbnM6ZGJTZXQ6JHtlbnRpdHlTZXQudGFibGV9YCwgZGJTZXQpO1xuXG4gICAgICAgICAgaWYgKGRiU2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyDquLDsobQg7YWM7J2067iUIOyXhuydjCwg7IOI66GcIO2FjOydtOu4lCDsg53shLFcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBnZW5lcmF0ZUNyZWF0ZUNvZGUoZW50aXR5U2V0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g6riw7KG0IO2FjOydtOu4lCDsobTsnqztlZjripQg7LyA7J207IqkXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZ2VuZXJhdGVBbHRlckNvZGUoZW50aXR5U2V0LCBkYlNldCwgY29tcGFyZURCKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgY29kZXMucHVzaCguLi5iYXRjaENvZGVzLmZsYXQoKSk7XG4gICAgfVxuXG4gICAgLy8gbm9ybWFsIO2DgOyeheydtCDslZ7snLzroZwsIGZvcmVpZ27snbQg65Kk66GcXG4gICAgY29kZXMuc29ydCgoY29kZUEsIGNvZGVCKSA9PiB7XG4gICAgICBpZiAoY29kZUEudHlwZSA9PT0gXCJmb3JlaWduXCIgJiYgY29kZUIudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSBpZiAoY29kZUEudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBjb2RlQi50eXBlID09PSBcImZvcmVpZ25cIikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb2RlcztcbiAgfVxuXG4gIC8qKlxuICAgKiB0ZXN0IERC7J2YIHNuYXBzaG907Jy866GcIOyehOyLnCBTaGFkb3cgRELrpbwg66eM65Ok6rOgIOyghOyytCDrp4jsnbTqt7jroIjsnbTshZjsnYQg6rKA7Kad7ZWp64uI64ukLlxuICAgKiBDTEnsmYAgV2Vi7J2AIGBvblByb2dyZXNzYCDsnKDrrLTrp4wg64us66as7ZW0IOqwmeydgCDsi6Ttlokg7J2Y66+466W8IOqzteycoO2VoCDsiJgg7J6I7Iq164uI64ukLlxuICAgKlxuICAgKiBAY2F0ZWdvcnkg67aE66as7ZiVIOuniOydtOq3uOugiOydtOyFmCBBUElcbiAgICovXG4gIGFzeW5jIHJ1blNoYWRvd1Rlc3QoXG4gICAgb3B0aW9ucz86IE1pZ3JhdGlvblJ1bk9wdGlvbnMgJiB7IHRhcmdldD86IE1pZ3JhdGlvblRhcmdldCB9LFxuICApOiBQcm9taXNlPE1pZ3JhdGlvblJlc3VsdD4ge1xuICAgIGNvbnN0IHRhcmdldCA9IG9wdGlvbnM/LnRhcmdldCA/PyBcInRlc3RcIjtcbiAgICBpZiAodGFyZ2V0ICE9PSBcInRlc3RcIiAmJiB0YXJnZXQgIT09IFwiZml4dHVyZVwiKSB7XG4gICAgICAvLyDsmrTsmIEg6rOE7Je0IERC64qUIOyEpOyglSDsobDtmozrgpgg7Jew6rKwIOyDneyEseuztOuLpCDrqLzsoIAg7LCo64uo7ZWc64ukLlxuICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoYOyngOybkO2VmOyngCDslYrripQgU2hhZG93IOuniOydtOq3uOugiOydtOyFmCDrjIDsg4HsnoXri4jri6Q6ICR7dGFyZ2V0fWApLCB7XG4gICAgICAgIGNvZGU6IFwiSU5WQUxJRF9TSEFET1dfTUlHUkFUSU9OX1RBUkdFVFwiLFxuICAgICAgICB0YXJnZXQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgc2hhZG93VGFyZ2V0OiBTaGFkb3dNaWdyYXRpb25UYXJnZXQgPSB0YXJnZXQ7XG4gICAgY29uc3QgYmFzZVRhcmdldENvbm4gPVxuICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBTb25hbXUuZGJDb25maWdbXG4gICAgICAgIHNoYWRvd1RhcmdldFxuICAgICAgXS5jb25uZWN0aW9uIGFzIEtuZXguUGdDb25uZWN0aW9uQ29uZmlnO1xuICAgIGNvbnN0IGNvbmZpZ3VyZWREYXRhYmFzZSA9IGJhc2VUYXJnZXRDb25uLmRhdGFiYXNlO1xuICAgIGlmICghY29uZmlndXJlZERhdGFiYXNlKSB7XG4gICAgICB0aHJvdyBPYmplY3QuYXNzaWduKG5ldyBFcnJvcihgU2hhZG93IOuMgOyDgSBEQiDsnbTrpoTsnbQg7JeG7Iq164uI64ukOiAke3NoYWRvd1RhcmdldH1gKSwge1xuICAgICAgICBjb2RlOiBcIklOVkFMSURfU0hBRE9XX0RBVEFCQVNFX0NPTkZJR1wiLFxuICAgICAgICB0YXJnZXQ6IHNoYWRvd1RhcmdldCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3b3JrZXJJZCA9XG4gICAgICBzaGFkb3dUYXJnZXQgPT09IFwidGVzdFwiICYmIHByb2Nlc3MuZW52LlNPTkFNVV9XT1JLRVJfREIgPT09IFwidHJ1ZVwiXG4gICAgICAgID8gcHJvY2Vzcy5lbnYuVklURVNUX1BPT0xfSURcbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IHRlbXBsYXRlRGF0YWJhc2UgPVxuICAgICAgd29ya2VySWQgIT09IG51bGwgPyBgJHtjb25maWd1cmVkRGF0YWJhc2V9XyR7d29ya2VySWQgPz8gXCIxXCJ9YCA6IGNvbmZpZ3VyZWREYXRhYmFzZTtcbiAgICBjb25zdCBzaGFkb3dEYXRhYmFzZSA9IGAke3RlbXBsYXRlRGF0YWJhc2V9X19taWdyYXRpb25fc2hhZG93YDtcbiAgICBjb25zdCBjcmVhdGVTaGFkb3dDb25uZWN0aW9uID0gKGRhdGFiYXNlOiBzdHJpbmcpID0+XG4gICAgICBjcmVhdGVLbmV4SW5zdGFuY2Uoe1xuICAgICAgICAuLi5Tb25hbXUuZGJDb25maWdbc2hhZG93VGFyZ2V0XSxcbiAgICAgICAgY29ubmVjdGlvbjogeyAuLi5iYXNlVGFyZ2V0Q29ubiwgZGF0YWJhc2UgfSxcbiAgICAgIH0pO1xuXG4gICAgLy8g7YWM7Iqk7Yq4IOyDge2ZqeyXkOyEnOuKlCDtirjrnpzsnq3shZjsnYQg7LSI6riw7ZmU7ZWY6rOgLCDsg4gg642w7J207YSw67Kg7J207IqkIOy7pOuEpeyFmOydhCDqsIDsoLjsmYDslbwg7ZWoXG4gICAgaWYgKGlzVGVzdCgpKSB7XG4gICAgICBhd2FpdCBEQi5jbGVhclRlc3RUcmFuc2FjdGlvbigpO1xuICAgICAgYXdhaXQgREIuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8vIOq4sOyhtCBTaGFkb3cgREIg7IKt7KCcIO2bhCBTaGFkb3cgREIg7IOd7ISxXG4gICAgY29uc3QgdGRiID0gY3JlYXRlU2hhZG93Q29ubmVjdGlvbihcInBvc3RncmVzXCIpO1xuICAgIHRyeSB7XG4gICAgICAhaXNUZXN0KCkgJiYgY29uc29sZS5sb2coY2hhbGsubWFnZW50YShgJHtzaGFkb3dEYXRhYmFzZX0g7IKt7KCcYCkpO1xuICAgICAgYXdhaXQgdGRiLnJhdyhcIkRST1AgREFUQUJBU0UgSUYgRVhJU1RTID8/XCIsIFtzaGFkb3dEYXRhYmFzZV0pO1xuICAgICAgYXdhaXQgdGRiLnJhdyhcbiAgICAgICAgYFxuICAgICAgICBTRUxFQ1QgcGdfdGVybWluYXRlX2JhY2tlbmQocGdfc3RhdF9hY3Rpdml0eS5waWQpXG4gICAgICAgIEZST00gcGdfc3RhdF9hY3Rpdml0eVxuICAgICAgICBXSEVSRSBkYXRuYW1lID0gP1xuICAgICAgICAgIEFORCBwaWQgPD4gcGdfYmFja2VuZF9waWQoKTtcbiAgICAgIGAsXG4gICAgICAgIFt0ZW1wbGF0ZURhdGFiYXNlXSxcbiAgICAgICk7XG4gICAgICBhd2FpdCB0ZGIucmF3KFwiQ1JFQVRFIERBVEFCQVNFID8/IFRFTVBMQVRFID8/XCIsIFtzaGFkb3dEYXRhYmFzZSwgdGVtcGxhdGVEYXRhYmFzZV0pO1xuXG4gICAgICAvLyBTaGFkb3cgRELsl5Ag7Jew6rKwXG4gICAgICBjb25zdCBzZGIgPSBjcmVhdGVTaGFkb3dDb25uZWN0aW9uKHNoYWRvd0RhdGFiYXNlKTtcblxuICAgICAgLy8gc2hhZG93IERCIO2FjOyKpO2KuCDsp4TtlolcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy5jcmVhdGVQcm9ncmVzc0hvb2tzKFwic2hhZG93XCIsIFwic2hhZG93XCIsIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBbYmF0Y2hObywgYXBwbGllZF0gPSBhd2FpdCBzZGIubWlncmF0ZS5sYXRlc3QocHJvZ3Jlc3MpO1xuICAgICAgICAhaXNUZXN0KCkgJiZcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihcIlNoYWRvdyBEQiDthYzsiqTtirjsl5Ag7ISx6rO17ZaI7Iq164uI64ukIVwiKSwge1xuICAgICAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgICAgIGFwcGxpZWQsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3Mob3B0aW9ucywge1xuICAgICAgICAgIHR5cGU6IFwidGFyZ2V0LWNvbXBsZXRlXCIsXG4gICAgICAgICAgYWN0aW9uOiBcInNoYWRvd1wiLFxuICAgICAgICAgIGNvbm5LZXk6IFwic2hhZG93XCIsXG4gICAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgICBmaWxlczogYXBwbGllZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25uS2V5OiBcInNoYWRvd1wiLFxuICAgICAgICAgICAgYmF0Y2hObyxcbiAgICAgICAgICAgIGFwcGxpZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgdGhyb3cgbmV3IE1pZ3JhdGlvblRhcmdldEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICAgIFwic2hhZG93XCIsXG4gICAgICAgICAgbmV3IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbihTRChcInNvbmFtdS5lcnJvci5zaGFkb3dEYlRlc3RGYWlsZWRcIikpLFxuICAgICAgICApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgc2RiLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gU2hhZG93IERCIOyCreygnFxuICAgICAgIWlzVGVzdCgpICYmIGNvbnNvbGUubG9nKGNoYWxrLm1hZ2VudGEoYCR7c2hhZG93RGF0YWJhc2V9IOyCreygnGApKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRkYi5yYXcoXCJEUk9QIERBVEFCQVNFIElGIEVYSVNUUyA/P1wiLCBbc2hhZG93RGF0YWJhc2VdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlNoYWRvdyBEQiDsoJXrpqwg7Iuk7YyoOlwiLCBlKTsgLy8g7J206rKMIOyXhuycvOuptCDsobDsmqntnogg64iE7IiYXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBhd2FpdCB0ZGIuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkNBLFNBQVMsWUFBWSxRQUFnQixPQUFlLEdBQVc7Q0FDN0QsT0FBTyxPQUFPLFNBQVMsQ0FBQyxDQUFDLFNBQVMsTUFBTSxHQUFHO0FBQzdDOzs7OztBQXNCQSxTQUFTLFlBQWUsU0FBcUIsSUFBWSxXQUFvQztDQUMzRixPQUFPLElBQUksU0FBWSxTQUFTLFdBQVc7RUFDekMsTUFBTSxRQUFRLGlCQUFp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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql-schema-reader.d.ts","sourceRoot":"","sources":["../../src/migration/postgresql-schema-reader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB;IACnB,QAAQ,EAAE,UAAU,CAAC;IACrB,mBAAmB;IACnB,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAExC,cAAM,2BAA2B;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyD;IAE3F;;;;;OAKG;IACG,qBAAqB,CACzB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"postgresql-schema-reader.d.ts","sourceRoot":"","sources":["../../src/migration/postgresql-schema-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-confirm.d.ts","sourceRoot":"","sources":["../../src/migration/slack-confirm.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,OAAO,CAAC;IACzE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA8B;IAE5C,OAAO,CAAC,yBAAyB;IAkBjC;;OAEG;IACH,YAAY,IAAI,OAAO;
|
|
1
|
+
{"version":3,"file":"slack-confirm.d.ts","sourceRoot":"","sources":["../../src/migration/slack-confirm.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,OAAO,CAAC;IACzE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA8B;IAE5C,OAAO,CAAC,yBAAyB;IAkBjC;;OAEG;IACH,YAAY,IAAI,OAAO,CAGtB;IAED;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,cAAc,GAAG,OAAO,CAG9D;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAG9C;IAED;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAc9F;IAED;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlF;IAED;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACG,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAqC1C;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAyCD;IAED;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAuCf;IAED;;OAEG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,eAAe,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAkCf;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-types.d.ts","sourceRoot":"","sources":["../../src/naite/messaging-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messaging-types.d.ts","sourceRoot":"","sources":["../../src/naite/messaging-types.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,yBAAiB,mBAAmB,CAAC;IACnC,KAAY,oBAAoB,GAAG;QACjC,IAAI,EAAE,WAAW,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,KAAY,sBAAsB,GAAG;QACnC,IAAI,EAAE,aAAa,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,UAAU,CAAC;IAEf,KAAY,kBAAkB,GAAG;QAC/B,IAAI,EAAE,SAAS,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,KAAY,YAAY,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;IAE9F,KAAY,UAAU,GAAG;QACvB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IAEF,KAAY,SAAS,GAAG;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,KAAY,UAAU,GAAG;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naite-reporter.d.ts","sourceRoot":"","sources":["../../src/naite/naite-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG
|
|
1
|
+
{"version":3,"file":"naite-reporter.d.ts","sourceRoot":"","sources":["../../src/naite/naite-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA+B7D,cAAM,kBAAkB;IACtB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAE9B;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,IAAI;IAgBlB;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CASlC;IAED;;;OAGG;IACG,gBAAgB,CACpB,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,GACzD,OAAO,CAAC,IAAI,CAAC,CAUf;IAED;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBhC;CACF;AAED,eAAO,MAAM,aAAa,oBAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naite.d.ts","sourceRoot":"","sources":["../../src/naite/naite.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"naite.d.ts","sourceRoot":"","sources":["../../src/naite/naite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-file.d.ts","sourceRoot":"","sources":["../../src/storage/base-file.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"base-file.d.ts","sourceRoot":"","sources":["../../src/storage/base-file.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE9B,YAAY,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,EAMA;IAED,aAAa;IACb,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,cAAc;IACd,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,oBAAoB;IACpB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,iBAAiB;IACjB,IAAI,OAAO,IAAI,MAAM,GAAG,KAAK,CAE5B;IAED,yBAAyB;IACzB,IAAI,GAAG,IAAI,MAAM,CAKhB;IAED,uBAAuB;IACvB,IAAI,SAAS,IAAI,MAAM,CAKtB;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffered-file.d.ts","sourceRoot":"","sources":["../../src/storage/buffered-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAS;
|
|
1
|
+
{"version":3,"file":"buffered-file.d.ts","sourceRoot":"","sources":["../../src/storage/buffered-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAS;IAE5B,YAAY,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAQ9C;IAED,gBAAgB;IAChB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,gBAAgB;IACV,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3B;IAED;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAclE;IAED,0BAA0B;IAC1B,IAAI,GAAG,IAAI,aAAa,CAEvB;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../../src/storage/drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,OAAO;
|
|
1
|
+
{"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../../src/storage/drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,OAAO;IAClB,EAAE,WAAW,eAAe;IAC5B,EAAE,WAAW,eAAe;CAC7B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3-driver.d.ts","sourceRoot":"","sources":["../../src/storage/s3-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAMvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAU;
|
|
1
|
+
{"version":3,"file":"s3-driver.d.ts","sourceRoot":"","sources":["../../src/storage/s3-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAMvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAU;IAEnC,YAAY,OAAO,EAAE,eAAe,EAQnC;IAED;;;;;OAKG;IACY,SAAS,CACtB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,GACA,OAAO,CAAC,IAAI,CAAC,CA0Bf;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../src/storage/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAAmC;
|
|
1
|
+
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../src/storage/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAAmC;IAEhD,YAAoB,MAAM,EAAE,aAAa,EAAI;IAE7C;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAW7B;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/storage/uploaded-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAY;
|
|
1
|
+
{"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/storage/uploaded-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAY;IAEjC,YAAY,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,SAAS,CAAC;KACrB,EAUA;IAED,cAAc;IACd,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,iBAAiB;IACjB,IAAI,QAAQ,IAAI,SAAS,CAExB;IAED;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAMhC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-audience-resolver.d.ts","sourceRoot":"","sources":["../../src/stream/ws-audience-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"ws-audience-resolver.d.ts","sourceRoot":"","sources":["../../src/stream/ws-audience-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,qBAAa,yBAAyB;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAD1B,YACmB,OAAO,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,sBAAsB,CAAC;KACvC,EACC;IAEJ,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB,CAiBzD;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-audience.d.ts","sourceRoot":"","sources":["../../src/stream/ws-audience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC,CAAC;AAEN,eAAO,MAAM,iBAAiB;
|
|
1
|
+
{"version":3,"file":"ws-audience.d.ts","sourceRoot":"","sources":["../../src/stream/ws-audience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC,CAAC;AAEN,eAAO,MAAM,iBAAiB;IAC5B,GAAG,aAAa,MAAM,GAAG,iBAAiB;IAM1C,IAAI,SAAS,eAAe,cAAc,MAAM,GAAG,iBAAiB;IAOpE,IAAI,SAAS,eAAe,cAAc,MAAM,GAAG,iBAAiB;IAOpE,WAAW,gBAAgB,MAAM,EAAE,cAAc,MAAM,GAAG,iBAAiB;IAO3E,KAAK,eAAe,iBAAiB,EAAE,GAAG,iBAAiB;CAM5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-cluster-bus.d.ts","sourceRoot":"","sources":["../../src/stream/ws-cluster-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,CAC5C,QAAQ,EAAE,wBAAwB,KAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,SAAS,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,IAAI,CAAC;IAChE,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ws-cluster-bus.d.ts","sourceRoot":"","sources":["../../src/stream/ws-cluster-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,CAC5C,QAAQ,EAAE,wBAAwB,KAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,SAAS,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,IAAI,CAAC;IAChE,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAG;IAErD,SAAS,CAAC,QAAQ,EAAE,+BAA+B,GAAG,MAAM,IAAI,CAE/D;IAED,QAAQ,IAAI,IAAI,CAAG;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-delivery.d.ts","sourceRoot":"","sources":["../../src/stream/ws-delivery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,KAAK,mBAAmB,EAAiC,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,uBAAuB;IAahC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAK1B;IACR,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAa;
|
|
1
|
+
{"version":3,"file":"ws-delivery.d.ts","sourceRoot":"","sources":["../../src/stream/ws-delivery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,KAAK,mBAAmB,EAAiC,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,uBAAuB;IAahC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAK1B;IACR,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAa;IAEpD,YACmB,OAAO,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,6BAA6B,CAAC;QAChD,gBAAgB,EAAE,yBAAyB,CAAC;QAC5C,UAAU,EAAE,mBAAmB,CAAC;QAChC,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;KACpD,EASF;IAED,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAwEpF;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAI9B;IAED,oBAAoB;;;MAWnB;IAED,OAAO,CAAC,qBAAqB;IA+C7B,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,WAAW;CAqBpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-local-connection-store.d.ts","sourceRoot":"","sources":["../../src/stream/ws-local-connection-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,KAAK,oCAAoC,EAE1C,MAAM,gBAAgB,CAAC;AAExB,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAE7E,QAAQ,CAAC,UAAU,EAAE,0BAA0B,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ws-local-connection-store.d.ts","sourceRoot":"","sources":["../../src/stream/ws-local-connection-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,KAAK,oCAAoC,EAE1C,MAAM,gBAAgB,CAAC;AAExB,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAE7E,QAAQ,CAAC,UAAU,EAAE,0BAA0B,GAAG,IAAI,CAErD;IAED,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAErC;IAED,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS,CAE1E;IAED,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,0BAA0B,EAAE,CAmBpE;IAED,oBAAoB,IAAI,oCAAoC,CAmB3D;IAED,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAI7C;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-presence-store.d.ts","sourceRoot":"","sources":["../../src/stream/ws-presence-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAEpG,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5B,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,wBAAwB,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAAC;IACpE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACvD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACxD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAAC;IACvE,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,wBAAwB,EAAE,CAAC;IACxF,QAAQ,IAAI,sBAAsB,CAAC;IACnC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,wBAAwB,EAAE,CAAC;CACxE;AAED,qBAAa,8BAA+B,YAAW,sBAAsB;IAC3E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IAExD,QAAQ,CAAC,KAAK,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,wBAAwB;
|
|
1
|
+
{"version":3,"file":"ws-presence-store.d.ts","sourceRoot":"","sources":["../../src/stream/ws-presence-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-registry.d.ts","sourceRoot":"","sources":["../../src/stream/ws-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAA2B,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,KAAK,4BAA4B,EAClC,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAE/D,MAAM,MAAM,wBAAwB,GAAG;IAErC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;CACpD,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,gBAAgB,gCAAuC;IAChE,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;IACjD,QAAQ,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ws-registry.d.ts","sourceRoot":"","sources":["../../src/stream/ws-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-telemetry-memory.d.ts","sourceRoot":"","sources":["../../src/stream/ws-telemetry-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,gBAAgB,CAAC;AAExB,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAuHF,qBAAa,kBAAmB,YAAW,4BAA4B;IACrE,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAE3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoD;
|
|
1
|
+
{"version":3,"file":"ws-telemetry-memory.d.ts","sourceRoot":"","sources":["../../src/stream/ws-telemetry-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EACjC,MAAM,gBAAgB,CAAC;AAExB,KAAK,oBAAoB,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAuHF,qBAAa,kBAAmB,YAAW,4BAA4B;IACrE,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAE3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoD;IAE3E,YAAY,OAAO,GAAE,oBAAyB,EAW7C;IAED,KAAK,CAAC,MAAM,EAAE,kCAAkC,GAAG,6BAA6B,EAAE,CAYjF;IAED,KAAK,IAAI,IAAI,CAEZ;CACF;AAED,qBAAa,mBAAoB,YAAW,6BAA6B;IACvE,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqD;IAE5E,YAAY,OAAO,GAAE,oBAAyB,EAW7C;IAED,KAAK,CAAC,MAAM,EAAE,mCAAmC,GAAG,8BAA8B,EAAE,CAYnF;IAED,KAAK,IAAI,IAAI,CAEZ;CACF;AAED,qBAAa,iBAAkB,YAAW,2BAA2B;IACnE,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAE1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAE1E,YAAY,OAAO,GAAE,oBAAyB,EAQ7C;IAED,KAAK,CAAC,MAAM,EAAE,iCAAiC,GAAG,4BAA4B,EAAE,CAc/E;IAED,KAAK,IAAI,IAAI,CAEZ;CACF"}
|