{
  "schemaVersion": 1,
  "slug": "kv-separation-cleaning",
  "kind": "dataset",
  "title": "Key-value separation: cleaning-cost sensitivity",
  "summary": "Thirty deterministic byte-accounting cases compare inline records with separated values, including relocation-driven index writes. Invented inputs, not engine measurements.",
  "published": "2026-10-12",
  "updated": "2026-10-12",
  "evidenceType": "analytical-model-evaluation",
  "method": "For equal-sized records, K=16 key bytes, P=16 reference bytes, H=8 log-header bytes; V in {16,128,1024} bytes; C in {4,10} tree output/input-byte factors; selected-region live fraction u in {0,0.25,0.5,0.75,0.9}. Inline=C(K+V); separated=[C(K+P)+K+V+H]/(1-u). Every relocated record induces an index update charged at C. Each ratio uses K+V new logical bytes as denominator. Original steady-state accounting example, not a fit to a paper.",
  "sourceUrl": "https://www.usenix.org/system/files/conference/fast16/fast16-papers-lu.pdf",
  "humanPage": "https://hesela.com/analyses/key-value-separation-cleaning-cost/",
  "downloadPath": "/data/datasets/kv-separation-cleaning.csv",
  "codePath": "/research/kv-cleaning.mjs",
  "license": "CC0-1.0 for Hesela's original code and computed rows. Source papers and documentation retain their own rights.",
  "licenseUrl": "https://creativecommons.org/publicdomain/zero/1.0/",
  "columns": [
    {
      "name": "keyBytes",
      "type": "number",
      "description": "Assumed key size, bytes."
    },
    {
      "name": "valueBytes",
      "type": "number",
      "description": "Assumed value size, bytes."
    },
    {
      "name": "pointerBytes",
      "type": "number",
      "description": "Assumed reference size in the separated tree, bytes."
    },
    {
      "name": "logHeaderBytes",
      "type": "number",
      "description": "Assumed extra log header size, bytes."
    },
    {
      "name": "treeWriteFactor",
      "type": "number",
      "description": "Tree output bytes per inserted tree-record byte, including initial table writes and rewrites; same for both layouts."
    },
    {
      "name": "liveFraction",
      "type": "number",
      "description": "Live-byte fraction of the selected cleaning regions, not whole-database utilization."
    },
    {
      "name": "logicalBytes",
      "type": "number",
      "description": "New logical input bytes per key-value insertion: keyBytes + valueBytes."
    },
    {
      "name": "relocationFactor",
      "type": "number",
      "description": "Total append-plus-relocation multiplier: 1/(1-liveFraction)."
    },
    {
      "name": "inlineBytes",
      "type": "number",
      "description": "Modeled tree bytes written per new logical insertion in the inline layout."
    },
    {
      "name": "separatedTreeBytes",
      "type": "number",
      "description": "Modeled tree bytes per new insertion including pointer updates for relocated records."
    },
    {
      "name": "valueLogBytes",
      "type": "number",
      "description": "Modeled log bytes per new insertion including all repeated copies and headers."
    },
    {
      "name": "separatedBytes",
      "type": "number",
      "description": "Separated tree plus log bytes per new insertion; excludes WAL and lower-layer writes."
    },
    {
      "name": "inlineWriteRatio",
      "type": "number",
      "description": "inlineBytes / logicalBytes, modeled byte ratio."
    },
    {
      "name": "separatedWriteRatio",
      "type": "number",
      "description": "separatedBytes / logicalBytes, modeled byte ratio."
    },
    {
      "name": "separatedToInline",
      "type": "number",
      "description": "separatedBytes / inlineBytes; below 1 means fewer modeled writes."
    },
    {
      "name": "breakEvenLiveFraction",
      "type": "number|null",
      "description": "Selected-region live fraction at equal cost; null/empty CSV means no nonnegative crossover (separation loses even at zero live bytes)."
    }
  ],
  "limits": [
    "All inputs are invented and fixed; no devices, traces or database engines were measured.",
    "Assumes steady-state cleaning with equal record sizes and a fixed live fraction of selected regions.",
    "Identical C for inline, separated and relocation-driven tree updates isolates layout; a real smaller index can have a different C.",
    "No WAL, reads, compression, caching, coalescing, metadata beyond H/P, alignment, latency or NAND writes.",
    "Charging an index update for every relocation does not represent compaction-integrated BlobDB reclamation.",
    "u=1 cannot reclaim net space and is rejected; u is not storage utilization or a fill-limit recommendation.",
    "No statistical confidence intervals apply to these deterministic cases; applicability remains uncertain."
  ],
  "citations": [
    {
      "id": "wisckey",
      "title": "Lanyue Lu, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau. WiscKey: Separating Keys from Values in SSD-conscious Storage. USENIX FAST 2016, pp. 133-148, sections 3.2-3.3 and 4.",
      "url": "https://www.usenix.org/system/files/conference/fast16/fast16-papers-lu.pdf",
      "accessed": "2026-10-12"
    },
    {
      "id": "hashkv",
      "title": "Helen H. W. Chan, Yongkun Li, Patrick P. C. Lee and Yinlong Xu. HashKV: Enabling Efficient Updates in KV Storage via Hashing. USENIX ATC 2018, pp. 1007-1019, sections 3-4.",
      "url": "https://www.usenix.org/system/files/conference/atc18/atc18-chan.pdf",
      "accessed": "2026-10-12"
    },
    {
      "id": "blobdb",
      "title": "RocksDB project. BlobDB: integrated implementation, garbage collection and configuration. Documentation reviewed 12 October 2026; page displays revision date 22 September 2022.",
      "url": "https://github.com/facebook/rocksdb/wiki/BlobDB",
      "accessed": "2026-10-12"
    }
  ],
  "generatedAt": "2026-10-12T03:22:51.748Z",
  "runtime": {
    "node": "v24.21.0",
    "dependencies": "none",
    "seed": "not applicable: deterministic arithmetic"
  },
  "rows": [
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0,
      "logicalBytes": 32,
      "relocationFactor": 1,
      "inlineBytes": 128,
      "separatedTreeBytes": 128,
      "valueLogBytes": 40,
      "separatedBytes": 168,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 5.25,
      "separatedToInline": 1.3125,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.25,
      "logicalBytes": 32,
      "relocationFactor": 1.3333333333333333,
      "inlineBytes": 128,
      "separatedTreeBytes": 170.66666666666666,
      "valueLogBytes": 53.33333333333333,
      "separatedBytes": 224,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 7,
      "separatedToInline": 1.75,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.5,
      "logicalBytes": 32,
      "relocationFactor": 2,
      "inlineBytes": 128,
      "separatedTreeBytes": 256,
      "valueLogBytes": 80,
      "separatedBytes": 336,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 10.5,
      "separatedToInline": 2.625,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.75,
      "logicalBytes": 32,
      "relocationFactor": 4,
      "inlineBytes": 128,
      "separatedTreeBytes": 512,
      "valueLogBytes": 160,
      "separatedBytes": 672,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 21,
      "separatedToInline": 5.25,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.9,
      "logicalBytes": 32,
      "relocationFactor": 10.000000000000002,
      "inlineBytes": 128,
      "separatedTreeBytes": 1280.0000000000002,
      "valueLogBytes": 400.00000000000006,
      "separatedBytes": 1680.0000000000002,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 52.50000000000001,
      "separatedToInline": 13.125000000000002,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0,
      "logicalBytes": 144,
      "relocationFactor": 1,
      "inlineBytes": 576,
      "separatedTreeBytes": 128,
      "valueLogBytes": 152,
      "separatedBytes": 280,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 1.9444444444444444,
      "separatedToInline": 0.4861111111111111,
      "breakEvenLiveFraction": 0.5138888888888888
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.25,
      "logicalBytes": 144,
      "relocationFactor": 1.3333333333333333,
      "inlineBytes": 576,
      "separatedTreeBytes": 170.66666666666666,
      "valueLogBytes": 202.66666666666666,
      "separatedBytes": 373.3333333333333,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 2.5925925925925926,
      "separatedToInline": 0.6481481481481481,
      "breakEvenLiveFraction": 0.5138888888888888
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.5,
      "logicalBytes": 144,
      "relocationFactor": 2,
      "inlineBytes": 576,
      "separatedTreeBytes": 256,
      "valueLogBytes": 304,
      "separatedBytes": 560,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 3.888888888888889,
      "separatedToInline": 0.9722222222222222,
      "breakEvenLiveFraction": 0.5138888888888888
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.75,
      "logicalBytes": 144,
      "relocationFactor": 4,
      "inlineBytes": 576,
      "separatedTreeBytes": 512,
      "valueLogBytes": 608,
      "separatedBytes": 1120,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 7.777777777777778,
      "separatedToInline": 1.9444444444444444,
      "breakEvenLiveFraction": 0.5138888888888888
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.9,
      "logicalBytes": 144,
      "relocationFactor": 10.000000000000002,
      "inlineBytes": 576,
      "separatedTreeBytes": 1280.0000000000002,
      "valueLogBytes": 1520.0000000000002,
      "separatedBytes": 2800.0000000000005,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 19.444444444444446,
      "separatedToInline": 4.861111111111112,
      "breakEvenLiveFraction": 0.5138888888888888
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0,
      "logicalBytes": 1040,
      "relocationFactor": 1,
      "inlineBytes": 4160,
      "separatedTreeBytes": 128,
      "valueLogBytes": 1048,
      "separatedBytes": 1176,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 1.1307692307692307,
      "separatedToInline": 0.2826923076923077,
      "breakEvenLiveFraction": 0.7173076923076923
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.25,
      "logicalBytes": 1040,
      "relocationFactor": 1.3333333333333333,
      "inlineBytes": 4160,
      "separatedTreeBytes": 170.66666666666666,
      "valueLogBytes": 1397.3333333333333,
      "separatedBytes": 1568,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 1.5076923076923077,
      "separatedToInline": 0.3769230769230769,
      "breakEvenLiveFraction": 0.7173076923076923
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.5,
      "logicalBytes": 1040,
      "relocationFactor": 2,
      "inlineBytes": 4160,
      "separatedTreeBytes": 256,
      "valueLogBytes": 2096,
      "separatedBytes": 2352,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 2.2615384615384615,
      "separatedToInline": 0.5653846153846154,
      "breakEvenLiveFraction": 0.7173076923076923
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.75,
      "logicalBytes": 1040,
      "relocationFactor": 4,
      "inlineBytes": 4160,
      "separatedTreeBytes": 512,
      "valueLogBytes": 4192,
      "separatedBytes": 4704,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 4.523076923076923,
      "separatedToInline": 1.1307692307692307,
      "breakEvenLiveFraction": 0.7173076923076923
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 4,
      "liveFraction": 0.9,
      "logicalBytes": 1040,
      "relocationFactor": 10.000000000000002,
      "inlineBytes": 4160,
      "separatedTreeBytes": 1280.0000000000002,
      "valueLogBytes": 10480.000000000002,
      "separatedBytes": 11760.000000000002,
      "inlineWriteRatio": 4,
      "separatedWriteRatio": 11.30769230769231,
      "separatedToInline": 2.8269230769230775,
      "breakEvenLiveFraction": 0.7173076923076923
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0,
      "logicalBytes": 32,
      "relocationFactor": 1,
      "inlineBytes": 320,
      "separatedTreeBytes": 320,
      "valueLogBytes": 40,
      "separatedBytes": 360,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 11.25,
      "separatedToInline": 1.125,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.25,
      "logicalBytes": 32,
      "relocationFactor": 1.3333333333333333,
      "inlineBytes": 320,
      "separatedTreeBytes": 426.66666666666663,
      "valueLogBytes": 53.33333333333333,
      "separatedBytes": 479.99999999999994,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 14.999999999999998,
      "separatedToInline": 1.4999999999999998,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.5,
      "logicalBytes": 32,
      "relocationFactor": 2,
      "inlineBytes": 320,
      "separatedTreeBytes": 640,
      "valueLogBytes": 80,
      "separatedBytes": 720,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 22.5,
      "separatedToInline": 2.25,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.75,
      "logicalBytes": 32,
      "relocationFactor": 4,
      "inlineBytes": 320,
      "separatedTreeBytes": 1280,
      "valueLogBytes": 160,
      "separatedBytes": 1440,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 45,
      "separatedToInline": 4.5,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 16,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.9,
      "logicalBytes": 32,
      "relocationFactor": 10.000000000000002,
      "inlineBytes": 320,
      "separatedTreeBytes": 3200.0000000000005,
      "valueLogBytes": 400.00000000000006,
      "separatedBytes": 3600.0000000000005,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 112.50000000000001,
      "separatedToInline": 11.250000000000002,
      "breakEvenLiveFraction": null
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0,
      "logicalBytes": 144,
      "relocationFactor": 1,
      "inlineBytes": 1440,
      "separatedTreeBytes": 320,
      "valueLogBytes": 152,
      "separatedBytes": 472,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 3.2777777777777777,
      "separatedToInline": 0.3277777777777778,
      "breakEvenLiveFraction": 0.6722222222222223
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.25,
      "logicalBytes": 144,
      "relocationFactor": 1.3333333333333333,
      "inlineBytes": 1440,
      "separatedTreeBytes": 426.66666666666663,
      "valueLogBytes": 202.66666666666666,
      "separatedBytes": 629.3333333333333,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 4.37037037037037,
      "separatedToInline": 0.437037037037037,
      "breakEvenLiveFraction": 0.6722222222222223
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.5,
      "logicalBytes": 144,
      "relocationFactor": 2,
      "inlineBytes": 1440,
      "separatedTreeBytes": 640,
      "valueLogBytes": 304,
      "separatedBytes": 944,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 6.555555555555555,
      "separatedToInline": 0.6555555555555556,
      "breakEvenLiveFraction": 0.6722222222222223
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.75,
      "logicalBytes": 144,
      "relocationFactor": 4,
      "inlineBytes": 1440,
      "separatedTreeBytes": 1280,
      "valueLogBytes": 608,
      "separatedBytes": 1888,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 13.11111111111111,
      "separatedToInline": 1.3111111111111111,
      "breakEvenLiveFraction": 0.6722222222222223
    },
    {
      "keyBytes": 16,
      "valueBytes": 128,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.9,
      "logicalBytes": 144,
      "relocationFactor": 10.000000000000002,
      "inlineBytes": 1440,
      "separatedTreeBytes": 3200.0000000000005,
      "valueLogBytes": 1520.0000000000002,
      "separatedBytes": 4720.000000000001,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 32.777777777777786,
      "separatedToInline": 3.2777777777777786,
      "breakEvenLiveFraction": 0.6722222222222223
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0,
      "logicalBytes": 1040,
      "relocationFactor": 1,
      "inlineBytes": 10400,
      "separatedTreeBytes": 320,
      "valueLogBytes": 1048,
      "separatedBytes": 1368,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 1.3153846153846154,
      "separatedToInline": 0.13153846153846155,
      "breakEvenLiveFraction": 0.8684615384615384
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.25,
      "logicalBytes": 1040,
      "relocationFactor": 1.3333333333333333,
      "inlineBytes": 10400,
      "separatedTreeBytes": 426.66666666666663,
      "valueLogBytes": 1397.3333333333333,
      "separatedBytes": 1824,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 1.7538461538461538,
      "separatedToInline": 0.1753846153846154,
      "breakEvenLiveFraction": 0.8684615384615384
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.5,
      "logicalBytes": 1040,
      "relocationFactor": 2,
      "inlineBytes": 10400,
      "separatedTreeBytes": 640,
      "valueLogBytes": 2096,
      "separatedBytes": 2736,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 2.6307692307692307,
      "separatedToInline": 0.2630769230769231,
      "breakEvenLiveFraction": 0.8684615384615384
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.75,
      "logicalBytes": 1040,
      "relocationFactor": 4,
      "inlineBytes": 10400,
      "separatedTreeBytes": 1280,
      "valueLogBytes": 4192,
      "separatedBytes": 5472,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 5.2615384615384615,
      "separatedToInline": 0.5261538461538462,
      "breakEvenLiveFraction": 0.8684615384615384
    },
    {
      "keyBytes": 16,
      "valueBytes": 1024,
      "pointerBytes": 16,
      "logHeaderBytes": 8,
      "treeWriteFactor": 10,
      "liveFraction": 0.9,
      "logicalBytes": 1040,
      "relocationFactor": 10.000000000000002,
      "inlineBytes": 10400,
      "separatedTreeBytes": 3200.0000000000005,
      "valueLogBytes": 10480.000000000002,
      "separatedBytes": 13680.000000000002,
      "inlineWriteRatio": 10,
      "separatedWriteRatio": 13.153846153846155,
      "separatedToInline": 1.3153846153846156,
      "breakEvenLiveFraction": 0.8684615384615384
    }
  ],
  "rowCount": 30,
  "artifacts": {
    "modelSha256": "422ed6005717618f92da2ad75d6190fa1de9d5fc6410eedca745383277369bef",
    "csvSha256": "491a64cf286280c930a5202dbb69fc6833060d29bb9de9f86319f671a309fd43"
  }
}
