python311-passlib-1.7.4-150600.12.2.1<>,؉hp9|iZCIHbkP&wȸi7%U_+/Mk7!J;vzd#t^zۺ@ ̸!Ƃ4qh#nbԐB- \]X&;\2*qZdY$Ð1 [Ae~+γg!>5Jl^٠RhOdJ S`?4'hʬl\P bctZ6K=ܐ=\햔7jR-bZOD`ۇZ>AD?4d ( ^tx %,JTJ  J  |J J ^J _Je JkJrr0JwXwlwx(x88x@9x:yFGJHJIDJXY\J]J^Zbc>defluJv wǬJxJyzpրք0Cpython311-passlib1.7.4150600.12.2.1Password hashing framework supporting over 20 schemesPasslib is a password hashing library for Python 2 & 3. It provides implementations of over 20 password hashing algorithms, as well as a framework for managing existing password hashes. It can verify hashes found in /etc/shadow, and provide password hashing for applications.hh03-ch2bQ{SUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/Unspecifiedhttps://foss.heptapod.net/python-libs/passliblinuxnoarchZ %.nW:33=CVCV dd ] ]pspOPkk 3=* @)ET !<eJewo 79 O!ʦ>%!!""SS"KW8"Vz~()67TWWddXX!!<[qA1340x0xN?W_Nw25'}!"#JBX 7BU(6m0` 7tq'OMR77||  UU: 9 9!d!dTTv/vy]%O%}HVVtDu--GGQQ**((4h4h6Ž966  l:n !r#2rb"Oh+ Y5smO<Id\B$&}/ @UI_:~&%M%M};Ellffz7:>.. sF  ZAA큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh_RXh_|ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508a95ba8f1af88ff8d5f0d0c33519f430b7f9d8992b69d4bc369ac0423a7a05a8962d37779da1e4969d7863fba06175d8624ccbe944408063a32ec9afbbd55ee0527cd4d387bcb035027a4aa64dda04577c05867e01c2bc823c30e7404fdeb4372e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855f86fedd281ae13b503d03ad2a55667ab584730157d0c3d97912e6fed7a664e79040f716c9a4b75a4f1aaf61b2a28189cc424ce9f3e510afa4b89b79414e4c73c01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b9d266b3c4b6531048a66ac4446661c5820c10faa49d4ffc32f94dd7928c845e535ec863b45446a217121771b486583faab9d8281e29cfaeb5af128dfae253a1935ec863b45446a217121771b486583faab9d8281e29cfaeb5af128dfae253a19b107feb4a5d87e338e1cff80561ba131de7af45004e1234dddd4da1b658ca6c0171cf3f3688019022e3162db20e18f47162a8e61a687c4e9915fa7b40fe7a3bef83f40dd15903a47eba9e4ae9926a654059776510a00ad5d75c098b3a7a800a2f83f40dd15903a47eba9e4ae9926a654059776510a00ad5d75c098b3a7a800a2b3b3589c32ff5571989fbc8976204ea3e3e92e46608235dcbd967f1f75e8c5578b62b3b2600bb3575f995e646c35b3e56d81604599f8c601c5424ba1ce6bcfc4c5e56350280051127f95507f969947245d13f989c04258b635e71a192f6ed251c5e56350280051127f95507f969947245d13f989c04258b635e71a192f6ed2512cde7dfdc3a41de989ec20576daa30b73a0993eaaf292e51b0c6535c19ba01bf2cde7dfdc3a41de989ec20576daa30b73a0993eaaf292e51b0c6535c19ba01bfc2e2a7d7c1435636f1b3f72654b5e6a0fda0124db896a147a18fd0e43ae9fdaac2e2a7d7c1435636f1b3f72654b5e6a0fda0124db896a147a18fd0e43ae9fdaa79d3e18a287f7edbfc49133a3f946dc40f62d8684ba25b0f298919e4d3d2da1479d3e18a287f7edbfc49133a3f946dc40f62d8684ba25b0f298919e4d3d2da1474e7ff5063d7b85a07673b5c0c8ce8906636ec51c8c094ed4b3464b7898e712b0a81de4e115bb58d4a5ce538d97f1e9bca67830c4d5f3b55c54e84eaf46aee1ef80760b9de51e811649b72dfba96b78761184ddf6028c7ac32f207fa16a57941318a97ea1c93d2a0cc2ab53dd93813706fe4d7ccbaf53ba9a3df6e5f201f5c27f7c06aa1c228671a1dc1993d6175782ceffb4a7795102d985a753fc05558efb85023a64c405c2c0ef6edc5feb6cb31c64fa49c0efeb1358786a82967d24ae017d33892e1017311ebad30ad609f2f82476b5ea8710172974389df256a901741e4d33892e1017311ebad30ad609f2f82476b5ea8710172974389df256a901741e424ce42c2fd4a95c1b86bbee9bce1e1cf255bd0022e19bab6bd591afd68b7efdb6d557f0693958fb5e650b68b5bee585eb82cf4da32965505c789e924743bc5227aa57a4d3ecf6581729992bad9575bacdebf7c28378af2aec6a50f11aec326f536ecca49e4fa20ca84b176c32f2e9c82f98f446585190e75f9879a95c08247bf53d77828ad1d472378c1acc895faba672d36b0e30dc19c257f4c0f7d8c1c93fcf55d9fe5c21d42a22ca1c2a61c131282d26bb8138866c2df1853b7ffbbac8047f55d9fe5c21d42a22ca1c2a61c131282d26bb8138866c2df1853b7ffbbac8047380800a032057d016c087e58cb1aa93b71233d5cf9dd3ad7d6609b3af3eb0ce954b0bf6da83812e26322bfc624d5cbebd388ebf948e6fc8aa19a78aa3705f49b45a9f0b5f288b1b446f789b922a8aa34c3e5f5252f3cc5536a3eb6c0e903eb134ec1d40aeaf95bcb4add1b1bf6361e78109ced46bf84ff5edad4b1ce8515cf07018aa78b74087a547b1c288f8ff86fd8c72bf1bb1f75c524874ec3c10a99c56b6897938c0fa1ee47b728e6ef10cf1a489cca74ddf0acecaed214edf8c4db26dd4ade821aa86b7f3dcbe436b7699bd12baf657bf15c2cb137800d9d101c8e982d078e5b328f5e2810ade09596ced54e2834c3257f811892d4be786568e13ea86b078e5b328f5e2810ade09596ced54e2834c3257f811892d4be786568e13ea86bdda6d7885982bec0b44cef7dc88b60f99de7ab30cd766fd71b0f4854ec030cca5b37aa598eec4cbb7f8802afbdff2d83f8ce463cc72de6df5088efe502633c9e26b5fef15f28b8bd524cfd71fc8ad9bae4559d484790389d184697cb465e33b56138ecf8fab4092dd59bc1bf205220d351609f81226f52c5fdb77033aa7cf971ecce880f8fa971f3ef70b7f61ff4d4c23ddf57d9724ee265a18996b3ce1a1e8697f8df83f9b3991c189a34286ac20a183f1bb0080697af0bc9b6ebadf9ebb3dd8996fb7edd6fc418c25bb9690ed5b04f1b8c89c82f8baef733917fd4f29d564857e9e71efd8e507f00da68e843a98820299aa5f63526b26cd34ed5dc9307f9e9ae9b597209044dfc2c9f959577a7be993378c6560b49b77947f20d3e15cb144ab109ed60cb562fbec54eda9c2fe75b6cf274e6354a2773eb3275636ede33ab84b109ed60cb562fbec54eda9c2fe75b6cf274e6354a2773eb3275636ede33ab84db92c9a46a17caf755904fc8d3346bfd665c181c95ab6f726e309c60ccfe0427e070830b72c346af495d1dd9c962fa695a235496d74545040439ae462ffc33e7d32f6a21b30014026973324c90154de27d3acb3868f6aff650b7e6f0b393b1fbd32f6a21b30014026973324c90154de27d3acb3868f6aff650b7e6f0b393b1fb7d4acd196039357f42cafa096cd849bfb3c99a9b5ba75b9247d89a5b32a46f52ff317bc7a5d26ea0a5d871f91326bc2888612556c362e60058a7f16e3390656814e321568fe39c64b76cc69f5df8c47df0cf48fe6f328805beea6754a01ad658ff9457057fe0a30b4dd31d393e7374105fdcb0ee10fcd039c219ba7bfbc9c74fd44b2f55ddf867cd8162619bf092337d55af4cc37bd1f5a12469887e636b04055ac7e9702f0833e82f661e7a9babfc6e3cc6e27b0d02c6a84afd8b358d7fe60a6d799e21eacde832894b0f17b1011872c50a09f4695c66f5f747be81d1db6ea583d241e5ffefe19c42b13190cbf3de417823a817a20a7640ca163182a29896cf83d241e5ffefe19c42b13190cbf3de417823a817a20a7640ca163182a29896cf1ab69e66d5cacf8c47d0034114d05b98f9f782e4b82ffec9050c3ea9182f64ce818c2c7697e0a62c86b10763fe66a366cf9b2da6b7b64b934919ce9d957b9aeb41057cad9e7aa48edea31339ba13c7976395dd887a93b30beb2588364c0f9b6841057cad9e7aa48edea31339ba13c7976395dd887a93b30beb2588364c0f9b68d1a7ad7fa46268e8f86b42dfc548d5b10df38356bdf7578e3d00048507b5bd79d1a7ad7fa46268e8f86b42dfc548d5b10df38356bdf7578e3d00048507b5bd79f3645973fe0b42fd8908bd3a6d7ef484220205a2b7d14cbb3c6ce666d88e8c0dbd18639482aac2f7082c2a36d2c55ff1d5ebd79b56eb7eade68a2301916cb0916fceff6043f78c94a6954d811d2c7e34a889e1eff578af91942e29580e32ef523088d44c12dc39a8b9da96832ccd67161ea53132c12cf027d4f4dd6c29bef45a01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546bffd77a906c470bed5f7f562ecb424156fbe59fcd85e77336ae7886eb43e4d5d7ffd77a906c470bed5f7f562ecb424156fbe59fcd85e77336ae7886eb43e4d5d746fa281e6b94c232d7b92b9426bfbd5119d8d424550b3536c5d87e8d6fa6acdd41aa8afe0003fb8bcbd176d719e70c0525ed2aae2cd9c91c738a0a8142be135941aa8afe0003fb8bcbd176d719e70c0525ed2aae2cd9c91c738a0a8142be13596d928a6741a59b3ade6132b5e1cfc63a007256c03f3c9937d397ff987e332e5e6d928a6741a59b3ade6132b5e1cfc63a007256c03f3c9937d397ff987e332e5eab8e313644114a763469068111cf533c364b72a1e65e8b3f4c22048e12ca3b99a6df8e0a5f4c12fc0dfb84c81d91ce6d83cf0b2ad8f6b75b0e82989b3908b7a9f97a5044b186da44ee2d636887e12128e69e115e5a21fcdabf0f2a4d0fa9d5f339ba482d1d6c78e67279c621b90d46fd1f7f37a0ccb92e24599bdefe08912e2cb083e32603861e9388b2d0300de1d37f1291f302d5a8fe3349ae26bc184067ff03394e22082466f2b0b0eb78af27019d808f76f5985b3550fe092c7db3b6d5f303394e22082466f2b0b0eb78af27019d808f76f5985b3550fe092c7db3b6d5f397cccf7cea28a66c32ccae7705da3cf3ca41a9531e5a2c26f0755c04f3b13846fae10441e0e3b030f8bc5c3feb4bee74b898d6ddb2e29fcd91cabc55b56e1accc55c2095b76015f7487d656b0b572e1567a89547152aa4b8cc4c30978d46a5ec6d601dca203fd2d69699dee342e10528ad74a95bacb465f361c53e467320b72a83073f6cfe92641ede1b38bb8da78f0a189e4701b127a7ccc74a6c3ef0eb181d6d66aa19ac2ba035744ee464c3fffb19533e272883135b68f6829b8bcf8fe60ea0a8fa30f0bc534c84416e35d7728d00c7c5f00a7b511fc8a84e4d72490462e4e51ef39b4d876dd1ee7c74215e2f88a645e941a5a7916ca8c457db9e6ca248249786472b1b91108af275fa8f51f01d7a831a5b286300eed965fcef9784802c249786472b1b91108af275fa8f51f01d7a831a5b286300eed965fcef9784802c2418b16203a799155ea8d086949b118ea8fdd2baed89b14af803adc7e00ab285f518b16203a799155ea8d086949b118ea8fdd2baed89b14af803adc7e00ab285f5fa2b3a8df41bbe00e08a11e767577f64af12d3425f7cb7d41cedca09f6206c9a848bec21f0609a2bd27795419bccdacfe3760b9d8b660d1f33419331bb70519ff0334c1e567ca2e499fccf59c045ef6b96eed2c95e9b960761d10eabd106ee649af6250cf4911200ef48ef04937dbef8baff962977abf727775207e519ade498568688364d3504719af57819e791dfa5529e361cbe02a8742a492b449c85b93348dfe17a823dfeda067ab63c79f44d1073708e26a2ced559ce834973bed0453111a8dc55aa2551d31f822e05befb505500831254d92564bde34761bb6c5dcd9c5dc1faad731bb05041b3e63d51787b7dfe2223cb51be889d44fb5e6f8e33d77a415fb578c85b2bb7de85fffe6fa89d6f9ab557018474d03030d694855624e51f981ba2c82de428b9a9f0332206fbccc520c44c70c8dd215be63a6f8fa9c1aa391a87f012b2236934d2eb408e4d8e7a51dd29282e17fcf467d7b44e764ff6cf971a87f012b2236934d2eb408e4d8e7a51dd29282e17fcf467d7b44e764ff6cf9711eb98b12cf507acb7325265005a771a92c44f94f81a2b3718b2f5c4a846c2bb11eb98b12cf507acb7325265005a771a92c44f94f81a2b3718b2f5c4a846c2bb97c21b6db05484779fe6d84424dcd27ad1d90d0260892735251ae6a3417164df97c21b6db05484779fe6d84424dcd27ad1d90d0260892735251ae6a3417164df00a57747cfa76ad8dedcc61e22ef3deb827fad5ab1aa6b705b6782ba14ffa95c00a57747cfa76ad8dedcc61e22ef3deb827fad5ab1aa6b705b6782ba14ffa95cca9b66dc83526b89d93cd43d049ee282d4108807f0cac7dab4e982ece52aacd2ca9b66dc83526b89d93cd43d049ee282d4108807f0cac7dab4e982ece52aacd268ad1ea6b2b0bb3c0d6b73a3d5e681584e99c4239f462dd319d419b44f8b576668ad1ea6b2b0bb3c0d6b73a3d5e681584e99c4239f462dd319d419b44f8b576627e4362ad6f8ff2c40eb5c74bbdfb60fea2365455cc82ec808b7746028ba0506c73029a52730c182dc5d4d941c5737081b483a5c27b84d3f34d671addba76fed6f91d070993796cfae3eb74caaafcee61491ff6bf72248c0b3128e0de2d9aef0e263c52a7044433d7aad54ae6c9384a64c6997443e59576736d0c69c7ce399512844df21e597ceba7d80e04c2448890e0cf30472bca0797b430e0d786b6c410a2844df21e597ceba7d80e04c2448890e0cf30472bca0797b430e0d786b6c410aebd7fe64a0a40b8eab6c9b2e4ae841ab5273c18a6fee5f2106f2505198784ff78b8de567b05118cdb0d89c3549c963b502b31f717d6ec098cb8f9e0d4f3102e4dfaf0eca842f29e51405f92d309f401e9255746a756a39ebcea55e0f65305ab67f2ce248327257c4613f5a318a16e8e0f0a74374979aa14648b87aea2f47670036179a93b789246268a40731b2cb34d6f73c5026fb45032dcd0aea15af26346736179a93b789246268a40731b2cb34d6f73c5026fb45032dcd0aea15af2634675eb30f927b86fb5e88030added652e4ca74890a383fb750f9471d93a35d97baf2c5df71e7a313a18edafb685b6b2a0539481e26b70df11b1ec2e2da9e728b2b9633d0a866a9554057fb33367b99ab8d1681883a7a898146800905b46b49490685b7b2b13990869141d85f20e6f3db7eec9b4bcf82a478a7ff5991277ef5434fa01eb954b16acdbbf7720b5d7d2ceb19b5940d6ee113e913d1bcc1949aab406ce326a0bb9aea4656548b6c8d1ae70e07e4b73b84a6a96fc253da7b1bed8ba23d3efcb0c7670245b960708f0b5ddb2e9b5d1252c5ad6cd917bae6ddbc14587013a8e0c6dc5c1117a9e315e05557ca7d255ee49104e396f9b6df3b34a1af2bdfd998cbb7720ffa5d0715f535bb6544b462355816153634ea863bf0a2f7c54448b08a35b56280753a7712709824e111a5d9109d1c2b41f59629e8895d242eadb54ca044094d15695b5cf91ce11b1ec4fcb56eda6a19a44239180482845267cc35710f21f379694c7b39abccdf9573f44f231abeb10b82d96f8146dc2ed1541e76c365830aa244a36ac38a172e52ce0a6b8f090694a6e3f26736a5c856c08652b90ef8d5a9da353120f7ffb0799bea2ca944c14f04d79e179d2da9fd95068cfa0cac5d1cee668350d1b122eca21bf3b684ae8c25bc5c4eeed5dafc7aef13aaf1dee9bcbd0331a9c632becf51cb1c495142d2f308caaab6f07077fc7126b687746a4de96f600aca7ab0bbd36fcc1d95cc8b717e899f58da31f5d21d945ca0e982aa0efc01b28060d2a2d6f0703936c81c9ddd5b33b64360415b6a9006a0fd3fe38379f3987c5d898e5b7276be41b30c99fae160978c848d0668c0674866913207bb3940d939d284c7396e70709fa60b331b570575aade4eaa46506391348127e05242b913666fa399156729186ab9eb5505b8835a2f5e63cecd4c9bd46248c6126ecc6b968682b10484d5c0f961f4c210dd68d5ad88e544c80bac18cb475522da4999c9ef88679b1633a224efdc0c9468ed189c70486537650cee70102f4a53b28f4c4f6555ab061625c319c2fc54e5ae130023ce501341b984605df4c0e215a2d3fe5a1d468d969d27e332e92d488c1f479d2bcf16ca19fcd4c19d82524bdcc6f268090bdacbed905f7d5500ce8a6ffa4c4e8e1a19927f61321ebce9d2ffd4424b2a0bbe0ba3a30e9775f4efe94b49cacd8ad0c71b52c8ec9a985040ed55f0dc467a8e6a2c317bd971c6490568115aa1bc49e07d9b0ed9fc55b01a569ed5ff0f4611b2482b6f6604ff0e2b3dc28666846f2afdbef9a5df07867bb6073131f304972bd88abfd66e41ee63073a781b2a7f1b7c17850071493260b8cc750420955592fa6c2d4d415e32d0a6da097673971844af59737ecdf2450f82d9e8b1bff76680449c2d4d415e32d0a6da097673971844af59737ecdf2450f82d9e8b1bff76680449fefc331910cdbf4f7d4e58411432bb483447793a754e7d30f7bef553ae5e0065fefc331910cdbf4f7d4e58411432bb483447793a754e7d30f7bef553ae5e00654d51cae74810e1bc907d0dce43a30afa26c471cd30d58142772c14277d9b278a4d51cae74810e1bc907d0dce43a30afa26c471cd30d58142772c14277d9b278ab52e02477aeca48447d07803bed2cd850b01b8b7b0b766d23c2ec2e122fb81b0b52e02477aeca48447d07803bed2cd850b01b8b7b0b766d23c2ec2e122fb81b00079be6b5eab91b144384ed1190361e916ff87fdc36d171859dcd00d295df22c0079be6b5eab91b144384ed1190361e916ff87fdc36d171859dcd00d295df22c01162126781296a67a1fc3ab32c35a88ffec84c07c758f81526aae749f8c99bc01162126781296a67a1fc3ab32c35a88ffec84c07c758f81526aae749f8c99bc56a0fc882f5088e296c1ee83e03474b48b9d4382138cb73eec42116ae7d224fe56a0fc882f5088e296c1ee83e03474b48b9d4382138cb73eec42116ae7d224fec5e1fecd9dbb7d67793aa95b8e6872a3c2439d593a0146103f78fde3ba6a0b62e198cfdf05c5bbae77f4cc152701be0878f8547c94419d2c2f9262986b53774d151c0e4f71a88cc05bf77b2b4ae4ae4cfedfc63a12ecb972c30c02299fad1ea8151c0e4f71a88cc05bf77b2b4ae4ae4cfedfc63a12ecb972c30c02299fad1ea847bf3c9d9c138e431b42353fab4ac8ce3d9b0c0ccd0dcf9d37c5931843e0638947bf3c9d9c138e431b42353fab4ac8ce3d9b0c0ccd0dcf9d37c5931843e063896ae2a988f8fdf6db6e2b45ce526e9ba385a9836454a9265df4249b119d2188c66ae2a988f8fdf6db6e2b45ce526e9ba385a9836454a9265df4249b119d2188c67f7f63e09e61a80f0e22bba9dce8a239dece5be40d912f80b2736f4d7a94212838cb03f745ee4bb629e3fc3d9045ef05afa9386f8f022c274aca6d0d8a789e108d99a5d7e4346c1602b100f715f87ba2f8c2d608cb78994f027b17995b9b4261325fbd653b71c8d8cdd4aa3ef9f8934af5b19122cdce5b2b2f8b5e5364ff55173e8269266083a10615cf52b9d9fff440e29beeb3aad1af854e934dfb6e76a7c83cb86dfe5c3c7709ef11fa16e33c83451aa0f04bd546a83ac093f8829fef0282a034c465d44f36e94e14e152c246aaedbc78eecc371c80622e0a07fe6cb9dba0d7a5698aca87fc7633fd856ff43b76c2ef947a16683b0df6c7dd2ae4fa3e42d7bd6ed111caa9b4363317b44708b9619130f84e8365e82677b81d5b7fa65fea73c7647efb3fd54ffad8513c1adda185fc4d1ca377a159ac72b4c41abf5841aff5c542dca928fd15e7eda52d4ec6a383436230c1494f82e7b966e4bcca5ef722e338c3a619916996d96d44de7520390ab93bbe4610e9055726665ab5076cd9dcba5e65a32e596c597f9a208e1268117ab6cd03aaf54153dc84ad122b7f8955c7af5e65a32e596c597f9a208e1268117ab6cd03aaf54153dc84ad122b7f8955c7af8920c4a71b9d8847ad0ff40d3fc54310232572577ef679e1e68dbfcd509ea914ee58127e4e537a299eb213a5d04f72501fd0f3c3e56594706d591b9fe36e74acfadb626724c37f9302f157032569d1efcb685de6e53de1ebf73a1b27a42346bbfadb626724c37f9302f157032569d1efcb685de6e53de1ebf73a1b27a42346bb89d6d4d748c842d83b4e929b0e1a40a93b3c87f633dde265e55fc7e41c2ee31f89d6d4d748c842d83b4e929b0e1a40a93b3c87f633dde265e55fc7e41c2ee31f471732e8364344b75bfcb827f896b182d89602940c1090eaf2428786b97a636e471732e8364344b75bfcb827f896b182d89602940c1090eaf2428786b97a636e029a861dcfb79197024c0cd9e8f2040e81784af14d1045e493a5ad2a27527cd3029a861dcfb79197024c0cd9e8f2040e81784af14d1045e493a5ad2a27527cd38363c5ec544ea50ef23f99f4f41408823598f9f5a099e9d617d067bfc23bc9168363c5ec544ea50ef23f99f4f41408823598f9f5a099e9d617d067bfc23bc916c646d632b3242f42acaccfe8aa942c711330187fa7c79eb89e1b400d7d00a65159bdc851850fb1e2c3e919ce950eb00988a1ad3c3a597fb1932c351b7b86a7e2ece910203295f371a8030287a503125149f1946e62cd3ee614090bbd24449ed0dd94eaa945536bf197677bce6dd814b8448e250928da65b177e44d941292f074eb8255907e7a828723839b289b09f36c69ed8b1ad74125b912b0ba299940d5531aa8c886af20a58557464dd3e2e915bc2cec3198bbd43867a116703eb885754dd6716dc970f75f66038141a44abf5d164ef5b79b43d2c588999f95d70ae06996d6716dc970f75f66038141a44abf5d164ef5b79b43d2c588999f95d70ae06996b4e832735657378924faa7c1a172f2a9a7c9a503ea9dbe92d2bce5ee3ea7d1dbb4e832735657378924faa7c1a172f2a9a7c9a503ea9dbe92d2bce5ee3ea7d1db969364567a5d8e3d771c0b6da6c72a7e71883047374d025e16e8150e663e54ee969364567a5d8e3d771c0b6da6c72a7e71883047374d025e16e8150e663e54ee1dacda3fc1558778df58280b2ad5c9b6f9cc25fea81dad0318521e8d94a4bf581dacda3fc1558778df58280b2ad5c9b6f9cc25fea81dad0318521e8d94a4bf585bb9abccabee8410225bbd3d670fba3369f9c18eea480fe31d22b71c1a32187af2eae4b02b51979cb6ddd02f262300dc76d0fc71e713251cb9200e306e3c61f8cb0b3cb8ed87b145a0f064503e5c4abc4e479e23fce104905ba9dc08f8990e9c4138bdb43f433bf4656b09089e93c3b056a897efb986c308f9c16fc0b204f41d949b1ac80adb8ba14494837371343555b8134c66392caa4c75b089bcaffa1fcbd994279e9ba642c109a4a16c4ce1eebff50b8506393e140f9ec6b6ad26664c45bbe046324940374e5e7e777300325f155f603f525b9ecd600ddc02fff55f5bef98c8188d7fd4bf15552c54df6789bebf1568df531b48dad903447b558e83cd39fd78432a05759ce37875d41053719d51f497af063fc763a8250ea5ef0d86cdbce8cac67857a78d2002cdb02da7a8dfdcf347a084effefe436d3ffb9e1ad1f8a056c976861a2e122df29f8fc9ec9d74134f4ea2d2e77911f390063f8d2d7a174f7155ea70fc7f5ea96c87a405d9acf7e11636df03f7a6ff123816c91509fae498e4f58a8751e840a0b8808e0172054387cf71c3b962c744759fd267d18f2df264d315a04bbe06eb2825ee022f17aba18dca138554edd53a881f86547aa5db56606f5e572052c352c8ec6b13c44142646fe72c33ae48473ffd825c19cfbab037b5c490d4ddee1bb7d3755f47c0f7304b0711129373ec4d1f3da8978458d5f6126e4142a86baacb9f785b095364effd33f495b968e166c8b6c1c23d0f89685027bb016f8f41141e2f3d9c3a92863de28f2d21120b8a3e0136eedfe65de390a88b795b1621453b614f30e3f8520fdaf4bf987d279698e0ad63a9d82fa1de637a0f316d234045a84628f6536b02eafaa85575cbafa6b0834cd5c658f85287c691c9a68b33957745ad8488bdd182a4bec92b5b90d93cc302bcedaab7046479fbe091d64cbbee19067280465b8c0d35b7585f19f06fc774c79efe99c1b35008a521b2e2003a615206c6f4fc285d03c56c400f7880dfaa32ba0c4365ff08b33f9db06121bc333d8a9b6cf446286ae85e347b4e398ab4365f3ef65b5330be209f0d840768c07b1b828579c61638490b605850ae8adde5ca090dbddd0040a674966a7bd9da9f4802cb099bb30f2af29e162e9f80950ad0b8f7defb6f5f63051f5b05e2e02a4a2f6a1435f091b8d3b09f7041361ef90865a6b568310d84efdf9e5f5d453c19f41817bcc8472904070467605785b20c36546e8521d2d6c761d80f62bd6ea52a4f5a3707ded296dbc2d4e2b07974295f56c119fe8a6109cc97c8dca414a0e435c8c5abae7b0c220f1bf20bb2cd12bc943276e37aee97a00d86b2202261a5c952ad54ae68da9151be10e76d27543e02e6c9b356cf8b745a908c564c0d14f3fb3509f428af765f57624effcc764716394e5e59b12d210ef2237b8e9c2ef2cde44c8088727107f835435de728d4aed29f466ddeaaaa64952f56d81efef08369e0280575691d29bbd5e3d79a66c13d33781f7f255201aa1bafa265ab1b8ff97599583c368ed5fb43b4e173776f7d1179b45f91d6473837ed5b01887b1d88c3aee45098d6e18c5346d7a766535dc284ccaa392637f4e891d9df0b454062e35740324a5abcabe7badeabc345267c357c8fdec9c09a4f099263c580ed9dce1630301ce15479101eeec371d54ac838e13eec911bfdbedb9688e19c1ab77c2be8afab025a8376759b20c1fff7b43b4448bb137791d5f117e1262aa6bf660e8b737d39bf631d88ce3f7d8e16099e78563ff82ae752cc033d9bb866470432dca1270c3c07414f9095ab205b05765761adb25d5e77e6bf5d76ee58414bdcf4609113fe226c1817d7cb7939c779670c7b2267c8697f40a1c3081ab2d1b6b003c0ed9e30a1536f0c46b6875295e3a15068b4cfefd8885cda3b9a335afaf1e95e8d6a18238a72dc0c46b6875295e3a15068b4cfefd8885cda3b9a335afaf1e95e8d6a18238a72dc58e216f1630b19cccda60dd19101eeebabcdff49244838606c46bf05f21c076058e216f1630b19cccda60dd19101eeebabcdff49244838606c46bf05f21c076052032476671564231d7fb742b18c7b3ecf0396825de13f3578b00d76fe37b067f39b71fc5e770221835ea922908cd06a4541416e35b6b4ca99e6d7bfb8f5eb4a044bb266a3a8c7cbfa8f07596a51d7130a477140c7986e009212e0634a0c09db044bb266a3a8c7cbfa8f07596a51d7130a477140c7986e009212e0634a0c09db8bcdb68a845f30bf541a08732da52c042ea599b8e974df9b5befb3b4c058bcfc8bcdb68a845f30bf541a08732da52c042ea599b8e974df9b5befb3b4c058bcfc7597b6663b86af483a890b1e3be4e1910e5733a2a7405212190afaf2f50e3a13c6e3cfe4fb262c987f23936b95a61ad35db3996addcdfad86cbfe81ea738b429dfc59ec8f896e799df2e7eb44b5ebb16ffd76a4e287e9ae74c33f1d6e087a27774df37c0e1376a50973a83721e0f1e239fb98688e72c1cf5b97a83be1914968df951cfecc83f3e804c88f3e765f08901167e4649a44f4f2e1ab1db6a5a92d763f951cfecc83f3e804c88f3e765f08901167e4649a44f4f2e1ab1db6a5a92d763d6781ae9b95ac6892bac3758dd4ad08115d87627d91c20e03d889ed5a08992e2b2f7360befc329f8823263813619ff0caec8792fd660d836e9ab23871efa2d408c5baf85403769a891d71597e0da57626e5781c75ec114f951ab3eee32e84931137a112fdd3cbae74afd92d959e5f90e83f124bf2e09f086a66024c9f268590fa72c44a547bfb7c134bb664358ecd82096b4a178134013bb0d0f1230a197f1a87e80c64c029e672c0101594b64845fe1b5fa7c2ddbceca02d62fc3b5c757af6213a09afb82a2e599424b377ce8dd425e387ec50a096235beef8fa427a56c1d4596a93dc833014d1699d2cc0da3f8c7d01b25fd091d5f7a3d2a00d30ad0568237a95ba8f1af88ff8d5f0d0c33519f430b7f9d8992b69d4bc369ac0423a7a05a89rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython-passlib-1.7.4-150600.12.2.1.src.rpmpython311-passlib@     python(abi)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.113.0.4-14.6.0-14.0.4-14.0-15.2-14.14.3d˖dZ5aa $@`@`@_@_l@^y^ ]\@\zp@\2\l@XEX|@XX9y@Vɦsteven.kowalik@suse.comkastl@b1-systems.demcepl@suse.commcepl@suse.commcepl@suse.comalarrosa@suse.comjayvdb@gmail.comhpj@urpla.netmcalabkova@suse.commichael@stroeder.comjayvdb@gmail.comtchvatal@suse.comtchvatal@suse.comjengelh@inai.demcepl@suse.comaloisio@gmx.commichael@stroeder.commichael@stroeder.commichael@stroeder.commardnh@gmx.de- Add patch no-pkg_resources.patch: * Stop using pkg_resources. - Switch to pyproject macros.- add sle15_python_module_pythons- The disaster of falling tests (see previous record in this changelog for URL) just continues with test_02_handler_wrapper.- Skip failing tests and ask upstream for investigation (https://foss.heptapod.net/python-libs/passlib/-/issues/135).- OpenLeap is not SLE- Use _multibuild to only have the test dependencies as buildrequires of the test build. - Have optional test dependencies (Django and scrypt) that are not available in SLE only be buildrequired in TW.- Update URL to https://foss.heptapod.net/python-libs/passlib - Add optional dependencies: Django, apache2-utils - Update %check to report skipped tests - Update to v0.7.4 * updated tests to pass for Django 1.8 - 3.1 * CryptContext will now throw UnknownHashError when it can't identify a hash provided to methods such as CryptContext.verify Previously it would throw a generic :exc:`ValueError`. - from v1.7.3 * ldap_salted_sha512 LDAP "salted hash" support added for SHA-256 and SHA-512 * bcrypt: Fixed Python 3 OS native backend detection on BSD platforms * safe_crypt added support for crypt.crypt unexpectedly returning bytes under Python 3 * safe_crypt added support for crypt.crypt throwing OSError which can happen as of Python 3.9 * passlib.ext.django fixed lru_cache import for Django 3 compatibility * bcrypt_sha256 Internal algorithm has been changed to use HMAC-SHA256 instead of plain SHA256 * bcrypt OS native backend ("os_crypt") now raises the new PasswordValueError if password is provided as non-UTF8 bytes * lookup_hash's required=False kwd was modified to report unsupported hashes via the HashInfo.supported attribute; rather than letting ValueErrors through uncaught. * Various Python 3.9 compatibility fixes- Add optional dependencies: bcrypt, argon2_cffi, cryptography and scrypt.- replace nose with pytest- Removed obsolete patches: * python-passlib-1.7.1-libxcrypt-compat.patch * pr_9_1.patch and pr_9_2.patch - Update to 1.7.2 * New Features - argon2: Now supports Argon2 “ID” and “D” hashes (assuming new enough backend library). - scrypt: Now uses python 3.6 stdlib’s hashlib.scrypt() as backend, if present (issue 86). * Bugfixes - Python 3.8 compatibility fixes - passlib.apache.HtpasswdFile: Now generates bcrypt hashes using the "$2y$" prefix, which should work properly with Apache 2.4’s htpasswd tool. - passlib.totp: The TOTP.to_uri() method now prepends the issuer to URI label, (per the KeyURI spec). This should fix some compatibility issues with older TOTP clients (issue 92) - Fixed error in argon2.parsehash() (issue 97) - unittests: crypt() unittests now account for linux systems running libxcrypt (such as recent Fedora releases)- Add two patches to fix Python 3.8 compatibility * pr_9_1.patch and pr_9_2.patch- Add patch to fix libxcrypt compatibility: * python-passlib-1.7.1-libxcrypt-compat.patch- Do not use symlinks when creating fdupes- Use noun phrase in summary. Trim filler wording from description.- Remove superfluous devel dependency for noarch package- Converted to single-spec - Enabled tests- Update to 1.7.1- updated project and source URLs- Update to 1.7.0 with very many changes: http://passlib.readthedocs.io/en/stable/history/1.7.html#id1 - CHANGES not in upstream source anymore- Update to 1.6.5: * Fixed some minor bugs in the test suite which were causing erroneous test failures - Update to 1.6.4: * bugfix: Correctly detect bcrypt 2.0. * bugfix: CryptContext now accepts scheme names as unicode * bugfix: :mod:`passlib.ext.django` now works correctly with Django 1.7-1.8. * bugfix: :class:`passlib.apache.HtpasswdFile` now recognizes bcrypt, sha256_crypt, sha512_crypt hashes * A few changes have been made to the :class:`~passlib.hash.bcrypt` hash: + It now supports the ``$2b$`` hash format. + It will now issue a :exc:`~passlib.exc.PasslibSecurityWarning` if the active backend is vulnerable to the :ref:`wraparound bug `, and automatically enable a workaround(py-bcrypt is known to be vulnerableas of v0.4). + It will throw a :exc:`~passlib.exc.PasslibSecurityError` if the active backend is vulnerable to the :ref:`8-bit bug ` (none of Passlib's backends are known to be vulnerable as of 2015-07). + Updated documentation to indicate the cffi-based `bcrypt `_ library is now the recommended bcrypt backend. + Backend capability detection code refactored to rely on runtime detection rather than hardcoded information. + Release **1.6.3** was skipped due to upload issues.h03-ch2b 1744883450  !"##%&'()*+,-..01234567899;<=>?@ABCDEFFHIJJLMNOPQRSTUUWXYY[[]^_`a cddfghiikkmnopqrsttvwxyz{|}~~      !"#$%&'()*+,-..0023446689:;<=>>@ABCDEFGHIJ1.7.4-150600.12.2.1   passlibpasslib-1.7.4.dist-infoINSTALLERLICENSEMETADATARECORDREQUESTEDWHEELtop_level.txtzip-safe__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycapache.cpython-311.opt-1.pycapache.cpython-311.pycapps.cpython-311.opt-1.pycapps.cpython-311.pyccontext.cpython-311.opt-1.pyccontext.cpython-311.pycexc.cpython-311.opt-1.pycexc.cpython-311.pychash.cpython-311.opt-1.pychash.cpython-311.pychosts.cpython-311.opt-1.pychosts.cpython-311.pycifc.cpython-311.opt-1.pycifc.cpython-311.pycpwd.cpython-311.opt-1.pycpwd.cpython-311.pycregistry.cpython-311.opt-1.pycregistry.cpython-311.pyctotp.cpython-311.opt-1.pyctotp.cpython-311.pycwin32.cpython-311.opt-1.pycwin32.cpython-311.pyc_datawordsetsbip39.txteff_long.txteff_prefixed.txteff_short.txt_setup__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycstamp.cpython-311.opt-1.pycstamp.cpython-311.pycstamp.pyapache.pyapps.pycontext.pycrypto__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_md4.cpython-311.opt-1.pyc_md4.cpython-311.pycdes.cpython-311.opt-1.pycdes.cpython-311.pycdigest.cpython-311.opt-1.pycdigest.cpython-311.pyc_blowfish__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_gen_files.cpython-311.opt-1.pyc_gen_files.cpython-311.pycbase.cpython-311.opt-1.pycbase.cpython-311.pycunrolled.cpython-311.opt-1.pycunrolled.cpython-311.pyc_gen_files.pybase.pyunrolled.py_md4.pydes.pydigest.pyscrypt__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_builtin.cpython-311.opt-1.pyc_builtin.cpython-311.pyc_gen_files.cpython-311.opt-1.pyc_gen_files.cpython-311.pyc_salsa.cpython-311.opt-1.pyc_salsa.cpython-311.pyc_builtin.py_gen_files.py_salsa.pyexc.pyext__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycdjango__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycmodels.cpython-311.opt-1.pycmodels.cpython-311.pycutils.cpython-311.opt-1.pycutils.cpython-311.pycmodels.pyutils.pyhandlers__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycargon2.cpython-311.opt-1.pycargon2.cpython-311.pycbcrypt.cpython-311.opt-1.pycbcrypt.cpython-311.pyccisco.cpython-311.opt-1.pyccisco.cpython-311.pycdes_crypt.cpython-311.opt-1.pycdes_crypt.cpython-311.pycdigests.cpython-311.opt-1.pycdigests.cpython-311.pycdjango.cpython-311.opt-1.pycdjango.cpython-311.pycfshp.cpython-311.opt-1.pycfshp.cpython-311.pycldap_digests.cpython-311.opt-1.pycldap_digests.cpython-311.pycmd5_crypt.cpython-311.opt-1.pycmd5_crypt.cpython-311.pycmisc.cpython-311.opt-1.pycmisc.cpython-311.pycmssql.cpython-311.opt-1.pycmssql.cpython-311.pycmysql.cpython-311.opt-1.pycmysql.cpython-311.pycoracle.cpython-311.opt-1.pycoracle.cpython-311.pycpbkdf2.cpython-311.opt-1.pycpbkdf2.cpython-311.pycphpass.cpython-311.opt-1.pycphpass.cpython-311.pycpostgres.cpython-311.opt-1.pycpostgres.cpython-311.pycroundup.cpython-311.opt-1.pycroundup.cpython-311.pycscram.cpython-311.opt-1.pycscram.cpython-311.pycscrypt.cpython-311.opt-1.pycscrypt.cpython-311.pycsha1_crypt.cpython-311.opt-1.pycsha1_crypt.cpython-311.pycsha2_crypt.cpython-311.opt-1.pycsha2_crypt.cpython-311.pycsun_md5_crypt.cpython-311.opt-1.pycsun_md5_crypt.cpython-311.pycwindows.cpython-311.opt-1.pycwindows.cpython-311.pycargon2.pybcrypt.pycisco.pydes_crypt.pydigests.pydjango.pyfshp.pyldap_digests.pymd5_crypt.pymisc.pymssql.pymysql.pyoracle.pypbkdf2.pyphpass.pypostgres.pyroundup.pyscram.pyscrypt.pysha1_crypt.pysha2_crypt.pysun_md5_crypt.pywindows.pyhash.pyhosts.pyifc.pypwd.pyregistry.pytests__init__.py__main__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc__main__.cpython-311.opt-1.pyc__main__.cpython-311.pyc_test_bad_register.cpython-311.opt-1.pyc_test_bad_register.cpython-311.pycbackports.cpython-311.opt-1.pycbackports.cpython-311.pyctest_apache.cpython-311.opt-1.pyctest_apache.cpython-311.pyctest_apps.cpython-311.opt-1.pyctest_apps.cpython-311.pyctest_context.cpython-311.opt-1.pyctest_context.cpython-311.pyctest_context_deprecated.cpython-311.opt-1.pyctest_context_deprecated.cpython-311.pyctest_crypto_builtin_md4.cpython-311.opt-1.pyctest_crypto_builtin_md4.cpython-311.pyctest_crypto_des.cpython-311.opt-1.pyctest_crypto_des.cpython-311.pyctest_crypto_digest.cpython-311.opt-1.pyctest_crypto_digest.cpython-311.pyctest_crypto_scrypt.cpython-311.opt-1.pyctest_crypto_scrypt.cpython-311.pyctest_ext_django.cpython-311.opt-1.pyctest_ext_django.cpython-311.pyctest_ext_django_source.cpython-311.opt-1.pyctest_ext_django_source.cpython-311.pyctest_handlers.cpython-311.opt-1.pyctest_handlers.cpython-311.pyctest_handlers_argon2.cpython-311.opt-1.pyctest_handlers_argon2.cpython-311.pyctest_handlers_bcrypt.cpython-311.opt-1.pyctest_handlers_bcrypt.cpython-311.pyctest_handlers_cisco.cpython-311.opt-1.pyctest_handlers_cisco.cpython-311.pyctest_handlers_django.cpython-311.opt-1.pyctest_handlers_django.cpython-311.pyctest_handlers_pbkdf2.cpython-311.opt-1.pyctest_handlers_pbkdf2.cpython-311.pyctest_handlers_scrypt.cpython-311.opt-1.pyctest_handlers_scrypt.cpython-311.pyctest_hosts.cpython-311.opt-1.pyctest_hosts.cpython-311.pyctest_pwd.cpython-311.opt-1.pyctest_pwd.cpython-311.pyctest_registry.cpython-311.opt-1.pyctest_registry.cpython-311.pyctest_totp.cpython-311.opt-1.pyctest_totp.cpython-311.pyctest_utils.cpython-311.opt-1.pyctest_utils.cpython-311.pyctest_utils_handlers.cpython-311.opt-1.pyctest_utils_handlers.cpython-311.pyctest_utils_md4.cpython-311.opt-1.pyctest_utils_md4.cpython-311.pyctest_utils_pbkdf2.cpython-311.opt-1.pyctest_utils_pbkdf2.cpython-311.pyctest_win32.cpython-311.opt-1.pyctest_win32.cpython-311.pyctox_support.cpython-311.opt-1.pyctox_support.cpython-311.pycutils.cpython-311.opt-1.pycutils.cpython-311.pyc_test_bad_register.pybackports.pysample1.cfgsample1b.cfgsample1c.cfgsample_config_1s.cfgtest_apache.pytest_apps.pytest_context.pytest_context_deprecated.pytest_crypto_builtin_md4.pytest_crypto_des.pytest_crypto_digest.pytest_crypto_scrypt.pytest_ext_django.pytest_ext_django_source.pytest_handlers.pytest_handlers_argon2.pytest_handlers_bcrypt.pytest_handlers_cisco.pytest_handlers_django.pytest_handlers_pbkdf2.pytest_handlers_scrypt.pytest_hosts.pytest_pwd.pytest_registry.pytest_totp.pytest_utils.pytest_utils_handlers.pytest_utils_md4.pytest_utils_pbkdf2.pytest_win32.pytox_support.pyutils.pytotp.pyutils__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycbinary.cpython-311.opt-1.pycbinary.cpython-311.pycdecor.cpython-311.opt-1.pycdecor.cpython-311.pycdes.cpython-311.opt-1.pycdes.cpython-311.pychandlers.cpython-311.opt-1.pychandlers.cpython-311.pycmd4.cpython-311.opt-1.pycmd4.cpython-311.pycpbkdf2.cpython-311.opt-1.pycpbkdf2.cpython-311.pycbinary.pycompat__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_ordered_dict.cpython-311.opt-1.pyc_ordered_dict.cpython-311.pyc_ordered_dict.pydecor.pydes.pyhandlers.pymd4.pypbkdf2.pywin32.pypython311-passlibREADMEpython311-passlibLICENSE/usr/lib/python3.11/site-packages//usr/lib/python3.11/site-packages/passlib-1.7.4.dist-info//usr/lib/python3.11/site-packages/passlib//usr/lib/python3.11/site-packages/passlib/__pycache__//usr/lib/python3.11/site-packages/passlib/_data//usr/lib/python3.11/site-packages/passlib/_data/wordsets//usr/lib/python3.11/site-packages/passlib/_setup//usr/lib/python3.11/site-packages/passlib/_setup/__pycache__//usr/lib/python3.11/site-packages/passlib/crypto//usr/lib/python3.11/site-packages/passlib/crypto/__pycache__//usr/lib/python3.11/site-packages/passlib/crypto/_blowfish//usr/lib/python3.11/site-packages/passlib/crypto/_blowfish/__pycache__//usr/lib/python3.11/site-packages/passlib/crypto/scrypt//usr/lib/python3.11/site-packages/passlib/crypto/scrypt/__pycache__//usr/lib/python3.11/site-packages/passlib/ext//usr/lib/python3.11/site-packages/passlib/ext/__pycache__//usr/lib/python3.11/site-packages/passlib/ext/django//usr/lib/python3.11/site-packages/passlib/ext/django/__pycache__//usr/lib/python3.11/site-packages/passlib/handlers//usr/lib/python3.11/site-packages/passlib/handlers/__pycache__//usr/lib/python3.11/site-packages/passlib/tests//usr/lib/python3.11/site-packages/passlib/tests/__pycache__//usr/lib/python3.11/site-packages/passlib/utils//usr/lib/python3.11/site-packages/passlib/utils/__pycache__//usr/lib/python3.11/site-packages/passlib/utils/compat//usr/lib/python3.11/site-packages/passlib/utils/compat/__pycache__//usr/share/doc/packages//usr/share/doc/packages/python311-passlib//usr/share/licenses//usr/share/licenses/python311-passlib/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:38354/SUSE_SLE-15-SP6_Update/e2d58663bd8c21dab3b2bfbeb0fad99d-python-passlib.SUSE_SLE-15-SP6_Updatedrpmxz5noarch-suse-linuxdirectoryASCII textASCII text, with CRLF line terminatorsemptyPython script, ASCII text executableC source, ASCII textLittle-endian UTF-16 Unicode text  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRmyD㚯P]Vpython311-argon2_cffipython311-bcryptpython311-cryptographypython311-scryptutf-8c9735b11ad5d0151b3a723c59eae575b554af3c5ddd4aad19327893f69821e32?7zXZ !t/#]"k%4Pa L8W~ Q`>Z,0|vXߔ`o0Eg_I"HCvo/?PCĖayĖUͳcJMKIAvl=b :s sfn{-=u#FErrй,-iB$z]5ej~8G ,HVZ4N_qXtWm;|X!¤Z:wApM!%If{km@aVŢz~f"x=_f ?<2T:g~%$NAiDSr+)&^|gKLA-`]:W d$Z`\ƪ)7}+n&x;̶Xŝ #ch(aꬼxL[`MNi؟FݩڹU<n|3qЬli :[t)WJT],x@* ¿uWvaҥWǕmHOsӋi^pRrrp/cOY;ۿ)Vz;[X 0ƕt9Ke<4~vTbXZ!VN+U:VZOZ+KSxAg$;o}k|6Xz\ Ɗe05@T$DwH&Q6j-UV>_oeCIF_ k>BN\{jsMSuDMvTu)SZ Y@ez` )_m`^P]Z!_!J9(rd&.F]ӛUC1tQJXmNSSjWN71o’3Wڼ4 TutO|L#,wr/+fH̟XsWXǢƯ˚k6i a_E~dc͋%!na"~"VsVMر&!ca$DR=+Uma$BPĖƉnkvVT$?Sw cV9!UWuΌ 1< B*i|[qAWlʠȭ=4QkkZ-#ߦJ(Itf"+G](Y!x,s⬨^*k5vNJA}>hnVah3mA'Ljb>K(PX7:-9i~DNZ8#j9IW,Fjqxz#IPU#l̊آ:ǾPWZGǸsAs${ $:Q/R؏~lC ŝ~n%ĤD2+049/tEՄNb 7 :W4EL vɑQg/@=YQϕd ak9NnTv=a~n.b)oD!\&1dL$&  \d9L\XySI)z[cXvn0s[N#~mi )j/- T*QV% hFRb3ġWm ~[iW$1ֈlq\2OY>Λ\[9goŽ2Dl['𖸷שT>1) ੄]Vst0dP uݩ =Igy(#zWeXaB1sKCb| êޕ,1C2P"߿ mjJ I: Lf[`A?(a )ζ8+qXqЪ,4*ˠ ϥ ?0x5Qh7qi+cs0f bO:O# R&^TP)ԚEj掔~'uEKCE˭f6z|1Eu}'➙:zgC Kup/Ta#U> $ B褆iqcY"[5.y&A-6 -Ƶb\rtpD*KPfa."Ug67%JKUu^z@4UtvVF6 gCVw5(*nDLdP:Ub[+;~冭v?Q{a7] ˡeldcrZGe"`5C ?C.!"W?Z{řE-+hY{Fw'ޘ?g+TB Ԏ*L0}^BūE_(SYRszhL|N\Wue)C2| Meɛ!^{#/`ĸ'N;1%iz.qrV0,PڂRP^pT\iRHpD_ܣ̹Z Ji U #^ElR/׈7K\an[e 0(DL=J|G`Ѷ YZ