orthanc-doc-1.10.1-lp153.2.3.1<>,'Tbuĸ/=„tLQ3_Bb fj]ap$I|2`K/J ,vyEn~_$W@Lj uj#\$/12Pbdj&9muV)gP qM2$!M24bK!Zǹ' /Å$#Z##=}d {bVP~@ sS\X\tIcWN[? \Ӎ⍷˰\PqpE Jpo.@Q6KjoT;wZX>;8?(d ! A+4E ^  t  T 2  259?<=???@_(@{8@"9A ":E*"FcG|H\I<XY\ ]^rbckdefluvz$Corthanc-doc1.10.1lp153.2.3.1Documentation files for OrthancThis package includes the documentation and the sample codes available for Orthanc. It also includes the Python and LUA Scripts, and the documentation to develop C/C++ plugins for Orthanc.buhci-cnode1-m0o]openSUSE Leap 15.3openSUSEGPL-3.0-or-laterhttp://bugs.opensuse.orgProductivity/Graphics/Visualization/Otherhttp://www.orthanc-server.com/linuxnoarch =E  O  Y m8 hUie ʶ9r!XF _b{ :&Y ? QUM$=?M-E,s( \ B i )HXQ  < ;%VL 6Pe#H)w!+.u )aj] f< E W " L  {iA큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAA큤AA큤A큤A큤AA큤bubububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububububub6d36dba33f0cd93c6b01b762f779b7cff70e829ef7ccaac6e4f28633da90d3414d0ea76a9ea3df0cb0e2ae7602750d57f602831bff58822ef209edf965cafa3871a710c9270fb0483f899f8b33a7a258ea50ca716d55166dc24dfbe6772cfe94d663af5938c9f2b8873806b15724deb33d38035412e862e6b4c59dede762ef99e7ed0ef70f99bb7f763a48ddd95d5990e103bb145eedfd0a76d19c122374be2782b30d237bdbeddfde4aed01f007264cc116b2d4be2f398a7cb74ec7a5bc58b2471a754e943e7d118df88e195d334ed2298470f99267fba3d5f1bea13fc9b3bc98c02adc57337f58c40aae15bbac05a3ccb364e5adb1d610a16452e92f178307b6d8110d3eec31476503c564c84be9e0c841eae47354e78b725aae04453958cee06975e0f8daf499b258abd47c5a02890827b400d4c2329b4885e49144bc5e57011871cceb243ca58ca48e6bbef40a2dfc1e3f3dca435b3537092e50912b1434b550b2b837cd9e2a8cc8858f56034663c1047d1f43bdd50f93b521e056662bfe8bf65a8b9a96eff3b142ad7a790e817d2498cd2bb6a00d494b3387e6e49314e5cd4cb41607a30d7820cc20ea76b4a3b8f57d3d2b7d102b58c8e13ad95e83aa1d95fe86c0291b1e5eb2a4ac28881b88b3c8bb76e5ead42331d1161546a61ef666973a2aae66bbb99f2b57f2ef160182825fa5305444511ca1eca4e1b0b38528b3b10bbf6fdbc2543bc693af9c6a28da8920f8508f0578ef44c1d240fe719ad87c3fa592f852908d34053eeec81eaae4e39b101c9933738215927ab28881e7825a6ca13a1c87edcfbfc91317896452c31a9d49c4768f1b4b46ac32e0907e00a73680166339ff62595dd2d2eed3a79fb9fa0c2e8250e89539f6d678aa2e5e51e26a072aa04e9d49cd35cad3e1d6c454d79dfe52390e80d8fbb5d3c24f4909173cbc25c9d78e7239cfc436dfc060d2a07c9321880cc21bda364279fe44133f641894027258485ea446a79f52a24372661869f714a4aef25444c134869403f12a8d7b746c84afc1c847f770cd608868759acb0f8158b49f90e1742602f803d19f1f4a0107734866a1c5f25ad291bab399421cfd0028e89b925144ef5b6c903cb6dbe1bf82b9656dc215ae7fce6dc1b03b7a656fcd687cf315d9111e70d27e8797bfea80b20c06dacf45daa79b0828ce6ad548e4eb27eeec7185a097353afdf27345553eecd5afe6d704ee4d0e1ccc88272b90c7dd4b24589308ae75641a28894c4df65daafe94689a687d545f0d1006ae95dce07a29d534dda91a104dc4896f7542c1ea5130ce3d3b6cffc9241ec88637decdfc34912a6738287294d7f38a7c0bfd201affb21350774cce0f6bfdb161ab423e7c09a6b516e7d4454a73462b0470c35df650d8a9e2393566309e45f9c857c6a1bca1b6e81a2b2be78facbcbdd3947c519b52eea5e30493c4ba59af87b1d9e8b433ff5d9d22dee3d3142bb127d418c9ed2a3b1317f65be6a7b61a9b88c8110495d63fa5b4138d7ca72853b63d8eea3e64bdc6a72666e1b300fdfc5ecf102714c9fd57df76fdf47139f8dbf8ae59863643171164c16baa5953c17821a7ce5feac673c05a56b287453ce3a0bf5048f0999b7711604d6cdeaf3cdfd661fa21fc5bf18de929671c801f00415eaecd35abda3a04665e9dd0ef5ef2c6ddf02b4a12472984485adb027fd12ae6c60ffd203b1a426668c22e5acbc6cdd1e4131104d17eab5309f5f4b130c5b293100d3dab6f1081c555557ca84ba3598f52c281780dd7e22655db21ac383712e62d4540a1bc5254c73e94bbd6d7e971597a76b680b5bd0b073b8e014411d94735d5dde3103bb70d7c9ffcc69f1dab6c00127563e9983a4bf16c30da761ff4f2c152e7a65b01e8918a36a7a97675770f29861bdfbb81feb490d23a7ff55571308a22a3972272a485b4001557265c587c7a27a5d047bf8c7f3314120b567096eece738d76a79174ce51382f082dd4a99157ace48ed744e9d23b2d4e29d89985c315e4ace295ebd2ad3318fbc17b1b36366394298fd6d1596c8ca2a0c52c3ba63031c89f6f343ca2d7f1fc97eae8e84dfb5a4373b0e66ef22c4446ec0746d6587b043c1780d69c8960d6ccbb475f469ba5ef3735a33eda80e61b097fff694bf4b1f48d4db0f87714f39bcba0c183ec442cc90fe27a2dbafd4e1c791aff374b5326ba16880a16d98269abb731904dd1f8eb00aaea66bfef72d5252931d84cc01cfabde3bea854b5b145ddd37bdced843340e0679b6b4e7ed2fe318fd0cef76d160543722e0c3eac11f901ae15db25905dca7a17b81c6d51869fd12ea569fc4b072d217786b4b4d73bde4b9bd9425bc87b33d6b1911e6398673939aa2f15ac505b9a1ab029b8452dd0869f392daa28adc942272615ff2db16bcf084f01ec9fcc2f7f6a632b2bba8c468655e985a3b271c25952b7ba3a9142a23515947e79dc051e75d70f84249a4b15ed64b8f3c2f1a064acff92f15cac4bce5b7cbd254893e3e35aa15054a1efc6619c4802ccc5c31762a05781c3f0f9cc8f43c7e9682a74004f161049b797370f673083a9845a6e00a069bba55c34536b30ba334926446c4e7b6deadd185d64133b9997920eab51c64df09a19c20b56341e59b12a524753392edb0f393d873dcfd58c22e0169d06bf5b5be0459c5e7273c1ef2c39b2a35f33d0e592ba094f06e5160e1d89b600da798cc348547251ed45fafbffa3a34b5ed9a88581a0f97564d2d2309e24e4b29a48ee768e5b0792d78d2c6d7113954f5ce06883c07070f7a4f9760025fa10c126ef379a95b151ef4f80d082b9c28a941aec9fc547e416fd9a9d2a2cebea72be30c117846c62c69ba5e8c7b37d0174f68371deaa0cfcfeb29ef303dac1f1052f295d4b02512b42628dd36a1943a012ecf73489d1c52117232c9531b8c550d5845d138867f3a4ed718fec1c6152deac2c8ac25fff75bb2e5e9075218a71a8350be975520df2b244f8fda53ab7d44365763510a7f8ce48e6541603fdbea997fa462ab4ab054189b4e6f525804a0ac6846b15240befb33b6dafb0d742b9bd4deeb7580427d9a59714e6572dd17d88094e33669157508e719b67805857629577c6085b090b4e4a99392fcdd582fb6bbcb49b2aaf2cc7b7fa3874529b380c7fcae50c070250e4e1ae36a670e5ee8fe9d529eb3f1a03c527f8223ce3f61bc0925e8ad7bd971391a8b1e98be8e87a6971919eb5b60c196485941c3c1df089ae3d900cd9266b5bed9bb6d575fc9ab6787e79e7ad21c01ee1277bff5453121f20ed15f13bc4c17d3234caecda3414f6d98f900ee1a951decb15b4070c0e853e0e8c59421e027cda8bf3358a4479c4b103eab704c70c2b1e697b8727560dc5a4d50548b0abc880ec393652b318d1c28107250e4a65a7e30288c814b4c4c4f7103ce7b8b766f4ba5f063d3ae1dbf87c70e60dc1342dbb77d9b84e9a1aec44d4253a71725b49c59cb7e4ec0e9241f600f8dedac85c5359827e55a261ef15d23b6aa948de54195a3ef646dac01bfbb803accc43a3b2258743b07a725e83a773d195f0736d37e523516734f1e2823790988823aa14a8dc2674320ae494666b6afa35dc981848990909a2f67dce26144033c78f92638c6a5c7525f539d60bf0ef476c070e6e1f11a14296633af946dfe430cae59ccccda40bf24691db9e9be15259ba0e190355dfa0fd64c4f9326e3543eac7eccce5ae687121bc714d0c4116cc593177151a3716a2aba66e6df734179e5e87cd1aa840cd74251ab0c312d7cc6702accf7c748fd2c041d5251ac3549be9087a7f5cc927c6ccbf03c8a995c7a7f899550a5508a25862f4a652dea8a76e7ded9b19386435bcd27052fd14424f672c467417bce36e49e85544d65e7ff9301262b3c96dcd702ad0b41090d56b66cfcc4eba65d0e513dfce2d179b4d7708d6863490c18bfd9483f959f24c006c066f630dd9011b4c72710efaf3aa084cf98719a7909c9e5594e72843e63c960aac2e6ac904dc495c63adeac2d4c2e8f7965c773ce78e4c635205c33239fde708ba04b2ca8aa5f4ceaebbf41c466d9a5b7198194ba4461774dec0ba2a940630bcadc1f9964814a2f46240cea67393c21b080fff05ba9c9e2ab9342f12c4a66280d9b6f3ba3f2198455b1ee8d3192ef7a601d4102d437ee715cfe996bbb70a6a270eb6b821767f34017e58bcf79b74e2a7add9daa244eaef8bce6ae93330d475e62bdb05dcb2c37018aac5694d8244c6e8841e12f51a9b8aeb7bbd758e67f37b69b80e3cfc941d4c0fa6215572ee24f67b20c1b4c73d090e02bc9324c1ab532977e5558245baafcbe3c8c4a4843aba46121cf2f39ad4b02d4360d7b692cb6474657e10e8e190f2f7574aad3e7772b84ac0f4b6c5f6e9b9600fbe9a1ef1ada91680d1a1802f94ded493caf5a4a7a54cbb889ecc94a2dce52e0af05e03cfc80d6fa294b07fcc16dae11481b515d4834324feeb51892f6fa38176e4ffe864e5d52a768e7914f80c4cebe19d428005d4789559de145de91aa9648f52ccdcea5f6ea39495f5d0b710f79bc10ea710e0b90912d11483b17f22659424cf26f67e6b19e974787c14a81242aed00e29b2d746e2e23fb5bf619bc95de5a189d7b671998ef02182adf0a51f3c0ef5ef97ef2cc90200e2dd0c258f877fb84c90bf2e93216e307dce651f6f2f28f187cc01fc826202daa49ee9ce56ac8e323675756e0c48d2f6ca91fcd96c5ad540f8e3eed70b614d2a8c79f183c7de0b8432cc4ee9ef094a54374f3afdbeee60bb80c8c686eec4e7c3891f858cb336f0a59663dcdb0340b6b1a063479b07e638a37fa60b39198bb26163d1f554c814a9583c17aa2565ab786b40d2e783bb5a4dc3b7210327624b8820c28b82362f02385b39d5e5c15818cb531d756570c4f94c1fa6efef011d689de38767f15dab537bc69dd88a30effaf8c0dc98d91cca6755bc7294d1dca454596c7057b68bff486796bd8e89d3637fe9791fc0b4345a80500b2aeb838225f1c23c06d7bbe948c914c5f80d9b0e61aab786d1832a92065c66ace5e4376eedaa297fd80a1c3bc06e88b2165edec898472012c3f14318ee43597a3f89a8a477e18c1e1c01822001eb23876de8bc4b1782be542e99f2fd9787531045493acebfd763be0d112a4f9262b9382d9a2f7dd094b5c84fb74b8d4837269b84594e5ccfa243d97e097d8327b7ce1eb0c6694d4ad2a4817a0de3b2769975380c930a40e4f18748bd6aaaeccfcc1cc9e1cd6a628b7785d75ec1622878b6d77b6c38566611c06d5f7b85b146e744adba9bd3ac86fc906f390a0035e9c69a3ec162065b17b51b43068d524f14e0512270521e5fc52888ee9e77bbbbd2ece977f407950184d54f706346033831cd7a8d03efeab517d4b1e64590b8a0fae19f8c7b1292b842ab3c4d99a951c996154c081d9d0d35d3046e4bbf992b54f9a1a1806ad43b39820d30f51a857c291fc0e18b30aa5b3c2e3e8d0270fa7bf0f45ebe19bcbf931854d38ff2dd9d912ce7efff330e25efe9ef1c2bef79a81f0f5e1ea72c08491bd1cddec1c36cd09d86705071cdd9864acd79ffb8951e01f797c9e2e0467e0311b45c94234fd3cd2028826bb8e8d02eaff172f9a3f4685e579455ccc5889e9cbab804f064cb37c6157513aa1e47b892596fab8a017124cb04fb787b3bb0f08d67c3e1fd89b7caf3d3c738b1cad3b32052daa73d9ea81e02d75df1f39118e656681dd4ea500a58cb336c5a94524b2c8c0e3d5a8a284a66a608a48d7455c84ea58d544a491d8885bc17cbe5779a9c42a39ab9f3639251e2add846c756c0d526e57e8ef35c316287e948d1eee4ca0154deb570b5cffdbc295a672bee09ae44e5705d4309c79385ef88b8ad90491597dc69f1d75cc78dd65b9631302bee7848929d381ccc669d2ab8d5c3b48dbad3cfb4f1d2d30ab49062ac4d01435e5382d00c94ef4ce26587d0ed08fe503e26336c51bc29c873792ef5becc8acd4b812f09386a3573adef4f843be892ea17968854d756c81a143f125f7bf5d58bb3493757d54eed5685ae3321530321e28b78a547b5c492c1920c5bd698febf043d6964ce17dee7c53ab864d725bf0fdaaf8b47cd892d4bb9a2000bbb0af70d6a372f35b77c4795e0714a1242d089f8139ae45840cd17c02f9be033730a3098f8a4ffafc69b570c7e9c907ef04985fdececb625d27b23ccc7bcacbb8ec208691761421b710f2001888946978a44ea905fa82bbaf37fe2ab0bff6a107c4f6e2f4ae689efc8d67f45d09b38f38f65eaee89d3b5ba8a124772af405668ed2e6c1a2a52f599188c77c07efec614b67b0616d32ded40e0eb3a3efc59b94c8b82481be4d501d7de32be6f8a8eb362e5357baa0501571f0c9ae7cb12db5316a08e1409bec7cdd799cc36e813ec0345f344c79ee8b57f7557a33c13e896b73ddddc87a83a7281fb382e115f0bdca703a09516a973356ffb0c48c7abebbdb1c4718e4e227fbef848b1019e8bf387cbc6abcbfb4d9bf0005b08fe40aea6144eb1a059b2c3ed20dbc2ad4ac88ae68c694576ff5df80099000ff0ac31b996f7ed5217a6f3fb32f0cb99dfab8981b7a3fa29266bb86beb639f1a9d650e1f45f6f8db38d94a44c814472dacd003cfa42b9e72ff1176145248ae0bb2af532da0a2979a83aeb9f5ce2c19f180bca596c90ce0af3791c4ed5dd1bc0ddf2ce88c82250867ebb1d9b5078c0d965b0f99caa532847559748ddde4f4fcaf62d4e6da2769cac4b1543c6b0200cc1f37f592aef96d8ce483c392882856eb49e0b96a6f1c60ff4ca756124ce55b5008b21bbf46a05e6e5dc1b59b53708ee15c5cd9e128741c97e50e8b3d84273fef02cd7111d3f2e823bbb6d57fba454cafc0dbbd1a0799d9c6d899d9658b2aa9c51ad21aef3b1b7e55a9a9d7b137e79ce0395da9ea3b6028d4e25f3859ef93e64c52e02f70e79c5449cd5fff370ab18a193356e75863585a5710accea7f683f8145ceb0ef97d0eb8f6983da074ae8d20230e5f116004ca05385a215f53a29be74afa0rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootorthancrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootorthancrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootorthanc-1.10.1-lp153.2.3.1.src.rpmorthanc-doc    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3b=af@aP`a/k@`]`i@`@`s``7@`_k_@_j_@_d@_D@_&^V@^Ǿ^1^@^{G^y@^t@]@]W]R@\s\]o@\Q\P@@\G\'@Axel Braun Johannes Segitz Axel Braun Axel Braun Axel Braun Steve Kowalik Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun Axel Braun axel.braun@gmx.deAxel Braun Axel Braun Axel Braun - version 1.10.1 * for detailed changelog see NEWS- Added hardening to systemd service(s) (bsc#1181400). Modified: * orthanc.service- Test for SharedLibrary.Basic disabled (fails with new glibc)- Version 1.9.7 * New configuration option "DicomAlwaysAllowMove" to disable verification of the remote modality in C-MOVE SCP * API version upgraded to 15 * Added "Level" option to POST /tools/bulk-modify * Added missing OpenAPI documentation of "KeepSource" in ".../modify" and ".../anonymize" * Added file CITATION.cff * Linux Standard Base (LSB) builds of Orthanc can load non-LSB builds of plugins * Fix upload of ZIP archives containing a DICOMDIR file * Fix computation of the estimated time of arrival in jobs * Support detection of windowing and rescale in Philips multiframe images- version 1.9.6 * In lookup and query/retrieve, possibility to provide a specific study date * Clicking on "Send to remote modality" displays the job information to monitor progress * Fix orphaned attachments if bad revision number is provided- Remove executable bits from Python scripts when creating the source tree for the -source package to stop it requiring /usr/bin/python- version 1.9.5 * Anonymization is applied recursively to nested tags * API version upgraded to 14 * Added "Short", "Simplify" and/or "Full" options to control the format of DICOM tags in: - POST /modalities/{id}/find-worklist - POST /queries/{id}/answers/{index}/retrieve - POST /queries/{id}/retrieve * Fix broken "Do lookup" button in Orthanc Explorer * Error code and description of jobs are now saved into the Orthanc database- version 1.9.4 * Orthanc now anonymizes according to Basic Profile of PS 3.15-2021b Table E.1-1 * New configuration options: - "ExternalDictionaries" to load external DICOM dictionaries (useful for DICONDE) - "SynchronousZipStream" to disable streaming of ZIP * Orthanc Explorer supports the DICONDE dictionary * API version upgraded to 13 * New routes to handle groups of multiple, unrelated DICOM resources at once: - "/tools/bulk-anonymize" to anonymize a set of resources - "/tools/bulk-content" to get the content of a set of resources - "/tools/bulk-delete" to delete a set of resources - "/tools/bulk-modify" to modify a set of resources * ZIP archive/media generated in synchronous mode are now streamed by default * "Replace" tags in "/modify" and "/anonymize" now supports value representation AT * "/jobs/..." has new field "ErrorDetails" to help identify the cause of an error * "Replace", "Keep" and "Remove" in "/modify" and "/anonymize" accept paths to subsequences using the syntax of the dcmodify command-line tool (wildcards are supported as well) * Added "short", "simplify" and/or "full" options to control the format of DICOM tags in: - GET /patients, GET /studies, GET /series, GET /instances (together with "&expand") - GET /patients/{id}, GET /studies/{id}, GET /series/{id}, GET /instances/{id} - GET /patients/{id}/studies, GET /patients/{id}/series, GET /patients/{id}/instances - GET /studies/{id}/patient, GET /studies/{id}/series, GET /studies/{id}/instances - GET /series/{id}/patient, GET /series/{id}/study, GET /series/{id}/instances - GET /instances/{id}/patient, GET /instances/{id}/study, GET /instances/{id}/series - GET /patients/{id}/instances-tags, GET /patients/{id}/shared-tags - GET /studies/{id}/instances-tags, GET /series/{id}/shared-tags - GET /series/{id}/instances-tags, GET /studies/{id}/shared-tags - GET /patients/{id}/module, GET /patients/{id}/patient-module - GET /series/{id}/module, GET /studies/{id}/module, GET /instances/{id}/module - POST /tools/find * "/studies/{id}/split" accepts "Instances" parameter to split instances instead of series * "/studies/{id}/merge" accepts instances inside its "Resources" parameter * Full support of hierarchical relationships in tags whose VR is UI during anonymization * C-MOVE SCP: added possible DIMSE status "Sub-operations Complete - One or more Failures" * Fix issue #146 (Update Anonyization to 2019c) - was actually updated to 2021b * Upgraded dependencies for static builds (notably on Windows): - curl 7.77.0- Version 1.9.3 * New configuration option: "DicomTlsRemoteCertificateRequired" to allow secure DICOM TLS connections without certificate * "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included) * New CMake option: "ORTHANC_LUA_VERSION" to use a specific version of system-wide Lua * Fix the lifetime of temporary files associated with jobs that create ZIP archive/media: - In synchronous mode, their number could grow up to "JobsHistorySize" in Orthanc <= 1.9.2 - In asynchronous mode, the temporary files are removed as soon as their job gets canceled * Fix regression in the handling of "DicomCheckModalityHost" configuration option introduced by changeset 4182 in Orthanc 1.7.4 * Reduced memory consumption of "OrthancPluginHttpClient()", "OrthancPluginHttpClient2()" and "OrthancPluginCallPeerApi()" on POST/PUT if chunked transfer is disabled * Fix issue #195 (No need for BulkDataURI when Data Element is empty) - from version 1.9.2: * New configuration options related to multiple readers/writers: - "DatabaseServerIdentifier" identifies the server in the DB among a pool of Orthanc servers - "CheckRevisions" to protect against concurrent modifications of metadata and attachments * API version upgraded to 12 * "/system" reports the value of the "CheckRevisions" global option * "/.../{id}/metadata/{name}" and "/.../{id}/attachments/{name}/..." URIs handle the HTTP headers "If-Match", "If-None-Match" and "ETag" to cope with revisions * New function in the SDK: OrthancPluginCallRestApi() * Full refactoring of the database plugin SDK to handle multiple readers/writers, which notably implies the handling of retries in the case of collisions * Use the local timezone for query/retrieve in the Orthanc Explorer interface (was UTC before) * Fix "OrthancServer/Resources/Samples/Python/Replicate.py" for Python 3.x * Fix issue #83 (ServerIndex shall implement retries for DB temporary errors) * Upgraded dependencies for static builds (notably on Windows and LSB): - civetweb 1.14 - openssl 1.1.1k- version 1.9.1 * The "dicom-as-json" attachments are not explicitly stored anymore to improve performance * If the storage area doesn't support range reading, or if "StorageCompression" is enabled, a new type of attachment "dicom-until-pixel-data" is generated * New metadata automatically computed at the instance level: "PixelDataOffset" * New configuration option related to networking: - "Timeout" in "DicomModalities" to set DICOM SCU timeout on a per-modality basis - "Timeout" in "OrthancPeers" to set HTTP client timeout on a per-peer basis * API version upgraded to 11 * BREAKING CHANGES: - External applications should not call "/instances/.../attachments/dicom-as-json" anymore, and should use "/instances/.../tags" instead - "/instances/.../tags" route does not report the tags after "Pixel Data" (7fe0,0010) anymore * "/peers/{id}/store-straight": Synchronously send the DICOM instance in POST body to the peer * New arguments in the REST API: - "Timeout" in "/modalities/.../query" - "Timeout" in "/modalities/.../storage-commitment" - "Timeout" in "/queries/.../answers/.../query-{studies|series|instances}" * New value in enumeration: OrthancPluginDicomToJsonFlags_StopAfterPixelData * New value in enumeration: OrthancPluginDicomToJsonFlags_SkipGroupLengths * Improved precision of floating-point numbers in DICOM-as-JSON and DICOM summary * Optimization in C-STORE SCP by avoiding an unnecessary DICOM parsing * Fix build on big-endian architectures * Handle public tags with "UN" value representation and containing a string (cf. DICOM CP 246) * The numbering of sequences in Orthanc Explorer now uses the DICOM convention (starts at 1) * Possibility to generate a static library containing the Orthanc Framework- Version 1.9.0 * Support of DICOM TLS * New configuration options related to DICOM networking: - "DicomTlsEnabled" to enable DICOM TLS in Orthanc SCP - "DicomTlsCertificate" to provide the TLS certificate to be used in both Orthanc SCU and SCP - "DicomTlsPrivateKey" to provide the private key of the TLS certificate - "DicomTlsTrustedCertificates" to provide the list of TLS certificates to be trusted by Orthanc - "UseDicomTls" in "DicomModalities" to enable DICOM TLS in outgoing SCU on a per-modality basis - "MaximumPduLength" to tune the maximum PDU length (Protocol Data Unit) - "LocalAet" in "DicomModalities" to overwrite global "DicomAet" for SCU on a per-modality basis - "AcceptedTransferSyntaxes" to set the transfer syntax UIDs accepted by Orthanc C-STORE SCP - "H265TransferSyntaxAccepted" to enable/disable all the transfer syntaxes related to H.265 - "DicomAlwaysAllowFind" to disable verification of the remote modality in C-FIND SCP - "DicomAlwaysAllowGet" to disable verification of the remote modality in C-GET SCP * New configuration option: "DicomScuPreferredTransferSyntax" to control transcoding in C-STORE SCU * New command-line option: "--openapi" to write the OpenAPI documentation of the REST API to a file * New metadata automatically computed at the series level: "RemoteAET" * The DICOM meta-header and the transfer syntax are displayed at the "Instance" level * API version upgraded to 10 * "/tools/accepted-transfer-syntaxes": Get/set transfer syntaxes accepted by Orthanc C-STORE SCP * "/tools/unknown-sop-class-accepted": Get/set whether C-STORE SCP accepts unknown SOP class UID * "/modalities/{...}/query": New string argument "LocalAet" * "/tools/create-dicom": New flag "Force" to bypass consistency checks for the DICOM tags * BREAKING CHANGE: All the Lua callbacks "IsXXXTransferSyntaxAccepted()" and "IsUnknownSopClassAccepted()" have been removed * New functions in the SDK: - OrthancPluginCreateMemoryBuffer64() - OrthancPluginRegisterStorageArea2() - OrthancPluginCreateDicom2() * Refactoring and improvements to the cache of DICOM files (it can now hold many files) * New Prometheus metrics "orthanc_dicom_cache_count" and "orthanc_dicom_cache_size" * Fix upload of multiple DICOM files using one single POST call to "multipart/form-data" Could be the final resolution of issue #21 (DICOM files missing after uploading with Firefox) * Partial fix of issue #48 (Windows service not stopped properly), cf. comments 4 and 5 * Explicitly use little-endian to encode uncompressed file size with zlib compression * Upgraded dependencies for static builds (notably on Windows): - dcmtk 3.6.6 - jsoncpp 1.9.4- Workaround for boo#1180359- Version 1.8.2 * ZIP archives containing DICOM files can be uploaded using WebDAV * New config option "MallocArenaMax" to control memory usage on GNU/Linux * Explicit error log if trying to load a 32bit (resp. 64bit) plugin into a 64bit (resp. 32bit) version of Orthanc * New configuration options contributed by Varian Medical Systems: - "DeidentifyLogs" to remove patient identification from the logs (C-GET, C-MOVE, C-FIND) - "DeidentifyLogsDicomVersion" to specify the deidentification rules for the logs - "OrthancExplorerEnabled" to enable/disable the Orthanc Explorer Web user interface - "SslMinimumProtocolVersion" to set the minimal SSL protocol version (now defaults to SSL 1.2) - "SslCiphersAccepted" to set the accepted ciphers over SSL (now defaults to FIPS 140-2) * New configuration options related to ingest transcoding: - "IngestTranscodingOfUncompressed" to control whether uncompressed transfer syntaxes are transcoded - "IngestTranscodingOfCompressed" to control whether compressed transfer syntaxes are transcoded * "/instances" can be used to import ZIP archives provided in the POST body * Allow concurrency on the OrthancPluginRegisterIncomingHttpRequestFilter() callbacks * Allow empty request body in "/modalities/{id}/echo" * If meta-header is missing, best-effort to extract "TransferSyntax" in "/instances/{id}/metadata"- Version 1.8.1 * adaption to new systemd-macros (OBS) * New sample tool "OrthancImport.py" to easily import compressed archives (ZIP) into Orthanc * Logging categories (cf. command-line options starting with "--verbose-" and "--trace=") * New command-line option "--trace-dicom" to access full debug information from DCMTK * New config option "DicomEchoChecksFind" to automatically complement C-GET SCU with C-FIND SCU * API version upgraded to 9 * "/tools/dicom-echo": Execute C-Echo SCU to a modality that is not registered in "/modalities" * "/tools/log-level-*": Dynamically access and/or change the verbosity of logging categories * "/peers/{id}/configuration": Get the configuration of one peer (cf. "/peers?expand") * "/modalities/{id}/configuration": Get the configuration of one modality (cf. "/modalities?expand") * "/tools/dicom-echo" and "/modalities/{id}/echo" now accept the field "CheckFind" in their JSON body to complement C-GET SCU with C-FIND SCU ("DicomEchoChecksFind" on a per-connection basis) * Archive/media jobs report the size of the created ZIP file in content field "ArchiveSizeMB" * New function in the SDK: OrthancPluginGenerateRestApiAuthorizationToken() * C-GET SCP: Fix responses and handling of cancel * Fix decoding sequence if "BuiltinDecoderTranscoderOrder" is "Before" * Fix keep-alive in the embedded HTTP server by setting the "Keep-Alive" HTTP header * Fix access to videos as a single raw frame (feature broken since Orthanc 1.6.0) * REST API now returns 404 error if deleting an inexistent peer or modality * Improved forward ABI compatibility of Orthanc Framework (notably, no inline methods anymore) * Upgraded dependencies for static builds (notably on Windows and LSB): - civetweb 1.13- version 1.8.0 * Serving the content of Orthanc as a WebDAV network share * New config options: "WebDavEnabled", "WebDavDeleteAllowed" and "WebDavUploadAllowed"- Version 1.7.4 * New configuration options to enable HTTP peers identification through certificates: "SslVerifyPeers" and "SslTrustedClientCertificates" * New configuration option "SyncStorageArea" to immediately commit the files onto the disk (through fsync()), so as to avoid discrepencies between DB and filesystem in case of hard shutdown of the machine running Orthanc. This slows down adding new files into Orthanc. * Underscores are now allowed in peers/modalities symbolic names * Fix compatibility with C-MOVE SCU requests issued by Ambra * Fix transcoding in C-MOVE SCP, in the case where "SynchronousCMove" is "true" * When checking DICOM allowed methods, if there are multiple modalities with the same AET, differentiate them from the calling IP * Enable the access to raw frames in Philips ELSCINT1 proprietary compression * Support empty key passwords when using HTTP client certificates * Fix handling of "ModalitiesInStudy" (0008,0061) in C-FIND and "/tools/find"- Version 1.7.3 * API version upgraded to 8 * "/peers/{id}/store": New option "Compress" to compress DICOM data using gzip * "OrthancPeerStore" jobs now report the transmitted size in their public content * New config option "Worklist.LimitAnswers" for the sample modality worklist plugin * Add missing tag "Retrieve AE Title (0008,0054)" in C-FIND SCP responses * Fix DICOM SCP filters if some query tag has > 256 characters (list of UIDs matching) * "/series/.../ordered-slices" supports spaces in Image Position/Orientation Patient tags * Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS) * Support receiving multipart messages larger than 2GB in the embedded HTTP server- Version 1.7.2 * C-FIND SCP now returns private tags (cf. option "DefaultPrivateCreator") * Packaging of the Orthanc framework as a shared library * New change types in the SDK: JobSubmitted, JobSuccess, JobFailure * Issue #182: Better reporting of errors in plugins reading chunked HTTP body * Fix issue #183 (C-ECHO always fails in Orthanc Explorer, regression from 1.6.1 to 1.7.0)- version 1.7.1 * Fix decoding of DICOM images for plugins (for compatibility with Orthanc Web Viewer 2.6)- new version 1.7.0 * Support of DICOM C-GET SCP (contribution by Varian) * DICOM transcoding over the REST API * Transcoding from compressed to uncompressed transfer syntaxes over DICOM C-STORE SCU (if the remote modality doesn't support compressed syntaxes) * New configuration options related to transcoding: "TranscodeDicomProtocol", "BuiltinDecoderTranscoderOrder", "IngestTranscoding" and "DicomLossyTranscodingQuality" * See NEWS for details- version 1.6.1 sqlitewrapper.patch removed (included in 1.6.1)- sqlitewrapper.patch (boo#1167431)- various security hardenings (boo#1167431)- ConnectivityCheck Plugin enabled in build- version 1.6.0 bugfixes and improvements (see /usr/share/doc/packages/orthanc/NEWS rpmlintrc for some rpmlint warnings- for i586, one test disabled (fail due to rounding issues)- version 1.5.8 * various bugfixes, see NEWS for details- version 1.5.7 * Documentation added- version 1.5.5- version 1.5.4 civetweb.patch removed various bugfixes- civetweb.patch added- version 1.5.3 * New configuration option: "SaveJobs" to specify whether jobs are stored in the database * Don't return tags whose group is below 0x0008 in C-FIND SCP answers * Fix compatibility with DICOMweb plugin (allow multipart answers over HTTP Keep-Alive) * Fix issue #73 (/modalities/{modalityId}/store raises 500 errors instead of 404) * Fix issue #90 (C-Find shall match missing tags to null/empty string) * Fix issue #119 (/patients/.../archive returns a 500 when JobsHistorySize is 0) * Fix issue #128 (Asynchronous C-MOVE: invalid number of remaining sub-operations)- version 1.5.2 temporary fixes for civetweb 1.11 removed- Version 1.5.1 Initial OBS build spec file adapted from Fedora project hci-cnode1-m0 1651840964  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1.10.1-lp153.2.3.1    OrthancPluginOrthancCDatabasePlugin_8h_source.htmlOrthancCPlugin_8h_source.htmlOrthancLogoDocumentation.pngannotated.htmlbc_s.pngbdwn.pngclasses.htmlclosed.pngdeprecated.htmldir_3f92a4502deffdd31338ca8a4fc95794.htmldir_6a6d70210c4d232322107116ec8ecf21.htmldir_744c108c6a64b35016418f400e5a26e8.htmldir_a840ffd41fdcc860d8b227bf091a12b6.htmldoc.pngdoxygen.cssdoxygen.pngdynsections.jsfiles.htmlfolderclosed.pngfolderopen.pngfunctions.htmlfunctions_vars.htmlgroup__Callbacks.htmlgroup__DicomCallbacks.htmlgroup__DicomInstance.htmlgroup__Images.htmlgroup__Orthanc.htmlgroup__REST.htmlgroup__Toolbox.htmlindex.htmljquery.jsmenu.jsmenudata.jsmodules.htmlnav_f.pngnav_g.pngnav_h.pngopen.pngpages.htmlsplitbar.pngstructOrthancPluginDictionaryEntry-members.htmlstructOrthancPluginDictionaryEntry.htmlstructOrthancPluginHttpRequest-members.htmlstructOrthancPluginHttpRequest.htmlstructOrthancPluginMemoryBuffer-members.htmlstructOrthancPluginMemoryBuffer.htmlstructOrthancPluginMemoryBuffer64-members.htmlstructOrthancPluginMemoryBuffer64.htmlsync_off.pngsync_on.pngtab_a.pngtab_b.pngtab_h.pngtab_s.pngtabs.cssOrthancPluginSamplesAutomatedJpeg2kCompressionCMakeLists.txtPlugin.cppBasicCMakeLists.txtPlugin.cCommonExportedSymbolsPlugins.listOrthancPluginCppWrapper.cppOrthancPluginCppWrapper.hOrthancPluginException.hOrthancPlugins.cmakeOrthancPluginsExports.cmakeVersionScriptPlugins.mapConnectivityChecksCMakeLists.txtJavaScriptLibraries.cmakePlugin.cppThirdPartyDownloadsaxios-0.19.0.tar.gzbootstrap-4.3.1.zipjquery-3.4.1.min.jsvuejs-2.6.10.tar.gzWebResourcesapp.jsindex.htmlstyle.cssCustomImageDecoderCMakeLists.txtPlugin.cppModalityWorklistsCMakeLists.txtPlugin.cppREADMEWorklistsDatabaseGenerate.pywklist1.wlwklist10.wlwklist2.wlwklist3.wlwklist4.wlwklist5.wlwklist6.wlwklist7.wlwklist8.wlwklist9.wlREADME.txtSanitizerCMakeLists.txtPlugin.cppServeFoldersCMakeLists.txtPlugin.cppREADMEStorageAreaCMakeLists.txtPlugin.cppStorageCommitmentScpCMakeLists.txtPlugin.cppWebDavFilesystemCMakeLists.txtPlugin.cppWebSkeletonCMakeLists.txtConfiguration.hFrameworkEmbedResources.pyFramework.cmakePlugin.cppNOTES.txtStaticResourcesindex.htmlSamplesCppHelpersLoggingILogger.hNullLogger.hOrthancLogger.cppOrthancLogger.hOrthancPluginLogger.cppOrthancPluginLogger.hREADME.mdImportDicomFilesImportDicomFiles.pyOrthancImport.pyLuaAutomatedJpeg2kCompression.luaAutorouting.luaAutoroutingConditional.luaAutoroutingModification.luaCallDcm2Xml.luaCallImageJ.luaCallWebService.jsCallWebService.luaClassifyUsingAet.luaIncomingFindRequestFilter.luaModifyInstanceWithSequence.luaOnStableStudy.luaParseDoseReport.luaWriteToDisk.luaPythonAnonymizeAllPatients.pyArchiveAllPatients.pyArchiveStudiesInTimeRange.pyAutoClassify.pyChangesLoop.pyContinuousPatientAnonymization.pyDeleteAllStudies.pyDownloadAnonymized.pyHighPerformanceAutoRouting.pyManualModification.pyReplicate.pyRestToolbox.pyREADME.txtToolsCMakeLists.txtRecoverCompressedFile.cppWebApplicationsDrawingDicomizerDrawingDicomizer.jsdrawing.jsindex.htmlorthanc.jsNodeToolbox.jsREADME.txtindex.html/usr/share/doc/packages/orthanc//usr/share/doc/packages/orthanc/OrthancPlugin//usr/share/doc/packages/orthanc/OrthancPluginSamples//usr/share/doc/packages/orthanc/OrthancPluginSamples/AutomatedJpeg2kCompression//usr/share/doc/packages/orthanc/OrthancPluginSamples/Basic//usr/share/doc/packages/orthanc/OrthancPluginSamples/Common//usr/share/doc/packages/orthanc/OrthancPluginSamples/ConnectivityChecks//usr/share/doc/packages/orthanc/OrthancPluginSamples/ConnectivityChecks/ThirdPartyDownloads//usr/share/doc/packages/orthanc/OrthancPluginSamples/ConnectivityChecks/WebResources//usr/share/doc/packages/orthanc/OrthancPluginSamples/CustomImageDecoder//usr/share/doc/packages/orthanc/OrthancPluginSamples/ModalityWorklists//usr/share/doc/packages/orthanc/OrthancPluginSamples/ModalityWorklists/WorklistsDatabase//usr/share/doc/packages/orthanc/OrthancPluginSamples/Sanitizer//usr/share/doc/packages/orthanc/OrthancPluginSamples/ServeFolders//usr/share/doc/packages/orthanc/OrthancPluginSamples/StorageArea//usr/share/doc/packages/orthanc/OrthancPluginSamples/StorageCommitmentScp//usr/share/doc/packages/orthanc/OrthancPluginSamples/WebDavFilesystem//usr/share/doc/packages/orthanc/OrthancPluginSamples/WebSkeleton//usr/share/doc/packages/orthanc/OrthancPluginSamples/WebSkeleton/Framework//usr/share/doc/packages/orthanc/OrthancPluginSamples/WebSkeleton/StaticResources//usr/share/doc/packages/orthanc/Samples//usr/share/doc/packages/orthanc/Samples/CppHelpers//usr/share/doc/packages/orthanc/Samples/CppHelpers/Logging//usr/share/doc/packages/orthanc/Samples/ImportDicomFiles//usr/share/doc/packages/orthanc/Samples/Lua//usr/share/doc/packages/orthanc/Samples/Python//usr/share/doc/packages/orthanc/Samples/Tools//usr/share/doc/packages/orthanc/Samples/WebApplications//usr/share/doc/packages/orthanc/Samples/WebApplications/DrawingDicomizer/-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.opensuse.org/openSUSE:Maintenance:17482/openSUSE_Leap_15.3_Update/226f2281eabaf71ffb1c07821a8989b8-orthanc.openSUSE_Leap_15.3_Updatedrpmxz5x86_64-suse-linux   directoryHTML document, ASCII text, with very long linesPNG image data, 173 x 55, 8-bit/color RGBA, non-interlacedPNG image data, 8 x 30, 8-bit/color RGBA, non-interlacedPNG image data, 7 x 8, 8-bit/color RGBA, non-interlacedHTML document, ASCII textPNG image data, 9 x 9, 8-bit/color RGBA, non-interlacedPNG image data, 24 x 22, 8-bit/color RGBA, non-interlacedASCII textPNG image data, 104 x 31, 8-bit/color RGBA, non-interlacedUTF-8 Unicode text, with very long linesPNG image data, 1 x 56, 8-bit/color RGB, non-interlacedPNG image data, 1 x 6, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 12, 8-bit/color RGB, non-interlacedPNG image data, 6 x 1024, 8-bit/color RGB, non-interlacedPNG image data, 24 x 24, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 36, 8-bit/color RGB, non-interlacedASCII text, with very long lines, with no line terminatorsC source, ASCII textC++ source, ASCII textPOSIX tar archive (gzip compressed data, from Unix)gzip ERROR: Stdin has more than one entry--rest ignored (Zip archive data, at least v1.0 to extract Zip archive data, at least v1.0 to extract)ASCII text, with very long linesPython script, ASCII text executableASCII text, with CRLF line terminatorsK-ų}j/Mutf-867b2d1f9b5419610dab1921de698010bbce0f7c7117ec7cc942f4794111be9ef?P7zXZ !t//p]"k%PeyzL^Ecv|)>̨%tF~Bx[>fXL߃PJɬ=MwK-sK$,aPUTӎx+J^#6W1vo IqwRE?HQ(ҿZT'@ӏL52JR\cuăg|SШf7._;M܊*7 iI'ۚAzzҘ9x&4F7i@s3⎿Q %e !팫O@a=h6Na luj3JnGT;k49|"k2pƈ@e?P y-V$huX@3Mww"ă(?9XG'R;IpVAqeo7Ψ;X"g "$X$y @(&Y< e29 e!Q\)\'F<~ @s=V}K[ˁ7}g`7QqWKb*.CNKvOt`W$XO.WP2!r7er%VrϝP]Syq4||ڰRINC̊+s-NDϣY7;6ҝSb}j L-h]G'>Q8("_~fq:hPbwQfWh߶BT%YǵStCPձ_x~n@Yk kRVP;2ݸzWI~:8' 8ߩ!?z){k92CSȈo_\wbYkYR|{ =}S0h{<ȌKBd'(bGO:Q,\9IԀEΞxď8(a0 ~ea&gC#˅iR^=o*+0uf0I 'Pv6;28РD.TH^0N$^$ gE7WK~OtKEJ-h<-@29f%ZҀ6v1z0s~v>%#M aUnlYԷ _K>-&k1&m|"TG^" D /±o0  `7+  c0XV/C m4?BhY%TUZo¶:7Y)igz oc#΍cۄʅ"OffPf:>i]i68 3 gʐl$_RRi~L7cKɌ 2^ ^Mzy9x4ddՉ5pgQ2e*u?aVUoiϙplW6 (>4ʹM \G*FB(M%kJrÐĮLe>T 9ͪo:~b`|'f҈̗I3D5 3/8~kp]Q$ 8 6< |"cyHXTr:);77ȕ|A㺭;X]yj 9~A ׹ ww@˂g% pT0Z#^`^.@~gxQPM̤N 퇪ʹjCţqg|AYOkMA#Ϻ؟$0w գsBKp8+lҾ*ܙ7M5zӁNu>{d* ]Xg`n"&)*E-⦺ Xv\1f.=DyZe$Ai|"aAzO9!;] ^Yi@f<)l/eAF]ysO>Taq[zadY{ywxY}N hlpcV64VuU$ڽoW7VH6j[G,:}h9C n mo n) :8鰒>*{AOM~ NM!(iY{R`6Y]{kmDŽJ䭜]*na| w( B,tmyW˙"ч &'qUQSmyfA{&DW6v|B?D0+}= ;H6!J``yD#Pv-| C3iT'-x".n2: $lsCU `&ٟOU,aۤ(]^s `lIk#EESG,\8>!-NG_IZ Ȕ":MDs)wƂL_CqN4VN/Y63XQfDͰݸ縏|/ D%>{{&X=0:Ct Ar.fNu:!L-Vf#CC.-v"6w}>QHx j#㺽0&Lv @KZ5J)R\Hq9#}y 6 iD)t؍^h6ntJ$V,L]WĩH ,!eѦЏ}vA}/YN/mAAJ '\L.۲}W_QБҲm2f\I:'t߱?m G3ޒV"d h$x9<RS3ѯ:`gOVU>{#qv6$qcu&B& Q*z_@㼠i]> ce(?:&VkN8\ɱht\c{4Yv\ |0.qҘN-vWUY@h|Iکu9WUU3fMI;}J PK@nTF]w6@<-Wi^Oghiêݳ3E.ՋN3}Uf{OE*NM%.wö.&[-w6l~?f4 o 0LI$7҂B;f[D#\Rj!-XfX` u#t;3˹/Sjvދu wts+a%el C  65PFfANMr|Br~SO n!ќsYsь !XJojcgGw켋}x)ऻE%䀱w" V¦O:"6`uJ4afگcXPohr0ǙAUǎܭ{_1pc d"LJ_Ϩ5QH>-ܫ]e@B-[l?*E)=]<-bjrCߘ{BIf\pГ(lϘ9H e`N-|yاwkKXGfmuf"'Adi?p^(}W:|}|J#W[,yj-@:m80D"ԫeOמRr:k5] Ddݡ|Ci2İj--+ދ :d;LP7. @s[@lk{Lϱ;Ț|btrB#gK"+GQ DSPGkVH+\_Bn秗j/AfoGU1E=@ Bk"lnIRXO\?ز]+Yb;59N&n:s1(<&.߷GB,,T'sb`L=u>io>Ha7"'riM}^dpd5Pag67Vėet],?xט'50 u׾B@T?-Iܱn}8:&2M~J%?l(?sonCېrW,ҟizJ?hkK 8K-q:1r8:;~zW;%*xf #X)L)U&hBZ9nA'xds]|4/E pG)؅ڊJ|`#Ewlν(,wڡrji+s`4吉̤ bLh&/'8S Z# 0$sEPkd\l&ĒBy}-uy(c֐u&WKb;r,qe2 h6lc놫)r+aXbԜ-&^*I ڎ9|" >ĠJG"jUعNjmЬWͥg%(f:6@ro`W*Z.8 Г~ad{) n:{4=(~4"J:/^ӡ?XܠQQ6 gIm)J>ɛZ1zrr\c U06 t7irHWf!W";P9h^}|ɇA. Jq 07HF[u8lqF%xV]9<Ш#;Eam@frdӈ`\nf~Ţ.J79R8qG:Ge7މ!کOAEf&o7\0.5) \xa$hbW8qe9!Z$.:Uv~hsp{d륰p>M#I_>8=9Y`Ǿ>S2a@׫}{}s=#b\`ݜwWnr ]\)~$d6l ȥ"<7HGAL7.KV[72)tV3}Y]>`xQ ĢC"J#Gij-N繋L t+V"zp&~ӮjwWگ7gNqes8ּE 03u= Ҧ /#p)U z|ϵ~5Aľ.pR"<:jW>I >=elR{GXhC)dQstR;w-ӟ>CMs!R/V gj [V Rȗ g$.!JkGDS|`CqjVG9k\ n=iH%+GXG FP٣Bbu?8ȠSy;R'YZ]1xr61hcr }wn)es\הj>,*6(DPxF T.ذ"BM۔]/j >-nf^n~W0S}cǺXL<9&qܺ Ǜ*`q !=iœ٥ڨ Zʾm~a/wv>M` L.5IX~]ݑ|`5H/K_nb)N깾 >r )iN#zL@F-++2n+Ɉ3o*Z[Gi0Z+8v>.CZXS+U^TDQꢑ);\KELo!Vr..`A,\徯R)c}H@Ɋ%h F!X"oQb{臔4!GX|!:b.%\D&%(HAEW!6wg‰D OT r,', FaBμkM]?M{J(dW:-VKL3ދÍu]SqJnAW.cIU罫H\79X.} ZX PQ(k`czy >g-asl¤WxjGa`[plwi)vNk30R[!C JTAql3r!Avhfհ]7^?B8iDƶcM҇X]Xx_9LL0C{Ox{>D$D`XSN(7sQ3i'J=-&(j=98)d2) 3>%d؋\Cf-7R Obs~= %r!yBLP[YY#LwԤn4i {G7TC{HXBH4wdbC`DjJcHhkؘm yn6x?ĘrrRY Xoƥr 2Wi96 I/07ds?W$TiUg,^UH'ՌPչeU/QO_PE{@0;>֜'7-=mADp`J WPL O3BzJ !i X@'RD?/)^SF#VCl̖ 8@צ?#0 Vǫ'g1CzRJB]>nWI5)Ucy0 \Gkq Gڈ'z,&2!5D|z(eV`ׇ/i%!4^ s$IJi3f>&M*$@n5N} @7]s1/vSeV0߀,§dFMԇ\%4Yt[݃}M 7L @ [*[3O``[/L>Iyy$2efub٬.u}wG3X2tԔY3nKݥ̼Y-ƉHn-~e?tϘhmq:ڂp^o5<w1ȸK>wg ^Ġ>Rz#~4I10t1#Wge=|~|w uJzDJxl`,@ ufcJ Lդԝ}zuq„ķ"[D\9[JM/8pӣQ]UW8-|@EFԤb*:׻,<#AB!{V}朩~0׶^{V}LHS?:_ վ~bÈw6l\$~pR[E|cgqNP5S/m+lc1g7&VO }eŅ3/}bp͛u8Cc$ @D)_db$&YU 2؝XB !l/4߽ލ-i'?VP L:'ه!sk,!Lv\>MRO*93y_dO]÷L׹ 6qfYGpJ`)J13Ax&M=FKuXکR~?@V3.ԞRcG@TRa, .AdWlpe;lҿ-:Ja7 _̱g'ˁx [r%Fv86͊PNHwL+*FVۑ>cz|~vM9t@V>@քbK*{ϧ,ϣ`eNdG I'9$VNRfx8-^H'N%֖z-:\ 2Neu<踺Aɵ8LPnaI{¡K(YHY.ބ>7UYյ`@Cd.QƕadT3rsgcj]D:iV{~LT紼SDjJ^S3<4`tZu{Ijв8Y g~#wЅB-GfIHț +{PGx츈Oc$gZ4Q \|ÔdvMvoO*LR8:!Hl NZf*Ւe4j41*h)`9jCÎWfvCWs ֽsw6ņWw*'Ũ7@jZGMhTMX)f#+:VkyEc*FV|{ /ѓ90{}o3olpbz}ԛjoF7h>Ag/?FK$=C 図 /9ј1_V|3R/=bމ^L7rq" vrA6^ bų8jqM:&(fS,u>F>Bl`TB%-e 5,nL+T"krL+/ nGiعυFd~S]7LꃙzCB b,Z8>WB]g^uPkߓN>DmB=ؖ8]kk"Ėn Mqˏvfg^ J Bo^b‹<ꍩd3$kK[Lc/Zcqzȩ|η;J}Nv@c&}VZvGkh-v4'+Z2}wXEOrt]|'@G YS_̟8tk jlRh$8*(GB`NDT}itWXGj񑅛.X$ 斔;{dSq6J2 z`Pˢɾ!aru~] SAY"0&U=74Vk#TΚW\/lۼ٘`{]{_c"Ei|}Vw؏jہJQ 4ð:;ϸ7k^VnT79ITN'u>U M߁>Q<U!X8CÛm=}!rLMU=pUU1C) ,5$R@X$v7/!YVqNS\ ;T>0#YxBp,hhKsPT<"|CT"n`xrHZ=8Sd\^ãV4\pA9udrl**Ә)%q`y+fѥ[C"YZi"-x.i:]D#%!AU :uDP/WC26pA:.3 !ԹQھY] /CZV':oCEc5ۀE$({ǵ(s1֗an M:kdJ@_T$+cIQ3YY>U low6}8BsVݐU9h-yW^Z8@M&z7f@L? m:k.^p*BL즉l"R?L_KjσPQ%N(P5p%a#Cyߚ^qVm g}?T\ GI ym5ԱMS0`r4|FR;~μ׌z gOoy}'{u4IK?ģL6=]*ܸ'[@}}N ~ W [hCv VgW x!"(]L䔒f lӉ3 gR{G(8ލ^ HP_I ɖ$2bbmk9:3AP - n SY艿m%QC &JUtBv{6|MLlZ[=nJQ,f"Mҿߎ܃heu4`ň+daz,F0ʯ>9Pf.:;8ǫ].G\ШqAu(lUhiw㢲W5Ԝ^c6]ȩo0ވ_} ߐ9ǾZNh%* 7x'O3t.EK^.YYh旘ZŦq(wUjeqZ2/˒< Oҍ+Y3BvRc?6#>8*xЎb1' \5[F)+2Lk bg?aøhH u`>3VWx(ҮF<~r1J~ے/˲m4EFw1Oq j<DŽ#+bH?_rCcja&;$T.}ԕvrWߎ}x|Qqٛ,゘4yDtGZ`<3#X)d= ٤q ň e9.kX]S7$){[~}5:% C*YH1B᥋gW*4*|3߻ BOwDF%^8mhH5ΦcHڪpmCUpuZW``F z:WzԖ70 M'kԈZBӋ>WD6P NYJF6ӢD:\*zꫮTN P"#CK "f; -~<^%DPޫMهu;owsښǹlz6>; GO6MY0`.H8@1P9}#CbE)qc5X"V ;oh;EŖKbLP/:|-ZD@r='9;0Ihɨl]|`JDT=0L7`?cجd‚q-r8mYn{YoI3 F &爯ܬ}3S >bӪ1LExWs 왻D)9=U2h|Vs#Cy#qn!2YX~^|8/=*1\RK?$Z"mm*"Pzb QJSO{JPgVrbt̼YNs;PzX\ KFE%sϨtt?or$6^W_8Ҟ"򘅧:WN#`A{!Q FM@e2JQg9\ߏ$-ANhк)!톟£6 p+Z>+j <#%ԍ o&$Yg.G'fă2Ǿ4/lBB`ǿ.J9Pmw%;73`E?\p h xKT1Z7.tc7]'XXY•#xc]dT]V tVe>9ROlggZ. S씴̬@bzs3=&BhiUuP-PlTj0X]oS_ yG1W)כqXO|! lE>vs p20ӹmMl2w2͍S*vNW#;öR:E5ӝ80Ju^qN\Z į;_'$,R>տ7!~ hO^ׯ}5")?lH[EIEZ~sYIuƧ"ũUIbI_#m4ΰ2/$"~3j'  -=+Mt%U"%![# 6+qִ<"GyˁBSDSRcƾÐ;TVQQwdwr1.XHTHs_KC/^p O{Pt\\+Ca-+~BRse[tp1>;>/~ WH@ZuIPZ3b\ g:v>T1TDNL2'jΨEL&oPnbp5YHBffBi'R?8qtcy *0nh92{h=UӪ* -t}eh_ǠhӉ?#f4 Chv8ODqCR eN@ Oiwsq^ !MG(M{9lX8Άu>O hbW#k>MZ6{D A Gv%tUDЁ n{j4|P3Mn7F~/2M> 5X4r妊QPft;!u "0n/'IQ2żғXZ^L1q5ɷ)G81xK ~4 )IeH d /j~F.`ikr]pjbʼzڛw팀 G Tm%V7<(4ϧ`@ߓKXRs-,;1t*TP?;:nkh~+:% S ^Dr㙿oIx#,S ,l(y~`[DGX ؼr մyf=*'t:T!:_xF2Y3W$ЅP )2ҏgo[kSmnqHvEͭVO /h sw^{a3y'1Y k"S> hXLcH2Dh/s7n)RUF() y)99NwA)]@X"SňդvH2ż6.^JA$6׊~̟zl捴(G_2ZC__Kh{#rBc ]Hgid֟7rP1ww3|k^ۊ㫡Ա+IZ#sv0GO$+C^gn<PrZU jتsϷQN\ޫ 1@O6g&6=qA3o%ފC"p%gƵ_2|1ǷRY70]@1iB[_*؅~͟vG \U^2,8 PmmSns̖zBY&FbּK%kY͚`lXBJZw𬏰Ƹ``khxemoQN5n}sWĒ|Pۭ Jm8#1>ňۻdThI`!8nck!z]~݃w#|g!N XB mBj-=s&JX؈V˩;ƵtU,SOĬﳩ6guNY0ԏ '_*2dٝtHͨ^i/*`oCCJ' ՘٫G`+2W#y^K4|tӐ3)>O)Z_@2` B *'n: aBw_DiEAbQ60s~bgcAk˾ƃI%g0TG5@*BC0eySÑ+XPo5v/gK͋GE T`ʹT$N}t4cp< & :>[ zDB{x_@:vhGêmLx'] +Pl44eOEc4K'@sZ-G2/_ #[ES:4e73`>U'!8#ɪv)¥zx\םO(j7C>TtU%Q2 ԥ đAsFdF#mVn`cVk쫠q{ t)dnk +gU[œ.Zxm9g g3HGPG: c΄>T]~b2 SkqI%n 6 K'^ڧ=L!x0mg40H)OVۆϦ4.Dmom7Wۆ 8jiNhYirnt$]4!.Jhts]%..=E~fxFfg\qNq0(PLQߍ*zT.zֱ&JE-+C;O.~NVbLnGmVdW)vÉt)jB\YcjDa)SssXE{;3Nto]lθDŽ/я;|9_%rT6娄?I d9vi`]e?4CYDA׏?d\c?="O0ԨHFԚț]SȞ_[fA^ 0o9*5E\MDDXoGɻU ΉizV?CW~GȘ1-"5A*6M67u~~vpc"U9K$T,(M<1pwS3DEBK*aci.z`On,xϕr ycNj,ҴZX6V}D)ڀ ssvEU0Ur<|,d6r ħkJ).֯qӸt<$B 3 ("VOp$٥ 8O]9E4io~m{=1ҙ+ gY<n9 18q3J3O 8`G򒥫la9j1]$ $bOT>I>}o vJnw $)">Ʋ‚L>gϏFjz.Y"޸6 ߏ cfh4` 4KukyNt"xrTj``7a|d0V|NA=5p-Q^,RhV(l{ 4YWҭh~ *c=t,Ο5p-h ǝ(. FeEm~L'd戣Yu.ɱ [:y bBޓPYo(jR`J ୟlhWqb&l8߻([H`o\_tZmbi^wp*Y) ǧ cxmG76-lLT7yH$)q-ec2қIy T cim.h}|#|~eҡ: S`;BB/L`#YPSWsR4lVuSjy,G"-˩ hgqgnbosyFjDʝVNwNQؔ(~w8dAUei:n;Ŀp%񧔼BtFTG?p,˧+2$ FZl@_ n<}p?w7{S#)d#`x ykxO/OPRW^54lĮKQbKl?hZ!mM4%cpvxd'va,NzZ)n0mhц\yfa:ˏ^j$=O7k8o}[ ,xH.@I?\*i<#E>&a'Rng;׊,`qQ?~qz;W2$tyY]ŻKuw*T!/Jox^QRҌ%{KG_}6$x- 7ܾoJ/"7PƼdUR9{@A% :RWұ?& |Lpxb%V;ՁNS03r._CfmډeHZƲY޶nIDqؒh] zݣf͑ ae9 yn+,:E\Y]l9_TPH,JӃ|\&k?k7n ky}SȕcW̙))RTkI%+u+A_SMÚOU u)e#hj(OZ|Q1꥜s)<mc֑,tҰ?=P$x1G}'s`w(^h1E19Vja?z؊A(u|>[R uNhފ޹2P7j/\pX Ӹ5l5wH7pKEwt!;r79>Yuު#vXgL'JEt_Vc([=_KΟcodTIU!(& ގF8BM 2z`c_2GP`W=1(Im"pL+O<±rJ-/,k?A!\nXv|(mǁ^"z ǫjo)Eh5u|HG\0!AIP BÛe,P{&h0qaSn Yɤ1ɾkKLB)h9EIA_B˭ cr mf`ME],dJF`|pJ/vkeNI\ D.OnUy16 AQO$ ɣTCcA.A.Nub #nImD)1#/bqy @gb-W1Id"^`Z48>O{85=u] *О3K\P(CMoTttϨAVg YGM&`F̶B_ه4;&Ƿ$lm't8 d&o3\ %H߈N&14uPmlf׉.Ժ*}~ś*{w=In <G3&eNszeYrڰC`hNx:\vqH6 &gR(b%"4*JK4 >AZ~Y鏎,R"lHR:w-]p0 7VAǡU)t"q nGyQGW".ָڣ }}1p:znƢq?fVXdQfA໮uk<{bKNm"J)lϥG0w;C7ԕT9ƅ>fSgl3iGo(d3Ƿ_KAptB3ڧ#~Iב$JMr7,?/1RYUi,NP'z%=Jx,?>jv +(]С]+Ǥv] {Wo? %"e2 59azQXrR9q#2a T+E Z: v i7  Ăh0Fב0x^\wrSVc/УW u{ԂпuQ}ߒS>gŃnusyKESpѭ`Gۜwf%gY6ЁN*{p&JY{W!*J$0iꛘmIHdw9=ǎ?~K)"Ggg#&;]^'Hǂ;%JMy6V$]vX{:Y\ȆbzY\}M9/U(ߘGwjjNCݽs546AR?y6 ^ق0 t}2fpEzԟNE>9(~M|Bߦ֓,SO|e~ ۓsfpA&`ayE폣V_K O8c.e@ xy a3̂}$k~.ͽH-6ަ1#˦ݺJwx.Q%otۡF>zsE-,,F/j薮R"KM-xC6%q/>bJ|FluK[EYkUe'eI_(t@d9 *4+F'*c,`إ7TgHG5ͱ[8`[Þ.rГC !΋5cIy"0AGs}{(׿<0-qم$tmgS) ,X| Fmge2z&yװS5@b];yuRj_N$ze2WS =G -u>`כ4M.ˆz]U_鲼eg:Mn&IJ\p%V=_=Np>32j.E=z0F9 'd۩*X\7ᘴ ͂KTvǨXXЏ,UF(\8`'ak@lH.0ӟķA+)퍄ou*'v/pKx?{r_*<ZJ__>Z[: FOE٠Nl! sQM]UpLm| I/0D/Vf8aMd&)dg'fgwz"|]_~â*Z?)#sFpҺK Z*#6э* L{¾*Zr8@Clֵ~u9?%I Ay#G<)٩7ˡ>G~o-\kX}8 X(oV9UZyOœ| \VnK[(A2'pGz|o)ܬn:R`6mM PQk`e/4inbѐ3<+{=Y?ØFcTٷ#M lWNAIGDP'тiF3µ fPp>QLJG= ^f秂`Ξigͳҷ 7cl|nf (e4'Lo:vPj>RY`n< @'K1AՇaipxtF==dk]f[bi Ly5+ߪ3lxw(@0S (`;o|o]3|8>\8an^ =^kGKU?)ʤ$><1W!нCfO&JLx(N JWEp_ Ƚ*'(a"YB=1=؀ޓNceYGrWdKO#]c Cwpu !`͵Ԭ3 'go}8n_#F9l泸qH>e= z٬ j9ۄpb hP/Y+_kެ•BJ/vɴ;^:A6aK00*n9ZF$QE# M{⴨\Vf?Vv͛q~2lVp7Q F*RU%:.ܑ,u^Lc[%i<]dYf~ 6WDK8L4&JQw([Q=Jty>Fo!yQED X4/U׍r& bmA1_c }kdy2 #DQ62qˍnѱrԘf|绺Lmb/c8]pOeQș`/ַv4_80}A(viכ~ /3/}~" aޜ쌙5v U?wD5Z?- êڄX f`Ynsye^zAV5h%Ẁ|>{ 5xmN̲?Vfx)4ſ pj#ͬw &MfA}ӫ1i߂`'R ~ҿgVoy:QGHya2uaa#< zF=hKBEiSv2VUzP%=a&`ᦖj#E-y G{!u`O~[{ +7әH޼+ vըXufY_a-5-κO V/9pl ZŬpgmAܐ5„DU9n ކ ȵhdh3brX+Ap|A>%IE|ةp#fClJ۸(P<7+| '94~ezҍs QS\[ݢX[PQ:8˻N(R 6D!x-ᢶ 8CCė*)a7gHHBa~6gFIUHK߳@qKgMs["uFt:cU>HJC]HȉX9 0}RAFOcL QG4.`n !h)˰P[҉vtCDK%ԮA}9G5iV}uklQ7꥞Z:tVx{\SiTX"R0ꈔgOH|4j\\?Nk(;ɅNSޓαώTn ř>R.Cq0qYT! 6PKp cڝ,> ];m` ݀CFW=* ֏5|qt7>x@ժ#)RMkRkAAⴙb)/a+io7L[5TK&-S ;4ǘHXng/Q~e!P(j7~Tp^sCtӔ)chkmH(}LtDi#s+ 3w; ȥG<9֊JR0Y&-gA [QہKq__Slo W<@E>BYx?`A'M{"8qƬeoQ3v/QW]Dl^t.p{/RE"(6dx)^6{H< Hۈ&C{VTJ䵎beKa^(/jLwLe:lM2ݒ$/KCVq^ {RMZx&HI'Y; 懸iŝn.iACI%Nś;id2  !9^dF%=韧hP6eI#xO ]&0 Ş vu9x`.f]%[p9 =pw?N02BH '{5a7 BmWFb $Zƈ?-"iڪ*~msDʈPrP:'_Bh1#AV9j+쵇WȪG‰3:8V Z(a3aTwPi l~C%#?!]3,f{{^TS'DnfE-ɪ96게*30f4O&#ž>~?AIe; DX64}IߠRGiֈkkS)NW 2 ٪V?lRaXl,7 ϞC7싒yT->Vq\l Mk("TO 46 PQq,0s߉WQ1u EsB^EE12! ܬPOtpŧܻ[1qyҝ ^38ӽ ]9.!&lB/`Ws}n}; Zw܎Fa? K}7*i-'_ w}T)-hkuj@1n8ҫ%K˓K2yS\FeTQraX~Үĕ0;-|VS4GlWܥ2/rTK'k;]YKYV Ӯ &*P|w3.%Yǖ\rH1JX6TҮ:b;|1tt[<%kL )yQ\ZEzmcOJ3[Qq?{ǩ-U/H ~{,CVUR!t n a)Y)OiyQqD U~F ji`cOR,_ƙ H֗.bjZu&')1Wٵ⨌2')"W0 mDV3KvAcQʟuzaGϬ9%$ܴ^OMHu I|P5<F Œ' 6<%٠ kfePZ/ [)BQ t-52ҨBS,pXs607йYrFu Bgb! 4?[4xFX!ʈAp,!ğk*O8ְdlC' 4=HBlZQX ` BR+Pq} e)"=fU["Eu8BSz S;#k/yEWBLQԭ2>"95X2i/(R9]$H9O[SaVp?[yDݨs,3gve'\c ca?sagrJz_7qCۜ˲՟ª˅dckIE$zuatϱYdߝ`"I!@J+F{@$"ټ_C_4Q h06\cFXN,3PS͕H#0Z>@YCc׀:t_ ~BOC=GV[ϻ,.PY$ZqV;G GXd[FB֣Ti)Et{LB YZ