diff --git a/.agents/skills/atlas/assets/seed/catalog.json b/.agents/skills/atlas/assets/seed/catalog.json index 938a3ca58..67bb5814f 100644 --- a/.agents/skills/atlas/assets/seed/catalog.json +++ b/.agents/skills/atlas/assets/seed/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","0052dfb9eafceabaa590f4497e4d42f19020718c84b981d265edefd432ccf8dd","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","043eff38ad27212dd4d046617d0fe5e18544a03829d8b1130fbba2d052e1f072","04652cbc95ac4dcd21b837b38f2ca5a0ccd4d0946bc13fdb31c9c15a578d3a2d","04d17203f03279980862496517a1f0861be5f6cc8063bfbf92f8f8ac19744fdd","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","076259a45e71df780b012d29618c17739246c86321d2ff05a6c272bcca8db675","076fa091c878b19cf56a94be0966dbcd58d52c1839f9d4b85bbfdef650cbdb88","078903d1d79c2afee401dcdb8a440ca9d011114249e63f20175ef7c8ec392029","08b3dc660b9d2bbbe75b590b2b86d941bf935a254cd5f09de71ee6894f4048b6","09e90ad705af012a8c36efbf296757f35adf9c9ce3b8908791c75d72c192973f","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0b2d1557ff6df5f4d65d540a5403b07ba81b381dfc799b7884ac72dfa6ee7753","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0c7d3f36e3bb4270edbf7abd99cd2dab772df274cad1c27c7e87e302b8eb1c23","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0e9612ab3e2095fdf2eeeb3b08d690f03ce16e7f7ce948a10d2159b267769651","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","0f11324ad653d8d841962b0eeae9f68b80243d4ef7df4f2404ed4c3e45ba5197","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","13d0363b8d765c87a57eb42c4988320a9c2e7fa09024aa972f4b13d7699a552d","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","15d41240067e2335a0354a4e910b6610f2b8f079b8f67186f10181622b4a8999","1746f4f9d47b7dc42280dd34e664b3ec410d3cc69ac76933707499ffa34c79d4","1754adaf40732c3a8c73d2285c25a8b6c8c9d3e68370de618a0ffa8f3e60fb6d","182f48470fff7a26ce3a833c886f8ce9eec3bd4a96aef1c784c670f1b5e73431","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","19e75be8ed4dfba2a6f8034154052160a7a181b17d887b3e8724f3e3c111c31e","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b3ec24337f0252a00cfeb6df0a0f5d2b6d737dbea61b8d0b4a643f4c686df6a","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1b8cad98d53da179ab05eb47c1783f4c8b45b9f39c635e7a337285f5cd9621c1","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","20d01a387b4d0801cb588492ede88cae7bade9b7ea3591d9e954add1e67cf4ce","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","22ef13e60456fe9046dfe72f20122362aeefbbb445632231b8e364ed9b50e135","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24278a8f6b5925968be17b45f7db4c08169ddd5c92cbc103a166a690c02dc351","24373b643450d9dd3b8a5b0e74a5fec2844cd8cbca7d8a57dbc8b9ad9eade9dc","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","2905a2b4a58bd9ec1c4f77fd3d1d246c02caa49d806272756dd039c79521442f","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","299e929f58fe7d2878ec59ba6ad9fb74f1b1e550e488a4512373b9621f089844","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2b4f7c8dcc95ca8182105b9b6806391666e6a2c3a5c80d3ce5a5f04fd6cf9122","2b5e739c8f9602c585e67554c457e6e53351679afd56ff324f8fecc80f0891f1","2bc251ffb58a0d03480748058eff4c44079a0f21d75743063cef50263982337a","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d46924a94c85f4275a449dd3d9eb6c602cf8a9104db19d224e3aa469b858d06","2d5048eeef90792c0a2b9aed7305598a28db2103fed3903462c6c1882733c3e8","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2df1610ac1b912232030b5507e5e944515b0f1549bf2b76ecfb12baf0f40ccea","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2e872e9d3ab8b553270e79673060c50c1afd68a41fcf9fdd0a13cba80be0dfaf","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","2febddcced970d495778f33fff212929ac99c23adc42be0c1062f5c8676ffce0","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","31fe4b51d55cd99a4692d2cb787d362cb4c0d0998d3e001efdb5cb7ed838340f","3242912d15a34fbaba05e5e4ef959577b2572533305bdd2e4aa24fe8b0fd1173","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","341a43310dc5bc12018f1c3466916b4bec462a3ee08c09fc27c42d1a6914c63c","3442ba5c7643c793f62d90ca841f7891b3dbf97f028bc7b62f8b4f88c1266d1c","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","3600e7356a3741ef02f8b2ffa6a6b5d822dcbb170771f2ea33312dff4470f431","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","3962789d05f324d436a363700cbb5ced5aba791d782b3c0ea73221fe0c1f0b97","3966e5e53811c43962f5d0953e5da4753eacefbea27ecba9d36af2fd8e4fd52f","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3bce154e59c5c45216bb5372a352e948d6cb365bb1bd47d4666ae0412e507ca4","3c75b650f3fa8217597b01d3aaf25427ae2a658a7c966afeecdb391d3ba547ea","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3d642ccf9ca4a0f7f5dde1b41f65c99e9c447cbb9e64883b67e4fdf76f216f52","3d9fd2c5877483382f0c7331206393e42827b5dccfd60549a6771b7a5659e524","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3dfcea4ee3d0d0ed09b1f77bac48b33b64ab4620cbfc74fe0e4201b4cdb81ce6","3dffc36586e9078f750b0a2b4cc2c70a17a81294903186dbe8cc47cf8055b9bd","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","3f5465798dbc2ad279ca4849d5d0f819bad01455e0dd2a9d98afd4b55cfbd7ee","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","4134a3936170c1fb5fa6d2e2329185a981436477a66b7d31e827c363691bad50","414259a2fda4a1a49729be6fb1aced4675ee9cbdf990aaafb8e5b3153b54d64d","41baa5d98b5bab2ee01cad50c05b83edd8cdfeeb00f30b9406b4b2ec6d13d738","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","444342c21a4743af5961beeebb88088f5d2a0649f76c71973a7706a744f5efd2","4457ab439bc8f212d83442dc7500e9d45ffac849d0f77cb97686d9b0672fc3dc","461d34fb1d53849951a7e715e52342372d779299fbcad210794235c610dadf64","46a24cd8e385b748f40d9271b1e856dd6d68c91ab356abb11ff6b65f1ef936bf","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","471570cdf8144df0c32aba1730aba24c7e42e5ec317af771ffa169f5c842d117","47b5cb2b011c0f7012d75e88eb86a10f3f0bd48545db139669e654cac1f69650","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","48262b98c0bdbd5ee2314345726d23630ec1771735db8fe5f1a8590b662c9962","482cd15ecd9cfbd8e1943c0fcde0bbf1d875392dc2a701b698f48bfba684a062","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","48de3afdc6ee73ed121d1433bc6367a399286d5f8c2c63670a0b3b9752a36175","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","49ee4a3f2a8918bdbbafb312cfa807d9982800d13d29ee292c6c0daad8b9b8f1","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4aecbdfafb68feb3124c39219498241864bcf1ceaf87fbf80598b1dd87a9191d","4b076b124afadf178a3e736d3dfd142e4dff120b6a8aa94a06e0c4c86cfc1142","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4b6ab2768e1ff3716ac8565201c031a820c208db9ea6ae1495dd782e7557a3ab","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4ece7844e2b35705ac39fa25913f6909aad5b4b7446bd637ced46b47c0db135c","4ef30f11bd4dd9d2eef8716d88a83010546e54594b2726de84f6d587651ee940","4f03e231c0dc5c9bb2874f6856382d5b205758af9678fffdc7552d4e4ae9866e","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","4f6fcf4dd7e73d86e06bdb9c14a1078b61c0efb2663ced9bfbc5f46fbb4c6d8e","5029c7b222158ab3f325168fa543d84fd2332d2e3e38db1ce7b83899cef201d1","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","521ed246c4119acd6b579b6eefa23389a1655df54aa35de7671743979ebfc68d","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","55267f058e9f085117765e4ca72ce875b622ceaceed964f6c396073214835c28","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","55dcc23ce52b3918a60029d9398f262216471c280bfe66421cc63240533a6087","566ddcfc45ea5edc695626826ed185930e910fd9107c5bc1844c717b714c15b2","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","581337891936ba630d34ce9f6b803b82a2130791510f15bab24a07332400417f","58901d008c36a777dc138fa6b6d198030e0e843bc889cbad3acb954c826b3608","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5be05ba74075b8f139be565c47688a4f395ce71452dce5cf7da4348c7ddb7aa0","5c0206d9d014821b52a43d7b222327a89d4ee2f5b1e21813dfa659a69f7426b5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5de00a2f5eabe86c14f360304115f4136c41df1fb664eef6da26072fe7623d44","5e3a589b627edaf7005c60382475fae7229adc4ffbaab6d6fd03e9f08a0a8e19","5e43baca07fb966bf1c4b3ac06bb819577e477a84c5d8d3a9a19c391ada2e0b5","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","600ec184ee9964881bcaeaf72ad38a72db05d5b629d301cb323fa1ee9369b572","616c4dbde10f465da822d8a788feada26e5f915c7fbbc06232287cd1899c3044","62a713311297a7145d3610ee60dd6626ee543645a1918b050c629207561efb5e","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","6312b7a9f8252f49b8ea0cbd0580b80bbb221db574ea74939823ed9d4140d73f","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65725e1cd3323fdf44ec47067fd6670b441ff5f82e99485e1a4fc7d475f14340","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","6601b2bb6c908a46ae2985d4683c8baeeec87b0688b9b33d3e8900286bf4d6ae","666e7f698fbeef24e13e91ccfa334cf781233e060fa86bcd7d4d0eb00b30f3d5","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","671168c05789fc651cd961a5a15e10adbb76656b802cb0fcbab468ab76412ca2","671d95a6c09bb7b05a5721d52cb761300a2c8f376aac20be2948b7e97bf302b7","680de944f1f5380c579003e329ed6f10702ec8ebaaa8208743775588d2424d05","6989ec486a05550633170d2aa79188ad9b03aeea6c7859dbf18790ba78c5427a","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6b00dccaa7deabc750679ab085b237a2bd025bd971ee1eb7bdc333b393b19084","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","7075f89b1271fd04fa02d4db95c0f0bd6bdec24e53a7953d7afaeba40e17e8e0","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","74b5d2ed555740db7b4b0ea9b73f8fe00965fea8e14d4f075eec26ef7a189c68","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","786b0c2856bf1f3f809e5903b0a971f1e072af5635aa50bbb9b1449f96d7b694","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7af2394d2e697f355439e841b6323ffbbf8b90b2e48bf64873791fbbfdf15b44","7b947ed0a9e6e7ba180921434b993c62ac70bbaba6af0a1618569a2d4b705201","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7c2a1c4c4c03e3d68d63e0ab58e4e34d3f2bc1a4a837a055fd13a4e9f95ce6cb","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7dd54213b65fa0a6ce5aa3c204b5209b67ec16306b776aed7dcf9e6601d74235","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7efb464c6d7b469303c43f718063d8456df6fe43534b5d8a4229f5b9ba9705cd","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","80627bb83607d94aca13d445aa0ca4032d2d00479acb3c2f9d1a3cdeffe41f10","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","83347356a898238c013dff73246440e361a9e24cc3c4e0fe0e850467772b4938","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a06a604bbe36d72da976fcdeb88665c762b0f0de44193576ef2e0cf29aa9ad","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","85e961266b36e0f8ec2a477f1f1dfe7ad748fdde9d906f7bd3241e6924866ea9","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87789dab547842b4e0c822758e1325a3cbb046063e11e105a4779b3741e01cde","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89a96597dc9c218633adaf94bb5d6dcf4cad8f5e0b6f5522a28e3ce8d8b2865f","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8a720f848e9dbca63355ed5cf8e79df3d3ef3a6a1fe2b599349128f72417e95e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cce78271b4f001606069a575a172041fbddc52de6b582c920aa3d3b5d5b67ae","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e10a3499a8311b3142f240631df7fdd58c46714e4a954280f8a59620464b7ff","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8f3827158091bbed154d21c843284ad472a4552da2eeb858748aa29676e45662","8f4a21c70e4b933eaa4f9cee119945dd2ebeac532e82d34e17511b38cf03608c","8f6debc54d2bd7abb42f581f2204fc78b27ff8c67ee4b6392b4d71c5f983ee9d","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","9056c360e59fc78edde932b54124df317f2f04a90c0c6eb7825a87b89edf1ca0","90aff66decaa3a0998e9a6741963713c0c82fc70da505519e3d60204bf715fa0","90dc4cac6326293bb54486d3c873b83299e9a5ec8c86a68bf1cc131f5e4e2437","918126027fabb7947dd4ae810dd561ac22167102f9f978f86906624ebe88c9ea","91b495938bc6015970bb02c844368d3eee84425b472772cdb374a5347db86de9","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","922a332aa100d622da733aea8fc74094739bb63cd480d3349a14d2418ab6b1bb","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","9460f427df72c238c4b55f39c8864f1fa3685b0716a53227ea6f7b591d955c82","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","958ea8ff9a1354ba11254f2fc94f6ed1f98e10041a198331b6af66bc1b175af2","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","97edc66e594bae06bb273db84a35d84c8162a1fdf55ed46d781419a9f6a2e4f2","9808ac162523484fc50a7d41dc20fd4d5dd365a91406cfea580aab9f69663fe5","985638a05562bb796911ec231d306b81e36ed6b58219b3bde874559e9600b59f","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","98ecc99d3396aa9a35ce97456be66c1aac0cc05bab88aa99109649291e61bc0a","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9a8f2389b8ebc29d3769868ff8b918fdeb2236d88192fcf76ab0ea3db0857fac","9af18d8cfee466bc061271d82254d7ea638b59b8d5a3901c6610d5baed85c38b","9b01e565a1541f9e652d7afbe62e3bbff28430c1ccac2226ea434f45fc9a99d0","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9c3b318c461b56a8d277133a6b947ef5618690ec281c42e9de6c27f22458d4d4","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d1a0da545eb6b2e16b18fdd305a2c000ff2340c19ac843914b45f6a4f936227","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9dfd29090b50334ae229e4a7e812cfb9f6204a66dde563e215d8f52e884cb103","9e77badd0923fd79ca9761a41780ee4dd4f9ca9b62512f4fb59c7f8418494da0","9e9edbe6c5c90ef3aa89a71fd1ec54069818d2ff48ce0f35019b811add042047","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","9fb8c5aa087d38dab064a2d6054826377eea3dda98229725c2523f63a87e4750","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a2aec2d2f35d7174801247141d637e77c4f34e478c575b0e0a04c6251efaf993","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a3d6708506fb5c28f45f0d610bedba11b1ec7bcdb363ffff3aa4cddfa515f56a","a476183540f2e7121e533bf2dd9125dc071c81acc880e88cb435cad7a6d35b97","a4a8cca930cdfd15285ac3a7aa757d61501fb77fc12a7c3fbd78c096b279cf63","a50654761d6812cd811df02199e1b7b25c9b0d65e591f65430f9277ec43d9c50","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a644885c31f390b5e6b7fe2fc8d086d9144699295ccb6ffa51b3f7c76c8ca71a","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a70d82083944311ccf98b6aa8da5adebc93c655759eaaf8d79624bb3d322abcb","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acae1db4aeb323f3b637fa11b087c3827a2fb6d69718362f54e3bc48f70ef7d8","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ad0e6d78c1e450e19bfca4a0e904644ab0ae315607811a28ac3dba20de869786","ae43a4d252290ec0e18c64dd58d51bc885020b2473e71e3ed0741184c9f006b7","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b3f50ed7eac0e9c54b74c4f4e02297dd2d2465ce4b699bcc15cfddf54c0f0f81","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b4f2140fb766faf0065a563ac3664f395b24c81dab0d0d0d01df47b22e888d29","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b5c085be21651d8579e52cd3ffe4abe6b7f45c5a9ee84d38c47b4734409918d8","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7fda8f4bf81f8213d18e3c314df5100ccb6b8db7aed6b70aaf202deb606a14f","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b83b7229045affbb98f8fc46f289ad05e6626ef52e3ed2f7e70d332a54a69e2a","b83f5334b85422ac110a24286d5af7003f2fb5b0d783efe257b38a2281656422","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b8b8c5cad182083f45ce2d05d036e6bfe91cde1fb63f2e5a97c683bb7ef7ea0f","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba5c707cf9be40fe966c08807779994e20ca3f30ea9d73e26ce31ca334c05640","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bad8f17b1d399ea125c524895571601c90b6c93418c248bd4ebcc7886bae9878","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bcbef69f1ba50e45f3faf1b4529c32cdcf1e5a6612b5bcbc6aa6790ee14b54eb","bd3bf6053f4d423ff21f7ffbed9d0e68f3ea64b7292c048e9a37ade342bb7b39","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c055d3cfd85b2ed4607b0d9d3a15ab7204c9f149599f748347dca4afe102af0c","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23a43ed460117f663cec698412729fd91b5aaceb48cc4e55a785b525661bf1a","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c24546a064b9315172ce0f951bd5fa2cd1b9884231cf1bdc1dc714771f1b3886","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c2e96d98c8ebc10237a2af1c224f626acfb9072c83078f4a8c6d9ef0a58b4a8e","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c4ebd58c4ff78c9fc0cd17d80ed563520f7908f9d1106735ca0f5a7abed202a6","c5db39bbdc8c2bd2aa7b58c28c3df9e407955cc3250ce7825c842cc4c30eaca3","c65325f807190f7084346376e2f48fc2b6bb946004a1fac1d8d117930e93d462","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c69b32bee3e47d9568ef9acdcd59ddef6f6ebe3b3a45d257f6c5d4145890ef2e","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c82f38f23e7ed3e1024661b7a22ff694e88d3b268240e2bfc98e630df8a062d0","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","c93cd4cb5cf38fe6221fa8ae171ff54240b5f99ba80cd740ffac69c57e5fa381","ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfb9705939742247da0cb71fdfd8b5f7a1bef6f1c2f0979a8f42e54c4a480980","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d151ffa66d8d096e0272f0dfff6c27e978cfda570f7498a727593081888b4ebe","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d268e680ee1136a239a40ebf005b30db6f3b52a228016f3193496f86250f15c3","d2989a1607fd5303615937b8c117d127b1b1cde519662ab1e1324390220e8612","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d2e82db1f6e479001e15c9890732b5049f8c900c568d5e3d15707a95a7dc3610","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d36034e2f9cc642d0f9f24cf834fa741bac5b8b139cbd2f50e2065161c9f3cb0","d36eb7456d2a42d1cffa4b60708e2bd3116f7f6758c96bbc0fee0f1704ad8a79","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d555a0d2329caace197c1468fe6708349125762377ee3bd04b031b7eacfc26aa","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5adedc08fa25bd06734afd1db3510dbc53ba0dfdac20cf601fde0c77702a72a","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d67ec5caeb2af5f9c57533a34cbde7daba5f5b2e5e6ce34c3250893eef25f13c","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d7a44c85c25ceb7d42280f0c2576de52a3b3cc3ad2333e788ecdc7f7f7fe4b3b","d7f5db16fd3b6ddd5acdf655e090ed0e84cb89d9eafbe1ea92b273b71a38f173","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8c8b3c52c89cd715a7fdd2759a6f73c3a5f505303b110656cc35f7549a37cfb","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da2acdac413e8367fe0a329922fcad3565a24c89dba87907e6d64bb3e6315922","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","daa0fc9f9dd08cb2dc48bf33c9808cfeebff77cb9fba48f98ef597bb9dd6df55","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","db66a999537b941fa6d512908894ba86e8dadd0e14b290ebc119555b7e60264c","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e519e78acf2938460c7ee053981c744dafc7642fd03b56a117d5fec78d258b90","e5db07b7fb0eed216d838fbeb9491257cf54f9bd537a68c8edae7a89fe64c8d8","e61705ac769699a40c52e332cd890187ca9301fc6e64393c8c9064144ccc2dbf","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","e981ced1bfce64a19fa8de1cd518a93f4669d01548f4819d0e1dbb50d266fe04","e9a8e5be83e18caaecd4cf74dd7f020e0cc7de9d910cb7845e5ec615cb26b14b","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eaeec7c06d1408fa6db5d7ada0a232b1633ffdf0ac815033c29c159352347c81","eb708890ac7e19bd53007ccece064f7e2a069a3751270b4fdafdd1668136dee7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","ebcf0bdb3541c8bfb7c9a53f632329b77341cba6f1a2fa0dc9704acfa3276dca","ebd87e3505f3a1adff0c86ffec6c380734df718301b216b7ee089c174130de60","ecd5e83ba8c8eba6cef9c3da1edb8a84e3dfb4ed71d9a2c1908f2c4d26b26737","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0e1db9b86e2132f004ebf06819eb55804f766bc03ea5d80f487d5d98bad8892","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1297fd9ecf981024e1544f7f048705377b53219240274bb803ac30e4a52084f","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f260b4b268e85a8f1b04b2fc69ffc0bca473d2e42de6f2f70128bedc16558201","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f4de28905adbfe6ae4bc38f8bf5f47a444aa8d0f2023faaa431d6f72f9a3edea","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f5403593ba12130c04827f88d019103e924651caa518b7c290673a02f7cb409f","f5681dfc71121ed0f88146a19479675f2fabc6ed376fd5d162e50d815c048d66","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f700bd87d4a758bb71f47731121a9b2259a9ffbd50b584b82f4e6a1f205c276a","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f7993302f695430a0ee938b1b3684fdfec4055bddb378b52c81785c0319e8c98","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","facb45d3084caa490d9b0ac2bcfcee89629a4c3db5926ec9256a9d27d25559ee","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fbd74e4b8dc748b2efdd70aaab07adb80d7f15a38c1261de85bdfd9591ff106a","fc475f9c2d8bee2ffea435e86e6b39b6e3e071143a4a1fdf6765b0da13b66de6","fcaf6bc23f7cbddda8141a846ef23b21b9cc37e51b805f0f75b3cda2d4d3f019","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","fdbd44d3c55504edfa1bacb4c9b7a6c102659d4deef0ca91b9b7ac567ea9cfc5","fedf2577267d6dcd060ebc4ee8de6ccdafa60ab26b78d74c1e8c784252fecb17","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","0052dfb9eafceabaa590f4497e4d42f19020718c84b981d265edefd432ccf8dd","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","043eff38ad27212dd4d046617d0fe5e18544a03829d8b1130fbba2d052e1f072","04652cbc95ac4dcd21b837b38f2ca5a0ccd4d0946bc13fdb31c9c15a578d3a2d","04d17203f03279980862496517a1f0861be5f6cc8063bfbf92f8f8ac19744fdd","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","076259a45e71df780b012d29618c17739246c86321d2ff05a6c272bcca8db675","076fa091c878b19cf56a94be0966dbcd58d52c1839f9d4b85bbfdef650cbdb88","078903d1d79c2afee401dcdb8a440ca9d011114249e63f20175ef7c8ec392029","08b3dc660b9d2bbbe75b590b2b86d941bf935a254cd5f09de71ee6894f4048b6","09e90ad705af012a8c36efbf296757f35adf9c9ce3b8908791c75d72c192973f","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0b2d1557ff6df5f4d65d540a5403b07ba81b381dfc799b7884ac72dfa6ee7753","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0c7d3f36e3bb4270edbf7abd99cd2dab772df274cad1c27c7e87e302b8eb1c23","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0e9612ab3e2095fdf2eeeb3b08d690f03ce16e7f7ce948a10d2159b267769651","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","0f11324ad653d8d841962b0eeae9f68b80243d4ef7df4f2404ed4c3e45ba5197","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","13d0363b8d765c87a57eb42c4988320a9c2e7fa09024aa972f4b13d7699a552d","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","15d41240067e2335a0354a4e910b6610f2b8f079b8f67186f10181622b4a8999","1746f4f9d47b7dc42280dd34e664b3ec410d3cc69ac76933707499ffa34c79d4","1754adaf40732c3a8c73d2285c25a8b6c8c9d3e68370de618a0ffa8f3e60fb6d","182f48470fff7a26ce3a833c886f8ce9eec3bd4a96aef1c784c670f1b5e73431","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","19e75be8ed4dfba2a6f8034154052160a7a181b17d887b3e8724f3e3c111c31e","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b3ec24337f0252a00cfeb6df0a0f5d2b6d737dbea61b8d0b4a643f4c686df6a","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1b8cad98d53da179ab05eb47c1783f4c8b45b9f39c635e7a337285f5cd9621c1","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","20d01a387b4d0801cb588492ede88cae7bade9b7ea3591d9e954add1e67cf4ce","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","22ef13e60456fe9046dfe72f20122362aeefbbb445632231b8e364ed9b50e135","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24278a8f6b5925968be17b45f7db4c08169ddd5c92cbc103a166a690c02dc351","24373b643450d9dd3b8a5b0e74a5fec2844cd8cbca7d8a57dbc8b9ad9eade9dc","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","2905a2b4a58bd9ec1c4f77fd3d1d246c02caa49d806272756dd039c79521442f","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","299e929f58fe7d2878ec59ba6ad9fb74f1b1e550e488a4512373b9621f089844","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2b4f7c8dcc95ca8182105b9b6806391666e6a2c3a5c80d3ce5a5f04fd6cf9122","2b5e739c8f9602c585e67554c457e6e53351679afd56ff324f8fecc80f0891f1","2bc251ffb58a0d03480748058eff4c44079a0f21d75743063cef50263982337a","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d46924a94c85f4275a449dd3d9eb6c602cf8a9104db19d224e3aa469b858d06","2d5048eeef90792c0a2b9aed7305598a28db2103fed3903462c6c1882733c3e8","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2df1610ac1b912232030b5507e5e944515b0f1549bf2b76ecfb12baf0f40ccea","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2e872e9d3ab8b553270e79673060c50c1afd68a41fcf9fdd0a13cba80be0dfaf","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","2febddcced970d495778f33fff212929ac99c23adc42be0c1062f5c8676ffce0","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","31fe4b51d55cd99a4692d2cb787d362cb4c0d0998d3e001efdb5cb7ed838340f","3242912d15a34fbaba05e5e4ef959577b2572533305bdd2e4aa24fe8b0fd1173","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","341a43310dc5bc12018f1c3466916b4bec462a3ee08c09fc27c42d1a6914c63c","3442ba5c7643c793f62d90ca841f7891b3dbf97f028bc7b62f8b4f88c1266d1c","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","3600e7356a3741ef02f8b2ffa6a6b5d822dcbb170771f2ea33312dff4470f431","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","3962789d05f324d436a363700cbb5ced5aba791d782b3c0ea73221fe0c1f0b97","3966e5e53811c43962f5d0953e5da4753eacefbea27ecba9d36af2fd8e4fd52f","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3bce154e59c5c45216bb5372a352e948d6cb365bb1bd47d4666ae0412e507ca4","3c75b650f3fa8217597b01d3aaf25427ae2a658a7c966afeecdb391d3ba547ea","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3d642ccf9ca4a0f7f5dde1b41f65c99e9c447cbb9e64883b67e4fdf76f216f52","3d9fd2c5877483382f0c7331206393e42827b5dccfd60549a6771b7a5659e524","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3dfcea4ee3d0d0ed09b1f77bac48b33b64ab4620cbfc74fe0e4201b4cdb81ce6","3dffc36586e9078f750b0a2b4cc2c70a17a81294903186dbe8cc47cf8055b9bd","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","3f5465798dbc2ad279ca4849d5d0f819bad01455e0dd2a9d98afd4b55cfbd7ee","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","4134a3936170c1fb5fa6d2e2329185a981436477a66b7d31e827c363691bad50","414259a2fda4a1a49729be6fb1aced4675ee9cbdf990aaafb8e5b3153b54d64d","41baa5d98b5bab2ee01cad50c05b83edd8cdfeeb00f30b9406b4b2ec6d13d738","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","444342c21a4743af5961beeebb88088f5d2a0649f76c71973a7706a744f5efd2","4457ab439bc8f212d83442dc7500e9d45ffac849d0f77cb97686d9b0672fc3dc","461d34fb1d53849951a7e715e52342372d779299fbcad210794235c610dadf64","46a24cd8e385b748f40d9271b1e856dd6d68c91ab356abb11ff6b65f1ef936bf","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","471570cdf8144df0c32aba1730aba24c7e42e5ec317af771ffa169f5c842d117","47b5cb2b011c0f7012d75e88eb86a10f3f0bd48545db139669e654cac1f69650","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","48262b98c0bdbd5ee2314345726d23630ec1771735db8fe5f1a8590b662c9962","482cd15ecd9cfbd8e1943c0fcde0bbf1d875392dc2a701b698f48bfba684a062","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","48de3afdc6ee73ed121d1433bc6367a399286d5f8c2c63670a0b3b9752a36175","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","49ee4a3f2a8918bdbbafb312cfa807d9982800d13d29ee292c6c0daad8b9b8f1","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4aecbdfafb68feb3124c39219498241864bcf1ceaf87fbf80598b1dd87a9191d","4b076b124afadf178a3e736d3dfd142e4dff120b6a8aa94a06e0c4c86cfc1142","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4b6ab2768e1ff3716ac8565201c031a820c208db9ea6ae1495dd782e7557a3ab","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4ece7844e2b35705ac39fa25913f6909aad5b4b7446bd637ced46b47c0db135c","4ef30f11bd4dd9d2eef8716d88a83010546e54594b2726de84f6d587651ee940","4f03e231c0dc5c9bb2874f6856382d5b205758af9678fffdc7552d4e4ae9866e","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","4f6fcf4dd7e73d86e06bdb9c14a1078b61c0efb2663ced9bfbc5f46fbb4c6d8e","5029c7b222158ab3f325168fa543d84fd2332d2e3e38db1ce7b83899cef201d1","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","521ed246c4119acd6b579b6eefa23389a1655df54aa35de7671743979ebfc68d","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","55267f058e9f085117765e4ca72ce875b622ceaceed964f6c396073214835c28","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","55dcc23ce52b3918a60029d9398f262216471c280bfe66421cc63240533a6087","566ddcfc45ea5edc695626826ed185930e910fd9107c5bc1844c717b714c15b2","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","581337891936ba630d34ce9f6b803b82a2130791510f15bab24a07332400417f","58901d008c36a777dc138fa6b6d198030e0e843bc889cbad3acb954c826b3608","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5be05ba74075b8f139be565c47688a4f395ce71452dce5cf7da4348c7ddb7aa0","5c0206d9d014821b52a43d7b222327a89d4ee2f5b1e21813dfa659a69f7426b5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5de00a2f5eabe86c14f360304115f4136c41df1fb664eef6da26072fe7623d44","5e3a589b627edaf7005c60382475fae7229adc4ffbaab6d6fd03e9f08a0a8e19","5e43baca07fb966bf1c4b3ac06bb819577e477a84c5d8d3a9a19c391ada2e0b5","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","600ec184ee9964881bcaeaf72ad38a72db05d5b629d301cb323fa1ee9369b572","616c4dbde10f465da822d8a788feada26e5f915c7fbbc06232287cd1899c3044","62a713311297a7145d3610ee60dd6626ee543645a1918b050c629207561efb5e","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","6312b7a9f8252f49b8ea0cbd0580b80bbb221db574ea74939823ed9d4140d73f","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65725e1cd3323fdf44ec47067fd6670b441ff5f82e99485e1a4fc7d475f14340","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","6601b2bb6c908a46ae2985d4683c8baeeec87b0688b9b33d3e8900286bf4d6ae","666e7f698fbeef24e13e91ccfa334cf781233e060fa86bcd7d4d0eb00b30f3d5","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","671168c05789fc651cd961a5a15e10adbb76656b802cb0fcbab468ab76412ca2","671d95a6c09bb7b05a5721d52cb761300a2c8f376aac20be2948b7e97bf302b7","680de944f1f5380c579003e329ed6f10702ec8ebaaa8208743775588d2424d05","6989ec486a05550633170d2aa79188ad9b03aeea6c7859dbf18790ba78c5427a","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6b00dccaa7deabc750679ab085b237a2bd025bd971ee1eb7bdc333b393b19084","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","7075f89b1271fd04fa02d4db95c0f0bd6bdec24e53a7953d7afaeba40e17e8e0","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","74b5d2ed555740db7b4b0ea9b73f8fe00965fea8e14d4f075eec26ef7a189c68","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","786b0c2856bf1f3f809e5903b0a971f1e072af5635aa50bbb9b1449f96d7b694","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7af2394d2e697f355439e841b6323ffbbf8b90b2e48bf64873791fbbfdf15b44","7b947ed0a9e6e7ba180921434b993c62ac70bbaba6af0a1618569a2d4b705201","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7c2a1c4c4c03e3d68d63e0ab58e4e34d3f2bc1a4a837a055fd13a4e9f95ce6cb","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7dd54213b65fa0a6ce5aa3c204b5209b67ec16306b776aed7dcf9e6601d74235","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7efb464c6d7b469303c43f718063d8456df6fe43534b5d8a4229f5b9ba9705cd","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","80627bb83607d94aca13d445aa0ca4032d2d00479acb3c2f9d1a3cdeffe41f10","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","83347356a898238c013dff73246440e361a9e24cc3c4e0fe0e850467772b4938","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a06a604bbe36d72da976fcdeb88665c762b0f0de44193576ef2e0cf29aa9ad","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","85e961266b36e0f8ec2a477f1f1dfe7ad748fdde9d906f7bd3241e6924866ea9","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87789dab547842b4e0c822758e1325a3cbb046063e11e105a4779b3741e01cde","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89a96597dc9c218633adaf94bb5d6dcf4cad8f5e0b6f5522a28e3ce8d8b2865f","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8a720f848e9dbca63355ed5cf8e79df3d3ef3a6a1fe2b599349128f72417e95e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cce78271b4f001606069a575a172041fbddc52de6b582c920aa3d3b5d5b67ae","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e10a3499a8311b3142f240631df7fdd58c46714e4a954280f8a59620464b7ff","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8f3827158091bbed154d21c843284ad472a4552da2eeb858748aa29676e45662","8f4a21c70e4b933eaa4f9cee119945dd2ebeac532e82d34e17511b38cf03608c","8f6debc54d2bd7abb42f581f2204fc78b27ff8c67ee4b6392b4d71c5f983ee9d","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","9056c360e59fc78edde932b54124df317f2f04a90c0c6eb7825a87b89edf1ca0","90aff66decaa3a0998e9a6741963713c0c82fc70da505519e3d60204bf715fa0","90dc4cac6326293bb54486d3c873b83299e9a5ec8c86a68bf1cc131f5e4e2437","918126027fabb7947dd4ae810dd561ac22167102f9f978f86906624ebe88c9ea","91b495938bc6015970bb02c844368d3eee84425b472772cdb374a5347db86de9","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","922a332aa100d622da733aea8fc74094739bb63cd480d3349a14d2418ab6b1bb","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","9460f427df72c238c4b55f39c8864f1fa3685b0716a53227ea6f7b591d955c82","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","958ea8ff9a1354ba11254f2fc94f6ed1f98e10041a198331b6af66bc1b175af2","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","97edc66e594bae06bb273db84a35d84c8162a1fdf55ed46d781419a9f6a2e4f2","9808ac162523484fc50a7d41dc20fd4d5dd365a91406cfea580aab9f69663fe5","985638a05562bb796911ec231d306b81e36ed6b58219b3bde874559e9600b59f","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","98ecc99d3396aa9a35ce97456be66c1aac0cc05bab88aa99109649291e61bc0a","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9a8f2389b8ebc29d3769868ff8b918fdeb2236d88192fcf76ab0ea3db0857fac","9af18d8cfee466bc061271d82254d7ea638b59b8d5a3901c6610d5baed85c38b","9b01e565a1541f9e652d7afbe62e3bbff28430c1ccac2226ea434f45fc9a99d0","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9c3b318c461b56a8d277133a6b947ef5618690ec281c42e9de6c27f22458d4d4","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d1a0da545eb6b2e16b18fdd305a2c000ff2340c19ac843914b45f6a4f936227","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9dfd29090b50334ae229e4a7e812cfb9f6204a66dde563e215d8f52e884cb103","9e77badd0923fd79ca9761a41780ee4dd4f9ca9b62512f4fb59c7f8418494da0","9e9edbe6c5c90ef3aa89a71fd1ec54069818d2ff48ce0f35019b811add042047","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","9fb8c5aa087d38dab064a2d6054826377eea3dda98229725c2523f63a87e4750","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a2aec2d2f35d7174801247141d637e77c4f34e478c575b0e0a04c6251efaf993","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a3d6708506fb5c28f45f0d610bedba11b1ec7bcdb363ffff3aa4cddfa515f56a","a476183540f2e7121e533bf2dd9125dc071c81acc880e88cb435cad7a6d35b97","a4a8cca930cdfd15285ac3a7aa757d61501fb77fc12a7c3fbd78c096b279cf63","a50654761d6812cd811df02199e1b7b25c9b0d65e591f65430f9277ec43d9c50","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a644885c31f390b5e6b7fe2fc8d086d9144699295ccb6ffa51b3f7c76c8ca71a","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a70d82083944311ccf98b6aa8da5adebc93c655759eaaf8d79624bb3d322abcb","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acae1db4aeb323f3b637fa11b087c3827a2fb6d69718362f54e3bc48f70ef7d8","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ad0e6d78c1e450e19bfca4a0e904644ab0ae315607811a28ac3dba20de869786","ae43a4d252290ec0e18c64dd58d51bc885020b2473e71e3ed0741184c9f006b7","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b3f50ed7eac0e9c54b74c4f4e02297dd2d2465ce4b699bcc15cfddf54c0f0f81","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b4f2140fb766faf0065a563ac3664f395b24c81dab0d0d0d01df47b22e888d29","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b5c085be21651d8579e52cd3ffe4abe6b7f45c5a9ee84d38c47b4734409918d8","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7fda8f4bf81f8213d18e3c314df5100ccb6b8db7aed6b70aaf202deb606a14f","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b83b7229045affbb98f8fc46f289ad05e6626ef52e3ed2f7e70d332a54a69e2a","b83f5334b85422ac110a24286d5af7003f2fb5b0d783efe257b38a2281656422","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b8b8c5cad182083f45ce2d05d036e6bfe91cde1fb63f2e5a97c683bb7ef7ea0f","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba5c707cf9be40fe966c08807779994e20ca3f30ea9d73e26ce31ca334c05640","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bad8f17b1d399ea125c524895571601c90b6c93418c248bd4ebcc7886bae9878","bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bcbef69f1ba50e45f3faf1b4529c32cdcf1e5a6612b5bcbc6aa6790ee14b54eb","bd3bf6053f4d423ff21f7ffbed9d0e68f3ea64b7292c048e9a37ade342bb7b39","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c055d3cfd85b2ed4607b0d9d3a15ab7204c9f149599f748347dca4afe102af0c","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23a43ed460117f663cec698412729fd91b5aaceb48cc4e55a785b525661bf1a","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c24546a064b9315172ce0f951bd5fa2cd1b9884231cf1bdc1dc714771f1b3886","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c2e96d98c8ebc10237a2af1c224f626acfb9072c83078f4a8c6d9ef0a58b4a8e","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c4ebd58c4ff78c9fc0cd17d80ed563520f7908f9d1106735ca0f5a7abed202a6","c5db39bbdc8c2bd2aa7b58c28c3df9e407955cc3250ce7825c842cc4c30eaca3","c65325f807190f7084346376e2f48fc2b6bb946004a1fac1d8d117930e93d462","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c69b32bee3e47d9568ef9acdcd59ddef6f6ebe3b3a45d257f6c5d4145890ef2e","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c82f38f23e7ed3e1024661b7a22ff694e88d3b268240e2bfc98e630df8a062d0","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","c93cd4cb5cf38fe6221fa8ae171ff54240b5f99ba80cd740ffac69c57e5fa381","c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e","ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfb9705939742247da0cb71fdfd8b5f7a1bef6f1c2f0979a8f42e54c4a480980","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d151ffa66d8d096e0272f0dfff6c27e978cfda570f7498a727593081888b4ebe","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d268e680ee1136a239a40ebf005b30db6f3b52a228016f3193496f86250f15c3","d2989a1607fd5303615937b8c117d127b1b1cde519662ab1e1324390220e8612","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d2e82db1f6e479001e15c9890732b5049f8c900c568d5e3d15707a95a7dc3610","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d36034e2f9cc642d0f9f24cf834fa741bac5b8b139cbd2f50e2065161c9f3cb0","d36eb7456d2a42d1cffa4b60708e2bd3116f7f6758c96bbc0fee0f1704ad8a79","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d555a0d2329caace197c1468fe6708349125762377ee3bd04b031b7eacfc26aa","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5adedc08fa25bd06734afd1db3510dbc53ba0dfdac20cf601fde0c77702a72a","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d67ec5caeb2af5f9c57533a34cbde7daba5f5b2e5e6ce34c3250893eef25f13c","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d7a44c85c25ceb7d42280f0c2576de52a3b3cc3ad2333e788ecdc7f7f7fe4b3b","d7f5db16fd3b6ddd5acdf655e090ed0e84cb89d9eafbe1ea92b273b71a38f173","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8c8b3c52c89cd715a7fdd2759a6f73c3a5f505303b110656cc35f7549a37cfb","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da2acdac413e8367fe0a329922fcad3565a24c89dba87907e6d64bb3e6315922","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","daa0fc9f9dd08cb2dc48bf33c9808cfeebff77cb9fba48f98ef597bb9dd6df55","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","db66a999537b941fa6d512908894ba86e8dadd0e14b290ebc119555b7e60264c","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e519e78acf2938460c7ee053981c744dafc7642fd03b56a117d5fec78d258b90","e5db07b7fb0eed216d838fbeb9491257cf54f9bd537a68c8edae7a89fe64c8d8","e61705ac769699a40c52e332cd890187ca9301fc6e64393c8c9064144ccc2dbf","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","e981ced1bfce64a19fa8de1cd518a93f4669d01548f4819d0e1dbb50d266fe04","e9a8e5be83e18caaecd4cf74dd7f020e0cc7de9d910cb7845e5ec615cb26b14b","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eaeec7c06d1408fa6db5d7ada0a232b1633ffdf0ac815033c29c159352347c81","eb708890ac7e19bd53007ccece064f7e2a069a3751270b4fdafdd1668136dee7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","ebcf0bdb3541c8bfb7c9a53f632329b77341cba6f1a2fa0dc9704acfa3276dca","ebd87e3505f3a1adff0c86ffec6c380734df718301b216b7ee089c174130de60","ecd5e83ba8c8eba6cef9c3da1edb8a84e3dfb4ed71d9a2c1908f2c4d26b26737","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0e1db9b86e2132f004ebf06819eb55804f766bc03ea5d80f487d5d98bad8892","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1297fd9ecf981024e1544f7f048705377b53219240274bb803ac30e4a52084f","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f260b4b268e85a8f1b04b2fc69ffc0bca473d2e42de6f2f70128bedc16558201","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f4de28905adbfe6ae4bc38f8bf5f47a444aa8d0f2023faaa431d6f72f9a3edea","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f5403593ba12130c04827f88d019103e924651caa518b7c290673a02f7cb409f","f5681dfc71121ed0f88146a19479675f2fabc6ed376fd5d162e50d815c048d66","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f700bd87d4a758bb71f47731121a9b2259a9ffbd50b584b82f4e6a1f205c276a","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f7993302f695430a0ee938b1b3684fdfec4055bddb378b52c81785c0319e8c98","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","facb45d3084caa490d9b0ac2bcfcee89629a4c3db5926ec9256a9d27d25559ee","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fbd74e4b8dc748b2efdd70aaab07adb80d7f15a38c1261de85bdfd9591ff106a","fc475f9c2d8bee2ffea435e86e6b39b6e3e071143a4a1fdf6765b0da13b66de6","fcaf6bc23f7cbddda8141a846ef23b21b9cc37e51b805f0f75b3cda2d4d3f019","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","fdbd44d3c55504edfa1bacb4c9b7a6c102659d4deef0ca91b9b7ac567ea9cfc5","fedf2577267d6dcd060ebc4ee8de6ccdafa60ab26b78d74c1e8c784252fecb17","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/.agents/skills/atlas/assets/seed/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json b/.agents/skills/atlas/assets/seed/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json new file mode 100644 index 000000000..b3a7f7c5c --- /dev/null +++ b/.agents/skills/atlas/assets/seed/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"5773499da99cf8e0d4c82dc38e5439eaa463b85570abb543d3788ee65e6c38f2"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"13dd28134211b416426c39877c6fd850ef5c839157aaa8ef7520127059e1134d"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"2b766d98419c148b801c0cb71b149fada000c9d8da49047a526c13440d3b73db"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"6036f92c7f52e18f227fe1c1ad687a628972bce43ba2cb91d4acad98c943c9e6"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"904706590286178790f843ecaeab28e0d3de61ac943bcc0e5637d3de5aba490f"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-03T08:14:29Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.","supersedes":["c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.agents/skills/atlas/assets/seed/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json b/.agents/skills/atlas/assets/seed/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json new file mode 100644 index 000000000..ec4df80d4 --- /dev/null +++ b/.agents/skills/atlas/assets/seed/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"5773499da99cf8e0d4c82dc38e5439eaa463b85570abb543d3788ee65e6c38f2"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"13dd28134211b416426c39877c6fd850ef5c839157aaa8ef7520127059e1134d"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"2b766d98419c148b801c0cb71b149fada000c9d8da49047a526c13440d3b73db"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"6036f92c7f52e18f227fe1c1ad687a628972bce43ba2cb91d4acad98c943c9e6"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"904706590286178790f843ecaeab28e0d3de61ac943bcc0e5637d3de5aba490f"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"67ed550440daef8b49622e1cdd614e581b2cb741a964774ab3a2b08bab9535ee"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"5e73ddd2776f27cc11cd7303d29f1f3426e5c6c025deb5f433f5b6d0a08474a1"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"e4291c39dfa6eaad01b9e21184629d9a96dca1232e5c880236de3207770aee89"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-03T08:33:18Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nWhen present, the inventory-derived packaged alias determines legacy Root policy before a receiver-local canonical path; otherwise the canonical source path is selected. The loader executes captured bytes and records their relative path and SHA256 in existing inspection, intent and custody as rootRulesSource. Staged canonical-shadow and source-noalias controls retain Root trust and reference semantics; a synthetic retained-package epoch demonstrates that the actual selected hash stays distinct from a newer canonical source. This provenance identifies loaded bytes, not policy freshness or authority; join it to the actual selected caller/BOM and do not describe an older alias as current checkout policy.","supersedes":["12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.agents/skills/atlas/assets/seed/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json b/.agents/skills/atlas/assets/seed/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json new file mode 100644 index 000000000..dece9c05c --- /dev/null +++ b/.agents/skills/atlas/assets/seed/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"103ae8c3bde59b0a62864abc91b8b7c66277633128dfe2263e16454d7a26b275"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"e21bb9674ca0757455e64a6b2c0adbae24c5df1a8c3c881314e9fc2415d11657"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"1924ebe1cfb8a7ba89be691f89c73de4f2262b16c95f88e7583c49c21666d53b"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"0f8d604a58a0d6a343b8b853dd756445844ad2abbf3dc1afcebeb934ad1d2bde"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"2fb47d9885537598ad9293eb51348c1b9a311783601f1fee53562c53f8cb10c2"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"bcca401be4022aa66f81aca279691098b7c9a0a0","sha256":"f74ddd2884727fd1020c29a2051a8b0a5edf328f092351fc1a13b451a1784ff0"},{"path":"scripts/root-identity-policy.json","repository":"FS-GG/.github","revision":"bcca401be4022aa66f81aca279691098b7c9a0a0","sha256":"828dd54ca7ce74e2ffa3b2082b823537680aa8819a2a88143f359d103287174c"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-04T03:07:17Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nCurrent-main integration exposed another transitive dependency: the canonical board-currency source now loads the shared sibling root-identity-policy.json. The old staged alias lacked that data, so its valid-plan test failed before native effects. The repaired inventory delivers the same canonical policy beside the alias. rootRulesSource includes both exact selected rule bytes and nested policy path/SHA256; the helper checks policy stability during load and rechecks the complete fingerprint at native population barriers. Receiver-local rule and data shadows cannot replace this package closure; missing/malformed data and valid but changed policy refuse. The staged controls exercise these cases and actual valid/forged/wrong-owner plans with inert native responses. Removing the trust recheck causes the changed-policy control to fail, and restoring it passes.\n\nThe current draft-creation helper also introduced an integration boundary: legacy validation's early return must not bypass --draft's create-only restriction. The composed guard rejects legacy plus --draft before reads, while preserving main's draft flag and exact native readback implementation. Removing this guard fails the legacy mode-injection control; restoration passes. The complete merged admission suite reports 75 passing tests after the retained missing-policy failure. This remains source and isolated-staging evidence, not actual GitHub continuation, package publication or installed adoption. Existing original operation histories and all full Delivery acceptance obligations remain open.","supersedes":["540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.agents/skills/atlas/assets/seed/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json b/.agents/skills/atlas/assets/seed/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json new file mode 100644 index 000000000..9e4dfd4ce --- /dev/null +++ b/.agents/skills/atlas/assets/seed/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"c2574160c509fde2e00fa156fbb6d83578c05f5a618d2f5d0ab360c3e2375542"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"e21bb9674ca0757455e64a6b2c0adbae24c5df1a8c3c881314e9fc2415d11657"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"a9b694779c3fce2a5c535ad16901dd338b0e09a8bf62f23805b55bcdc9e0dadb"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"0f8d604a58a0d6a343b8b853dd756445844ad2abbf3dc1afcebeb934ad1d2bde"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"7c9267142d91c9e470f3c4de0de574715ffd37a7ac43937ad771ce8c0d1cec7d"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"f74ddd2884727fd1020c29a2051a8b0a5edf328f092351fc1a13b451a1784ff0"},{"path":"scripts/root-identity-policy.json","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"828dd54ca7ce74e2ffa3b2082b823537680aa8819a2a88143f359d103287174c"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-04T03:14:32Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nCurrent-main integration exposed another transitive dependency: the canonical board-currency source now loads the shared sibling root-identity-policy.json. The old staged alias lacked that data, so its valid-plan test failed before native effects. The repaired inventory delivers the same canonical policy beside the alias. rootRulesSource includes both exact selected rule bytes and nested policy path/SHA256; the helper checks policy stability during load and rechecks the complete fingerprint at native population barriers. Receiver-local rule and data shadows cannot replace this package closure; missing/malformed data and valid but changed policy refuse. The staged controls exercise these cases and actual valid/forged/wrong-owner plans with inert native responses. Removing the trust recheck causes the changed-policy control to fail, and restoring it passes.\n\nThe current draft-creation helper also introduced an integration boundary: legacy validation's early return must not bypass --draft's create-only restriction. The composed guard rejects legacy plus --draft before reads, while preserving main's draft flag and exact native readback implementation. Removing this guard fails the legacy mode-injection control; restoration passes. The intermediate merged admission suite reported 75 passing tests after the retained missing-policy failure. This remains source and isolated-staging evidence, not actual GitHub continuation, package publication or installed adoption. Existing original operation histories and all full Delivery acceptance obligations remain open.\n\nLocal plan and body inputs share one opened-descriptor invariant. A proposed-body FIFO with no writer passed the old symlink/size precheck and blocked before native reads; a two-second inert-boundary CLI probe preserved that failure. The repair uses O_NOFOLLOW and O_NONBLOCK before fstat, requires a regular leaf with at most65536 bytes, caps the read itself and compares opened-file identity/size/timestamps after reading. Invalid UTF-8, a directory/symlink, oversized data and determining changes refuse before native effects. The same primitive removes the plan reader's stat/open race. Empty regular files and the previous universal-newline normalization remain unchanged; downstream owning-reference and closed-JSON checks still decide validity. Writable parent directories and hostile filesystems are outside this bounded leaf proof. Removing nonblocking open reproduces the FIFO timeout in the maintained CLI control; restoration passes. The complete admission suite reports77 passing tests, with byte-range, actual file-change, empty and newline controls plus both real-CLI FIFO cases. No native continuation, publication or installed effect is proved by this source-only repair.","supersedes":["a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.agents/skills/atlas/assets/seed/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json b/.agents/skills/atlas/assets/seed/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json new file mode 100644 index 000000000..24109764a --- /dev/null +++ b/.agents/skills/atlas/assets/seed/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-02T22:40:56Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.","supersedes":[],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.claude/skills/atlas/assets/seed/catalog.json b/.claude/skills/atlas/assets/seed/catalog.json index 938a3ca58..67bb5814f 100644 --- a/.claude/skills/atlas/assets/seed/catalog.json +++ b/.claude/skills/atlas/assets/seed/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","0052dfb9eafceabaa590f4497e4d42f19020718c84b981d265edefd432ccf8dd","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","043eff38ad27212dd4d046617d0fe5e18544a03829d8b1130fbba2d052e1f072","04652cbc95ac4dcd21b837b38f2ca5a0ccd4d0946bc13fdb31c9c15a578d3a2d","04d17203f03279980862496517a1f0861be5f6cc8063bfbf92f8f8ac19744fdd","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","076259a45e71df780b012d29618c17739246c86321d2ff05a6c272bcca8db675","076fa091c878b19cf56a94be0966dbcd58d52c1839f9d4b85bbfdef650cbdb88","078903d1d79c2afee401dcdb8a440ca9d011114249e63f20175ef7c8ec392029","08b3dc660b9d2bbbe75b590b2b86d941bf935a254cd5f09de71ee6894f4048b6","09e90ad705af012a8c36efbf296757f35adf9c9ce3b8908791c75d72c192973f","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0b2d1557ff6df5f4d65d540a5403b07ba81b381dfc799b7884ac72dfa6ee7753","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0c7d3f36e3bb4270edbf7abd99cd2dab772df274cad1c27c7e87e302b8eb1c23","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0e9612ab3e2095fdf2eeeb3b08d690f03ce16e7f7ce948a10d2159b267769651","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","0f11324ad653d8d841962b0eeae9f68b80243d4ef7df4f2404ed4c3e45ba5197","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","13d0363b8d765c87a57eb42c4988320a9c2e7fa09024aa972f4b13d7699a552d","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","15d41240067e2335a0354a4e910b6610f2b8f079b8f67186f10181622b4a8999","1746f4f9d47b7dc42280dd34e664b3ec410d3cc69ac76933707499ffa34c79d4","1754adaf40732c3a8c73d2285c25a8b6c8c9d3e68370de618a0ffa8f3e60fb6d","182f48470fff7a26ce3a833c886f8ce9eec3bd4a96aef1c784c670f1b5e73431","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","19e75be8ed4dfba2a6f8034154052160a7a181b17d887b3e8724f3e3c111c31e","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b3ec24337f0252a00cfeb6df0a0f5d2b6d737dbea61b8d0b4a643f4c686df6a","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1b8cad98d53da179ab05eb47c1783f4c8b45b9f39c635e7a337285f5cd9621c1","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","20d01a387b4d0801cb588492ede88cae7bade9b7ea3591d9e954add1e67cf4ce","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","22ef13e60456fe9046dfe72f20122362aeefbbb445632231b8e364ed9b50e135","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24278a8f6b5925968be17b45f7db4c08169ddd5c92cbc103a166a690c02dc351","24373b643450d9dd3b8a5b0e74a5fec2844cd8cbca7d8a57dbc8b9ad9eade9dc","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","2905a2b4a58bd9ec1c4f77fd3d1d246c02caa49d806272756dd039c79521442f","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","299e929f58fe7d2878ec59ba6ad9fb74f1b1e550e488a4512373b9621f089844","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2b4f7c8dcc95ca8182105b9b6806391666e6a2c3a5c80d3ce5a5f04fd6cf9122","2b5e739c8f9602c585e67554c457e6e53351679afd56ff324f8fecc80f0891f1","2bc251ffb58a0d03480748058eff4c44079a0f21d75743063cef50263982337a","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d46924a94c85f4275a449dd3d9eb6c602cf8a9104db19d224e3aa469b858d06","2d5048eeef90792c0a2b9aed7305598a28db2103fed3903462c6c1882733c3e8","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2df1610ac1b912232030b5507e5e944515b0f1549bf2b76ecfb12baf0f40ccea","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2e872e9d3ab8b553270e79673060c50c1afd68a41fcf9fdd0a13cba80be0dfaf","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","2febddcced970d495778f33fff212929ac99c23adc42be0c1062f5c8676ffce0","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","31fe4b51d55cd99a4692d2cb787d362cb4c0d0998d3e001efdb5cb7ed838340f","3242912d15a34fbaba05e5e4ef959577b2572533305bdd2e4aa24fe8b0fd1173","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","341a43310dc5bc12018f1c3466916b4bec462a3ee08c09fc27c42d1a6914c63c","3442ba5c7643c793f62d90ca841f7891b3dbf97f028bc7b62f8b4f88c1266d1c","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","3600e7356a3741ef02f8b2ffa6a6b5d822dcbb170771f2ea33312dff4470f431","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","3962789d05f324d436a363700cbb5ced5aba791d782b3c0ea73221fe0c1f0b97","3966e5e53811c43962f5d0953e5da4753eacefbea27ecba9d36af2fd8e4fd52f","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3bce154e59c5c45216bb5372a352e948d6cb365bb1bd47d4666ae0412e507ca4","3c75b650f3fa8217597b01d3aaf25427ae2a658a7c966afeecdb391d3ba547ea","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3d642ccf9ca4a0f7f5dde1b41f65c99e9c447cbb9e64883b67e4fdf76f216f52","3d9fd2c5877483382f0c7331206393e42827b5dccfd60549a6771b7a5659e524","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3dfcea4ee3d0d0ed09b1f77bac48b33b64ab4620cbfc74fe0e4201b4cdb81ce6","3dffc36586e9078f750b0a2b4cc2c70a17a81294903186dbe8cc47cf8055b9bd","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","3f5465798dbc2ad279ca4849d5d0f819bad01455e0dd2a9d98afd4b55cfbd7ee","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","4134a3936170c1fb5fa6d2e2329185a981436477a66b7d31e827c363691bad50","414259a2fda4a1a49729be6fb1aced4675ee9cbdf990aaafb8e5b3153b54d64d","41baa5d98b5bab2ee01cad50c05b83edd8cdfeeb00f30b9406b4b2ec6d13d738","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","444342c21a4743af5961beeebb88088f5d2a0649f76c71973a7706a744f5efd2","4457ab439bc8f212d83442dc7500e9d45ffac849d0f77cb97686d9b0672fc3dc","461d34fb1d53849951a7e715e52342372d779299fbcad210794235c610dadf64","46a24cd8e385b748f40d9271b1e856dd6d68c91ab356abb11ff6b65f1ef936bf","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","471570cdf8144df0c32aba1730aba24c7e42e5ec317af771ffa169f5c842d117","47b5cb2b011c0f7012d75e88eb86a10f3f0bd48545db139669e654cac1f69650","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","48262b98c0bdbd5ee2314345726d23630ec1771735db8fe5f1a8590b662c9962","482cd15ecd9cfbd8e1943c0fcde0bbf1d875392dc2a701b698f48bfba684a062","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","48de3afdc6ee73ed121d1433bc6367a399286d5f8c2c63670a0b3b9752a36175","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","49ee4a3f2a8918bdbbafb312cfa807d9982800d13d29ee292c6c0daad8b9b8f1","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4aecbdfafb68feb3124c39219498241864bcf1ceaf87fbf80598b1dd87a9191d","4b076b124afadf178a3e736d3dfd142e4dff120b6a8aa94a06e0c4c86cfc1142","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4b6ab2768e1ff3716ac8565201c031a820c208db9ea6ae1495dd782e7557a3ab","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4ece7844e2b35705ac39fa25913f6909aad5b4b7446bd637ced46b47c0db135c","4ef30f11bd4dd9d2eef8716d88a83010546e54594b2726de84f6d587651ee940","4f03e231c0dc5c9bb2874f6856382d5b205758af9678fffdc7552d4e4ae9866e","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","4f6fcf4dd7e73d86e06bdb9c14a1078b61c0efb2663ced9bfbc5f46fbb4c6d8e","5029c7b222158ab3f325168fa543d84fd2332d2e3e38db1ce7b83899cef201d1","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","521ed246c4119acd6b579b6eefa23389a1655df54aa35de7671743979ebfc68d","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","55267f058e9f085117765e4ca72ce875b622ceaceed964f6c396073214835c28","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","55dcc23ce52b3918a60029d9398f262216471c280bfe66421cc63240533a6087","566ddcfc45ea5edc695626826ed185930e910fd9107c5bc1844c717b714c15b2","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","581337891936ba630d34ce9f6b803b82a2130791510f15bab24a07332400417f","58901d008c36a777dc138fa6b6d198030e0e843bc889cbad3acb954c826b3608","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5be05ba74075b8f139be565c47688a4f395ce71452dce5cf7da4348c7ddb7aa0","5c0206d9d014821b52a43d7b222327a89d4ee2f5b1e21813dfa659a69f7426b5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5de00a2f5eabe86c14f360304115f4136c41df1fb664eef6da26072fe7623d44","5e3a589b627edaf7005c60382475fae7229adc4ffbaab6d6fd03e9f08a0a8e19","5e43baca07fb966bf1c4b3ac06bb819577e477a84c5d8d3a9a19c391ada2e0b5","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","600ec184ee9964881bcaeaf72ad38a72db05d5b629d301cb323fa1ee9369b572","616c4dbde10f465da822d8a788feada26e5f915c7fbbc06232287cd1899c3044","62a713311297a7145d3610ee60dd6626ee543645a1918b050c629207561efb5e","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","6312b7a9f8252f49b8ea0cbd0580b80bbb221db574ea74939823ed9d4140d73f","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65725e1cd3323fdf44ec47067fd6670b441ff5f82e99485e1a4fc7d475f14340","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","6601b2bb6c908a46ae2985d4683c8baeeec87b0688b9b33d3e8900286bf4d6ae","666e7f698fbeef24e13e91ccfa334cf781233e060fa86bcd7d4d0eb00b30f3d5","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","671168c05789fc651cd961a5a15e10adbb76656b802cb0fcbab468ab76412ca2","671d95a6c09bb7b05a5721d52cb761300a2c8f376aac20be2948b7e97bf302b7","680de944f1f5380c579003e329ed6f10702ec8ebaaa8208743775588d2424d05","6989ec486a05550633170d2aa79188ad9b03aeea6c7859dbf18790ba78c5427a","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6b00dccaa7deabc750679ab085b237a2bd025bd971ee1eb7bdc333b393b19084","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","7075f89b1271fd04fa02d4db95c0f0bd6bdec24e53a7953d7afaeba40e17e8e0","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","74b5d2ed555740db7b4b0ea9b73f8fe00965fea8e14d4f075eec26ef7a189c68","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","786b0c2856bf1f3f809e5903b0a971f1e072af5635aa50bbb9b1449f96d7b694","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7af2394d2e697f355439e841b6323ffbbf8b90b2e48bf64873791fbbfdf15b44","7b947ed0a9e6e7ba180921434b993c62ac70bbaba6af0a1618569a2d4b705201","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7c2a1c4c4c03e3d68d63e0ab58e4e34d3f2bc1a4a837a055fd13a4e9f95ce6cb","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7dd54213b65fa0a6ce5aa3c204b5209b67ec16306b776aed7dcf9e6601d74235","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7efb464c6d7b469303c43f718063d8456df6fe43534b5d8a4229f5b9ba9705cd","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","80627bb83607d94aca13d445aa0ca4032d2d00479acb3c2f9d1a3cdeffe41f10","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","83347356a898238c013dff73246440e361a9e24cc3c4e0fe0e850467772b4938","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a06a604bbe36d72da976fcdeb88665c762b0f0de44193576ef2e0cf29aa9ad","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","85e961266b36e0f8ec2a477f1f1dfe7ad748fdde9d906f7bd3241e6924866ea9","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87789dab547842b4e0c822758e1325a3cbb046063e11e105a4779b3741e01cde","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89a96597dc9c218633adaf94bb5d6dcf4cad8f5e0b6f5522a28e3ce8d8b2865f","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8a720f848e9dbca63355ed5cf8e79df3d3ef3a6a1fe2b599349128f72417e95e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cce78271b4f001606069a575a172041fbddc52de6b582c920aa3d3b5d5b67ae","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e10a3499a8311b3142f240631df7fdd58c46714e4a954280f8a59620464b7ff","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8f3827158091bbed154d21c843284ad472a4552da2eeb858748aa29676e45662","8f4a21c70e4b933eaa4f9cee119945dd2ebeac532e82d34e17511b38cf03608c","8f6debc54d2bd7abb42f581f2204fc78b27ff8c67ee4b6392b4d71c5f983ee9d","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","9056c360e59fc78edde932b54124df317f2f04a90c0c6eb7825a87b89edf1ca0","90aff66decaa3a0998e9a6741963713c0c82fc70da505519e3d60204bf715fa0","90dc4cac6326293bb54486d3c873b83299e9a5ec8c86a68bf1cc131f5e4e2437","918126027fabb7947dd4ae810dd561ac22167102f9f978f86906624ebe88c9ea","91b495938bc6015970bb02c844368d3eee84425b472772cdb374a5347db86de9","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","922a332aa100d622da733aea8fc74094739bb63cd480d3349a14d2418ab6b1bb","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","9460f427df72c238c4b55f39c8864f1fa3685b0716a53227ea6f7b591d955c82","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","958ea8ff9a1354ba11254f2fc94f6ed1f98e10041a198331b6af66bc1b175af2","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","97edc66e594bae06bb273db84a35d84c8162a1fdf55ed46d781419a9f6a2e4f2","9808ac162523484fc50a7d41dc20fd4d5dd365a91406cfea580aab9f69663fe5","985638a05562bb796911ec231d306b81e36ed6b58219b3bde874559e9600b59f","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","98ecc99d3396aa9a35ce97456be66c1aac0cc05bab88aa99109649291e61bc0a","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9a8f2389b8ebc29d3769868ff8b918fdeb2236d88192fcf76ab0ea3db0857fac","9af18d8cfee466bc061271d82254d7ea638b59b8d5a3901c6610d5baed85c38b","9b01e565a1541f9e652d7afbe62e3bbff28430c1ccac2226ea434f45fc9a99d0","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9c3b318c461b56a8d277133a6b947ef5618690ec281c42e9de6c27f22458d4d4","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d1a0da545eb6b2e16b18fdd305a2c000ff2340c19ac843914b45f6a4f936227","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9dfd29090b50334ae229e4a7e812cfb9f6204a66dde563e215d8f52e884cb103","9e77badd0923fd79ca9761a41780ee4dd4f9ca9b62512f4fb59c7f8418494da0","9e9edbe6c5c90ef3aa89a71fd1ec54069818d2ff48ce0f35019b811add042047","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","9fb8c5aa087d38dab064a2d6054826377eea3dda98229725c2523f63a87e4750","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a2aec2d2f35d7174801247141d637e77c4f34e478c575b0e0a04c6251efaf993","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a3d6708506fb5c28f45f0d610bedba11b1ec7bcdb363ffff3aa4cddfa515f56a","a476183540f2e7121e533bf2dd9125dc071c81acc880e88cb435cad7a6d35b97","a4a8cca930cdfd15285ac3a7aa757d61501fb77fc12a7c3fbd78c096b279cf63","a50654761d6812cd811df02199e1b7b25c9b0d65e591f65430f9277ec43d9c50","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a644885c31f390b5e6b7fe2fc8d086d9144699295ccb6ffa51b3f7c76c8ca71a","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a70d82083944311ccf98b6aa8da5adebc93c655759eaaf8d79624bb3d322abcb","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acae1db4aeb323f3b637fa11b087c3827a2fb6d69718362f54e3bc48f70ef7d8","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ad0e6d78c1e450e19bfca4a0e904644ab0ae315607811a28ac3dba20de869786","ae43a4d252290ec0e18c64dd58d51bc885020b2473e71e3ed0741184c9f006b7","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b3f50ed7eac0e9c54b74c4f4e02297dd2d2465ce4b699bcc15cfddf54c0f0f81","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b4f2140fb766faf0065a563ac3664f395b24c81dab0d0d0d01df47b22e888d29","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b5c085be21651d8579e52cd3ffe4abe6b7f45c5a9ee84d38c47b4734409918d8","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7fda8f4bf81f8213d18e3c314df5100ccb6b8db7aed6b70aaf202deb606a14f","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b83b7229045affbb98f8fc46f289ad05e6626ef52e3ed2f7e70d332a54a69e2a","b83f5334b85422ac110a24286d5af7003f2fb5b0d783efe257b38a2281656422","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b8b8c5cad182083f45ce2d05d036e6bfe91cde1fb63f2e5a97c683bb7ef7ea0f","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba5c707cf9be40fe966c08807779994e20ca3f30ea9d73e26ce31ca334c05640","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bad8f17b1d399ea125c524895571601c90b6c93418c248bd4ebcc7886bae9878","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bcbef69f1ba50e45f3faf1b4529c32cdcf1e5a6612b5bcbc6aa6790ee14b54eb","bd3bf6053f4d423ff21f7ffbed9d0e68f3ea64b7292c048e9a37ade342bb7b39","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c055d3cfd85b2ed4607b0d9d3a15ab7204c9f149599f748347dca4afe102af0c","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23a43ed460117f663cec698412729fd91b5aaceb48cc4e55a785b525661bf1a","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c24546a064b9315172ce0f951bd5fa2cd1b9884231cf1bdc1dc714771f1b3886","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c2e96d98c8ebc10237a2af1c224f626acfb9072c83078f4a8c6d9ef0a58b4a8e","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c4ebd58c4ff78c9fc0cd17d80ed563520f7908f9d1106735ca0f5a7abed202a6","c5db39bbdc8c2bd2aa7b58c28c3df9e407955cc3250ce7825c842cc4c30eaca3","c65325f807190f7084346376e2f48fc2b6bb946004a1fac1d8d117930e93d462","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c69b32bee3e47d9568ef9acdcd59ddef6f6ebe3b3a45d257f6c5d4145890ef2e","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c82f38f23e7ed3e1024661b7a22ff694e88d3b268240e2bfc98e630df8a062d0","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","c93cd4cb5cf38fe6221fa8ae171ff54240b5f99ba80cd740ffac69c57e5fa381","ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfb9705939742247da0cb71fdfd8b5f7a1bef6f1c2f0979a8f42e54c4a480980","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d151ffa66d8d096e0272f0dfff6c27e978cfda570f7498a727593081888b4ebe","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d268e680ee1136a239a40ebf005b30db6f3b52a228016f3193496f86250f15c3","d2989a1607fd5303615937b8c117d127b1b1cde519662ab1e1324390220e8612","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d2e82db1f6e479001e15c9890732b5049f8c900c568d5e3d15707a95a7dc3610","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d36034e2f9cc642d0f9f24cf834fa741bac5b8b139cbd2f50e2065161c9f3cb0","d36eb7456d2a42d1cffa4b60708e2bd3116f7f6758c96bbc0fee0f1704ad8a79","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d555a0d2329caace197c1468fe6708349125762377ee3bd04b031b7eacfc26aa","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5adedc08fa25bd06734afd1db3510dbc53ba0dfdac20cf601fde0c77702a72a","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d67ec5caeb2af5f9c57533a34cbde7daba5f5b2e5e6ce34c3250893eef25f13c","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d7a44c85c25ceb7d42280f0c2576de52a3b3cc3ad2333e788ecdc7f7f7fe4b3b","d7f5db16fd3b6ddd5acdf655e090ed0e84cb89d9eafbe1ea92b273b71a38f173","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8c8b3c52c89cd715a7fdd2759a6f73c3a5f505303b110656cc35f7549a37cfb","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da2acdac413e8367fe0a329922fcad3565a24c89dba87907e6d64bb3e6315922","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","daa0fc9f9dd08cb2dc48bf33c9808cfeebff77cb9fba48f98ef597bb9dd6df55","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","db66a999537b941fa6d512908894ba86e8dadd0e14b290ebc119555b7e60264c","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e519e78acf2938460c7ee053981c744dafc7642fd03b56a117d5fec78d258b90","e5db07b7fb0eed216d838fbeb9491257cf54f9bd537a68c8edae7a89fe64c8d8","e61705ac769699a40c52e332cd890187ca9301fc6e64393c8c9064144ccc2dbf","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","e981ced1bfce64a19fa8de1cd518a93f4669d01548f4819d0e1dbb50d266fe04","e9a8e5be83e18caaecd4cf74dd7f020e0cc7de9d910cb7845e5ec615cb26b14b","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eaeec7c06d1408fa6db5d7ada0a232b1633ffdf0ac815033c29c159352347c81","eb708890ac7e19bd53007ccece064f7e2a069a3751270b4fdafdd1668136dee7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","ebcf0bdb3541c8bfb7c9a53f632329b77341cba6f1a2fa0dc9704acfa3276dca","ebd87e3505f3a1adff0c86ffec6c380734df718301b216b7ee089c174130de60","ecd5e83ba8c8eba6cef9c3da1edb8a84e3dfb4ed71d9a2c1908f2c4d26b26737","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0e1db9b86e2132f004ebf06819eb55804f766bc03ea5d80f487d5d98bad8892","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1297fd9ecf981024e1544f7f048705377b53219240274bb803ac30e4a52084f","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f260b4b268e85a8f1b04b2fc69ffc0bca473d2e42de6f2f70128bedc16558201","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f4de28905adbfe6ae4bc38f8bf5f47a444aa8d0f2023faaa431d6f72f9a3edea","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f5403593ba12130c04827f88d019103e924651caa518b7c290673a02f7cb409f","f5681dfc71121ed0f88146a19479675f2fabc6ed376fd5d162e50d815c048d66","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f700bd87d4a758bb71f47731121a9b2259a9ffbd50b584b82f4e6a1f205c276a","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f7993302f695430a0ee938b1b3684fdfec4055bddb378b52c81785c0319e8c98","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","facb45d3084caa490d9b0ac2bcfcee89629a4c3db5926ec9256a9d27d25559ee","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fbd74e4b8dc748b2efdd70aaab07adb80d7f15a38c1261de85bdfd9591ff106a","fc475f9c2d8bee2ffea435e86e6b39b6e3e071143a4a1fdf6765b0da13b66de6","fcaf6bc23f7cbddda8141a846ef23b21b9cc37e51b805f0f75b3cda2d4d3f019","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","fdbd44d3c55504edfa1bacb4c9b7a6c102659d4deef0ca91b9b7ac567ea9cfc5","fedf2577267d6dcd060ebc4ee8de6ccdafa60ab26b78d74c1e8c784252fecb17","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","0052dfb9eafceabaa590f4497e4d42f19020718c84b981d265edefd432ccf8dd","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","043eff38ad27212dd4d046617d0fe5e18544a03829d8b1130fbba2d052e1f072","04652cbc95ac4dcd21b837b38f2ca5a0ccd4d0946bc13fdb31c9c15a578d3a2d","04d17203f03279980862496517a1f0861be5f6cc8063bfbf92f8f8ac19744fdd","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","076259a45e71df780b012d29618c17739246c86321d2ff05a6c272bcca8db675","076fa091c878b19cf56a94be0966dbcd58d52c1839f9d4b85bbfdef650cbdb88","078903d1d79c2afee401dcdb8a440ca9d011114249e63f20175ef7c8ec392029","08b3dc660b9d2bbbe75b590b2b86d941bf935a254cd5f09de71ee6894f4048b6","09e90ad705af012a8c36efbf296757f35adf9c9ce3b8908791c75d72c192973f","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0b2d1557ff6df5f4d65d540a5403b07ba81b381dfc799b7884ac72dfa6ee7753","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0c7d3f36e3bb4270edbf7abd99cd2dab772df274cad1c27c7e87e302b8eb1c23","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0e9612ab3e2095fdf2eeeb3b08d690f03ce16e7f7ce948a10d2159b267769651","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","0f11324ad653d8d841962b0eeae9f68b80243d4ef7df4f2404ed4c3e45ba5197","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","13d0363b8d765c87a57eb42c4988320a9c2e7fa09024aa972f4b13d7699a552d","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","15d41240067e2335a0354a4e910b6610f2b8f079b8f67186f10181622b4a8999","1746f4f9d47b7dc42280dd34e664b3ec410d3cc69ac76933707499ffa34c79d4","1754adaf40732c3a8c73d2285c25a8b6c8c9d3e68370de618a0ffa8f3e60fb6d","182f48470fff7a26ce3a833c886f8ce9eec3bd4a96aef1c784c670f1b5e73431","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","19e75be8ed4dfba2a6f8034154052160a7a181b17d887b3e8724f3e3c111c31e","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b3ec24337f0252a00cfeb6df0a0f5d2b6d737dbea61b8d0b4a643f4c686df6a","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1b8cad98d53da179ab05eb47c1783f4c8b45b9f39c635e7a337285f5cd9621c1","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","20d01a387b4d0801cb588492ede88cae7bade9b7ea3591d9e954add1e67cf4ce","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","22ef13e60456fe9046dfe72f20122362aeefbbb445632231b8e364ed9b50e135","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24278a8f6b5925968be17b45f7db4c08169ddd5c92cbc103a166a690c02dc351","24373b643450d9dd3b8a5b0e74a5fec2844cd8cbca7d8a57dbc8b9ad9eade9dc","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","2905a2b4a58bd9ec1c4f77fd3d1d246c02caa49d806272756dd039c79521442f","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","299e929f58fe7d2878ec59ba6ad9fb74f1b1e550e488a4512373b9621f089844","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2b4f7c8dcc95ca8182105b9b6806391666e6a2c3a5c80d3ce5a5f04fd6cf9122","2b5e739c8f9602c585e67554c457e6e53351679afd56ff324f8fecc80f0891f1","2bc251ffb58a0d03480748058eff4c44079a0f21d75743063cef50263982337a","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d46924a94c85f4275a449dd3d9eb6c602cf8a9104db19d224e3aa469b858d06","2d5048eeef90792c0a2b9aed7305598a28db2103fed3903462c6c1882733c3e8","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2df1610ac1b912232030b5507e5e944515b0f1549bf2b76ecfb12baf0f40ccea","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2e872e9d3ab8b553270e79673060c50c1afd68a41fcf9fdd0a13cba80be0dfaf","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","2febddcced970d495778f33fff212929ac99c23adc42be0c1062f5c8676ffce0","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","31fe4b51d55cd99a4692d2cb787d362cb4c0d0998d3e001efdb5cb7ed838340f","3242912d15a34fbaba05e5e4ef959577b2572533305bdd2e4aa24fe8b0fd1173","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","341a43310dc5bc12018f1c3466916b4bec462a3ee08c09fc27c42d1a6914c63c","3442ba5c7643c793f62d90ca841f7891b3dbf97f028bc7b62f8b4f88c1266d1c","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","3600e7356a3741ef02f8b2ffa6a6b5d822dcbb170771f2ea33312dff4470f431","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","3962789d05f324d436a363700cbb5ced5aba791d782b3c0ea73221fe0c1f0b97","3966e5e53811c43962f5d0953e5da4753eacefbea27ecba9d36af2fd8e4fd52f","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3bce154e59c5c45216bb5372a352e948d6cb365bb1bd47d4666ae0412e507ca4","3c75b650f3fa8217597b01d3aaf25427ae2a658a7c966afeecdb391d3ba547ea","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3d642ccf9ca4a0f7f5dde1b41f65c99e9c447cbb9e64883b67e4fdf76f216f52","3d9fd2c5877483382f0c7331206393e42827b5dccfd60549a6771b7a5659e524","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3dfcea4ee3d0d0ed09b1f77bac48b33b64ab4620cbfc74fe0e4201b4cdb81ce6","3dffc36586e9078f750b0a2b4cc2c70a17a81294903186dbe8cc47cf8055b9bd","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","3f5465798dbc2ad279ca4849d5d0f819bad01455e0dd2a9d98afd4b55cfbd7ee","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","4134a3936170c1fb5fa6d2e2329185a981436477a66b7d31e827c363691bad50","414259a2fda4a1a49729be6fb1aced4675ee9cbdf990aaafb8e5b3153b54d64d","41baa5d98b5bab2ee01cad50c05b83edd8cdfeeb00f30b9406b4b2ec6d13d738","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","444342c21a4743af5961beeebb88088f5d2a0649f76c71973a7706a744f5efd2","4457ab439bc8f212d83442dc7500e9d45ffac849d0f77cb97686d9b0672fc3dc","461d34fb1d53849951a7e715e52342372d779299fbcad210794235c610dadf64","46a24cd8e385b748f40d9271b1e856dd6d68c91ab356abb11ff6b65f1ef936bf","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","471570cdf8144df0c32aba1730aba24c7e42e5ec317af771ffa169f5c842d117","47b5cb2b011c0f7012d75e88eb86a10f3f0bd48545db139669e654cac1f69650","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","48262b98c0bdbd5ee2314345726d23630ec1771735db8fe5f1a8590b662c9962","482cd15ecd9cfbd8e1943c0fcde0bbf1d875392dc2a701b698f48bfba684a062","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","48de3afdc6ee73ed121d1433bc6367a399286d5f8c2c63670a0b3b9752a36175","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","49ee4a3f2a8918bdbbafb312cfa807d9982800d13d29ee292c6c0daad8b9b8f1","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4aecbdfafb68feb3124c39219498241864bcf1ceaf87fbf80598b1dd87a9191d","4b076b124afadf178a3e736d3dfd142e4dff120b6a8aa94a06e0c4c86cfc1142","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4b6ab2768e1ff3716ac8565201c031a820c208db9ea6ae1495dd782e7557a3ab","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4ece7844e2b35705ac39fa25913f6909aad5b4b7446bd637ced46b47c0db135c","4ef30f11bd4dd9d2eef8716d88a83010546e54594b2726de84f6d587651ee940","4f03e231c0dc5c9bb2874f6856382d5b205758af9678fffdc7552d4e4ae9866e","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","4f6fcf4dd7e73d86e06bdb9c14a1078b61c0efb2663ced9bfbc5f46fbb4c6d8e","5029c7b222158ab3f325168fa543d84fd2332d2e3e38db1ce7b83899cef201d1","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","521ed246c4119acd6b579b6eefa23389a1655df54aa35de7671743979ebfc68d","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","55267f058e9f085117765e4ca72ce875b622ceaceed964f6c396073214835c28","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","55dcc23ce52b3918a60029d9398f262216471c280bfe66421cc63240533a6087","566ddcfc45ea5edc695626826ed185930e910fd9107c5bc1844c717b714c15b2","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","581337891936ba630d34ce9f6b803b82a2130791510f15bab24a07332400417f","58901d008c36a777dc138fa6b6d198030e0e843bc889cbad3acb954c826b3608","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5be05ba74075b8f139be565c47688a4f395ce71452dce5cf7da4348c7ddb7aa0","5c0206d9d014821b52a43d7b222327a89d4ee2f5b1e21813dfa659a69f7426b5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5de00a2f5eabe86c14f360304115f4136c41df1fb664eef6da26072fe7623d44","5e3a589b627edaf7005c60382475fae7229adc4ffbaab6d6fd03e9f08a0a8e19","5e43baca07fb966bf1c4b3ac06bb819577e477a84c5d8d3a9a19c391ada2e0b5","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","600ec184ee9964881bcaeaf72ad38a72db05d5b629d301cb323fa1ee9369b572","616c4dbde10f465da822d8a788feada26e5f915c7fbbc06232287cd1899c3044","62a713311297a7145d3610ee60dd6626ee543645a1918b050c629207561efb5e","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","6312b7a9f8252f49b8ea0cbd0580b80bbb221db574ea74939823ed9d4140d73f","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65725e1cd3323fdf44ec47067fd6670b441ff5f82e99485e1a4fc7d475f14340","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","6601b2bb6c908a46ae2985d4683c8baeeec87b0688b9b33d3e8900286bf4d6ae","666e7f698fbeef24e13e91ccfa334cf781233e060fa86bcd7d4d0eb00b30f3d5","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","671168c05789fc651cd961a5a15e10adbb76656b802cb0fcbab468ab76412ca2","671d95a6c09bb7b05a5721d52cb761300a2c8f376aac20be2948b7e97bf302b7","680de944f1f5380c579003e329ed6f10702ec8ebaaa8208743775588d2424d05","6989ec486a05550633170d2aa79188ad9b03aeea6c7859dbf18790ba78c5427a","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6b00dccaa7deabc750679ab085b237a2bd025bd971ee1eb7bdc333b393b19084","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","7075f89b1271fd04fa02d4db95c0f0bd6bdec24e53a7953d7afaeba40e17e8e0","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","74b5d2ed555740db7b4b0ea9b73f8fe00965fea8e14d4f075eec26ef7a189c68","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","786b0c2856bf1f3f809e5903b0a971f1e072af5635aa50bbb9b1449f96d7b694","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7af2394d2e697f355439e841b6323ffbbf8b90b2e48bf64873791fbbfdf15b44","7b947ed0a9e6e7ba180921434b993c62ac70bbaba6af0a1618569a2d4b705201","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7c2a1c4c4c03e3d68d63e0ab58e4e34d3f2bc1a4a837a055fd13a4e9f95ce6cb","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7dd54213b65fa0a6ce5aa3c204b5209b67ec16306b776aed7dcf9e6601d74235","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7efb464c6d7b469303c43f718063d8456df6fe43534b5d8a4229f5b9ba9705cd","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","80627bb83607d94aca13d445aa0ca4032d2d00479acb3c2f9d1a3cdeffe41f10","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","83347356a898238c013dff73246440e361a9e24cc3c4e0fe0e850467772b4938","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a06a604bbe36d72da976fcdeb88665c762b0f0de44193576ef2e0cf29aa9ad","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","85e961266b36e0f8ec2a477f1f1dfe7ad748fdde9d906f7bd3241e6924866ea9","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87789dab547842b4e0c822758e1325a3cbb046063e11e105a4779b3741e01cde","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89a96597dc9c218633adaf94bb5d6dcf4cad8f5e0b6f5522a28e3ce8d8b2865f","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8a720f848e9dbca63355ed5cf8e79df3d3ef3a6a1fe2b599349128f72417e95e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cce78271b4f001606069a575a172041fbddc52de6b582c920aa3d3b5d5b67ae","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e10a3499a8311b3142f240631df7fdd58c46714e4a954280f8a59620464b7ff","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8f3827158091bbed154d21c843284ad472a4552da2eeb858748aa29676e45662","8f4a21c70e4b933eaa4f9cee119945dd2ebeac532e82d34e17511b38cf03608c","8f6debc54d2bd7abb42f581f2204fc78b27ff8c67ee4b6392b4d71c5f983ee9d","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","9056c360e59fc78edde932b54124df317f2f04a90c0c6eb7825a87b89edf1ca0","90aff66decaa3a0998e9a6741963713c0c82fc70da505519e3d60204bf715fa0","90dc4cac6326293bb54486d3c873b83299e9a5ec8c86a68bf1cc131f5e4e2437","918126027fabb7947dd4ae810dd561ac22167102f9f978f86906624ebe88c9ea","91b495938bc6015970bb02c844368d3eee84425b472772cdb374a5347db86de9","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","922a332aa100d622da733aea8fc74094739bb63cd480d3349a14d2418ab6b1bb","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","9460f427df72c238c4b55f39c8864f1fa3685b0716a53227ea6f7b591d955c82","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","958ea8ff9a1354ba11254f2fc94f6ed1f98e10041a198331b6af66bc1b175af2","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","97edc66e594bae06bb273db84a35d84c8162a1fdf55ed46d781419a9f6a2e4f2","9808ac162523484fc50a7d41dc20fd4d5dd365a91406cfea580aab9f69663fe5","985638a05562bb796911ec231d306b81e36ed6b58219b3bde874559e9600b59f","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","98ecc99d3396aa9a35ce97456be66c1aac0cc05bab88aa99109649291e61bc0a","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9a8f2389b8ebc29d3769868ff8b918fdeb2236d88192fcf76ab0ea3db0857fac","9af18d8cfee466bc061271d82254d7ea638b59b8d5a3901c6610d5baed85c38b","9b01e565a1541f9e652d7afbe62e3bbff28430c1ccac2226ea434f45fc9a99d0","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9c3b318c461b56a8d277133a6b947ef5618690ec281c42e9de6c27f22458d4d4","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d1a0da545eb6b2e16b18fdd305a2c000ff2340c19ac843914b45f6a4f936227","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9dfd29090b50334ae229e4a7e812cfb9f6204a66dde563e215d8f52e884cb103","9e77badd0923fd79ca9761a41780ee4dd4f9ca9b62512f4fb59c7f8418494da0","9e9edbe6c5c90ef3aa89a71fd1ec54069818d2ff48ce0f35019b811add042047","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","9fb8c5aa087d38dab064a2d6054826377eea3dda98229725c2523f63a87e4750","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a2aec2d2f35d7174801247141d637e77c4f34e478c575b0e0a04c6251efaf993","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a3d6708506fb5c28f45f0d610bedba11b1ec7bcdb363ffff3aa4cddfa515f56a","a476183540f2e7121e533bf2dd9125dc071c81acc880e88cb435cad7a6d35b97","a4a8cca930cdfd15285ac3a7aa757d61501fb77fc12a7c3fbd78c096b279cf63","a50654761d6812cd811df02199e1b7b25c9b0d65e591f65430f9277ec43d9c50","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a644885c31f390b5e6b7fe2fc8d086d9144699295ccb6ffa51b3f7c76c8ca71a","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a70d82083944311ccf98b6aa8da5adebc93c655759eaaf8d79624bb3d322abcb","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acae1db4aeb323f3b637fa11b087c3827a2fb6d69718362f54e3bc48f70ef7d8","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ad0e6d78c1e450e19bfca4a0e904644ab0ae315607811a28ac3dba20de869786","ae43a4d252290ec0e18c64dd58d51bc885020b2473e71e3ed0741184c9f006b7","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b3f50ed7eac0e9c54b74c4f4e02297dd2d2465ce4b699bcc15cfddf54c0f0f81","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b4f2140fb766faf0065a563ac3664f395b24c81dab0d0d0d01df47b22e888d29","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b5c085be21651d8579e52cd3ffe4abe6b7f45c5a9ee84d38c47b4734409918d8","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7fda8f4bf81f8213d18e3c314df5100ccb6b8db7aed6b70aaf202deb606a14f","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b83b7229045affbb98f8fc46f289ad05e6626ef52e3ed2f7e70d332a54a69e2a","b83f5334b85422ac110a24286d5af7003f2fb5b0d783efe257b38a2281656422","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b8b8c5cad182083f45ce2d05d036e6bfe91cde1fb63f2e5a97c683bb7ef7ea0f","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba5c707cf9be40fe966c08807779994e20ca3f30ea9d73e26ce31ca334c05640","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bad8f17b1d399ea125c524895571601c90b6c93418c248bd4ebcc7886bae9878","bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bcbef69f1ba50e45f3faf1b4529c32cdcf1e5a6612b5bcbc6aa6790ee14b54eb","bd3bf6053f4d423ff21f7ffbed9d0e68f3ea64b7292c048e9a37ade342bb7b39","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c055d3cfd85b2ed4607b0d9d3a15ab7204c9f149599f748347dca4afe102af0c","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23a43ed460117f663cec698412729fd91b5aaceb48cc4e55a785b525661bf1a","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c24546a064b9315172ce0f951bd5fa2cd1b9884231cf1bdc1dc714771f1b3886","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c2e96d98c8ebc10237a2af1c224f626acfb9072c83078f4a8c6d9ef0a58b4a8e","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c4ebd58c4ff78c9fc0cd17d80ed563520f7908f9d1106735ca0f5a7abed202a6","c5db39bbdc8c2bd2aa7b58c28c3df9e407955cc3250ce7825c842cc4c30eaca3","c65325f807190f7084346376e2f48fc2b6bb946004a1fac1d8d117930e93d462","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c69b32bee3e47d9568ef9acdcd59ddef6f6ebe3b3a45d257f6c5d4145890ef2e","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c82f38f23e7ed3e1024661b7a22ff694e88d3b268240e2bfc98e630df8a062d0","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","c93cd4cb5cf38fe6221fa8ae171ff54240b5f99ba80cd740ffac69c57e5fa381","c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e","ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfb9705939742247da0cb71fdfd8b5f7a1bef6f1c2f0979a8f42e54c4a480980","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d151ffa66d8d096e0272f0dfff6c27e978cfda570f7498a727593081888b4ebe","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d268e680ee1136a239a40ebf005b30db6f3b52a228016f3193496f86250f15c3","d2989a1607fd5303615937b8c117d127b1b1cde519662ab1e1324390220e8612","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d2e82db1f6e479001e15c9890732b5049f8c900c568d5e3d15707a95a7dc3610","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d36034e2f9cc642d0f9f24cf834fa741bac5b8b139cbd2f50e2065161c9f3cb0","d36eb7456d2a42d1cffa4b60708e2bd3116f7f6758c96bbc0fee0f1704ad8a79","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d555a0d2329caace197c1468fe6708349125762377ee3bd04b031b7eacfc26aa","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5adedc08fa25bd06734afd1db3510dbc53ba0dfdac20cf601fde0c77702a72a","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d67ec5caeb2af5f9c57533a34cbde7daba5f5b2e5e6ce34c3250893eef25f13c","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d7a44c85c25ceb7d42280f0c2576de52a3b3cc3ad2333e788ecdc7f7f7fe4b3b","d7f5db16fd3b6ddd5acdf655e090ed0e84cb89d9eafbe1ea92b273b71a38f173","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8c8b3c52c89cd715a7fdd2759a6f73c3a5f505303b110656cc35f7549a37cfb","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da2acdac413e8367fe0a329922fcad3565a24c89dba87907e6d64bb3e6315922","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","daa0fc9f9dd08cb2dc48bf33c9808cfeebff77cb9fba48f98ef597bb9dd6df55","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","db66a999537b941fa6d512908894ba86e8dadd0e14b290ebc119555b7e60264c","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e519e78acf2938460c7ee053981c744dafc7642fd03b56a117d5fec78d258b90","e5db07b7fb0eed216d838fbeb9491257cf54f9bd537a68c8edae7a89fe64c8d8","e61705ac769699a40c52e332cd890187ca9301fc6e64393c8c9064144ccc2dbf","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","e981ced1bfce64a19fa8de1cd518a93f4669d01548f4819d0e1dbb50d266fe04","e9a8e5be83e18caaecd4cf74dd7f020e0cc7de9d910cb7845e5ec615cb26b14b","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eaeec7c06d1408fa6db5d7ada0a232b1633ffdf0ac815033c29c159352347c81","eb708890ac7e19bd53007ccece064f7e2a069a3751270b4fdafdd1668136dee7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","ebcf0bdb3541c8bfb7c9a53f632329b77341cba6f1a2fa0dc9704acfa3276dca","ebd87e3505f3a1adff0c86ffec6c380734df718301b216b7ee089c174130de60","ecd5e83ba8c8eba6cef9c3da1edb8a84e3dfb4ed71d9a2c1908f2c4d26b26737","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0e1db9b86e2132f004ebf06819eb55804f766bc03ea5d80f487d5d98bad8892","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1297fd9ecf981024e1544f7f048705377b53219240274bb803ac30e4a52084f","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f260b4b268e85a8f1b04b2fc69ffc0bca473d2e42de6f2f70128bedc16558201","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f4de28905adbfe6ae4bc38f8bf5f47a444aa8d0f2023faaa431d6f72f9a3edea","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f5403593ba12130c04827f88d019103e924651caa518b7c290673a02f7cb409f","f5681dfc71121ed0f88146a19479675f2fabc6ed376fd5d162e50d815c048d66","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f700bd87d4a758bb71f47731121a9b2259a9ffbd50b584b82f4e6a1f205c276a","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f7993302f695430a0ee938b1b3684fdfec4055bddb378b52c81785c0319e8c98","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","facb45d3084caa490d9b0ac2bcfcee89629a4c3db5926ec9256a9d27d25559ee","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fbd74e4b8dc748b2efdd70aaab07adb80d7f15a38c1261de85bdfd9591ff106a","fc475f9c2d8bee2ffea435e86e6b39b6e3e071143a4a1fdf6765b0da13b66de6","fcaf6bc23f7cbddda8141a846ef23b21b9cc37e51b805f0f75b3cda2d4d3f019","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","fdbd44d3c55504edfa1bacb4c9b7a6c102659d4deef0ca91b9b7ac567ea9cfc5","fedf2577267d6dcd060ebc4ee8de6ccdafa60ab26b78d74c1e8c784252fecb17","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/.claude/skills/atlas/assets/seed/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json b/.claude/skills/atlas/assets/seed/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json new file mode 100644 index 000000000..b3a7f7c5c --- /dev/null +++ b/.claude/skills/atlas/assets/seed/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"5773499da99cf8e0d4c82dc38e5439eaa463b85570abb543d3788ee65e6c38f2"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"13dd28134211b416426c39877c6fd850ef5c839157aaa8ef7520127059e1134d"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"2b766d98419c148b801c0cb71b149fada000c9d8da49047a526c13440d3b73db"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"6036f92c7f52e18f227fe1c1ad687a628972bce43ba2cb91d4acad98c943c9e6"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"904706590286178790f843ecaeab28e0d3de61ac943bcc0e5637d3de5aba490f"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-03T08:14:29Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.","supersedes":["c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.claude/skills/atlas/assets/seed/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json b/.claude/skills/atlas/assets/seed/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json new file mode 100644 index 000000000..ec4df80d4 --- /dev/null +++ b/.claude/skills/atlas/assets/seed/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"5773499da99cf8e0d4c82dc38e5439eaa463b85570abb543d3788ee65e6c38f2"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"13dd28134211b416426c39877c6fd850ef5c839157aaa8ef7520127059e1134d"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"2b766d98419c148b801c0cb71b149fada000c9d8da49047a526c13440d3b73db"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"6036f92c7f52e18f227fe1c1ad687a628972bce43ba2cb91d4acad98c943c9e6"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"904706590286178790f843ecaeab28e0d3de61ac943bcc0e5637d3de5aba490f"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"67ed550440daef8b49622e1cdd614e581b2cb741a964774ab3a2b08bab9535ee"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"5e73ddd2776f27cc11cd7303d29f1f3426e5c6c025deb5f433f5b6d0a08474a1"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"e4291c39dfa6eaad01b9e21184629d9a96dca1232e5c880236de3207770aee89"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-03T08:33:18Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nWhen present, the inventory-derived packaged alias determines legacy Root policy before a receiver-local canonical path; otherwise the canonical source path is selected. The loader executes captured bytes and records their relative path and SHA256 in existing inspection, intent and custody as rootRulesSource. Staged canonical-shadow and source-noalias controls retain Root trust and reference semantics; a synthetic retained-package epoch demonstrates that the actual selected hash stays distinct from a newer canonical source. This provenance identifies loaded bytes, not policy freshness or authority; join it to the actual selected caller/BOM and do not describe an older alias as current checkout policy.","supersedes":["12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.claude/skills/atlas/assets/seed/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json b/.claude/skills/atlas/assets/seed/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json new file mode 100644 index 000000000..dece9c05c --- /dev/null +++ b/.claude/skills/atlas/assets/seed/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"103ae8c3bde59b0a62864abc91b8b7c66277633128dfe2263e16454d7a26b275"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"e21bb9674ca0757455e64a6b2c0adbae24c5df1a8c3c881314e9fc2415d11657"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"1924ebe1cfb8a7ba89be691f89c73de4f2262b16c95f88e7583c49c21666d53b"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"0f8d604a58a0d6a343b8b853dd756445844ad2abbf3dc1afcebeb934ad1d2bde"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"2fb47d9885537598ad9293eb51348c1b9a311783601f1fee53562c53f8cb10c2"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"bcca401be4022aa66f81aca279691098b7c9a0a0","sha256":"f74ddd2884727fd1020c29a2051a8b0a5edf328f092351fc1a13b451a1784ff0"},{"path":"scripts/root-identity-policy.json","repository":"FS-GG/.github","revision":"bcca401be4022aa66f81aca279691098b7c9a0a0","sha256":"828dd54ca7ce74e2ffa3b2082b823537680aa8819a2a88143f359d103287174c"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-04T03:07:17Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nCurrent-main integration exposed another transitive dependency: the canonical board-currency source now loads the shared sibling root-identity-policy.json. The old staged alias lacked that data, so its valid-plan test failed before native effects. The repaired inventory delivers the same canonical policy beside the alias. rootRulesSource includes both exact selected rule bytes and nested policy path/SHA256; the helper checks policy stability during load and rechecks the complete fingerprint at native population barriers. Receiver-local rule and data shadows cannot replace this package closure; missing/malformed data and valid but changed policy refuse. The staged controls exercise these cases and actual valid/forged/wrong-owner plans with inert native responses. Removing the trust recheck causes the changed-policy control to fail, and restoring it passes.\n\nThe current draft-creation helper also introduced an integration boundary: legacy validation's early return must not bypass --draft's create-only restriction. The composed guard rejects legacy plus --draft before reads, while preserving main's draft flag and exact native readback implementation. Removing this guard fails the legacy mode-injection control; restoration passes. The complete merged admission suite reports 75 passing tests after the retained missing-policy failure. This remains source and isolated-staging evidence, not actual GitHub continuation, package publication or installed adoption. Existing original operation histories and all full Delivery acceptance obligations remain open.","supersedes":["540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.claude/skills/atlas/assets/seed/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json b/.claude/skills/atlas/assets/seed/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json new file mode 100644 index 000000000..9e4dfd4ce --- /dev/null +++ b/.claude/skills/atlas/assets/seed/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"c2574160c509fde2e00fa156fbb6d83578c05f5a618d2f5d0ab360c3e2375542"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"e21bb9674ca0757455e64a6b2c0adbae24c5df1a8c3c881314e9fc2415d11657"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"a9b694779c3fce2a5c535ad16901dd338b0e09a8bf62f23805b55bcdc9e0dadb"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"0f8d604a58a0d6a343b8b853dd756445844ad2abbf3dc1afcebeb934ad1d2bde"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"7c9267142d91c9e470f3c4de0de574715ffd37a7ac43937ad771ce8c0d1cec7d"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"f74ddd2884727fd1020c29a2051a8b0a5edf328f092351fc1a13b451a1784ff0"},{"path":"scripts/root-identity-policy.json","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"828dd54ca7ce74e2ffa3b2082b823537680aa8819a2a88143f359d103287174c"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-04T03:14:32Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nCurrent-main integration exposed another transitive dependency: the canonical board-currency source now loads the shared sibling root-identity-policy.json. The old staged alias lacked that data, so its valid-plan test failed before native effects. The repaired inventory delivers the same canonical policy beside the alias. rootRulesSource includes both exact selected rule bytes and nested policy path/SHA256; the helper checks policy stability during load and rechecks the complete fingerprint at native population barriers. Receiver-local rule and data shadows cannot replace this package closure; missing/malformed data and valid but changed policy refuse. The staged controls exercise these cases and actual valid/forged/wrong-owner plans with inert native responses. Removing the trust recheck causes the changed-policy control to fail, and restoring it passes.\n\nThe current draft-creation helper also introduced an integration boundary: legacy validation's early return must not bypass --draft's create-only restriction. The composed guard rejects legacy plus --draft before reads, while preserving main's draft flag and exact native readback implementation. Removing this guard fails the legacy mode-injection control; restoration passes. The intermediate merged admission suite reported 75 passing tests after the retained missing-policy failure. This remains source and isolated-staging evidence, not actual GitHub continuation, package publication or installed adoption. Existing original operation histories and all full Delivery acceptance obligations remain open.\n\nLocal plan and body inputs share one opened-descriptor invariant. A proposed-body FIFO with no writer passed the old symlink/size precheck and blocked before native reads; a two-second inert-boundary CLI probe preserved that failure. The repair uses O_NOFOLLOW and O_NONBLOCK before fstat, requires a regular leaf with at most65536 bytes, caps the read itself and compares opened-file identity/size/timestamps after reading. Invalid UTF-8, a directory/symlink, oversized data and determining changes refuse before native effects. The same primitive removes the plan reader's stat/open race. Empty regular files and the previous universal-newline normalization remain unchanged; downstream owning-reference and closed-JSON checks still decide validity. Writable parent directories and hostile filesystems are outside this bounded leaf proof. Removing nonblocking open reproduces the FIFO timeout in the maintained CLI control; restoration passes. The complete admission suite reports77 passing tests, with byte-range, actual file-change, empty and newline controls plus both real-CLI FIFO cases. No native continuation, publication or installed effect is proved by this source-only repair.","supersedes":["a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/.claude/skills/atlas/assets/seed/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json b/.claude/skills/atlas/assets/seed/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json new file mode 100644 index 000000000..24109764a --- /dev/null +++ b/.claude/skills/atlas/assets/seed/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-02T22:40:56Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.","supersedes":[],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/Directory.Build.props b/Directory.Build.props index 5f755b631..b060461a0 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -664,7 +664,7 @@ The same cut aligns the F# and host archive policy with the selected newest-50 retention. Source preparation only: published 0.114.5, canonical installed pins, original release journals and scheduled adoption remain unchanged until separately qualified publication. --> - 0.116.1 + 0.117.0 diff --git a/docs/atlas/catalog.json b/docs/atlas/catalog.json index 938a3ca58..67bb5814f 100644 --- a/docs/atlas/catalog.json +++ b/docs/atlas/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","0052dfb9eafceabaa590f4497e4d42f19020718c84b981d265edefd432ccf8dd","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","043eff38ad27212dd4d046617d0fe5e18544a03829d8b1130fbba2d052e1f072","04652cbc95ac4dcd21b837b38f2ca5a0ccd4d0946bc13fdb31c9c15a578d3a2d","04d17203f03279980862496517a1f0861be5f6cc8063bfbf92f8f8ac19744fdd","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","076259a45e71df780b012d29618c17739246c86321d2ff05a6c272bcca8db675","076fa091c878b19cf56a94be0966dbcd58d52c1839f9d4b85bbfdef650cbdb88","078903d1d79c2afee401dcdb8a440ca9d011114249e63f20175ef7c8ec392029","08b3dc660b9d2bbbe75b590b2b86d941bf935a254cd5f09de71ee6894f4048b6","09e90ad705af012a8c36efbf296757f35adf9c9ce3b8908791c75d72c192973f","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0b2d1557ff6df5f4d65d540a5403b07ba81b381dfc799b7884ac72dfa6ee7753","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0c7d3f36e3bb4270edbf7abd99cd2dab772df274cad1c27c7e87e302b8eb1c23","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0e9612ab3e2095fdf2eeeb3b08d690f03ce16e7f7ce948a10d2159b267769651","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","0f11324ad653d8d841962b0eeae9f68b80243d4ef7df4f2404ed4c3e45ba5197","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","13d0363b8d765c87a57eb42c4988320a9c2e7fa09024aa972f4b13d7699a552d","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","15d41240067e2335a0354a4e910b6610f2b8f079b8f67186f10181622b4a8999","1746f4f9d47b7dc42280dd34e664b3ec410d3cc69ac76933707499ffa34c79d4","1754adaf40732c3a8c73d2285c25a8b6c8c9d3e68370de618a0ffa8f3e60fb6d","182f48470fff7a26ce3a833c886f8ce9eec3bd4a96aef1c784c670f1b5e73431","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","19e75be8ed4dfba2a6f8034154052160a7a181b17d887b3e8724f3e3c111c31e","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b3ec24337f0252a00cfeb6df0a0f5d2b6d737dbea61b8d0b4a643f4c686df6a","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1b8cad98d53da179ab05eb47c1783f4c8b45b9f39c635e7a337285f5cd9621c1","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","20d01a387b4d0801cb588492ede88cae7bade9b7ea3591d9e954add1e67cf4ce","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","22ef13e60456fe9046dfe72f20122362aeefbbb445632231b8e364ed9b50e135","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24278a8f6b5925968be17b45f7db4c08169ddd5c92cbc103a166a690c02dc351","24373b643450d9dd3b8a5b0e74a5fec2844cd8cbca7d8a57dbc8b9ad9eade9dc","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","2905a2b4a58bd9ec1c4f77fd3d1d246c02caa49d806272756dd039c79521442f","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","299e929f58fe7d2878ec59ba6ad9fb74f1b1e550e488a4512373b9621f089844","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2b4f7c8dcc95ca8182105b9b6806391666e6a2c3a5c80d3ce5a5f04fd6cf9122","2b5e739c8f9602c585e67554c457e6e53351679afd56ff324f8fecc80f0891f1","2bc251ffb58a0d03480748058eff4c44079a0f21d75743063cef50263982337a","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d46924a94c85f4275a449dd3d9eb6c602cf8a9104db19d224e3aa469b858d06","2d5048eeef90792c0a2b9aed7305598a28db2103fed3903462c6c1882733c3e8","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2df1610ac1b912232030b5507e5e944515b0f1549bf2b76ecfb12baf0f40ccea","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2e872e9d3ab8b553270e79673060c50c1afd68a41fcf9fdd0a13cba80be0dfaf","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","2febddcced970d495778f33fff212929ac99c23adc42be0c1062f5c8676ffce0","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","31fe4b51d55cd99a4692d2cb787d362cb4c0d0998d3e001efdb5cb7ed838340f","3242912d15a34fbaba05e5e4ef959577b2572533305bdd2e4aa24fe8b0fd1173","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","341a43310dc5bc12018f1c3466916b4bec462a3ee08c09fc27c42d1a6914c63c","3442ba5c7643c793f62d90ca841f7891b3dbf97f028bc7b62f8b4f88c1266d1c","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","3600e7356a3741ef02f8b2ffa6a6b5d822dcbb170771f2ea33312dff4470f431","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","3962789d05f324d436a363700cbb5ced5aba791d782b3c0ea73221fe0c1f0b97","3966e5e53811c43962f5d0953e5da4753eacefbea27ecba9d36af2fd8e4fd52f","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3bce154e59c5c45216bb5372a352e948d6cb365bb1bd47d4666ae0412e507ca4","3c75b650f3fa8217597b01d3aaf25427ae2a658a7c966afeecdb391d3ba547ea","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3d642ccf9ca4a0f7f5dde1b41f65c99e9c447cbb9e64883b67e4fdf76f216f52","3d9fd2c5877483382f0c7331206393e42827b5dccfd60549a6771b7a5659e524","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3dfcea4ee3d0d0ed09b1f77bac48b33b64ab4620cbfc74fe0e4201b4cdb81ce6","3dffc36586e9078f750b0a2b4cc2c70a17a81294903186dbe8cc47cf8055b9bd","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","3f5465798dbc2ad279ca4849d5d0f819bad01455e0dd2a9d98afd4b55cfbd7ee","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","4134a3936170c1fb5fa6d2e2329185a981436477a66b7d31e827c363691bad50","414259a2fda4a1a49729be6fb1aced4675ee9cbdf990aaafb8e5b3153b54d64d","41baa5d98b5bab2ee01cad50c05b83edd8cdfeeb00f30b9406b4b2ec6d13d738","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","444342c21a4743af5961beeebb88088f5d2a0649f76c71973a7706a744f5efd2","4457ab439bc8f212d83442dc7500e9d45ffac849d0f77cb97686d9b0672fc3dc","461d34fb1d53849951a7e715e52342372d779299fbcad210794235c610dadf64","46a24cd8e385b748f40d9271b1e856dd6d68c91ab356abb11ff6b65f1ef936bf","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","471570cdf8144df0c32aba1730aba24c7e42e5ec317af771ffa169f5c842d117","47b5cb2b011c0f7012d75e88eb86a10f3f0bd48545db139669e654cac1f69650","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","48262b98c0bdbd5ee2314345726d23630ec1771735db8fe5f1a8590b662c9962","482cd15ecd9cfbd8e1943c0fcde0bbf1d875392dc2a701b698f48bfba684a062","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","48de3afdc6ee73ed121d1433bc6367a399286d5f8c2c63670a0b3b9752a36175","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","49ee4a3f2a8918bdbbafb312cfa807d9982800d13d29ee292c6c0daad8b9b8f1","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4aecbdfafb68feb3124c39219498241864bcf1ceaf87fbf80598b1dd87a9191d","4b076b124afadf178a3e736d3dfd142e4dff120b6a8aa94a06e0c4c86cfc1142","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4b6ab2768e1ff3716ac8565201c031a820c208db9ea6ae1495dd782e7557a3ab","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4ece7844e2b35705ac39fa25913f6909aad5b4b7446bd637ced46b47c0db135c","4ef30f11bd4dd9d2eef8716d88a83010546e54594b2726de84f6d587651ee940","4f03e231c0dc5c9bb2874f6856382d5b205758af9678fffdc7552d4e4ae9866e","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","4f6fcf4dd7e73d86e06bdb9c14a1078b61c0efb2663ced9bfbc5f46fbb4c6d8e","5029c7b222158ab3f325168fa543d84fd2332d2e3e38db1ce7b83899cef201d1","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","521ed246c4119acd6b579b6eefa23389a1655df54aa35de7671743979ebfc68d","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","55267f058e9f085117765e4ca72ce875b622ceaceed964f6c396073214835c28","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","55dcc23ce52b3918a60029d9398f262216471c280bfe66421cc63240533a6087","566ddcfc45ea5edc695626826ed185930e910fd9107c5bc1844c717b714c15b2","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","581337891936ba630d34ce9f6b803b82a2130791510f15bab24a07332400417f","58901d008c36a777dc138fa6b6d198030e0e843bc889cbad3acb954c826b3608","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5be05ba74075b8f139be565c47688a4f395ce71452dce5cf7da4348c7ddb7aa0","5c0206d9d014821b52a43d7b222327a89d4ee2f5b1e21813dfa659a69f7426b5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5de00a2f5eabe86c14f360304115f4136c41df1fb664eef6da26072fe7623d44","5e3a589b627edaf7005c60382475fae7229adc4ffbaab6d6fd03e9f08a0a8e19","5e43baca07fb966bf1c4b3ac06bb819577e477a84c5d8d3a9a19c391ada2e0b5","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","600ec184ee9964881bcaeaf72ad38a72db05d5b629d301cb323fa1ee9369b572","616c4dbde10f465da822d8a788feada26e5f915c7fbbc06232287cd1899c3044","62a713311297a7145d3610ee60dd6626ee543645a1918b050c629207561efb5e","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","6312b7a9f8252f49b8ea0cbd0580b80bbb221db574ea74939823ed9d4140d73f","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65725e1cd3323fdf44ec47067fd6670b441ff5f82e99485e1a4fc7d475f14340","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","6601b2bb6c908a46ae2985d4683c8baeeec87b0688b9b33d3e8900286bf4d6ae","666e7f698fbeef24e13e91ccfa334cf781233e060fa86bcd7d4d0eb00b30f3d5","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","671168c05789fc651cd961a5a15e10adbb76656b802cb0fcbab468ab76412ca2","671d95a6c09bb7b05a5721d52cb761300a2c8f376aac20be2948b7e97bf302b7","680de944f1f5380c579003e329ed6f10702ec8ebaaa8208743775588d2424d05","6989ec486a05550633170d2aa79188ad9b03aeea6c7859dbf18790ba78c5427a","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6b00dccaa7deabc750679ab085b237a2bd025bd971ee1eb7bdc333b393b19084","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","7075f89b1271fd04fa02d4db95c0f0bd6bdec24e53a7953d7afaeba40e17e8e0","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","74b5d2ed555740db7b4b0ea9b73f8fe00965fea8e14d4f075eec26ef7a189c68","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","786b0c2856bf1f3f809e5903b0a971f1e072af5635aa50bbb9b1449f96d7b694","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7af2394d2e697f355439e841b6323ffbbf8b90b2e48bf64873791fbbfdf15b44","7b947ed0a9e6e7ba180921434b993c62ac70bbaba6af0a1618569a2d4b705201","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7c2a1c4c4c03e3d68d63e0ab58e4e34d3f2bc1a4a837a055fd13a4e9f95ce6cb","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7dd54213b65fa0a6ce5aa3c204b5209b67ec16306b776aed7dcf9e6601d74235","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7efb464c6d7b469303c43f718063d8456df6fe43534b5d8a4229f5b9ba9705cd","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","80627bb83607d94aca13d445aa0ca4032d2d00479acb3c2f9d1a3cdeffe41f10","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","83347356a898238c013dff73246440e361a9e24cc3c4e0fe0e850467772b4938","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a06a604bbe36d72da976fcdeb88665c762b0f0de44193576ef2e0cf29aa9ad","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","85e961266b36e0f8ec2a477f1f1dfe7ad748fdde9d906f7bd3241e6924866ea9","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87789dab547842b4e0c822758e1325a3cbb046063e11e105a4779b3741e01cde","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89a96597dc9c218633adaf94bb5d6dcf4cad8f5e0b6f5522a28e3ce8d8b2865f","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8a720f848e9dbca63355ed5cf8e79df3d3ef3a6a1fe2b599349128f72417e95e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cce78271b4f001606069a575a172041fbddc52de6b582c920aa3d3b5d5b67ae","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e10a3499a8311b3142f240631df7fdd58c46714e4a954280f8a59620464b7ff","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8f3827158091bbed154d21c843284ad472a4552da2eeb858748aa29676e45662","8f4a21c70e4b933eaa4f9cee119945dd2ebeac532e82d34e17511b38cf03608c","8f6debc54d2bd7abb42f581f2204fc78b27ff8c67ee4b6392b4d71c5f983ee9d","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","9056c360e59fc78edde932b54124df317f2f04a90c0c6eb7825a87b89edf1ca0","90aff66decaa3a0998e9a6741963713c0c82fc70da505519e3d60204bf715fa0","90dc4cac6326293bb54486d3c873b83299e9a5ec8c86a68bf1cc131f5e4e2437","918126027fabb7947dd4ae810dd561ac22167102f9f978f86906624ebe88c9ea","91b495938bc6015970bb02c844368d3eee84425b472772cdb374a5347db86de9","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","922a332aa100d622da733aea8fc74094739bb63cd480d3349a14d2418ab6b1bb","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","9460f427df72c238c4b55f39c8864f1fa3685b0716a53227ea6f7b591d955c82","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","958ea8ff9a1354ba11254f2fc94f6ed1f98e10041a198331b6af66bc1b175af2","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","97edc66e594bae06bb273db84a35d84c8162a1fdf55ed46d781419a9f6a2e4f2","9808ac162523484fc50a7d41dc20fd4d5dd365a91406cfea580aab9f69663fe5","985638a05562bb796911ec231d306b81e36ed6b58219b3bde874559e9600b59f","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","98ecc99d3396aa9a35ce97456be66c1aac0cc05bab88aa99109649291e61bc0a","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9a8f2389b8ebc29d3769868ff8b918fdeb2236d88192fcf76ab0ea3db0857fac","9af18d8cfee466bc061271d82254d7ea638b59b8d5a3901c6610d5baed85c38b","9b01e565a1541f9e652d7afbe62e3bbff28430c1ccac2226ea434f45fc9a99d0","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9c3b318c461b56a8d277133a6b947ef5618690ec281c42e9de6c27f22458d4d4","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d1a0da545eb6b2e16b18fdd305a2c000ff2340c19ac843914b45f6a4f936227","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9dfd29090b50334ae229e4a7e812cfb9f6204a66dde563e215d8f52e884cb103","9e77badd0923fd79ca9761a41780ee4dd4f9ca9b62512f4fb59c7f8418494da0","9e9edbe6c5c90ef3aa89a71fd1ec54069818d2ff48ce0f35019b811add042047","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","9fb8c5aa087d38dab064a2d6054826377eea3dda98229725c2523f63a87e4750","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a2aec2d2f35d7174801247141d637e77c4f34e478c575b0e0a04c6251efaf993","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a3d6708506fb5c28f45f0d610bedba11b1ec7bcdb363ffff3aa4cddfa515f56a","a476183540f2e7121e533bf2dd9125dc071c81acc880e88cb435cad7a6d35b97","a4a8cca930cdfd15285ac3a7aa757d61501fb77fc12a7c3fbd78c096b279cf63","a50654761d6812cd811df02199e1b7b25c9b0d65e591f65430f9277ec43d9c50","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a644885c31f390b5e6b7fe2fc8d086d9144699295ccb6ffa51b3f7c76c8ca71a","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a70d82083944311ccf98b6aa8da5adebc93c655759eaaf8d79624bb3d322abcb","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acae1db4aeb323f3b637fa11b087c3827a2fb6d69718362f54e3bc48f70ef7d8","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ad0e6d78c1e450e19bfca4a0e904644ab0ae315607811a28ac3dba20de869786","ae43a4d252290ec0e18c64dd58d51bc885020b2473e71e3ed0741184c9f006b7","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b3f50ed7eac0e9c54b74c4f4e02297dd2d2465ce4b699bcc15cfddf54c0f0f81","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b4f2140fb766faf0065a563ac3664f395b24c81dab0d0d0d01df47b22e888d29","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b5c085be21651d8579e52cd3ffe4abe6b7f45c5a9ee84d38c47b4734409918d8","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7fda8f4bf81f8213d18e3c314df5100ccb6b8db7aed6b70aaf202deb606a14f","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b83b7229045affbb98f8fc46f289ad05e6626ef52e3ed2f7e70d332a54a69e2a","b83f5334b85422ac110a24286d5af7003f2fb5b0d783efe257b38a2281656422","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b8b8c5cad182083f45ce2d05d036e6bfe91cde1fb63f2e5a97c683bb7ef7ea0f","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba5c707cf9be40fe966c08807779994e20ca3f30ea9d73e26ce31ca334c05640","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bad8f17b1d399ea125c524895571601c90b6c93418c248bd4ebcc7886bae9878","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bcbef69f1ba50e45f3faf1b4529c32cdcf1e5a6612b5bcbc6aa6790ee14b54eb","bd3bf6053f4d423ff21f7ffbed9d0e68f3ea64b7292c048e9a37ade342bb7b39","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c055d3cfd85b2ed4607b0d9d3a15ab7204c9f149599f748347dca4afe102af0c","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23a43ed460117f663cec698412729fd91b5aaceb48cc4e55a785b525661bf1a","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c24546a064b9315172ce0f951bd5fa2cd1b9884231cf1bdc1dc714771f1b3886","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c2e96d98c8ebc10237a2af1c224f626acfb9072c83078f4a8c6d9ef0a58b4a8e","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c4ebd58c4ff78c9fc0cd17d80ed563520f7908f9d1106735ca0f5a7abed202a6","c5db39bbdc8c2bd2aa7b58c28c3df9e407955cc3250ce7825c842cc4c30eaca3","c65325f807190f7084346376e2f48fc2b6bb946004a1fac1d8d117930e93d462","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c69b32bee3e47d9568ef9acdcd59ddef6f6ebe3b3a45d257f6c5d4145890ef2e","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c82f38f23e7ed3e1024661b7a22ff694e88d3b268240e2bfc98e630df8a062d0","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","c93cd4cb5cf38fe6221fa8ae171ff54240b5f99ba80cd740ffac69c57e5fa381","ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfb9705939742247da0cb71fdfd8b5f7a1bef6f1c2f0979a8f42e54c4a480980","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d151ffa66d8d096e0272f0dfff6c27e978cfda570f7498a727593081888b4ebe","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d268e680ee1136a239a40ebf005b30db6f3b52a228016f3193496f86250f15c3","d2989a1607fd5303615937b8c117d127b1b1cde519662ab1e1324390220e8612","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d2e82db1f6e479001e15c9890732b5049f8c900c568d5e3d15707a95a7dc3610","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d36034e2f9cc642d0f9f24cf834fa741bac5b8b139cbd2f50e2065161c9f3cb0","d36eb7456d2a42d1cffa4b60708e2bd3116f7f6758c96bbc0fee0f1704ad8a79","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d555a0d2329caace197c1468fe6708349125762377ee3bd04b031b7eacfc26aa","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5adedc08fa25bd06734afd1db3510dbc53ba0dfdac20cf601fde0c77702a72a","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d67ec5caeb2af5f9c57533a34cbde7daba5f5b2e5e6ce34c3250893eef25f13c","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d7a44c85c25ceb7d42280f0c2576de52a3b3cc3ad2333e788ecdc7f7f7fe4b3b","d7f5db16fd3b6ddd5acdf655e090ed0e84cb89d9eafbe1ea92b273b71a38f173","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8c8b3c52c89cd715a7fdd2759a6f73c3a5f505303b110656cc35f7549a37cfb","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da2acdac413e8367fe0a329922fcad3565a24c89dba87907e6d64bb3e6315922","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","daa0fc9f9dd08cb2dc48bf33c9808cfeebff77cb9fba48f98ef597bb9dd6df55","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","db66a999537b941fa6d512908894ba86e8dadd0e14b290ebc119555b7e60264c","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e519e78acf2938460c7ee053981c744dafc7642fd03b56a117d5fec78d258b90","e5db07b7fb0eed216d838fbeb9491257cf54f9bd537a68c8edae7a89fe64c8d8","e61705ac769699a40c52e332cd890187ca9301fc6e64393c8c9064144ccc2dbf","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","e981ced1bfce64a19fa8de1cd518a93f4669d01548f4819d0e1dbb50d266fe04","e9a8e5be83e18caaecd4cf74dd7f020e0cc7de9d910cb7845e5ec615cb26b14b","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eaeec7c06d1408fa6db5d7ada0a232b1633ffdf0ac815033c29c159352347c81","eb708890ac7e19bd53007ccece064f7e2a069a3751270b4fdafdd1668136dee7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","ebcf0bdb3541c8bfb7c9a53f632329b77341cba6f1a2fa0dc9704acfa3276dca","ebd87e3505f3a1adff0c86ffec6c380734df718301b216b7ee089c174130de60","ecd5e83ba8c8eba6cef9c3da1edb8a84e3dfb4ed71d9a2c1908f2c4d26b26737","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0e1db9b86e2132f004ebf06819eb55804f766bc03ea5d80f487d5d98bad8892","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1297fd9ecf981024e1544f7f048705377b53219240274bb803ac30e4a52084f","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f260b4b268e85a8f1b04b2fc69ffc0bca473d2e42de6f2f70128bedc16558201","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f4de28905adbfe6ae4bc38f8bf5f47a444aa8d0f2023faaa431d6f72f9a3edea","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f5403593ba12130c04827f88d019103e924651caa518b7c290673a02f7cb409f","f5681dfc71121ed0f88146a19479675f2fabc6ed376fd5d162e50d815c048d66","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f700bd87d4a758bb71f47731121a9b2259a9ffbd50b584b82f4e6a1f205c276a","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f7993302f695430a0ee938b1b3684fdfec4055bddb378b52c81785c0319e8c98","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","facb45d3084caa490d9b0ac2bcfcee89629a4c3db5926ec9256a9d27d25559ee","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fbd74e4b8dc748b2efdd70aaab07adb80d7f15a38c1261de85bdfd9591ff106a","fc475f9c2d8bee2ffea435e86e6b39b6e3e071143a4a1fdf6765b0da13b66de6","fcaf6bc23f7cbddda8141a846ef23b21b9cc37e51b805f0f75b3cda2d4d3f019","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","fdbd44d3c55504edfa1bacb4c9b7a6c102659d4deef0ca91b9b7ac567ea9cfc5","fedf2577267d6dcd060ebc4ee8de6ccdafa60ab26b78d74c1e8c784252fecb17","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","0052dfb9eafceabaa590f4497e4d42f19020718c84b981d265edefd432ccf8dd","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","043eff38ad27212dd4d046617d0fe5e18544a03829d8b1130fbba2d052e1f072","04652cbc95ac4dcd21b837b38f2ca5a0ccd4d0946bc13fdb31c9c15a578d3a2d","04d17203f03279980862496517a1f0861be5f6cc8063bfbf92f8f8ac19744fdd","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","076259a45e71df780b012d29618c17739246c86321d2ff05a6c272bcca8db675","076fa091c878b19cf56a94be0966dbcd58d52c1839f9d4b85bbfdef650cbdb88","078903d1d79c2afee401dcdb8a440ca9d011114249e63f20175ef7c8ec392029","08b3dc660b9d2bbbe75b590b2b86d941bf935a254cd5f09de71ee6894f4048b6","09e90ad705af012a8c36efbf296757f35adf9c9ce3b8908791c75d72c192973f","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0b2d1557ff6df5f4d65d540a5403b07ba81b381dfc799b7884ac72dfa6ee7753","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0c7d3f36e3bb4270edbf7abd99cd2dab772df274cad1c27c7e87e302b8eb1c23","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0e9612ab3e2095fdf2eeeb3b08d690f03ce16e7f7ce948a10d2159b267769651","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","0f11324ad653d8d841962b0eeae9f68b80243d4ef7df4f2404ed4c3e45ba5197","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","13d0363b8d765c87a57eb42c4988320a9c2e7fa09024aa972f4b13d7699a552d","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","15d41240067e2335a0354a4e910b6610f2b8f079b8f67186f10181622b4a8999","1746f4f9d47b7dc42280dd34e664b3ec410d3cc69ac76933707499ffa34c79d4","1754adaf40732c3a8c73d2285c25a8b6c8c9d3e68370de618a0ffa8f3e60fb6d","182f48470fff7a26ce3a833c886f8ce9eec3bd4a96aef1c784c670f1b5e73431","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","19e75be8ed4dfba2a6f8034154052160a7a181b17d887b3e8724f3e3c111c31e","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b3ec24337f0252a00cfeb6df0a0f5d2b6d737dbea61b8d0b4a643f4c686df6a","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1b8cad98d53da179ab05eb47c1783f4c8b45b9f39c635e7a337285f5cd9621c1","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","20d01a387b4d0801cb588492ede88cae7bade9b7ea3591d9e954add1e67cf4ce","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","22ef13e60456fe9046dfe72f20122362aeefbbb445632231b8e364ed9b50e135","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24278a8f6b5925968be17b45f7db4c08169ddd5c92cbc103a166a690c02dc351","24373b643450d9dd3b8a5b0e74a5fec2844cd8cbca7d8a57dbc8b9ad9eade9dc","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","2905a2b4a58bd9ec1c4f77fd3d1d246c02caa49d806272756dd039c79521442f","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","299e929f58fe7d2878ec59ba6ad9fb74f1b1e550e488a4512373b9621f089844","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2b4f7c8dcc95ca8182105b9b6806391666e6a2c3a5c80d3ce5a5f04fd6cf9122","2b5e739c8f9602c585e67554c457e6e53351679afd56ff324f8fecc80f0891f1","2bc251ffb58a0d03480748058eff4c44079a0f21d75743063cef50263982337a","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d46924a94c85f4275a449dd3d9eb6c602cf8a9104db19d224e3aa469b858d06","2d5048eeef90792c0a2b9aed7305598a28db2103fed3903462c6c1882733c3e8","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2df1610ac1b912232030b5507e5e944515b0f1549bf2b76ecfb12baf0f40ccea","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2e872e9d3ab8b553270e79673060c50c1afd68a41fcf9fdd0a13cba80be0dfaf","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","2febddcced970d495778f33fff212929ac99c23adc42be0c1062f5c8676ffce0","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","31fe4b51d55cd99a4692d2cb787d362cb4c0d0998d3e001efdb5cb7ed838340f","3242912d15a34fbaba05e5e4ef959577b2572533305bdd2e4aa24fe8b0fd1173","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","341a43310dc5bc12018f1c3466916b4bec462a3ee08c09fc27c42d1a6914c63c","3442ba5c7643c793f62d90ca841f7891b3dbf97f028bc7b62f8b4f88c1266d1c","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","3600e7356a3741ef02f8b2ffa6a6b5d822dcbb170771f2ea33312dff4470f431","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","3962789d05f324d436a363700cbb5ced5aba791d782b3c0ea73221fe0c1f0b97","3966e5e53811c43962f5d0953e5da4753eacefbea27ecba9d36af2fd8e4fd52f","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3bce154e59c5c45216bb5372a352e948d6cb365bb1bd47d4666ae0412e507ca4","3c75b650f3fa8217597b01d3aaf25427ae2a658a7c966afeecdb391d3ba547ea","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3d642ccf9ca4a0f7f5dde1b41f65c99e9c447cbb9e64883b67e4fdf76f216f52","3d9fd2c5877483382f0c7331206393e42827b5dccfd60549a6771b7a5659e524","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3dfcea4ee3d0d0ed09b1f77bac48b33b64ab4620cbfc74fe0e4201b4cdb81ce6","3dffc36586e9078f750b0a2b4cc2c70a17a81294903186dbe8cc47cf8055b9bd","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","3f5465798dbc2ad279ca4849d5d0f819bad01455e0dd2a9d98afd4b55cfbd7ee","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","4134a3936170c1fb5fa6d2e2329185a981436477a66b7d31e827c363691bad50","414259a2fda4a1a49729be6fb1aced4675ee9cbdf990aaafb8e5b3153b54d64d","41baa5d98b5bab2ee01cad50c05b83edd8cdfeeb00f30b9406b4b2ec6d13d738","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","444342c21a4743af5961beeebb88088f5d2a0649f76c71973a7706a744f5efd2","4457ab439bc8f212d83442dc7500e9d45ffac849d0f77cb97686d9b0672fc3dc","461d34fb1d53849951a7e715e52342372d779299fbcad210794235c610dadf64","46a24cd8e385b748f40d9271b1e856dd6d68c91ab356abb11ff6b65f1ef936bf","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","471570cdf8144df0c32aba1730aba24c7e42e5ec317af771ffa169f5c842d117","47b5cb2b011c0f7012d75e88eb86a10f3f0bd48545db139669e654cac1f69650","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","48262b98c0bdbd5ee2314345726d23630ec1771735db8fe5f1a8590b662c9962","482cd15ecd9cfbd8e1943c0fcde0bbf1d875392dc2a701b698f48bfba684a062","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","48de3afdc6ee73ed121d1433bc6367a399286d5f8c2c63670a0b3b9752a36175","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","49ee4a3f2a8918bdbbafb312cfa807d9982800d13d29ee292c6c0daad8b9b8f1","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4aecbdfafb68feb3124c39219498241864bcf1ceaf87fbf80598b1dd87a9191d","4b076b124afadf178a3e736d3dfd142e4dff120b6a8aa94a06e0c4c86cfc1142","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4b6ab2768e1ff3716ac8565201c031a820c208db9ea6ae1495dd782e7557a3ab","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4ece7844e2b35705ac39fa25913f6909aad5b4b7446bd637ced46b47c0db135c","4ef30f11bd4dd9d2eef8716d88a83010546e54594b2726de84f6d587651ee940","4f03e231c0dc5c9bb2874f6856382d5b205758af9678fffdc7552d4e4ae9866e","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","4f6fcf4dd7e73d86e06bdb9c14a1078b61c0efb2663ced9bfbc5f46fbb4c6d8e","5029c7b222158ab3f325168fa543d84fd2332d2e3e38db1ce7b83899cef201d1","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","521ed246c4119acd6b579b6eefa23389a1655df54aa35de7671743979ebfc68d","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","55267f058e9f085117765e4ca72ce875b622ceaceed964f6c396073214835c28","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","55dcc23ce52b3918a60029d9398f262216471c280bfe66421cc63240533a6087","566ddcfc45ea5edc695626826ed185930e910fd9107c5bc1844c717b714c15b2","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","581337891936ba630d34ce9f6b803b82a2130791510f15bab24a07332400417f","58901d008c36a777dc138fa6b6d198030e0e843bc889cbad3acb954c826b3608","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5be05ba74075b8f139be565c47688a4f395ce71452dce5cf7da4348c7ddb7aa0","5c0206d9d014821b52a43d7b222327a89d4ee2f5b1e21813dfa659a69f7426b5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5de00a2f5eabe86c14f360304115f4136c41df1fb664eef6da26072fe7623d44","5e3a589b627edaf7005c60382475fae7229adc4ffbaab6d6fd03e9f08a0a8e19","5e43baca07fb966bf1c4b3ac06bb819577e477a84c5d8d3a9a19c391ada2e0b5","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","600ec184ee9964881bcaeaf72ad38a72db05d5b629d301cb323fa1ee9369b572","616c4dbde10f465da822d8a788feada26e5f915c7fbbc06232287cd1899c3044","62a713311297a7145d3610ee60dd6626ee543645a1918b050c629207561efb5e","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","6312b7a9f8252f49b8ea0cbd0580b80bbb221db574ea74939823ed9d4140d73f","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65725e1cd3323fdf44ec47067fd6670b441ff5f82e99485e1a4fc7d475f14340","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","6601b2bb6c908a46ae2985d4683c8baeeec87b0688b9b33d3e8900286bf4d6ae","666e7f698fbeef24e13e91ccfa334cf781233e060fa86bcd7d4d0eb00b30f3d5","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","671168c05789fc651cd961a5a15e10adbb76656b802cb0fcbab468ab76412ca2","671d95a6c09bb7b05a5721d52cb761300a2c8f376aac20be2948b7e97bf302b7","680de944f1f5380c579003e329ed6f10702ec8ebaaa8208743775588d2424d05","6989ec486a05550633170d2aa79188ad9b03aeea6c7859dbf18790ba78c5427a","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6b00dccaa7deabc750679ab085b237a2bd025bd971ee1eb7bdc333b393b19084","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","7075f89b1271fd04fa02d4db95c0f0bd6bdec24e53a7953d7afaeba40e17e8e0","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","74b5d2ed555740db7b4b0ea9b73f8fe00965fea8e14d4f075eec26ef7a189c68","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","786b0c2856bf1f3f809e5903b0a971f1e072af5635aa50bbb9b1449f96d7b694","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7af2394d2e697f355439e841b6323ffbbf8b90b2e48bf64873791fbbfdf15b44","7b947ed0a9e6e7ba180921434b993c62ac70bbaba6af0a1618569a2d4b705201","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7c2a1c4c4c03e3d68d63e0ab58e4e34d3f2bc1a4a837a055fd13a4e9f95ce6cb","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7dd54213b65fa0a6ce5aa3c204b5209b67ec16306b776aed7dcf9e6601d74235","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7efb464c6d7b469303c43f718063d8456df6fe43534b5d8a4229f5b9ba9705cd","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","80627bb83607d94aca13d445aa0ca4032d2d00479acb3c2f9d1a3cdeffe41f10","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","83347356a898238c013dff73246440e361a9e24cc3c4e0fe0e850467772b4938","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a06a604bbe36d72da976fcdeb88665c762b0f0de44193576ef2e0cf29aa9ad","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","85e961266b36e0f8ec2a477f1f1dfe7ad748fdde9d906f7bd3241e6924866ea9","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87789dab547842b4e0c822758e1325a3cbb046063e11e105a4779b3741e01cde","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89a96597dc9c218633adaf94bb5d6dcf4cad8f5e0b6f5522a28e3ce8d8b2865f","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8a720f848e9dbca63355ed5cf8e79df3d3ef3a6a1fe2b599349128f72417e95e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cce78271b4f001606069a575a172041fbddc52de6b582c920aa3d3b5d5b67ae","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e10a3499a8311b3142f240631df7fdd58c46714e4a954280f8a59620464b7ff","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8f3827158091bbed154d21c843284ad472a4552da2eeb858748aa29676e45662","8f4a21c70e4b933eaa4f9cee119945dd2ebeac532e82d34e17511b38cf03608c","8f6debc54d2bd7abb42f581f2204fc78b27ff8c67ee4b6392b4d71c5f983ee9d","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","9056c360e59fc78edde932b54124df317f2f04a90c0c6eb7825a87b89edf1ca0","90aff66decaa3a0998e9a6741963713c0c82fc70da505519e3d60204bf715fa0","90dc4cac6326293bb54486d3c873b83299e9a5ec8c86a68bf1cc131f5e4e2437","918126027fabb7947dd4ae810dd561ac22167102f9f978f86906624ebe88c9ea","91b495938bc6015970bb02c844368d3eee84425b472772cdb374a5347db86de9","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","922a332aa100d622da733aea8fc74094739bb63cd480d3349a14d2418ab6b1bb","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","9460f427df72c238c4b55f39c8864f1fa3685b0716a53227ea6f7b591d955c82","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","958ea8ff9a1354ba11254f2fc94f6ed1f98e10041a198331b6af66bc1b175af2","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","97edc66e594bae06bb273db84a35d84c8162a1fdf55ed46d781419a9f6a2e4f2","9808ac162523484fc50a7d41dc20fd4d5dd365a91406cfea580aab9f69663fe5","985638a05562bb796911ec231d306b81e36ed6b58219b3bde874559e9600b59f","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","98ecc99d3396aa9a35ce97456be66c1aac0cc05bab88aa99109649291e61bc0a","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9a8f2389b8ebc29d3769868ff8b918fdeb2236d88192fcf76ab0ea3db0857fac","9af18d8cfee466bc061271d82254d7ea638b59b8d5a3901c6610d5baed85c38b","9b01e565a1541f9e652d7afbe62e3bbff28430c1ccac2226ea434f45fc9a99d0","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9c3b318c461b56a8d277133a6b947ef5618690ec281c42e9de6c27f22458d4d4","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d1a0da545eb6b2e16b18fdd305a2c000ff2340c19ac843914b45f6a4f936227","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9dfd29090b50334ae229e4a7e812cfb9f6204a66dde563e215d8f52e884cb103","9e77badd0923fd79ca9761a41780ee4dd4f9ca9b62512f4fb59c7f8418494da0","9e9edbe6c5c90ef3aa89a71fd1ec54069818d2ff48ce0f35019b811add042047","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","9fb8c5aa087d38dab064a2d6054826377eea3dda98229725c2523f63a87e4750","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a2aec2d2f35d7174801247141d637e77c4f34e478c575b0e0a04c6251efaf993","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a3d6708506fb5c28f45f0d610bedba11b1ec7bcdb363ffff3aa4cddfa515f56a","a476183540f2e7121e533bf2dd9125dc071c81acc880e88cb435cad7a6d35b97","a4a8cca930cdfd15285ac3a7aa757d61501fb77fc12a7c3fbd78c096b279cf63","a50654761d6812cd811df02199e1b7b25c9b0d65e591f65430f9277ec43d9c50","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a644885c31f390b5e6b7fe2fc8d086d9144699295ccb6ffa51b3f7c76c8ca71a","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a70d82083944311ccf98b6aa8da5adebc93c655759eaaf8d79624bb3d322abcb","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acae1db4aeb323f3b637fa11b087c3827a2fb6d69718362f54e3bc48f70ef7d8","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ad0e6d78c1e450e19bfca4a0e904644ab0ae315607811a28ac3dba20de869786","ae43a4d252290ec0e18c64dd58d51bc885020b2473e71e3ed0741184c9f006b7","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b3f50ed7eac0e9c54b74c4f4e02297dd2d2465ce4b699bcc15cfddf54c0f0f81","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b4f2140fb766faf0065a563ac3664f395b24c81dab0d0d0d01df47b22e888d29","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b5c085be21651d8579e52cd3ffe4abe6b7f45c5a9ee84d38c47b4734409918d8","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7fda8f4bf81f8213d18e3c314df5100ccb6b8db7aed6b70aaf202deb606a14f","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b83b7229045affbb98f8fc46f289ad05e6626ef52e3ed2f7e70d332a54a69e2a","b83f5334b85422ac110a24286d5af7003f2fb5b0d783efe257b38a2281656422","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b8b8c5cad182083f45ce2d05d036e6bfe91cde1fb63f2e5a97c683bb7ef7ea0f","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba5c707cf9be40fe966c08807779994e20ca3f30ea9d73e26ce31ca334c05640","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bad8f17b1d399ea125c524895571601c90b6c93418c248bd4ebcc7886bae9878","bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bcbef69f1ba50e45f3faf1b4529c32cdcf1e5a6612b5bcbc6aa6790ee14b54eb","bd3bf6053f4d423ff21f7ffbed9d0e68f3ea64b7292c048e9a37ade342bb7b39","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c055d3cfd85b2ed4607b0d9d3a15ab7204c9f149599f748347dca4afe102af0c","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23a43ed460117f663cec698412729fd91b5aaceb48cc4e55a785b525661bf1a","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c24546a064b9315172ce0f951bd5fa2cd1b9884231cf1bdc1dc714771f1b3886","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c2e96d98c8ebc10237a2af1c224f626acfb9072c83078f4a8c6d9ef0a58b4a8e","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c4ebd58c4ff78c9fc0cd17d80ed563520f7908f9d1106735ca0f5a7abed202a6","c5db39bbdc8c2bd2aa7b58c28c3df9e407955cc3250ce7825c842cc4c30eaca3","c65325f807190f7084346376e2f48fc2b6bb946004a1fac1d8d117930e93d462","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c69b32bee3e47d9568ef9acdcd59ddef6f6ebe3b3a45d257f6c5d4145890ef2e","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c82f38f23e7ed3e1024661b7a22ff694e88d3b268240e2bfc98e630df8a062d0","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","c93cd4cb5cf38fe6221fa8ae171ff54240b5f99ba80cd740ffac69c57e5fa381","c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e","ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfb9705939742247da0cb71fdfd8b5f7a1bef6f1c2f0979a8f42e54c4a480980","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d151ffa66d8d096e0272f0dfff6c27e978cfda570f7498a727593081888b4ebe","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d268e680ee1136a239a40ebf005b30db6f3b52a228016f3193496f86250f15c3","d2989a1607fd5303615937b8c117d127b1b1cde519662ab1e1324390220e8612","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d2e82db1f6e479001e15c9890732b5049f8c900c568d5e3d15707a95a7dc3610","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d36034e2f9cc642d0f9f24cf834fa741bac5b8b139cbd2f50e2065161c9f3cb0","d36eb7456d2a42d1cffa4b60708e2bd3116f7f6758c96bbc0fee0f1704ad8a79","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d555a0d2329caace197c1468fe6708349125762377ee3bd04b031b7eacfc26aa","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5adedc08fa25bd06734afd1db3510dbc53ba0dfdac20cf601fde0c77702a72a","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d67ec5caeb2af5f9c57533a34cbde7daba5f5b2e5e6ce34c3250893eef25f13c","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d7a44c85c25ceb7d42280f0c2576de52a3b3cc3ad2333e788ecdc7f7f7fe4b3b","d7f5db16fd3b6ddd5acdf655e090ed0e84cb89d9eafbe1ea92b273b71a38f173","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8c8b3c52c89cd715a7fdd2759a6f73c3a5f505303b110656cc35f7549a37cfb","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da2acdac413e8367fe0a329922fcad3565a24c89dba87907e6d64bb3e6315922","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","daa0fc9f9dd08cb2dc48bf33c9808cfeebff77cb9fba48f98ef597bb9dd6df55","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","db66a999537b941fa6d512908894ba86e8dadd0e14b290ebc119555b7e60264c","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e519e78acf2938460c7ee053981c744dafc7642fd03b56a117d5fec78d258b90","e5db07b7fb0eed216d838fbeb9491257cf54f9bd537a68c8edae7a89fe64c8d8","e61705ac769699a40c52e332cd890187ca9301fc6e64393c8c9064144ccc2dbf","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","e981ced1bfce64a19fa8de1cd518a93f4669d01548f4819d0e1dbb50d266fe04","e9a8e5be83e18caaecd4cf74dd7f020e0cc7de9d910cb7845e5ec615cb26b14b","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eaeec7c06d1408fa6db5d7ada0a232b1633ffdf0ac815033c29c159352347c81","eb708890ac7e19bd53007ccece064f7e2a069a3751270b4fdafdd1668136dee7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","ebcf0bdb3541c8bfb7c9a53f632329b77341cba6f1a2fa0dc9704acfa3276dca","ebd87e3505f3a1adff0c86ffec6c380734df718301b216b7ee089c174130de60","ecd5e83ba8c8eba6cef9c3da1edb8a84e3dfb4ed71d9a2c1908f2c4d26b26737","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0e1db9b86e2132f004ebf06819eb55804f766bc03ea5d80f487d5d98bad8892","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1297fd9ecf981024e1544f7f048705377b53219240274bb803ac30e4a52084f","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f260b4b268e85a8f1b04b2fc69ffc0bca473d2e42de6f2f70128bedc16558201","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f4de28905adbfe6ae4bc38f8bf5f47a444aa8d0f2023faaa431d6f72f9a3edea","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f5403593ba12130c04827f88d019103e924651caa518b7c290673a02f7cb409f","f5681dfc71121ed0f88146a19479675f2fabc6ed376fd5d162e50d815c048d66","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f700bd87d4a758bb71f47731121a9b2259a9ffbd50b584b82f4e6a1f205c276a","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f7993302f695430a0ee938b1b3684fdfec4055bddb378b52c81785c0319e8c98","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","facb45d3084caa490d9b0ac2bcfcee89629a4c3db5926ec9256a9d27d25559ee","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fbd74e4b8dc748b2efdd70aaab07adb80d7f15a38c1261de85bdfd9591ff106a","fc475f9c2d8bee2ffea435e86e6b39b6e3e071143a4a1fdf6765b0da13b66de6","fcaf6bc23f7cbddda8141a846ef23b21b9cc37e51b805f0f75b3cda2d4d3f019","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","fdbd44d3c55504edfa1bacb4c9b7a6c102659d4deef0ca91b9b7ac567ea9cfc5","fedf2577267d6dcd060ebc4ee8de6ccdafa60ab26b78d74c1e8c784252fecb17","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/docs/atlas/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json b/docs/atlas/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json new file mode 100644 index 000000000..b3a7f7c5c --- /dev/null +++ b/docs/atlas/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"5773499da99cf8e0d4c82dc38e5439eaa463b85570abb543d3788ee65e6c38f2"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"13dd28134211b416426c39877c6fd850ef5c839157aaa8ef7520127059e1134d"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"2b766d98419c148b801c0cb71b149fada000c9d8da49047a526c13440d3b73db"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"6036f92c7f52e18f227fe1c1ad687a628972bce43ba2cb91d4acad98c943c9e6"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"904706590286178790f843ecaeab28e0d3de61ac943bcc0e5637d3de5aba490f"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-03T08:14:29Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.","supersedes":["c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/docs/atlas/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json b/docs/atlas/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json new file mode 100644 index 000000000..ec4df80d4 --- /dev/null +++ b/docs/atlas/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"5773499da99cf8e0d4c82dc38e5439eaa463b85570abb543d3788ee65e6c38f2"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"13dd28134211b416426c39877c6fd850ef5c839157aaa8ef7520127059e1134d"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"2b766d98419c148b801c0cb71b149fada000c9d8da49047a526c13440d3b73db"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"6036f92c7f52e18f227fe1c1ad687a628972bce43ba2cb91d4acad98c943c9e6"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"71d167e532f650fbd8c57353185adbccbc32ae00","sha256":"904706590286178790f843ecaeab28e0d3de61ac943bcc0e5637d3de5aba490f"},{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"67ed550440daef8b49622e1cdd614e581b2cb741a964774ab3a2b08bab9535ee"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"5e73ddd2776f27cc11cd7303d29f1f3426e5c6c025deb5f433f5b6d0a08474a1"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"5d832dd4fcdbea9dea307f8e6007cd668d4e16b8","sha256":"e4291c39dfa6eaad01b9e21184629d9a96dca1232e5c880236de3207770aee89"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-03T08:33:18Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nWhen present, the inventory-derived packaged alias determines legacy Root policy before a receiver-local canonical path; otherwise the canonical source path is selected. The loader executes captured bytes and records their relative path and SHA256 in existing inspection, intent and custody as rootRulesSource. Staged canonical-shadow and source-noalias controls retain Root trust and reference semantics; a synthetic retained-package epoch demonstrates that the actual selected hash stays distinct from a newer canonical source. This provenance identifies loaded bytes, not policy freshness or authority; join it to the actual selected caller/BOM and do not describe an older alias as current checkout policy.","supersedes":["12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/docs/atlas/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json b/docs/atlas/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json new file mode 100644 index 000000000..dece9c05c --- /dev/null +++ b/docs/atlas/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"103ae8c3bde59b0a62864abc91b8b7c66277633128dfe2263e16454d7a26b275"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"e21bb9674ca0757455e64a6b2c0adbae24c5df1a8c3c881314e9fc2415d11657"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"1924ebe1cfb8a7ba89be691f89c73de4f2262b16c95f88e7583c49c21666d53b"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"0f8d604a58a0d6a343b8b853dd756445844ad2abbf3dc1afcebeb934ad1d2bde"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"b7ec1bdcef31c484cc8b2fbe7aeaa7bfa59c38f8","sha256":"2fb47d9885537598ad9293eb51348c1b9a311783601f1fee53562c53f8cb10c2"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"bcca401be4022aa66f81aca279691098b7c9a0a0","sha256":"f74ddd2884727fd1020c29a2051a8b0a5edf328f092351fc1a13b451a1784ff0"},{"path":"scripts/root-identity-policy.json","repository":"FS-GG/.github","revision":"bcca401be4022aa66f81aca279691098b7c9a0a0","sha256":"828dd54ca7ce74e2ffa3b2082b823537680aa8819a2a88143f359d103287174c"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-04T03:07:17Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nCurrent-main integration exposed another transitive dependency: the canonical board-currency source now loads the shared sibling root-identity-policy.json. The old staged alias lacked that data, so its valid-plan test failed before native effects. The repaired inventory delivers the same canonical policy beside the alias. rootRulesSource includes both exact selected rule bytes and nested policy path/SHA256; the helper checks policy stability during load and rechecks the complete fingerprint at native population barriers. Receiver-local rule and data shadows cannot replace this package closure; missing/malformed data and valid but changed policy refuse. The staged controls exercise these cases and actual valid/forged/wrong-owner plans with inert native responses. Removing the trust recheck causes the changed-policy control to fail, and restoring it passes.\n\nThe current draft-creation helper also introduced an integration boundary: legacy validation's early return must not bypass --draft's create-only restriction. The composed guard rejects legacy plus --draft before reads, while preserving main's draft flag and exact native readback implementation. Removing this guard fails the legacy mode-injection control; restoration passes. The complete merged admission suite reports 75 passing tests after the retained missing-policy failure. This remains source and isolated-staging evidence, not actual GitHub continuation, package publication or installed adoption. Existing original operation histories and all full Delivery acceptance obligations remain open.","supersedes":["540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/docs/atlas/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json b/docs/atlas/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json new file mode 100644 index 000000000..9e4dfd4ce --- /dev/null +++ b/docs/atlas/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"c2574160c509fde2e00fa156fbb6d83578c05f5a618d2f5d0ab360c3e2375542"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"e21bb9674ca0757455e64a6b2c0adbae24c5df1a8c3c881314e9fc2415d11657"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"a9b694779c3fce2a5c535ad16901dd338b0e09a8bf62f23805b55bcdc9e0dadb"},{"path":"src/FS.GG.Drivers/workspace-inventory.json","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"0f8d604a58a0d6a343b8b853dd756445844ad2abbf3dc1afcebeb934ad1d2bde"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"7c9267142d91c9e470f3c4de0de574715ffd37a7ac43937ad771ce8c0d1cec7d"},{"path":"scripts/board-currency-rules.py","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"f74ddd2884727fd1020c29a2051a8b0a5edf328f092351fc1a13b451a1784ff0"},{"path":"scripts/root-identity-policy.json","repository":"FS-GG/.github","revision":"f5493967820180b390b8a886c4554846477d14eb","sha256":"828dd54ca7ce74e2ffa3b2082b823537680aa8819a2a88143f359d103287174c"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-04T03:14:32Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.\n\nThe later prepared source also closes the actual Drivers dependency graph. The maintained workspace inventory delivers the admission entry point, its lazy legacy module and an exact projection of the canonical board-currency source to `.fsgg/legacy-pr-root-rules.py`. A source checkout keeps its canonical scripts path. The dedicated packaged alias supplies unchanged Root trust and reference parsing without making the ordinary Root-only board gate available in receiver workspaces. Actual maintained staging controls compare payload hashes/modes and exercise a complete valid six-PR plan through the staged CLI with inert provider data. Forged Root authorization and wrong owning references still refuse; removing either dependency fails closed. This is source/staging qualification, not a published or installed consumer claim.\n\nThe original ten-minute semantic job cancellation remains unaccepted. Its separately reviewed finite bound changes to fifteen minutes with every assertion, step and permission retained. Existing-owner scope still requires same-repository Delivery ownership; cross-repository ownership is not silently admitted. Fresh exact-source CI, native Root declaration, guarded first real continuation and any package publication/materialized adoption remain distinct acceptance. No draft-default or new-PR limit change follows from this repair.\n\nCurrent-main integration exposed another transitive dependency: the canonical board-currency source now loads the shared sibling root-identity-policy.json. The old staged alias lacked that data, so its valid-plan test failed before native effects. The repaired inventory delivers the same canonical policy beside the alias. rootRulesSource includes both exact selected rule bytes and nested policy path/SHA256; the helper checks policy stability during load and rechecks the complete fingerprint at native population barriers. Receiver-local rule and data shadows cannot replace this package closure; missing/malformed data and valid but changed policy refuse. The staged controls exercise these cases and actual valid/forged/wrong-owner plans with inert native responses. Removing the trust recheck causes the changed-policy control to fail, and restoring it passes.\n\nThe current draft-creation helper also introduced an integration boundary: legacy validation's early return must not bypass --draft's create-only restriction. The composed guard rejects legacy plus --draft before reads, while preserving main's draft flag and exact native readback implementation. Removing this guard fails the legacy mode-injection control; restoration passes. The intermediate merged admission suite reported 75 passing tests after the retained missing-policy failure. This remains source and isolated-staging evidence, not actual GitHub continuation, package publication or installed adoption. Existing original operation histories and all full Delivery acceptance obligations remain open.\n\nLocal plan and body inputs share one opened-descriptor invariant. A proposed-body FIFO with no writer passed the old symlink/size precheck and blocked before native reads; a two-second inert-boundary CLI probe preserved that failure. The repair uses O_NOFOLLOW and O_NONBLOCK before fstat, requires a regular leaf with at most65536 bytes, caps the read itself and compares opened-file identity/size/timestamps after reading. Invalid UTF-8, a directory/symlink, oversized data and determining changes refuse before native effects. The same primitive removes the plan reader's stat/open race. Empty regular files and the previous universal-newline normalization remain unchanged; downstream owning-reference and closed-JSON checks still decide validity. Writable parent directories and hostile filesystems are outside this bounded leaf proof. Removing nonblocking open reproduces the FIFO timeout in the maintained CLI control; restoration passes. The complete admission suite reports77 passing tests, with byte-range, actual file-change, empty and newline controls plus both real-CLI FIFO cases. No native continuation, publication or installed effect is proved by this source-only repair.","supersedes":["a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd"],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend","package-closure","root-trust"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/docs/atlas/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json b/docs/atlas/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json new file mode 100644 index 000000000..24109764a --- /dev/null +++ b/docs/atlas/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json @@ -0,0 +1 @@ +{"citations":[{"path":"tools/legacy-pr-update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"34557a2c7ff791339e887d3a9ec9f444104809edbe5412a0d0fc0de4c066c501"},{"path":"tools/pr-lane-admission.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"acced39d9ab6aac1ecce9107ef6d26618a64364ede9271b5668dcf6bc29c2f30"},{"path":"tests/pr-lane-admission/test_legacy_update.py","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"4af9dc45bae77f13f972eaf2c500e2b0d0e169bd342d875d1692f14642770f1e"},{"path":"docs/coordination/legacy-pr-update.md","repository":"FS-GG/.github","revision":"23be79f841f724cf4a64a9ff61a54cf55bcfa5d0","sha256":"c1820e827fe16b3fc207b024fd39a5fafa6b37ad94c321f1d19d34e549d4adda"}],"conflictsWith":[],"id":"github/legacy-owner-pr-continuation","kind":"boundary","recordedAt":"2026-11-02T22:40:56Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"An existing-owner body/title continuation is distinct from new admission or lane adoption. The separate --recover-legacy-update route binds a complete native roster of up to20 existing PRs, current default independently of historical PR bases, native owning Delivery references and exact issue bodies, existing source-change marker and pushed-head ancestry. It leaves lane metadata absent and preserves unrelated machine markers and reservations, so ordinary cap/unknown-reservation checks remain unchanged. One native Root operation comment binds repository/PR identity, owner, branch, previous/current heads and operation; REST/GraphQL comment identity and author/editor join the maintained board-currency Root trust, never caller-supplied login lists. The repository lock and adjacent rereads precede a single body/title PATCH. Fixed native-PR custody records intent, full deciding fingerprints and possible-send before effect, with complete independent roster readback. Uncertain reentry is read-only. Later operations require a fresh Root declaration explicitly resolving the exact prior journal hash/intent as delivered or not-sent and native text/head agreement; each prior journal remains intact. Source and pure tests do not prove deployment, a concrete native authorization, actual continuation or Delivery acceptance. Root policy decision is cited in the owning source document; it authorizes implementation only. Existing exact-two adoption, ordinary creation and SC2 admission remain separate.","supersedes":[],"tags":["pr","legacy","owner","continuation","custody","recovery","no-resend"],"title":"Continue an existing legacy PR owner without admitting a reservation"} diff --git a/docs/coordination/legacy-pr-update.md b/docs/coordination/legacy-pr-update.md new file mode 100644 index 000000000..9125d43fa --- /dev/null +++ b/docs/coordination/legacy-pr-update.md @@ -0,0 +1,138 @@ +# Continue one already-owned legacy PR + +The [#5269 Root decision](https://github.com/FS-GG/.github/issues/5269#issuecomment-6590105190) +permits a metadata continuation of one existing owner and PR without creating a reservation. +The maintained entry point is `tools/pr-lane-admission.py --repo OWNER/REPO +--recover-legacy-update plan.json --body-file body.md --title TITLE --inspect`. +Remove `--inspect` only for the concrete authorized operation, using the reviewed protected tool. +The policy decision authorizes implementation; it is not authorization for an individual write. + +This route leaves admission metadata absent. Ordinary admission still counts the reservation and +refuses unknown identities or excess capacity. It does not create, close, retarget, merge, push source, +assign a campaign/chain, or initialize a delivery declaration. Existing ordinary admission, exact-two +adoption and the selected SC2 exception retain their contracts. Source qualification, normal CI, +integration and the owning Delivery's complete acceptance remain separate requirements. + +## Closed plan and complete native population + +The UTF-8 plan is a regular file of at most 64 KiB, with no duplicate or unknown JSON keys. +Its exact fields are: + +| Field | Bound value | +| --- | --- | +| `schema` | `fsgg.legacy-pr-update/1` | +| `repo`, `repositoryId` | Canonical native full name and positive repository ID | +| `defaultBranch`, `defaultSha` | Current native default branch and exact lowercase 40-hex SHA | +| `number`, `previousHead` | Selected PR number and exact previous routine marker/source SHA | +| `authorization` | Exactly `commentId`, `nodeId`, `bodySha256` for the native Root operation comment | +| `successor` | `null` for the first operation; the explicit recovery object described below otherwise | +| `pulls` | The complete open roster, 1–20 entries, in increasing native number order | + +Each roster row has exactly `number`, `id`, `nodeId`, `authorId`, `author`, `branch`, `headSha`, +`base`, `baseSha`, `bodySha256`, `titleSha256`, `delivery`, `issueId`, `issueBodySha256`. +Numbers and native IDs are positive integers. Commit IDs are lowercase 40-hex; text digests are +SHA256 of the exact UTF-8 native string. PR number, ID, node ID and head branch are unique. +`delivery` is a same-repository issue number, explicitly referenced by the PR using the maintained +Refs/closing-reference parser. The issue must remain open, declare `Work level: Delivery`, and match +its native ID and body hash. Other WIP PRs may lack routine markers; their actual reservations, +identities and text are preserved, without treating them as admitted or qualified. + +The top-level default SHA and each observed PR base pointer are independent. A historical or +stacked PR base is guarded as observed, not replaced with current default. Full native PR detail +responses must agree with the complete paginated list; the list omits `merged` and +`maintainer_can_modify`, so those two fields come from detail. Every branch ref must match its row. +The shared repository lock covers the operation; the complete population, source, ownership and +Root declaration are re-read immediately before the one possible PATCH and during independent +readback. A missing, extra, duplicated or changed row refuses. + +Only the selected PR must have an existing valid `source-change` routine marker, at `previousHead` +or its current `headSha`, and no lane-marker footprint. Native comparison must prove the previous +commit is an ancestor of the pushed current commit, or identical. The complete comparison is bounded +to 100 commits; a larger, missing or divergent comparison refuses. There is no local-history fallback. + +The proposed body is also bounded to 64 KiB. It must retain the owning Delivery reference. The helper +preserves every existing machine marker, including the routine operation/extra fields and delivery +declaration. Only the routine head binding changes. Caller marker injection, lane assignment and +implicit continues/completes declarations refuse. The PATCH contains only body and title. + +## Native Root declaration + +The operation comment belongs to the selected owning Delivery. Its entire trimmed body is one +closed marker: ``. `JSON` is compact, sorted-key JSON with +exactly these fields: + +| Field | Value | +| --- | --- | +| `repo`, `prId`, `number`, `delivery`, `branch` | The selected native repository, PR, owner issue and branch | +| `previousHead`, `currentHead` | The previous source/marker SHA and current pushed SHA | +| `operation` | `update-body-title` | +| `successor` | Exactly the plan's successor object or `null` | + +`declaration()` in [the maintained helper](../../tools/legacy-pr-update.py) defines the canonical +bytes. The plan binds the exact comment ID, node ID and complete body hash. REST comment identity, +body and issue URL must join the GraphQL IssueComment node, database ID, body and repository/issue. +The author must belong to `scripts/board-currency-rules.py`'s maintained `rootLogins`. If edited, +GraphQL must establish a trusted Root editor; missing edit evidence refuses. The caller supplies +neither Root login lists nor ambient authority or expiry exceptions. A policy comment or local +record cannot substitute for this operation declaration. + +## Custody, uncertainty and later operations + +Private custody lives under the existing `pr-lane-known-roster` state directory, in a separate +`legacy-update-` directory. Ordered per-operation journals bind the +validated plan and proposed text hashes, native authorization, source comparison, complete before +population, ownership, and selected before/expected metadata hashes. Raw PR/issue prose is excluded. +The helper fsyncs `possible-send` before calling GitHub. Full independent selected metadata and +complete roster readback must match the expected one-row change before `complete` is recorded. + +A send error, unavailable/mismatching readback or intervening change retains the original journal. +Re-entry with an existing journal is read-only and refuses resend, including under a changed plan, +filename, body or head. There is no automatic cleanup or reset. GitHub offers no PR-text +compare-and-swap; adjacent checks do not claim server atomicity. A readback storage failure also +requires reconciliation rather than a retry. + +A genuinely later update requires a new Root operation comment and explicit successor object: +`custodySha256` (SHA256 of the exact prior journal file), `intentSha256` (the prior intent), and +`disposition` (`delivered` or `not-sent`). The same object is bound inside the Root declaration. +The prior comment ID cannot be reused. For `delivered`, current native body/title must match the +prior expected result and the next previous-head binding must equal the prior current head. +For `not-sent`, native body/title and previous head must match the prior preimage; a completed +journal cannot be declared not sent. This is explicit Root reconciliation, not an inferred retry +based on elapsed time or a failed acknowledgement. The prior journal remains byte-for-byte intact; +a successor gets the next numbered journal under the same stable PR identity. + +## Acceptance evidence + +The provider-boundary controls exercise the actual CLI and metadata builder, including six legacy +reservations, real list/detail differences, historical bases, Root author/editor checks, source +ancestry, injected metadata, native drift, storage failure, lost acknowledgements, incomplete +readback and explicit successor recovery. These controls do not establish a native operation. +Source review, ordinary required CI and protected integration precede the first actual qualification; +that operation still needs its adjacent native inputs, Root declaration and complete readback. + +## Packaged dependency closure + +Drivers includes the admission entry point and its `tools/legacy-pr-update.py` sibling through the +maintained workspace inventory. The package +projects the exact canonical rule bytes to `.fsgg/legacy-pr-root-rules.py` and their shared +`root-identity-policy.json` data to the same directory for this explicit mode. That +alias wins when present; otherwise a source checkout uses `scripts/board-currency-rules.py`. This +preserves the shared Root trust and reference parser without installing the ordinary Root-only board +gate into receiver workspaces. The actual stager records the delivered hashes. Source/staging controls +do not establish publication, installed adoption or authorization for a native continuation. + +The inspection result, intent and existing custody record carry `rootRulesSource` with the selected +relative path and SHA256 of the exact executed rule bytes, plus a nested `policy` path/SHA256 for +the adjacent Root identity data. Both belong to the selected package closure; a receiver-local policy +cannot replace either. The helper checks policy stability while loading and rechecks the complete +fingerprint before each native population barrier. Missing policy or determining drift refuses the +affected operation. Join that fingerprint to the selected +caller/package BOM. An alias left by an older installation is identified as that frozen source, not +silently reported as the current checkout policy. The fingerprint records provenance; it grants no +Root identity or operation authority by itself. + +Local plan and proposed-body input leaves are opened with no-follow and nonblocking flags, then +checked through the opened descriptor before bounded UTF-8 reads. A FIFO without a writer, directory, +symlink, oversize input or changing regular file refuses before native calls; an empty regular body +still reaches the existing owning-reference checks. These controls bind the file actually read and +do not claim protection against replacement of writable parent directories or hostile filesystems. diff --git a/docs/coordination/routine-delivery-evidence.md b/docs/coordination/routine-delivery-evidence.md index c7ad3fa3c..f20724f1b 100644 --- a/docs/coordination/routine-delivery-evidence.md +++ b/docs/coordination/routine-delivery-evidence.md @@ -190,6 +190,15 @@ or preserve an already identical one; conflicting, unknown or duplicate declarat refuse. Without that flag, caller injection of a new machine marker still refuses. Every unrelated machine marker, routine operation and existing lane identity is retained. +## Continue an already-owned legacy PR + +The separate [legacy PR continuation route](legacy-pr-update.md) updates one existing owner's +body/title while keeping lane metadata absent and preserving every other reservation. It requires +the complete exact native roster, source ancestry, owning Deliveries and a concrete authenticated +Root operation declaration. Fixed native-PR custody prevents uncertain resend; a later operation +requires explicit resolved successor recovery and retains the prior journal. This route grants no +new admission, cap exception, source push or integration authority. + ## SC2 private-receiver first installation The [canonical first-install source predicate](../../tools/routine-delivery.py) can inspect a candidate diff --git a/docs/coordination/v1-writer-census.json b/docs/coordination/v1-writer-census.json index a451e6f41..c8b07d81f 100644 --- a/docs/coordination/v1-writer-census.json +++ b/docs/coordination/v1-writer-census.json @@ -73,7 +73,7 @@ {"path":".github/workflows/release-kit.yml","disposition":"publish-writer","sinkKinds":["git-push","package-publish"],"sha256":"caaa1f4dfad50930ccc91582be3fce87335d11bb72386ec9255d3ee62264f626"}, {"path":".github/workflows/release-saga-prepare.yml","disposition":"publish-writer","sinkKinds":["gh-release-write"],"sha256":"704301a1ed74e863d638d016d835be956c95d68af579213cb5c4b21686877664"}, {"path":".github/workflows/release-saga-start.yml","disposition":"publish-writer","sinkKinds":["gh-api-write","git-push","rest-write","workflow-dispatch"],"sha256":"316e019d8cec6c60cd78059e5b98abb85b925fa1564f6df9f86345cd00b6d912"}, - {"path":"Directory.Build.props","disposition":"build-only","sinkKinds":[],"sha256":"3455ce38652d7ec529c38f18d5ded79ca41b002407c3d16502a897a79f15af69"}, + {"path":"Directory.Build.props","disposition":"build-only","sinkKinds":[],"sha256":"e504ff131ab6297d2efc66971763d07b9a221ad92977389414196d82c1109f9f"}, {"path":"Directory.Packages.props","disposition":"build-only","sinkKinds":[],"sha256":"863dd06c8414b7ff6248208fe14e91cb59d0f46dabccf396a42ab3ebbe489926"}, {"path":"dist/dotnet/Directory.Build.props","disposition":"build-only","sinkKinds":[],"sha256":"f29e3b29afed4f93258003519c5af5676b0a9bfea7623350491f2d60ee082d0c"}, {"path":"dist/skill-union-assert.sh","disposition":"build-only","sinkKinds":[],"sha256":"e94e25406eda585a770fd29498798067dc1c0bc78c924f581a2b6db23141ce50"}, diff --git a/registry/driver-skill-manifest.json b/registry/driver-skill-manifest.json index 1b0267edb..6608fddc7 100644 --- a/registry/driver-skill-manifest.json +++ b/registry/driver-skill-manifest.json @@ -5,7 +5,7 @@ "id": "atlas", "scope": "driver", "sha256": "a1383a9a8029f91930798e7624f5de87db68b0b6f575ea4d899761449e9fa423", - "tree-sha256": "9a97163c2f2005db02b3fcf71975e9a07f97bcd0ec48f1f00c9daaed0df89643", + "tree-sha256": "8d4a18fa429c1572ffd9d0da34c2f3973da6fb88a6820cb804406c72c4e7bd1f", "files": [ { "path": "SKILL.md", @@ -24,7 +24,7 @@ }, { "path": "assets/seed/catalog.json", - "sha256": "baa05bfca17279b49457359d5bf66250e6d91e0cd181c836e39da2f4e203f179", + "sha256": "ac5a9a1d1160ae6f586bede45b02f74448975847c632b313e186e6add6732fb1", "executable": false }, { @@ -207,6 +207,11 @@ "sha256": "126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb", "executable": false }, + { + "path": "assets/seed/records/12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9.json", + "sha256": "12c5d5d40e9abe69ccc99cc5be3784c214305ff2165e74d82b3d9504927da5c9", + "executable": false + }, { "path": "assets/seed/records/13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544.json", "sha256": "13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544", @@ -877,6 +882,11 @@ "sha256": "540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762", "executable": false }, + { + "path": "assets/seed/records/540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d.json", + "sha256": "540c718b8c0401e98b2b104efac54cdadf0c39c3baf408cb8f25ace687e29f0d", + "executable": false + }, { "path": "assets/seed/records/548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7.json", "sha256": "548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7", @@ -1767,6 +1777,11 @@ "sha256": "a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf", "executable": false }, + { + "path": "assets/seed/records/a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd.json", + "sha256": "a9e9de95b104c8b61624731355ca4888078a85332cefa21536307192cd9db1bd", + "executable": false + }, { "path": "assets/seed/records/aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637.json", "sha256": "aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637", @@ -1972,6 +1987,11 @@ "sha256": "bad8f17b1d399ea125c524895571601c90b6c93418c248bd4ebcc7886bae9878", "executable": false }, + { + "path": "assets/seed/records/bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6.json", + "sha256": "bb1e0abed21eb8f5c2139c250e23a421f6e3b28adc0b5716f4e7b5b9ea1a12e6", + "executable": false + }, { "path": "assets/seed/records/bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392.json", "sha256": "bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392", @@ -2122,6 +2142,11 @@ "sha256": "c93cd4cb5cf38fe6221fa8ae171ff54240b5f99ba80cd740ffac69c57e5fa381", "executable": false }, + { + "path": "assets/seed/records/c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e.json", + "sha256": "c98c33b9137ffa25c66a9acae385fc41f9cbfe6d326944be0192b5657d38ac8e", + "executable": false + }, { "path": "assets/seed/records/ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71.json", "sha256": "ca50b525d7aa7762c56f402696dd464841daf19b036bb932e325090004b4cd71", diff --git a/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj b/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj index 55c7b1d41..55fd9372b 100644 --- a/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj +++ b/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj @@ -137,9 +137,10 @@ once more than 250 rows are enrolled: the 0.114.0 reader refuses a population ab associations retired by 0.113.0 must not be rolled back to 0.112.0: the older reader would re-read closed sources. - 0.116.1 — Patch release of the coherent set: Kit, Drivers and CLI advance together. -Align board inspection guidance with the accepted inclusive trigger of 200 active Done cards and retention of the newest 50. Preserve deterministic ranking, guarded complete-cycle execution, the finite 450-archive cap, enrolled memberships and original uncertain-effect custody. -This guidance correction changes no archive runtime or timer. Publication, installed instructions and the first natural scheduled invocation remain separate acceptance obligations. + 0.117.0 — Minor release of the coherent set: Kit, Drivers and CLI advance together. +Add a guarded continuation for one already-owned legacy PR without creating another reservation. Preserve the complete native roster, owning Delivery, source ancestry, original operation, Root declaration, possible-send custody and independent readback; uncertainty cannot authorize another send. +Close the packaged legacy helper's trust dependencies with the unchanged canonical Root rules and shared identity policy. Selected source and policy fingerprints survive inspection and custody, receiver-local shadows cannot override them, and determining drift refuses before mutation. Draft creation remains separate and keeps its native flag/readback guarantees. +Align board inspection guidance with the accepted inclusive trigger of 200 active Done cards and retention of the newest 50. Preserve deterministic ranking, guarded complete-cycle execution, the finite 450-archive cap, enrolled memberships and original uncertain-effect custody. Guidance changes no archive runtime or timer; publication, installed instructions and natural scheduled acceptance remain separate. $(FsggStandingAdvisories) FULL PER-VERSION HISTORY IS SERVED BY THE REGISTRY, NOT REPEATED HERE (`.github#2579`). Every diff --git a/src/FS.GG.Drivers/workspace-inventory.json b/src/FS.GG.Drivers/workspace-inventory.json index 2e75d0d58..50d31f185 100644 --- a/src/FS.GG.Drivers/workspace-inventory.json +++ b/src/FS.GG.Drivers/workspace-inventory.json @@ -37,6 +37,18 @@ "source": "tools/pr-lane-admission.py", "path": "tools/pr-lane-admission.py" }, + { + "source": "tools/legacy-pr-update.py", + "path": "tools/legacy-pr-update.py" + }, + { + "source": "scripts/board-currency-rules.py", + "path": ".fsgg/legacy-pr-root-rules.py" + }, + { + "source": "scripts/root-identity-policy.json", + "path": ".fsgg/root-identity-policy.json" + }, { "source": "tools/routine-delivery.py", "path": "tools/routine-delivery.py" diff --git a/tests/pr-lane-admission/test_legacy_update.py b/tests/pr-lane-admission/test_legacy_update.py new file mode 100644 index 000000000..718239975 --- /dev/null +++ b/tests/pr-lane-admission/test_legacy_update.py @@ -0,0 +1,465 @@ +"""Provider-boundary continuation tests: genuine CLI path, actual REST list/detail shapes.""" +import contextlib +import copy +import importlib.util +import io +import json +import pathlib +import os +import subprocess +import sys +import tempfile +import unittest +from unittest.mock import patch + +import test_pr_lane_admission as existing + +ROOT = pathlib.Path(__file__).resolve().parents[2] +def load(name, path): + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec); spec.loader.exec_module(module) + return module +lane = load('continuation_lane', ROOT/'tools/pr-lane-admission.py') +recovery = load('continuation_helper', ROOT/'tools/legacy-pr-update.py') + + +class LegacyUpdateTests(unittest.TestCase): + def setUp(self): + self.temp = tempfile.TemporaryDirectory(); self.addCleanup(self.temp.cleanup) + self.root = pathlib.Path(self.temp.name) + self.pulls = {}; self.issues = {}; self.calls = []; self.patches = [] + self.hook = lambda method, endpoint: None + self.error = None + self.repo = {'id': 9, 'full_name': 'FS-GG/example', 'default_branch': 'main', 'archived': False, 'disabled': False} + self.plan = {'schema': recovery.SCHEMA, 'repo': 'FS-GG/example', 'repositoryId': 9, + 'defaultBranch': 'main', 'defaultSha': 'c'*40, 'number': 42, 'previousHead': 'b'*40, + 'authorization': {'commentId': 100, 'nodeId': 'IC_100', 'bodySha256': '0'*64}, 'successor': None, 'pulls': []} + for n in range(42,48): + native = existing.PullRequestLaneAdmissionTests().update_state()['pull'] + native.update(number=n, id=1000+n, node_id=f'PR_{n}', html_url=f'https://github.com/FS-GG/example/pull/{n}') + native['head'].update(ref=f'routine/legacy{n}', sha='a'*40) + if n in (43,44): native['base'].update(ref=f'routine/legacy{n-1}',sha='d'*40) + native['body'] = f'Refs #{n+100}\n\n' + if n != 45: + native['body'] += f'\n' + native['body'] += '\n' + if n==42: native['body'] += '\n' + self.pulls[n] = native + self.issues[n+100] = {'id': n+2000, 'number': n+100, 'state': 'open', 'body': f'Work level: Delivery\nAcceptance for {n}', + 'repository_url':'https://api.github.com/repos/FS-GG/example'} + self.plan['pulls'].append({'number':n,'id':native['id'],'nodeId':native['node_id'],'authorId':native['user']['id'], + 'author':native['user']['login'],'branch':native['head']['ref'],'headSha':native['head']['sha'], + 'base':native['base']['ref'],'baseSha':native['base']['sha'], + 'bodySha256':lane.text_sha(native['body']),'titleSha256':lane.text_sha(native['title']), + 'delivery':n+100,'issueId':n+2000,'issueBodySha256':lane.text_sha(self.issues[n+100]['body'])}) + self.original = copy.deepcopy(self.pulls) + self.path = self.root/'plan.json'; self.body = self.root/'body.md'; self.body.write_text('Refs #142\n\nQualified source.\n') + self.comment = {}; self.node = {}; self.auth() + self.comparison = {'status':'ahead','base_commit':{'sha':'b'*40},'merge_base_commit':{'sha':'b'*40}, + 'ahead_by':1,'behind_by':0,'total_commits':1,'commits':[{'sha':'a'*40}]} + + def auth(self): + row = self.plan['pulls'][0]; auth = self.plan['authorization'] + body = recovery.declaration(self.plan,row) + auth['bodySha256'] = lane.text_sha(body) + self.comment = {'id':auth['commentId'],'node_id':auth['nodeId'],'body':body,'user':{'login':'EHotwagner'}, + 'issue_url':'https://api.github.com/repos/FS-GG/example/issues/142'} + self.node = {'id':auth['nodeId'],'databaseId':auth['commentId'],'body':body,'lastEditedAt':None, + 'author':{'login':'EHotwagner'},'editor':None,'issue':{'number':142,'repository':{'nameWithOwner':'FS-GG/example'}}} + + def gh(self, executable, args, stdin=None): + if args[0] == 'graphql': + self.hook('GRAPHQL','graphql'); return {'data':{'node':copy.deepcopy(self.node)}} + method = args[args.index('--method')+1]; endpoint = args[-1] if args[-1]!='-' else args[-3] + self.calls.append((method,endpoint)); self.hook(method,endpoint) + if endpoint == '/repos/FS-GG/example': return copy.deepcopy(self.repo) + if endpoint.endswith('pulls?state=open&per_page=100'): + rows = copy.deepcopy(list(self.pulls.values())) + for row in rows: row.pop('merged'); row.pop('maintainer_can_modify') + return [rows[:3],rows[3:]] + if '/git/ref/heads/' in endpoint: + branch = endpoint.split('/git/ref/heads/')[1].replace('%2F','/') + if branch=='main': return {'object':{'sha':'c'*40}} + return {'object':{'sha':next(p['head']['sha'] for p in self.pulls.values() if p['head']['ref']==branch)}} + if '/issues/comments/' in endpoint: return copy.deepcopy(self.comment) + if '/compare/' in endpoint: return copy.deepcopy(self.comparison) + if '/issues/' in endpoint: return copy.deepcopy(self.issues[int(endpoint.rsplit('/',1)[1])]) + number = int(endpoint.rsplit('/',1)[1]) + if method=='GET': + if self.patches and self.error=='unavailable': raise lane.ToolError('read unavailable') + return copy.deepcopy(self.pulls[number]) + self.assertEqual('PATCH',method); payload=json.loads(stdin); self.assertEqual({'body','title'},set(payload)) + journal=json.loads(sorted(self.root.glob('legacy-update-*/*.json'))[-1].read_text()) + self.assertEqual('possible-send',journal['phase']) + self.assertEqual(journal['intent']['plan'],self.plan) + self.assertEqual(journal['after']['bodySha256'],lane.text_sha(payload['body'])) + self.patches.append(number) + if self.error!='not-sent': self.pulls[number].update(payload) + if self.error in ('send','not-sent'): raise lane.ToolError('uncertain acknowledgement') + if self.error=='drift':self.pulls[47]['title']='changed' + if self.error=='readback':self.pulls[number]['locked']=True + return copy.deepcopy(self.pulls[number]) + + def invoke(self, extra=()): + self.path.write_text(json.dumps(self.plan)) + with patch.object(lane,'run_gh',self.gh), patch.object(lane,'roster_custody_root',return_value=self.root), contextlib.redirect_stdout(io.StringIO()) as out: + code=lane.main(['--repo','FS-GG/example','--recover-legacy-update',str(self.path), + '--body-file',str(self.body),'--title','Qualified continuation',*extra]) + return code,json.loads(out.getvalue()) + + def test_fifo_plan_and_body_refuse_without_waiting_or_native_calls(self): + fake = self.root/'gh-must-not-run' + called = self.root/'native-called' + fake.write_text('#!/bin/sh\ntouch "' + str(called) + '"\nexit 91\n') + fake.chmod(0o700) + for selected in ('plan', 'body'): + with self.subTest(selected=selected): + plan = self.root/'fifo-plan.json'; plan.write_text(json.dumps(self.plan)) + body = self.root/'fifo-body.md'; body.write_text('Refs #142\n') + target = plan if selected == 'plan' else body + target.unlink(); os.mkfifo(target) + try: + result = subprocess.run([sys.executable, str(ROOT/'tools/pr-lane-admission.py'), + '--repo', 'FS-GG/example', '--recover-legacy-update', str(plan), + '--body-file', str(body), '--title', 'Bounded input', '--gh', str(fake), '--inspect'], + capture_output=True, text=True, timeout=2, + env={'PATH': os.environ['PATH'], 'PYTHONDONTWRITEBYTECODE': '1'}) + self.assertEqual(2, result.returncode, result.stderr) + self.assertIn('unreadable continuation ' + selected, json.loads(result.stdout)['reason']) + self.assertFalse(called.exists()) + self.assertFalse(list(self.root.glob('legacy-update-*/*.json'))) + finally: + plan.unlink(); body.unlink() + + def test_opened_regular_text_inputs_preserve_empty_and_enforce_byte_bounds(self): + self.body.write_bytes(b'') + self.assertEqual('', recovery.read_text_input(lane, self.body, 'body refused')) + self.body.write_bytes(b'first\r\nsecond\rthird\n') + self.assertEqual('first\nsecond\nthird\n', recovery.read_text_input(lane, self.body, 'body refused')) + self.body.write_bytes(b'a'*65536) + self.assertEqual('a'*65536, recovery.read_text_input(lane, self.body, 'body refused')) + self.body.write_bytes(b'a'*65537) + with self.assertRaises(lane.ToolError): recovery.read_text_input(lane, self.body, 'body refused') + self.body.write_bytes(b'\xff') + with self.assertRaises(lane.ToolError): recovery.read_text_input(lane, self.body, 'body refused') + linked = self.root/'body-link'; linked.symlink_to(self.body) + with self.assertRaises(lane.ToolError): recovery.read_text_input(lane, linked, 'body refused') + with self.assertRaises(lane.ToolError): recovery.read_text_input(lane, self.root, 'body refused') + self.body.write_bytes(b'initial') + native_fstat = os.fstat + calls = [] + def changing_input(descriptor): + calls.append(descriptor) + if len(calls) == 2: + self.body.write_bytes(b'changed after bounded read') + return native_fstat(descriptor) + with patch.object(recovery.os, 'fstat', side_effect=changing_input): + with self.assertRaises(lane.ToolError): recovery.read_text_input(lane, self.body, 'body refused') + self.assertEqual(2, len(calls)) + self.assertFalse(self.calls); self.assertFalse(self.patches) + + def test_six_pr_continuation_preserves_reservations_and_ordinary_cap(self): + code,result=self.invoke();self.assertEqual(0,code,result);self.assertEqual([42],self.patches) + self.assertEqual({n:p for n,p in self.original.items() if n!=42},{n:p for n,p in self.pulls.items() if n!=42}) + self.assertNotIn('fsgg-pr-lane-admission',self.pulls[42]['body']) + self.assertIn('head='+'a'*40+' operation=source-change extra=preserve',self.pulls[42]['body']) + self.assertIn('',self.pulls[42]['body']) + self.assertIn('',self.pulls[42]['body']) + with self.assertRaises(lane.Refusal) as caught:lane.enforce_lane(list(self.pulls.values()),'fresh','new') + self.assertEqual('repository-open-pr-cap',caught.exception.reason) + journal=json.loads(next(self.root.glob('legacy-update-*/*.json')).read_text()) + self.assertEqual('complete',journal['phase']);self.assertEqual(6,len(journal['readbackPopulation'])) + self.assertEqual(journal['after']['metadataSha256'],journal['readbackPopulation']['42']) + self.assertEqual(journal['rootRulesSource'], result['rootRulesSource']) + self.assertEqual(journal['intent']['rootRulesSource'], result['rootRulesSource']) + + def test_inspect_is_no_effect_and_historical_base_is_preserved(self): + code,result=self.invoke(('--inspect',));self.assertEqual(0,code,result) + self.assertFalse(self.patches);self.assertFalse(list(self.root.glob('legacy-update-*/*.json'))) + self.assertEqual('d'*40,self.pulls[43]['base']['sha']) + + def test_native_population_identity_text_owner_and_authorization_mutants_refuse(self): + mutations=[lambda c:c.pulls.pop(47),lambda c:c.pulls.update({99:copy.deepcopy(c.pulls[47])}), + lambda c:c.pulls[47]['head'].update(sha='f'*40),lambda c:c.pulls[47].update(body='changed'), + lambda c:c.pulls[47].update(title='changed'),lambda c:c.pulls[42]['user'].update(login='other'), + lambda c:c.repo.update(id=999),lambda c:c.plan.update(defaultSha='f'*40), + lambda c:c.pulls[43]['base'].update(sha='e'*40),lambda c:c.issues[142].update(state='closed'), + lambda c:c.issues[147].update(body='changed'),lambda c:c.comment.update(body=c.comment['body']+' changed'), + lambda c:c.node['author'].update(login='attacker'),lambda c:c.node.update(lastEditedAt='2026-11-02T00:00:00Z',editor={'login':'attacker'}), + lambda c:c.node.pop('lastEditedAt'),lambda c:c.node.update(databaseId=999), + lambda c:c.node['issue'].update(number=999),lambda c:c.comment['user'].update(login='attacker'), + lambda c:c.comparison.update(status='diverged'),lambda c:c.comparison['merge_base_commit'].update(sha='f'*40), + lambda c:c.comparison.update(commits=[]),lambda c:c.comparison.update(ahead_by=101,total_commits=101)] + for mutate in mutations: + with self.subTest(mutation=mutate): + c=LegacyUpdateTests();c.setUp() + try: + mutate(c);code,result=c.invoke();self.assertNotEqual(0,code,result);self.assertEqual([],c.patches) + finally:c.doCleanups() + + def test_marker_owner_and_mode_injection_refused(self): + cases=['Refs #142\n', + 'Refs #142\n','Refs #142\n', + 'Only mention #142 without an owning reference', 'Refs #143'] + for body in cases: + with self.subTest(body=body): + self.body.write_text(body);code,result=self.invoke();self.assertNotEqual(0,code,result);self.assertFalse(self.patches) + self.body.write_text('Refs #142') + for extra in [('--campaign-id','x'),('--adopt-legacy-pr',),('--declare-delivery-continues',),('--update-pr','42'),('--draft',)]: + self.assertNotEqual(0,self.invoke(extra)[0]);self.assertFalse(self.patches) + + def test_native_selected_bad_marker_refused_even_with_updated_preimage(self): + for replacement in ['operation=source','operation=merge']: + c=LegacyUpdateTests();c.setUp() + try: + c.pulls[42]['body']=c.pulls[42]['body'].replace('operation=source-change',replacement) + c.plan['pulls'][0]['bodySha256']=lane.text_sha(c.pulls[42]['body']) + self.assertNotEqual(0,c.invoke()[0]);self.assertFalse(c.patches) + finally:c.doCleanups() + + def test_deciding_recheck_catches_drift_before_send(self): + for field in ('locked','auth','issue'): + c=LegacyUpdateTests();c.setUp();reads=0 + def hook(method,endpoint): + nonlocal reads + if endpoint.endswith('pulls?state=open&per_page=100'): + reads+=1 + if reads==3: + if field=='locked':c.pulls[47]['locked']=True + if field=='auth':c.node.update(lastEditedAt='2026-11-02T00:00:00Z',editor={'login':'EHotwagner'}) + if field=='issue':c.issues[147]['body']='changed' + c.hook=hook + try:self.assertNotEqual(0,c.invoke()[0]);self.assertFalse(c.patches) + finally:c.doCleanups() + + def test_send_uncertainty_readback_drift_and_changed_plan_never_resend(self): + for mode in ('send','not-sent','readback','unavailable','drift'): + c=LegacyUpdateTests();c.setUp() + try: + c.error=mode;code,result=c.invoke();self.assertNotEqual(0,code,result);self.assertEqual([42],c.patches) + c.error=None;c.body.write_text('Refs #142\nchanged retry');c.path=c.root/'another-name.json' + code,result=c.invoke();self.assertEqual('legacy-update-custody-exists-no-resend',result['reason']);self.assertEqual([42],c.patches) + finally:c.doCleanups() + + def test_custody_write_failure_stops_before_effect(self): + original=lane.save_roster_custody + def save(path,value,**kwargs): + if value['phase']=='possible-send':raise OSError('disk full') + original(path,value,**kwargs) + with patch.object(lane,'save_roster_custody',save): + code,result=self.invoke();self.assertEqual(2,code,result) + self.assertFalse(self.patches) + self.assertEqual('legacy-update-custody-exists-no-resend',self.invoke()[1]['reason']) + + def successor(self, disposition): + path=sorted(self.root.glob('legacy-update-*/*.json'))[-1];prior=json.loads(path.read_text()) + self.plan['successor']={'custodySha256':lane.text_sha(path.read_text()),'intentSha256':prior['intentSha256'],'disposition':disposition} + self.plan['authorization'].update(commentId=self.plan['authorization']['commentId']+1,nodeId='IC_successor') + self.plan['pulls'][0].update(bodySha256=lane.text_sha(self.pulls[42]['body']),titleSha256=lane.text_sha(self.pulls[42]['title'])) + if disposition=='delivered': + self.plan['previousHead']='a'*40 + self.comparison={'status':'identical','base_commit':{'sha':'a'*40},'merge_base_commit':{'sha':'a'*40},'ahead_by':0,'behind_by':0,'total_commits':0,'commits':[]} + self.body.write_text('Refs #142\nNext separately authorized continuation.');self.auth() + return path,path.read_bytes() + + def test_completed_reentry_refuses_but_explicit_authenticated_successor_preserves_original(self): + self.assertEqual(0,self.invoke()[0]);self.assertEqual('legacy-update-custody-exists-no-resend',self.invoke()[1]['reason']) + path,original=self.successor('delivered');code,result=self.invoke();self.assertEqual(0,code,result) + self.assertEqual(original,path.read_bytes());self.assertEqual([42,42],self.patches) + self.assertEqual(2,len(list(self.root.glob('legacy-update-*/*.json')))) + + def test_uncertain_successors_require_native_disposition_and_new_root_comment(self): + for mode,disposition in [('send','delivered'),('not-sent','not-sent')]: + c=LegacyUpdateTests();c.setUp() + try: + c.error=mode;self.assertNotEqual(0,c.invoke()[0]);c.error=None + path,original=c.successor(disposition) + c.node['author']['login']='attacker';self.assertNotEqual(0,c.invoke()[0]);self.assertEqual([42],c.patches) + c.auth();code,result=c.invoke();self.assertEqual(0,code,result);self.assertEqual(original,path.read_bytes()) + finally:c.doCleanups() + + def test_successor_wrong_disposition_reused_authorization_and_history_refuse(self): + self.assertEqual(0,self.invoke()[0]);self.successor('not-sent') + self.assertEqual('legacy-update-successor-disposition-unproved',self.invoke()[1]['reason']);self.assertEqual([42],self.patches) + self.plan['successor']['custodySha256']='f'*64;self.auth() + self.assertEqual('legacy-update-custody-exists-no-resend',self.invoke()[1]['reason']) + + def test_duplicate_keys_extra_fields_oversized_and_symlink_plans_refuse(self): + self.path.write_text(json.dumps(self.plan)) + samples = ['{"repo":"FS-GG/example","repo":"FS-GG/example"}', + json.dumps({**self.plan, 'rootLogins':['attacker']}), ' '*65537] + for raw in samples: + self.path.write_text(raw) + with self.assertRaises(lane.ToolError): recovery.read_plan(lane,self.path,'FS-GG/example') + self.path.unlink();self.path.symlink_to(self.body) + with self.assertRaises(lane.ToolError):recovery.read_plan(lane,self.path,'FS-GG/example') + self.assertFalse(self.calls) + + def test_root_edit_must_have_native_editor_and_issue_must_declare_delivery(self): + self.node.update(lastEditedAt='2026-11-02T00:00:00Z',editor=None) + self.assertNotEqual(0,self.invoke()[0]);self.assertFalse(self.patches) + self.node['editor']={'login':'EHotwagner'} + self.assertEqual(0,self.invoke(('--inspect',))[0]);self.assertFalse(self.patches) + self.issues[142]['body']='Work level: Outcome' + self.plan['pulls'][0]['issueBodySha256']=lane.text_sha(self.issues[142]['body']) + self.assertNotEqual(0,self.invoke()[0]);self.assertFalse(self.patches) + + def test_plain_lane_footprint_cannot_be_injected_and_missing_source_is_not_empty(self): + self.body.write_text('Refs #142\nfsgg-pr-lane-admission') + self.assertNotEqual(0,self.invoke()[0]);self.assertFalse(self.patches) + self.body.write_text('Refs #142') + self.comparison={} + self.assertNotEqual(0,self.invoke()[0]);self.assertFalse(self.patches) + + def test_explicit_successor_can_bind_a_later_fast_forward_without_erasing_previous_operation(self): + self.assertEqual(0,self.invoke()[0]);path,original=self.successor('delivered') + self.pulls[42]['head']['sha']='e'*40;self.plan['pulls'][0]['headSha']='e'*40 + self.comparison={'status':'ahead','base_commit':{'sha':'a'*40},'merge_base_commit':{'sha':'a'*40}, + 'ahead_by':1,'behind_by':0,'total_commits':1,'commits':[{'sha':'e'*40}]} + self.auth();code,result=self.invoke();self.assertEqual(0,code,result) + self.assertEqual(original,path.read_bytes());self.assertIn('head='+'e'*40,self.pulls[42]['body']) + + def test_successor_cannot_reuse_an_original_root_comment(self): + self.assertEqual(0,self.invoke()[0]);self.successor('delivered') + self.plan['authorization'].update(commentId=100,nodeId='IC_100');self.auth() + self.assertEqual('legacy-update-custody-exists-no-resend',self.invoke()[1]['reason']);self.assertEqual([42],self.patches) + + def test_directory_durability_failure_prevents_any_provider_effect(self): + with patch('os.fsync',side_effect=OSError('directory flush failed')): + code,result=self.invoke();self.assertEqual(2,code,result) + self.assertFalse(self.patches);self.assertFalse(list(self.root.glob('legacy-update-*/*.json'))) + +class PackagedLegacyUpdateTests(unittest.TestCase): + """Exercise the actual maintained staging inventory and lazy CLI loader offline.""" + def test_staged_mode_loads_exact_helper_and_missing_sibling_reproduces_the_defect(self): + import hashlib + with tempfile.TemporaryDirectory() as directory: + output = pathlib.Path(directory) / 'package' + stage = load('legacy_driver_stage', ROOT/'src/FS.GG.Drivers/stage-drivers.py') + with patch('subprocess.Popen', side_effect=AssertionError('no child or native effect allowed')), \ + patch('socket.socket.connect', side_effect=AssertionError('no network allowed')): + stage.stage_workspace(str(output)) + files = output/'workspace/files' + manifest = json.loads((output/'workspace/workspace-files.json').read_text()) + for relative in ('tools/pr-lane-admission.py', 'tools/legacy-pr-update.py'): + selected = next(row for row in manifest['files'] if row['path'] == relative) + raw = (files/relative).read_bytes() + self.assertEqual(raw, (ROOT/relative).read_bytes()) + self.assertEqual(selected['sha256'], hashlib.sha256(raw).hexdigest()) + self.assertEqual(selected['executable'], bool((ROOT/relative).stat().st_mode & 0o111)) + staged = load('staged_legacy_lane', files/'tools/pr-lane-admission.py') + plan = pathlib.Path(directory)/'plan.json'; plan.write_text('{}') + body = pathlib.Path(directory)/'body.md'; body.write_text('Refs #1\n') + args = staged.parser().parse_args(['--repo', 'FS-GG/example', '--recover-legacy-update', str(plan), + '--title', 'Existing owner', '--body-file', str(body), '--inspect']) + with patch.object(staged, 'run_gh', side_effect=AssertionError('no native calls allowed')) as native: + # The real lazy loader reaches the module's closed-plan guard: this is not a mocked import. + with self.assertRaisesRegex(staged.ToolError, 'invalid closed continuation plan'): + staged.execute(args) + native.assert_not_called() + (files/'tools/legacy-pr-update.py').unlink() + # Causal negative: removing that packaged dependency recreates the original load failure. + with self.assertRaises(FileNotFoundError): + staged.execute(args) + native.assert_not_called() + + def test_staged_valid_plan_uses_identical_root_trust_and_refusals_without_enabling_receiver_gate(self): + import hashlib + with tempfile.TemporaryDirectory() as directory: + output = pathlib.Path(directory)/'package' + stage = load('valid_legacy_driver_stage', ROOT/'src/FS.GG.Drivers/stage-drivers.py') + with patch('subprocess.Popen', side_effect=AssertionError('no child allowed')), \ + patch('socket.socket.connect', side_effect=AssertionError('no network allowed')): + stage.stage_workspace(str(output)) + files = output/'workspace/files' + alias = files/'.fsgg/legacy-pr-root-rules.py' + raw = (ROOT/'scripts/board-currency-rules.py').read_bytes() + self.assertEqual(alias.read_bytes(), raw) + manifest = json.loads((output/'workspace/workspace-files.json').read_text()) + row = next(r for r in manifest['files'] if r['path'] == '.fsgg/legacy-pr-root-rules.py') + self.assertEqual(row['sha256'], hashlib.sha256(raw).hexdigest()) + # Keep the existing receiver gate unavailable; only the explicit legacy mode loads this alias. + self.assertFalse((files/'scripts/board-currency-rules.py').exists()) + import sys + spec = importlib.util.spec_from_file_location('staged_routine_delivery', files/'tools/routine-delivery.py') + delivery = importlib.util.module_from_spec(spec) + with patch.dict(sys.modules, {'staged_routine_delivery': delivery}): + spec.loader.exec_module(delivery) + self.assertIsNone(delivery.load_board_rules()) + staged = load('valid_staged_legacy_lane', files/'tools/pr-lane-admission.py') + helper = load('valid_staged_legacy_helper', files/'tools/legacy-pr-update.py') + canonical = load('canonical_legacy_root_rules', ROOT/'scripts/board-currency-rules.py') + roots, rules = helper.root_rules(staged) + self.assertEqual(roots, {r.lower() for r in canonical.PARAMS['rootLogins']}) + self.assertEqual(rules.PARAMS, canonical.PARAMS) + policy = files/'.fsgg/root-identity-policy.json' + policy_raw = (ROOT/'scripts/root-identity-policy.json').read_bytes() + self.assertEqual(policy.read_bytes(), policy_raw) + policy_row = next(r for r in manifest['files'] if r['path'] == '.fsgg/root-identity-policy.json') + self.assertEqual(policy_row['sha256'], hashlib.sha256(policy_raw).hexdigest()) + expected_source = {'path': '.fsgg/legacy-pr-root-rules.py', 'sha256': hashlib.sha256(raw).hexdigest(), + 'policy': {'path': '.fsgg/root-identity-policy.json', + 'sha256': hashlib.sha256(policy_raw).hexdigest()}} + self.assertEqual(rules.selected_source, expected_source) + source_roots, source_rules = recovery.root_rules(lane) + self.assertEqual(source_rules.selected_source, + {'path': 'scripts/board-currency-rules.py', 'sha256': hashlib.sha256(raw).hexdigest(), + 'policy': {'path': 'scripts/root-identity-policy.json', + 'sha256': hashlib.sha256(policy_raw).hexdigest()}}) + self.assertEqual(source_roots, roots) + # A receiver-local same-named policy must not replace the selected packaged source. + shadow = files/'scripts/board-currency-rules.py' + shadow.write_text('PARAMS = {"rootLogins": ["attacker"]}\n') + shadow.with_name('root-identity-policy.json').write_text( + '{"rootLogins":["attacker"],"schema":"fsgg.root-identity-policy/v1"}\n') + shadow_roots, shadow_rules = helper.root_rules(staged) + self.assertEqual(shadow_roots, roots) + self.assertEqual(shadow_rules.selected_source, expected_source) + body = 'Refs #142\n\n`Refs #999`\n\n```\nRefs #998\n```\n' + self.assertEqual(rules.pr_refs('FS-GG/example', body), canonical.pr_refs('FS-GG/example', body)) + self.assertIn('FS-GG/example#142', rules.pr_refs('FS-GG/example', body)) + self.assertNotIn('FS-GG/example#999', rules.pr_refs('FS-GG/example', body)) + for case in ('valid', 'forged-root', 'wrong-owning-reference', 'policy-drift'): + with self.subTest(case): + fixture = LegacyUpdateTests(); fixture.setUp() + try: + if case == 'forged-root': fixture.node['author']['login'] = 'attacker' + if case == 'wrong-owning-reference': fixture.body.write_text('Refs #143\n') + if case == 'policy-drift': + def change_policy(method, endpoint): + if endpoint == '/repos/FS-GG/example': + policy.write_text('{"rootLogins":["attacker"],"schema":"fsgg.root-identity-policy/v1"}\n') + fixture.hook = change_policy + lock = fixture.root/'locks'; lock.mkdir(mode=0o700) + with patch.dict(globals(), {'lane': staged}), patch.object(staged, 'lock_root', return_value=lock): + code, result = fixture.invoke(('--inspect',)) + self.assertEqual(code == 0, case == 'valid', result) + self.assertEqual(result['rootRulesSource'], expected_source) + self.assertFalse(fixture.patches) + self.assertFalse(any(method == 'PATCH' for method, _ in fixture.calls)) + self.assertFalse(list(fixture.root.glob('legacy-update-*/*.json'))) + finally: + policy.write_bytes(policy_raw) + fixture.doCleanups() + # A frozen installed alias may coexist with a newer checkout policy. Its + # exact selected bytes remain visible rather than claiming canonical freshness. + frozen = raw + b'\n# Synthetic retained package epoch for provenance control.\n' + alias.write_bytes(frozen) + frozen_roots, frozen_rules = helper.root_rules(staged) + self.assertEqual(frozen_roots, roots) + self.assertEqual(frozen_rules.selected_source, + {**expected_source, 'sha256': hashlib.sha256(frozen).hexdigest()}) + self.assertNotEqual(frozen_rules.selected_source['sha256'], source_rules.selected_source['sha256']) + policy.unlink() + with self.assertRaises(FileNotFoundError): + helper.root_rules(staged) + policy.write_bytes(b'{malformed') + with self.assertRaises(staged.ToolError): + helper.root_rules(staged) + policy.write_bytes(policy_raw) + shadow.unlink() + alias.unlink() + with self.assertRaises(FileNotFoundError): + helper.root_rules(staged) + +if __name__=='__main__':unittest.main() diff --git a/tools/legacy-pr-update.py b/tools/legacy-pr-update.py new file mode 100644 index 000000000..ffdbc1673 --- /dev/null +++ b/tools/legacy-pr-update.py @@ -0,0 +1,378 @@ +"""One existing-owner metadata continuation; called only by pr-lane-admission. + +Policy: .github#5269, Root decision issuecomment-6590105190. This does not +adopt reservations or alter admission, source, CI, integration or closure rules. +""" +from __future__ import annotations + +import importlib.util +import hashlib +import json +import os +import pathlib +import re +import stat + +SCHEMA = "fsgg.legacy-pr-update/1" +AUTH_PREFIX = "" + + +def root_rules(lane): + root = pathlib.Path(__file__).resolve().parents[1] + alias = root / ".fsgg/legacy-pr-root-rules.py" + # The selected packaged source wins over an unrelated receiver-local policy. + path = alias if alias.is_file() else root / "scripts/board-currency-rules.py" + raw = path.read_bytes() + policy_path = path.with_name("root-identity-policy.json") + policy_raw = policy_path.read_bytes() + spec = importlib.util.spec_from_file_location("legacy_update_root_rules", path) + module = importlib.util.module_from_spec(spec) + assert spec and spec.loader + # Execute the exact bytes whose hash is exposed in this operation's existing proof/custody. + try: + exec(compile(raw, str(path), "exec"), module.__dict__) + except (ValueError, UnicodeError, RecursionError) as error: + raise lane.ToolError("maintained Root trust is unreadable") from error + if policy_path.read_bytes() != policy_raw: + raise lane.ToolError("maintained Root trust changed while loading") + module.selected_source = {"path": path.relative_to(root).as_posix(), + "sha256": hashlib.sha256(raw).hexdigest(), + "policy": {"path": policy_path.relative_to(root).as_posix(), + "sha256": hashlib.sha256(policy_raw).hexdigest()}} + roots = module.PARAMS.get("rootLogins") + if not isinstance(roots, list) or not roots or any(not isinstance(x, str) or not x.strip() for x in roots): + raise lane.ToolError("maintained Root trust is unreadable") + return {x.lower() for x in roots}, module + + +def guard_sha(lane, guard): + return lane.text_sha(encoded({key: lane.metadata_fingerprint(value) for key, value in guard.items()})) + + +def execute(lane, args): + spec = read_plan(lane, args.recover_legacy_update, args.repo) + selected = next(row for row in spec["pulls"] if row["number"] == spec["number"]) + proposed = read_text_input(lane, args.body_file, "unreadable continuation body") + roots, rules = root_rules(lane) + intent = {"plan": spec, "proposedBodySha256": lane.text_sha(proposed), "titleSha256": lane.text_sha(args.title), + "rootRulesSource": rules.selected_source} + intent_sha = lane.text_sha(encoded(intent)) + identity = {"repo": args.repo, "number": selected["number"], "nativeId": selected["id"], "intentSha256": intent_sha, + "rootRulesSource": rules.selected_source} + attempted = False + def refuse(reason, **details): + raise lane.Refusal("legacy-update-" + reason, **identity, writeAttempted=attempted, **details) + def get(endpoint): + return lane.run_gh(args.gh, ["--method", "GET", endpoint]) + def projection(native): + guard, problems = lane.metadata_projection(native) + if problems: + refuse("native-unreadable") + return guard + guards, issues = {}, {} + authorization_before = None + source_before = None + desired = None + + def authorization(): + auth = spec["authorization"] + comment = get(f"/repos/{args.repo}/issues/comments/{auth['commentId']}") + expected_url = f"https://api.github.com/repos/{args.repo}/issues/{selected['delivery']}" + if (not isinstance(comment, dict) or comment.get("id") != auth["commentId"] + or comment.get("node_id") != auth["nodeId"] or comment.get("issue_url") != expected_url + or not isinstance(comment.get("body"), str) + or lane.text_sha(comment["body"]) != auth["bodySha256"] + or comment["body"].strip() != declaration(spec, selected)): + refuse("authorization-mismatch") + query = "query($id:ID!){node(id:$id){... on IssueComment{id databaseId body lastEditedAt author{login} editor{login} issue{number repository{nameWithOwner}}}}}" + response = lane.run_gh(args.gh, ["graphql", "-f", "query=" + query, "-f", "id=" + auth["nodeId"]]) + data = response.get("data") if isinstance(response, dict) else None + node = data.get("node") if isinstance(data, dict) else None + if (not isinstance(node, dict) or response.get("errors") or node.get("id") != auth["nodeId"] + or node.get("databaseId") != auth["commentId"] or node.get("body") != comment["body"] + or node.get("issue") != {"number": selected["delivery"], "repository": {"nameWithOwner": args.repo}} + or "lastEditedAt" not in node or "editor" not in node + or not isinstance(node.get("author"), dict) or not isinstance(node["author"].get("login"), str) + or node["author"]["login"].lower() not in roots + or lane.metadata_field(comment, "user.login") != node["author"]["login"]): + refuse("authorization-identity-unreadable") + edited = node["lastEditedAt"] + if edited is not None and (not isinstance(edited, str) or not edited + or not isinstance(node["editor"], dict) or not isinstance(node["editor"].get("login"), str) + or node["editor"]["login"].lower() not in roots): + refuse("authorization-editor-untrusted") + return {"commentId": auth["commentId"], "nodeId": auth["nodeId"], "bodySha256": auth["bodySha256"], + "author": node["author"]["login"], "editedAt": edited, "editor": node["editor"]} + + def source(): + old, new = spec["previousHead"], selected["headSha"] + # A bounded complete comparison, not a caller's local ancestry assertion. + value = get(f"/repos/{args.repo}/compare/{old}...{new}?per_page=100") + if (not isinstance(value, dict) or value.get("status") != ("identical" if old == new else "ahead") + or lane.metadata_field(value, "base_commit.sha") != old + or lane.metadata_field(value, "merge_base_commit.sha") != old + or type(value.get("ahead_by")) is not int or not 0 <= value["ahead_by"] <= 100 + or type(value.get("behind_by")) is not int or value["behind_by"] != 0 + or type(value.get("total_commits")) is not int or value["total_commits"] != value["ahead_by"] + or not isinstance(value.get("commits"), list) or len(value["commits"]) != value["ahead_by"]): + refuse("source-ancestry-unproved") + commits = [item.get("sha") if isinstance(item, dict) else None for item in value["commits"]] + if (any(not isinstance(x, str) or not HEX40.fullmatch(x) for x in commits) + or len(set(commits)) != len(commits) or (old != new and (not commits or commits[-1] != new)) + or (old == new and commits)): + refuse("source-comparison-incomplete") + return {"previousHead": old, "currentHead": new, "commits": commits} + + def population(initial=False): + nonlocal desired, authorization_before, source_before + try: + current_roots, current_rules = root_rules(lane) + except (OSError, lane.ToolError): + refuse("root-trust-unreadable") + if current_roots != roots or current_rules.selected_source != rules.selected_source: + refuse("root-trust-drift") + repo = get(f"/repos/{args.repo}") + if (not isinstance(repo, dict) or repo.get("id") != spec["repositoryId"] or repo.get("full_name") != args.repo + or repo.get("default_branch") != spec["defaultBranch"] or repo.get("archived") is not False + or repo.get("disabled") is not False): + refuse("repository-mismatch") + if lane.current_head_sha(args.gh, args.repo, spec["defaultBranch"]) != spec["defaultSha"]: + refuse("default-moved") + pulls = lane.open_pulls(args.gh, args.repo) + numbers = [pull.get("number") for pull in pulls] + if (len(pulls) != len(spec["pulls"]) or any(type(n) is not int for n in numbers) + or len(set(numbers)) != len(numbers) or set(numbers) != {r["number"] for r in spec["pulls"]}): + refuse("population-mismatch") + for row in spec["pulls"]: + number = row["number"] + native = get(f"/repos/{args.repo}/pulls/{number}") + guard = projection(native) + listed = next(p for p in pulls if p["number"] == number) + # Actual GitHub list omits these two detail-only fields; all remaining deciding fields join. + list_fields = set(lane._METADATA_FIELDS) - {"merged", "maintainer_can_modify"} + if any(lane.metadata_field(listed, field) != guard[field] for field in list_fields): + refuse("population-disagrees") + if lane.current_head_sha(args.gh, args.repo, row["branch"]) != row["headSha"]: + refuse("head-moved") + wanted = {"number": number, "id": row["id"], "node_id": row["nodeId"], "state": "open", "merged": False, + "user.id": row["authorId"], "user.login": row["author"], "head.ref": row["branch"], "head.sha": row["headSha"], + "base.ref": row["base"], "base.sha": row["baseSha"], "head.repo.id": spec["repositoryId"], + "base.repo.id": spec["repositoryId"], "head.repo.full_name": args.repo, "base.repo.full_name": args.repo, + "html_url": f"https://github.com/{args.repo}/pull/{number}"} + if any(guard[field] != value for field, value in wanted.items()): + refuse("preimage-identity-mismatch") + if initial: + if lane.text_sha(native["body"]) != row["bodySha256"] or lane.text_sha(native["title"]) != row["titleSha256"]: + refuse("preimage-text-mismatch") + guards[number] = guard + elif guard != guards[number]: + refuse("preimage-drift") + issue = get(f"/repos/{args.repo}/issues/{row['delivery']}") + if (not isinstance(issue, dict) or issue.get("id") != row["issueId"] or issue.get("number") != row["delivery"] + or issue.get("state") != "open" or "pull_request" in issue or not isinstance(issue.get("body"), str) + or issue.get("repository_url") != f"https://api.github.com/repos/{args.repo}" + or lane.text_sha(issue["body"]) != row["issueBodySha256"] + or not re.search(r"^Work level: Delivery\b", rules.visible_text(issue["body"]), re.MULTILINE)): + refuse("ownership-issue-mismatch") + if f"{args.repo}#{row['delivery']}" not in rules.pr_refs(args.repo, native["body"]): + refuse("ownership-reference-missing") + issue_fact = {"id": issue["id"], "number": issue["number"], "bodySha256": row["issueBodySha256"], "state": "open"} + if initial: + issues[number] = issue_fact + elif issues[number] != issue_fact: + refuse("ownership-drift") + if initial: + fresh = guards[selected["number"]]["body"] + if not selected["branch"].startswith("routine/"): + refuse("selected-not-routine") + desired = lane.update_body(fresh, proposed, selected["branch"], selected["headSha"], spec["previousHead"], "", "", retain_legacy=True) + fields = lane.routine_validator().marker_fields(lane.routine_validator().ROUTINE_MARKER_RE, desired)[0] + if fields.get("operation") != "source-change": + refuse("selected-operation-mismatch") + if f"{args.repo}#{selected['delivery']}" not in rules.pr_refs(args.repo, desired): + refuse("proposed-owner-reference-missing") + auth, comparison = authorization(), source() + if initial: + authorization_before, source_before = auth, comparison + elif authorization_before != auth or source_before != comparison: + refuse("authorization-or-source-drift") + + with lane.repository_lock(args.repo): + # Same stable PR identity across head/body/filename changes. Prior operations are never erased. + root = lane.roster_custody_root() / ("legacy-update-" + lane.text_sha(args.repo.lower() + ":" + str(selected["id"]))) + root.mkdir(mode=0o700, exist_ok=True) + info = root.lstat() + if not stat.S_ISDIR(info.st_mode) or info.st_uid != os.getuid() or stat.S_IMODE(info.st_mode) & 0o077: + raise lane.ToolError("unsafe continuation custody directory") + # Persist newly created directory entries as well as journal contents. A crash + # must not lose the stable custody directory after a provider effect. + for directory in (root, *root.parents): + descriptor = os.open(directory, os.O_RDONLY | os.O_DIRECTORY) + try: + os.fsync(descriptor) + finally: + os.close(descriptor) + files = sorted(root.iterdir()) + history = [] + for index, path in enumerate(files, 1): + info = path.lstat() + if (path.name != f"{index:06d}.json" or not stat.S_ISREG(info.st_mode) + or info.st_uid != os.getuid() or stat.S_IMODE(info.st_mode) & 0o077 or info.st_size > 262144): + raise lane.ToolError("unsafe continuation custody history") + try: + raw = path.read_text(encoding="utf-8") + old = json.loads(raw) + if old.get("schema") != SCHEMA or old.get("nativeId") != selected["id"] or old.get("repo") != args.repo: + raise ValueError("identity") + history.append((old, lane.text_sha(raw))) + except (ValueError, AttributeError, UnicodeError) as error: + raise lane.ToolError("unreadable prior continuation custody; no resend") from error + if history: + prior, prior_sha = history[-1] + successor = spec["successor"] + if (not successor or successor["custodySha256"] != prior_sha or successor["intentSha256"] != prior.get("intentSha256") + or any(old.get("authorization", {}).get("commentId") == spec["authorization"]["commentId"] for old, _ in history)): + native = get(f"/repos/{args.repo}/pulls/{selected['number']}") + refuse("custody-exists-no-resend", priorIntentSha256=prior.get("intentSha256"), phase=prior.get("phase"), + observedMetadataSha256=guard_sha(lane, projection(native))) + elif spec["successor"] is not None: + refuse("successor-without-history") + population(initial=True) + if history: + prior, _ = history[-1] + delivered = spec["successor"]["disposition"] == "delivered" + expected = prior.get("after" if delivered else "before", {}) + current = guards[selected["number"]] + if (lane.text_sha(current["body"]) != expected.get("bodySha256") + or lane.text_sha(current["title"]) != expected.get("titleSha256") + or spec["previousHead"] != prior.get("currentHead" if delivered else "previousHead") + or (not delivered and prior.get("phase") == "complete")): + refuse("successor-disposition-unproved") + population() + if args.inspect: + return {"ok": True, "action": "admitted", **identity, "openNativePullRequestCount": len(spec["pulls"])} + before = guards[selected["number"]] + after = {**before, "body": desired, "title": args.title} + def texts(guard): + return {"bodySha256": lane.text_sha(guard["body"]), "titleSha256": lane.text_sha(guard["title"]), + "metadataSha256": guard_sha(lane, guard)} + custody = {"schema": SCHEMA, **identity, "intent": intent, "authorization": authorization_before, + "source": source_before, "previousHead": spec["previousHead"], "currentHead": selected["headSha"], + "before": texts(before), "after": texts(after), "phase": "validated", + "population": {str(n): guard_sha(lane, g) for n, g in guards.items()}, + "ownership": {str(n): fact for n, fact in issues.items()}} + path = root / f"{len(history)+1:06d}.json" + lane.save_roster_custody(path, custody, create=True) + population() + custody["phase"] = "possible-send" + lane.save_roster_custody(path, custody) + attempted = True + try: + lane.run_gh(args.gh, ["--method", "PATCH", f"/repos/{args.repo}/pulls/{selected['number']}", "--input", "-"], + stdin=json.dumps({"body": desired, "title": args.title}, ensure_ascii=False)) + except lane.ToolError: + refuse("send-uncertain") + guards[selected["number"]] = after + try: + population() + except (lane.ToolError, lane.Refusal) as error: + refuse("readback-unresolved", cause=str(error)) + custody["phase"] = "complete" + custody["readbackPopulation"] = {str(n): guard_sha(lane, g) for n, g in guards.items()} + lane.save_roster_custody(path, custody) + return {"ok": True, "action": "updated-legacy-owner", **identity, + "headSha": selected["headSha"], "custodySha256": lane.text_sha(path.read_text()), + "openNativePullRequestCount": len(spec["pulls"])} diff --git a/tools/pr-lane-admission.py b/tools/pr-lane-admission.py index f7a4108f1..61e0a1dc6 100755 --- a/tools/pr-lane-admission.py +++ b/tools/pr-lane-admission.py @@ -17,6 +17,7 @@ import sys import tempfile import urllib.parse +from types import SimpleNamespace from typing import Any, Iterator @@ -142,12 +143,14 @@ def machine_markers(body: str) -> dict[str, str]: def update_body(fresh: str, proposed: str, branch: str, head: str, previous_head: str, campaign: str, chain: str, *, adopt_legacy: bool = False, - declare_continues: bool = False) -> str: + declare_continues: bool = False, retain_legacy: bool = False) -> str: """Preserve native metadata, optionally adding a genuinely absent admission identity.""" + if retain_legacy and (adopt_legacy or declare_continues or "fsgg-pr-lane-admission" in fresh or "fsgg-pr-lane-admission" in proposed): + raise ToolError("legacy continuation cannot assign or change admission metadata") adopting = adopt_legacy and "fsgg-pr-lane-admission" not in fresh if adopting and not branch.startswith("routine/"): raise ToolError("legacy adoption requires an existing routine PR") - if not adopting and (marker_from_body(fresh) != (campaign, chain) + if not adopting and not retain_legacy and (marker_from_body(fresh) != (campaign, chain) or fresh.count("fsgg-pr-lane-admission") != 1): raise ToolError("existing PR admission identity is missing, malformed or conflicts") original = machine_markers(fresh) @@ -854,6 +857,7 @@ def parser() -> argparse.ArgumentParser: result.add_argument("--adopt-legacy-pr", action="store_true", help="Explicitly assign the supplied campaign/chain to an existing routine PR with absent admission metadata") result.add_argument("--sc2-producer-predecessor-source", help="Protected canonical producer pin for the selected SC2 first-install predecessor") + result.add_argument("--recover-legacy-update", type=pathlib.Path, help="Explicit already-owned legacy PR metadata continuation plan") result.add_argument("--adopt-known-roster", type=pathlib.Path, help="Explicit exact two-legacy-PR roster; separate guarded metadata operation") result.add_argument("--declare-delivery-continues", action="store_true", help="Explicitly initialize a missing continues declaration during an existing PR update") result.add_argument("--inspect", action="store_true", help="Check admission without creating a PR") @@ -864,8 +868,16 @@ def parser() -> argparse.ArgumentParser: def validate(arguments: argparse.Namespace) -> None: if not REPO_RE.fullmatch(arguments.repo): raise ToolError("repo must have owner/repository form") - if arguments.draft and (arguments.update_pr is not None or arguments.adopt_known_roster): + if arguments.draft and (arguments.update_pr is not None or arguments.adopt_known_roster + or arguments.recover_legacy_update): raise ToolError("--draft only supports new PR creation") + if arguments.recover_legacy_update: + if (any(getattr(arguments, key) is not None for key in ("campaign_id", "dependency_chain_id", "head", "head_sha", "base", "update_pr", "previous_head_sha", "sc2_producer_predecessor_source", "adopt_known_roster")) + or arguments.adopt_legacy_pr or arguments.declare_delivery_continues + or arguments.body_file is None or not isinstance(arguments.title, str) + or not arguments.title.strip() or "\n" in arguments.title or "\r" in arguments.title): + raise ToolError("legacy continuation requires only a plan, title and body") + return if arguments.adopt_known_roster: if any(getattr(arguments, key) is not None for key in ("campaign_id", "dependency_chain_id", "head", "head_sha", "base", "title", "body_file", "update_pr", "previous_head_sha", "sc2_producer_predecessor_source")) or arguments.adopt_legacy_pr or arguments.declare_delivery_continues: raise ToolError("known-roster mode cannot mix ordinary PR arguments") @@ -935,6 +947,16 @@ def unresolved(stage: str) -> None: def execute(arguments: argparse.Namespace) -> dict[str, Any]: validate(arguments) + if arguments.recover_legacy_update: + path = pathlib.Path(__file__).with_name("legacy-pr-update.py") + spec = importlib.util.spec_from_file_location("legacy_pr_update", path) + module = importlib.util.module_from_spec(spec) + assert spec and spec.loader + spec.loader.exec_module(module) + try: + return module.execute(SimpleNamespace(**globals()), arguments) + except OSError as error: + raise ToolError("legacy continuation I/O failed; retain custody and do not resend") from error if arguments.adopt_known_roster: try: return adopt_known_roster(arguments)