[{"data":1,"prerenderedAt":942},["ShallowReactive",2],{"navigation":3,"-jwk-password-derivation":167,"-jwk-password-derivation-surround":939},[4,22,78,106,141,148],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","0.Getting-Started\u002F0.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","0.Getting-Started\u002F1.installation",{"title":15,"path":16,"stem":17},"Quickstart","\u002Fgetting-started\u002Fquickstart","0.Getting-Started\u002F2.quickstart",{"title":19,"path":20,"stem":21},"Core concepts","\u002Fgetting-started\u002Fcore-concepts","0.Getting-Started\u002F3.core-concepts",{"title":23,"path":24,"stem":25,"children":26,"icon":28},"JWT","\u002Fjwt","1.JWT\u002F0.index",[27,29,52],{"title":23,"path":24,"stem":25,"icon":28},"i-carbon-certificate",{"title":30,"path":31,"stem":32,"children":33,"icon":35},"JWS","\u002Fjwt\u002Fjws","1.JWT\u002F1.JWS\u002F0.index",[34,36,40,44,48],{"title":30,"path":31,"stem":32,"icon":35},"i-carbon-document-signed",{"title":37,"path":38,"stem":39},"Signing","\u002Fjwt\u002Fjws\u002Fsigning","1.JWT\u002F1.JWS\u002F1.signing",{"title":41,"path":42,"stem":43},"Verifying","\u002Fjwt\u002Fjws\u002Fverifying","1.JWT\u002F1.JWS\u002F2.verifying",{"title":45,"path":46,"stem":47},"Multi-signature","\u002Fjwt\u002Fjws\u002Fmulti-signature","1.JWT\u002F1.JWS\u002F3.multi-signature",{"title":49,"path":50,"stem":51},"Algorithms","\u002Fjwt\u002Fjws\u002Falgorithms","1.JWT\u002F1.JWS\u002F4.algorithms",{"title":53,"path":54,"stem":55,"children":56,"icon":58},"JWE","\u002Fjwt\u002Fjwe","1.JWT\u002F2.JWE\u002F0.index",[57,59,63,67,71,75],{"title":53,"path":54,"stem":55,"icon":58},"i-carbon-locked",{"title":60,"path":61,"stem":62},"Encrypting","\u002Fjwt\u002Fjwe\u002Fencrypting","1.JWT\u002F2.JWE\u002F1.encrypting",{"title":64,"path":65,"stem":66},"Decrypting","\u002Fjwt\u002Fjwe\u002Fdecrypting","1.JWT\u002F2.JWE\u002F2.decrypting",{"title":68,"path":69,"stem":70},"Multi-recipient","\u002Fjwt\u002Fjwe\u002Fmulti-recipient","1.JWT\u002F2.JWE\u002F3.multi-recipient",{"title":72,"path":73,"stem":74},"ECDH-ES and end-to-end encryption","\u002Fjwt\u002Fjwe\u002Fecdh-es","1.JWT\u002F2.JWE\u002F4.ecdh-es",{"title":49,"path":76,"stem":77},"\u002Fjwt\u002Fjwe\u002Falgorithms","1.JWT\u002F2.JWE\u002F5.algorithms",{"title":79,"path":80,"stem":81,"children":82,"icon":84},"Examples","\u002Fexamples","10.Examples\u002F0.index",[83,85,90,94,98,102],{"title":79,"path":80,"stem":81,"icon":84},"i-carbon-code-reference",{"title":86,"path":87,"stem":88,"icon":89},"Authentication basics","\u002Fexamples\u002Fauthentication-basics","10.Examples\u002F1.authentication-basics","i-lucide-code",{"title":91,"path":92,"stem":93,"icon":89},"Consuming a JWKS endpoint","\u002Fexamples\u002Fjwks-endpoint","10.Examples\u002F2.jwks-endpoint",{"title":95,"path":96,"stem":97,"icon":89},"Refresh token pattern","\u002Fexamples\u002Frefresh-token-pattern","10.Examples\u002F3.refresh-token-pattern",{"title":99,"path":100,"stem":101,"icon":89},"End-to-end encryption","\u002Fexamples\u002Fend-to-end-encryption","10.Examples\u002F4.end-to-end-encryption",{"title":103,"path":104,"stem":105,"icon":89},"Signed receipts","\u002Fexamples\u002Fsigned-receipts","10.Examples\u002F5.signed-receipts",{"title":107,"path":108,"stem":109,"children":110,"icon":112},"JWK","\u002Fjwk","2.JWK\u002F0.index",[111,113,117,121,125,129,133,137],{"title":107,"path":108,"stem":109,"icon":112},"i-carbon-two-factor-authentication",{"title":114,"path":115,"stem":116},"Generating keys","\u002Fjwk\u002Fgenerating","2.JWK\u002F1.generating",{"title":118,"path":119,"stem":120},"Importing and exporting","\u002Fjwk\u002Fimport-export","2.JWK\u002F2.import-export",{"title":122,"path":123,"stem":124},"PEM conversion","\u002Fjwk\u002Fpem","2.JWK\u002F3.pem",{"title":126,"path":127,"stem":128},"Key wrapping","\u002Fjwk\u002Fwrapping","2.JWK\u002F4.wrapping",{"title":130,"path":131,"stem":132},"Password derivation","\u002Fjwk\u002Fpassword-derivation","2.JWK\u002F5.password-derivation",{"title":134,"path":135,"stem":136},"JWK Sets","\u002Fjwk\u002Fjwk-sets","2.JWK\u002F6.jwk-sets",{"title":138,"path":139,"stem":140},"JWK cache","\u002Fjwk\u002Fcache","2.JWK\u002F7.cache",{"title":142,"path":143,"stem":144,"children":145,"icon":147},"Utilities","\u002Futilities","3.Utilities\u002F0.index",[146],{"title":142,"path":143,"stem":144,"icon":147},"i-carbon-tool-box",{"title":149,"path":150,"stem":151,"children":152,"icon":154},"Adapters","\u002Fadapters","99.Adapters\u002F0.index",[153,155,159,163],{"title":149,"path":150,"stem":151,"icon":154},"i-carbon-plug",{"title":156,"path":157,"stem":158},"H3 sessions","\u002Fadapters\u002Fh3-sessions","99.Adapters\u002F1.h3-sessions",{"title":160,"path":161,"stem":162},"Lifecycle hooks","\u002Fadapters\u002Fhooks","99.Adapters\u002F2.hooks",{"title":164,"path":165,"stem":166},"Lower-level functions","\u002Fadapters\u002Flower-level","99.Adapters\u002F3.lower-level",{"id":168,"title":130,"body":169,"description":200,"extension":934,"meta":935,"navigation":936,"path":131,"seo":937,"stem":132,"__hash__":938},"content\u002F2.JWK\u002F5.password-derivation.md",{"type":170,"value":171,"toc":920},"minimark",[172,194,227,232,238,241,264,271,282,433,438,560,575,582,651,661,668,675,693,696,769,773,811,829,833,836,850,853,890,900,904,916],[173,174,175,176,180,181,188,189,193],"p",{},"A password is not a cryptographic key — it's a low-entropy secret that a human might actually remember. To turn a password into a key suitable for encryption, unjwt uses ",[177,178,179],"strong",{},"PBKDF2"," (Password-Based Key Derivation Function 2, ",[182,183,187],"a",{"href":184,"rel":185},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc8018",[186],"nofollow","RFC 8018","), the same primitive that powers ",[182,190,192],{"href":191},"\u002Fjwt\u002Fjwe\u002Falgorithms#password-based-pbes2","PBES2 JWE",".",[195,196,201],"pre",{"className":197,"code":198,"language":199,"meta":200,"style":200},"language-ts shiki shiki-themes github-light github-dark github-dark","import { deriveJWKFromPassword, deriveKeyFromPassword } from \"unjwt\u002Fjwk\";\n","ts","",[202,203,204],"code",{"__ignoreMap":200},[205,206,209,213,217,220,224],"span",{"class":207,"line":208},"line",1,[205,210,212],{"class":211},"so5gQ","import",[205,214,216],{"class":215},"slsVL"," { deriveJWKFromPassword, deriveKeyFromPassword } ",[205,218,219],{"class":211},"from",[205,221,223],{"class":222},"sfrk1"," \"unjwt\u002Fjwk\"",[205,225,226],{"class":215},";\n",[228,229,231],"h2",{"id":230},"when-youd-reach-for-these","When you'd reach for these",[173,233,234,237],{},[202,235,236],{},"encrypt(payload, \"my-password\")"," already calls PBKDF2 internally — you don't need to derive a key just to encrypt a JWE token.",[173,239,240],{},"These functions matter when you want to:",[242,243,244,251,258],"ul",{},[245,246,247,250],"li",{},[177,248,249],{},"Persist"," a password-derived key and reuse it for many encrypt\u002Fdecrypt operations without re-running PBKDF2 each time.",[245,252,253,254,257],{},"Use a password-derived key for a ",[177,255,256],{},"non-JWE purpose"," — signing, a custom cipher, HMAC over something else.",[245,259,260,263],{},[177,261,262],{},"Inspect"," the derived key (e.g. to transmit it alongside the ciphertext in a custom envelope).",[228,265,267,270],{"id":266},"derivejwkfrompassword-the-common-case",[202,268,269],{},"deriveJWKFromPassword"," — the common case",[173,272,273,274,277,278,281],{},"Returns a ",[202,275,276],{},"JWK_oct"," (symmetric JWK) directly, with ",[202,279,280],{},"alg"," baked in:",[195,283,286],{"className":197,"code":284,"filename":285,"language":199,"meta":200,"style":200},"import { deriveJWKFromPassword } from \"unjwt\u002Fjwk\";\nimport { secureRandomBytes } from \"unjwt\u002Futils\";\n\nconst salt = secureRandomBytes(16); \u002F\u002F MUST be random, MUST be unique per password\nconst jwk = await deriveJWKFromPassword(\"my-strong-password\", \"PBES2-HS256+A128KW\", {\n  salt,\n  iterations: 600_000, \u002F\u002F OWASP-recommended default\n  kid: \"derived-key\",\n});\n\u002F\u002F jwk.kty === \"oct\", jwk.alg === \"A128KW\" (after PBES2 unwrap),\n\u002F\u002F jwk.k contains the derived 128-bit material\n","derive-jwk.ts",[202,287,288,301,316,323,353,383,389,403,415,421,427],{"__ignoreMap":200},[205,289,290,292,295,297,299],{"class":207,"line":208},[205,291,212],{"class":211},[205,293,294],{"class":215}," { deriveJWKFromPassword } ",[205,296,219],{"class":211},[205,298,223],{"class":222},[205,300,226],{"class":215},[205,302,304,306,309,311,314],{"class":207,"line":303},2,[205,305,212],{"class":211},[205,307,308],{"class":215}," { secureRandomBytes } ",[205,310,219],{"class":211},[205,312,313],{"class":222}," \"unjwt\u002Futils\"",[205,315,226],{"class":215},[205,317,319],{"class":207,"line":318},3,[205,320,322],{"emptyLinePlaceholder":321},true,"\n",[205,324,326,329,333,336,340,343,346,349],{"class":207,"line":325},4,[205,327,328],{"class":211},"const",[205,330,332],{"class":331},"suiK_"," salt",[205,334,335],{"class":211}," =",[205,337,339],{"class":338},"shcOC"," secureRandomBytes",[205,341,342],{"class":215},"(",[205,344,345],{"class":331},"16",[205,347,348],{"class":215},"); ",[205,350,352],{"class":351},"sCsY4","\u002F\u002F MUST be random, MUST be unique per password\n",[205,354,356,358,361,363,366,369,371,374,377,380],{"class":207,"line":355},5,[205,357,328],{"class":211},[205,359,360],{"class":331}," jwk",[205,362,335],{"class":211},[205,364,365],{"class":211}," await",[205,367,368],{"class":338}," deriveJWKFromPassword",[205,370,342],{"class":215},[205,372,373],{"class":222},"\"my-strong-password\"",[205,375,376],{"class":215},", ",[205,378,379],{"class":222},"\"PBES2-HS256+A128KW\"",[205,381,382],{"class":215},", {\n",[205,384,386],{"class":207,"line":385},6,[205,387,388],{"class":215},"  salt,\n",[205,390,392,395,398,400],{"class":207,"line":391},7,[205,393,394],{"class":215},"  iterations: ",[205,396,397],{"class":331},"600_000",[205,399,376],{"class":215},[205,401,402],{"class":351},"\u002F\u002F OWASP-recommended default\n",[205,404,406,409,412],{"class":207,"line":405},8,[205,407,408],{"class":215},"  kid: ",[205,410,411],{"class":222},"\"derived-key\"",[205,413,414],{"class":215},",\n",[205,416,418],{"class":207,"line":417},9,[205,419,420],{"class":215},"});\n",[205,422,424],{"class":207,"line":423},10,[205,425,426],{"class":351},"\u002F\u002F jwk.kty === \"oct\", jwk.alg === \"A128KW\" (after PBES2 unwrap),\n",[205,428,430],{"class":207,"line":429},11,[205,431,432],{"class":351},"\u002F\u002F jwk.k contains the derived 128-bit material\n",[434,435,437],"h3",{"id":436},"options","Options",[439,440,441,460],"table",{},[442,443,444],"thead",{},[445,446,447,451,454,457],"tr",{},[448,449,450],"th",{},"Option",[448,452,453],{},"Required?",[448,455,456],{},"Default",[448,458,459],{},"Effect",[461,462,463,480,499,520,539],"tbody",{},[445,464,465,471,474,477],{},[466,467,468],"td",{},[202,469,470],{},"salt",[466,472,473],{},"Yes",[466,475,476],{},"—",[466,478,479],{},"Binds derivations to a specific context.",[445,481,482,487,489,491],{},[466,483,484],{},[202,485,486],{},"iterations",[466,488,473],{},[466,490,476],{},[466,492,493,494,498],{},"Higher = more work for attackers ",[495,496,497],"em",{},"and"," you.",[445,500,501,506,509,514],{},[466,502,503],{},[202,504,505],{},"extractable",[466,507,508],{},"No",[466,510,511],{},[202,512,513],{},"true",[466,515,516,517,519],{},"Web Crypto ",[202,518,505],{}," flag.",[445,521,522,527,529,534],{},[466,523,524],{},[202,525,526],{},"keyUsage",[466,528,508],{},[466,530,531,532],{},"Derived from the AES-KW ",[202,533,280],{},[466,535,516,536,193],{},[202,537,538],{},"KeyUsage[]",[445,540,541,544,546,548],{},[466,542,543],{},"JWK metadata",[466,545,508],{},[466,547,476],{},[466,549,550,376,553,376,556,559],{},[202,551,552],{},"kid",[202,554,555],{},"use",[202,557,558],{},"x5c",", etc. merged in.",[173,561,562,376,564,376,567,570,571,574],{},[202,563,280],{},[202,565,566],{},"kty",[202,568,569],{},"key_ops",", and ",[202,572,573],{},"ext"," are managed by the library.",[228,576,578,581],{"id":577},"derivekeyfrompassword-raw-cryptokey-output",[202,579,580],{},"deriveKeyFromPassword"," — raw CryptoKey output",[195,583,586],{"className":197,"code":584,"filename":585,"language":199,"meta":200,"style":200},"import { deriveKeyFromPassword } from \"unjwt\u002Fjwk\";\n\nconst cryptoKey = await deriveKeyFromPassword(\"my-password\", \"PBES2-HS256+A128KW\", {\n  salt,\n  iterations: 600_000,\n});\n\u002F\u002F CryptoKey suitable for direct use with Web Crypto APIs\n","derive-cryptokey.ts",[202,587,588,601,605,630,634,642,646],{"__ignoreMap":200},[205,589,590,592,595,597,599],{"class":207,"line":208},[205,591,212],{"class":211},[205,593,594],{"class":215}," { deriveKeyFromPassword } ",[205,596,219],{"class":211},[205,598,223],{"class":222},[205,600,226],{"class":215},[205,602,603],{"class":207,"line":303},[205,604,322],{"emptyLinePlaceholder":321},[205,606,607,609,612,614,616,619,621,624,626,628],{"class":207,"line":318},[205,608,328],{"class":211},[205,610,611],{"class":331}," cryptoKey",[205,613,335],{"class":211},[205,615,365],{"class":211},[205,617,618],{"class":338}," deriveKeyFromPassword",[205,620,342],{"class":215},[205,622,623],{"class":222},"\"my-password\"",[205,625,376],{"class":215},[205,627,379],{"class":222},[205,629,382],{"class":215},[205,631,632],{"class":207,"line":325},[205,633,388],{"class":215},[205,635,636,638,640],{"class":207,"line":355},[205,637,394],{"class":215},[205,639,397],{"class":331},[205,641,414],{"class":215},[205,643,644],{"class":207,"line":385},[205,645,420],{"class":215},[205,647,648],{"class":207,"line":391},[205,649,650],{"class":351},"\u002F\u002F CryptoKey suitable for direct use with Web Crypto APIs\n",[173,652,653,654,657,658,660],{},"Pass ",[202,655,656],{},"toJWK: true"," to get a JWK back instead (in which case ",[202,659,269],{}," is shorter).",[228,662,664,665,667],{"id":663},"what-the-alg-parameter-means-here","What the ",[202,666,280],{}," parameter means here",[173,669,670,671,674],{},"PBES2 names are composite: ",[202,672,673],{},"PBES2-HS256+A128KW"," means:",[242,676,677,686],{},[245,678,679,681,682,685],{},[177,680,179],{}," with ",[177,683,684],{},"HMAC-SHA256"," as its PRF, producing",[245,687,688,689,692],{},"an ",[177,690,691],{},"AES-128 Key Wrap"," key.",[173,694,695],{},"Only these three values are valid for password derivation:",[439,697,698,715],{},[442,699,700],{},[445,701,702,706,709,712],{},[448,703,704],{},[202,705,280],{},[448,707,708],{},"PRF",[448,710,711],{},"Output alg",[448,713,714],{},"Output key size",[461,716,717,733,751],{},[445,718,719,723,725,730],{},[466,720,721],{},[202,722,673],{},[466,724,684],{},[466,726,727],{},[202,728,729],{},"A128KW",[466,731,732],{},"16 bytes",[445,734,735,740,743,748],{},[466,736,737],{},[202,738,739],{},"PBES2-HS384+A192KW",[466,741,742],{},"HMAC-SHA384",[466,744,745],{},[202,746,747],{},"A192KW",[466,749,750],{},"24 bytes",[445,752,753,758,761,766],{},[466,754,755],{},[202,756,757],{},"PBES2-HS512+A256KW",[466,759,760],{},"HMAC-SHA512",[466,762,763],{},[202,764,765],{},"A256KW",[466,767,768],{},"32 bytes",[228,770,772],{"id":771},"iteration-count-what-to-pick","Iteration count — what to pick",[242,774,775,790,805],{},[245,776,777,780,781,783,784,789],{},[177,778,779],{},"Default:"," ",[202,782,397],{}," — current ",[182,785,788],{"href":786,"rel":787},"https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FPassword_Storage_Cheat_Sheet.html#pbkdf2",[186],"OWASP recommendation"," for PBKDF2-HMAC-SHA256.",[245,791,792,780,795,798,799,804],{},[177,793,794],{},"Minimum safe:",[202,796,797],{},"1000"," per ",[182,800,803],{"href":801,"rel":802},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc7518#section-4.8.1.2",[186],"RFC 7518 §4.8.1.2",", but that's a floor from 2015 — don't ship that in 2026.",[245,806,807,810],{},[177,808,809],{},"Legacy interop:"," you might see 10 000–100 000 from older systems. Document it; plan to migrate.",[812,813,814],"warning",{},[173,815,816,817,820,821,824,825,828],{},"Password-derived keys are only as strong as the ",[177,818,819],{},"password",". PBKDF2 makes brute-forcing ",[495,822,823],{},"expensive",", not ",[495,826,827],{},"impossible",". A 6-character password is guessable in minutes regardless of iteration count.",[228,830,832],{"id":831},"salt-why-it-must-be-random","Salt — why it must be random",[173,834,835],{},"The salt prevents:",[242,837,838,844],{},[245,839,840,843],{},[177,841,842],{},"Rainbow tables"," (precomputed derivations of common passwords).",[245,845,846,849],{},[177,847,848],{},"Cross-use detection"," — without salt, \"same password\" derivations would be identical across users, leaking information.",[173,851,852],{},"Rules:",[854,855,857,875,881,887],"steps",{"level":856},"4",[858,859,860,863,864,867,868,874],"h4",{},[177,861,862],{},"Random",", via ",[202,865,866],{},"crypto.getRandomValues"," (or ",[182,869,871],{"href":870},"\u002Futilities#securerandombytes",[202,872,873],{},"secureRandomBytes()",").",[858,876,877,880],{},[177,878,879],{},"Unique"," per derivation — never reuse a salt across passwords.",[858,882,883,886],{},[177,884,885],{},"≥ 16 bytes"," (128 bits). Larger doesn't hurt.",[858,888,889],{},"Store\u002Ftransmit the salt alongside the ciphertext — it's not secret.",[173,891,892,893,896,897,899],{},"PBES2 JWE tokens carry their salt in the ",[202,894,895],{},"p2s"," header field automatically. You only manage salts manually when using ",[202,898,269],{}," outside the PBES2 flow.",[228,901,903],{"id":902},"see-also","See also",[242,905,906,911],{},[245,907,908],{},[182,909,910],{"href":191},"JWE algorithms → PBES2",[245,912,913],{},[182,914,915],{"href":115},"Generating keys →",[917,918,919],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":200,"searchDepth":303,"depth":303,"links":921},[922,923,927,929,931,932,933],{"id":230,"depth":303,"text":231},{"id":266,"depth":303,"text":924,"children":925},"deriveJWKFromPassword — the common case",[926],{"id":436,"depth":318,"text":437},{"id":577,"depth":303,"text":928},"deriveKeyFromPassword — raw CryptoKey output",{"id":663,"depth":303,"text":930},"What the alg parameter means here",{"id":771,"depth":303,"text":772},{"id":831,"depth":303,"text":832},{"id":902,"depth":303,"text":903},"md",{},{},{"title":130,"description":200},"1oK2f7WqQvZr1BaqFQnVWSdZA4Nx-Gy5IjCZ16z-IJM",[940,941],{"title":126,"path":127,"stem":128,"description":200,"children":-1},{"title":134,"path":135,"stem":136,"description":200,"children":-1},1776888559437]