@githolon/dsl 0.108.3 → 0.108.6
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/dart/CHANGELOG.md +10 -0
- package/dart/lib/src/application_framework_calls.dart +21 -0
- package/dart/lib/src/dev_cloud.dart +67 -0
- package/dart/lib/src/nms_test_environment.dart +1 -1
- package/dart/lib/src/runner/node-entry.mjs +372 -106
- package/dart/lib/src/runner/offline-install.mjs +171 -11
- package/dart/lib/src/session_bound.dart +58 -30
- package/dart/lib/src/test_harness.dart +60 -98
- package/dart/lib/src/webview_bridge.dart +212 -32
- package/dart/pubspec.lock +1 -1
- package/dart/pubspec.yaml +2 -2
- package/dart/test/node_runner_transport_test.dart +5 -5
- package/dart/test/webview_bridge_test.dart +6 -0
- package/dart_types/CHANGELOG.md +4 -0
- package/dart_types/lib/src/proto/nomos/runtime/v2/runtime.pb.dart +428 -2
- package/dart_types/pubspec.yaml +1 -1
- package/package.json +1 -1
- package/runtime/generated-application-host.js +314 -82
- package/src/application_topology.ts +120 -28
- package/src/births.ts +27 -0
- package/src/codegen_call_usda.ts +9 -4
- package/src/codegen_dart_application.ts +146 -37
- package/src/codegen_dart_client.ts +225 -160
- package/src/codegen_dart_framework_calls.ts +89 -4
- package/src/codegen_ts.ts +135 -60
- package/src/compile_package_main.ts +3544 -1460
- package/src/directive.ts +320 -118
- package/src/fields.ts +2 -3
- package/src/framework/application_home.ts +3 -0
- package/src/framework/auth_provider_law.ts +20 -16
- package/src/framework/genesis.ts +32 -1
- package/src/framework/home.ts +45 -8
- package/src/framework/signing_identity.ts +78 -0
- package/src/framework/workspaces.ts +9 -1
- package/src/framework_call_dart_enums.ts +33 -0
- package/src/framework_call_definitions.ts +11 -2
- package/src/index.ts +12 -0
- package/src/intent.ts +525 -194
- package/src/law_graph.ts +32 -4
- package/src/law_graph_usda.ts +3 -0
- package/src/package_config.ts +16 -1
- package/src/read.ts +33 -11
- package/src/wire.ts +1 -0
- package/src/wire_encode.ts +3 -3
|
@@ -3564,50 +3564,52 @@ var IntentTransportRequirement = /* @__PURE__ */ tsEnum(IntentTransportRequireme
|
|
|
3564
3564
|
var file_nomos_kernel_v1_progress = /* @__PURE__ */ fileDesc("Ch5ub21vcy9rZXJuZWwvdjEvcHJvZ3Jlc3MucHJvdG8SD25vbW9zLmtlcm5lbC52MSLEAwoWS2VybmVsUHJvZ3Jlc3NTbmFwc2hvdBIWCg5zY2hlbWFfdmVyc2lvbhgBIAEoDRIQCghzZXF1ZW5jZRgCIAEoBBI7CglvcGVyYXRpb24YAyABKA4yKC5ub21vcy5rZXJuZWwudjEuS2VybmVsUHJvZ3Jlc3NPcGVyYXRpb24SMwoFcGhhc2UYBCABKA4yJC5ub21vcy5rZXJuZWwudjEuS2VybmVsUHJvZ3Jlc3NQaGFzZRIXCg9jb21wbGV0ZWRfdW5pdHMYBSABKAQSEwoLdG90YWxfdW5pdHMYBiABKAQSMQoEdW5pdBgHIAEoDjIjLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxQcm9ncmVzc1VuaXQSEAoIdGVybWluYWwYCCABKAgSHAoUYWxsb2NhdG9yX2xpdmVfYnl0ZXMYCSABKAQSHAoUYWxsb2NhdG9yX3BlYWtfYnl0ZXMYCiABKAQSQwoSbGF3X2h5ZHJhdGlvbl9zdGVwGAsgASgOMicubm9tb3Mua2VybmVsLnYxLktlcm5lbExhd0h5ZHJhdGlvblN0ZXASGgoSbGF3X3BhY2thZ2Vfc2hhMjU2GAwgASgJKnAKF0tlcm5lbFByb2dyZXNzT3BlcmF0aW9uEikKJUtFUk5FTF9QUk9HUkVTU19PUEVSQVRJT05fVU5TUEVDSUZJRUQQABIqCiZLRVJORUxfUFJPR1JFU1NfT1BFUkFUSU9OX1JFU1RPUkVfTUFJThABKtkDChNLZXJuZWxQcm9ncmVzc1BoYXNlEiUKIUtFUk5FTF9QUk9HUkVTU19QSEFTRV9VTlNQRUNJRklFRBAAEicKI0tFUk5FTF9QUk9HUkVTU19QSEFTRV9DSEVDS19DVVNUT0RZEAESJAogS0VSTkVMX1BST0dSRVNTX1BIQVNFX1JFQURfQ0hBSU4QAhIrCidLRVJORUxfUFJPR1JFU1NfUEhBU0VfSU5JVElBTElaRV9FTkdJTkUQAxInCiNLRVJORUxfUFJPR1JFU1NfUEhBU0VfUkVBRF9USU1FTElORRAEEiUKIUtFUk5FTF9QUk9HUkVTU19QSEFTRV9IWURSQVRFX0xBVxAFEioKJktFUk5FTF9QUk9HUkVTU19QSEFTRV9SRUNPVkVSWV9QUkVTQ0FOEAYSKAokS0VSTkVMX1BST0dSRVNTX1BIQVNFX1ZFUklGWV9JTlRFTlRTEAcSKQolS0VSTkVMX1BST0dSRVNTX1BIQVNFX1BST01PVEVfQ1VTVE9EWRAIEioKJktFUk5FTF9QUk9HUkVTU19QSEFTRV9SRUJVSUxEX0ZST05USUVSEAkSIgoeS0VSTkVMX1BST0dSRVNTX1BIQVNFX0NPTVBMRVRFEAoqgQEKEktlcm5lbFByb2dyZXNzVW5pdBIkCiBLRVJORUxfUFJPR1JFU1NfVU5JVF9VTlNQRUNJRklFRBAAEh8KG0tFUk5FTF9QUk9HUkVTU19VTklUX0lOVEVOVBABEiQKIEtFUk5FTF9QUk9HUkVTU19VTklUX0xBV19QQUNLQUdFEAIqqwIKFktlcm5lbExhd0h5ZHJhdGlvblN0ZXASKQolS0VSTkVMX0xBV19IWURSQVRJT05fU1RFUF9VTlNQRUNJRklFRBAAEioKJktFUk5FTF9MQVdfSFlEUkFUSU9OX1NURVBfUkVBRF9DTE9TVVJFEAESKwonS0VSTkVMX0xBV19IWURSQVRJT05fU1RFUF9DT01QT1NFX1NUQUdFEAISLAooS0VSTkVMX0xBV19IWURSQVRJT05fU1RFUF9ERVJJVkVfU0NIRU1BUxADEi8KK0tFUk5FTF9MQVdfSFlEUkFUSU9OX1NURVBfTE9BRF9QT0xJQ1lfU0hFTEwQBBIuCipLRVJORUxfTEFXX0hZRFJBVElPTl9TVEVQX1BBQ0tBR0VfQ09NUExFVEUQBWIGcHJvdG8z");
|
|
3565
3565
|
|
|
3566
3566
|
// src/_adapter/proto/nomos/runtime/v2/runtime_pb.js
|
|
3567
|
-
var file_nomos_runtime_v2_runtime = /* @__PURE__ */ fileDesc("Ch5ub21vcy9ydW50aW1lL3YyL3J1bnRpbWUucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIioAkKDlJ1bnRpbWVSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoBBIyCgV0cmFjZRgDIAEoCzIeLm5vbW9zLnJ1bnRpbWUudjIuVHJhY2VDb250ZXh0SAGIAQESOgoLa2VybmVsX2NhbGwYCiABKAsyIy5ub21vcy5ydW50aW1lLnYyLktlcm5lbENhbGxSZXF1ZXN0SAASMwoHY29ubmVjdBgLIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuQ29ubmVjdFJlcXVlc3RIABJCCg9saXN0X3dvcmtzcGFjZXMYDCABKAsyJy5ub21vcy5ydW50aW1lLnYyLkxpc3RXb3Jrc3BhY2VzUmVxdWVzdEgAEkgKEnNuYXBzaG90X3dvcmtzcGFjZRgNIAEoCzIqLm5vbW9zLnJ1bnRpbWUudjIuU25hcHNob3RXb3Jrc3BhY2VSZXF1ZXN0SAASQAoOc3luY193b3Jrc3BhY2UYDiABKAsyJi5ub21vcy5ydW50aW1lLnYyLlN5bmNXb3Jrc3BhY2VSZXF1ZXN0SAASQQoPc3RhcnRfYXV0b19zeW5jGA8gASgLMiYubm9tb3MucnVudGltZS52Mi5TdGFydEF1dG9TeW5jUmVxdWVzdEgAEj8KDnN0b3BfYXV0b19zeW5jGBAgASgLMiUubm9tb3MucnVudGltZS52Mi5TdG9wQXV0b1N5bmNSZXF1ZXN0SAASLwoFd2F0Y2gYESABKAsyHi5ub21vcy5ydW50aW1lLnYyLldhdGNoUmVxdWVzdEgAEjMKB3Vud2F0Y2gYEiABKAsyIC5ub21vcy5ydW50aW1lLnYyLlVud2F0Y2hSZXF1ZXN0SAASQAoOcHJlcGFyZV9kb21haW4YEyABKAsyJi5ub21vcy5ydW50aW1lLnYyLlByZXBhcmVEb21haW5SZXF1ZXN0SAASTQoVcmVzb2x2ZV9jdXN0b2R5X2JyZWFrGBQgASgLMiwubm9tb3MucnVudGltZS52Mi5SZXNvbHZlQ3VzdG9keUJyZWFrUmVxdWVzdEgAEjoKC2Nsb3NlX3JlYWxtGBUgASgLMiMubm9tb3MucnVudGltZS52Mi5DbG9zZVJlYWxtUmVxdWVzdEgAEjoKC2RlYWRfbGV0dGVyGBYgASgLMiMubm9tb3MucnVudGltZS52Mi5EZWFkTGV0dGVyUmVxdWVzdEgAEkAKDmhpc3RvcmljX3F1ZXJ5GBcgASgLMiYubm9tb3MucnVudGltZS52Mi5IaXN0b3JpY1F1ZXJ5UmVxdWVzdEgAEkIKD21vZGVsX2xpZmVjeWNsZRgYIAEoCzInLm5vbW9zLnJ1bnRpbWUudjIuTW9kZWxMaWZlY3ljbGVSZXF1ZXN0SAASXQodZXN0YWJsaXNoX2FwcGxpY2F0aW9uX2N1c3RvZHkYGSABKAsyNC5ub21vcy5ydW50aW1lLnYyLkVzdGFibGlzaEFwcGxpY2F0aW9uQ3VzdG9keVJlcXVlc3RIAEIJCgdjb21tYW5kQggKBl90cmFjZSJTChFLZXJuZWxDYWxsUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEi0KB3JlcXVlc3QYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuQ2FsbFJlcXVlc3Qi8QIKIkVzdGFibGlzaEFwcGxpY2F0aW9uQ3VzdG9keVJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRIOCgZwYXJlbnQYAiABKAkSEQoJcHJpbmNpcGFsGAMgASgJEg8KB3N1YmplY3QYBCABKAkSFQoNZGV2aWNlX3NlY3JldBgFIAEoDBIVCg1kZXZpY2VfcHVibGljGAYgASgMEhIKCmF1dGhfdG9rZW4YByABKAkSEAoIaWRfdG9rZW4YCCABKAkSFAoMdmVyaWZpZWRfdmlhGAkgASgJEg8KB2Jvcm5fYXQYCiABKAkSOwoTZW5yb2xsX2ZpcnN0X2RldmljZRgLIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5EaXJlY3RpdmVDYWxsEj0KFWJpcnRoX3JlY2VpdmluZ19ncm91cBgMIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5EaXJlY3RpdmVDYWxsEg8KB2NvbmZpcm0YDSABKAginwEKHUFwcGxpY2F0aW9uQ3VzdG9keUVzdGFibGlzaGVkEgwKBGhvbWUYASABKAkSFwoKY2hpbGRfaGVhZBgCIAEoCUgAiAEBEhAKCHZlcmlmaWVkGAMgASgIEh8KEnZlcmlmaWNhdGlvbl9lcnJvchgEIAEoCUgBiAEBQg0KC19jaGlsZF9oZWFkQhUKE192ZXJpZmljYXRpb25fZXJyb3IiZQoUSGlzdG9yaWNRdWVyeVJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRIOCgZtb21lbnQYAiABKAkSLAoFcXVlcnkYAyABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0IrUJCg9SdW50aW1lUmVzcG9uc2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoDRISCgpyZXF1ZXN0X2lkGAIgASgEEjMKB2ZhaWx1cmUYCiABKAsyIC5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVGYWlsdXJlSAASNAoLa2VybmVsX2NhbGwYCyABKAsyHS5ub21vcy5rZXJuZWwudjEuQ2FsbFJlc3BvbnNlSAASMAoJY29ubmVjdGVkGAwgASgLMhsubm9tb3MucnVudGltZS52Mi5Db25uZWN0ZWRIABI5Cg53b3Jrc3BhY2VfbGlzdBgNIAEoCzIfLm5vbW9zLnJ1bnRpbWUudjIuV29ya3NwYWNlTGlzdEgAEkEKEndvcmtzcGFjZV9zbmFwc2hvdBgOIAEoCzIjLm5vbW9zLnJ1bnRpbWUudjIuV29ya3NwYWNlU25hcHNob3RIABJBCg5zeW5jX3dvcmtzcGFjZRgPIAEoCzInLm5vbW9zLnJ1bnRpbWUudjIuU3luY1dvcmtzcGFjZVJlc3BvbnNlSAASPgoRYXV0b19zeW5jX3N0YXJ0ZWQYECABKAsyIS5ub21vcy5ydW50aW1lLnYyLkF1dG9TeW5jU3RhcnRlZEgAEj4KEWF1dG9fc3luY19zdG9wcGVkGBEgASgLMiEubm9tb3MucnVudGltZS52Mi5BdXRvU3luY1N0b3BwZWRIABI3Cg13YXRjaF9zdGFydGVkGBIgASgLMh4ubm9tb3MucnVudGltZS52Mi5XYXRjaFN0YXJ0ZWRIABI3Cg13YXRjaF9zdG9wcGVkGBMgASgLMh4ubm9tb3MucnVudGltZS52Mi5XYXRjaFN0b3BwZWRIABI7Cg9kb21haW5fcHJlcGFyZWQYFCABKAsyIC5ub21vcy5ydW50aW1lLnYyLkRvbWFpblByZXBhcmVkSAASSAoWY3VzdG9keV9icmVha19yZXNvbHZlZBgVIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUJyZWFrUmVzb2x2ZWRIABI1CgxyZWFsbV9jbG9zZWQYFiABKAsyHS5ub21vcy5ydW50aW1lLnYyLlJlYWxtQ2xvc2VkSAASMwoHYmxvY2tlZBgXIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZUJsb2NrZWRIABJIChZyZW1vdGVfb2ZmZXJfYWRtaXNzaW9uGBggASgLMiYubm9tb3MucnVudGltZS52Mi5SZW1vdGVPZmZlckFkbWlzc2lvbkgAEjsKC2RlYWRfbGV0dGVyGBkgASgLMiQubm9tb3MucnVudGltZS52Mi5EZWFkTGV0dGVyUmVzcG9uc2VIABJDCg9tb2RlbF9saWZlY3ljbGUYGiABKAsyKC5ub21vcy5ydW50aW1lLnYyLk1vZGVsTGlmZWN5Y2xlUmVzcG9uc2VIABJaCh9hcHBsaWNhdGlvbl9jdXN0b2R5X2VzdGFibGlzaGVkGBsgASgLMi8ubm9tb3MucnVudGltZS52Mi5BcHBsaWNhdGlvbkN1c3RvZHlFc3RhYmxpc2hlZEgAQgkKB291dGNvbWUinwEKDlJ1bnRpbWVCbG9ja2VkEkEKCXdvcmtzcGFjZRgBIAEoCzIsLm5vbW9zLnJ1bnRpbWUudjIuV29ya3NwYWNlUmVzaWRlbmN5UmVxdWlyZWRIABJACghzaWJsaW5ncxgCIAEoCzIsLm5vbW9zLnJ1bnRpbWUudjIuU2libGluZ1Jlc2lkZW5jaWVzUmVxdWlyZWRIAEIICgZyZWFzb24iLwoaV29ya3NwYWNlUmVzaWRlbmN5UmVxdWlyZWQSEQoJd29ya3NwYWNlGAEgASgJIlUKGFNpYmxpbmdSZXNpZGVuY3lSZXF1aXJlZBIRCgl3b3Jrc3BhY2UYASABKAkSEwoLc291cmNlX2hlYWQYAiABKAkSEQoJZm9sZF9yb290GAMgASgJIl0KGlNpYmxpbmdSZXNpZGVuY2llc1JlcXVpcmVkEj8KC3Jlc2lkZW5jaWVzGAEgAygLMioubm9tb3MucnVudGltZS52Mi5TaWJsaW5nUmVzaWRlbmN5UmVxdWlyZWQihgIKFFJlbW90ZU9mZmVyQWRtaXNzaW9uEhEKCXdvcmtzcGFjZRgBIAEoCRIMCgRtYWluGAIgASgJEhgKC3NlYWxlZF9tYWluGAMgASgJSACIAQESLwoHdmVyZGljdBgEIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlc3BvbnNlEjMKDGJvcm5fY3VzdG9keRgFIAMoCzIdLm5vbW9zLnJ1bnRpbWUudjIuQm9ybkN1c3RvZHkSEwoLcmVzdWx0X3BhY2sYBiABKAwSGAoLcmVzdWx0X2Jhc2UYByABKAlIAYgBAUIOCgxfc2VhbGVkX21haW5CDgoMX3Jlc3VsdF9iYXNlIkoKC0Jvcm5DdXN0b2R5Ei0KBWNoaWxkGAEgASgLMh4ubm9tb3Mua2VybmVsLnYxLkJvcm5Xb3Jrc3BhY2USDAoEcGFjaxgCIAEoDCL5AQoYQ3VzdG9keU9mZmVyQmF0Y2hSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRI3CgZpbmxpbmUYAyABKAsyJS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbmxpbmVPZmZlcnNIABJGChFzZXNzaW9uX2NhbmRpZGF0ZRgEIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keVNlc3Npb25DYW5kaWRhdGVIABIWCgliYXNlX2hlYWQYBSABKAlIAYgBAUIICgZzb3VyY2VCDAoKX2Jhc2VfaGVhZCJOChJDdXN0b2R5SW50ZW50T2ZmZXISDwoHc2Vzc2lvbhgBIAEoCRISCgpjb21taXRfb2lkGAIgASgJEhMKC2NoYW5nZV91c2RhGAMgASgMIksKE0N1c3RvZHlJbmxpbmVPZmZlcnMSNAoGb2ZmZXJzGAEgAygLMiQubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50T2ZmZXIiLAoXQ3VzdG9keVNlc3Npb25DYW5kaWRhdGUSEQoJcmVmZXJlbmNlGAEgASgJIvcBChlDdXN0b2R5T2ZmZXJCYXRjaFJlc3BvbnNlEhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRI3CglhZG1pc3Npb24YCiABKAsyIi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlBZG1pc3Npb25IABIzCgdmYWlsdXJlGAsgASgLMiAubm9tb3MucnVudGltZS52Mi5SdW50aW1lRmFpbHVyZUgAEjMKB2Jsb2NrZWQYDCABKAsyIC5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVCbG9ja2VkSABCCQoHb3V0Y29tZSLuAgoQQ3VzdG9keUFkbWlzc2lvbhIMCgRtYWluGAEgASgJEhgKC3NlYWxlZF9tYWluGAIgASgJSACIAQESOwoIc2Vzc2lvbnMYAyADKAsyKS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlTZXNzaW9uQWRtaXNzaW9uEjUKDmJpcnRoX291dGNvbWVzGAQgAygLMh0ubm9tb3Mua2VybmVsLnYxLkJpcnRoT3V0Y29tZRIzCgxib3JuX2N1c3RvZHkYBSADKAsyHS5ub21vcy5ydW50aW1lLnYyLkJvcm5DdXN0b2R5EhMKC3Jlc3VsdF9wYWNrGAYgASgMEhgKC3Jlc3VsdF9iYXNlGAcgASgJSAGIAQESOgoHdGltaW5ncxgIIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUFkbWlzc2lvblRpbWluZ3NCDgoMX3NlYWxlZF9tYWluQg4KDF9yZXN1bHRfYmFzZSJlChdDdXN0b2R5U2Vzc2lvbkFkbWlzc2lvbhIPCgdzZXNzaW9uGAEgASgJEjkKB2ludGVudHMYAiADKAsyKC5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRBZG1pc3Npb24ikAIKFkN1c3RvZHlJbnRlbnRBZG1pc3Npb24SEgoKY29tbWl0X29pZBgBIAEoCRIWCglpbnRlbnRfaWQYAiABKAlIAYgBARI7CghhZG1pdHRlZBgKIAEoCzInLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudEFkbWl0dGVkSAASOQoHc2tpcHBlZBgLIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudFNraXBwZWRIABI5CgdyZWZ1c2VkGAwgASgLMiYubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50UmVmdXNlZEgAQgkKB291dGNvbWVCDAoKX2ludGVudF9pZCKQAQoVQ3VzdG9keUludGVudEFkbWl0dGVkEgwKBGhlYWQYASABKAkSMwoHY3JlYXRlZBgCIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZhI0CghhZmZlY3RlZBgDIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckFnZ3JlZ2F0ZVJlZiIvChRDdXN0b2R5SW50ZW50U2tpcHBlZBIXCg9hbHJlYWR5X29uX21haW4YASABKAgiWgoUQ3VzdG9keUludGVudFJlZnVzZWQSDwoHbWVzc2FnZRgBIAEoCRIVCg1kZWFkX2xldHRlcmVkGAIgASgIEhEKBGhpbnQYAyABKAlIAIgBAUIHCgVfaGludCLtAQoXQ3VzdG9keUFkbWlzc2lvblRpbWluZ3MSFAoMdG90YWxfbWlsbGlzGAEgASgBEhMKC3NjYW5fbWlsbGlzGAIgASgBEhQKDGZldGNoX21pbGxpcxgDIAEoARITCgtzZWFsX21pbGxpcxgEIAEoARIYChBnYXRlX2ZvbGRfbWlsbGlzGAUgASgBEhQKDGludGVudF9jb3VudBgGIAEoDRIVCg1zZXNzaW9uX2NvdW50GAcgASgNEjUKBXNwYW5zGAggAygLMiYubm9tb3MucnVudGltZS52Mi5DdXN0b2R5QWRtaXNzaW9uU3BhbiKXAQoUQ3VzdG9keUFkbWlzc2lvblNwYW4SCgoCaWQYASABKAkSDQoFdHJhY2sYAiABKAkSDAoEbmFtZRgDIAEoCRIMCgRraW5kGAQgASgJEg0KBWRlcHRoGAUgASgNEhsKE3N0YXJ0ZWRfdW5peF9taWxsaXMYBiABKAESHAoUZmluaXNoZWRfdW5peF9taWxsaXMYByABKAEiQgoMVHJhY2VDb250ZXh0EhAKCHRyYWNlX2lkGAEgASgMEg8KB3NwYW5faWQYAiABKAwSDwoHc2FtcGxlZBgDIAEoCCLpAQoOUnVudGltZUZhaWx1cmUSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhEKCWNvbXBvbmVudBgDIAEoCRIWCgl3b3Jrc3BhY2UYBCABKAlIAIgBARITCgZkb21haW4YBSABKAlIAYgBARIWCglkaXJlY3RpdmUYBiABKAlIAogBARI5CgphdHRyaWJ1dGVzGAcgAygLMiUubm9tb3MucnVudGltZS52Mi5EaWFnbm9zdGljQXR0cmlidXRlQgwKCl93b3Jrc3BhY2VCCQoHX2RvbWFpbkIMCgpfZGlyZWN0aXZlIqUBChNEaWFnbm9zdGljQXR0cmlidXRlEgwKBG5hbWUYASABKAkSFgoMc3RyaW5nX3ZhbHVlGAIgASgJSAASFwoNaW50ZWdlcl92YWx1ZRgDIAEoEkgAEhYKDGRvdWJsZV92YWx1ZRgEIAEoAUgAEhcKDWJvb2xlYW5fdmFsdWUYBSABKAhIABIVCgtieXRlc192YWx1ZRgGIAEoDEgAQgcKBXZhbHVlIs0CCg5Db25uZWN0UmVxdWVzdBIRCgl3b3Jrc3BhY2UYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEhQKB3Nlc3Npb24YAyABKAlIAIgBARISCgVjbG91ZBgEIAEoCUgBiAEBEhIKCmF1dGhfdG9rZW4YBSABKAwSFQoNYXV0aG9yX3NlY3JldBgGIAEoDBIiChptYXhpbXVtX21vdW50ZWRfd29ya3NwYWNlcxgHIAEoDRIUCgxhbGxvd191bmJvcm4YCCABKAgSDwoHcmVjb3ZlchgJIAEoCBJCChRjdXN0b2R5X2JyZWFrX3BvbGljeRgKIAEoDjIkLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUJyZWFrUG9saWN5EhsKE2hhc19yZXN0b3JlX2N1c3RvZHkYCyABKAhCCgoIX3Nlc3Npb25CCAoGX2Nsb3VkIosBCglDb25uZWN0ZWQSEQoJd29ya3NwYWNlGAEgASgJEg8KB3Nlc3Npb24YAiABKAkSEwoLY2xvdWRfYm91bmQYAyABKAgSOAoIcmVjb3ZlcnkYBCABKAsyIS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlSZWNvdmVyeUgAiAEBQgsKCV9yZWNvdmVyeSJbCg9DdXN0b2R5UmVjb3ZlcnkSFQoNcHJldmlvdXNfaGVhZBgBIAEoCRIWCg5yZWNvdmVyZWRfaGVhZBgCIAEoCRIZChFyZWNvdmVyZWRfaW50ZW50cxgDIAEoBCIXChVMaXN0V29ya3NwYWNlc1JlcXVlc3QirQEKEFdvcmtzcGFjZVN1bW1hcnkSDwoHc2Vzc2lvbhgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSNwoJcmVzaWRlbmN5GAMgASgOMiQubm9tb3MucnVudGltZS52Mi5Xb3Jrc3BhY2VSZXNpZGVuY3kSPAoMc3luY19wb3N0dXJlGAQgASgOMiYubm9tb3MucnVudGltZS52Mi5Xb3Jrc3BhY2VTeW5jUG9zdHVyZSJHCg1Xb3Jrc3BhY2VMaXN0EjYKCndvcmtzcGFjZXMYASADKAsyIi5ub21vcy5ydW50aW1lLnYyLldvcmtzcGFjZVN1bW1hcnkiTQoYU25hcHNob3RXb3Jrc3BhY2VSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSFAoHaWZfaGVhZBgCIAEoCUgAiAEBQgoKCF9pZl9oZWFkIlwKEVdvcmtzcGFjZVNuYXBzaG90EhEKCXdvcmtzcGFjZRgBIAEoCRIMCgRoZWFkGAIgASgJEhEKCXVuY2hhbmdlZBgDIAEoCBITCgtoYXNfY3VzdG9keRgEIAEoCCI2ChRTeW5jV29ya3NwYWNlUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEg0KBWFkbWl0GAIgASgIIrwFChVTeW5jV29ya3NwYWNlUmVzcG9uc2USEQoJd29ya3NwYWNlGAEgASgJEhoKDXByZXZpb3VzX2hlYWQYAiABKAlIAIgBARIZCgxjdXJyZW50X2hlYWQYAyABKAlIAYgBARIQCghhZG1pdHRlZBgEIAEoBBIPCgdyZWZ1c2VkGAUgASgEEhAKCGRlZmVycmVkGAYgASgEEhIKCmxvY2FsX29ubHkYByABKAgSDgoGcHVsbGVkGAggASgIEhAKCGRpdmVyZ2VkGAkgASgIEhoKEnJlY29ubmVjdF9yZXF1aXJlZBgKIAEoCBITCgtzdGlsbF9haGVhZBgLIAEoCBIPCgdvZmZsaW5lGAwgASgIEhMKC3B1c2hfZmFpbGVkGA0gASgIEh0KFWRpcmVjdF9vZmZlcl9kZWZlcnJlZBgOIAEoCBI1Cg5iaXJ0aF9vdXRjb21lcxgPIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSGwoTYWRtaXR0ZWRfaW50ZW50X2lkcxgQIAMoCRIcChRjb252ZXJnZWRfaW50ZW50X2lkcxgRIAMoCRJCCgpwdXNoX2Vycm9yGBIgASgLMikubm9tb3MucnVudGltZS52Mi5SdW50aW1lVHJhbnNwb3J0RmFpbHVyZUgCiAEBEkcKD2Rpc2NvdmVyeV9lcnJvchgTIAEoCzIpLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZVRyYW5zcG9ydEZhaWx1cmVIA4gBARIzCgd0aW1pbmdzGBQgASgLMiIubm9tb3MucnVudGltZS52Mi5TeW5jUGhhc2VUaW1pbmdzQhAKDl9wcmV2aW91c19oZWFkQg8KDV9jdXJyZW50X2hlYWRCDQoLX3B1c2hfZXJyb3JCEgoQX2Rpc2NvdmVyeV9lcnJvciJdChdSdW50aW1lVHJhbnNwb3J0RmFpbHVyZRIQCghlbmRwb2ludBgBIAEoCRIOCgZzdGF0dXMYAiABKBESDwoHcmVmdXNlZBgDIAEoCBIPCgdtZXNzYWdlGAQgASgJIrEBChBTeW5jUGhhc2VUaW1pbmdzEhMKC3B1c2hfbWlsbGlzGAEgASgBEhQKDGFkbWl0X21pbGxpcxgCIAEoARIXCg9wcmVmZXRjaF9taWxsaXMYAyABKAESFwoPY29udmVyZ2VfbWlsbGlzGAQgASgBEhIKCnB1c2hfYnl0ZXMYBSABKAQSFQoNc2VydmVyX21pbGxpcxgGIAEoARIVCg1vZmZlcl9pbl9wdXNoGAcgASgIIt8BChRTdGFydEF1dG9TeW5jUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEhwKD2RlYm91bmNlX21pbGxpcxgCIAEoDUgAiAEBEhwKD2ZhbGxiYWNrX21pbGxpcxgDIAEoDUgBiAEBEhoKDXNpZ25hbF9taWxsaXMYBCABKA1IAogBARIWCglzaWduYWxfaWQYBSABKAlIA4gBAUISChBfZGVib3VuY2VfbWlsbGlzQhIKEF9mYWxsYmFja19taWxsaXNCEAoOX3NpZ25hbF9taWxsaXNCDAoKX3NpZ25hbF9pZCIiCg9BdXRvU3luY1N0YXJ0ZWQSDwoHc2Vzc2lvbhgBIAEoCSImChNTdG9wQXV0b1N5bmNSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkiIgoPQXV0b1N5bmNTdG9wcGVkEg8KB3Nlc3Npb24YASABKAkiqgEKDFdhdGNoUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEhcKD3N1YnNjcmlwdGlvbl9pZBgCIAEoCRIpCgRraW5kGAMgASgOMhsubm9tb3MucnVudGltZS52Mi5XYXRjaEtpbmQSLAoFcXVlcnkYBCABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0EhcKD2ludGVydmFsX21pbGxpcxgFIAEoDSInCgxXYXRjaFN0YXJ0ZWQSFwoPc3Vic2NyaXB0aW9uX2lkGAEgASgJIikKDlVud2F0Y2hSZXF1ZXN0EhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCSInCgxXYXRjaFN0b3BwZWQSFwoPc3Vic2NyaXB0aW9uX2lkGAEgASgJInUKFFByZXBhcmVEb21haW5SZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSDgoGZG9tYWluGAIgASgJEhYKDnBhY2thZ2Vfc2hhMjU2GAMgASgJEhYKCWRpcmVjdGl2ZRgEIAEoCUgAiAEBQgwKCl9kaXJlY3RpdmUiUgoORG9tYWluUHJlcGFyZWQSDgoGZG9tYWluGAEgASgJEhYKDnBhY2thZ2Vfc2hhMjU2GAIgASgJEhgKEGFscmVhZHlfcmVzaWRlbnQYAyABKAgi9gEKFU1vZGVsTGlmZWN5Y2xlUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEj0KBXN0YWdlGAogASgLMiwubm9tb3MucnVudGltZS52Mi5TdGFnZUdlbmVyYXRlZE1vZGVsUmVxdWVzdEgAEj0KBWFkb3B0GAsgASgLMiwubm9tb3MucnVudGltZS52Mi5BZG9wdEdlbmVyYXRlZE1vZGVsUmVxdWVzdEgAEkEKB3Jlc3RvcmUYDCABKAsyLi5ub21vcy5ydW50aW1lLnYyLlJlc3RvcmVHZW5lcmF0ZWRNb2RlbFJlcXVlc3RIAEILCglvcGVyYXRpb24ihgEKGlN0YWdlR2VuZXJhdGVkTW9kZWxSZXF1ZXN0Eg4KBmRvbWFpbhgBIAEoCRIWCg5jYW5kaWRhdGVfaGFzaBgCIAEoCRIQCghsYXdfdXNkehgDIAEoDBIbCg5zb3VyY2Vfc2Vzc2lvbhgEIAEoCUgAiAEBQhEKD19zb3VyY2Vfc2Vzc2lvbiJ6ChpBZG9wdEdlbmVyYXRlZE1vZGVsUmVxdWVzdBIOCgZkb21haW4YASABKAkSFgoOY2FuZGlkYXRlX2hhc2gYAiABKAkSHgoRYWNjZXB0YW5jZV9yZWFzb24YAyABKAlIAIgBAUIUChJfYWNjZXB0YW5jZV9yZWFzb24iegocUmVzdG9yZUdlbmVyYXRlZE1vZGVsUmVxdWVzdBIOCgZkb21haW4YASABKAkSFAoMY3VycmVudF9oYXNoGAIgASgJEh4KEWFjY2VwdGFuY2VfcmVhc29uGAMgASgJSACIAQFCFAoSX2FjY2VwdGFuY2VfcmVhc29uIpMBCg9Nb2RlbERpZmZlcmVuY2USMwoEa2luZBgBIAEoDjIlLm5vbW9zLnJ1bnRpbWUudjIuTW9kZWxEaWZmZXJlbmNlS2luZBIRCgRhcmVhGAIgASgJSACIAQESEwoGYWN0aW9uGAMgASgJSAGIAQESDwoHc3VtbWFyeRgEIAEoCUIHCgVfYXJlYUIJCgdfYWN0aW9uIqUBCgtNb2RlbFJldmlldxIXCg9jaGVja2VkX2FjdGlvbnMYASABKAQSGQoRY2FuZGlkYXRlX2FjdGlvbnMYAiABKAQSGQoMc2FtZV9vdXRjb21lGAMgASgISACIAQESNgoLZGlmZmVyZW5jZXMYBCADKAsyIS5ub21vcy5ydW50aW1lLnYyLk1vZGVsRGlmZmVyZW5jZUIPCg1fc2FtZV9vdXRjb21lIoUCChZNb2RlbExpZmVjeWNsZVJlc3BvbnNlEhAKCGFjY2VwdGVkGAEgASgIEjQKBXN0YWdlGAIgASgOMiUubm9tb3MucnVudGltZS52Mi5Nb2RlbExpZmVjeWNsZVN0YWdlEhQKB21lc3NhZ2UYAyABKAlIAIgBARIRCgRoZWFkGAQgASgJSAGIAQESFwoKcmVjZWlwdF9pZBgFIAEoCUgCiAEBEjIKBnJldmlldxgGIAEoCzIdLm5vbW9zLnJ1bnRpbWUudjIuTW9kZWxSZXZpZXdIA4gBAUIKCghfbWVzc2FnZUIHCgVfaGVhZEINCgtfcmVjZWlwdF9pZEIJCgdfcmV2aWV3ImcKGlJlc29sdmVDdXN0b2R5QnJlYWtSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSOAoIZGVjaXNpb24YAiABKA4yJi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlCcmVha0RlY2lzaW9uImEKFEN1c3RvZHlCcmVha1Jlc29sdmVkEg8KB3Nlc3Npb24YASABKAkSOAoIZGVjaXNpb24YAiABKA4yJi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlCcmVha0RlY2lzaW9uIhMKEUNsb3NlUmVhbG1SZXF1ZXN0Ig0KC1JlYWxtQ2xvc2VkIuUBChFEZWFkTGV0dGVyUmVxdWVzdBIPCgdzZXNzaW9uGAEgASgJEjgKBGxpc3QYCiABKAsyKC5ub21vcy5ydW50aW1lLnYyLkxpc3REZWFkTGV0dGVyc1JlcXVlc3RIABI5CgVyZXRyeRgLIAEoCzIoLm5vbW9zLnJ1bnRpbWUudjIuUmV0cnlEZWFkTGV0dGVyUmVxdWVzdEgAEj0KB2Rpc2NhcmQYDCABKAsyKi5ub21vcy5ydW50aW1lLnYyLkRpc2NhcmREZWFkTGV0dGVyUmVxdWVzdEgAQgsKCW9wZXJhdGlvbiIYChZMaXN0RGVhZExldHRlcnNSZXF1ZXN0IisKFlJldHJ5RGVhZExldHRlclJlcXVlc3QSEQoJaW50ZW50X2lkGAEgASgJIi0KGERpc2NhcmREZWFkTGV0dGVyUmVxdWVzdBIRCglpbnRlbnRfaWQYASABKAkivQEKEkRlYWRMZXR0ZXJSZXNwb25zZRIwCgRsaXN0GAogASgLMiAubm9tb3MucnVudGltZS52Mi5EZWFkTGV0dGVyTGlzdEgAEjIKBXJldHJ5GAsgASgLMiEubm9tb3MucnVudGltZS52Mi5EZWFkTGV0dGVyUmV0cnlIABI2CgdkaXNjYXJkGAwgASgLMiMubm9tb3MucnVudGltZS52Mi5EZWFkTGV0dGVyRGlzY2FyZEgAQgkKB291dGNvbWUiRAoORGVhZExldHRlckxpc3QSMgoHZW50cmllcxgBIAMoCzIhLm5vbW9zLnJ1bnRpbWUudjIuRGVhZExldHRlckVudHJ5IrkBCg9EZWFkTGV0dGVyRW50cnkSDwoCaWQYASABKAlIAIgBARISCgpjb21taXRfb2lkGAIgASgJEg4KBnNvdXJjZRgDIAEoCRIPCgdtZXNzYWdlGAQgASgJEhMKBmRvbWFpbhgFIAEoCUgBiAEBEhYKCWRpcmVjdGl2ZRgGIAEoCUgCiAEBEhMKC3JlY29yZGVkX2F0GAcgASgJQgUKA19pZEIJCgdfZG9tYWluQgwKCl9kaXJlY3RpdmUieQoPRGVhZExldHRlclJldHJ5Eg8KB3JldHJpZWQYASABKAgSEQoEaGVhZBgCIAEoCUgAiAEBEhcKD2FscmVhZHlfb25fbWFpbhgDIAEoCBIUCgdtZXNzYWdlGAQgASgJSAGIAQFCBwoFX2hlYWRCCgoIX21lc3NhZ2UiJAoRRGVhZExldHRlckRpc2NhcmQSDwoHcmVtb3ZlZBgBIAEoBCLNBQoMUnVudGltZUV2ZW50EhAKCHNlcXVlbmNlGAEgASgEEhQKB3Nlc3Npb24YAiABKAlIAYgBARIvCgVyZWFkeRgKIAEoCzIeLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZVJlYWR5SAASNwoNd2F0Y2hfY2hhbmdlZBgLIAEoCzIeLm5vbW9zLnJ1bnRpbWUudjIuV2F0Y2hDaGFuZ2VkSAASOQoOc3luY19jb21wbGV0ZWQYDCABKAsyHy5ub21vcy5ydW50aW1lLnYyLlN5bmNDb21wbGV0ZWRIABI1CgxsaW5rX2NoYW5nZWQYDSABKAsyHS5ub21vcy5ydW50aW1lLnYyLkxpbmtDaGFuZ2VkSAASOQoOc2lnbmFsX2NoYW5nZWQYDiABKAsyHy5ub21vcy5ydW50aW1lLnYyLlNpZ25hbENoYW5nZWRIABI7Cg9jdXN0b2R5X2NoYW5nZWQYDyABKAsyIC5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlDaGFuZ2VkSAASQgoTbG9jYWxfd29ya19yZWplY3RlZBgQIAEoCzIjLm5vbW9zLnJ1bnRpbWUudjIuTG9jYWxXb3JrUmVqZWN0ZWRIABIzCgtsYXdfY2hhbmdlZBgRIAEoCzIcLm5vbW9zLnJ1bnRpbWUudjIuTGF3Q2hhbmdlZEgAEkMKD2tlcm5lbF9wcm9ncmVzcxgSIAEoCzIoLm5vbW9zLnJ1bnRpbWUudjIuS2VybmVsUHJvZ3Jlc3NPYnNlcnZlZEgAEi0KBHNwYW4YEyABKAsyHS5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVTcGFuSAASPwoRdHJhbnNmZXJfcHJvZ3Jlc3MYFCABKAsyIi5ub21vcy5ydW50aW1lLnYyLlRyYW5zZmVyUHJvZ3Jlc3NIAEIHCgVldmVudEIKCghfc2Vzc2lvbiI+CgxSdW50aW1lUmVhZHkSFwoPcnVudGltZV92ZXJzaW9uGAEgASgJEhUKDWtlcm5lbF9zaGEyNTYYAiABKAwigAEKDFdhdGNoQ2hhbmdlZBIXCg9zdWJzY3JpcHRpb25faWQYASABKAkSEwoLcmVzdWx0X3VzZGEYAiABKAwSNgoHZmFpbHVyZRgDIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZUZhaWx1cmVIAIgBAUIKCghfZmFpbHVyZSKcAQoNU3luY0NvbXBsZXRlZBIOCgZyZWFzb24YASABKAkSNwoGcmVzdWx0GAIgASgLMicubm9tb3MucnVudGltZS52Mi5TeW5jV29ya3NwYWNlUmVzcG9uc2USNgoHZmFpbHVyZRgDIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZUZhaWx1cmVIAIgBAUIKCghfZmFpbHVyZSI7CgtMaW5rQ2hhbmdlZBIsCgZzdGF0dXMYASABKA4yHC5ub21vcy5ydW50aW1lLnYyLkxpbmtTdGF0dXMiOAoNU2lnbmFsQ2hhbmdlZBIOCgZkb21haW4YASABKAkSFwoPcHJvamVjdGlvbl91c2RhGAIgASgMIvQBCg5DdXN0b2R5Q2hhbmdlZBIxCgRraW5kGAEgASgOMiMubm9tb3MucnVudGltZS52Mi5DdXN0b2R5Q2hhbmdlS2luZBI1Cg1jdXN0b2R5X2JyZWFrGAIgASgLMh4ubm9tb3MucnVudGltZS52Mi5DdXN0b2R5QnJlYWsSFgoJb3BlcmF0aW9uGAMgASgJSACIAQESFQoIcmVjbG9uZWQYBCABKAhIAYgBARIbCg5wYXJrZWRfaW50ZW50cxgFIAEoBEgCiAEBQgwKCl9vcGVyYXRpb25CCwoJX3JlY2xvbmVkQhEKD19wYXJrZWRfaW50ZW50cyLhAQoRTG9jYWxXb3JrUmVqZWN0ZWQSEQoJd29ya3NwYWNlGAEgASgJEjYKB3JlZnVzZWQYAiADKAsyJS5ub21vcy5ydW50aW1lLnYyLlJlamVjdGVkTG9jYWxJbnRlbnQSDgoGcGFya2VkGAMgASgIEhUKCHJlc2V0X3RvGAQgASgJSACIAQESEQoJcmV0cnlhYmxlGAUgASgIEjoKBnNvdXJjZRgGIAEoDjIqLm5vbW9zLnJ1bnRpbWUudjIuTG9jYWxXb3JrUmVqZWN0aW9uU291cmNlQgsKCV9yZXNldF90byJjChNDdXN0b2R5U3VwZXJzZXNzaW9uEhoKDXN1cGVyc2VkZWRfYXQYASABKAlIAIgBARITCgZyZWFzb24YAiABKAlIAYgBAUIQCg5fc3VwZXJzZWRlZF9hdEIJCgdfcmVhc29uIrgCCgxDdXN0b2R5QnJlYWsSMAoEa2luZBgBIAEoDjIiLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUJyZWFrS2luZBIVCg1sb2NhbF9nZW5lc2lzGAIgASgJEhYKDnJlbW90ZV9nZW5lc2lzGAMgASgJEhoKEnJlbW90ZV9pbmNhcm5hdGlvbhgEIAEoCRJACgxzdXBlcnNlc3Npb24YBSABKAsyJS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlTdXBlcnNlc3Npb25IAIgBARIaChJsb2NhbF9vbmx5X2ludGVudHMYBiABKAQSIgoVbGFzdF9zeW5jZWRfYXRfbWlsbGlzGAcgASgESAGIAQFCDwoNX3N1cGVyc2Vzc2lvbkIYChZfbGFzdF9zeW5jZWRfYXRfbWlsbGlzIs0BChNSZWplY3RlZExvY2FsSW50ZW50EhYKCWludGVudF9pZBgBIAEoCUgAiAEBEhcKCmNvbW1pdF9vaWQYAiABKAlIAYgBARITCgZkb21haW4YAyABKAlIAogBARIWCglkaXJlY3RpdmUYBCABKAlIA4gBARIPCgdtZXNzYWdlGAUgASgJEhEKCXJldHJ5YWJsZRgGIAEoCEIMCgpfaW50ZW50X2lkQg0KC19jb21taXRfb2lkQgkKB19kb21haW5CDAoKX2RpcmVjdGl2ZSJQCgpMYXdDaGFuZ2VkEg4KBmRvbWFpbhgBIAEoCRIWCg5wYWNrYWdlX3NoYTI1NhgCIAEoCRIaChJjb21wYXRpYmlsaXR5X3VzZGEYAyABKAwi3QEKC1J1bnRpbWVTcGFuEhAKCHRyYWNlX2lkGAEgASgMEg8KB3NwYW5faWQYAiABKAwSGwoOcGFyZW50X3NwYW5faWQYAyABKAxIAIgBARIMCgRuYW1lGAQgASgJEhoKEnN0YXJ0ZWRfdW5peF9uYW5vcxgFIAEoBBIWCg5kdXJhdGlvbl9uYW5vcxgGIAEoBBI5CgphdHRyaWJ1dGVzGAcgAygLMiUubm9tb3MucnVudGltZS52Mi5EaWFnbm9zdGljQXR0cmlidXRlQhEKD19wYXJlbnRfc3Bhbl9pZCLqAQoWS2VybmVsUHJvZ3Jlc3NPYnNlcnZlZBI5CghzbmFwc2hvdBgBIAEoCzInLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxQcm9ncmVzc1NuYXBzaG90EiQKHGhvc3Rfb2JzZXJ2ZWRfZWxhcHNlZF9taWNyb3MYAiABKAQSKgoiaG9zdF9vYnNlcnZlZF9waGFzZV9lbGFwc2VkX21pY3JvcxgDIAEoBBIeChZwcm9jZXNzX3Jlc2lkZW50X2J5dGVzGAQgASgEEiMKG3Byb2Nlc3NfcGVha19yZXNpZGVudF9ieXRlcxgFIAEoBCKCAQoQVHJhbnNmZXJQcm9ncmVzcxIWCg5yZWNlaXZlZF9ieXRlcxgBIAEoBBIYCgt0b3RhbF9ieXRlcxgCIAEoBEgAiAEBEiwKBGtpbmQYAyABKA4yHi5ub21vcy5ydW50aW1lLnYyLlRyYW5zZmVyS2luZEIOCgxfdG90YWxfYnl0ZXMqmQEKEkN1c3RvZHlCcmVha1BvbGljeRIkCiBDVVNUT0RZX0JSRUFLX1BPTElDWV9VTlNQRUNJRklFRBAAEhwKGENVU1RPRFlfQlJFQUtfUE9MSUNZX0FTSxABEh4KGkNVU1RPRFlfQlJFQUtfUE9MSUNZX0FET1BUEAISHwobQ1VTVE9EWV9CUkVBS19QT0xJQ1lfUkVKRUNUEAMqoAEKEldvcmtzcGFjZVJlc2lkZW5jeRIjCh9XT1JLU1BBQ0VfUkVTSURFTkNZX1VOU1BFQ0lGSUVEEAASHwobV09SS1NQQUNFX1JFU0lERU5DWV9NT1VOVEVEEAESHgoaV09SS1NQQUNFX1JFU0lERU5DWV9QQVJLRUQQAhIkCiBXT1JLU1BBQ0VfUkVTSURFTkNZX0NVU1RPRFlfT05MWRADKo0BChRXb3Jrc3BhY2VTeW5jUG9zdHVyZRImCiJXT1JLU1BBQ0VfU1lOQ19QT1NUVVJFX1VOU1BFQ0lGSUVEEAASJQohV09SS1NQQUNFX1NZTkNfUE9TVFVSRV9MT0NBTF9PTkxZEAESJgoiV09SS1NQQUNFX1NZTkNfUE9TVFVSRV9DTE9VRF9CT1VORBACKqgBCglXYXRjaEtpbmQSGgoWV0FUQ0hfS0lORF9VTlNQRUNJRklFRBAAEhQKEFdBVENIX0tJTkRfUVVFUlkQARIUChBXQVRDSF9LSU5EX0JZX0lEEAISFgoSV0FUQ0hfS0lORF9TUEFUSUFMEAMSFwoTV0FUQ0hfS0lORF9BQ1RJVklUWRAEIgQIBRAFKhxXQVRDSF9LSU5EX1BFTkRJTkdfQ09ORkxJQ1RTKqQDChNNb2RlbExpZmVjeWNsZVN0YWdlEiUKIU1PREVMX0xJRkVDWUNMRV9TVEFHRV9VTlNQRUNJRklFRBAAEisKJ01PREVMX0xJRkVDWUNMRV9TVEFHRV9JREVOVElUWV9SRVFVSVJFRBABEioKJk1PREVMX0xJRkVDWUNMRV9TVEFHRV9TVEFHSU5HX1JFUVVJUkVEEAISIwofTU9ERUxfTElGRUNZQ0xFX1NUQUdFX1BSRUZMSUdIVBADEi0KKU1PREVMX0xJRkVDWUNMRV9TVEFHRV9BQ0NFUFRBTkNFX1JFUVVJUkVEEAQSIwofTU9ERUxfTElGRUNZQ0xFX1NUQUdFX0FETUlTU0lPThAFEiEKHU1PREVMX0xJRkVDWUNMRV9TVEFHRV9QRU5ESU5HEAYSIgoeTU9ERUxfTElGRUNZQ0xFX1NUQUdFX1BST01PVEVEEAcSIgoeTU9ERUxfTElGRUNZQ0xFX1NUQUdFX1JFU1RPUkVEEAgSKQolTU9ERUxfTElGRUNZQ0xFX1NUQUdFX0FMUkVBRFlfQ1VSUkVOVBAJKqQBChNNb2RlbERpZmZlcmVuY2VLaW5kEiUKIU1PREVMX0RJRkZFUkVOQ0VfS0lORF9VTlNQRUNJRklFRBAAEh8KG01PREVMX0RJRkZFUkVOQ0VfS0lORF9SVUxFUxABEiEKHU1PREVMX0RJRkZFUkVOQ0VfS0lORF9PVVRDT01FEAISIgoeTU9ERUxfRElGRkVSRU5DRV9LSU5EX0VWSURFTkNFEAMqgwEKFEN1c3RvZHlCcmVha0RlY2lzaW9uEiYKIkNVU1RPRFlfQlJFQUtfREVDSVNJT05fVU5TUEVDSUZJRUQQABIgChxDVVNUT0RZX0JSRUFLX0RFQ0lTSU9OX0FET1BUEAESIQodQ1VTVE9EWV9CUkVBS19ERUNJU0lPTl9SRUpFQ1QQAipXCgpMaW5rU3RhdHVzEhsKF0xJTktfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFAoQTElOS19TVEFUVVNfT1BFThABEhYKEkxJTktfU1RBVFVTX0NMT1NFRBACKuIBChFDdXN0b2R5Q2hhbmdlS2luZBIjCh9DVVNUT0RZX0NIQU5HRV9LSU5EX1VOU1BFQ0lGSUVEEAASIAocQ1VTVE9EWV9DSEFOR0VfS0lORF9ERVRFQ1RFRBABEiAKHENVU1RPRFlfQ0hBTkdFX0tJTkRfUkVKRUNURUQQAhIgChxDVVNUT0RZX0NIQU5HRV9LSU5EX0FET1BUSU5HEAMSJQohQ1VTVE9EWV9DSEFOR0VfS0lORF9BRE9QVF9SRUZVU0VEEAQSGwoXQ1VTVE9EWV9DSEFOR0VfS0lORF9BU0sQBSp6ChBDdXN0b2R5QnJlYWtLaW5kEiIKHkNVU1RPRFlfQlJFQUtfS0lORF9VTlNQRUNJRklFRBAAEiEKHUNVU1RPRFlfQlJFQUtfS0lORF9TVVBFUlNFREVEEAESHwobQ1VTVE9EWV9CUkVBS19LSU5EX0RJVkVSR0VEEAIqmAEKGExvY2FsV29ya1JlamVjdGlvblNvdXJjZRIrCidMT0NBTF9XT1JLX1JFSkVDVElPTl9TT1VSQ0VfVU5TUEVDSUZJRUQQABIpCiVMT0NBTF9XT1JLX1JFSkVDVElPTl9TT1VSQ0VfQURNSVNTSU9OEAESJAogTE9DQUxfV09SS19SRUpFQ1RJT05fU09VUkNFX1NZTkMQAip2CgxUcmFuc2ZlcktpbmQSHQoZVFJBTlNGRVJfS0lORF9VTlNQRUNJRklFRBAAEhcKE1RSQU5TRkVSX0tJTkRfREVMVEEQARIWChJUUkFOU0ZFUl9LSU5EX0ZVTEwQAhIWChJUUkFOU0ZFUl9LSU5EX1BVU0gQAzJkChNOb21vc1J1bnRpbWVTZXJ2aWNlEk0KBkludm9rZRIgLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZVJlcXVlc3QaIS5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVSZXNwb25zZWIGcHJvdG8z", [file_nomos_kernel_v1_kernel, file_nomos_kernel_v1_progress]);
|
|
3567
|
+
var file_nomos_runtime_v2_runtime = /* @__PURE__ */ fileDesc("Ch5ub21vcy9ydW50aW1lL3YyL3J1bnRpbWUucHJvdG8SEG5vbW9zLnJ1bnRpbWUudjIitwoKDlJ1bnRpbWVSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoBBIyCgV0cmFjZRgDIAEoCzIeLm5vbW9zLnJ1bnRpbWUudjIuVHJhY2VDb250ZXh0SAGIAQESOgoLa2VybmVsX2NhbGwYCiABKAsyIy5ub21vcy5ydW50aW1lLnYyLktlcm5lbENhbGxSZXF1ZXN0SAASMwoHY29ubmVjdBgLIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuQ29ubmVjdFJlcXVlc3RIABJCCg9saXN0X3dvcmtzcGFjZXMYDCABKAsyJy5ub21vcy5ydW50aW1lLnYyLkxpc3RXb3Jrc3BhY2VzUmVxdWVzdEgAEkgKEnNuYXBzaG90X3dvcmtzcGFjZRgNIAEoCzIqLm5vbW9zLnJ1bnRpbWUudjIuU25hcHNob3RXb3Jrc3BhY2VSZXF1ZXN0SAASQAoOc3luY193b3Jrc3BhY2UYDiABKAsyJi5ub21vcy5ydW50aW1lLnYyLlN5bmNXb3Jrc3BhY2VSZXF1ZXN0SAASQQoPc3RhcnRfYXV0b19zeW5jGA8gASgLMiYubm9tb3MucnVudGltZS52Mi5TdGFydEF1dG9TeW5jUmVxdWVzdEgAEj8KDnN0b3BfYXV0b19zeW5jGBAgASgLMiUubm9tb3MucnVudGltZS52Mi5TdG9wQXV0b1N5bmNSZXF1ZXN0SAASLwoFd2F0Y2gYESABKAsyHi5ub21vcy5ydW50aW1lLnYyLldhdGNoUmVxdWVzdEgAEjMKB3Vud2F0Y2gYEiABKAsyIC5ub21vcy5ydW50aW1lLnYyLlVud2F0Y2hSZXF1ZXN0SAASQAoOcHJlcGFyZV9kb21haW4YEyABKAsyJi5ub21vcy5ydW50aW1lLnYyLlByZXBhcmVEb21haW5SZXF1ZXN0SAASTQoVcmVzb2x2ZV9jdXN0b2R5X2JyZWFrGBQgASgLMiwubm9tb3MucnVudGltZS52Mi5SZXNvbHZlQ3VzdG9keUJyZWFrUmVxdWVzdEgAEjoKC2Nsb3NlX3JlYWxtGBUgASgLMiMubm9tb3MucnVudGltZS52Mi5DbG9zZVJlYWxtUmVxdWVzdEgAEjoKC2RlYWRfbGV0dGVyGBYgASgLMiMubm9tb3MucnVudGltZS52Mi5EZWFkTGV0dGVyUmVxdWVzdEgAEkAKDmhpc3RvcmljX3F1ZXJ5GBcgASgLMiYubm9tb3MucnVudGltZS52Mi5IaXN0b3JpY1F1ZXJ5UmVxdWVzdEgAEkIKD21vZGVsX2xpZmVjeWNsZRgYIAEoCzInLm5vbW9zLnJ1bnRpbWUudjIuTW9kZWxMaWZlY3ljbGVSZXF1ZXN0SAASXQodZXN0YWJsaXNoX2FwcGxpY2F0aW9uX2N1c3RvZHkYGSABKAsyNC5ub21vcy5ydW50aW1lLnYyLkVzdGFibGlzaEFwcGxpY2F0aW9uQ3VzdG9keVJlcXVlc3RIABJEChB3b3Jrc3BhY2Vfc3RhdHVzGBogASgLMigubm9tb3MucnVudGltZS52Mi5Xb3Jrc3BhY2VTdGF0dXNSZXF1ZXN0SAASTwoWcmVtb3RlX2dlbmVyYXRlZF9vZmZlchgbIAEoCzItLm5vbW9zLnJ1bnRpbWUudjIuUmVtb3RlR2VuZXJhdGVkT2ZmZXJSZXF1ZXN0SABCCQoHY29tbWFuZEIICgZfdHJhY2UiUwoRS2VybmVsQ2FsbFJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRItCgdyZXF1ZXN0GAIgASgLMhwubm9tb3Mua2VybmVsLnYxLkNhbGxSZXF1ZXN0IvECCiJFc3RhYmxpc2hBcHBsaWNhdGlvbkN1c3RvZHlSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSDgoGcGFyZW50GAIgASgJEhEKCXByaW5jaXBhbBgDIAEoCRIPCgdzdWJqZWN0GAQgASgJEhUKDWRldmljZV9zZWNyZXQYBSABKAwSFQoNZGV2aWNlX3B1YmxpYxgGIAEoDBISCgphdXRoX3Rva2VuGAcgASgJEhAKCGlkX3Rva2VuGAggASgJEhQKDHZlcmlmaWVkX3ZpYRgJIAEoCRIPCgdib3JuX2F0GAogASgJEjsKE2Vucm9sbF9maXJzdF9kZXZpY2UYCyABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbBI9ChViaXJ0aF9yZWNlaXZpbmdfZ3JvdXAYDCABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbBIPCgdjb25maXJtGA0gASgIIp8BCh1BcHBsaWNhdGlvbkN1c3RvZHlFc3RhYmxpc2hlZBIMCgRob21lGAEgASgJEhcKCmNoaWxkX2hlYWQYAiABKAlIAIgBARIQCgh2ZXJpZmllZBgDIAEoCBIfChJ2ZXJpZmljYXRpb25fZXJyb3IYBCABKAlIAYgBAUINCgtfY2hpbGRfaGVhZEIVChNfdmVyaWZpY2F0aW9uX2Vycm9yImUKFEhpc3RvcmljUXVlcnlSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSDgoGbW9tZW50GAIgASgJEiwKBXF1ZXJ5GAMgASgLMh0ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5UmVxdWVzdCLGCgoPUnVudGltZVJlc3BvbnNlEhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoBBIzCgdmYWlsdXJlGAogASgLMiAubm9tb3MucnVudGltZS52Mi5SdW50aW1lRmFpbHVyZUgAEjQKC2tlcm5lbF9jYWxsGAsgASgLMh0ubm9tb3Mua2VybmVsLnYxLkNhbGxSZXNwb25zZUgAEjAKCWNvbm5lY3RlZBgMIAEoCzIbLm5vbW9zLnJ1bnRpbWUudjIuQ29ubmVjdGVkSAASOQoOd29ya3NwYWNlX2xpc3QYDSABKAsyHy5ub21vcy5ydW50aW1lLnYyLldvcmtzcGFjZUxpc3RIABJBChJ3b3Jrc3BhY2Vfc25hcHNob3QYDiABKAsyIy5ub21vcy5ydW50aW1lLnYyLldvcmtzcGFjZVNuYXBzaG90SAASQQoOc3luY193b3Jrc3BhY2UYDyABKAsyJy5ub21vcy5ydW50aW1lLnYyLlN5bmNXb3Jrc3BhY2VSZXNwb25zZUgAEj4KEWF1dG9fc3luY19zdGFydGVkGBAgASgLMiEubm9tb3MucnVudGltZS52Mi5BdXRvU3luY1N0YXJ0ZWRIABI+ChFhdXRvX3N5bmNfc3RvcHBlZBgRIAEoCzIhLm5vbW9zLnJ1bnRpbWUudjIuQXV0b1N5bmNTdG9wcGVkSAASNwoNd2F0Y2hfc3RhcnRlZBgSIAEoCzIeLm5vbW9zLnJ1bnRpbWUudjIuV2F0Y2hTdGFydGVkSAASNwoNd2F0Y2hfc3RvcHBlZBgTIAEoCzIeLm5vbW9zLnJ1bnRpbWUudjIuV2F0Y2hTdG9wcGVkSAASOwoPZG9tYWluX3ByZXBhcmVkGBQgASgLMiAubm9tb3MucnVudGltZS52Mi5Eb21haW5QcmVwYXJlZEgAEkgKFmN1c3RvZHlfYnJlYWtfcmVzb2x2ZWQYFSABKAsyJi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlCcmVha1Jlc29sdmVkSAASNQoMcmVhbG1fY2xvc2VkGBYgASgLMh0ubm9tb3MucnVudGltZS52Mi5SZWFsbUNsb3NlZEgAEjMKB2Jsb2NrZWQYFyABKAsyIC5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVCbG9ja2VkSAASSAoWcmVtb3RlX29mZmVyX2FkbWlzc2lvbhgYIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuUmVtb3RlT2ZmZXJBZG1pc3Npb25IABI7CgtkZWFkX2xldHRlchgZIAEoCzIkLm5vbW9zLnJ1bnRpbWUudjIuRGVhZExldHRlclJlc3BvbnNlSAASQwoPbW9kZWxfbGlmZWN5Y2xlGBogASgLMigubm9tb3MucnVudGltZS52Mi5Nb2RlbExpZmVjeWNsZVJlc3BvbnNlSAASWgofYXBwbGljYXRpb25fY3VzdG9keV9lc3RhYmxpc2hlZBgbIAEoCzIvLm5vbW9zLnJ1bnRpbWUudjIuQXBwbGljYXRpb25DdXN0b2R5RXN0YWJsaXNoZWRIABI9ChB3b3Jrc3BhY2Vfc3RhdHVzGBwgASgLMiEubm9tb3MucnVudGltZS52Mi5Xb3Jrc3BhY2VTdGF0dXNIABJQChZyZW1vdGVfZ2VuZXJhdGVkX29mZmVyGB0gASgLMi4ubm9tb3MucnVudGltZS52Mi5SZW1vdGVHZW5lcmF0ZWRPZmZlckFjY2VwdGVkSABCCQoHb3V0Y29tZSK3AQobUmVtb3RlR2VuZXJhdGVkT2ZmZXJSZXF1ZXN0EhYKDnNvdXJjZV9zZXNzaW9uGAEgASgJEhgKEHRhcmdldF93b3Jrc3BhY2UYAiABKAkSDQoFYWN0b3IYAyABKAkSFQoNYXV0aG9yX3NlY3JldBgEIAEoDBISCgphdXRoX3Rva2VuGAUgASgMEiwKBGNhbGwYBiABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbCI/ChxSZW1vdGVHZW5lcmF0ZWRPZmZlckFjY2VwdGVkEhEKCXdvcmtzcGFjZRgBIAEoCRIMCgRoZWFkGAIgASgJIp8BCg5SdW50aW1lQmxvY2tlZBJBCgl3b3Jrc3BhY2UYASABKAsyLC5ub21vcy5ydW50aW1lLnYyLldvcmtzcGFjZVJlc2lkZW5jeVJlcXVpcmVkSAASQAoIc2libGluZ3MYAiABKAsyLC5ub21vcy5ydW50aW1lLnYyLlNpYmxpbmdSZXNpZGVuY2llc1JlcXVpcmVkSABCCAoGcmVhc29uIi8KGldvcmtzcGFjZVJlc2lkZW5jeVJlcXVpcmVkEhEKCXdvcmtzcGFjZRgBIAEoCSJVChhTaWJsaW5nUmVzaWRlbmN5UmVxdWlyZWQSEQoJd29ya3NwYWNlGAEgASgJEhMKC3NvdXJjZV9oZWFkGAIgASgJEhEKCWZvbGRfcm9vdBgDIAEoCSJdChpTaWJsaW5nUmVzaWRlbmNpZXNSZXF1aXJlZBI/CgtyZXNpZGVuY2llcxgBIAMoCzIqLm5vbW9zLnJ1bnRpbWUudjIuU2libGluZ1Jlc2lkZW5jeVJlcXVpcmVkIoYCChRSZW1vdGVPZmZlckFkbWlzc2lvbhIRCgl3b3Jrc3BhY2UYASABKAkSDAoEbWFpbhgCIAEoCRIYCgtzZWFsZWRfbWFpbhgDIAEoCUgAiAEBEi8KB3ZlcmRpY3QYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZRIzCgxib3JuX2N1c3RvZHkYBSADKAsyHS5ub21vcy5ydW50aW1lLnYyLkJvcm5DdXN0b2R5EhMKC3Jlc3VsdF9wYWNrGAYgASgMEhgKC3Jlc3VsdF9iYXNlGAcgASgJSAGIAQFCDgoMX3NlYWxlZF9tYWluQg4KDF9yZXN1bHRfYmFzZSJKCgtCb3JuQ3VzdG9keRItCgVjaGlsZBgBIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5Cb3JuV29ya3NwYWNlEgwKBHBhY2sYAiABKAwi+QEKGEN1c3RvZHlPZmZlckJhdGNoUmVxdWVzdBIYChBwcm90b2NvbF92ZXJzaW9uGAEgASgNEhIKCnJlcXVlc3RfaWQYAiABKAkSNwoGaW5saW5lGAMgASgLMiUubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW5saW5lT2ZmZXJzSAASRgoRc2Vzc2lvbl9jYW5kaWRhdGUYBCABKAsyKS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlTZXNzaW9uQ2FuZGlkYXRlSAASFgoJYmFzZV9oZWFkGAUgASgJSAGIAQFCCAoGc291cmNlQgwKCl9iYXNlX2hlYWQiTgoSQ3VzdG9keUludGVudE9mZmVyEg8KB3Nlc3Npb24YASABKAkSEgoKY29tbWl0X29pZBgCIAEoCRITCgtjaGFuZ2VfdXNkYRgDIAEoDCJLChNDdXN0b2R5SW5saW5lT2ZmZXJzEjQKBm9mZmVycxgBIAMoCzIkLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudE9mZmVyIiwKF0N1c3RvZHlTZXNzaW9uQ2FuZGlkYXRlEhEKCXJlZmVyZW5jZRgBIAEoCSL3AQoZQ3VzdG9keU9mZmVyQmF0Y2hSZXNwb25zZRIYChBwcm90b2NvbF92ZXJzaW9uGAEgASgNEhIKCnJlcXVlc3RfaWQYAiABKAkSNwoJYWRtaXNzaW9uGAogASgLMiIubm9tb3MucnVudGltZS52Mi5DdXN0b2R5QWRtaXNzaW9uSAASMwoHZmFpbHVyZRgLIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZUZhaWx1cmVIABIzCgdibG9ja2VkGAwgASgLMiAubm9tb3MucnVudGltZS52Mi5SdW50aW1lQmxvY2tlZEgAQgkKB291dGNvbWUi7gIKEEN1c3RvZHlBZG1pc3Npb24SDAoEbWFpbhgBIAEoCRIYCgtzZWFsZWRfbWFpbhgCIAEoCUgAiAEBEjsKCHNlc3Npb25zGAMgAygLMikubm9tb3MucnVudGltZS52Mi5DdXN0b2R5U2Vzc2lvbkFkbWlzc2lvbhI1Cg5iaXJ0aF9vdXRjb21lcxgEIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSMwoMYm9ybl9jdXN0b2R5GAUgAygLMh0ubm9tb3MucnVudGltZS52Mi5Cb3JuQ3VzdG9keRITCgtyZXN1bHRfcGFjaxgGIAEoDBIYCgtyZXN1bHRfYmFzZRgHIAEoCUgBiAEBEjoKB3RpbWluZ3MYCCABKAsyKS5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlBZG1pc3Npb25UaW1pbmdzQg4KDF9zZWFsZWRfbWFpbkIOCgxfcmVzdWx0X2Jhc2UiZQoXQ3VzdG9keVNlc3Npb25BZG1pc3Npb24SDwoHc2Vzc2lvbhgBIAEoCRI5CgdpbnRlbnRzGAIgAygLMigubm9tb3MucnVudGltZS52Mi5DdXN0b2R5SW50ZW50QWRtaXNzaW9uIpACChZDdXN0b2R5SW50ZW50QWRtaXNzaW9uEhIKCmNvbW1pdF9vaWQYASABKAkSFgoJaW50ZW50X2lkGAIgASgJSAGIAQESOwoIYWRtaXR0ZWQYCiABKAsyJy5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRBZG1pdHRlZEgAEjkKB3NraXBwZWQYCyABKAsyJi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlJbnRlbnRTa2lwcGVkSAASOQoHcmVmdXNlZBgMIAEoCzImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUludGVudFJlZnVzZWRIAEIJCgdvdXRjb21lQgwKCl9pbnRlbnRfaWQikAEKFUN1c3RvZHlJbnRlbnRBZG1pdHRlZBIMCgRoZWFkGAEgASgJEjMKB2NyZWF0ZWQYAiADKAsyIi5ub21vcy5rZXJuZWwudjEuT2ZmZXJBZ2dyZWdhdGVSZWYSNAoIYWZmZWN0ZWQYAyADKAsyIi5ub21vcy5rZXJuZWwudjEuT2ZmZXJBZ2dyZWdhdGVSZWYiLwoUQ3VzdG9keUludGVudFNraXBwZWQSFwoPYWxyZWFkeV9vbl9tYWluGAEgASgIIloKFEN1c3RvZHlJbnRlbnRSZWZ1c2VkEg8KB21lc3NhZ2UYASABKAkSFQoNZGVhZF9sZXR0ZXJlZBgCIAEoCBIRCgRoaW50GAMgASgJSACIAQFCBwoFX2hpbnQi7QEKF0N1c3RvZHlBZG1pc3Npb25UaW1pbmdzEhQKDHRvdGFsX21pbGxpcxgBIAEoARITCgtzY2FuX21pbGxpcxgCIAEoARIUCgxmZXRjaF9taWxsaXMYAyABKAESEwoLc2VhbF9taWxsaXMYBCABKAESGAoQZ2F0ZV9mb2xkX21pbGxpcxgFIAEoARIUCgxpbnRlbnRfY291bnQYBiABKA0SFQoNc2Vzc2lvbl9jb3VudBgHIAEoDRI1CgVzcGFucxgIIAMoCzImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUFkbWlzc2lvblNwYW4ilwEKFEN1c3RvZHlBZG1pc3Npb25TcGFuEgoKAmlkGAEgASgJEg0KBXRyYWNrGAIgASgJEgwKBG5hbWUYAyABKAkSDAoEa2luZBgEIAEoCRINCgVkZXB0aBgFIAEoDRIbChNzdGFydGVkX3VuaXhfbWlsbGlzGAYgASgBEhwKFGZpbmlzaGVkX3VuaXhfbWlsbGlzGAcgASgBIkIKDFRyYWNlQ29udGV4dBIQCgh0cmFjZV9pZBgBIAEoDBIPCgdzcGFuX2lkGAIgASgMEg8KB3NhbXBsZWQYAyABKAgi6QEKDlJ1bnRpbWVGYWlsdXJlEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRIRCgljb21wb25lbnQYAyABKAkSFgoJd29ya3NwYWNlGAQgASgJSACIAQESEwoGZG9tYWluGAUgASgJSAGIAQESFgoJZGlyZWN0aXZlGAYgASgJSAKIAQESOQoKYXR0cmlidXRlcxgHIAMoCzIlLm5vbW9zLnJ1bnRpbWUudjIuRGlhZ25vc3RpY0F0dHJpYnV0ZUIMCgpfd29ya3NwYWNlQgkKB19kb21haW5CDAoKX2RpcmVjdGl2ZSKlAQoTRGlhZ25vc3RpY0F0dHJpYnV0ZRIMCgRuYW1lGAEgASgJEhYKDHN0cmluZ192YWx1ZRgCIAEoCUgAEhcKDWludGVnZXJfdmFsdWUYAyABKBJIABIWCgxkb3VibGVfdmFsdWUYBCABKAFIABIXCg1ib29sZWFuX3ZhbHVlGAUgASgISAASFQoLYnl0ZXNfdmFsdWUYBiABKAxIAEIHCgV2YWx1ZSLNAgoOQ29ubmVjdFJlcXVlc3QSEQoJd29ya3NwYWNlGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIUCgdzZXNzaW9uGAMgASgJSACIAQESEgoFY2xvdWQYBCABKAlIAYgBARISCgphdXRoX3Rva2VuGAUgASgMEhUKDWF1dGhvcl9zZWNyZXQYBiABKAwSIgoabWF4aW11bV9tb3VudGVkX3dvcmtzcGFjZXMYByABKA0SFAoMYWxsb3dfdW5ib3JuGAggASgIEg8KB3JlY292ZXIYCSABKAgSQgoUY3VzdG9keV9icmVha19wb2xpY3kYCiABKA4yJC5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlCcmVha1BvbGljeRIbChNoYXNfcmVzdG9yZV9jdXN0b2R5GAsgASgIQgoKCF9zZXNzaW9uQggKBl9jbG91ZCKLAQoJQ29ubmVjdGVkEhEKCXdvcmtzcGFjZRgBIAEoCRIPCgdzZXNzaW9uGAIgASgJEhMKC2Nsb3VkX2JvdW5kGAMgASgIEjgKCHJlY292ZXJ5GAQgASgLMiEubm9tb3MucnVudGltZS52Mi5DdXN0b2R5UmVjb3ZlcnlIAIgBAUILCglfcmVjb3ZlcnkiWwoPQ3VzdG9keVJlY292ZXJ5EhUKDXByZXZpb3VzX2hlYWQYASABKAkSFgoOcmVjb3ZlcmVkX2hlYWQYAiABKAkSGQoRcmVjb3ZlcmVkX2ludGVudHMYAyABKAQiFwoVTGlzdFdvcmtzcGFjZXNSZXF1ZXN0Iq0BChBXb3Jrc3BhY2VTdW1tYXJ5Eg8KB3Nlc3Npb24YASABKAkSEQoJd29ya3NwYWNlGAIgASgJEjcKCXJlc2lkZW5jeRgDIAEoDjIkLm5vbW9zLnJ1bnRpbWUudjIuV29ya3NwYWNlUmVzaWRlbmN5EjwKDHN5bmNfcG9zdHVyZRgEIAEoDjImLm5vbW9zLnJ1bnRpbWUudjIuV29ya3NwYWNlU3luY1Bvc3R1cmUiRwoNV29ya3NwYWNlTGlzdBI2Cgp3b3Jrc3BhY2VzGAEgAygLMiIubm9tb3MucnVudGltZS52Mi5Xb3Jrc3BhY2VTdW1tYXJ5IikKFldvcmtzcGFjZVN0YXR1c1JlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCSJACg9Xb3Jrc3BhY2VTdGF0dXMSEQoJd29ya3NwYWNlGAEgASgJEhEKBGhlYWQYAiABKAlIAIgBAUIHCgVfaGVhZCJNChhTbmFwc2hvdFdvcmtzcGFjZVJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRIUCgdpZl9oZWFkGAIgASgJSACIAQFCCgoIX2lmX2hlYWQiXAoRV29ya3NwYWNlU25hcHNob3QSEQoJd29ya3NwYWNlGAEgASgJEgwKBGhlYWQYAiABKAkSEQoJdW5jaGFuZ2VkGAMgASgIEhMKC2hhc19jdXN0b2R5GAQgASgIIjYKFFN5bmNXb3Jrc3BhY2VSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSDQoFYWRtaXQYAiABKAgivAUKFVN5bmNXb3Jrc3BhY2VSZXNwb25zZRIRCgl3b3Jrc3BhY2UYASABKAkSGgoNcHJldmlvdXNfaGVhZBgCIAEoCUgAiAEBEhkKDGN1cnJlbnRfaGVhZBgDIAEoCUgBiAEBEhAKCGFkbWl0dGVkGAQgASgEEg8KB3JlZnVzZWQYBSABKAQSEAoIZGVmZXJyZWQYBiABKAQSEgoKbG9jYWxfb25seRgHIAEoCBIOCgZwdWxsZWQYCCABKAgSEAoIZGl2ZXJnZWQYCSABKAgSGgoScmVjb25uZWN0X3JlcXVpcmVkGAogASgIEhMKC3N0aWxsX2FoZWFkGAsgASgIEg8KB29mZmxpbmUYDCABKAgSEwoLcHVzaF9mYWlsZWQYDSABKAgSHQoVZGlyZWN0X29mZmVyX2RlZmVycmVkGA4gASgIEjUKDmJpcnRoX291dGNvbWVzGA8gAygLMh0ubm9tb3Mua2VybmVsLnYxLkJpcnRoT3V0Y29tZRIbChNhZG1pdHRlZF9pbnRlbnRfaWRzGBAgAygJEhwKFGNvbnZlcmdlZF9pbnRlbnRfaWRzGBEgAygJEkIKCnB1c2hfZXJyb3IYEiABKAsyKS5ub21vcy5ydW50aW1lLnYyLlJ1bnRpbWVUcmFuc3BvcnRGYWlsdXJlSAKIAQESRwoPZGlzY292ZXJ5X2Vycm9yGBMgASgLMikubm9tb3MucnVudGltZS52Mi5SdW50aW1lVHJhbnNwb3J0RmFpbHVyZUgDiAEBEjMKB3RpbWluZ3MYFCABKAsyIi5ub21vcy5ydW50aW1lLnYyLlN5bmNQaGFzZVRpbWluZ3NCEAoOX3ByZXZpb3VzX2hlYWRCDwoNX2N1cnJlbnRfaGVhZEINCgtfcHVzaF9lcnJvckISChBfZGlzY292ZXJ5X2Vycm9yIl0KF1J1bnRpbWVUcmFuc3BvcnRGYWlsdXJlEhAKCGVuZHBvaW50GAEgASgJEg4KBnN0YXR1cxgCIAEoERIPCgdyZWZ1c2VkGAMgASgIEg8KB21lc3NhZ2UYBCABKAkisQEKEFN5bmNQaGFzZVRpbWluZ3MSEwoLcHVzaF9taWxsaXMYASABKAESFAoMYWRtaXRfbWlsbGlzGAIgASgBEhcKD3ByZWZldGNoX21pbGxpcxgDIAEoARIXCg9jb252ZXJnZV9taWxsaXMYBCABKAESEgoKcHVzaF9ieXRlcxgFIAEoBBIVCg1zZXJ2ZXJfbWlsbGlzGAYgASgBEhUKDW9mZmVyX2luX3B1c2gYByABKAgi3wEKFFN0YXJ0QXV0b1N5bmNSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSHAoPZGVib3VuY2VfbWlsbGlzGAIgASgNSACIAQESHAoPZmFsbGJhY2tfbWlsbGlzGAMgASgNSAGIAQESGgoNc2lnbmFsX21pbGxpcxgEIAEoDUgCiAEBEhYKCXNpZ25hbF9pZBgFIAEoCUgDiAEBQhIKEF9kZWJvdW5jZV9taWxsaXNCEgoQX2ZhbGxiYWNrX21pbGxpc0IQCg5fc2lnbmFsX21pbGxpc0IMCgpfc2lnbmFsX2lkIiIKD0F1dG9TeW5jU3RhcnRlZBIPCgdzZXNzaW9uGAEgASgJIiYKE1N0b3BBdXRvU3luY1JlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCSIiCg9BdXRvU3luY1N0b3BwZWQSDwoHc2Vzc2lvbhgBIAEoCSKqAQoMV2F0Y2hSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSFwoPc3Vic2NyaXB0aW9uX2lkGAIgASgJEikKBGtpbmQYAyABKA4yGy5ub21vcy5ydW50aW1lLnYyLldhdGNoS2luZBIsCgVxdWVyeRgEIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5RdWVyeVJlcXVlc3QSFwoPaW50ZXJ2YWxfbWlsbGlzGAUgASgNIicKDFdhdGNoU3RhcnRlZBIXCg9zdWJzY3JpcHRpb25faWQYASABKAkiKQoOVW53YXRjaFJlcXVlc3QSFwoPc3Vic2NyaXB0aW9uX2lkGAEgASgJIicKDFdhdGNoU3RvcHBlZBIXCg9zdWJzY3JpcHRpb25faWQYASABKAkidQoUUHJlcGFyZURvbWFpblJlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRIOCgZkb21haW4YAiABKAkSFgoOcGFja2FnZV9zaGEyNTYYAyABKAkSFgoJZGlyZWN0aXZlGAQgASgJSACIAQFCDAoKX2RpcmVjdGl2ZSJSCg5Eb21haW5QcmVwYXJlZBIOCgZkb21haW4YASABKAkSFgoOcGFja2FnZV9zaGEyNTYYAiABKAkSGAoQYWxyZWFkeV9yZXNpZGVudBgDIAEoCCL2AQoVTW9kZWxMaWZlY3ljbGVSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSPQoFc3RhZ2UYCiABKAsyLC5ub21vcy5ydW50aW1lLnYyLlN0YWdlR2VuZXJhdGVkTW9kZWxSZXF1ZXN0SAASPQoFYWRvcHQYCyABKAsyLC5ub21vcy5ydW50aW1lLnYyLkFkb3B0R2VuZXJhdGVkTW9kZWxSZXF1ZXN0SAASQQoHcmVzdG9yZRgMIAEoCzIuLm5vbW9zLnJ1bnRpbWUudjIuUmVzdG9yZUdlbmVyYXRlZE1vZGVsUmVxdWVzdEgAQgsKCW9wZXJhdGlvbiKGAQoaU3RhZ2VHZW5lcmF0ZWRNb2RlbFJlcXVlc3QSDgoGZG9tYWluGAEgASgJEhYKDmNhbmRpZGF0ZV9oYXNoGAIgASgJEhAKCGxhd191c2R6GAMgASgMEhsKDnNvdXJjZV9zZXNzaW9uGAQgASgJSACIAQFCEQoPX3NvdXJjZV9zZXNzaW9uInoKGkFkb3B0R2VuZXJhdGVkTW9kZWxSZXF1ZXN0Eg4KBmRvbWFpbhgBIAEoCRIWCg5jYW5kaWRhdGVfaGFzaBgCIAEoCRIeChFhY2NlcHRhbmNlX3JlYXNvbhgDIAEoCUgAiAEBQhQKEl9hY2NlcHRhbmNlX3JlYXNvbiJ6ChxSZXN0b3JlR2VuZXJhdGVkTW9kZWxSZXF1ZXN0Eg4KBmRvbWFpbhgBIAEoCRIUCgxjdXJyZW50X2hhc2gYAiABKAkSHgoRYWNjZXB0YW5jZV9yZWFzb24YAyABKAlIAIgBAUIUChJfYWNjZXB0YW5jZV9yZWFzb24ikwEKD01vZGVsRGlmZmVyZW5jZRIzCgRraW5kGAEgASgOMiUubm9tb3MucnVudGltZS52Mi5Nb2RlbERpZmZlcmVuY2VLaW5kEhEKBGFyZWEYAiABKAlIAIgBARITCgZhY3Rpb24YAyABKAlIAYgBARIPCgdzdW1tYXJ5GAQgASgJQgcKBV9hcmVhQgkKB19hY3Rpb24ipQEKC01vZGVsUmV2aWV3EhcKD2NoZWNrZWRfYWN0aW9ucxgBIAEoBBIZChFjYW5kaWRhdGVfYWN0aW9ucxgCIAEoBBIZCgxzYW1lX291dGNvbWUYAyABKAhIAIgBARI2CgtkaWZmZXJlbmNlcxgEIAMoCzIhLm5vbW9zLnJ1bnRpbWUudjIuTW9kZWxEaWZmZXJlbmNlQg8KDV9zYW1lX291dGNvbWUihQIKFk1vZGVsTGlmZWN5Y2xlUmVzcG9uc2USEAoIYWNjZXB0ZWQYASABKAgSNAoFc3RhZ2UYAiABKA4yJS5ub21vcy5ydW50aW1lLnYyLk1vZGVsTGlmZWN5Y2xlU3RhZ2USFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhEKBGhlYWQYBCABKAlIAYgBARIXCgpyZWNlaXB0X2lkGAUgASgJSAKIAQESMgoGcmV2aWV3GAYgASgLMh0ubm9tb3MucnVudGltZS52Mi5Nb2RlbFJldmlld0gDiAEBQgoKCF9tZXNzYWdlQgcKBV9oZWFkQg0KC19yZWNlaXB0X2lkQgkKB19yZXZpZXciZwoaUmVzb2x2ZUN1c3RvZHlCcmVha1JlcXVlc3QSDwoHc2Vzc2lvbhgBIAEoCRI4CghkZWNpc2lvbhgCIAEoDjImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUJyZWFrRGVjaXNpb24iYQoUQ3VzdG9keUJyZWFrUmVzb2x2ZWQSDwoHc2Vzc2lvbhgBIAEoCRI4CghkZWNpc2lvbhgCIAEoDjImLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUJyZWFrRGVjaXNpb24iEwoRQ2xvc2VSZWFsbVJlcXVlc3QiDQoLUmVhbG1DbG9zZWQi5QEKEURlYWRMZXR0ZXJSZXF1ZXN0Eg8KB3Nlc3Npb24YASABKAkSOAoEbGlzdBgKIAEoCzIoLm5vbW9zLnJ1bnRpbWUudjIuTGlzdERlYWRMZXR0ZXJzUmVxdWVzdEgAEjkKBXJldHJ5GAsgASgLMigubm9tb3MucnVudGltZS52Mi5SZXRyeURlYWRMZXR0ZXJSZXF1ZXN0SAASPQoHZGlzY2FyZBgMIAEoCzIqLm5vbW9zLnJ1bnRpbWUudjIuRGlzY2FyZERlYWRMZXR0ZXJSZXF1ZXN0SABCCwoJb3BlcmF0aW9uIhgKFkxpc3REZWFkTGV0dGVyc1JlcXVlc3QiKwoWUmV0cnlEZWFkTGV0dGVyUmVxdWVzdBIRCglpbnRlbnRfaWQYASABKAkiLQoYRGlzY2FyZERlYWRMZXR0ZXJSZXF1ZXN0EhEKCWludGVudF9pZBgBIAEoCSK9AQoSRGVhZExldHRlclJlc3BvbnNlEjAKBGxpc3QYCiABKAsyIC5ub21vcy5ydW50aW1lLnYyLkRlYWRMZXR0ZXJMaXN0SAASMgoFcmV0cnkYCyABKAsyIS5ub21vcy5ydW50aW1lLnYyLkRlYWRMZXR0ZXJSZXRyeUgAEjYKB2Rpc2NhcmQYDCABKAsyIy5ub21vcy5ydW50aW1lLnYyLkRlYWRMZXR0ZXJEaXNjYXJkSABCCQoHb3V0Y29tZSJECg5EZWFkTGV0dGVyTGlzdBIyCgdlbnRyaWVzGAEgAygLMiEubm9tb3MucnVudGltZS52Mi5EZWFkTGV0dGVyRW50cnkiuQEKD0RlYWRMZXR0ZXJFbnRyeRIPCgJpZBgBIAEoCUgAiAEBEhIKCmNvbW1pdF9vaWQYAiABKAkSDgoGc291cmNlGAMgASgJEg8KB21lc3NhZ2UYBCABKAkSEwoGZG9tYWluGAUgASgJSAGIAQESFgoJZGlyZWN0aXZlGAYgASgJSAKIAQESEwoLcmVjb3JkZWRfYXQYByABKAlCBQoDX2lkQgkKB19kb21haW5CDAoKX2RpcmVjdGl2ZSJ5Cg9EZWFkTGV0dGVyUmV0cnkSDwoHcmV0cmllZBgBIAEoCBIRCgRoZWFkGAIgASgJSACIAQESFwoPYWxyZWFkeV9vbl9tYWluGAMgASgIEhQKB21lc3NhZ2UYBCABKAlIAYgBAUIHCgVfaGVhZEIKCghfbWVzc2FnZSIkChFEZWFkTGV0dGVyRGlzY2FyZBIPCgdyZW1vdmVkGAEgASgEIs0FCgxSdW50aW1lRXZlbnQSEAoIc2VxdWVuY2UYASABKAQSFAoHc2Vzc2lvbhgCIAEoCUgBiAEBEi8KBXJlYWR5GAogASgLMh4ubm9tb3MucnVudGltZS52Mi5SdW50aW1lUmVhZHlIABI3Cg13YXRjaF9jaGFuZ2VkGAsgASgLMh4ubm9tb3MucnVudGltZS52Mi5XYXRjaENoYW5nZWRIABI5Cg5zeW5jX2NvbXBsZXRlZBgMIAEoCzIfLm5vbW9zLnJ1bnRpbWUudjIuU3luY0NvbXBsZXRlZEgAEjUKDGxpbmtfY2hhbmdlZBgNIAEoCzIdLm5vbW9zLnJ1bnRpbWUudjIuTGlua0NoYW5nZWRIABI5Cg5zaWduYWxfY2hhbmdlZBgOIAEoCzIfLm5vbW9zLnJ1bnRpbWUudjIuU2lnbmFsQ2hhbmdlZEgAEjsKD2N1c3RvZHlfY2hhbmdlZBgPIAEoCzIgLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keUNoYW5nZWRIABJCChNsb2NhbF93b3JrX3JlamVjdGVkGBAgASgLMiMubm9tb3MucnVudGltZS52Mi5Mb2NhbFdvcmtSZWplY3RlZEgAEjMKC2xhd19jaGFuZ2VkGBEgASgLMhwubm9tb3MucnVudGltZS52Mi5MYXdDaGFuZ2VkSAASQwoPa2VybmVsX3Byb2dyZXNzGBIgASgLMigubm9tb3MucnVudGltZS52Mi5LZXJuZWxQcm9ncmVzc09ic2VydmVkSAASLQoEc3BhbhgTIAEoCzIdLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZVNwYW5IABI/ChF0cmFuc2Zlcl9wcm9ncmVzcxgUIAEoCzIiLm5vbW9zLnJ1bnRpbWUudjIuVHJhbnNmZXJQcm9ncmVzc0gAQgcKBWV2ZW50QgoKCF9zZXNzaW9uIj4KDFJ1bnRpbWVSZWFkeRIXCg9ydW50aW1lX3ZlcnNpb24YASABKAkSFQoNa2VybmVsX3NoYTI1NhgCIAEoDCKAAQoMV2F0Y2hDaGFuZ2VkEhcKD3N1YnNjcmlwdGlvbl9pZBgBIAEoCRITCgtyZXN1bHRfdXNkYRgCIAEoDBI2CgdmYWlsdXJlGAMgASgLMiAubm9tb3MucnVudGltZS52Mi5SdW50aW1lRmFpbHVyZUgAiAEBQgoKCF9mYWlsdXJlIpwBCg1TeW5jQ29tcGxldGVkEg4KBnJlYXNvbhgBIAEoCRI3CgZyZXN1bHQYAiABKAsyJy5ub21vcy5ydW50aW1lLnYyLlN5bmNXb3Jrc3BhY2VSZXNwb25zZRI2CgdmYWlsdXJlGAMgASgLMiAubm9tb3MucnVudGltZS52Mi5SdW50aW1lRmFpbHVyZUgAiAEBQgoKCF9mYWlsdXJlIjsKC0xpbmtDaGFuZ2VkEiwKBnN0YXR1cxgBIAEoDjIcLm5vbW9zLnJ1bnRpbWUudjIuTGlua1N0YXR1cyI4Cg1TaWduYWxDaGFuZ2VkEg4KBmRvbWFpbhgBIAEoCRIXCg9wcm9qZWN0aW9uX3VzZGEYAiABKAwi9AEKDkN1c3RvZHlDaGFuZ2VkEjEKBGtpbmQYASABKA4yIy5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlDaGFuZ2VLaW5kEjUKDWN1c3RvZHlfYnJlYWsYAiABKAsyHi5ub21vcy5ydW50aW1lLnYyLkN1c3RvZHlCcmVhaxIWCglvcGVyYXRpb24YAyABKAlIAIgBARIVCghyZWNsb25lZBgEIAEoCEgBiAEBEhsKDnBhcmtlZF9pbnRlbnRzGAUgASgESAKIAQFCDAoKX29wZXJhdGlvbkILCglfcmVjbG9uZWRCEQoPX3BhcmtlZF9pbnRlbnRzIuEBChFMb2NhbFdvcmtSZWplY3RlZBIRCgl3b3Jrc3BhY2UYASABKAkSNgoHcmVmdXNlZBgCIAMoCzIlLm5vbW9zLnJ1bnRpbWUudjIuUmVqZWN0ZWRMb2NhbEludGVudBIOCgZwYXJrZWQYAyABKAgSFQoIcmVzZXRfdG8YBCABKAlIAIgBARIRCglyZXRyeWFibGUYBSABKAgSOgoGc291cmNlGAYgASgOMioubm9tb3MucnVudGltZS52Mi5Mb2NhbFdvcmtSZWplY3Rpb25Tb3VyY2VCCwoJX3Jlc2V0X3RvImMKE0N1c3RvZHlTdXBlcnNlc3Npb24SGgoNc3VwZXJzZWRlZF9hdBgBIAEoCUgAiAEBEhMKBnJlYXNvbhgCIAEoCUgBiAEBQhAKDl9zdXBlcnNlZGVkX2F0QgkKB19yZWFzb24iuAIKDEN1c3RvZHlCcmVhaxIwCgRraW5kGAEgASgOMiIubm9tb3MucnVudGltZS52Mi5DdXN0b2R5QnJlYWtLaW5kEhUKDWxvY2FsX2dlbmVzaXMYAiABKAkSFgoOcmVtb3RlX2dlbmVzaXMYAyABKAkSGgoScmVtb3RlX2luY2FybmF0aW9uGAQgASgJEkAKDHN1cGVyc2Vzc2lvbhgFIAEoCzIlLm5vbW9zLnJ1bnRpbWUudjIuQ3VzdG9keVN1cGVyc2Vzc2lvbkgAiAEBEhoKEmxvY2FsX29ubHlfaW50ZW50cxgGIAEoBBIiChVsYXN0X3N5bmNlZF9hdF9taWxsaXMYByABKARIAYgBAUIPCg1fc3VwZXJzZXNzaW9uQhgKFl9sYXN0X3N5bmNlZF9hdF9taWxsaXMizQEKE1JlamVjdGVkTG9jYWxJbnRlbnQSFgoJaW50ZW50X2lkGAEgASgJSACIAQESFwoKY29tbWl0X29pZBgCIAEoCUgBiAEBEhMKBmRvbWFpbhgDIAEoCUgCiAEBEhYKCWRpcmVjdGl2ZRgEIAEoCUgDiAEBEg8KB21lc3NhZ2UYBSABKAkSEQoJcmV0cnlhYmxlGAYgASgIQgwKCl9pbnRlbnRfaWRCDQoLX2NvbW1pdF9vaWRCCQoHX2RvbWFpbkIMCgpfZGlyZWN0aXZlIlAKCkxhd0NoYW5nZWQSDgoGZG9tYWluGAEgASgJEhYKDnBhY2thZ2Vfc2hhMjU2GAIgASgJEhoKEmNvbXBhdGliaWxpdHlfdXNkYRgDIAEoDCLdAQoLUnVudGltZVNwYW4SEAoIdHJhY2VfaWQYASABKAwSDwoHc3Bhbl9pZBgCIAEoDBIbCg5wYXJlbnRfc3Bhbl9pZBgDIAEoDEgAiAEBEgwKBG5hbWUYBCABKAkSGgoSc3RhcnRlZF91bml4X25hbm9zGAUgASgEEhYKDmR1cmF0aW9uX25hbm9zGAYgASgEEjkKCmF0dHJpYnV0ZXMYByADKAsyJS5ub21vcy5ydW50aW1lLnYyLkRpYWdub3N0aWNBdHRyaWJ1dGVCEQoPX3BhcmVudF9zcGFuX2lkIuoBChZLZXJuZWxQcm9ncmVzc09ic2VydmVkEjkKCHNuYXBzaG90GAEgASgLMicubm9tb3Mua2VybmVsLnYxLktlcm5lbFByb2dyZXNzU25hcHNob3QSJAocaG9zdF9vYnNlcnZlZF9lbGFwc2VkX21pY3JvcxgCIAEoBBIqCiJob3N0X29ic2VydmVkX3BoYXNlX2VsYXBzZWRfbWljcm9zGAMgASgEEh4KFnByb2Nlc3NfcmVzaWRlbnRfYnl0ZXMYBCABKAQSIwobcHJvY2Vzc19wZWFrX3Jlc2lkZW50X2J5dGVzGAUgASgEIoIBChBUcmFuc2ZlclByb2dyZXNzEhYKDnJlY2VpdmVkX2J5dGVzGAEgASgEEhgKC3RvdGFsX2J5dGVzGAIgASgESACIAQESLAoEa2luZBgDIAEoDjIeLm5vbW9zLnJ1bnRpbWUudjIuVHJhbnNmZXJLaW5kQg4KDF90b3RhbF9ieXRlcyqZAQoSQ3VzdG9keUJyZWFrUG9saWN5EiQKIENVU1RPRFlfQlJFQUtfUE9MSUNZX1VOU1BFQ0lGSUVEEAASHAoYQ1VTVE9EWV9CUkVBS19QT0xJQ1lfQVNLEAESHgoaQ1VTVE9EWV9CUkVBS19QT0xJQ1lfQURPUFQQAhIfChtDVVNUT0RZX0JSRUFLX1BPTElDWV9SRUpFQ1QQAyqgAQoSV29ya3NwYWNlUmVzaWRlbmN5EiMKH1dPUktTUEFDRV9SRVNJREVOQ1lfVU5TUEVDSUZJRUQQABIfChtXT1JLU1BBQ0VfUkVTSURFTkNZX01PVU5URUQQARIeChpXT1JLU1BBQ0VfUkVTSURFTkNZX1BBUktFRBACEiQKIFdPUktTUEFDRV9SRVNJREVOQ1lfQ1VTVE9EWV9PTkxZEAMqjQEKFFdvcmtzcGFjZVN5bmNQb3N0dXJlEiYKIldPUktTUEFDRV9TWU5DX1BPU1RVUkVfVU5TUEVDSUZJRUQQABIlCiFXT1JLU1BBQ0VfU1lOQ19QT1NUVVJFX0xPQ0FMX09OTFkQARImCiJXT1JLU1BBQ0VfU1lOQ19QT1NUVVJFX0NMT1VEX0JPVU5EEAIqqAEKCVdhdGNoS2luZBIaChZXQVRDSF9LSU5EX1VOU1BFQ0lGSUVEEAASFAoQV0FUQ0hfS0lORF9RVUVSWRABEhQKEFdBVENIX0tJTkRfQllfSUQQAhIWChJXQVRDSF9LSU5EX1NQQVRJQUwQAxIXChNXQVRDSF9LSU5EX0FDVElWSVRZEAQiBAgFEAUqHFdBVENIX0tJTkRfUEVORElOR19DT05GTElDVFMqpAMKE01vZGVsTGlmZWN5Y2xlU3RhZ2USJQohTU9ERUxfTElGRUNZQ0xFX1NUQUdFX1VOU1BFQ0lGSUVEEAASKwonTU9ERUxfTElGRUNZQ0xFX1NUQUdFX0lERU5USVRZX1JFUVVJUkVEEAESKgomTU9ERUxfTElGRUNZQ0xFX1NUQUdFX1NUQUdJTkdfUkVRVUlSRUQQAhIjCh9NT0RFTF9MSUZFQ1lDTEVfU1RBR0VfUFJFRkxJR0hUEAMSLQopTU9ERUxfTElGRUNZQ0xFX1NUQUdFX0FDQ0VQVEFOQ0VfUkVRVUlSRUQQBBIjCh9NT0RFTF9MSUZFQ1lDTEVfU1RBR0VfQURNSVNTSU9OEAUSIQodTU9ERUxfTElGRUNZQ0xFX1NUQUdFX1BFTkRJTkcQBhIiCh5NT0RFTF9MSUZFQ1lDTEVfU1RBR0VfUFJPTU9URUQQBxIiCh5NT0RFTF9MSUZFQ1lDTEVfU1RBR0VfUkVTVE9SRUQQCBIpCiVNT0RFTF9MSUZFQ1lDTEVfU1RBR0VfQUxSRUFEWV9DVVJSRU5UEAkqpAEKE01vZGVsRGlmZmVyZW5jZUtpbmQSJQohTU9ERUxfRElGRkVSRU5DRV9LSU5EX1VOU1BFQ0lGSUVEEAASHwobTU9ERUxfRElGRkVSRU5DRV9LSU5EX1JVTEVTEAESIQodTU9ERUxfRElGRkVSRU5DRV9LSU5EX09VVENPTUUQAhIiCh5NT0RFTF9ESUZGRVJFTkNFX0tJTkRfRVZJREVOQ0UQAyqDAQoUQ3VzdG9keUJyZWFrRGVjaXNpb24SJgoiQ1VTVE9EWV9CUkVBS19ERUNJU0lPTl9VTlNQRUNJRklFRBAAEiAKHENVU1RPRFlfQlJFQUtfREVDSVNJT05fQURPUFQQARIhCh1DVVNUT0RZX0JSRUFLX0RFQ0lTSU9OX1JFSkVDVBACKlcKCkxpbmtTdGF0dXMSGwoXTElOS19TVEFUVVNfVU5TUEVDSUZJRUQQABIUChBMSU5LX1NUQVRVU19PUEVOEAESFgoSTElOS19TVEFUVVNfQ0xPU0VEEAIq4gEKEUN1c3RvZHlDaGFuZ2VLaW5kEiMKH0NVU1RPRFlfQ0hBTkdFX0tJTkRfVU5TUEVDSUZJRUQQABIgChxDVVNUT0RZX0NIQU5HRV9LSU5EX0RFVEVDVEVEEAESIAocQ1VTVE9EWV9DSEFOR0VfS0lORF9SRUpFQ1RFRBACEiAKHENVU1RPRFlfQ0hBTkdFX0tJTkRfQURPUFRJTkcQAxIlCiFDVVNUT0RZX0NIQU5HRV9LSU5EX0FET1BUX1JFRlVTRUQQBBIbChdDVVNUT0RZX0NIQU5HRV9LSU5EX0FTSxAFKnoKEEN1c3RvZHlCcmVha0tpbmQSIgoeQ1VTVE9EWV9CUkVBS19LSU5EX1VOU1BFQ0lGSUVEEAASIQodQ1VTVE9EWV9CUkVBS19LSU5EX1NVUEVSU0VERUQQARIfChtDVVNUT0RZX0JSRUFLX0tJTkRfRElWRVJHRUQQAiqYAQoYTG9jYWxXb3JrUmVqZWN0aW9uU291cmNlEisKJ0xPQ0FMX1dPUktfUkVKRUNUSU9OX1NPVVJDRV9VTlNQRUNJRklFRBAAEikKJUxPQ0FMX1dPUktfUkVKRUNUSU9OX1NPVVJDRV9BRE1JU1NJT04QARIkCiBMT0NBTF9XT1JLX1JFSkVDVElPTl9TT1VSQ0VfU1lOQxACKnYKDFRyYW5zZmVyS2luZBIdChlUUkFOU0ZFUl9LSU5EX1VOU1BFQ0lGSUVEEAASFwoTVFJBTlNGRVJfS0lORF9ERUxUQRABEhYKElRSQU5TRkVSX0tJTkRfRlVMTBACEhYKElRSQU5TRkVSX0tJTkRfUFVTSBADMmQKE05vbW9zUnVudGltZVNlcnZpY2USTQoGSW52b2tlEiAubm9tb3MucnVudGltZS52Mi5SdW50aW1lUmVxdWVzdBohLm5vbW9zLnJ1bnRpbWUudjIuUnVudGltZVJlc3BvbnNlYgZwcm90bzM", [file_nomos_kernel_v1_kernel, file_nomos_kernel_v1_progress]);
|
|
3568
3568
|
var RuntimeRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 0);
|
|
3569
3569
|
var ApplicationCustodyEstablishedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 3);
|
|
3570
3570
|
var RuntimeResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 5);
|
|
3571
|
-
var
|
|
3572
|
-
var
|
|
3573
|
-
var
|
|
3574
|
-
var
|
|
3575
|
-
var
|
|
3576
|
-
var
|
|
3577
|
-
var
|
|
3578
|
-
var
|
|
3579
|
-
var
|
|
3580
|
-
var
|
|
3581
|
-
var
|
|
3582
|
-
var
|
|
3583
|
-
var
|
|
3584
|
-
var
|
|
3585
|
-
var
|
|
3586
|
-
var
|
|
3587
|
-
var
|
|
3588
|
-
var
|
|
3589
|
-
var
|
|
3590
|
-
var
|
|
3591
|
-
var
|
|
3592
|
-
var
|
|
3593
|
-
var
|
|
3594
|
-
var
|
|
3595
|
-
var
|
|
3596
|
-
var
|
|
3597
|
-
var
|
|
3598
|
-
var
|
|
3599
|
-
var
|
|
3600
|
-
var
|
|
3601
|
-
var
|
|
3602
|
-
var
|
|
3603
|
-
var
|
|
3604
|
-
var
|
|
3605
|
-
var
|
|
3606
|
-
var
|
|
3607
|
-
var
|
|
3608
|
-
var
|
|
3609
|
-
var
|
|
3610
|
-
var
|
|
3571
|
+
var RemoteGeneratedOfferAcceptedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 7);
|
|
3572
|
+
var CustodyOfferBatchRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 14);
|
|
3573
|
+
var CustodyIntentOfferSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 15);
|
|
3574
|
+
var CustodyInlineOffersSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 16);
|
|
3575
|
+
var CustodySessionCandidateSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 17);
|
|
3576
|
+
var CustodyOfferBatchResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 18);
|
|
3577
|
+
var RuntimeFailureSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 28);
|
|
3578
|
+
var DiagnosticAttributeSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 29);
|
|
3579
|
+
var ConnectedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 31);
|
|
3580
|
+
var WorkspaceSummarySchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 34);
|
|
3581
|
+
var WorkspaceListSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 35);
|
|
3582
|
+
var WorkspaceStatusSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 37);
|
|
3583
|
+
var WorkspaceSnapshotSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 39);
|
|
3584
|
+
var SyncWorkspaceResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 41);
|
|
3585
|
+
var RuntimeTransportFailureSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 42);
|
|
3586
|
+
var SyncPhaseTimingsSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 43);
|
|
3587
|
+
var StartAutoSyncRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 44);
|
|
3588
|
+
var AutoSyncStartedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 45);
|
|
3589
|
+
var AutoSyncStoppedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 47);
|
|
3590
|
+
var WatchStartedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 49);
|
|
3591
|
+
var WatchStoppedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 51);
|
|
3592
|
+
var DomainPreparedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 53);
|
|
3593
|
+
var ModelDifferenceSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 58);
|
|
3594
|
+
var ModelReviewSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 59);
|
|
3595
|
+
var ModelLifecycleResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 60);
|
|
3596
|
+
var CustodyBreakResolvedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 62);
|
|
3597
|
+
var RealmClosedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 64);
|
|
3598
|
+
var DeadLetterResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 69);
|
|
3599
|
+
var DeadLetterListSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 70);
|
|
3600
|
+
var DeadLetterEntrySchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 71);
|
|
3601
|
+
var DeadLetterRetrySchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 72);
|
|
3602
|
+
var DeadLetterDiscardSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 73);
|
|
3603
|
+
var RuntimeEventSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 74);
|
|
3604
|
+
var RuntimeReadySchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 75);
|
|
3605
|
+
var WatchChangedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 76);
|
|
3606
|
+
var SyncCompletedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 77);
|
|
3607
|
+
var LinkChangedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 78);
|
|
3608
|
+
var CustodyChangedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 80);
|
|
3609
|
+
var LocalWorkRejectedSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 81);
|
|
3610
|
+
var CustodySupersessionSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 82);
|
|
3611
|
+
var CustodyBreakSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 83);
|
|
3612
|
+
var RejectedLocalIntentSchema = /* @__PURE__ */ messageDesc(file_nomos_runtime_v2_runtime, 84);
|
|
3611
3613
|
var WorkspaceResidencySchema = /* @__PURE__ */ enumDesc(file_nomos_runtime_v2_runtime, 1);
|
|
3612
3614
|
var WorkspaceResidency = /* @__PURE__ */ tsEnum(WorkspaceResidencySchema);
|
|
3613
3615
|
var WorkspaceSyncPostureSchema = /* @__PURE__ */ enumDesc(file_nomos_runtime_v2_runtime, 2);
|
|
@@ -4829,6 +4831,18 @@ function createWebviewRunner({ post: post2, postFrame: postFrame2, openRealm: op
|
|
|
4829
4831
|
})
|
|
4830
4832
|
});
|
|
4831
4833
|
}
|
|
4834
|
+
case "workspaceStatus": {
|
|
4835
|
+
const command = request.command.value;
|
|
4836
|
+
const record = pickSession({ session: command.session });
|
|
4837
|
+
const head = await (await liveHolon(record)).head();
|
|
4838
|
+
return runtimeResponse(request, {
|
|
4839
|
+
case: "workspaceStatus",
|
|
4840
|
+
value: create(WorkspaceStatusSchema, {
|
|
4841
|
+
workspace: record.workspace,
|
|
4842
|
+
...typeof head === "string" && head.length > 0 ? { head } : {}
|
|
4843
|
+
})
|
|
4844
|
+
});
|
|
4845
|
+
}
|
|
4832
4846
|
case "syncWorkspace": {
|
|
4833
4847
|
const command = request.command.value;
|
|
4834
4848
|
const record = pickSession({ session: command.session });
|
|
@@ -5019,6 +5033,40 @@ function createWebviewRunner({ post: post2, postFrame: postFrame2, openRealm: op
|
|
|
5019
5033
|
})
|
|
5020
5034
|
});
|
|
5021
5035
|
}
|
|
5036
|
+
case "remoteGeneratedOffer": {
|
|
5037
|
+
const command = request.command.value;
|
|
5038
|
+
if (!command.call || command.call.body.case !== "callUsda") {
|
|
5039
|
+
throw new Error(
|
|
5040
|
+
"Runtime v2 remote generated offer contains no canonical USDA call"
|
|
5041
|
+
);
|
|
5042
|
+
}
|
|
5043
|
+
const record = pickSession({ session: command.sourceSession });
|
|
5044
|
+
const holon = await liveHolon(record);
|
|
5045
|
+
if (typeof holon.offerRemoteGeneratedCall !== "function") {
|
|
5046
|
+
throw new Error(
|
|
5047
|
+
"connected holon does not expose remote generated offers"
|
|
5048
|
+
);
|
|
5049
|
+
}
|
|
5050
|
+
const result = plainObject(await holon.offerRemoteGeneratedCall({
|
|
5051
|
+
target: command.targetWorkspace,
|
|
5052
|
+
actor: command.actor,
|
|
5053
|
+
authorSecret: b64(command.authorSecret),
|
|
5054
|
+
authToken: new TextDecoder().decode(command.authToken),
|
|
5055
|
+
call: {
|
|
5056
|
+
domain: command.call.domain,
|
|
5057
|
+
directive: command.call.directive,
|
|
5058
|
+
canonicalUsda: command.call.body.value,
|
|
5059
|
+
routingCandidates: []
|
|
5060
|
+
}
|
|
5061
|
+
})) ?? {};
|
|
5062
|
+
return runtimeResponse(request, {
|
|
5063
|
+
case: "remoteGeneratedOffer",
|
|
5064
|
+
value: create(RemoteGeneratedOfferAcceptedSchema, {
|
|
5065
|
+
workspace: typeof result.workspace === "string" ? result.workspace : command.targetWorkspace,
|
|
5066
|
+
head: typeof result.head === "string" ? result.head : ""
|
|
5067
|
+
})
|
|
5068
|
+
});
|
|
5069
|
+
}
|
|
5022
5070
|
case "resolveCustodyBreak": {
|
|
5023
5071
|
const command = request.command.value;
|
|
5024
5072
|
const decision = (() => {
|
|
@@ -7246,7 +7294,8 @@ function nmsInternalEncodeTypedProviderCall(operation, requestPrefix = "browser"
|
|
|
7246
7294
|
}));
|
|
7247
7295
|
const query = operation.case === "query" ? operation.value.query : void 0;
|
|
7248
7296
|
const custody = operation.case === "custody" ? operation.value.operation : void 0;
|
|
7249
|
-
const
|
|
7297
|
+
const offeredIntent = operation.case === "offer" ? operation.value.intent.case : void 0;
|
|
7298
|
+
const detail = query?.case === "named" ? `query:named:${String(query.value.operation)}` : query?.case ? `query:${query.case}` : custody?.case ? `custody:${custody.case}` : offeredIntent ? `offer:${offeredIntent}` : operation.case || "empty";
|
|
7250
7299
|
return { requestId, mode: operation.case || "empty", detail, bytes, encodeMs: monotonicMs() - started };
|
|
7251
7300
|
}
|
|
7252
7301
|
function nmsInternalDecodeTypedProviderResponse(bytes, requestId) {
|
|
@@ -7671,8 +7720,13 @@ function createWasmEnginePlane({ span } = {}) {
|
|
|
7671
7720
|
wsContents.set(name, new File(bytes));
|
|
7672
7721
|
},
|
|
7673
7722
|
readWsFile(name) {
|
|
7674
|
-
const
|
|
7675
|
-
|
|
7723
|
+
const parts = String(name).split("/").filter(Boolean);
|
|
7724
|
+
let node = wsDirNode ?? void 0;
|
|
7725
|
+
for (const part of parts) {
|
|
7726
|
+
if (!(node instanceof Directory)) return null;
|
|
7727
|
+
node = node.contents.get(part);
|
|
7728
|
+
}
|
|
7729
|
+
return node instanceof File ? node.data : null;
|
|
7676
7730
|
},
|
|
7677
7731
|
memBytes() {
|
|
7678
7732
|
return ex ? ex.memory.buffer.byteLength : 0;
|
|
@@ -7758,6 +7812,11 @@ function createWasmEnginePlane({ span } = {}) {
|
|
|
7758
7812
|
}
|
|
7759
7813
|
})
|
|
7760
7814
|
});
|
|
7815
|
+
if (response.outcome.case === "failure") {
|
|
7816
|
+
throw new Error(
|
|
7817
|
+
`${response.outcome.value.code}: ${response.outcome.value.message}`
|
|
7818
|
+
);
|
|
7819
|
+
}
|
|
7761
7820
|
if (response.outcome.case !== "custody" || response.outcome.value.operation.case !== "packDelta") return null;
|
|
7762
7821
|
const pack = response.outcome.value.operation.value.pack;
|
|
7763
7822
|
return pack.length ? pack : null;
|
|
@@ -8163,6 +8222,7 @@ function createModelLifecycleOfferRequest(target, args) {
|
|
|
8163
8222
|
rng: args.capturedPorts.rng,
|
|
8164
8223
|
deferProjection: args.deferProjection === true,
|
|
8165
8224
|
spans: args.spans === true,
|
|
8225
|
+
prepareOnly: args.prepareOnly === true,
|
|
8166
8226
|
sequence: BigInt(args.sequence),
|
|
8167
8227
|
clock: create(CapturedClockSchema, {
|
|
8168
8228
|
physicalMillis: BigInt(args.capturedPorts.clock.physical),
|
|
@@ -9335,7 +9395,7 @@ function presentCanonicalCustodyConvergence(convergence, context) {
|
|
|
9335
9395
|
endpoint: `/v2/workspaces/${context.workspace}`,
|
|
9336
9396
|
status: 0,
|
|
9337
9397
|
refused: false,
|
|
9338
|
-
error: String(convergence.error instanceof Error ? convergence.error.message : convergence.error).slice(0,
|
|
9398
|
+
error: String(convergence.error instanceof Error ? convergence.error.message : convergence.error).slice(0, 1200)
|
|
9339
9399
|
};
|
|
9340
9400
|
return {
|
|
9341
9401
|
result: {
|
|
@@ -9413,7 +9473,10 @@ async function convergeCanonicalCustody(options) {
|
|
|
9413
9473
|
return { kind: "custodyBreak", custodyBreak: converged.custodyBreak };
|
|
9414
9474
|
}
|
|
9415
9475
|
pulled = converged.upToDate !== true;
|
|
9416
|
-
} catch {
|
|
9476
|
+
} catch (error) {
|
|
9477
|
+
console.error(
|
|
9478
|
+
`[nomos-sync-convergence] remote=${remoteHead} base=${syncedBase ?? "none"}: ` + (error instanceof Error ? error.message : String(error))
|
|
9479
|
+
);
|
|
9417
9480
|
diverged = true;
|
|
9418
9481
|
}
|
|
9419
9482
|
}
|
|
@@ -9861,6 +9924,16 @@ function prepareManagedPromotion(report, candidateHash, domain, opts = {}) {
|
|
|
9861
9924
|
error: `the package-wide report does not cover the generated business area '${domain}'`
|
|
9862
9925
|
};
|
|
9863
9926
|
}
|
|
9927
|
+
const dispositions = report.dispositions;
|
|
9928
|
+
const changesStableIdentity = dispositions !== void 0 && (dispositions.retired.length > 0 || Object.keys(dispositions.retyped).length > 0 || Object.keys(dispositions.rebinds).length > 0);
|
|
9929
|
+
if (changesStableIdentity && !acceptanceReason) {
|
|
9930
|
+
return {
|
|
9931
|
+
ok: false,
|
|
9932
|
+
stage: "acceptance",
|
|
9933
|
+
report,
|
|
9934
|
+
error: "the current-frontier transition changes stable business identities and needs an attributed acceptance reason"
|
|
9935
|
+
};
|
|
9936
|
+
}
|
|
9864
9937
|
const preflight = {
|
|
9865
9938
|
candidateHash,
|
|
9866
9939
|
// A package may be reached through any one of its generated domain clients. The
|
|
@@ -14666,8 +14739,24 @@ function firstDeviceDelegationPayload(route, certificate, typedPayload) {
|
|
|
14666
14739
|
if (declared.has("delegationCertificate")) {
|
|
14667
14740
|
return { delegationCertificate: typedPayload };
|
|
14668
14741
|
}
|
|
14669
|
-
throw new
|
|
14670
|
-
`Nomos application route '${route.domain}${route.path}' does not declare the typed 'delegationCertificate' contract
|
|
14742
|
+
throw new NomosClientError(
|
|
14743
|
+
`Nomos application route '${route.domain}${route.path}' does not declare the typed 'delegationCertificate' contract`,
|
|
14744
|
+
{
|
|
14745
|
+
code: "nomos.application.contract_missing",
|
|
14746
|
+
operation: "enrollFirstDevice",
|
|
14747
|
+
recommendedAction: NomosRecommendedAction.redeployLaw,
|
|
14748
|
+
info: {
|
|
14749
|
+
code: "nomos.application.contract_missing",
|
|
14750
|
+
message: `Nomos application route '${route.domain}${route.path}' does not declare the typed 'delegationCertificate' contract`,
|
|
14751
|
+
component: "nomos.application",
|
|
14752
|
+
domain: route.domain,
|
|
14753
|
+
operation: "enrollFirstDevice",
|
|
14754
|
+
attributes: {
|
|
14755
|
+
"nomos.application.missing_contract": "delegationCertificate",
|
|
14756
|
+
"nomos.recovery.action": "repeat-parent-authorized-birth"
|
|
14757
|
+
}
|
|
14758
|
+
}
|
|
14759
|
+
}
|
|
14671
14760
|
);
|
|
14672
14761
|
}
|
|
14673
14762
|
var GIT_OBJECT_ID = /^[0-9a-f]{40}$/;
|
|
@@ -14685,7 +14774,7 @@ function jwtClaimOf(token, claim) {
|
|
|
14685
14774
|
}
|
|
14686
14775
|
}
|
|
14687
14776
|
function createGovernanceOffers(ctx) {
|
|
14688
|
-
const { offerDirective, offerCall, offerModelLifecycle, serialize, queryById, queryRows, attestationSignKernel, _fetch, base, workspace, deviceSecret, authHeaders, receivingGroupNameOf: receivingGroupNameOf2, sha256hexBytes: sha256hexBytes2, bytesUnb64: bytesUnb642, birthCertificateLawPayload, actorForShareQuote: actorForShareQuote2, installedInterfaceInner, mintKeylessDelegation: mintKeylessDelegation2, signWorkspaceOffer, resolveFrameworkRoute } = ctx;
|
|
14777
|
+
const { offerDirective, offerCall, offerModelLifecycle, serialize, queryById, queryRows, attestationSignKernel, _fetch, base, workspace, deviceSecret, authHeaders, connectionAuthToken, connectionFrameworkCalls, receivingGroupNameOf: receivingGroupNameOf2, sha256hexBytes: sha256hexBytes2, bytesUnb64: bytesUnb642, birthCertificateLawPayload, actorForShareQuote: actorForShareQuote2, installedInterfaceInner, mintKeylessDelegation: mintKeylessDelegation2, signWorkspaceOffer, resolveFrameworkRoute } = ctx;
|
|
14689
14778
|
const g = {
|
|
14690
14779
|
/**
|
|
14691
14780
|
* AUTHOR a SIGNED governance/framework intent locally and return the sealed offer bytes (base64) ready to
|
|
@@ -14790,6 +14879,54 @@ function createGovernanceOffers(ctx) {
|
|
|
14790
14879
|
});
|
|
14791
14880
|
return g.postGovernanceOffer({ directiveId: call.directive, intentBytes: sealed.intentBytes, ws: parent, authToken, domain: call.domain });
|
|
14792
14881
|
},
|
|
14882
|
+
/**
|
|
14883
|
+
* Offer one exact compiler-generated call to another workspace without
|
|
14884
|
+
* mounting or replaying that target locally. The source holon's kernel
|
|
14885
|
+
* signs only the target-kernel-prepared USDA; the host receives neither a
|
|
14886
|
+
* tenant object nor authority to invent an operation.
|
|
14887
|
+
*/
|
|
14888
|
+
offerRemoteGeneratedCall: async ({
|
|
14889
|
+
call,
|
|
14890
|
+
target,
|
|
14891
|
+
actor,
|
|
14892
|
+
authorSecret,
|
|
14893
|
+
authToken
|
|
14894
|
+
}) => {
|
|
14895
|
+
const signingSecret = authorSecret || deviceSecret;
|
|
14896
|
+
if (!target) throw new TypeError("a remote generated offer requires its target workspace");
|
|
14897
|
+
if (!actor) throw new TypeError("a remote generated offer requires its attributable actor");
|
|
14898
|
+
if (!signingSecret) throw new TypeError("a remote generated offer requires an enrolled device key");
|
|
14899
|
+
const sealed = await signWorkspaceOffer({
|
|
14900
|
+
target,
|
|
14901
|
+
call,
|
|
14902
|
+
actor,
|
|
14903
|
+
authorSecret: signingSecret,
|
|
14904
|
+
authToken
|
|
14905
|
+
});
|
|
14906
|
+
const verdict = await g.postGovernanceOffer({
|
|
14907
|
+
directiveId: call.directive,
|
|
14908
|
+
intentBytes: sealed.intentBytes,
|
|
14909
|
+
ws: target,
|
|
14910
|
+
authToken,
|
|
14911
|
+
domain: call.domain
|
|
14912
|
+
});
|
|
14913
|
+
if (!verdict.ok || verdict.body && typeof verdict.body === "object" && (verdict.body.ok === false || verdict.body.refused)) {
|
|
14914
|
+
const detail = typeof verdict.body === "string" ? verdict.body : JSON.stringify(verdict.body ?? "remote offer refused");
|
|
14915
|
+
throw new NomosClientError(
|
|
14916
|
+
`Remote generated call '${call.domain}/${call.directive}' was refused by '${target}': ${detail.slice(0, 500)}`,
|
|
14917
|
+
{
|
|
14918
|
+
code: "nomos.offer.remote_refused",
|
|
14919
|
+
workspace: target,
|
|
14920
|
+
operation: call.directive,
|
|
14921
|
+
recommendedAction: NomosRecommendedAction.retry,
|
|
14922
|
+
info: verdict.errorInfo
|
|
14923
|
+
}
|
|
14924
|
+
);
|
|
14925
|
+
}
|
|
14926
|
+
const body = verdict.body && typeof verdict.body === "object" ? verdict.body : void 0;
|
|
14927
|
+
const head = verdict.head ?? (typeof body?.head === "string" ? body.head : "");
|
|
14928
|
+
return { workspace: target, head };
|
|
14929
|
+
},
|
|
14793
14930
|
/**
|
|
14794
14931
|
* Derive the device key's base64 PUBLIC half from its base64 SECRET seed, IN the local wasm (the
|
|
14795
14932
|
* kernel `attestation_sign` op returns the public half; the secret never leaves this process).
|
|
@@ -14976,7 +15113,10 @@ function createGovernanceOffers(ctx) {
|
|
|
14976
15113
|
*/
|
|
14977
15114
|
ensureParentSignerEnrollment: async (args = {}) => {
|
|
14978
15115
|
const { parent, device, domain, grantedAt, authToken, idToken, signIn, verifiedVia, validFromEpoch = 0, frameworkCalls } = args;
|
|
14979
|
-
const
|
|
15116
|
+
const effectiveAuthToken = authToken || connectionAuthToken();
|
|
15117
|
+
const effectiveIdToken = idToken || effectiveAuthToken;
|
|
15118
|
+
const effectiveFrameworkCalls = frameworkCalls ?? connectionFrameworkCalls;
|
|
15119
|
+
const keyless = !!(effectiveIdToken || typeof signIn === "function");
|
|
14980
15120
|
const directiveId = args.directiveId || (keyless ? "enrollFirstDevice" : "enrollSigner");
|
|
14981
15121
|
const principal = canonicalPrincipal(args.principal);
|
|
14982
15122
|
let publicKey = device && device.public || args.publicKey;
|
|
@@ -14986,13 +15126,13 @@ function createGovernanceOffers(ctx) {
|
|
|
14986
15126
|
if (!publicKey && authorSecret) publicKey = await g.devicePublicOf(authorSecret);
|
|
14987
15127
|
if (!publicKey) throw new Error("ensureParentSignerEnrollment requires the device `publicKey` (pass `device`/`publicKey`, or a secret it can be derived from)");
|
|
14988
15128
|
const keyHash = await sha256hexBytes2(bytesUnb642(publicKey));
|
|
14989
|
-
const posture = await g.parentSignerEnrollment({ parent, principal, keyHash, authToken });
|
|
15129
|
+
const posture = await g.parentSignerEnrollment({ parent, principal, keyHash, authToken: effectiveAuthToken });
|
|
14990
15130
|
if (posture.enrolled) return { parent, principal, keyHash, enrolled: true, repaired: false, checkedAt: posture.checkedAt };
|
|
14991
15131
|
if (posture.revoked) {
|
|
14992
15132
|
throw new Error(`ensureParentSignerEnrollment: key ${keyHash.slice(0, 16)}\u2026 was REVOKED on ${parent} (${signerObjectOf(principal)}#signer is remove-wins) \u2014 mint a new device key and enroll it; a revoked key cannot be lawfully re-enrolled [nomos.authz.signer_revoked]`);
|
|
14993
15133
|
}
|
|
14994
15134
|
if (!authorSecret) throw new Error("ensureParentSignerEnrollment: the signer tuple is absent on the parent and no `authorSecret`/`device.secret` was supplied to lawfully re-enroll it");
|
|
14995
|
-
const token = keyless ? typeof signIn === "function" ? await signIn(keyHash) :
|
|
15135
|
+
const token = keyless ? typeof signIn === "function" ? await signIn(keyHash) : effectiveIdToken : null;
|
|
14996
15136
|
let resolved = domain ? { domain, directiveId } : null;
|
|
14997
15137
|
let enrollmentRoute;
|
|
14998
15138
|
if (!resolved && parent === workspace && typeof installedInterfaceInner === "function") {
|
|
@@ -15017,7 +15157,7 @@ function createGovernanceOffers(ctx) {
|
|
|
15017
15157
|
}
|
|
15018
15158
|
resolved = { domain: enrollmentRoute.domain, directiveId };
|
|
15019
15159
|
}
|
|
15020
|
-
if (!resolved) resolved = await g.discoverDirectiveDomain({ ws: parent, directiveId, authToken });
|
|
15160
|
+
if (!resolved) resolved = await g.discoverDirectiveDomain({ ws: parent, directiveId, authToken: effectiveAuthToken });
|
|
15021
15161
|
let delegationPayload;
|
|
15022
15162
|
if (keyless) {
|
|
15023
15163
|
if (typeof mintKeylessDelegation2 !== "function") throw new Error("ensureParentSignerEnrollment: the keyless lane needs a signing holon (mintKeylessDelegation) to build the delegation cert \u2014 open the holon with a device key");
|
|
@@ -15039,12 +15179,29 @@ function createGovernanceOffers(ctx) {
|
|
|
15039
15179
|
}
|
|
15040
15180
|
const issuerClaim = verifiedVia || (token ? jwtClaimOf(token, "iss") : void 0);
|
|
15041
15181
|
const payload = keyless ? { keyHash, verifiedVia: issuerClaim, validFromEpoch, grantedAt: (/* @__PURE__ */ new Date()).toISOString(), idpToken: token, ...delegationPayload ?? {} } : { keyHash, grantedBy: principal, grantedAt: typeof grantedAt === "number" ? grantedAt : Date.now() };
|
|
15042
|
-
if (
|
|
15043
|
-
|
|
15182
|
+
if (effectiveFrameworkCalls === void 0) {
|
|
15183
|
+
const message = "The installed client cannot author the typed enrollFirstDevice call required to seat this device";
|
|
15184
|
+
throw new NomosClientError(message, {
|
|
15185
|
+
code: "nomos.application.contract_missing",
|
|
15186
|
+
workspace: parent,
|
|
15187
|
+
operation: "enrollFirstDevice",
|
|
15188
|
+
recommendedAction: NomosRecommendedAction.redeployLaw,
|
|
15189
|
+
info: {
|
|
15190
|
+
code: "nomos.application.contract_missing",
|
|
15191
|
+
message,
|
|
15192
|
+
component: "nomos.application",
|
|
15193
|
+
workspace: parent,
|
|
15194
|
+
operation: "enrollFirstDevice",
|
|
15195
|
+
attributes: {
|
|
15196
|
+
"nomos.application.missing_contract": "generatedFrameworkCalls.identity.enrollFirstDevice",
|
|
15197
|
+
"nomos.recovery.action": "request-parent-authorized-device-recovery"
|
|
15198
|
+
}
|
|
15199
|
+
}
|
|
15200
|
+
});
|
|
15044
15201
|
}
|
|
15045
15202
|
const call = keyless ? (() => {
|
|
15046
15203
|
if (typeof issuerClaim !== "string" || !issuerClaim || !token) throw new Error("verified first-device enrollment needs its typed issuer and identity proof");
|
|
15047
|
-
return
|
|
15204
|
+
return effectiveFrameworkCalls.identity.enrollFirstDevice({
|
|
15048
15205
|
domain: resolved.domain,
|
|
15049
15206
|
workspace: parent,
|
|
15050
15207
|
keyHash,
|
|
@@ -15054,7 +15211,7 @@ function createGovernanceOffers(ctx) {
|
|
|
15054
15211
|
idpToken: token,
|
|
15055
15212
|
...delegationPayload ?? {}
|
|
15056
15213
|
});
|
|
15057
|
-
})() :
|
|
15214
|
+
})() : effectiveFrameworkCalls.identity.enrollSigner({
|
|
15058
15215
|
domain: resolved.domain,
|
|
15059
15216
|
workspace: parent,
|
|
15060
15217
|
keyHash,
|
|
@@ -15066,7 +15223,7 @@ function createGovernanceOffers(ctx) {
|
|
|
15066
15223
|
const res = await offerCall(call, { actor: principal, signWith: authorSecret });
|
|
15067
15224
|
verdict = { ok: true, status: 200, body: res };
|
|
15068
15225
|
} else {
|
|
15069
|
-
const bearer =
|
|
15226
|
+
const bearer = effectiveAuthToken || token;
|
|
15070
15227
|
const sealed = await signWorkspaceOffer({
|
|
15071
15228
|
target: parent,
|
|
15072
15229
|
call,
|
|
@@ -15451,13 +15608,17 @@ function installedLawOfRows(rows) {
|
|
|
15451
15608
|
}
|
|
15452
15609
|
return out;
|
|
15453
15610
|
}
|
|
15454
|
-
function lawStatusOf(installed, clientHash) {
|
|
15611
|
+
function lawStatusOf(installed, clientHash, current) {
|
|
15455
15612
|
const known = Array.isArray(installed);
|
|
15456
15613
|
const list = known ? installed : [];
|
|
15614
|
+
const currentSupplied = current !== void 0;
|
|
15615
|
+
const currentKnown = currentSupplied ? Array.isArray(current) : known;
|
|
15616
|
+
const serving = currentSupplied ? Array.isArray(current) ? current : [] : list;
|
|
15457
15617
|
return {
|
|
15458
15618
|
installed: list,
|
|
15459
15619
|
...clientHash !== void 0 ? { clientHash } : {},
|
|
15460
|
-
|
|
15620
|
+
...currentSupplied ? { current } : {},
|
|
15621
|
+
drifted: !!(clientHash !== void 0 && currentKnown && !serving.includes(clientHash))
|
|
15461
15622
|
};
|
|
15462
15623
|
}
|
|
15463
15624
|
function lawDriftMessage({
|
|
@@ -15706,6 +15867,25 @@ ${String(commit).toLowerCase()}`;
|
|
|
15706
15867
|
}
|
|
15707
15868
|
};
|
|
15708
15869
|
};
|
|
15870
|
+
if (!restoreFrom && !mountInPlace && !localOnly && !salvageOnly && !recover) {
|
|
15871
|
+
const _coldSnapshot = span(
|
|
15872
|
+
"receive",
|
|
15873
|
+
"boot: fetch checkpointed custody snapshot",
|
|
15874
|
+
"cfetch"
|
|
15875
|
+
);
|
|
15876
|
+
try {
|
|
15877
|
+
const response = await _fetch(
|
|
15878
|
+
`${base}/v2/workspaces/${workspace}/snapshot`,
|
|
15879
|
+
{ headers: authHeaders }
|
|
15880
|
+
);
|
|
15881
|
+
if (response.ok && response.headers.get("x-nomos-layout") === "local-custody-v3") {
|
|
15882
|
+
restoreFrom = new Uint8Array(await response.arrayBuffer());
|
|
15883
|
+
}
|
|
15884
|
+
} catch {
|
|
15885
|
+
} finally {
|
|
15886
|
+
_coldSnapshot.end({ restored: !!restoreFrom });
|
|
15887
|
+
}
|
|
15888
|
+
}
|
|
15709
15889
|
const repoArg = `/work/ws/${workspace}`;
|
|
15710
15890
|
const provider = kernelProvider || createWasmKernelProvider({ span });
|
|
15711
15891
|
const readRemoteInfo = async () => ({
|
|
@@ -15975,10 +16155,12 @@ ${String(commit).toLowerCase()}`;
|
|
|
15975
16155
|
const watchStops = /* @__PURE__ */ new Set();
|
|
15976
16156
|
let installedLawRowsCache;
|
|
15977
16157
|
let installedLawCurrentCache;
|
|
16158
|
+
let installedLawCurrentError = "";
|
|
15978
16159
|
let installedInterfaceCache;
|
|
15979
16160
|
const invalidateInstalledLawMetadata = () => {
|
|
15980
16161
|
installedLawRowsCache = void 0;
|
|
15981
16162
|
installedLawCurrentCache = void 0;
|
|
16163
|
+
installedLawCurrentError = "";
|
|
15982
16164
|
installedInterfaceCache = void 0;
|
|
15983
16165
|
};
|
|
15984
16166
|
let _disposed = false;
|
|
@@ -16025,17 +16207,19 @@ ${String(commit).toLowerCase()}`;
|
|
|
16025
16207
|
scheduleMaintenanceSoon();
|
|
16026
16208
|
};
|
|
16027
16209
|
const prepareDomainReady = async (domain, packageHash, directiveId) => {
|
|
16028
|
-
|
|
16210
|
+
const currentPackage = currentLawInner()?.[domain];
|
|
16211
|
+
const servingPackage = typeof currentPackage === "string" && currentPackage.length > 0 ? currentPackage : packageHash;
|
|
16212
|
+
requestDomainMaintenance(domain, servingPackage, directiveId);
|
|
16029
16213
|
const readiness = await prepareDomainUntilReady({
|
|
16030
16214
|
domain,
|
|
16031
|
-
packageHash,
|
|
16215
|
+
packageHash: servingPackage,
|
|
16032
16216
|
directiveId,
|
|
16033
16217
|
warm: () => serialize(
|
|
16034
16218
|
async () => namedQueryTyped(QueryOperation.WARM, {
|
|
16035
16219
|
interactiveOnly: true,
|
|
16036
16220
|
requestedDomain: domain,
|
|
16037
16221
|
...directiveId ? { requestedDirective: directiveId } : {},
|
|
16038
|
-
requestedPackage:
|
|
16222
|
+
requestedPackage: servingPackage
|
|
16039
16223
|
}),
|
|
16040
16224
|
"prepare generated domain",
|
|
16041
16225
|
false
|
|
@@ -16048,7 +16232,7 @@ ${String(commit).toLowerCase()}`;
|
|
|
16048
16232
|
});
|
|
16049
16233
|
if (readiness.prepared) {
|
|
16050
16234
|
const index = _maintenanceTargets.findIndex(
|
|
16051
|
-
(target) => target.domain === domain && target.packageHash ===
|
|
16235
|
+
(target) => target.domain === domain && target.packageHash === servingPackage && target.directiveId === directiveId
|
|
16052
16236
|
);
|
|
16053
16237
|
if (index >= 0) _maintenanceTargets.splice(index, 1);
|
|
16054
16238
|
}
|
|
@@ -16723,7 +16907,9 @@ ${String(commit).toLowerCase()}`;
|
|
|
16723
16907
|
const answer = namedQueryTyped(QueryOperation.INSTALLED_LAW);
|
|
16724
16908
|
if (Array.isArray(answer?.domains)) {
|
|
16725
16909
|
const currentLaw = answer?.currentLaw;
|
|
16726
|
-
|
|
16910
|
+
if (currentLaw && typeof currentLaw === "object" && !Array.isArray(currentLaw)) {
|
|
16911
|
+
installedLawCurrentCache = currentLaw;
|
|
16912
|
+
}
|
|
16727
16913
|
installedLawRowsCache = answer.domains.map(
|
|
16728
16914
|
(domain) => ({
|
|
16729
16915
|
id: domain.installationId,
|
|
@@ -16767,21 +16953,36 @@ ${String(commit).toLowerCase()}`;
|
|
|
16767
16953
|
return installedLawRowsCache;
|
|
16768
16954
|
};
|
|
16769
16955
|
const currentLawInner = () => {
|
|
16770
|
-
installRowsInner();
|
|
16771
16956
|
if (installedLawCurrentCache !== void 0) return installedLawCurrentCache;
|
|
16772
16957
|
try {
|
|
16773
16958
|
const answer = namedQueryTyped(QueryOperation.CURRENT_LAW);
|
|
16774
16959
|
const current = answer?.keyMap ?? answer?.currentLaw ?? answer;
|
|
16775
|
-
|
|
16776
|
-
|
|
16777
|
-
|
|
16960
|
+
if (current && typeof current === "object" && !Array.isArray(current)) {
|
|
16961
|
+
installedLawCurrentError = "";
|
|
16962
|
+
installedLawCurrentCache = current;
|
|
16963
|
+
return installedLawCurrentCache;
|
|
16964
|
+
}
|
|
16965
|
+
installedLawCurrentError = "kernel current-law read returned no typed domain map";
|
|
16966
|
+
} catch (error) {
|
|
16967
|
+
installedLawCurrentError = String(
|
|
16968
|
+
error?.message || error || "kernel current-law read failed"
|
|
16969
|
+
);
|
|
16778
16970
|
}
|
|
16779
|
-
return
|
|
16971
|
+
return null;
|
|
16780
16972
|
};
|
|
16781
16973
|
const installedLawInner = () => {
|
|
16782
16974
|
const rows = installRowsInner();
|
|
16783
16975
|
return rows === null ? null : installedLawOfRows(rows);
|
|
16784
16976
|
};
|
|
16977
|
+
const currentLawHashesInner = () => {
|
|
16978
|
+
const current = currentLawInner();
|
|
16979
|
+
if (current === null) return null;
|
|
16980
|
+
return [...new Set(
|
|
16981
|
+
Object.values(current).filter(
|
|
16982
|
+
(identity) => typeof identity === "string" && identity.length > 0
|
|
16983
|
+
)
|
|
16984
|
+
)];
|
|
16985
|
+
};
|
|
16785
16986
|
const recomputeCompat = ({ silent = false } = {}) => {
|
|
16786
16987
|
if (!compatState) return null;
|
|
16787
16988
|
const installRows = installRowsInner();
|
|
@@ -16935,16 +17136,28 @@ ${String(commit).toLowerCase()}`;
|
|
|
16935
17136
|
);
|
|
16936
17137
|
}
|
|
16937
17138
|
let pack = null;
|
|
17139
|
+
const packErrors = [];
|
|
16938
17140
|
for (const base2 of bases) {
|
|
16939
17141
|
try {
|
|
16940
17142
|
pack = provider.packDelta(base2, head);
|
|
16941
|
-
} catch {
|
|
17143
|
+
} catch (error) {
|
|
17144
|
+
packErrors.push(`${base2 ?? "<full>"}: ${String(error)}`);
|
|
16942
17145
|
pack = null;
|
|
16943
17146
|
}
|
|
16944
17147
|
if (pack) break;
|
|
16945
17148
|
}
|
|
16946
|
-
if (!pack)
|
|
16947
|
-
|
|
17149
|
+
if (!pack) {
|
|
17150
|
+
const missingOid = packErrors.join(" ").match(/(?:object with id|find commit) ([0-9a-f]{40})/i)?.[1];
|
|
17151
|
+
const objectBytes = (oid) => ["nomos.git/objects", "objects", ".git/objects"].map((root) => {
|
|
17152
|
+
const bytes = provider.readWsFile(
|
|
17153
|
+
`${root}/${oid.slice(0, 2)}/${oid.slice(2)}`
|
|
17154
|
+
);
|
|
17155
|
+
return `${root}=${bytes?.byteLength ?? 0}B`;
|
|
17156
|
+
}).join(",");
|
|
17157
|
+
throw new Error(
|
|
17158
|
+
`the kernel could not build the candidate custody pack${packErrors.length === 0 ? "" : ` (${packErrors[0]})`}; head[${objectBytes(head)}]${missingOid ? `; missing[${objectBytes(missingOid)}]` : ""}`
|
|
17159
|
+
);
|
|
17160
|
+
}
|
|
16948
17161
|
await pushPack(
|
|
16949
17162
|
remote,
|
|
16950
17163
|
authHeaders,
|
|
@@ -18092,6 +18305,10 @@ ${String(commit).toLowerCase()}`;
|
|
|
18092
18305
|
error: "the generated model identity is missing"
|
|
18093
18306
|
};
|
|
18094
18307
|
}
|
|
18308
|
+
const currentHash = String(currentLawInner()?.[domain] ?? "");
|
|
18309
|
+
if (currentHash === candidateHash) {
|
|
18310
|
+
return { ok: true, stage: "already-current" };
|
|
18311
|
+
}
|
|
18095
18312
|
const candidateInstallation = (installRowsInner() ?? []).find(
|
|
18096
18313
|
(row) => row?.id === `domain-installation:${candidateHash}`
|
|
18097
18314
|
);
|
|
@@ -18105,23 +18322,8 @@ ${String(commit).toLowerCase()}`;
|
|
|
18105
18322
|
error: candidatePhase.length === 0 ? `model '${candidateHash}' is not staged in this workspace; deploy the generated USDA package before opening this application` : `model '${candidateHash}' is '${candidatePhase}', so it cannot become current`
|
|
18106
18323
|
};
|
|
18107
18324
|
}
|
|
18108
|
-
const currentHash = String(currentLawInner()?.[domain] ?? "");
|
|
18109
18325
|
if (candidatePhase === "Active") {
|
|
18110
|
-
|
|
18111
|
-
const readiness = await prepareDomainReady(domain, candidateHash);
|
|
18112
|
-
if (readiness.prepared !== true) {
|
|
18113
|
-
throw new Error(
|
|
18114
|
-
`the admitted model '${candidateHash}' authenticated '${domain}' USDA slice did not become ready (${readiness.reason} after ${readiness.quanta} maintenance quanta)`
|
|
18115
|
-
);
|
|
18116
|
-
}
|
|
18117
|
-
return { ok: true, stage: "already-current" };
|
|
18118
|
-
} catch (error) {
|
|
18119
|
-
return {
|
|
18120
|
-
ok: false,
|
|
18121
|
-
stage: "preflight",
|
|
18122
|
-
error: String(error?.message || error)
|
|
18123
|
-
};
|
|
18124
|
-
}
|
|
18326
|
+
return { ok: true, stage: "already-current" };
|
|
18125
18327
|
}
|
|
18126
18328
|
let report;
|
|
18127
18329
|
let transition;
|
|
@@ -18260,12 +18462,13 @@ ${String(commit).toLowerCase()}`;
|
|
|
18260
18462
|
);
|
|
18261
18463
|
const data = row?.data;
|
|
18262
18464
|
const domainKeys = Array.isArray(data?.["spec.domainKeys"]) ? data["spec.domainKeys"].map(String) : [];
|
|
18263
|
-
|
|
18465
|
+
const exactSingleDomain = String(data?.["spec.domainHash"] ?? "") === candidateHash && String(currentLawInner()?.[domain] ?? "") === candidateHash && domainKeys.length === 0;
|
|
18466
|
+
if (!data || !domainKeys.includes(domain) && !exactSingleDomain) return null;
|
|
18264
18467
|
return {
|
|
18265
18468
|
hash: candidateHash,
|
|
18266
18469
|
phase: String(data["status.phase"] ?? ""),
|
|
18267
18470
|
dependencies: Array.isArray(data["spec.dependencies"]) ? data["spec.dependencies"].map(String) : [],
|
|
18268
|
-
domainKeys
|
|
18471
|
+
domainKeys: exactSingleDomain ? [domain] : domainKeys
|
|
18269
18472
|
};
|
|
18270
18473
|
};
|
|
18271
18474
|
const _nomosStageGeneratedModel = async (domain, candidateHash, lawUsdz, dependencies) => {
|
|
@@ -18289,14 +18492,10 @@ ${String(commit).toLowerCase()}`;
|
|
|
18289
18492
|
`generated model '${candidateHash}' has no USDZ transport asset`
|
|
18290
18493
|
);
|
|
18291
18494
|
}
|
|
18292
|
-
const
|
|
18293
|
-
const data = entry?.data;
|
|
18294
|
-
return String(data?.["status.phase"] ?? "") === "Active" && Array.isArray(data?.["spec.domainKeys"]) && data["spec.domainKeys"].map(String).includes(domain);
|
|
18295
|
-
});
|
|
18296
|
-
const priorHash = String(predecessor?.data?.["spec.domainHash"] ?? "");
|
|
18495
|
+
const priorHash = String(currentLawInner()?.[domain] ?? "");
|
|
18297
18496
|
if (!priorHash) {
|
|
18298
18497
|
throw new Error(
|
|
18299
|
-
`generated application cannot identify the active '${domain}' model it would supersede`
|
|
18498
|
+
`generated application cannot identify the active '${domain}' model it would supersede` + (installedLawCurrentError ? `: ${installedLawCurrentError}` : "")
|
|
18300
18499
|
);
|
|
18301
18500
|
}
|
|
18302
18501
|
const head = await offerDirective(
|
|
@@ -19987,6 +20186,8 @@ ${String(commit).toLowerCase()}`;
|
|
|
19987
20186
|
workspace,
|
|
19988
20187
|
deviceSecret,
|
|
19989
20188
|
authHeaders,
|
|
20189
|
+
connectionAuthToken: () => activeAuthToken,
|
|
20190
|
+
connectionFrameworkCalls: frameworkCalls,
|
|
19990
20191
|
receivingGroupNameOf,
|
|
19991
20192
|
sha256hexBytes,
|
|
19992
20193
|
bytesUnb64,
|
|
@@ -21390,6 +21591,7 @@ ${String(commit).toLowerCase()}`;
|
|
|
21390
21591
|
"application-open"
|
|
21391
21592
|
);
|
|
21392
21593
|
let requiredParentCustodyHead;
|
|
21594
|
+
let requiredDelegationKeyHash;
|
|
21393
21595
|
try {
|
|
21394
21596
|
if (spec.idToken || typeof spec.signIn === "function") {
|
|
21395
21597
|
const enrollment = await api.enrollFirstDevice({
|
|
@@ -21406,6 +21608,7 @@ ${String(commit).toLowerCase()}`;
|
|
|
21406
21608
|
enrollFirstDeviceCall: spec.enrollFirstDeviceCall
|
|
21407
21609
|
});
|
|
21408
21610
|
requiredParentCustodyHead = enrollment.verdict?.head;
|
|
21611
|
+
requiredDelegationKeyHash = enrollment.keyHash;
|
|
21409
21612
|
if (!requiredParentCustodyHead || !OID40_RE.test(requiredParentCustodyHead)) {
|
|
21410
21613
|
throw new Error(
|
|
21411
21614
|
`enrollFirstDevice at '${parent}' admitted without an exact custody head; refusing to prepare birth against an unbound resident frontier`
|
|
@@ -21456,9 +21659,16 @@ ${String(commit).toLowerCase()}`;
|
|
|
21456
21659
|
}
|
|
21457
21660
|
);
|
|
21458
21661
|
if (dq.ok) {
|
|
21459
|
-
const
|
|
21460
|
-
const
|
|
21461
|
-
|
|
21662
|
+
const response = await dq.json().catch(() => null);
|
|
21663
|
+
const rows = Array.isArray(response) ? response : response && Array.isArray(response.rows) ? response.rows : [];
|
|
21664
|
+
const hasExactDeviceDelegation = rows.some((row) => {
|
|
21665
|
+
if (!row || typeof row !== "object") return false;
|
|
21666
|
+
const data = row.data;
|
|
21667
|
+
if (!data || typeof data !== "object") return false;
|
|
21668
|
+
const fields = data;
|
|
21669
|
+
return fields.certificateParentKey === device.public && (requiredDelegationKeyHash === void 0 || fields.deviceKey === `key:${requiredDelegationKeyHash}`);
|
|
21670
|
+
});
|
|
21671
|
+
if (hasExactDeviceDelegation) {
|
|
21462
21672
|
sawDelegation = true;
|
|
21463
21673
|
break;
|
|
21464
21674
|
}
|
|
@@ -21469,7 +21679,7 @@ ${String(commit).toLowerCase()}`;
|
|
|
21469
21679
|
}
|
|
21470
21680
|
if (!sawDelegation) {
|
|
21471
21681
|
const err = new Error(
|
|
21472
|
-
`receiving-group setup: parent '${parent}' still holds NO SignerDelegation for '${owner}' after ${pollTimeoutMs}ms. enrollFirstDevice seated the device SIGNER, but the home cert chain's links[1] (the platform-signed delegation) never surfaced \u2014 the birth would
|
|
21682
|
+
`receiving-group setup: parent '${parent}' still holds NO SignerDelegation for '${owner}' after ${pollTimeoutMs}ms. enrollFirstDevice seated the device SIGNER, but the home cert chain's links[1] (the platform-signed delegation for device '${String(requiredDelegationKeyHash ?? "unknown").slice(0, 12)}\u2026') never surfaced \u2014 the birth would combine different device generations and fail its certificate chain. The enroll must record the keyless delegation (enrollFirstDevice.delegationCert) BEFORE birth. [ParentSignerDelegationMissing]`
|
|
21473
21683
|
);
|
|
21474
21684
|
err.code = "ParentSignerDelegationMissing";
|
|
21475
21685
|
throw err;
|
|
@@ -21683,7 +21893,22 @@ ${String(commit).toLowerCase()}`;
|
|
|
21683
21893
|
* lifecycle view: active = served now; superseded/retired = replayable, not served.
|
|
21684
21894
|
* `drifted` is true ONLY on the word of a successful read.
|
|
21685
21895
|
*/
|
|
21686
|
-
lawStatus: () => serialize(async () =>
|
|
21896
|
+
lawStatus: () => serialize(async () => {
|
|
21897
|
+
const currentLaw = currentLawInner();
|
|
21898
|
+
const current = currentLawHashesInner();
|
|
21899
|
+
const status = lawStatusOf(
|
|
21900
|
+
installedLawRowsCache === void 0 ? null : installedLawInner(),
|
|
21901
|
+
clientLawHash,
|
|
21902
|
+
current
|
|
21903
|
+
);
|
|
21904
|
+
console.error(
|
|
21905
|
+
`[nomos-law-status] workspace=${workspace} client=${status.clientHash ?? "unregistered"} current=${status.current?.join(",") ?? "unknown"} installed=${status.installed.join(",")} drifted=${status.drifted}`
|
|
21906
|
+
);
|
|
21907
|
+
return {
|
|
21908
|
+
...status,
|
|
21909
|
+
currentDomains: currentLaw === null ? null : Object.keys(currentLaw).sort()
|
|
21910
|
+
};
|
|
21911
|
+
}),
|
|
21687
21912
|
/**
|
|
21688
21913
|
* Register the BAKED law hash this client was generated under — the soft-warn lane:
|
|
21689
21914
|
* if the workspace's installed law doesn't carry it, ONE console.warn names the drift
|
|
@@ -21697,7 +21922,16 @@ ${String(commit).toLowerCase()}`;
|
|
|
21697
21922
|
"registerLawHash(hash) requires the generated client's baked law hash (the 64-hex sha256 of its package)"
|
|
21698
21923
|
);
|
|
21699
21924
|
clientLawHash = hash;
|
|
21700
|
-
const
|
|
21925
|
+
const currentLaw = currentLawInner();
|
|
21926
|
+
const current = currentLawHashesInner();
|
|
21927
|
+
const status = lawStatusOf(
|
|
21928
|
+
installedLawRowsCache === void 0 ? null : installedLawInner(),
|
|
21929
|
+
clientLawHash,
|
|
21930
|
+
current
|
|
21931
|
+
);
|
|
21932
|
+
console.error(
|
|
21933
|
+
`[nomos-law-status] workspace=${workspace} client=${status.clientHash ?? "unregistered"} current=${status.current?.join(",") ?? "unknown"} installed=${status.installed.join(",")} drifted=${status.drifted}`
|
|
21934
|
+
);
|
|
21701
21935
|
if (status.drifted && !warnedDrift) {
|
|
21702
21936
|
warnedDrift = true;
|
|
21703
21937
|
console.warn(
|
|
@@ -21705,11 +21939,14 @@ ${String(commit).toLowerCase()}`;
|
|
|
21705
21939
|
what: "connect",
|
|
21706
21940
|
workspace,
|
|
21707
21941
|
clientHash: hash,
|
|
21708
|
-
installed: status.installed
|
|
21942
|
+
installed: status.current ?? status.installed
|
|
21709
21943
|
})
|
|
21710
21944
|
);
|
|
21711
21945
|
}
|
|
21712
|
-
return
|
|
21946
|
+
return {
|
|
21947
|
+
...status,
|
|
21948
|
+
currentDomains: currentLaw === null ? null : Object.keys(currentLaw).sort()
|
|
21949
|
+
};
|
|
21713
21950
|
}),
|
|
21714
21951
|
/**
|
|
21715
21952
|
* THE COMPAT SUPERPOWER (#72b): the generated client factory hands over its baked `nomosCompat`
|
|
@@ -22288,7 +22525,7 @@ ${String(commit).toLowerCase()}`;
|
|
|
22288
22525
|
if (result?.offline === true || result?.pushFailed === true || result?.reconnectRequired === true)
|
|
22289
22526
|
return result;
|
|
22290
22527
|
const localHead = await serialize(async () => resolveBranchHead());
|
|
22291
|
-
if (localHead === syncedBase) return result;
|
|
22528
|
+
if (localHead === syncedBase && !discoverRemote) return result;
|
|
22292
22529
|
return api.sync({ admit, discoverRemote });
|
|
22293
22530
|
});
|
|
22294
22531
|
}
|
|
@@ -23142,6 +23379,33 @@ async function openRealm(opts = {}) {
|
|
|
23142
23379
|
rebindWatches(name, holon);
|
|
23143
23380
|
return holon;
|
|
23144
23381
|
}
|
|
23382
|
+
async function deviceIdentity(secret) {
|
|
23383
|
+
const scratch = `nomos-device-${realmClientId}`;
|
|
23384
|
+
const holon = await mount(scratch, {
|
|
23385
|
+
allowUnborn: true,
|
|
23386
|
+
authToken: "",
|
|
23387
|
+
principal: "",
|
|
23388
|
+
clientId: `${realmClientId}:device-identity`
|
|
23389
|
+
}, { evict: false });
|
|
23390
|
+
try {
|
|
23391
|
+
if (typeof secret === "string" && secret.length > 0) {
|
|
23392
|
+
return { secret, public: await holon.devicePublicOf(secret) };
|
|
23393
|
+
}
|
|
23394
|
+
const created = await holon.authorKeygen();
|
|
23395
|
+
if (!created?.ok || !created.secret || !created.public) {
|
|
23396
|
+
throw new Error("the kernel did not return a complete device identity");
|
|
23397
|
+
}
|
|
23398
|
+
return { secret: created.secret, public: created.public };
|
|
23399
|
+
} finally {
|
|
23400
|
+
try {
|
|
23401
|
+
holon._dispose();
|
|
23402
|
+
} catch {
|
|
23403
|
+
}
|
|
23404
|
+
mounted.delete(scratch);
|
|
23405
|
+
parked.delete(scratch);
|
|
23406
|
+
plane.drop(scratch);
|
|
23407
|
+
}
|
|
23408
|
+
}
|
|
23145
23409
|
return {
|
|
23146
23410
|
/** The realm's stable client id (each workspace gets `${clientId}:${name}` unless overridden). */
|
|
23147
23411
|
clientId: realmClientId,
|
|
@@ -23149,6 +23413,8 @@ async function openRealm(opts = {}) {
|
|
|
23149
23413
|
plane,
|
|
23150
23414
|
/** Open (or mount-on-demand) a holon bound to `name` IN this plane. Same surface as `connect()` returns. */
|
|
23151
23415
|
workspace: (name, wsOpts = {}) => withGate(() => mount(name, wsOpts)),
|
|
23416
|
+
/** Kernel-owned device identity, prepared without reading or creating remote custody. */
|
|
23417
|
+
deviceIdentity: (secret) => withGate(() => deviceIdentity(secret)),
|
|
23152
23418
|
/** The realm's workspaces + their posture (mounted / parked / has-custody). */
|
|
23153
23419
|
list: () => {
|
|
23154
23420
|
const names = /* @__PURE__ */ new Set([
|