pacemaker-cts-2.1.7+20231219.0f7f88312-150600.6.3.1<>, |fp9|I ̗]dF]xF?SZ{o)b~;2pZ\gbJfP2JmM U20H98څ;i~.Qpj#J{sԡB0h6rg* ΝCzOiL-LQ+]Dě_wkgt5%5Ō_>A ? d) 6 f. D_|aGa ia a a [ya LaaUaaXhw(89:F PjG PaH aI ۈaX Y \ a] 2a^ cb c td e f l u av  w ax Vay z        Cpacemaker-cts2.1.7+20231219.0f7f88312150600.6.3.1Test framework for cluster-related technologiesTest framework for cluster-related technologies like Pacemakerfh03-ch2aDSUSE Linux Enterprise 15SUSE LLC GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/Productivity/Clustering/HAhttps://www.clusterlabs.org/linuxnoarch :mkg$a[C2 8$8s ,0F 8Ad;^z s^edYKU#0cS`  /i" EA< 7;( G   / \=+9  L7 }B {wDp FMu Jc4 ^EaZV644k 2H]/EdK$8zFT&Xs'  .'?& '- }E k ?.g& s\d ee  q6ED t  (c/O"V% e[n g } ( < f NM M_ o!2'.q|Bi$&#4BoSR2{K$W$ 0 W 0 6 %D;g=  i+`z= }= } s g g " ^l uLB8% , 8~K %Iy 'OK x.pF(i(  3\ ^.!/? _'MX -p| z],,#^ G 6 < 1N"?^b ^$V  9"WZ Y %   bzW D&x+)qs ! "k-5&Bt* SP   : ^uR Gl9/b\  }zu) oAG z%Ok S #n) +:+` , k1 h z;HԠKf)Rd%-i Y e2 VVP o  `)t*x3 ,~/ lZ)Tl'.% 1-1)))))))Tr\TSV%l r[( Fm v^gzp61LMIIL= |:dUi%nS{.P0ZX> 5-Z Y z5].4 } C u e . K!  3~^i 3b| @/".XNUN$d(!4M ZF*2@8L 8Y^)/QO(Td2^LY"9u*3)9kvh@$uKF%3$$*$+A  * +AE3TL=`y-%$#< 6 L( "%LNm>#Aw.--:dj C- 3.c kb{:~, sy:6 N) nZ/Y,GO3 O"y  r"\:"e /UF Go<"GV-$Xf.W t>q "&p23&J HpB}^":6  )i c,.9U/c))OUMWAvg)1@"v Y Y J i^g [%) [&s` . MR,c" %&#p]T8F1\b 9k8-]  - In}~:/owNT /" O p+dm 44*'o'x P!ZQ-eF G wQp# #d) '.j+.jA2 W |oUqd\w4-< 3f'';h`0OG?sh@G\< E/lL|C9uLf p C! p qGi%ls$ |Y*n h^?nBb<d4'U 8J<Z"Z -  I< F[ )JQS Eue\F' g)))))))- 8 {!= b"Ky"1I f!; i  Gc# >N6eN$1 SS$N$1)8! { O '~ 3 St81- ' S/PBM$i_# }`4g,4 &%3+w(*w-b},<",D&MV -^e$$e 'uvuv[Y uuuy6Pa3U #)^M7CWAdA8T %"Ow HT pE \ 6Da4#73s3sUU=@!e_CP|nA**** ! . (]:s SS C5dSAI5d5qqq$$SS $ }hd;2 {L(m4y>tyK[,w 5o sKb17i|;AK Fey[eM M -'~ *ymZ !K _T`4`4 R#9Q98qww8*[a]>"5 v 14EU~HTsleN<U#T( $k _}q<\~ X0 4 $ e ;Cb{; #KA%*_*UW_9_e(+,M,M*19!} : RIoyB3I+VD]3;uZ{o}o>}ri6DQA0"SI9 -K'3 }um,/,/,/,/,/,/,/w C};rv+W1/}|u!!!utQoIe A +@YQ+Y $Qyi 1NTU` $ iC)n C{( A w   ?  JGF*)wp ^?3\K '1}9 h  rd  -Ol 1J My If) f3  ' $3: a2 "; S<.'( (( R$ $$ R" *""6F} [ 4 !"MF""w. N8 g  -wX,q;iz% z{m \n~w E! |]7l6LMcZ w ?] @B(N V je 9c  J~ Sta D q q S3jt sHbbY#c Bwp5uhGC[SzU"Bqg L jF 9TIx Ij{)d__2UU[$(3 quV cp= 8 ZWg\j u -7, ! & R  +  K .a | r6WN68 <#Q"=l/Va 1', " !uR'MdS77Vk-0-0-0-0-0-0-0dOG77%Tq!<6! jsi!eg8"PJ[drmmm?IMKc|#%Ht]#T-dOs ; m< 3:( $<X ( = n L 8  Z}j@{999@-H(-.DVDc :N :!l$7$<ud4y.]|$d"#tR&O4#LClD kh !  iywc)| t Q)=ONB0_#3~ C{Ձ^!C 5/>u{< m5c$![^b%5b!/(8]$7h_g*+XO:;:0g9\%1'%{{{{CHyyyyllpmmo\n]c!?KlLT$w+*;@''|(8@kXx9R'9wSk($@WXd=?.?>=?0LML}E%DDhD>:=>==r7a7=o>   %EJHb +|c&z?0O  P+&԰=   +@^ 3/E[t+G+D&9oP) DSv3tl K OwP)P' Eqqo)wv z <C #%S%S&"b##%j#"b#?:%=.-C%S3I* $[/JJ$JYgR@s""cA  i^,(JV=?$Lu "!/#]\? y ~ :_O% z2VRzV 2e V$#%&'f&(!# ~F L*4B-0M& 3_\.&EL  4?1p Y wä]s,'I$J VCO!qBW",''1&,&>>LLKKPP::HHGIMMJIE6K x<;0LPN}#*?T/T"""vvvv{{{{ % % % % kk b_ XU ^[ _\e *3(,  _^FX g iJ,W89Y:;XH9Y:;* iJ, hI T`abcabbcR T S ]ijkljkkl[ ] \ W YM >  Y XO8)2K99)8x)2-9l)%8#z 9t.p|7P4 DŅE C"){,}!%iYg(V-1yD}PRA큤AA큤AA큤A큤A큤A큤AA큤큤큤큤AA큤A큤A큤A큤A큤A큤fffe e ffffffffffffffffffffffffffffffffffffffffffe e e e e e e e e e fe e e e fe fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe e e e e e e e e e e e e e e e e e e e e e e e e e e e e fe fe fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e318f59ed9fb8a37a620df13243ef30d1e2e0814d7a477e13f7d48ccec53dccdf97768b84bb5ef60388e78f1ab8328891139705aac2ccf015f257e5fcf1eedca523f93a500c802da8bb6fa8403fd483579b95281517eac6cdec3f3bb7826315dfde26fa699731dd9be757c11c8c7e91768cd09d553b4e4d476a583704b4306ec1235a5bb1edb263a9deb1503e770c6061d53fad13e43a9fe0762bd0b217c5ae6dc7e5e9e7ae0de19d9c3d50253e153c1205d007e0e18c89480f82b407c01bf6148f928edf06d287d31958bcfbcf03913ba1d1ce788a90ee65b14e8e7e262df1a8e7422ac2d0c9aac7cd2e8b720302625fff4e113c666f68f4c81642cc7bb17b7ab69506294ea51184d0605dddcdd756030a4a928a4ed6096de20b56956d228a32eb5ad60214960b116f1ba4f7c64895f849ac7ad4f2d8e90d295c2cd3d1acda53fd0512d33c02a2c179033e1816e33a952fc9fccfafb5feefe383291b84b105546fe32c53febca350fc3a67e75771d70c2283aca8198d5a8582339f43d1ef5909ae49398af59a3c3084a77a87001d422cca9c074d80c7909604b63708dd953c4adf759fd9346c80f79602f8288e3adeeb846e57895c9718112861bcc45013a56bf999f35a7fab3009f8dc1400c6b9a132e2558b24d2606dd9d3da29a0229ad477297a30ec347a11636b4f8ce1b276df9205eed7fa3109ecd6e4444a897c02bf7d1993562a2d21884fafeeab524c6cad80818b44c3657ad9ccba0df592a21d166744aaa9ed4e61a33e0f81a395917f534161660fc0dc35456210d006d1cbae89ac99342aed2a3a5a65a7775bc5e96ae34e4738cb7758853c14e3753efa5e168aee3ccc4e4ad64c942fa0d6c66d0470abc4721fc0de4ff4a9c68dc1fe0a0d8c32c80bd6d016b21fe24e10debded0b7dcf91488162010dde534d05494a0a54b797606d7514453ef21cb4ed1717e2ed144af1b70700701023953f52ae9934e8750c7a865ca1a18da51aeebb1717558bea620b69ab04b0ee746311e46322f10a40e8acb3c4383beb711b9641a88bd8d45c331127c51cca1f68211d043a26bb6cbad02666ec74ec979ba38e7895e242017d3eb05c25dceccb62c008ab1b202647ee421464ba1b958320ed91d0bf11a3cdf008a35aa2391bac2b8dd5cebf058e948266e38c50a76bd5fc43dd74f2bd550aebf5b76e950826cbe044a8a9d6aaf2147e6735a605ad427a30f40f6b999dc82465ded1e19d1c2279190bfbaa8ff65b6cee2edac8b9185b7b7058afb1b6187fae0d1d83d189af7ba22cd6e71169555d4c53923ee10ac1fcf44f219af23129ba08d0ac8d39c31d2ada834ce7856737a2f153a179438302384d389590d101e1781134edba2cdb0cb3836f9881a55c3decb3744b967b3a32f9cefef7da25fbfdeb97cba11e09b5bcf3a503eda6e2b01a49f519b1aa233e6d08479759539bc1ce0c0635980de1502d469dc27c607815902181e85a9315a75d0d09adc07397186de0b7620311b31f31b075002150adefde043e0628c8b7e15581688ed5f799edb51d0d2cde694219bc62a1a17059bccde2548099b6ed5df734cc43c4566f3e6906f2aab179ddf1525223b37751b4b9d38b4d524fae9628a82fe18dbdd33cb840ce8767f1e121fa7b51faccf35f48412fe204bbe91d18afc357e8e09f79f6b9691a25aa1dbee3d092a0e50dbf1ffce586d901bf3b2e4b58b658c78bb955385ba2e37a3a73f6d59a17d97e7379246097cbdd5d22b2a713293d30509fec8fb7b696395708d78f47b9c333e9db20cf510625bf3fc9e672caa01171c10d1d723782b694e19c85d0de606ba03ddc60179e3340ab837780095139cda01be63095c9c89a0afe0486510a7a2524827ff4b35e5ed2d915e08e7dd59c7308fbe2bde11bcb5a3fb81f9569880ee6d7d41de8efb3a57da234d4310785d1435ce6f9594bf03febd021817db705c4c667aae74cf2b29cb0e3cb7f9c7bba90451714af176ffd5e67d82e7a1ce0d0407095351465e3f96cb43d4e6a89297cdf8a6dbd7c335499a6d00d64bf0bcb7b79fc6b78e88c2c49b4701784a20c202f51f5db2f7c7c0161313251242c5ddaac610529be822202236ae3fa44d467c63400828df15e6c6806cc71e7a460cd3ea4088a8f28e6e4a4e0ee69a33da207edf96e50fa47cd663c8ac39bb110c11746f95633e882db99eb96e453389aa5a7a792b4e8e23183dce862755a7199ad6f4d8c7a32bb2ed4ae18955db98a439619fcecbeb47c04257dc165e4a1bde0d24bc81f298bd3943b34b37f4ba76d08d8384d55b0a899b13197fa8693717d1456aa9375361e12fc6be02e19590066e9e4f6394e1e1134ee509b54260d0f0ad9a26d389a0115fa9e3aedced28f8900a2f68f91c938c81de9c17eeafa98fe156368902550af9f42cea93020ef6f75af28290ae44e100604c56d095a7f9515d0f12c0c18b64114c7a32fec802e5972cbcc903ca684cc4fa89e72a15eead4225d1f77141760d41684344ebc809d772cbca13c23da79ce1de673d68f1179fb57fe5a0a501d793be00e725f6dd079edea01bd45de697f815f9e1435270764c7796201e8d6ab2234590e61d56ef328d2dedd0c18ffaea5d9124c0ff27ecfa2453680df1eb5ee23e5c7f655cac71799feecbf80abdee2868ce66af6a50ac263401fd8f6193a8f0334977a388b108d5a79a2c35add7391d6d79ad1d5093b29cea241f90521ee42186e7ba7832f259cd5d5583416f3d57508f8840985fa5347463827630fc1693c87596d96998990ca79035d58f83a1b62cdbabe4a8ccb8c3cbb578066012435145befd4b0b5fd645e366405e5db42d915b3852613f129d662ea77af9d17d43541006c693f9421d96499642b64e9fb9ed6b051def30ddc0e0f590ca26dfabe73eed9eb38f82fbb1cca5bcca7cf76380d65829494127502c6e8faf48e6aff6592e93ad6c25a8554d33f71a30cd89aca5fe2036545de69a06c1bd3a19cce433be82d3c04b49240f12469126323d6e18ea105c63c2c24debc29d8a06aebb377c734f42a7947418ac9e806bc8c7491def7cdfd5f69f596dea8d58dc28106ced0cf5d550c10deb32fbb1ca81cbdb6458190b3e89c5a22e41cc1aee79fc35e9cf2e03f9aeba60e2873be2bc61074e5c6d4695d2f4318519e292c883b44286c5ea1d5049d7f28dbfa9ce198f50f99dee0eadfb2c395808a9ca094dd10e1f9192e18ab5fae755e6c275ec4cef624526f5dd5f72ed46652a4ae9dd8a0f926b6ec4fa4f7cf4f63107fa3376b898e7f13a59ecf28cc25dbcb8ab837616c8d2e6d1233513de4bfde2e5ec14f057564fcf514e7479ce29fa90d1db738613b5f137d2afc3f7ee0d8e2f720c39d685ed7ddb3f5cc0ae018c25a6c131501e07c316eaf33d80d167039da672ba5a6185e38f3225fb4f77a908a19aa6be299d13e266bf4580344c0522057e53bcdb1ce1240e41354051fe04a3e2e56cb922f318bb8b8944a69c957cb3cda618f131775ad4ad9acfaf74570e74f982bf02011476b2c12578433ef9e1eb66a165040694843cccf7d2f3f915b3df4085f2fd5224d8f18f75e88f5152538c96c3ca8ed36535a2506fb1eb941a0b2ca0603c038597b04aa391c543e47b2ed53f28945a6ac2c60395a630cbda09ca9d08a8adbd49b4f017dd97c0926a89ea09fb740886b9c7251aebbe07141168f329a1d7e85f5b18111bfd6e414df29db75b8f9cee7452c54d854ef371b8827bf2bc00dddcdcbedc37cee057684da49aef4dc10f6810438acd4c455b3f7dbe1c7f5305409f7405329d376139c6b193a44c0ab91a9dde27c8f41d7661c34049dd8534aeadc13c2e9f5fd40668d1afe6f0a99b058803640f4dec0350979b6da49846ab6fe355d22f4e1d1f60c54fe55f7c5e8a101c71e01d3848c15955c5605b0b420e9565e704459992f0bb98e9fdd12eb471476a6a3d228e943beeb36929f7d8f5db744fb837205d7cf0725ece3326d87ff3232061d6864423a9937cf677d4b844ff0765b5bc6318573abd953220bb5abeec13bbcea0ac44533461bce13223f3e2004e1fc60bd9f89a49525be85211de24bfe4b9c1914a5931e0b98780ce6ed29c3b8be92523d039e84d5aa63c67b79c3001d313a710ded19a62ffdf1a7498f8e54b83d8c1b843eb265d97ed7401f438423283e6a51b3e8cd0fe87e9f1b02f29a6b251050fe40ba4f8320a472461f4d43cc9b6bc9bf3ef534cc8fc25a1795888e65d20fbb298647feeb83362e0d0b8903210e6a172945e083b9c0a1c9aef2383dbbf4de6879a8e962231555c09f2753170881dbdaa46fe333f686d08bc6916cea9fdc9ffc944afdaf9716ef4dddc883a804b41b12fa0e4a1d4f0cd21efad92655a7a0dc0c746d02700c7456e5a2617ede8263c45415d750048b98f746d9de0378905c0cf70cf81eceb2babf2b0d96c892a650ea4dcc1ded3fcbdfef603787819357dc2743e4042bedfb8e8b5df47d43c0ebd0d662d9be6959a9ebf14c082ac8329b074af9dd2824bb5d7e19a254c6eaa778ed03d5f49ceca9ce9189dd5b7aa383bce67ec00024dfe6b1a56387838766682ee2bc2fbce3fa7157ce5e8cb7e1c5f7b87538d143e18a0daaa4fa4ad08d8df4133beb98042253b9d05e39d1d6bc78ad2e8825570ae6d9aa69d2c7beee57569887a93636229605a103b6133eb476816332eb48c6b7ea4342c0002f5e7e1833eefb88a165c3459fd5932a84325add5b802ee89fb611a648619b9c3bbaa96b40c273a122b4a9c6ddc1b720e0a1fa8d5c2553edf6fb0a06120316f28562d420442afd644d2b1ddd3e604c2dbc64897c5930e554ca33e4d6789a8b3ac4f616226872845f1916c263b98d20d50825bacb25f45f45a5f4503031569c16cc14d0ba43b131ef6127849386cd06e4bd4243c65a2986deaf0af4f863d660152882490a2e117b1fa36bc081a3147ffef8afd8785a4d74eff2afe47ed3d3d29d6976fe761b3f2d087ddab0e898e1980f99a400c1fc029367598848cfd1284d9a35babd30c0b3285b4fbecef43ee33a1b9590e17de1cced7f3afcbaf430e2584aa7beebddc656b79000d0d94e9d06310ebf79673f23c3bf16821a989148729adf4ea5c0c3cc8dd4c0fe979b1c1b77ec44536ad6a57efbf5641c7b8ed4805c09a64976cc6767bd435147bea7ecac49c1fd366a42085dd647481ae082258eb66086d9ba4e4ac0fb7b6a685b3bbba2129256b0ca2749f0be9c0f0c717eee6f739beb735991c3042c2987f0f885c9c89815142016a27e5aa35b9e260a6fe6ff34a1e722e958b11dca9d3c50fa55089108f475aa6d004078e7b6d6e02dff942b79636134c1e946c677b4520de4f03d2c516d968c0338022e740ab4a60d8de2f080f2ba208fbe74a204f1ba980822c835ada81aa8924cf35b876f7bd3b7a00c06d80bbb82b03a0476eddc3582eb96ca15039e87800f9e90a69a0193381795a18c7c252b1f1875578383030c86622f36b79d25cbd0149353268719f78f3eee887c46f247e46ae5ee2830619b7b7e2887f0dae002b706e4edfdb3736e6dadd2548c54be04bddb8edc71b5695b8a8345828adb62c9c501d82053b815cb4521bd9440c042111bb712709b61639bf33c95d85961c0a8e4c51796f75e7ea6a60f5ca66c03a9a435ae773da2116b03b9e0f0f6899e636ec6708acf08c37b9c6ffce20cb4a7474abaef475702ebe7c1cc4371d0a0d6874386321888cad4b9709d0fb15c5d1490594fe83b3119512a6a7b62f9ef3c91c13027a57b36c17829d3bf142f9601b72deba98786942854a451b8d456a364a7c72ad7b0b0fc0e218b7a17ae441d88f3adee5eb3821d28f55959a3e7ece0fc19416efb457f4f9314bb20ca10984d2cb7f7a1ec4b1d07793bd81cf5f4d34f4ff7654d281550c544befc85065c22a2cb455249284e70f64f3aa82bf6e8ecffa9d229a51ae143de65d640ac40e7a174e182992f3757ca657ccccd1eb6a71ef0906eb22302d50b98e5cb442d9bc6984e72f82ed5f163f2b9bf6ced2753a410a637511b6e3bcf1f425a177982e4112c881484bd61b9debce74de22166ec455537d3f53b2ac1cbe2cd5fcb9fa03fd888b45c2b9ae2d7db7c5f16719638406407d1e64f45f7270503afcdeeba48d362765adadafebc2b9e8308934331703d31fd9610c7c24a88874abf43d18c15f07f413b3332fb505370ef1ec9acb67a8ba0aecf65827d72c83a5704bfc78bfde250fd15f0faa749164db5024830d48f6d47a29e28a6773105a973464d358a8c96682b1e9d4d2f0af4386db4c686bbb264f586e0fbadf8c2fe99961369cf9288336d88255bdf452ea4fc43f9cc2d84aa420b95b4fc0326669d44ac0154734a0b702f3f2f331f318341ade61c4bef8089e78367b08772bb04a45482cd459a421d954f1bde672734b7c980ce09520309b788fc75313885fd02dd3173591e125e4043db0bcc911a3466fe3f9ff5343e765ca3ca7bf77ac9946daa4cbe68e8a8fba544d5b983315a984cef7d78590f4ca622bd8be58401d20bc9cf04ceec81ed99ae865b276d52baad6186c8206c729fc42d5cf5af3ff994e645d5288fb3e618d340516d57ede869e2966173edb933df933c1888c3d917532f5249e12a702ae63771521b36b618572a566b18d1386e68cac7f9812e6631647234d35ca4180d5ee9cbbad1ed92a1244e8c625d25153d9f655253b8a35805d2adad4da45fb8b90d9e7b8b7724ebec88b77e8026d9199e1a5c127ead7976b89d87d9c276aefce3e5466499061f15c67a294abb11a42e07d1e7abd77b8b0582166415553f30964483a0049af61cd1191c5afed6517e0a9a7e76bbe866cdaeef156989e7d376003d1d9332aaf83120920e17a485aea3ae798e91ddffce349b1a4dde1f5b2e9e8aa9e494faf3ab52a0dbd678e87d60e905bb6c9513418862796660bcc7c142971c2798373617b6054cfff657adee0a80a9f7aa9a2ac7947d923a15bc82f0275d8ee06e7d05ad67fec8bd1440c3bb7796216c1f0cd53852971f75df7c9c3d7dc5bfb857242eb226829dcd7be2a7cfe876e993c55525b6d095940cac7f7bea228ed07fb984431ad92bd8382ed034e1f130d0b74f75e0652726bed7d7ec9472b70e19d67f264be62d0742136c84c9ee92d9bdb653b8c5356d213903b463002e3ad59a15dc4904e05ce35fa372f57089f9634fefc142d31986eb2a5e986621aabdbe10c0c33fdd1c1735a22c7986d7a191359607ea0cf7526c8abb21702e03a5b64c895754a9e366925e2b892963e068ea394b765127fffa094af1522e98fe86be3fc421269423c888591a5ce7f39112dc1c5c08d361b5eb6eb00c973a70844e9b4eebc98a5e245b181b80d4795f17d2386f93e69b0d05288ae4ab9e25e4eaf1401f185d15f2a949eaa1d3512a949a474deb897c9656c1b8be10079cce29ba3324a5679aa0f5d8549a944ff6cda2f6ff15ebf806029b85ca093aef54d7ab2bbfe1a2c953546b3c8778f801b7fe5357ad5db5230e773cbb2985350c7b1b27fb38e9f89f20a2da05d04aaba34d9beba242959f7323d62c7e475d4e8eeb7a79afbbd716d61d52449ab8dc174ca175815364f4f6212d9cd6b82f19901d11c94462f611bc0e743f0651d27bc2c1b16235b25f4c17c7c054840a50758c6d9e951efed96ffd6b33f84e0d62263b539459a8e359c7ef2a433233bdc0b96eef2f5999b3420f95c2a416162aec1f490de41ad755748cfc9281009b980aec05bf233d8fc91a998e183615b808b6edf792fa5ea4291a99a90609c2e00c041145115742bb12493a065597924858b7d7c57645e9991e498f0894a8f6f6d68979bbe173652a6eadb79a37324985294eb724843d7bb9518962490d87b93de9e83d68a294dafa70ad3ff548be9076d66431a76f1d48355294d333cb6fe7c340fa5c7400e2d79fdb6185ba46db795be7e8a5c4ce88143ec72336e5343d41f1f699cdb5484d8188efd284788ae59d77ab29ec09468c97fb419efac60003663540f84594344430f5173302da7b2e04f333efedafdd648ffce53178ad4a7adc389b97b6cc4719f69b8418ece121f3ad37bd717aaec93c5e8de0541d7ef6399c76899602e861a6b343ae06c55e67ba6d31c144113d76ed03eaa4258a1f09c0887614264b54617ba8983ca7e339dab806fbcd17ea4ffac4719d33a240fc2465af5870cb62f63d53f5535d9da76d7ad5bd86d429f120dd9acb9212c135ad164894083d0fdf08a8789188d6c42c3bc524878b66818cea37075179089c3c49c3b1e8456ea5123ff6cfe8ed6cbfbf32d5ac76722e199b0e50295bfc9497b8ec2dff8d07645bd99fd7090d581cadd7a420a959f48e5cd94770266214c4bf91e85983bdf26a2ba3324aea0968ae6d834212fca6f80c8b7d1fd1c83921585535f82e45821ac3aba11d91de680ec392204b84a2539382ab9d6d107b37a2e9e4c7d71f44056f1591b65df34f898979ddc143c8b30324d8dd9751735f55eb9802d0e245ca0ea13c57d98e26459fefbde3b4e160ed1e95ede3cff6efa35d0877a5df71dd0e17da1ce952c1718a910116c81515f9a6863c8dbc7a934a98d58e88bd07dcb5a96b45fd11f1e7bde8615bf4166ed746a0464540c310e36fe638b02c6edb6f12b7e679cbf66dd49165610676f746c38b8a0e5a4fad04770179b0862ca32d047e42e7247c672550e77f0b65c04683477f7aa8d7bc8cf3f2f8b5144ae1e85cae6b0fb254943b13833b54f98c87a71255e998c9a1203362f7f08fe2d58646bc8c7aa98fbdbc19bea3c60616d39e5047b7d6d8fe8f3f288ce9948742570d7dc5faa10cbe5840512f3cb50cb5d8d6ae0c1ca4876bd8c7907f44e68315fa604b3c5b45b0785d0d4df1de441077f1dd7498f0b9917f5267ade7ea97bf97d1c3c8d5c0842b1aea9aa2d8a5178e3493221a9ac748d3ff30de3fbe8793f08a3d1fa0ae849b234002c28b0a3eb079e7e5dd7359a37e07cda1bf4d5dbc8ffc73a0c53498a9696afdc57b745911adb6d9cd08ee1d5854189daff97519cbc8462bf190a8acb1131d369b0aa57f503677a2c1fd7c3cefeaa668d62ee22af43397a773ea6a4550c2c8cb2c6da9a94971f7ec54391f1c13af0a8a50f5e63ddb8888124fe9caa306bab422bf9dd7248fc9831fb6bf88e093a456d90162eb9283d80c4daf84341442513e18ecfd51e26a698ef91cb25851042695cb10d14b0fa5c40c3da02ebe3cefc03a70ed3a91fd59cc987fba133cab59dddd9596d9daeab328184747920b2af991c87bcdd066c582882f1463a6d4114f3648282de8fab836d642798ea6a3e740b40da05dca35bed270f4d3b8b9a5531d9db7ea7b57a792443692f74911fefa22d72dbacb28a29426862bd40a926ec15bea7cbfbc0b72f361823a77257d16d45faf887aa7fadd9479cab7e8b0a41f72b8ff1f2821250a80b356971bcc15167c7c8bac8a59029e5657acc520a644a658cc603337c3f6ee60825d26d42132a632248f540020b5cdae4189277ea938d42431a0dba95e8e5ed2d7ca88ef539ed7bc71e315f54f04a4fa63e3ea0f3ec64e973e2e851f04d8f42845ff433c64ceba95a8d498e8c34105e5f4c353a5044c9b6b8c920c5da0a285f806cf7800974658861189a650871f1b247f2df7c655e76b0b5b1f4b6bbefe4168114fdc51648e85eb31da1b836a9b2bfb3e822895aaa50715d3303517ee40e920dcc78008aad071e2b17dcadef0c08f2c53bb02de629c735225b6cb252eeeef3d972bac4425493dd485aa6e4c9964aa269f793e2c881b38d27ed393d7cb0985aee9d8fe31090cea805032a8312673947f2180059a72b8afa88fe4c0f7a8f213d0bcb6c6cc31c2de9123b2ebb9bcc5ca9c4c77a5cff9ea10d40951df053aaf17367da3441f46264582e9e05637a4c0e15a17c078708ea6f5d6363ca32e79df79090529c19a319f2c25a11867c368bd942a42b790b5f41ccae61ecc8fa2021817fba40faf2215dc91b7f46f9a9618716e264957579c328243724942a582b7589ab4f15d9dc9bd12435bc114500990c8875eb28f03ff2b3857cb3fe27ff235b51997703556eedcedb0e4c5d09066177f3ea4bc24f970ffc5fb70c7fe189d49a589a73a4e193851c9e7f890ef9db09e48a2313e8ad0444e5256728cbacb2424d1c84ae4f55ac934721fed2fc5fc71f900d7d84303e82d56b1e2ad6e5bca00ca71a26e5abc36ba8e9c0cbb99a64eea53032b1eb883c27e2d17b2b5beeb306175a248bc888181e6ca9a1fcbeec89bee53b32df9be4dfb6ac90433f52f440ace0e3b8c19391d6d4b218b96647462789c4e76a2a7467c368acfdc98cb9178a3e773f50f37b83885cbce18d4d633af083f78b732da99ec086f4aeded8ef72e2f951e5ea29656273b3d5de872e629954cab8def682fc98923791b2e9222bfa2fd0fe3924974865ea12c0edc93cc5c3f5c44076f890d3f3ca74776951b16c3f7add4414d5e80478cfd2235d944d10e7ff714b55ac9b3ce5d2cac0873858abee3d01cca8f34f5e67191276eca5322077701b0796b2a3e55fbbc87534d6af1c40396a338b513d5fb9540a042c8958a464a092edcbee7187c43534743f90446ac4c279d176796991c2f7cfbae3c4844a25adaed51049a7c627d553b54a76a185f99131dda65609cbf280ea2e29c0ad301c5f752ddca62ad209821a91d50f741f3b8fd3b637491164c33503472fdc6bb6df7229f6c45014ff31de18479aa181b3370be88e39bfa101e3e79f3bbca7c985796f5deb74138876b3ffe89d4a67469f97fa099523ccd73e8c8ba4f2055f3f2d1ae475e8c70fe9dcb51bd262a51d30b6f8ff467e3db0126b94b850d41e137830995cffd97b80644399e589dfc05ccaeec167f991b32b3850029ac27d73f964602edbb06a83028043243b6f4ef29fe67f73ec6d6a5f02f285cfb8c141a180b835c75b140d3b039bcd7a182aaa1629e043ae3a0c8825a6968db6d3674b5ed9b12d81ae489ae612be24c963924e86ec9ddc97a9a0e185166528f6ae5cc69c00db1928f2d9e94228eb26786bd3e6515811df9f83f9b8965f5e2d8fba0fec60600a30dce161372da30c5671093f97731a862a4eb9224049c3b4703cba2ae2b6e29e61d0ca31561ee93e7e13d2123e64c6f76780e13eb3595656fb9a335e8769613c487d7de71fe8e546e190b4a668debc837468399b90ddf51aa4ee0e4f33e1d8b1c731cc24d89d2c715cc07afecb9ccb706c9c853bd4d57fffc6d1eba94a2d2a1c7d16cb195b395495a2d98d2d834993dfecbea9eb0264ced4be51e36938279ac129191c66bf6caa31501898f0c2ab055669fc01bd4da1238f6d9fad1022c08edf74dff65671df9dc4adcb52f0c981210bcfa1899a31c51983c24f9b78644da26efb9aa656fbf9b173be37126eaa8d20d0b99d690fbdd1bc676b06a8f0ac18b7d0c0a36ee1877a168e0518df95161a3dbc862b6937805209b115b13ee2ba2fff2c6712ff39304db701c4586f7752bed16ecd8c3ee339540a492780b5b7438bcbb4677bf8c25ab98dbcfbf63f7f1b2f02d11fbda2b3459fcf02b722918cdc32a34d89ada5959f50ba1e5ce1590abe9b625dd01884a7f959bad5e47a8fdcd875a4e33adfa422eb384293a863718449d793c6a82ce79eb6f3111426b6eb4e9eb86786b74a92f725524a97dae924a316be88d91ba75a9ba9c9cc94e1cb14228fa92d8c9121ff1696b55212149c9afd254d9a571561a219cc48db0cbad911d27eec8ef8d5cb77448323353e3601825059ebe7c84af52721bfdc4e85735dffad4de76b3c3368058b5db33d8f2a0fc238d9799edd323b5e3c5400e13e88e23843ed0972a3c2a1519a87c1d7ba6bb56d8684d2a70e4f7c7b422ab1c829b99c1a1da549eb3b6bbc5f96091f7589d92cbb16c660afca6b4d3dcb583ad647e8edc84bdd691b9fddb7ae20f2d7e6943bfaf8ab9346f07427d7c293950db587d7d2d7f3340176e82fb8e1556a3c0c012cd474065c634ba87cd7165144cff3b42aa6dfb709e71b16eaa51bf2fd775fda6d9965af9d1b8e73f5add8d9abd6f37ebe801fe216b57242a43ef16e83e577815c53290b0d3d3f31eece396119e8d678fce9cea8fdc3fc5322515b583c85788e4e276a50eadd1cfe739ff9c380d8bfb44da60eaa51fee4bb55ff3b796783995ab3e87d52e6d0bb9ab2092994d467c913db7fd800b5cb0d0cc4bf9a40be1475c3699549036c5375f4b421ad31c11036191f2e8866d4bc4dd76d5f1193743e31120571e9e7eed04779d4a748e3c8fcb6ad04803a6f295f9133b88f543f7ade39b8968c4d02795a1d4fc97bd5657d00a30080fbb9fc58b8d119ea43521cdf0ff61ffe40f58eba270ce14bda9355f069200d10ceea271326e045f5c4f8f12a1d7135f6f719817dd421a4359cf54c72fc8bccc1a9c54c5767af5749edb0a7ceb2fc2600f11c20d592cad7ea4436eacefb8faa3d9a0712b1cf14b572e012e8903bc02c6d9c059bb58f8561d87c16309bc07d6bcfb8bf957f6706181a639155701de5b4cc8112a141fe4f850446221e7165e4b1819738cdf94b95003b143f92cfdea0850dcc99a421831aff8499c89aba39cee589e967d4d1a5b7a47137c5ae9ab3a2ec2226ba90f33c0e169048b40abcc748e049154cc287acb01e48a39c6d0b49ae00071ff9621c6f7fdbdb9417fc3de940ff56a8996a8a58a99bf278809e4f4c8bb28651b797500f0fa0efbccb22fae4deb1673dca856ecbd2f8b13450c70b3818a647d5e496a27c144e45132d1530e07b966b4f4295aa0cdef748cfa725eb7ca4853c0168c8436066390e688ce4e862996f1b84f3333e3792d774f6d0c33f6cab5f063edfe824a8467da1679153efbd0f75ff3e703cee14ce95418b70ffe99cac624ab595a9cd1918932311c26402163ba63973e3a97234ca6166e810b068ffd2351c5a0a339b217ab9db041356d3008bb84bb8d3c08146cc371318af09d8dc6c1a2be1da15e436fefe795f2f642b5bafe1837d42572d1daea4db696d28ae39c5cc523fd40ddabe9e9fc96e2b4459a9f9dc8d89f4019472f8d0f8bfbcc6b55fa0530642446070f83daa79d075ea734c455e0812b02bbbc9b38c261c1606ad3c384d4bb23f9bd338758aaf791a28468f12088fb135d73cc5a6733fc103ac54763c6615252619fc89b08db79f89d6e87320039581da1cd908c45aa27070a70243de815a2fb243fa4e5c12ba2a49cd1c378752cc53690a81763c278899333d8d36d6d2ff8d60a25b88ed88397bb6fe1d4567cc0c675911cbe6a6f0c9e2d9829008eda311a9f66eca00cef443e16a63958c667372e3a9e29fbd98e70e4d3517d9ee3c0308c7777b2bfa6764e643d910d9555003d1410bb7c971ba52c738b30163595d41d9bb8c56227cca6f1c6bbee94d03f07558c8850a882430ceecf0d66b0e07e39f44fbc75a7e4a0e666a66f2eae27fb85d08b80c12ac43ecdd12281da00591e5b2a648f6c201a7dd01ab91fd5658886ef7076e5269d1c3d93065dfd54ededb8615061cd72e8d513311e831826bf1ccaf08ffc26e2dd9bad70fcdf795c3e6f6a98404edd5395649493fbe156644c801ec5d58a435105d35191d64c871f739b898c4fdf79bee25059dfd005c3712bfb97b3ff22cac4d80a07ce82d5d2de5089f402fed057406196f47cc4ad35efabb4464947a5de6143dc84bd0d372ce11cdaef7a1fabdedd015329cd05963ed31af3df0e26ea63f8173bef23ef5efe473525e7902ca169041f2edcac71bdaf466c882f6939bd13ab02d7d259f5b8a97d41aa64d055e051262f5a80a9fefa3b9e184d1006cc53037f94f653d94ed23cffd41c5c32db1f2507101074a94330e204b6493b3b7d6e64cb9c73984bb9ab572ad1fec08fda70d2babb0279f339ad373d57babf3bf25b991cea5dad3ece92a74acfff3fe9d15c2058dcbdf585bcd64152136c4550aabdf1679a8de1ddc7dafab3d21d2a5072d3c0b1c47b9b14f757cf742aa1650b108d32c3227af14740ddcefce19b8a40e621c178c2e6cba683b5d4d73150a81267077059bf4befc1fe079928439c7417c7722cfd1627d09f94b833c166b40f844bd654d26e87be1f20a28b8917bc68effcd95ab258ea2aeb8cb0f0816fb911a9817d6bd882257f07b24df5c39745567f6c94b516f208bcee361b1c6821b91c0b551f0e2c006023d3fc27d8c0983375c0454706aa29bb78aa5114e3ef3582e27205fec57ca7f5b0537bbefb03df7c528725db9eac76eb4fb31d60ab26aacc0189be12cebe323235eb41c871e04e3aff3175c1f2c9fdd1e9021c2f85c4c14d08e78cef4af6e75c13eb10e785a6ab4fb50dceee849a5cce993a677d56a75c4579bcee5241f9e5f1d1d7d17ab23232a9d627c21ae80ed3f8add16546c88d70eb6f80077b8bc7f3055121dfb31cd16641ad085752d8e3204ee64f603ac41bd6bdb235d70e066357d0c35277153af8c43c7ab2acbbcb90be1804dda1e8ad02e885cccf3905ec2d185292ecca390e3279480993f9f70acddc930e3d7ba48e0fabfafd5abd57e04d3461098988cc36a89695becb4a6628000c7443cc6a5cbc633952577fbf5ba0d6170693d28f4ab361f21a978845753d8e684a7e41de0c25ce37078959f2fa3bfd1e0a8a833b89c0b3c6a8f5f9f7a6c498bca85d011f848fd5204e868459d8976be32cf5d3537f79228da491b8e5a0dc5f784a247b003bd5a808bce2135c71509e9c937795cf6e97dd06023f7afa7dd790a6328c2a1e9dc54bc2fb2d2ed4a8d5e8677a2d69a4fb6f2642c46f0afca0c8f0eb00ab0652e3fb9a3376437009955191009461723dec71f1c1978b5cc823b795d0f402c2a93b212ff944e3a38b6a0d6af2325c17fbe3a6bbfcb425efa247b669d46b6c08ee634c176c99506f52f536b9e1930ef087c1c4599637ff943fd13cbaf6e5e1c61253829eabc37d39588cf63c5f5483d3749a5cb3007ecfe20ea8a06382bc15e054b419e36b9682dce1875bd7d71a3cb47961530e5448c3f4edd58a32724c991fb63fa74c92cfe3565f572cc04ea2434ce0e4598ffc6fd8b9b0b548c6e71ab3f53022797cfe0967844a785c51066dfa01000371a36abe7c7c3a471801b6984f8c559782f4e7f067b5aa513673bdd6fb8543a89ba708c34eb0335f58a4c917ca53066008010f1c74c527d5511be2c5fd7ba4f6b544b049656fb86d3a84ba5e0ced9bffbbbd63a9f65bb1ea62125a35523b477cb3ed2fe62f6472d556d6210535f285336b24f6d777b3b1ab1f7fd2854535d097562d01cfbc185c4a28d22e80fa47ab15cee3fa56b8ba0be79f0ef4c23957e98790c72bf97db64cadeddc3a2668864493daa63ede3d76f8d03950f3b036a9ebb7f55f32a5a3122f5b4a314907e06774e7167e5f6f94ddb81cfd645292d72aa56bc0988f19429398b6b72c05a926e6e94bf057b7c2b64fd700104733cb5405d46b8550c1d1735aedb6071d908ce37e5408a4d1675957fe7091233f86b74e2ba06ec6cb5f426b709e125654b6cb52cb1021eb735d8abb1c5e3845b02b76c1d4693a52b6b8fcc82b860341ea6eee8c9d47e54fcec77f19b4ea7c5faf0638eb4bbc03a20de66dcf8bcbf2a08041a776f033a8e0ed645b7986ae20b723e30c53579e4428bdda4753592d4a60ef34c2fc83a3ba4797ebc626dbb00af11d0514de3a8ff00b7a93ebc62d668f511c76954f68e99e3445fe10cbc18ac8f9b7c478c99a04c85eb4d748121ef2fe52950b8335f6a9cd542dca4703f52d2b0d29f2f5bb3c3b16741b463833424a580d61f7be6f7621a01307399adc154ceab275acb490593d01f475e4295cc3848dba25b843b6323db56ac9c5dc7a7803a77a6423f1c87c701fde1108007549496c889482f03bb1be77edd83a11e65ff3a351d94f46d740011dc3ae5487f463459e9849d1effbbb26d74a4b81a7cd6a65b16cbefccc0bbe1217935205f507b07e1d8de0c6cd3b151d0a0962755dacce619d939ca85fc6dfc737f569d22ca8028007d3a1665c1cea73d2a45e2c10280093c64ebb4e4c9dcabb162e7d6ad49a08a2774c265466a9c97bd2b76c6f2a782ec15ace4328b72a87f1b4b558f324fab6895d4843f1c47e86989d42912f101fa35a97607ac57aef44dd3229103cc858f634a68c3341ebd1ce66f5f9da9968fbffee91fb5096ff0750f4c479090a0c74063107535fb43b0394c6c1e256367256a67398229fc105eb0414c278bfa154832e1832bee44e9e4ed2dcd3f12d7a47c909f2ea33fcfb013b900926ed7c3be692abf6acd3281a3ea2d514ecca523015de4a2d525fa0b246020e4e15e9211e11280ab468805fe9ebb75c83e5997b8113da859b22dae3a6a44b99a485263de97664e6290b8d55bfea680be38a9d2f84ef60194cf57d7f110cf4fced39f4ba122735fa3ecf81653cd01d4387da180aa65f39adf122ee6cf1b61a07d8cf1edfba020db9028edb9b0aca522534b12de9a9ea75d40fef6cd289e96c412f83ba84e6432c14b6928c470cca826c443e214a27c6eb11ecba6abf34c29d408685664a23ee3ceb90724da4500de3d5df7a853ba0620b03b8a41270e20207409a0f8c5663af08d8524edd48354c05d890a98119249d0c796b22a84d1cff74ffd09d0aa1fed06ba4252a700d42b87eb5577d70aed4461acc90bdc5f735bc78994e1b02b2e198706c7e7031b8be60c3a3b3d2cb769dae76537cfb6e31aec565a041c482ab4b853223cf05ecab24e333335569264eb1f30d90f4ba6dedb41616eb0aedc40fe8f2c075db333c8d195e675d2d8e3a02b6beb13689ffc915b9b00321ad00dfa1c1c8ae4eb6cd6b17532f9ac248ab3ddf4966cc1ef08356a5129ae7590edfb8d2b7826bcbb80d72f1cd5d34a898f54371fb5d20f0d2e0b554090febef859a7c602a750bb83c515acb8c5608dda39e0d2fd39e249bd0f781fa2e3d96edc6f1038a92e793a072f9dea12c116c1248d5730fba551f47eb025ce9c9b2e6b9b2f471c4345175696d8784d359d6cad53110158844a2672c1b1c1021785c23b7f079824b95a9ea9256c55ec485086324b482d03163e60389936c7abd83a4160a61d50b4193432ec290c54a0a232f11e29b50ac9a6d3525329bb208a523895e4e23794da65718f1d48f980892c720bc655b0e58ab8b0c1093f97725088791c04d5774e5d6319bf4008b1b4df04a0f181fe2a568e96871a912eab234025cdd1a17d45a719d9dfa9ea644c2ded9fd6042f7f6f16726f03cb0021bb33fc86f56d5211d00d216264b4dc3e336efef7f1d82001269637b217a4c84a21d609abe382bee5d054c6e71ff391a5bca6e53ad8ea00d8d55561d0d5ee1ea5008c9588d5e1a4897ffa4565a9b3b8eb9d3b15497b232ac021f1d0fe0079f327d47103c4b983c38f797b6256acba2717a9f43fa8692cda2bdd4ee73ff159cff5bac5f1b5cabb77e44983a6954f5a0ca2f64dbde82256a052eef32ee29d0c3955a0c8f3ffac8f3e64d0630d10590442a2ec19c937e95332b7201db0242cfb712ac47f4e705a9ca64b136a64a9e3fb311561895179964810bddca6caae619f02177f7afe68e412b2c4e66949ba25ea69ebacdedf10b05a2c088634c239e1d12462aa306da5549a96a34c2df761165fb0ac244126bf1094fd9ded8f81e393b07c4e3b454a7314d28a25ecdefe329da01e3aacf5bbcca5c9de9a4d9ea45790f63f31c7df62b67898e2a4b4689d18a094e139a1abc7d7c4e2ea8081542b79bf9e61432e73c71c5e1c6231293e48748787b89cf411bc18d47d53747ed093b84b9c648d27159b1861fb925e7ce69c64f3cbe5c870675777e7ddbf3dcc292d4f706af3c5f83aeafaf7cf7a1e20c22450968202dd99d751b1ecf195fe9498452168f0322836c16baa25666d7af36771052583731f71232760fef540856794c1fc815a91bd99be8576241c9f1a12bbebc9a1547c49ffc54d923a5f4f5c717fa076ae4cdbf6e1c4608f756065e440809b79556cb68ef81c76155293b8d8387fe34ca1dd202adc984e47e57688ad1ac563f2fd711dab57daf538d985562e3bce9735a21baf47735f228e1614922808c5430159e5af8746c63f8840ae5f09697f8c55cb5fdc8a240fa6b5fe10eac0eeaebd6d0538fa3a4905a684df1ac12f0a46442f468a2dc0b81ce1aa8b7331ab2e0ecdcbc85b0c9b15abd99885582d45e4a8549d71ce685334428dc745b5b5e93dcb7e9469eb7a69c65b03fde98c06fdbc829f3f63447187c9db25fc095429c5c0895149e9ace38ae006a25fd011b068a4fc6c995d6f022a67807e7480d46d4646422fbe9caa1e3e6646a5fe103816c9626cd651c4b9331320d5e4853f86b4ba17975e91d87e9e865c2d5405d6a33727e9e45b9ff7887622f96731e78bcfc3e59337b97a0cbccf7e8a02d92b05f205ddb45900dbd197dcbf6608692a17540590ee03f46b0d647be27dd53668caf5e55dca35a432c00f45e8ed5a06312abb04e938aae875aabbf69c7f0a2f282e339dc732fdc5f286c55a1e3d2d81f8e00bd0bf6488682e00d39dd1fb490c92101f2d26210b9618e739fbfdd2fe7dc906fb723d53ba47d0be463466bac208b5fe8e948de36213236f459f3e07d61c10fff395f835a38a3fd2eee540aa3aa4394941595c9b648c6fb065c665ca79632314b2913c086250687c5680566144d9a1c49c612e2533dc46ad0bb26cc3f0812c34e65600bed6c08aaa7682c9a122fdaadfd640a55146256a87bd9bd9858508a04d5093a33576f32324104514ed01786e43e37490ac06e95e8d4cdc3c65a1f3aa9ca802f1e6c714cf84c1450d516ed70016191c12f820e2dd613a250782e72072f196b5c748e4701f920d3ae45c3bc9a642a07c34a1c410818f10c5673f988bee782cc495cf5f886674d32a2f3247e8a8056e10056a46327fb0c6d402c9dfb0274edc463a75cd1637870b915732318804d385a6c5c150ef83451cf84e85f9d2b2ab57e675cdcfd901d2fd1cd1c590c4150d135bdfbc6d100159752609e7e2e2ba83cb943704cf2ebcf54da28a5bd981a58a5367dd74a75728fe08186ee55effb9b940d237910327705bcb649ba7ee5d2a7e99ce01918ff43d1380891d07f48f154bb161284bbc38550a33ccc623eae92a5fd8b497a193942ac66a9b1e8ba80899e81f21263e86a1d93a925763a81c1cb3badf9608bf9f2bc6ee9ad153e6ecc7e6cdae8f6b31b8b7ffc532ea824d76034d2b4ef12744b545de79a5f49a1a5577aec43103c26221ecbe82e4d19792bc6b9c17da908a5d7127206fe2eefe198110c3dfad98986d5fec00881fef957d16dbb217d508915df32b532c46cb472384bbeceddd6f2e00f5c03e8b9c0e35c55933523d20985664a42e3719950292d3e723be8f8cecc508c6c4a4f42578341d319ec7662cb52c083dad75958b9c932ffbb386f6f31c38db173f99c6b596a7f1ad3b4b97c1736cd20a8da1a4f2bd7c23946661769d90e253ede5f12bdaf35f08b9c14db26c359af6cc92395cf1870b7d6162222a2a87b03d6411a7c6986ef739dc54ea287086eeed17f11bd9341caa38a33571d4b8cf20a792bcbe9d537b73c1d84af1b81418f698b934c8d7166450a9b3e570a41a7ade696112518684007d4b98931906dcfa7ee2a7294afc5932b79548660d5d2b1971c5304c21a16dbc4266a364b42aa6c1c22e1d0712e4cd62d7f7f8798b62eed68a68063e08e4b2d46030e07526b007b293c9ae5dca4ea09dcc215feb6a5f59fa7ce416f2748127713aaeb9382054a677f8a47ec4ccdb6660e978c0091a61f93e759f00f4562d39121d5254b26d46331c3df45e8b7df566a9d4fb118a0cf153451ca513386247a166812d404019f3c49e72a5c209caea151e23e9d8592650098d4183f170b3bb282e6e832584f554be66a4c7800096afbbdb035069f296e7b0d581d4f4f912bdf713c7283f78334f2e9190e737e29e5ff2f3aa4f55ad282643e248c82582479cd00f862272e73ad4ca3172664fd967d4afeda0d9de8e36f9adcad44fdd55947b7be36b187306f5f2758dc411c9f44fdcaeb848f308a08da6a9af14cb5edb0268a0fb580a9cbf377d430445949d84b13ff454c15c8ff03df205d1f8e0d4e28e3982677ea296befbc8053d0ac28018431b1d47f52bb098dfbd36d6d26802fbb398083a9a4dc0386a6dd6881d6bc4d7947fd261f5ffa8036d73eb7fbcc25d5332e55dd32edd7e81822060266333c00eaa742385a7775c1dc4c03a38da23c2737174f2be145ac07f6db71946eb2fcc9f82c5a8f12f1bb12aebcdf76ccd92e292917dfc7be7713f8f55b7f10af546d623e79f91489910da574c70fc4e05e605068314197a2461a2da6e28898f63af734a1db487b47e2a7a1953f9024f0e1919552c03d1b013ab5c2638dca0b32405cabe1f98aeaacefc6863ba84625f559c632c3ad5c8aee68f5909c2e0bed26fc228749533ad151616aeb637f388eb2bb05f1eb856e59b5c63af2de9daf89935d097bf934ca2c96bf44fc41b3b8dc59f0dc0cc57713c93b79eaedd1ee059f603ea9d96bb49b7046f50d721ce8f2db4c8af8c4964bceed4512c78de7328640143bfbf1a0108732500c0fefa4651103ae5c1536efccda5047e69713e7522528d2c567fc073df23e5b691e3435b519a6dfcb31ff5f998d87f9e825295fecef6838ea8e6b08ab264edcbb0bdf9090f426f646c4ea0f1791f7b8a1656cd44d4e3087a6bb61ae1ff4899d871771403339217aab49ceb01541b16b49a8e464a2cdeaa4f525f2048d86d665bbd50158f5862080a9cf376d525a4831f4ef76e07e765ede3c2f8afb128c62ffbed6cef93a54d758a5f67ed75f066be90e81edb12621c2c01d46492d74f4da08c9f0857511a9b616336e09ed22b7b2b0e76ae3a6b8ca51bf252aed5819cace9c4fe23ea32ace6cceeb256bdbc26e38b4200f492071532bf88800643454952fafc500cecc6b51cd1c1ae45b0899a61988ab90006a3ff62cd453625467e88fa86b5e49c99597e8f3b52cd3477dba34a40b55b65028ca509bbe2f474acdc4873d6fcc84694b42cc4f408eba8ee05f99fcaf19141e374256e03bf71083a8de8ed13f9522954544c60decb536bad9b269e84d7760158a31b1a07ee7acaededd1f56f968780b7024772b31668f7be93587eebcb64102d254667ab73fda2a9650f8d728c2738755ce75080b3cd298404f13103513b568c84f134b987c417c33e68b3e1fd6e10b168787d2993173f5f7e51b8bbf2d59fa4e61b06a4097d58e7c0de0de482bdc374dd7539581fa43046d160111cc963826cb28413d55677d065df9a6a4a286fd76451742afa612e84faad5a1b630eb1af5c2676b14edbacc9071519e842e4400068aec176264dc1d978d62325c28b9f8cf68ad88c4deac38bc59529f4421d56d59fac1e8f48838050daaf6350d35ceae2cbcc1afa7287e99021e074cb73c230ac2f6e104838a6c71f5016676322defa20968a4c674e35c0685a783af2036e6c9c58a6f0e342f7ee80d7680c320578e5d7bd708908b85aebc448b281b596adf7ad455d186224ac11bf304fb28b07ec8cad897bf0f835c4e83fe539ad57e410722c6f2ab369df659a3afed89b0861072bb66c535a47e7c41b1a6a0466490560ce357af75fb5332a103c27106c6ba2b63bad2cb22804eb86c8c51094c64b6d52091e227dc676e5749923b9e227c440cc5a932ae76d7ef95f7045e4b78a97b0cf1b1dbf16047d256ba7a744f7d1729f78910e1c798cc77d883cc0cad4ade79223eb75193754b27ebcb4c00262f75080a7ae99d9f02df7af29f454b431a27e9a78110cc9277a46c719915bbd7fc6454750a085a2c6cdfa43e24fb399fc1889fc78119545edce87f55f771912163c528750802ab281c6a2bbaa2d2308d9b870d54236b7ce16ba82a4ffb8d5bb6c6bf89c5a498baf0c72856b51a090e8a58160b5d391d9df1b268487ab4dbb44301b8d1780948b4b73b6137dcc19fe00f52ec0636310c5d4851caea8a5c327ce9c3e2340087cad67229e5913938b90f1d8e3ed43b180e4d77566db2fef4eec9d14175602c57d7a8402aa2796712ba1dfedd5dfbf76625a145f23867adacfd61f4a9cc0e2e3a44d0d959e77bc23999a1c9352736b4c18e8d5381e83f04b788d20440cf5a8adb4e722c589eb2b564eb2d85e618c036ebca32bd47f6a2751d03d45410406d0020046fd738176ebb10ea47bd06f8166a3a7a223d30e60ee343d285abf3ded41b203564d1e58efff605970cf45382533fa3e0aedcc19a2334cf5bed012b1e1f0bfc51341e06b4aa3b7ec1fd493213e0e3c07480420c135599f4950d145700ebed5a67bd9bf62c90a6afe4028042220397da6557e236cf0c9a7c1172f0bba17847026074d35d93f8ccd82092deba45773fa44e48ec0665aa14c82b15618144c5586706da3d53313cab796d7ac227917076baf95021d51251188cf0cbd2e4d32bf00b741b1fd1777c2aa47855f578f4f95af3ed07457d177aebe81e9f368567cd43a20179fe9e0bfa5b3ee79b647641e3b36aca03e734a97ac618cdd1bbf77547575b40d20294db3f4fac76f4212fdfa6a0741f379014ec7ef37c0b6c62209a5f76ae859f7a990826f8c58a66111c71a7ff469f8bc30b4d09a864daddff7a9e383100b84e6b2a101d4488fbeb8ccb772049f05be3ef1d8286f3bd53dc330e520e9379d031ec52a49699a9531e88011a5b451c8b1cb1237f77c9da8cad695edfe68a5463cc512e09d818f6aeddb6d0d94379dbd6d2e63a7e038cf49ff70741041a4001e34fbd029290f67e877687323790034e2a52d8308b875335371a7e7a490d4518707c5114162a698379b43efd8225fed0dd795e4ff78e7741b6c26e4af7501eaec64caafb5e20a3532535d4413c1a5e32726ecd487ea50de636463a36de42f11111bbbc9dbc0b7f452ce66e20122930754ad6e50031bbb47cf93e7403cf291242fa89c41cbc021f9fa0b69c223839ee27c6472553452414367020e2e0879a9ffef2dd37f85bc400d8537f9f7dd98f8acb56752fa53f9daca3bbdefd733d4a4a093e06fa5df8f49b4bf7978d1696aaa14ae3892191e581f7db41a4657cff60029024a143df838f65aec517e5faa84e38b81f781c9fd852fdab7a7b9fec22535ca5141359ee2d6efcd67090885f0b73d02fcc02ed4f6aa9156493bc3bbd1994cbb754f9401cc3c330b4cdd3fb3c8f2b867c58eb83adf50daac53fd32371331c24069e3da3fbad6ec40c937ff5fafb46317338c9aeb27d0238624cbbe5a8a15cd5752261fd802085ef823dc5a5981cfd9d70e66bc7a0ba0a1dcbd045dae0bf07eae8122d044dc36ca41af26255835babf9a0532771eeebc1fcaf6f8c704f11457f4cb324a90014a59c24227b3562249fc12ea6136679a0d089674dd1f312435f577415a4a6e611c47af4b46895f244b76f07a776cca5db2ee1043fd0cc7a59bb14543c021aade280c4f0d1ef8d695d7617d8ffcbfa4a0b850396c5731386f5457c540457053d8c41d80af9cba1367bd43c60bf1531d366a6ac3aedcf1c213359c3a78f5bdd88a5f462d6602ecbd716c760c2eccbf2dcdceeb6e35cf57c07584fa06f0192b16b6a40138796d04f719add2a0c9b6db3a79096ab1a0388a9ace9831f7bd2fb4f1b31aae46bba78912d161ad9e937651c25e452736dd5df21d440d5a3fc51a70d10eb983a5899194e085d5b79e250f38a5253c683024583f53cc379a18e9b9b0c16074d80b69cd556ea6f4d01f558e0f7c48dbd9962946760569f5bc984eb9e7714d24513d09cbb436fc03a6ae63f8c405d741fc602ef04b09dab1593f68a10d58552015262342af120eb2c2f6e265e58dd7b9aea72f275f5fe1f189b6d1a9d568a3b8c485ef6bfb8fa0dcd14e0d5d46ac5d037751b89f7fce72e3f1f2956d87e7964bc9fb6db9a2e4a4175f66b4d974660bd4cdba7b5d3f9a2bc3613cb0b67c9a795d21feae273d0408b81127c72555b5004d13c940b27794f91eed34dbaf0d16f8413b1c689a95569f94f6ad7343a17cb65e93135bc3e00450e6e55a0bb0975df69b50b0d7569b811f6902317f47d76f31a2e158b505ffc964a0988abe60b90990669382ebaac568031543a322ec2253c47334c78b4bc2276e390caefff7c8e8d5d5460ed6113e676f646bc3768d062f5b3a9bfe89511188faff6e2bf8eb505441c527ce7b975b1e8c00e15e2a712b05d19939591aca02eb29a67b3e5afdbecf33cb3bb04a25c52cb4177eb601681ff3af820ed18d0d25f56be7ffe45a90994bbe9a3052cf7ae3963e4b836f7934607908d865ae3414a0f2b0eae40b184fce55618111201ccc665f93f9b1853fc922eb0d23e6d8f58a3e677bdb2ca8d493592572f876adac55cd702b08f07835b71babe1228ce64e5b4a671380d5ab786aca09bbd84a4ab67f647a10bf8895f01646d2f6c0f1e052766fce5d40cdfad6d8e51f619bd5f2a61f31ac046592cfd7d9547da9243eb80e99673856c23951cca1802d816db3dff26f7c4843e26b622324cfed24ada3ebeccda525b55104521b14e444862f3f0ba06e8f4d9d950d7783e0a10b2c005ddc0d5dae86d14b11083c3494953b54f5cd182d339b1e120aef565e8f71e9c9d08525e21771bd1788a9d28af18fdfa60d96625a84dd4593e90dcaedfb646ee432c788b76d1fc3e509bf20906d5f0b93bf3f171e695fd0b691085d8b45cf43c34e5c3f297341de81e97d48805fbf022026a513604bfb81b3bf5fe5c1253e593b4a1391682b4354b170237917774c398cb00c35083987f699dd667c9119b1f40e0f644239b0457b2fde0dd5cf8334c8ffb2ac3dee93bb64ea8eec35964ebb9b22385369dd66f5943938d1310fb0aaccf00dc42ce3e9a8e1fd7d3adda9dbaee80d339e29a7f7fb0af0726705d607d70d8149224e906b81b9f72db2c49aa6972d7c3f7f5c09a584a7dfe27775193bcf399fa0f6eadbe271f97300629ae90f8d787cef505aff2331b53bad6b6bb5437b253b227d08148cb454f2a18590417e2c9da5898e5876635997511c51ef323ebba49f930e7fdbbdcf3c1c63a99b63f071a0f05aeeef7f0bbea1a50a2d7c4c0fd92ab6bba451282e1a36a337fc5579e3b697f97176c517b89aa5ad892dbc9ad1f262bfa29cbff99a410de4eafbef53c4bfbfa63501f0fefc3c177960a2145c7d80ebd7d2eed6e48b94a2662b5c88b601d1eb081316544c4f5e5fd3ce6dcdc4f527d9aa9265055924f3300e360e04cfc6bd366fb12f5e4c2c9ae6c1defc330f4deff354bb9746b6616d4b41c0b8e7dc27a97ac22a91e50b98fd13459bdda5227f79cfb1e0e4332e9a196af7d077ff2e116d70733b1fe7b390fb14227681d6d84470c94c9ddf2a5ed2f504d65fcb44564fdd783bb42806d8234a651507cdcc81e3465e785056182f05d537aff243b26294a6b510c73083af093f62defd4cdd77f3584423bb056bc63fd90a32ac636d3596bcedffed63680a1e2fcc608ee61a66385b98e92f407423b07048803589d6a91754845bdfc2cd9a70acccc0aa7ebe2bf30c19b0903d6fcd9789de6bd7cc9e965e06829a1b9f3c5fab7fd3d8cdcb3d84c1d6e8901d059fed784d28c5a7b3a53da86ebeba6edde544368e728b38fc753a993ab1444a26bf206faaa9713d53ee76badd1387a5ecc9cfdd33b6abe2145abe84b6968a2fd478d3d7bb482a327e1aa85dc905e9e4768baa70412ee975d3f7b6134f3ff449fcc26282fc1ab60e34b36169d1f5e5433b9d08dbd7c9345ee6f7950f4d2699a2cca78c9724037d5d1f63fd4d8028d8fd2a2f69f4ebacda88e5437f5a0294be5c286e8463310e1fb09c55fd5f66d9881d4869ce24555beda53370a412da883a5aee5f52e63de8929afcd7d9673f3ea0bf1d62ea3620f3407b9a442197a46222b288cd6d31c513961dd86df648bd81cc3d2a3eb29cee4162ffa7d1f19f330e1773801d6af1c2b00ebda6c90f7bf600e62944721854e9ff944037e6f19750846edb39f00800cff7ee1444bc1e06010e4ee4e45d6e1818c45e697f75f1a08bf9656d90deba5aaa2a64b2dabf5bc8b14fdd558418f0700e0a5a9c0b780b200e292cf3e0e747ec06be25aeb07190f3b06237ff54007abf0770d1bd76681db63567600a3549d79bc6cc92dae6fa5be43e7577ecb4847ff229bda7a5f1a98a2424e43adc9c3c5ee316e4adabe9ca673b5cf2b699842cf5211b2cd98da9394dd2c08868362dc9acf82d688f0e9b240f509e9deae1e8051f11e60a58ddfa0395e31a80651c84261c21eb12ef40fd89d59c6c2784b928fc8613e14de903ff833911d0d3313e52351303a16c9eb9174a2ed5c09d6590e7b487a57bf3f1d564cab753801119f26a17e5e71d863981bb812d0828693a2120554923ebcce977e00b89f8352cd743d90ee4bec407d118cebf829e8f0bfb6c9c30d600a598dda2e46f6e76c3764b92bf39047a8bbc6df4fc03967340635083f36b46d26be6d219fd0a58361b5f4985476bacf97b09a94dffa0b1d2dfa1ab5bd91660183f58bbcb8b619a89185be8580216221c0ec2e906ddb537d428a48303e7b6929ff18ad4a9ac1f9c842a5087eea61c9a482ff4ebb1aba94dfc73fe76cc9b9059fc4191a7d7ee2a1bd6269c7278d802c4e9577d4b57a491d74c8595735b271ea3552025a0ce652f2c725275bd9702fb4a0de84caa09e0822e8d73882cf0d764d3cbe8c16f7fe0cde5f9a1751c9f4f67f66b9ce49a6fc8d03ad267014caefa4e2cd420d70a497a57df9ed6af343d1a20cc9044f1af46646e5ba022af4d294ef9eda7f8205331cd835df58b7148994322bbd15dc3f71152ff952490f761db127b98c221367357bd6641ef8bd158a4662f554d7fa18ddc431627546a6a83a0728626bb04a2d3c76a9ab691398c032105b5753cdb62fe7ae7b49ce3e48d57fa8cf3e63d9b55b1794791c9d2b13611b644a5a2a0f6e9eecdd90ab0efc0ca511d87a032a16d0caf182e19b27e6b8d4f1de90c22e3706c90c18704706d7ca10ac01e0796320096a6610cb2e25833e903a8889e4b1dfd2f56773e284d962b67ebab630b30d8b25df62a373f9d60b769a20504b25580759310f7461345c1dd208f0c5d4eabda5c73d86ba560b981140c472ff89644c61486ec97ee30c36fb82130cf10a4a4ba47e8c571983d4c14fadb4c4d7f7b41f864c2c13def271b33c4bee19997c8ea928f9dcbd3975ffdf99b60368204ec3ac28a44461697cf31c2c1bc98982371051ce48d7f53bd288729d8fe354a63b1063f1bf7ac1ad23d716347a71017b8868e00dd4700c046afc7a982d2e776de925fc08b766827dd677fa3fe3ca7bf99251a966b1a57c304dc82b94a8a8ec74e389ab8d436b416da38764e918b6ad00cb375ff136b370386dc7fc32fd6de1b1367dd684169c4d949a90e53b41222a8c3c3445d0a588ecfc200619deb3dbd5ae05baa4f558a6d6bcc89d45a96c485a3955f8f929876144da39769340e677b40956bbcde05228128647dd7bb1981b08aad6c3a8984f39e8861c8f9580f8b49f5f248cdd306da5da1a045571f9d1421e27b7b73a0a13b4110700e3b82c60cfa0eda3f19e28bf1aa47368792125e220585e35e5466a988acaa525c4b5fdb28d322adbc90ea698b3097eb8629fd112f6334049e2cba074c0de026412afdb7f9a2ca1f91401a745a744d8eddd1e883174058d7058466d24eebad7090b99ff79b8cb4282818e42bf3f675603d1c2848a9b7b27f99fb0b334801d2636d7586a4ba5d8af7e98cc0ce65e35bce96f8489c89b7636211b7688b6bc224ee3884ef02f74f70118cf70512429c9bf619c8ae52007f3df6e0fbe5bd3634cace00674f795217455cad9684c3c7f71af726d3b4faf6d3fa82f9cbf2d6b79ee77dbff422a130292970fbcaff3ab2b524b994c16c360a8d17065329e41ccdf0b64c06e08a584a5f50c0b5f1ba5bbbd33dfff18ae6840a99ca074e5e505bda439ba2659442bbfc60c20d1c151cf59c1f5190a87587ea564cdf49c5869553fbe81a162e16f17acd5ce1d4b823ca5f0b1bbc91eccc728bb3b46ebe574c1df4d2931d87e8b33b1ec2cb3803e5653099f86390f065a94ec6c68042da2bbf2ea0aa8122410e13abdbb4a38e55016a112b8a1799a867f5d1860272e6654becbee08e8ee63dfe7d61964f9ce8fc099e065042e04f0f806fc66d6bb20cd3ce09b7fd934d5c7026258e6d2ead11930e41b407214d5cee2b37d63731b89c1d21f540a700b090fab765ab41161ba879d44d7854df5682364319ee165158d0d81290fd9bd3476f03c7ed5ef76aab78c5634783e9fe8abc4e8020339ffa6b5e89f3d233ba0fa1a69aec06975571602e5dd184aacf8d6a117e21b58e848aea569cb6e6eb5db66ff9a320adb9b35cf340d019241e3e52897d31c69e6770b1db281cb57fc20fba5aa55745109aa701a3c369eae05150aab5c670f984a7397f463006ad45bf564c90789c0dbc70b2477d688c0dcf3c0871207b12a6d78ed36936f67ece1094d787497b564ac3ecb17a2c2f68ed768083214cc64a11ba4b380e3641284d65ea9782e3391ac0da5d569bcf335964323eeeea4d84aaa1fed9364241c11219d464e33f70b176445cfec44563e5df498139b16bcadbc3e4ca756e6d3b9b04096f0ab347ccbfd9442b8212f1470eb1ba4604ce7c2fed204fe6e196519778cbac6bd03eb2baa9fe12f7d165216c94def2e1f821d99f15c0c96857ebf91990d67adaffd1f122f2cc780c03c6d66f22833eb6a2c59441fdc171b6015214cebf23d027212920e8929eaeb28cf0e952c4a4339a405f83c907f68078992ca65928b9bf4bb378d46d3110fc67345b150d8eccb4dbd5feb55ae2c7447e452ad5b2805c894ba160aeff85040033abdf5e17e383bb8884e00f336b620601eda4967c83e055ebe661cfd20dc06381d676e0565aba3b5f9ba2ce67a76c15244952953b801fbcfa27f80b87137615a8c767b8d81fb43915f79b1d7bb236b655ab4a00ea19045a6bc52b34872fb7965799acd3f2362dc60ffb5ef6aa4b61f96c38b0e54c5104b07f79fe727ec6ace1da24e3190e23b1d014714619ed416cb087d7eb9d02ac5b2561f78b738430792a58bbd310cf5fe33085e5b57162729ccc21e6ef7a31a58c3d6695ed1f414a9324f08c70353f52aab271f0210ea22598c9b54429e49a7089cc47115d24d7e85ddca439d9bb890ab737c93f6fa20712c9499c22bbae4d5c31eecf8e713c5462fa24d33ecfbcbef6ea6ca671cffe18944bd0a6e1cda4c50b4ff4bd7445846e6b6632f58f54e76aa37f7d2f38f90abc42163ba5007a000d286283e7c82a3eb5f1f6c2ed93664f505dfab04034f104e275b5ea694266735ae5fd7f437475ec6cdbc781fbfaa81aa9aeb112f97b68970512b1a947efd357dd2e223545f1b3c1a202f1b25c35f3cbc931cc33d7fd281d856a19d6e92b8f9d7232aa3698615b7f5ba9202e22582c718d0f01990006728f713ffe42cb266cfc6501621a3481a927284c19f941a65da7b253b251b1d1ab425782bd49a2c7428954712b5e49ad00f3ead30eb7cf62e63cd768500b3ec3adfcc08fdba5a11f2fa1fbf15c3ad60563c9254d7ea4c76c4ee1a7e6711c4c4a46434767743f7f4731a5325cdd48ec645290b03a35ee0b18ecffb8108f00389b04ede74866fa320691ba4671c0036f0b8b2df6144e0cbb056b277b4241874bcba8c37424771f53df74d25370e1b5f203e393b7bcff73fe6791474bbfb28e514aa6445b2c65a3f77c50803d5d10ac145b28b66b70a65f29b168676c8da8d54e29051e4780cc94456793520bbf534e4b3154ec7becc6002ea05026251ccf4a574f8f9a6d2ade3e001d1b604f88f3606421c894fc09792acf3e126930f19dc8b995c5651df5e543a5829338c6819505aec7c3dfa21c710928252e516b51ad727f9e1058e9b89bb0d74bbe6cdcc6887e479726b2e3d501be946ba4206b1efd5abdd4531146995c7b894851fc12392bf43130395966962d586a45ce2094f37c89e1b8ac170f51fa0e50143ef5d00679216e034162b5d9620f9532f89143327ad5564d19561d766fda3400c6a383827748f8729dfff037c695160e3b4f4c0a5b370e057ed15db0d56a9d7c6fac9894d9a00a608a2186a62ec581f5cc3974d2d4d3841830c4e9aa0701fbac1d4521b3f5287920148bb245c64bb353f3768865a7fea73a3ecffcb6e3617ef9c3ac338362ec2b3680868708783eaeeceba678074ed3becb06159842059e2f76fcba7f32cd707487439b830f25f61b67f9ae7e7d23ed5537e69f437ae813bf912bc2a684e6e8eed44e22e84d20af90ec46e6b3acccad7ff1bc6e6d06ac5191c6cc5b88bf6701882419fe6ff3bdca12b4d4aa8fa9a2f5a78c460fa337c45ca199550974e57da110a5dbc94e84d91db0249c6c22c961f229bf55196b789cb6cc7c969f66c528ee82efbc421c04cb1e1d9c3871878a5a9d10086a4025390ca791dfa673896b36058af4dc50b0091de2e35373936946448541dba80be9faa84b8a20f4b7485bb142a1921360b3fc764bf86477160f75c7e77ab9eeb423227d57c52f19530cd4e1f47989c6806435a4b278e9e8499aba770bbc9fc205a32c18b56a8d4d9b2dfab2d009e3241d6db34e41179fb8b3530e57e4fc8246228f874e6210e340aac9cc9b18a1bf570b5e0db83563af643e1d00a0028fcd7b39960d6a9aa13e75a5911b84e8e266457211dbd559654f30c2837f558914001eb3786865c5ccb531ed8cc532f43a080f5cc27b03beeed5bdddfd6b4621aa2f2b6aff7fc69dd45be38a7307b5e6502d2909c0ab8ef818255c35ef0c87aae1a0ac0b51841e1ce7ea618ca73d8be89f1e91d5e841ee1bd26a4b562bb90a2e0f9d1ffcd255f1e6be856a083c5b8e8ab8f801cd9acf9585643b7801644ad1b9344edd472900d517fc9646cd4ae77f211d5ccc101d87ee065f0396858c7d3f1031597f4440e772f0deea0e66acae0aa5a7b0ca544fe055acf9b9d3d0d6237f758ff4abb9b02a30755c07b012f681cbad80923552bbc58ae7ac2a63f945b49b8eb0584e8605d0f83e938cd3afffbd59f7fc2e62ce2765fca20955c5d31d579415f5b8affecb1f577cf91885ec3d367bc7826dde08f65fe2ad0a88f9869545c45e769ed0965437257017ad4f3f71fed6bfd9e2dd38910960c80ee5b884f7ec3ec5aed7f1ba42289aedeadc90d49549504bad85bd8b6b6f19cd5d499227bfbf69fbdd8d4ae69d790ee851db43f37556ac237cdad3391be53dd2ecad9434a5db646bb178ba19c1ae7b3c6797170b2a6a6a2668d91ce05b33af422de182489cb894a2ea80c1fe9e12ca144cd23c8dc18cd8ff8d2eb70ac6cddd51380322b36f5c4e0c2c1b9f43b42755401b8e26e54380a29305b58a0461dca0af7e93106d02baf8a3a83b501868c01b452a7949226c9b8ea7763146218031662eccfee4bb5fedc00e395f2c0b81450682b7199d21179fc2074c0562decfd39fe76a30384b0b1cee006c17172bd6363ae3b3c0ce0bd2af232cdec656aff1e6b4000d9fe0500dc83d80c2805e1e20f73c81698d0a1d19fb19cf09d9f4f30f3d88c912c14c5b4f207f291e93b14ed0d46dc67fad036f3aaa84fcffca4b12f588e1afd25244c1b6cd2acb59c3f9a06fbe9f8ea6a98180cf7a31ffe2fbd0db1210930135a6722479b89f5ebb6e1e481b2260bb77926e74459e2bf90d03b3b8d650de89d078b49447f2ce4dc1f993bfe01a1f1229f35e9c8a4283cd65879fa19fcc08621fc53edf0b3234ccd4b593b1a03c31e79567da876bec18570d696c114a83f19e493727d154b4b2852e6bb1e8aae4a8c0f48c18476939a201c1bff86e86af95385429ce7f492cdba1d8030b410b6b23e628027fdb111f19264bb06b3096c5caa1e418aa36f09f43617183239f7d6da22f6b77b126b51317c913ab65799c32e9e7f42e4e4c274c3486bd104bc199ea3e834049397cff5a2c46f85ed42662b8e85802583b525bf744423382fa60a5b0ab9fcf3dacdcb746bb20913643cf0ad3e012dde4aa377a891cd1a13e01a3a9e3380c0ff54c787891e7b4a507d40f28b4eb5c4aa4919e5bc801386c9203089959050389edf64ee041b354915d3b57803fcd27cf39f330fdcab3807fe1e446532e6f0cda425f01727bf741f53c5e8961ecf916260b2a69e617ba5ed2f447d18292f375b9b665d611f4c782524ee91f682848bfe090f85638db36fb1af85739fd9d1ecfe44abc271a3674417cf93523dc23245664d1615bdb401564fe3cf12b88fb79f32beb69a55be85e83390ac9da2d6c52f4a6c9d343309ec366ebce2b03bfecab952d6aa856840e48da93d700d0ac78b6f18d86b301d3e02f2188abcf282e59f5a63f10641b6ff954b531e93032fc7bb80ac65490ee075568578326e0695bc9a5815b8af18fc17df6b4b16f8ac5fc479afa8acce3e155c059a12bafc660f0d54f7dcd9d4d79d44c5a85475a0ba4e0b7ca588c0a1dbdb928d6d6bd5754a51b3e0d46d6423929932d757f9d19b8852584b59000b91294aa048cd11b67378b2eefac82cf63562a45634c422f5d2c33c4808cd7ff59d2dea2b42e356e2449b3f9fb68c4b0ad108d49aa4c86078a77c6fbdf441934cadb57bd8097eb53b1c1c7fae84d285d7ac48b3a73cbffb99a4e6b83faf226994e7f104955cac1f4b1952d01896391c25d8c4bbe92ccb0865af00ee0eed94d014f958a345fa6fb1add259671cbffc0fea0220758136621addac72f84fcc0e12182698ed95133c7373c4096cdc13d44e867dc5f9d8a172b2135da957181563ebd55843be213ec28e978e29355a7ccde42afb4a38abf6fb281e6715c9639689f3c5bfa99f785fbd68017e449bd2439258369fd6ed06a535ab376e86370c75d0326a190fdc68309aedd1de28a7b9efa6c6546d6f59150b38bbd8d99565fd39365814238d4ed07aa31a635fe282dd631d0429506975f403a4c23929e5d27fa62b6d36c0a92f4630b14d57a24fd8f0ee28d3aaeb9c46af9035cd62a2684c2590f556c04b497bface9c94e6935584b4dfb730474aa1db4dd28aacf0eb777e3266014338f31edc974bdf3179c64a813053a790c9d4bf48b9073f1efd5d2e894f7eeef9cee42426da7986b498e1ea6656d13156a30de28f7b8cd5771f9f840b9c15ed8ad8cfb20498252a3e7252c554d2db174510190af5562c8dbbac4a828c8cd7ad6bfadf825eba5d09801f3a4b1b08852f6340d7939793119ae46493e0cdefe88277cf70de526f3d1ea3631b0a1b458c25664be803411e9433ec0a825dd1568c877d1897636611fcd4721c73b49bf43eb94478f06528e1d4e70f0225840a71fba3be7f6b8ab062247e53e35e77a9c1b10586a64f0e5b095c5c0ed40d624c9c6e76c8642cb442df25f0c256ffcf8dc04aacf6f2e32069c0aaa034559ceb555ac15e24a4b483b317435e3a267d89b8454a49c98ae6d7928d3444de5900a32d33502af1769550e5dbf8d4659e4f9f28142e06e083cf32ffa4783d59087ed98a1ced3f32cee4ffd92bbc8ccbc7feace64925c45f5d5b961531715991182b80f638933d97e7fe5725bc5d62c6ee1edc4103bce00f4adb3fe1266f037dc9bf3313147a972e2218ba55b2408154c029a7b46d4d42d60a1e047b792b61a535739c021edd3f3364868c6896196a970a1f7a46fd601d672886bcb025de58aebc6b403e9dd684b74636d745c813f9d1e1598f072aeb3ca69d14776a3889f80746d80c9f93121ea2afc9a571b482f1ca82fc2c896e1fcfa1f9b7d3c2da7b2434883bafc762b30c1dd107e5435416f105d51c19289671dda188d49a61a9720cc70a1e8e1e01b37469b3cfea9bfcccc27bc27f8ccc49d9762b623a0adf3ab42baa09ae64662921b9037d974ed319298bf9e0f50a25121963a0208c2b601b21af2fc3aa191385e6e857f96a033d7a4d562dc0383da772f464909be209104ed2e140d6fb1fd20459e5fcd9f1f982a1168df77dd1824a67515e962a6a2a6834b5bb2de009ae1637b32d5457fde6646795b7eb308a43196a59871ada3e6ce670d781906b0cb39af413f85d8cbea0defb54925a5e00ded26d71ed6f986493c91c5e28a9d248382bb1a6ec2ad03c26fc20967385c6b125b106350abd3eb7409f7a9550f3e117ad5bb6e30ab6ac8c9d3e5519688c9c2853a39da94d09eb1ed274f1c5ee4816700125a4efc81d484f2d59f04b5f848beff9570f128470f93d62047f30d030bac61550637aa0b4d3bbf07a0ac778457ec8831b045017b39d472b5618578c23531712eaed3d0fe0cf5223ca3c81849a9425966688a135284ed98d85f91dd0720f8ac8978b3f80f44f52670d6777dafddac958ce36cdffce6e35bf11baac2368f1fb4c57689a4e88a01bae9e4e753610801321f819e33b0ebdd5f1fe63ff22890ecbf4807c4d7810c9ec6740b5f74093bdf3afb7eb008fc93ec5c7f4d50390073bcb0808247ffb6d393e22fe3b3c40504d09c43a00a941b1b48809c6c403298b18962dd67fcb55f821ad46a72e17b933f730c64548ce6d58440c1bcd51f5b9e3bdbe5e302d00ad574c83be813571cb3d1008548d69f41b4773069567993f7a9085c846b678d8f9016e9e64abc80e02047995bc6703de153cf54d66bdfbd94ca1d5b688ceb2748d9ee28603287f7ef1c047e333bc594848edc00c24bda1885d5c8e8dc3a2cc8796830c6cb507d9401eaef6a8e1ce64487097cf231b8facf513ea9b98c143c8da03da562fb8696fe4c42754b0d32bf570ae67317b62569a1dbe9fe565c18b4e7af6dbee97f19060eacfe82ceafcfeed71ed5c6a4f7801b2c1e7e0988d6d95180e670c149334780b264ce156b719a270a359ff70a7ee2131e678fa18ee0af5d580155edd85162119223b1967f0802cdc4645664fed0afebcf28f184369e26744895888c5f2d72f2f0a0dce90135a0f2b70b396b08e42790666b691be9cd0e1bbcf12124f6f9fd9a40b029dbab3228a16df8bcd1a9201ec831077248960ebca50d389532152db9d63c7bf6ccb3616e101c4a6f412a67970f8c9b107f82121ab132e67c61dbdd29cb82e583cb903034130bb105102b0ff320b503ccd81fc89411c43042961cb931da591d10cd16212746499a9edcfcb757b9bf33bb18d59ab35dc0d7de358a0a3e83ff9a974bf52f390ddc3ed53cbca960d9f96dbc9bb683dcdadd60253d45ab9c185236893bf05903df95619eb21f25fe5c4aa43a5867060648d4b98faa86f57294c95c801d9bfcf90ba670c06d79f589d00e5fddebf21d5c7863060210f649bea2f3cb30d9ed20a691ab465a7b8f0d42c305c35a96b63e9e6aea254be0d5367dd45431182fb6acdda858912588093c36a6845c53fb4d10a40373993642f3ffe889cbd5973a1763a4ddfc6a2e2cbafcf505140c772d49dbeb5bed5a5524a932d40a28d61228b0c0fa20ffec6929b3f31c7c6612658655afb1b799ae878a43cb855807ac424bd3fddcc547ed0f8baa5d3d151c9c97c58b165a8be10e2f394b1dcd8a72d96a5a587eb2d03faf17f087f9bdb3633a89209ec1edf13e353da0eebbbb526e166a04d970a120f3d5b87525440f0931de4bf0156c5016377e07d6d7da1746c3ed3704ca5012e821720e4d6edcfe8ef149b7ef3c82fd8f99c7e9843a754f6d9b5dd39bf2bb2fb39973828b4c8216d442b4f85a780809e7f61de81397366a8759563cfcbc215ee1ec9067aab56ad8de4c26ba10b3703996cb1842a0a87b3ba5a5aae393ebea4c8610f8a987995b026990a91704f27d81e07d84819d78f2a709ef7625ecac80fcaf1a9a01abaeeceecadf9bea4493ba0c9dba133cf56fae0f86e83c27e376b3fcdec1fc1682fcbaf9dd30f1af68e81bfd9f9ef5ee7a82cbe8e6ab09091c127c252a058ec74c06de71d3f74f22682ed0f741b0d553b5e13ee5fff3073f164db4bf0cf521a161f7a8215ff738b61e8853a1ae2a1b7320bca9065f0e55493e8c34fd67ac28b7302ebf0b188ebf98e22f6b7c114007a8f4b675c6b5eb219162ef870a18bd4de3d8dc07fab846f84be195c8f350a5098add27ebd91ddd015a933bf7307adf52eb5f389f90a331236148031f4886d1320b3cb44d6c9b6a9bda873b645ca3069312ed6017454d6a5560ee12e8c6640ec9bb6b337de0ec1d14826fbe88b839fb934de694133d73927d3e4f8dbbefa56a5b3ac9dca438dad0933eac0f26659aa1d7fa282d6191570e5756eedd0ccc9c31720461701f9afcde5baf38651579b1405de48fd222e36d4f4d1e37141cf2f842554f174f11ab33c27013a8b70390d8cda3e81b8b6b53fc9b1290bdad122d6862388d4bcc6838b53bf538d04796f4a4a69707241a4eec9c988f32c06d39eaa2e44eef38355750da1abaa8312c6294678377b58b8250b6cffec0f52ead3144ef5c006640f1c3b1d48d1b96e58e8150c909806f6a06596dd299259d522bfe7b876575101855117d0f5a94cfa4e330066cd449f48a554197a795a7f585765ac960ba552f1933e0fbdb866531674047ab32154f45d7d51a06025f2c11a6321c9e24a1e2bf972cd85df8f813a2587ad2981849f8ee37f054de92c847ec37c50f90fad951c31abfc2737471d8e815a60e3c63d250c538e79f14a4006a2b2e4ac1befda14e8a23e2da75cccfa757013ad861cf399bd1ca90bf65b99387d79692c5885fcce442c586a8c7e4526b0826b088b3631a6c71524aebc95f5a6e4a3d5a392f64a228c6e81ea83afbd3d5689dbcf402b5a2d06b25684cb17a0408a362f2f1d178b60ab327a038f11ba4b3dc7d498c7eb407edc94450c9b1411da0968e107a84297a69346eea6ac5a86b28d5e09d70771f68bb7f1c56f94901d770ecffaaef6047caa2914d65ec6380d02a1a3e374b23d63e028a23260f1da7e77653958e1659f891a2f420de20085339fc610b65f6505a9ae8fbd4d46adf77d392ac216a06eae4d0785d73ce170b04e6829041f3aaea7b7476a3093352a93392195ad88e46d2779e3abdeedf260ab44b18fe0e10548a36f5364809e65e260fbdcf58c73b2ba87c4056cb5853cb2f17d7627fadfbc9438f767a2bee447005864b50930cfd97b78d94ad3d2d94e98377ebe56e3d5bd94f086eeae743c0c151cf1ee0649363cf429e3c64e2dddc09ad6c50c2e1f3125fa2355f23997534a92909a4de9d0e72c3d1d515f96f800acd0fddb82d201a8004f9bc41c8fc85d1c654919768cbfa06e5c645f7cb8b6294f6536bb405d2203c1fdc2d66a7d3f466a5d74e000a46cff83e3062296b1b55290b8038d71fa9a50b088d990772ebcaf172078af0a74028c45a315abd2c1011295e4fdbfc3219ee034fd2a2bdd61ef55d334d529376e9af55380a74b891552c4461dc2462f82c1832cb953586bc1c8c90b7a15cb1b8234f6c52b6ceb19c50b21f8b7a1e5fbb7b5cea204a1a2b61a5fc192cee18af7586cbfee10eb238a7060cd5314c970fb18e4806a463be9a6e7dc369e377e98dc7d2d4d919177414b2b601e4e596fe4b69a776c113b5b27485e5609162a45a4750d21e228c62c6e0f18392a63273f707ff833a5296d08bc3ce9e15c3eb8c1e8699ebe3cceac16083238e08ca5993debff6cd9a0bab69c18a9bb8cb0c3723c08106cdea08aba0fc629cd3eab90b610b2534e767154bc7d2aed629ecae8f5bd639056547beac5b2c2e3694a213f758deefb6a2a1952139ee4a36e52c46e4e93241d3404520d5b3473249a5701490e09f81a8f283dc2981873168bb95467610c29cdf0b2362b435aea66111ff2b9b636f01933f05ae63b78619ebbbe61634d4e93ca657d791c321889e55e36a035788103c3080ed2d3fda61c48fbad2d6213e8d20efc6ec80e908c2e965ecc80fefac4748cd19e12c8fbe4833ce72ab117231807400db37b3c0a4addf0ef9eec329f9671629e56f297d6985d9c456d62948168953570787aeff4490bc60a5a41ca5dc27eae73fb9d3735d8bbce8f283f5f479916126449931461c98dbcd229e06ea2e972f9c08347afc849a43cac41901fd8190ebd8235ad587bdff87b3755ba2d7a9ec6b25d4934949b9e1ba567dd8700051fc201116f821771310c7b3c9cbff7cb2601ef93336a57d6143f6f800ffb1b134acdf3315363d5e38ef6caa5dd07f6416f608291a2f0a9990c734364e766bebff57d3f2c9eb84e591e9aaf5e6508fc6b5a5f4491d9dd648efb8b69aef57eecd7099d2842197bb5d684838159317931f4e700464c3a992a196cf6c7ec33a16408840d35fbd5eb7511762ee067282d3af0f05cf67fee97265b595afb953861e451fe848b556a38a505d3b69ce02268fcaf1fe7411d26eb586164ea07671d64e559f3a9c65ef18fafc6eec8a5db9d996b6351752476b69019419eae1c23912877cebe2c606b45948b167c4cff746dfd9b1d8c461039251265bbea90c0e8729ee22217c55312139a4294f7f0aeafb8eed0500471a76d89af17b66ecf19941396c2ca0c69972001c47cc255cb6c05dab8ab77fd9c528ac421c98f1f1c69a5fe2856e83746a4a7998ff26586c712f3fbe0e08abd4496b46f433f5785542f07f46a3afa89f05a76e1c45b53fc8bdc25cee484f6c8817718e7404b755c01f3100b064a3023ce94824ce0244b9b67902ad6d68eb5d78b73690b37bda8d0d2b94bc6cfe49f5e7bbc6bf0d67baf416aca2854228c11d6f8f694141928b126c8e90112ca7da4fa001e33e8b042d41bb13465194222cd4ba04d3be9b5816e34b01d110c8ad6f019248c4f65319dd5f020b78b64507f34137988afcb8639f0264f96f5cc4f6d07ddbc523dfbda859494281ad8b6aa4825a68c45abbd0845a2d95ed15795332862ca98f9bb72b38b8f194d83829b193d36495aa7955d31cbbe586bae014c6a37af681354954cbbf9d3b933c09bad4eba4195d28437f7faff04294cadc22775bc96460bfbed3e6a16e9a0c4f789e26c794048aeb964abc6ed89904662503c5ff2de3385301a17e28a93edd534b0b8ba6b4ab864ff2c95d594e03f3cb86bec4cfe740017bca967e1dc3fd6df0f81bf489f2c0b01de8249d837b65f0de5d87ae0d1af4e605e7bd94260d032e4d4aa59b2b113155f8a1a5d273157b821dfe0bf42ebbdfa89fb3776dbde633e4dc325f50dce7ecb2943f7fcb9eb50392472ce527a9d538a1344b8fb5e60165311f3171a336bfc20042c48360aa0ed60f3ae98cdc08fceb2aba6a29bda0c8e49c4e89e533ae56964f07b90d4bb6936707b87d735af5804d121cf28115c92b23342e637c4c8dd9d8e6e754b48d9d40574bee47cd75cb9a8b742d413e44be7495799aeb7d86505e8c08f22dfefbcdb4b7baf1ecb6354b17e31a07eec6ff109a2339a70151805e432e35c4e8197a88ebda23abcd7e1758c998194e2a498af33e97758f2704797ab1f2c25193cbcbe043c74fac088fd9e553acb9cfbfa8aafbf03a284ada99fdd5be97d932e8ebd189ec91502044af291105b049ff2c1e8deb4e580919597a402a0db8bfab704f3ceaa56eaa8bd50928a481936c208183c799500516c5a5b8ae986ef26658406e73e195951199d0896989b53b249443ffdbe75860f2ea37a2ab199ed608f16663539514174c214913e883bd027926016a3e5db7da481936899ff318f04a7259288b47ac38819e2385f30f51acc715119201413f9c61bc387a7f2aab4b6da8748b0495f093aca4a01e1eee7a95071addd0196a5870ce1f5bfe0096b14f2b7b01041ef2e9235cb5c203fa07557780ecc6909042f44915b7463fa57d4cf29ae4e9d5d88f66bc1a27c35f45dd8f773617d85070a5c3180743257f54525bc6a2696f40229b78aa91713f15f1f45efd7e7b600c132e07f8ed06e8c1d99102262fd048176bf5f60c0fa945a225dcbfb5b630ac92ff898b2a2c919b8346f3f5f44e0ef110da7180f85f9cd9831b681c3914de86a03d138a68ca4fbbbd438697c0226a61aee47cebf17b0a8ff7b850b5e19cb60feb7d4edecadf2832d63f807cfd36350298999fb4b596c4ce982a8510fa16f4664924b0be190b4a7f7868ed74085863ea2b68ff84f8b857e568f1d11ebaf9de8353fcf12d424bb36d32815f3fa5b014a07e181b6e38511d8eb365b71f5b91ef7424a7f659e74dece3f0ef5f20fe69e8bfa522ae7484f50d0af0c4fcff0adbc0aacdb7582ceab15d3a30d94ea027660cd6ab571e7f0081992fe9518a153a065f98cfb8776322997793111621e8b4a81356ead7dbfb69700ddb382878d9870a4792f9900d609bd7b92a24a77a683fea7bd97972277f6e0bfc8447600934cd9cceb4180a010689f93065c35e5e1e651a72be75375cd071820a545c3e59cc423d8ff6a64fe204919f3ae76c1fcd69699f4e35b8061f61eafccfa087db5ed314702bf3027352a1c98e4f5c68303b9665253689b73201edc3596d5598ef14a7116c8769c9b44bceeaccd1a5ebc1392085fc46ced0165943dac03090d78ecb71dcb3be15415135c4e6a6663dba33b04ad636f2c4aa7c2b07f0a3d1bd9877f9266591278e2597ac9ef306d836900f3f37dd802db0fac376635ae91210c7c8b732e209249d872428e100a9d7130f1bfe82b0e88b0c165ad9c4ae2a3156eed143e29ba3e71a1a8edb4b1681b4744bd82c67af846a5ad59b2fdc58437c99a03dead20e595a912589e5245a3d5c370f55241b92d00a2d43e78434e7ecfe480bf9649ba8cff7d629cf5e02bf6e27d54a4c97283c646bb1c8e6b28b1b58e4c35edc04f4610f2878dbe8845d280457033a1c2863529a39d3d5b84ae64c35ecdf51fa060f763e38fca15e2564eec85459acd7f3005fde0dc90f60b4e968192d6de59738fafcff4d0d00be3289e7c6e7fc2979b183b2e946788bbabe558643c446b107f8b1e74cdc49280707605c684b1f1b8fd48ef6ec23d3f312c921c3ab97c367720466c4bb77705da9d0d47e19bee604d2148d43f283803e1fc924e57d17053fc2dde5634f3b396334ef09924000b7f9906ce6b4cdd9ebc7dfff69f6aa9765609aae665e229490f002d714e334aac2a8b3bc9845581e30be8d37343f1389cdc17454ae3474a18760cf32286065ed8ee4fe69754dc6d33b95cf15bd75cf60d84eb40ff991c591115a213b7969792f7fef8b225c29db685c09a59aa461793a8619007488c6452b4240f72fd9a0537617021764f3071bf4c0ad8a809d6df4c48aabe7260b28e9b846b1a98acf429b4d3eb7959361c8494f3ca84d35100287712a1331d123ff56f5955edbc3fc6f491179ef17e49b9ad3003d8758b1e74afbaf6d2970d20068d61d29a1a5ffce52b11ac2bfb6d45c380053cd786360e787de42f0ebdbebba42624109df6bb0d54ab9f778a103f297b5f40d2b3f30c9a02c983e175070b5505d5b178485178c2a44ceb0d63300316282588cc64b9300321228091bd70c011c52393d981c7f66fe0bd442604e3e7777e40dc348ba0b10a9125d61b68084c59b1024f1d6c49651a18d99ca0606257f797d3091d94e507880a2136da9994a7170008ed0643d7b79c67f1e50e921da9ed64af1881d7658a00d2721314792c903414d080db271d43b11f33df7a30f272011c11181a7a47cb13fd14fe640847b311e43d781e207d20a1f0203c70cb2772920d3a4040ebda94e9ab552f7921c43d029eb0b34d369b2a46c9741ead09256940bd0715f9aaba88222aa1e35252064de52aa3ca7c4d726a4a84ddbbc3e6a285868d0942f2a7ec47ce9e12387da71c643bb3b42ccc486ec214d7a2627276633c980b46524cb3314ab1dfbfed69b0efca2ac79365f53988877d52143ec80ea735f6563c88e12f4b9ce211bc59bbeb8f3293f94698b26a8a13d86c61dfcac7005b16d4b0afce341b6766f9a2fbbfaf299039a42ed1b15de20a2ee625298721ca9e9238c13ecbec6cabf4823a99db9db6729dcc90c0112a3a9a91ffa4087851cf667a257d6bb10d420b3b6e27fbfdbdf3e9e2918beeafc45054930198b43e1feb2d738d21c3f8b28ebbd91001a7d32097a0c8634ce8eafb76fb6ad37c5bd16683fce5884387ec9a7cf0b2c3a69f3d8768ef6cbe9a6a2090cf66cb696ff30ea895e091c423fa4abca24d6095f77a4569da870390bbfc4e22f9e9766747eb2ab4c7dd0193cd3e6ee0bfb40ddf7edcdbd17a85baebef6633d29939f62876d5bdf83fb99dc65e024681eb6e9ff2895a9701d71d3e9a3c69d213393460ca960781413eb790957ab44982cd4037412983f70ec638bdfad2540e882e0f2f8d3766712ea46c47074132eda59fbd9520578eafcb8780c920bb9c3f9dd3f91939b1bcb05fec990958fdc9cdf9119164b0e3ecee90fdf5158ef382bc1045c52df89b7e2dda10b498770b01fb4705ad06d33ac2f607d9c9dc6b856cc7b106821d6c77332d37c55bf1585cd1e475785dc48f4b8b191d23146da88102c7af4d9ff7cb7cef11b84cbe8cfd8aa289dfa0c3680064c362299fe918af9db52ea598b82cf1ed264e348d8ccb26088fd77f94ed3dd353f2235739d9185c647bf1af993a0c08e2b6f97570a279c458603aeebad5758425d78afc113af6f7c0021fef90e3cc28f1af83a6f94052c29bd02dba8be0281852b573efbdcc72470e7cf9730314c4a279194e74291624daca3105a80df351b4611cb498e967854fc591738652ba461982e78e81d992e0c919080b410c3cd4f259b565ef97a0550f78a25a640cc69624f3699062094d9a53f52436e4102baf7221c03082a8e11dcb1d38504b2944603d6178d8285888daa06001721c621eb1ed515ab98b97cfdbc4eac5e0f757537b3f743139aaf24f6261fe97ff5638aac46303ffbdb375a4b3f77dc221038bde0b4838d0968f79d80d3cd5c3687c26331d8326631802d88fe2be7889e3e3379576f7f4cdfda49ce1df5275c56d5fd29a85df2994d264829bdf71d379e50370a9a1e69aa68a42fc903ee95fa1d4a0f2bc34e9a83a4cd293a13eb391957f01d6a195f35609e6d012f20750a119097441f7f9856076da37c274c36f789df22a1407083175911b2316ba299ebc89196c585e525ae4bcda4fb239d1ede9451a180e3f5af45703252913826349a37078a48880e73bf1692c1f06ce85bc946340757e9e5537c769464bff36bbd046d2c002ec1a278f0bfe04a278d4b0e7e03832bfb097d831f01af1a08b2da7b98577e9dadf13d7ccdaac59ab22798dad4d034fc91d7c499f3f384d885ade0647250ea8110286051b4bdeadc6e6fcb5a1ebf626d5c4ad5d49fa74fdffb95499dd07f14addfa31b636e569a97d3596b61c20a4aae13759adda06b73375fbd141d278bd34b561505b957ad579d6f3c5bef7e912080a68ba7faeb8f41f5c770ee82e3e2dde5eae1114154fefdaa3303340a04ae4b90c3661c937477ee1d8ce18a6a76ab543129b2124a86af32c2b412e371700449ecb7882927a5b08043e5723bbc6af10b7900467c4dccadcc1fbfd33dd5f8925e1c061fad88e448ce79730df55ccf8a9e12701a43bc15cbe7a5e5d7eec63446bd42211dbf8d288913e271409b6d6943be8af22818e2103d1caff75c2f097a83dae5812dbe382ed38115fdb4afbafea7070ab70468f862ee77d5bfc7e1f842c8d3d0383f33590666c803d3e318f53006ae2cca54f5ac33388dcc3a0e52003374533bc797786e166ff8526df3219a11795d0a40a929d2043d0f9177fe9194b117fff2ec1d86386eb519aa138de8da48a648ba8219091ecbe5063305af38c739e6a3af11801b4ba658a6bc4e187c7fe8e5849af9e4b5532164ab370f03d6e072b7f4e0e3255bf5c28fa3bc9e37d856e1534373a80f1b0838c5195e533b4315e77001716c6213d6166c3b94017859e0a6418636404b6ab621163058198ebdd2e0341bf051ea3c85dc118e3bd4d20214af59737717c5d125cc88e0a8b70a3edc1ce04d410700afd56d5d1006f7723a0f746a4f294f071f1e7561c00444291fcff3780a15d7c57fa3285d145625fce838e2436d895ad636e8d5a4e091bae3be4605a539a2d61a6e37fe353545c395690c0b09b977692397a06488c53703e7060996d08eebc3c7277a736e63803526fad122f13819f5feec213aca9670e411c2fae69334d205a06f68107320d4e8495f5f269c430081079f91928992cdf5cbee6334c149a3b051c4799f8996d3d3639f29872d19766772e1c4fc8e399244cb381b5fbc8ea1a8990e4aa65c3b4fbac11e19ff6585bbb81b0a05db34b9cf70f92f277bf96f04064ee14afb20766d96e901da3d2ac5aa1a3dcc7d31690ab7e70cb2a6fffeb766d339e7361026ab018c22e4e85944d10ad0ad26a72424fe70a9343dd26a7bcfe4f4a489260dd9672659c1ef9160cb8e5edc7772807204cc9c8e370a65b90ff1c2b074e55c5f25edbc18722fc26d42ec3af1da2a33019b066666b9b32a947ce781992d782bd92d8e508ac8d7bc310b295068195f8e1cd6c931fcfd213db1d9e6824082ea373df2bd3a6d77f7d54ec0c0d878343cdd23c3a3573ca527bbeba48ffe6d9214e323604f7e066c4a3e23f7e37eb5be95e3b6ce16a77ca34787d99f535c14d06b79cd5c0a7d087e59d867d2ba9a4eec5552ce8701456588e07573db191179c5d4b7b09e8ca5cff7078740a230b7d9776ea5c52ee933316d850bf9d916b06e59bc7a229c8a351c364c39be05e0d7a49202a2f97691ca28b9515bd3ac9693df28953c85774201e535d9ee83387bcd2ce73b54c18caa1ee045a0c9dce63043c2883d3168e95adf3c5be6a2d10b89da0e944d6fdc6b5642995f2b59190ab0c9b4cb7ba98be271af1fca7f555cc11a51aa70478d0bf983ebf18e9ebba2bde9baf584aa1f343a61642eadbc1ee50656d4f15db55c0584dee30eade4d26ed03ce5e6eba3cf45876a47fb34b9ed3c7bdd278dedc8af46d891ca1e1ca07e8f5b122d92da0db5c98e8b9a1a4293b8de715c418ac58d22b613324c5906f8f88fbb9db40bba02368433134432558b4285449fdb1913c10e97ffc0dbb6803f5c006d8b97f6e6686d3454c1212369c466a2be9e173538a440d684528ea23d62df458a03b60d79840e088d192f2577c4f559848e0311103211b20f1f4b226a41c2a4d838dfc09272e1432c3b6b4b0c1a786c00c139b33bfcf0898783d74fa6c3bc06e2198b5fa0f105beb92e7ec551cdd3e8979165c4bb9b76d0d353b7ca3aa9517374634e738e78915c088e3a995d2080536973ac4a96842dc893c802f24bc9e6d8b5e654102bbb382c5716333057acd5aec86bfb99620a4ddfd0f82bb3685a25f56c38df3094568f7e648a07d93c6f15ef91207475230e356cbb30ec0201f76294b9ef28ea04a4f4b0b49a2d562ace9b3afb5630b565ca4d9b35c038b5180ec4dc184cf95bdfe9dd217a86d85bd62150ae5cf51d50331a5a5d5f8e5cd28b4e1fb1150746da4a6dc2049d54f672328666d147a61bdef61fdb1b86f64149a67d947ee4f81f6cc0d240d5f6de69dc9515824358474ad73281d48db2d8bd1eb12bbb3abf9182f62d9e47938dad6cb2e169bd4477b10b009f997a02f5f70fbed59726608a009220e1ab98251c0aae979713ea40ba3118ad18d01733ee3ff8225f4c15457a1789f7e14fec655a47541f60a808aa87d55144879dd16b43b46fba04ca876e6ceb575e8d93773024a4045ce63a566c76e4cf51d3a2db9027c858e7420e275bf4d391dbd79131d7415ce3add802f4aa7c30a74cc75931641fcbf14c476e7565604b61f01378700f79afa4ef683152282cd000460aba20daf2d5f6d7b71d5703a6ec414443d6bc4deb060d54f732de174c8e8bd9a4b469908e6055f2846765a7f2adb55958e64a63d10bdbf215ce8878b34d2a6b93d9ce9caeba636aa8331063037d256d8b2e9f2ec9da5f97b535cf610361989b96cb6347da3ebd9e1cba8cebe633788babb16f18c03a67b44cb06f7c0b871b32289d91997e9cb1d5e348eb7f6d7b848623ab39132e67f1d916d126ec6ff1748b5de05a74c7ef899102007db6bcf145aae07df55bfa653bb07c2139d30aefd7cf6766781c3483f8d88d434265ae6824f30e17caa4f27b29cb78e657521f8b1752da738c55797d22268c10fd18309797e9f49f9c66203a8bca847aed42dd5fad0e68c6e3126adcd06492a1d40b3676690ec76fafa4d69ee6a4ef6cba9eac93df23ed183a2aa3efc970d8500895b3443c866aa52818f577dedee4a0337fa6087e6d3942ce7e291d279dd4884650e88ff7b5ae8c5fe236169ae68d69080c61d22470fa2e014128eaa47964eefeb5c0fbeb08381aeb50d2a987b6c6a0ec36af9556a2dbff217cb06236156e2693a171a3689d83e1daa0f771b0e722bb4c5c31f947c8d16c6fac3e0d5a93ffc4397e3a5be354541997f19668604318c6d1e23e6af4c27974951590cc133ca2c3af460a41fc9c9e7bf179dbb0b8314d18d878a1fd639863770c39ba80cfdc4b1a8a76a09390341966c727f6b01a6e6f666144d213474ea9cb8265ecd68e6d36ec85d096db8a00e2601c9c14e798441a984c8b7b0134b2e0dabbfcedf62a04fc9a919b8a6d7e3110c51899dce8fe7c7841511ab1b4c383e51d91e1762955a2cf53e10fe25bf72b84a4524e06dcbb064689485f5c94a12c680e9b16cab1614b78c7a3a43e9dbd1bef2052fd787a584b272824a48d4f0db62990ceceaadd552cb2a8697bf5c443a2b3df9a4f820adcd827c2edfb88637113fb98cf9338d5473e59001626a7a64e0692486f6bf02d5196d1135134fbcf0b1d05a24355a44ad4a9d81908d6c07b1224c36c54df39c9a6496fa2c6eece61ef7c0a283d687ef1fe2d44ee5dcda1bc77925df5a6425647c8242e77959ba5d3bb28a76ef2d47ec07be70be9fecf4048f3f77c6d40c3550a9520851f177f534f2523fb0115ed94ea1fcada7b29164a72d4668b54852f365f4c374b395da977d4eae815aad1e402de4488f8af92ee8e5a8a1438c5ef1ff99f24e75a63d5f5110e9749581e1c165f7096d31c1ea47e75ef98cf43d8586d2789348eacf79c6be7651fdddac32001150499bc423b944dbe4c02ba3e6d4cac6c693afa442fc4583fc744af74e128646d1517ca110cbda13b624d7fa13c61f5f574125d8c282752cd95c23b20477de96cf57d1dbdca0dd90b6c4054c5d3d5aa6cb961dbd4515cbd8e727e57d72777f95862d155cc2468ead19ef41985917390fe1d3894edc1eb4a7245c30ba0f8c3fcb3722b388492231de2c420a1a11d629b86dfec70a934d11e55cf34c49bd504908a8be51bf73a22bc718237506578ee2d64df35306a567525a38ecca507e2116dc0776382a899dfa70d35c3b69e4a23d79e21bf69a23d8284ae44ccd916d72519a30d2d527330049729f49c1fb80252c125b24dbbd18b61364ac612b47cd74fcf08e35785e5565de1a908f707a46630ca6cf287032e8be59f3abd7c73b4cc5cafbb9231267722ec8bb128a6b806ffac2748417eb72c56dcaf139a914cbcd7b6010ae70bd37b599b389d67f5edcb8dda973ec0b0001ef911dc44d9bbb45c2708fc0aba42d949fc151c3a6f4f1c6b5b05725a1b29d789fdee2efc0a921f7dd26453085f6994aea4eb14421d856858e8abac9dcccaed369635155cccfc71192d658285b8c50a9f0ce33a7246d59d812602473cecb47304cfa0bd64fbc9d739cc7b8caecfc3a8a3c9e95a22e04ede1049b4048d8143b21cb2636e5295510e97061c4d3d0f9253fef2a5ec487c932ce02383c13aa63cf2c44307ba6b60943b53616d94983bddc54c19e01d438059fa6dbd9e4849ed1fb53ac286885206186b1a526f28cce347ff1613c047287da1c91efeac7d2eb1d8dcca4934ea5590b22f099035d9191aa04effe206ed4629b843488bf05915a3714b4d2e860e1e5e0aa04324257f8f33e77e5f537087fd85ad23a50d002bd81d7525198b2ab64c7fc472c7ef375a70228e3be892ce44c9c643ffbd1c8d892bee1a929886ca4545b15da7bb79cfb94ca758b21c0031993b43e250d667f63c5f6e91fa41880bd4f9aa618c97910ef61202dbd2e1891126dbcd06f54da272680e4fcc53c60c25035a4ae9c7b0cb0eafff6d04b12449b74d9428261da07adc90235046d893dbcf0fe39f072deed3321402cdddd68b18b67e84010f7254341097dc1684715e6ddb0ae1c83cc6310685f57ea3065c442deacfb6c6dc6db465792aebd6290448771df653a1614013aff52af70b4032802171cf4749e129326e6107bd9fbf6cd141f6f5f0ee710e7fc3a4302926a3b15ba6bfcba14080ffdb02693ad03c85bd9e9c6e51d6d7eda3df42b1e41de30fd76ed1e54db5a03d67b14851d836383d3e81320119b6fca2ece644c75e9433d7bb9c6ff3598f336bd9e28c0b0edc7fa2b51bed98860bc0e9b5fe20b364fc695d9b8b7576d45d796972e7d2e8b1ab853d59cf3d4136c1bd864cd955afc9964b84ce8aec5cd4db73c81416eefac192dd9072c40ef942f39f026ccde887ab7d8a325e92c3b46fa5626cb660004d16b82c43f74fa637948206001f9a10b52214ad861eb3d58b99fdeead25836377de3b4fa1b4a63cc5bcb0d30ad68ea7b3428c23df1e4e54cc9c13b0118b75ed0005f9ad4e694d82c3a71dffd6caabb6afc950f0067fc2ce0c2ff771ccd90cfd091658981eabbc7e029df34175814f973571d78a1d8fc0013850aaabd778be7bc5f9c5255a02eeec88d207967d81d60749913e3cdeac8cebf734d519efa0320e0be16860bb35b018d7483b2a582cf9b3779c25a5f05b18de53cc25e31b6ddeceb5e9937535bebe3a8759570b1e9dd6079fa11871316a84523f1049d2bb1c77a01c2777da33b593814be671fd4bfacacbec565e12a9c288d9e448d54328a2fb7069efc494c44fc465df4b3667b4887b27e3da7da56a0cf29717c011a9aa9804e72dc814897f4a7c0d0a377a461bb999308536f8bc2feb1f5f1609df80968b7f29ef8e63e812d24d24da140a5e2183db1adcc826ebddb6ab8288f46108636e427f5c6ab002a53bd98572084bbd7b1231a5b360c7b6b61399ccd74e9168a656d265a632a3ce9a3288354a942d3443a01679df4fcc26bfc61ac9b09167ba707d5cb67197a2d25c1cbce48c9468df5f0921f4803b360b5834ff6e0289b3808ed639dfb5d23f51f58b9b784ec7046230b0b7149a8efd98650942d887aed765aefa03c2bd66ea7784e3ee2fc2cab619c5541ed7da3c82dcd2cae1520c433508c7d7b1549d2f50355494f8ef6baa0ef4bf02289374eaaa6a5c7b98c169ed945a99cb3c5a9dc7509ce4ad01e00e24bff2e5bc63f0dd49fa3934bc7e7c8199342852e4ab1d2db69424677caa3dac55304823b17a046e7470c6153f0de0a1ffb8fc68e825c6eaef0f266c726417e26d8e3b694d9db84949d19a21fb31fcdbf82ccafa3de051838c2cfaf72e19ca7308de4e3f1b4b57bf437a265e382258d4b2ca80b325710786cf1fa14f6cbc589d505db80771a44a4fe96d7714b097ada306c6bd9af874bf43cd3ad7054b756f3c3ab03ed21c4c79b64f0d0691f732533c7f22aced0141977bea69a27dae406c5880f63fc0214336fc32e492c5aadb4487cdc6763e5754f985a87ee4b7a6ad5b3df4fca7efb5f16faac71c290032698707c77a7c7d0a4b30e2504afde1b7586c29d49d70cd724aebe5ccf2b8b86562dffffc13f0a019f39c3c2234e4d12727552e9ea5247c2c6242b5e41a1123e3eb0f5a5ddc3dabd6e01baead05dddf24381433839a3430c799e5446184ee5b7af4cb82ccbc892bff3227226bf1af10f84553c07585970a550be8b1ba9e331060edc28aca4ec13c8824cb159cc8f66c93d0f769592e0cee3475f56cc51e7008a45b3f3660f6bb009d5306df88c921dec5c04df9f7a4710be4f67c8195fec44266e99dd8cc96f7e90c40b641c65c341c8c59ebf380df2f8370272192bd4bcbea70f6fbfaba3cd77af41e335dfe8bb48029efa2e65cb059cd7398814475b5b884a87df8c1c24b0ede8c08d5689da4367509581bd92e5a4d3600c7b9bda9fc55ba2fd33963d52b43da3441c27bbaf7aad39346ec42b9fd62d83451f277b57a3c202cf7c11cac83d1c1b0816ce69861737ddd07e32b64b452135717e471b69763cc1234d2ad59fbe7f8f5002daf13fcdc3b6fff185e474a7099f5400e62fdfaafcd20bcf1459bfd3a683394b9ddabac54f6887d1e6679154891be13a79cbb33d7358d66228d3c5897eaaf52e8066e91b778f2e272f99f246fd3014752edbb9d2902ef00731005026526a48689de42a4ffaaf96b8ef8032fda2f64233e097420e8b2cf2c24b01efc134aa60c928bcb7a488f8de383b98dd5c7b7007ee7712e33e5135895099028a23d85e5e1cf7cc209706ac8ca486a8cab3ad006dab3870b82b2274dcd1732a1700882b6f37964c25abbc94ff2300467a12930d6b2ea02bb0b0da8e81541107e228bb78df02941d69ffe52f5231e5de06abf1467a16dde13664c58a3c5900ecb69c8f5d374c8b5aa3666dc71248b1bfc954fc754cc1ca7ed81ffb263bbc2913cda7ccd59ec437cb389132c2e73614ecdc255580adc79c2aa0e2c8ad28c4c36b8f9aa42e924cb1077ae3bfef73097207dcc358935402b88c544e3b02f330f6f5eb329faf5c30b9bc23b3c04742f0cee05a1a03c54657c9ba91b16df1a0ca307d1024efe815c78923234a6abef01a93090533ed89b1574b8e969af5523de3fb31d2708995962b2c5fc745c713e2680bb35d785a21fc882808b4b9e7a8a19e183786329d0b277f081298dda043dabe1eb9429fa2d77f39499676cce825a1937f565dd430b11654bf826eb9680ac2fc94ee438ef2619a0dc9eaddce90be8f9a9b255574061d1b688fd838fdddff9e65c2ce3ce30e264a92fbf0e3fb10e93831caff4ef3d0e448b6aedd3726198f39d335b0d54443261fa5dab122449fd880fb4857e5296c0b6705132912ecf7b3c6540f586c44870a9bed72d15f75bf40b802970f36d008ff26e3e93ebaa8c4872861b85cb6d8fc3a909131a32c6109b6d21eb1ae8641c91a61c310b3be30a87b8472e6aacfc090a04475fcff1456388f26338ab86de738e1c0079a92b557c89290f690d088e80b6f9a00811e8f640bd8d6bc8f42b5de66f84eb399afb4b5a5484c0512aa4d31de10e46b36389ff7170b52b44da28a257716ad37056319df80033d4bb46d1ab8b09b658b930b8950ba79258d452338e0eb2933e5322b720ecf12754fd8370551f163a5ba0bf0a1e4409b53c85106d8305f79c5c459aaeebf31043372ce861894dfd5a99d0bfd20db19e2d56c3a2fec3c67f3057098df8e19b8d12b183b5a2b2cffcedd63379d849a486bd0dec40ce4d5768713c6581f613c75ca11834fdd22202ab5be6f29f9e6f6e1b54293696b6181b73ce06efdbe6f477c054852063b86c0c09b2b0f4ad2a3785ea20230cad21ecca560f3998d7d1d0c08dbab3bcfa270d64481bc9601824fc9df1eb18c24544f80f8f6437634c37ce7a7aa69f77ec896b32ded700657ba11de8382bbe6287ff66894559e9c22e5c6e809f7986678c30b704a40111eaf970a13b9546079e8d55293afd504df342e22a5deb17f4b538a4099532c91d9f3ec00d99e0d4b80b6ad88c0076a22328653559ce041197be3f652ea147a9c633839efcebccd843babf05f3d61ea03e291e8803904ccef7f58a3744f53bc6d8839d97b8090c373d20b12dc1c669fd7b98df0d2febd0c90989f6048659cecf7edac8669303100fcaa1e8e6053c7d19cdd316605604073104979111c84e0643f600cd022e851c010e9f9fd0c3c027553a85d8f6e469aae919dc39eb0f41b13c93e5b15efb6b8a3e5724ccdc71fdedd1421c5c0ee90e9274c75235f4ac60348c29020ff953e45ab23015e0eb7e982d2c1dcadc70155302b78afb1b1bec30fa26b7d12ee3b2115d794a70eed26125550d5360de016abc8d22d9992a84d92599c779798f1d983768372ce1aa26f22bcb1b4613e14d20214ad73b608a2613866ad63671e957fd22889dae9f6f3013f53c5503cf98e723d5ddfca94b17267800344fd45895154e72919184799d2c1bb4f95f09622df03a2cbeaf347362751f40f08393b7d58cb5bbba8ce4d0425948c557028439ce520793f0b1957d77358fa7ccb794fba1dcb041f61194300c45b3ce9adf1112a814ba92a3f0b179ee30a055ca473336d3e5acf3ba2fa1913dbcd1071a757b1b3c1340915b65ddd8260bbbcb7e8778b58fe43d7313bb3dbd5c467553a4bf852d547a12a95d5692ab6e51b55d73165ae61cb474f1c90892bf8e5866e6aa781aac0f5b6f6f1a1731fa072fde74e2e6d3888b630748743e00c03e06d92ce8bd794fc6e0a0f2c785c761307cc5b1cb913b604c419f6f943934f92628026b531e259057ce96600b6d5d2d3d1a8c65a68e5eb49d2e2edf33077a790f89f83f0bb5095a41a9bdd5147b3a175e2ba5371c732ff8adefc23a29d882a5dba004df898ea2b5ac013ed507e694c5ff706a9877f26925b8c6b57e4c9329f4b8c99a05995e266afa16b1d0fa2c46521b7439ff8b4dae7b0b660f45dbda71404dde214b86e4cd0cb1da602ea610a50fb77aaaf9d8c18fdb2901c7c647d88dc2c476f05faab55c87e6ec31604e412638481519e7c76d19377becef110ddcb4f41960251eb99a541784f900bdcbc1cf0944ac1497a1258fb8997393801650106b7d546d933a754f166459bb82ad715350663c72f613fd6869354910446d1a68bd1857a249c030dc7c8c84194362e640b91e4b3a0c0930f9cfc51d3dce2e40f051f3b8fe6f62207156344885700a4f57845b9d7441dae633d56c031472b362a7dfafe025ec2143d1e6c3a9811eb731b2dd765275bccefc821bea0b679067df74b39f18aabcde25b910378543937245f4f6cd991bd0a35012342b6a9d6f6d26891efa4412e7606d2c3fd62f18806c9ff908e3f734796f73edcc23fd49747754e8d2cd1f4a75e0c60f24b2441535419e7d5019e007bf33a925a261b07e9b8bc6e60a974bbe7c43e46489c4206b33bf19f4829c670599e00f14fb9a8ac74b2a7e73dca8198bf0e3d4a20a578004fd433f90232969c71ecd21fcfb8b0e86b0c19c8ac18f66d315231c321e4025f38a967764768533ed6d2d6848c6f2c2498cf8173937350add92b414a24419f87c12f49f8651aacc84ba2d0ee8508ec8ec7bf4302600fd5202d6259e11587035b40db46507101e9a3c78a72353e19cf3dc65ff0a24fe8bb7a0bf34e952b21cda5e1d996f8eaf77cece43bcda68d48e6cab5ddadff9ff4bc4cb329ea850100389112c7fb68dadb465c34549ee51d0b39fe63f25d6e4de978df9db41cd9e20d651bf5d474598c7fbdb0c6880509517433312e9906dc1496d0c60aac02c7730255b5e8133ce7799f50bed913b8bfc156fc800fec0ff3dc611974eb0eba111b16b7b310b6e356cf6bdba6dc56b5eb8401f1914946f6aafbd8948d3fd59d0ebb5982cfa2ab55fd4132dd0a3b0c519ead56a1830e4c8b5290da85c85d9a677de9e9b5429469c7c8b766f4718267d375a269f814ed4717535845bd89d3252ee6e67b057e10dc23f06eb1aed80a46ca08b02b3d774ef0ba58f826bfe69ab3f262951514904083c243fe542aec7ecdb4da8833bd2224e0e1251aef6e6402858e4945d38be47007fccb8a60b90074f4cbc2d7e4584d5dfb648ffdb73b31cae9ecdb10f0ed14dff3bd131441c71902b40fcf19ab8c243275646f302a594a384db019ff6fc034b59d49c2995f1a3827f0e0c946a96f9d59afac02b46e99e4ccafbdfd1cbb8dd17fd1cebe9e1bc0ae6fa51b1ec2b3d51a9e8145b4119acee9e6978444c9d4ab0b2f3fb51c6c73721def3687d179ca7c8192be38ebf85f75c1d360f53e8ce5b242e895c412dcc672a14105f2c0d768e1891097a8ee5e5e267c41e213db82ab7eebb2e08112ae5dc5cd7474033309d679df935633f3c6693360044c44622a20048e0915e165cf47309ffcb7be3e004bc2f6cec14425897cd4f9f78779ec5e132d67839ab07ed87bdb7be40a6a868375b1d8579531da2043516d9022ffe0acaabc7c7d150d04e8485bada230650553bf470b2cb2924602b4d51a99d7f4f466727395127546850f8783a9639a7576559be9dcd707b8ff1fb09c52b6de13091fcd3d719b44c5869e32e9f316ab443c11b6329a7f7b84b4d0d0562f7fc9477fc05042221a796ad2fa8c4f74585d2c52a775b52e9923e78c5b2ddf746e75d00d1b53caccace44d769c0c23afc8b8e57facfcd13d2a3618c833af2a63f6dfee8e9eec63ccc6b67620c2d5505deac89ade514126ae91c253aa5133b91fa685c74f0b071b0f45dcc5f9aca3a081002170c36773e2633e7a9ccfa47d6f58805261537f1302f156dfc231695999ac60e78035bd32be7bbe37f422823efeb2fb94ac21bd4f434f85dd3badda307ca984ecdcf550703f1e4e4a8c1dfe2d8eba77c560dfd8d32255b84acf385463c45e979c4eeaae36cd09b9e48fea67737177c4b4bd3e71d52756c0451a09d2aed40029608dc5ae048fb939c31aaf9513ff0ef6b1b5aa22dd6705789e1fcfe5471d82cf35a5d352da8872ffcc2e7ad45b122cd0ec253e07d484fd090b1451f76047b32240aa75183697cdfad595e9abaaae5631e8268e4b1d0da0d4994acb4ba55df597592e6a109cfe23cff42e3173da05b9f4e413dfa5ee296f98f8b7988e1a2ac352dae1dabb3cf40f8422d269c2211dabcf2c84ee5e85c323158681ef85ebf0aac0f836875f59c7b61e4a017af4f0def0018aeb06e7c3e67bc4b39c4f14b88a2d88e11a74ce087cb3b6119c6281a4a5efa0f06e32666fe7c963fc58bbd070d4f3eb9b4199c44c2db474aeeb29575d56136f1cf0b244eb5c659120d76c799f571dcc8e8feb0e9cd0aff4dae816d0fc3ea38471223784b46b1c77494728b2df83ea0eaede90b49e120ba5e336ba358855b82d62ae9a7de6a187c35d664abf543196e2f02956607a3901686b58bc10ab9e4cc4b7c14964b2af142097da1b881fce20c4af1b9b069fd62cd61a671a1d0f14aaf1c68a5bfed261c1aafca534909e1d46677e8fb45b5adb2b9b407917d8d12f418cd894e042bf00c8a036b8899acb34fc2af46358a7a91517226eaf07ff3694123dac37bb0cda98f19f5795bddb56351ca03c3fb44023a83a13744345305135f39d5138afeb6faed86f73a49dfed12be6cb1d272a87345b3b17286829d521137741a32bb96d92f206804502bd78b4c1da07d0243d9e4a763133a1c3cac6f8b50e101633801619b0d517e8a07f7d95fd2fd3443315cd1c8f7a5b0f3692279ca552ab13d5ec6c004202917aa4d57f201933db65edfcac580a013566b611f3276189e2d8b95ef5e5f1282019f19f97464484c4752159a5605b007594b5227ea459de6c63d7cea65d0619afa144b2406a1d8520bebfa6e96021ecb2cb54c4f4d0eaded4c11f8b2730cb1ea53465449bde2bc1b06b8390ea5af3b64903d2d9f3c13d4719593fae6ddcc8570eb34ed899bf323de74ec6990ae03cfeb30c29c8c0628da3eb2efb96affc1ef66cac7eb5d744f5c38f57742079672666636f0fc1eceaeec55b49693ab5bcf1c6189024778de8cbebb93c1d9024be66e372689c0f4c15ad477dc36944003338696002940ac607ad22394f1d1bf609a06affd591c7c8f45404ebaacee0c3c5f93f77d3ff8eaf196918d85cfa201398f62c20092b026e03c0ea829b18301a16b344b1e26469bb82aa27fb09f4551115038972b01619f5b72f6a1a32159a0e1a76a6fe507066027b0942629cca944540092af3b71c0dd85a6adf8e55b378b9be6c0f25591c84f283d110d3ead5ee4e495e9fdf56bee0c285350b023e356c76570f7bf895316d28884df5eeb3f742710b03172656f5f86d94a1c1129b08e2842e2bd454202d3bb441cfacd607b08950653e9550633b37c10ce84388c52b0e3396f56969f7db33d7ef58ff3f8e78a2d4149fad062b7ee6d47b74371216108edf5749312513d33aa7813469420af85cee2e94b991792694a08c4725243107ba2db33aae85bb387d521fd0895256cb6aa64d55644a3423d8d25e7c5ddf1affeff33404a3c30a214b020a40ba46d6b0e2d3f32e4811c4cc5102e987be9f3c0a756127a9bf5eed675d67c05347f888454641300e2302d0fc4c58edf46398d54c163e3b19aca49f2f39418fe50285205b766d6c65b53b0dc4c2edaa77ba60e7f4368f8990bc244633fc9c2f6c395b4e7d08d502e922bcc04a3bcf6383a77d9104fe2d9280937d500552e7b44013d03af53a00f44118ac754f3be78cfd987450fc61ea83bd44cf702937c76512a30bd9383a81aae07b4e82f0c19cf72ff90e23ca0b3ed906e955872c4d36aa35d2732b1ad3595e3320ac4f3fc3b96f7c726f5d924c9db4e49e652f68a51eab629290c341e8c376210b4bdc32d014e84e9799e639d9cbc4cc3b052532d1c8d0bdd1bdc1ccd0476b07a9f6e3dd537e8110586ae9e4af21e5f28e71deb30d511fb729dbf45cc04da014bc93fe5c8ed56ec4c4c459bc02cf68a6465ea99f5a25edbf156e8180f45c5bb9894607f8423b0e72574cd7f55fac164a7af89dcf5b0776ef3c336b24ac93d8a8d149e98ea7b687ef506f7fd408092e84595b5e93767c12e9a5c938425e5d9af8e60f0f9113fafd6c9baac7c7595fec0797da85bce46a50f6d6fe4a6c92632a3befb8bdf0c6c09ec67a7947e84838041c259cd9f0a1d8fc6fe14f7d211ddf1f3591d25d7cff2b51d7aebd997c8e60bd0039294035c94dd3ffff1f01ad220c33e1bea0b21dc6827353adf0751797e28410a0da50eeb16b365b38aac72d35e838f6723ce055001f1d4da38bfdf5ca61f4d278b0aff6ea7c55539d1cf8a4b0da683086744ac12bbc5079bf3d87ed46221077e8000a2d78a3858c233e849ad29660919dc3c208005993b5709429750b06d0a3351315094497543ff1e0e2d8d8be61a7a72dab8d7d5a1ead07efdeebab85ca875a8ab0277130e80a9a6ebcb92a7c20ce770d2d2c07a9acd44f657d8f50fa64633471c42bbb247cb73bf95d1aef797d3e98d132c2daf926f337e9bb2ac887a5926c1450edeb8c088b806fc480d4e112f381be7e194565f9c0250b4b9f85460afc5345e6f5c2be1901c7c0bfa91004dc9b438aca9c5957fe79ed52129b23e95bbf9e4ef5d2ea47acde553b6c6a2f347fe4830f313a547f3da2965fe908f570e2e555da9c4162749109293150a357b879912a205ebcd7a513feb63e5e5e10ae8ca8bfda2f679b5c0627277ea2c564585353e6dfe67e57fac7065b3a3951d71364fb046003c908c66721c0cc6e7b8f6fd423c7185dcbe2419880eb5f8715e37fe2e0364c5c65d9d40045e13aa6ade30f4a43580b0ca9784c74b0121fc3b0556fda3a254b6f456ec983a0c4df5bb953c39c0cdd69b24b000c9233801e6ff8338245713d8d0c96874cdc5e68b507e8d85173ecdd3645f1f72c0c22fb6b2de508d85e6859fe68634c474a85163f386eb98cded61caa7bf74d735f926072d1a06fa92bcb0cf85e1c5a84b5a8b86b46cfd0933e8a5d94558ce831032e2536fe532981625a9e1ed6f4acde9ffc7349a4170f0d44e9c7f98c6353fef3a16930bc2d7943b321369dd5e726831e9cf11d5869158c89cc8b29f050058472b4b030aa0f89c6d16e6fed20023ecc5d570414506cd70c6895e3b116855d3e42067344beb474e68736a131621f183a1855fb871d8ac0a5caf2cb2139ebc6823800b0cd2742e9634a73697754646c0d6c12ad42009505f26fcc6f8e58e92a0cb91a823d618678d51c9ef20cd75ce5036cd7dc61b8847e3cf9fc522eb960344aa5463dc800003b4f5e9de9e9524a29c1e5a16b979d7e9fbc26cadb2dfc78f277def9fc111c25e9bf4c1fc067804dc782cf888806ea656cc732d43fdade5d99b0eb6a8cec1a942b2e63fe75a99941eb6e041118d97741860077ed0748fa1c88569e65f935422e0c612c28aa31aff142b80a6a4aae2ef8d93d1c409fbe4d1e26be0cbe45aceeca0efb266d6af9675e8fc5b4fc9bd3113f4e5144d94766f11003ddf42ed683a5ccf9225a0331720a96033879d90652756f498d6eb43a515e1ea1d03fc95758d4a0658c645d4382624e642314628860027d06803ae77a6656b60bb299f3a2bf03850169fcf3ae50bfd69e16411d2d813eb330fc98561de22e4378ebafca6587cca6816c9d60c22a663009495adf82ea7310080c0b4e59723b32888faf2e0f851cd07398c5390ff701dd97b6d34b202b98aa2266f0b386d444e9e7d05507218887e497037845889d59e04a4750855b3ae67c375f4cb9e58eb9d67c55727c5f74fe0354154445e8a05e7a73bff8757d4a3d19abbc06adfd7fde276adfb5934bc21a0062f6e313277b333abe389e5811a70b70923414b561186efbcc68e1be22fa41b5a4f7bf9f7ae2a3668760cac316379383d06cbe350de50d558eb848bfdef0c4521a9f7706865c1b4ba73e3b27ec1aa4a5fae625b41f0b3e36b227e18a39f7e10fd496b48edff89f63cbcc04dcbec8f1e0a57963217806e4f385f966239f7ac6257e115fe45a42b56a784584dce97bcffdac0b2757e66a88b4cb59d0d7e548c8b5a8ee5029257213ed18567066117ac2249bc5e871156f76e1136fe9a235bb334586b9c0b8fb6d704bd8742caf1f7cdb2d9cb384762ae3d20932e14f6b79925d9c51f410893116bb8dc008ff6cbcdbe457d6401d00a86e0be13d8d6cb8a08989f754ea51be50f24957dfe1b574ad7529ba68b10d389ccb7d86c6d82fcbee42d8083011893aa5409c24f30cf1b6c4206137ba77074da99f22487e6f4484d5323d71431e5775064e9346cbe71757b22c85a949c4ca857914fde8172a0ad1f9a4c8524a1a4948e4e7becbf4a6b23bbb2dcf578fbba2a3b3b6d3992ed9c9c950c5259e3486a4035422a662b557d1104c0037ddda03d9a12112a7b686f1789045aad78e0eddeca7b39e271903e9e6e11cf352ada3e5e1038ca61f9c216eae5e2ae5f456ab47bafdd1ea3b1ed9289ba3f8e6db4d5897bc6322bd582da7b05c4d2facb35b269c8a2808db4b3971b673172550a1dee1ce34a9044dabc4190263ea936b8082d22146791e4126291a24c84951aa78d2173150f8a401c456c8e577d2c5aa0a18c12e6c23a5174425631706670025675d369f420fce0b66ed3016be3e58a56260ecfc4720f43172ec58e3e349807d881904f6178eb51f4b29394f65ea165b499e2c254aea794b687696955d1957686320b29ed06fa60199c154f1f2cee40e642c5a7775c12911952ad7f48d504909c0a56d398a0a0b14f8be1eff13730193cb81a83393bd5cdba46e6a117d04d489b2439fe5604abba07bb29c30ba26d9b538568ac09638954031f31d0b7b3dc97d464482615a677a6688637a51befa9a061b76246e9cd306786bd8a7f555b045d1f9f97f1dbf0400c320c6ad2729087b3323dc9347e6dacb7baea584c2222ba1a4d00470a44a75b611cb0e2992f4465bf15b7529069ced0de69ac2569b230565f874dad0058dc457cbe9dbc5556fd76a3097e1e0d3d3002ab302fc4c7afa2cc0db44a23e5a79f1410580741939544f71912423485e29071db93cace5c2975362a11b4e25b90fabfd6479c1d1c0009ea32bc633421903d534e97e4c72803adf7feed1f7f594b79962b1cef2d2ff6857e553574b373dcf407d06a23768df4842e98bec949eb1adcdcb98bb0899d3a3ec736eb053c5619486585ce42937dbf76e89d3b8b9146fc9637c581e9d43547cfe8c11e4b7d2c7a84bcef09f7b17448e03464f42ac8b076d9c630f78802d97983b7f3cd67cbb51a342c5646b3bdd99a0554c432d25da96aee3d203384198fea39436f32cb6feb3aee785c09242f7fe9a9e66a5011b32f7f1fe32b09798c0e413388871896ae82710b030067fb9e2e5ea3278b94adf6b16d335651b7379236414d66b5192d91b11b1ccc496b23e26ad27b17b6ef357e3751a2a7bcf43fb34992437e95ef4c8c961b1e933a87754f95a02afc1a29d3bacd8401f4592436d290322ca6b338536b9ee960e8d0c8cd9609618f9132e7c1fb66b316c941a545ebd67e6587e0cc06d48b7943de292dadf88f5fce9a8494200e2411eeddcb82654413d4babeb522ebadd3833c07c4cc08ee05b583b7d3ba63099db9459a672d3d827cc031b2169db3d52005a84410f6a3025e473634d34bf50341e66a57207aa776257d2688fe5d2e8f6a4b2e6ed425041cd37461ecd5e0ec6358b91dcf425b90d62a1b8062b797b615d95052bb1fc97ec72b7d2e9f2ae51d7d1bf49993ecb8cfbfe8677f651e15f362531d8b33e4eedbc1e599eed8e27db4b7d1f856ae94759cdb5f28e8fc150fca74b2b09d0d91a91058a9f75a393fd7610bdd15fe68668c2b1b0a63f20f2a48c1d0fa034ec01077ff88bbfb1d4f084edfe7db716e982ad37549a8e43daff28ca7b38d0638e745d6f98dc01f514e2f431b1117e8d40883fc02f586b1184062269144f3985a6d1c08d85e1f6ce978e86c688a638ad9ede8551b3527da1bd30b36f176ae6418a10fc7842794f7e9453c520874d4372f791f930b36f9784aed9b85e59a6d2b2f396102cce76c76c017b60a8d7b673ed85db8f544098026cc9adac44eaf4fadf6892e9b7963eb8e18b2eb580f4b0a7cda799baec97354eae955a89a6cd4706228e38afc9ce762390fbebd773f93041cb041e4aa8619c718b6a74b322fee54237d5bd3541aa8e32e5e60c8c809f6b33cc854d1768ab26509d67bd16cf5e9912d127fbd4030b8fe266c5b77b1226c918359c2f8f6121cf6240eb1b6a48fb0bc77ad317c881c7f4aa0d7b52344f24e7018c98a0f5f24ca2cd83adca4d6f409684b42b699c90fa5aac7e751d1682679dcf2302beb4865f53eb44cace8a1a17bbac5f92d1de8ac16d5d9a7becdf2b46fc2d798b19d6f2e0762aa475b0a5ef6da4d49183f9031733f57d8fc2f7d99dce52d3e9f8c390ebec59e105bfe2b1d06948e5a84b57241f2f086ae3c41e5d95e7340f4980a1fedbe68eb0a2cc02e1fc397e07d45b6dc015e7258e2148225d55956269ae4eadd27b912113aa6d5a9c9a3b763938ace3516da579511ab9133a5a56be008d9432f79d225bd2654ca2bf912cba76bd270cdc9b6ce0a1075da6a5f936d70aabcf1de058d66905aa9c8845721ec0a77d9eeb7ae0afb9889e00c8d86452eba6d7926e798c2361a1ef1af89f64a58df0028932d437950eac72daf674c7681dd588d0f5fde5883ced23458edc0f943036daf9a839b6862aec11a37c7369926ff2be365d643e073741bf1ac09e4764513fa30b84af780202f486d9ecc500d9f9b30bfcb6d2bd4b95a6c4f26e8f17d02d6956bc7e3dfd2251e34cec9d54ff8566c530e2590bf09c2d150fddfc08d03d5d8fc61872dc90d1bad68ee6f751ea830054c6f406ec40efe90b8ae9ec1cedba9f94cabd647b8835a9e7a9436d99c5a0e08f33b441811e66ad5de15c4ca9281f3fc9fcb2230a6c4e8afef4592151f1f639af030f1b8a46c5cde580434945f8b31cd720c0fa78bbf621570e039b6861462be0a78d64fe58eccbb2b6a28d0f464a4ce4b515624eedbee5aa1a101b4497b6791f87546181ff9242a85f1328e59b7ac3c2d1a174c9673ee64504a828c67ee9da4a9ea3223e6f3bd125afe9962f9d2911796fee9c81f1f8473567cf8f4f53c1fb63925bf44cc30629448d1886d9532d80ee347f4f0c2518a988f26c6c17fe66935ea69a4ad72f549c30844be5cc6062f5f65efb18cff3bb1476039ef39976f269d8f51d7648ea9ba814425d3f8e64f015db436d13cd17afcd8f1860b314fb657ae9970f729600a218c68919718a4c916243824ac895fdac1f07b3336d68423314b2484afb94d1f9262255d16b63be44125bccc6e1cb19a7d7b7da98c106ebb866732cb0c22e255a5bed7e37694c684777cb6e421d5284d7ef60ec5a56620ecaf89c832561c45238019555a6933ad52ce0572e1b9c963dae5571a6dff20dfacd4507036b40828d87e75a3805eed37a661747f2e704477ae70bb4074dc75d71692e8b21e6e92068abe51bccc62f46284568c0bb3bac1a41c8533e6b172d0eac148e7a0f677eff78845fcbdfe785b98d7b9a4ccb47de677232a04938e120ea609b756f158e6075a4111e9640e9f58e1413526020694eec87ee1c37fc01edecc4045087ae232bef45d725a6846bab0b979b3a6a8bcd391fa89c44edbb51970d7eefd333890e87472ff08e2b8311bf73fa73bcdae07a7a4dbe46bab74376fb59b2e0370a9ac4c003029439e00118ebd64d14e764fe506bad3bae053b0f989d3a2335a66b2d3ab81b7853287ae6d785bfaa65dccfa38cfcc929c8ef292f6fb91298a777278e23734a2eea802a9304eebe732cdbb392d21bf95d784307b1316d7f70d9f26e1814c2daaab8c3b8698b36a05aae46efe9043bbb85a475a4981e727639540aee63e05678aeb3037929419892f01a68e2812a4d11a851b018420adcbceba75d0c52174346869feff13f1d90cc2a2c2af2d852de29704e52c3e2b9f34175eb62493b7a23a0da7e546a7aaf7c94773df926530a4d79af0f312d4e73146327f65e8b831a1418d670e7cfee1b556b649951d792be399f4d8a64ce0c60b817733767257389602868dc70bcfc513eaf9b9d3a8433a8758465323e2d2951ad8ebd2b86a71fe93307abc76a56764af86a5714b2d115d07465c021c078db60055afe67ef2cf98c7a88ff4272485beaffa583c10f7346ce6f972fb2475fdc6ef703f9e8ac25a6e21198a3951ce04bc3e074f2d9ce02e976d6ad6324fd05a4e418f1bb4e651cf2b53432580c48b7a3fb0b9de65d32e78c756b696fcfa61f0f3063d1ba369b2e769266ad63423e5b60e33cc5ab9a6b50d8361de5ac01ccb44105884240abd8e3f24ba7abc0165955dd1b374a6574beb6a9ab0f6c10a2527a65e80c41b08ce49562870f1f935370fe71bd8ab3a30cb804fc1edc3ab4951db5d8c9f2fe267add08ed6b1c0042bac79812a2323261c4c68811d77407e43d0a8207702feac9f24581fc2ece2a733e3374e2fc9d234da95c52dada0e136d1bce5228b93744d3ee62d84641ae1fd8f0d1732bab474342c2b7665cd6c513b6c8987f6dc9f8b40ad5706c8e18fd3cd01052fbf3b906b5f48aab03046cbbf43b401df1ead21a98b9968d5b91c9c3c706b53ba4e5cec87107bfd27cc58ed69b7f70008057511e3d8a711c3cdf5a19ffd78d67e0eeaf6d57fa1a93a5644e322b4aa77d4f418d7b876ce0042fc5dde41be8b1724a165b02498f5e0d84cc78d47876e589ee8347a6f85499c30a66526c52e26d4ed497733887e51b4fe3d8b3bc514d8805871572ae47ca693d69941cd940723e319e008050c9f591efc9b0df20c5081d95477b65163bdae3b48061170ea617b0e4c29e09515ae64c6c4c0d938517c04b196297dea8b2b401fee87a36a9868471917f3dd5ff108992c142858f6cebf218e2984a773f1d1acb78d0ff48e1227427a6070760e86e3ef6755ab1681bf4c3b7fdf4d10e1878a16ad3141ec7c3c24aa371eeacedba408094443701d5d3bbac210776b3560fd228ed0cc61651a542ca2ef7ce49f41fce175ec40a8cb771cafd2b0588f60f6f951b5ab5b30668c7d56c80e9380a0355452daaef04dbc393ebc3e9f527fb03aa60d9715fca74726f0857602b8aa73490b63a764723854b2c9cc7553fc71ec06ba9990fcfc6bb3687538b7a5dc82dc96293745c1557b7722a0a3c787d07c8489df588544202a96cebd06965e4023960a396c508919b10ddaf0dab5330ad1d225fb3a3b111bf2c1f7ac04ead90d156350cdad631fdce8793aca4ec21989a5004b6d2af11d8958fc7516439c2b96fee501b697ee26a281409e9ab43b8951c7a09ce39f3fae390b950fe3a0f0666bd24f94736a485ef02ec21add4c0bb40928d743e997207deb68faedd07fd23eb3701f1c7bd69e4b1a306860cea40fc0acee51f452866e9f332c9e99dc6e9d5b19c4bca486ebfe9f6baa519d6ccff7c5ac4bec4b1b5fbc5e85034a0be8d3283aaab476a103e731fbee073c53c06be7a082c6ad8ca8aa998c3a8ecc2e066ef0fec613e85297f88410307a1f82be814288aa1fef90d29ab4c28bad5b17798965c1263a1c3d4e6b4be9de48b1cf2f729598f725ec1c486f95494d6692d52ac3eddfd126451856a025425fe94f359eb9bbf563ad0fdd3160ed286b84b845bb5556dd7c21f6f4e3d8c34f7d6ebb5698281556f5e09afd502485b179fe8186d0accf90cbda0207c7b5f19e5f0e33533c0f0191efc698448a05e424f56fbc6cb9d4629f55c79e512c8e8befb341860886feb8af628d2911ec55ca91687b66e0ae2b22d3ad96734ba5cb0925d355b1372df1b13cc72046dce17a8f65ba2565c8bc63e4e47aa3fc1d9aa0262c789c4761ea433465205e3b47fba1052144f5becc9477dfb2f9369eb36498a9cc671f0caa46c96a4f70a0572f253394f22209e331985e0543c60125cbfb6816fa08f753d553cbddd5c13ac960941f4dec626e7c0f408cab8c2b3f1724ba4f9614a170d99538ae615eaac4a8385230034eefbf7459a93354564c1e15edad1a334da7b2f9ef5249078f7e468feefbe688314f21f165031dfa8d6a5b1201eb7f7ade3797bb12358ed84f1c1e3a3e351b498aa4cfe97e2ab92b368bad3055ad03a557455337657c3f817d6017bdfab1ada34134bce15bdc072072f43692ee4ffe291f8be2e8a31036dbfbf072df32119350f9666297ab9db693cd70c596b98ef26e5decdb5a548099bb14e4467ffdf0ee8c7bbed7193eb38e5ee9f97b2caf08e92f7634ec0c2c86ae273957fe03d953f1ca162477fb0c8cd70da66779d6df8b4e0c4f3cddf3d0550b0606e2628320a8e16efac016bb68450461f3eadcd001d6e9a2aa1be0350a8b813fb6a69ea3fa49f8ba31ef62fc482d70d0fe6014fbc65826c02bc75f4852b190fdca35a47e1e5552b09a3416120b7f134780dbfa46ebc026cfb5e841ca3e17896328f679865326e47bfe7f2a5ca2d7c4ef27d7405948f63762ee4102b65b141ecba990384ad73dae8fa44df208ecb84bd0db5de5fb7f929e140a3ac17e9f458f4782183c8405465e3cb9bd64ff70fb67b80f1daad134941e9d0b388bdd51c2aca4b8845544b166543f09b25ff471aff4df8a403e974990b5fd69ba655ed584575d6dd59d93a206b6133a0688a8e4c56caeb98bee7c8fab92ab4c40519d616b38f96232c6576f6f643f4b3704fe2b2c044fe7ca9d5b12b38d64fee2813743dba5e5deeaf1408295345e433364f809ca21da9c0dbc635af93b0d0650dbd5948ec5bd1e74972837511210764f57f07ead3601457dff0676e2b4342e5d1a7b12f96d72ad59a617015a35b1bd4b76ef9818e5f597b5a32704dcb6cac0a29db2de84bd5f559c6493fe2cbd95add094c662a24334951d754619c5ea7b0f90ff3bfa95e7418905a0a43f1cd9e8574dc1c57e29904e3f60a5e4e3c475172358fb65db192cf877b084cb2ab3f7cc5b4a041597205ba86d12472c339f3037956b12d9151f935aace5bbb7ccb891c265e28442a78d7e2676db333fe8a4dda012664ea4a96f96824bbf4efbb0888455d64547d3e0168ec1058f185f22f521a9e7a551868f0fef151f9e33f18493f823f7b5a6b568fd2a33e362f7e5fb69e0be493d80546b4ff15d4b3d7e9cfb11ab751bb19ff700513087fb52e80dd0139dc1d43c4182e944cf45c419512a148ba57c7c0c39c75398e6e115253db4d24d607475d477b68601c4e4d0a43ad8bb5578b4babebe38c6940c3a5acddcbafaebe8b55de81458aa5e33ae5fdac64285ae637b76c855c7cde0ce38eb2a6b97851a2067755129a12f7ab0bf29d3b3b0e43b065eb4a2d65ca504bf0bdbd34fbfbcf28ecccc7e0d975eab8d1b05c2cf06535497dc27a4a1ca0aa9c83d941e5ce06f79dbda71ce33de83e0b6ddb2acb8b22b1a449372ba033d5d44c6a9fc0c44bfa9fcb105dd0b27a0eab4eb95865a80e14b5087921269571b9a41f4610a9e26b387e0d3a863dac0d6329d25a32e7935efc0068b62020b0f2b43f09465b19da2ac50ecbf34f90d398229b2324de3fe398133daebdcdfefe916c5b351da8376b8f84e13bc10ea17b76af16c42519b3b61134c116f8169b09a860188c7908e1e28ea8c2742ed6ab0dd499747450756c16b9cba2857dc1139c06e857e03ea54f4675b52d6edbf35052bb7596179756f22f1cc231619b88aacc31ea4e375df017d5711f4ecbf646988c7ca7fdc40f2c7f3988ff8100dc0df878e1540a579f498268c474f13396c3edda70b8046ccafb12cf2cd1ef1cf106ad88791d0fbbd201db5fa114913c8b48c1627564161bc0b3b2441947f89a055373de6146dd277866d41b04e07c179cf448c265ff96b8da46b36bb6454f18978a58c64ab5580a15fa4c49ec7bf3a548c473d159876990b217fd266d332bb20e04d8ec3a04bfba75628be992401dd08e793f9da3b88dea282f332ed36fb8539f51c30671025ff50ddee0dfba6a53e3f6b88b1fb65aa2bd7d842452a738aafb5d384cb7c8482ddc391a3a587eafdc2519c6ff05fc4f9c6c73e25119eee29837cf03b2482b9054937fbf0afc7fec0646f397980fb775b8aa3340b893f6779cae872a62254af4bfc8796425574e1cd39ea0fca63d68bd423449f877e1d879cf8c7d976147f98d9776da2f127c63ac87baff24a5dc80a5176256999eb7e110eeba65bdf7037629382bc190443d83c01982449e30cd0474e5ffff4406109099368c390a4168ec18bc86f555199c937c1c63ae81158320f2bff924127db431c1aa3ac9b241db5b71107cf3eb8d7a668ca29a8ce56fc2d5bb0ebfa73898ba9c893364858bdc98b890c6ab4f4ad634080be705dbb524a0dc23bc3ba30861ff287223ba701f1edc5d1fe2993405d43617d6fd80c62bdaf821401af5cfa20c83d0ca6e9a5d0be89d1e8f30ac2a55382c423de1ac664a2e38bab0ccc342d946479f1ab1911380a9506eea9117d9a8c01d983e87d00f7211905411250cf20487df23dec8717b4ca77285be2cfeec3037a749aa9d70135d6c3b9d781696bc1096a02471ece79dd13b4aeaf3d1af0d6515f450ae6dc6be8928fade5c80870560786bb5acac28eea10aba5a0f74b8dc8a759cbb54c92de6726993588ee8484817201f177a3227bbc1f9ad1dbe5586e0548e48cc45cd5f4b15a78223ef4a8fe1046ec6603f8e47b1c0720e4786659cd72681688b6849c707d9d15b9d1f2bd41d60eb95e5434f57d2a4a277623361c9c1ccdd4544d5dff065115a6e0ba0ab1e39caf30a43aef24680710c76d0c0d4290505f2e0f1ab013910ab60d6371052bcfa9c05c9e32a6c63c666bcdd8219a07e57b92166d33ecd650c017a41c9421f6e9d74d7888f18706319be8cf2d5c469d8c33eddc3969f585a85941be0fc6a446035ace9715aec4b9b81780a65772ecb428f48d4caff51d800486ae031a0dd0e5d19da9523c46a6bef6f2a71c2fabaf70ba3248584e34dcf0f32838c768626cf6543956684784f6bb622d8f9ca032468cea2292a354924bf5f5f740423540201b43f714147b2f17dd1f0af9320ade0603a6fb648c0f3fd56e7310d3612b87c872ae38436a96e1c66ef0f06f8bee71d8a4d6f7bded0c6bcefc7d739dbf7f99e5bbb9401700825e54ea195c414e9072890b6e48514d2bcd77f071ade0c537d0af51809fb934dd064973edeaa30df3e26a95f1b0d04e336dbf3a50a878f5e2ba2c146f5375e9efdc21584030ed406d5d25a9603840dcc140d5a659583d84a809b99ca4fb0377558e5d157874ebb62e1e06fe424862320def18c56280e8df0440fa0f85534e9bffc7f9af51954b090dadbffcbaa860dfb6627f84d1a929a6c01df8c949b18cb5869e60601be8bff89a5c82d83a3f7dd884c92834c86019781c4eab50a8e0bc592cc9b381b7f5fc167872937d0f8334cd5b7d523229474aae88f1f9446e17f9115d894961e50680ddcc8d38cc0f40ff93fb58e360c49816d24e9aeaad44fe2a96ffa392569d247fcd37c0657dee7946fe79fe6683df34f4d40c9147ca4e9a7498a24ffd523a13420d618b2195d069a66ec6cc61e5c5938e06b541277b1811672f0baa0a9548321228f85992964d4ed55660b8a49f249520d81c50c89f9488f9245499f333f3b47f54935cb2dba365fa2a4d805677afe6faf84230fa092ccedce699c4102212c1b813dacb603f71be21f40a0001926e82862b709afa43a5db04b0405a06e0e4a1762778d7314202e811d93416ce96099912b0aa2185224fbfeed154cb6fdc2ec22aecd517adffb3673f84a3747573c27a8282043ff8245e1f8d2e5c4ef2e3a6119948bb9bbe58d94866fd1130bebfa035c9f4b78d882d3afc362a97d5b968fe0b1ca0bbdcaac050014a0102d745a8870186a2b4b85505944028a091ebbdf5e81707b1bdc46e8fd03c04f1a71f38b4903fc485571949492f01ecf5ed56d0ef46c6dd4eceabb76c45e8a82139371da13da9d23b0ac2a4cc500598b237c51950afe5b8a82dce75b8dbe02453510525a74892a8bea05b05addbcface2caba46594c9c41863e2284c395c4e6bf86205db2fa93c965d60675d0330a6632a32d6af7a5f1e3cef9bbc84221ae6c3ae38e2ff204896758855f92a001c4fb67c1be4743e4252474a27156938697bca2f909793aa7256a5dc17c5a3c02111261b143a4f514065ed985f7e5af798f55cf804639ee5a70289f77339cd4e9ad4669b13fb0605c8fdb3ea6aa921bb5ed01b0e3790416b78b8bbcc09d6bee69ebc5cfe105b3657b59bf0f2b66c979ee9505487f00a4d9fabcbecf58af18318adb576c205c9ad899e5aa5f8b820f0e2dad4f745ef2e62cafa9ec64eefeccb23c808b93d8fa56fa59e068b5337f742d05f4538924389dbb0fae0b4103506b77078d2fdb03a83ad486ae55566b9655b6fe217f7952cae02715a52743198a3be53f433b164346dad43d066e8ed16fb731c8982475d2fdd39e3a6b9d5450b585427af1d2334ebb1cf1ebe556532a868c8ee00427337cbdc0f3b60389fc1a961566c34cf93cac5e4440a031e623ab55ec0f9da884386c07e1f32553613848ae99a906cd8e56b0979883e97d49bc28f9fccd7acfa5e831a53b8992a41216eb87da073ffc956cf46b92d5187e319292823a6412b66c0801dc4cec43b85daffbfa15f052e844578bcc1fde64681547ca4b4c3577d51eb90f6578c415d6158f40a9889d4d3f92f4406d10483a6ce824988d0933f83e8555358d2977d71c7aab09cb86ccb05b47f28ee6019b8a887127db5071cb0b318422ba2cf7a16b84caf9ec5fd2b233ebc4ae3f2a12d9e85db19b2e0cf5dc0bcc33f3e08e1a043339abe565f90fafe346af7f3eb97a6730d7eedba64fe5b32a75b9bb5f42faa8a6a2340c377b4561b86fcb9ba1c1658dbd639edf7611c7ed0dfd346b35064c51d9db01b8627c4f93bd4231cc9cc8fbfad4c66dae39c8e9d8ebe3c21e2093dc31a98706b0aefaa854f2ced035f490bb236f0e68ac0d1f7ebb41769f5ea3bc08c97232a606691b5d933d9c75a2f19a07404c9f32773bdaa9e1af26c004f6ff28ee118ae9f301197d55c64faf54f314cd2a1797c75738df35e7db62567b0a0f895e4dcb5d520352636668d03377c286f56d5cacf0c6de29dcf2436740e2368da8482539c87d7842f9c5e91dfbab468632685e3f1e5769d6ea0f5d6d219f3e74c19624348a2c2c55453b1b2329bb8b0a6570488151bbee73682a168ad8caeed078027bd5984b7476af2ab6f27589f5e9e310cba1233a7fb5e08f2e455722656e2aab09ffe2fd14ff89f95289614e512f1179a11356366c812a30ceb518f5f132c6d98e7b42d1d506d42f1e03027b3cab7ef889715f07069f0a93ddd4b2c8d6472d16cf2640b8688369987a439f7d376bc06b07f000929ec60ae8d41cde627054e58eed87bb023ce4a216c27947c2c6ef1f9d5d080cb1e19777abd3ec45e1caa5c8a614e77aa1231fc6c9d6a8a77fd62563b6edd19e7a5db27c3c975565f9a36ac6a3f2c9e186bc40c34a6c5e908d0d08ac087174203ec26a0d2a6b30dd4af25c1466d0c4ae9036cabc2623014bda91f8da14338a81ac0b4070459566153ae9e97e25daca1afe3a27e56ea499835acf92abcea95d0c8eb137e147d6963190a257aaa3a43999158a5113c61db7c976e1cfda79d25c6353a6c7ca103fc483c3c285f18f4be710a53e39d1861f243fda3d10d2537e4878d9e77c148c3cfbf9206f2bb4e996b79c8685334592f5022af2900f158dedfa6cd567c9ba157de1c7738329c21f740b6ab6e4a0c6b6512a8de0322173472d34e778101e1dc67a0783d4fdb20d9f333ab5edd4db4c84b506c117f670ae633a325da59d6369c1a15b2ceb17e765de34e5a9d88d357809bad21d7e72c053722173d0804c5b31b5cd81cfb77f574ff5b4090c5851aabc27f052e8b30c896a1ab0c44638ae973f7e2cb4fe0ecf8188eeda10cbc3dfcdd4d4392ca63f5d727f5fdd3c290c6b7bf5f317dc305967cc32c6f8da7c6d90aac89da1619b581f35026a80ad97544f80a39462baa9c4c18ad3e0e29b24bead9fd150df608a3bd1c060d4c53a6ab9b2fbf014f43d830a45ddb7dbc7325e448b0315f005d11c741f7c2fdcab8f162fc7f584d40c4df5f2ad00b437d54f62adadb989d59a8669e03a357f4a937b1b52f16a83799b031472b2be765cad825eb541adaab6eed569f540a8d5559ee433b4f25421b8e60d560b752b681915bdec45378edd97c992aae39dfb563f3be783dff2fc457fc454298de9c93d9375ac4d1c37b3a01c409402ea28f7e999e6215f99939ec7b56af0f52a4f9da60b5dfbd1e9001ba0bcc862e3ef61d064031c944bff55d9cc54c1392b6a79fd2ed9eb02a1741725082e9509c414e98c1f7b643b3d80daca1e05476dac70369d88fa6c53e6cc231d5441c935eaad823e9a45ffddd990c14dddd9404bfd05c87ff48a017285c3d4d079cf56d79abb8d4f7cbfb9cecd882035a4f45f3014fac4f268259794c085afa90d1a0bfd259051e05a17badcff0593d1bae669c3ff07ac8bce26d66dc5c3478ce0277a00ef7657d09113d285ad0740932c0e2ae4dde0cf20f047de88503798fefbd36e9c3b4d047b3655d5433a0781e05fd29f6edfafcf58ca1a315cbde123242e5529a8a0b1c40eb0b70ee724cc60907ec80d517849192af4953732cdfa50354d32398bd935ef11bfbf04a4f61a29481ba19d93177d06457b86009fc8a75f4a1700d2a07c417816fa4835455af6b82ad09f625f008d5387cbf3e04f824d164e8f74b29ee0a66f5bae167065d74bd016b3aedeef3128f204d25ca08a62244332db7216b5244be11f596f94efd2065c35a3c2ee73378ea1efa148189a0ef028f8b0f93684c12709243ab8db83612f36ad00a262bd996ebe4eb662b7054c8a158851a1ff9d40526ce0ce99d64e499ecbb84898837caf8697ef8d466527ba931fcd5c1211b9bb01ae99120e750ae8d20daa8c5537d29be03a4c5bc74ef297bb6cfcd8e3ea9acf536f56d6979a3fbfcd413189612447551f511be1d61e62e7a36e06a287a61171857f8b9c70849b2f28a3c363bdb65152f45d4125fd5a467b586a6c83eaae76711bbe409eae21c4989046b2f4f137f24b4e0bf95e9861ca34d71c71e2a8b3d0ff49fc9ab05691e84373f990e37aac103950e8cf1e9e9e3bf21f73050af2749461780815437c9a5a0f187aca0806573b6e8267fd66a6782406cba05e5672c327bef436a259a901e51f992fe3391b45de9092a52c9e19033e7021d107146324a5cb35d25892b4db790bfb02e9040904aea46b04732fcae30cf76c2d5ed5bc0ed778fcaf16be2aad6b932c164ebc756ec67d5c54d38c759ebb8d25c67f86ec6e3ff262154955e05f9d6cc470c56933aa95747cc80f57e1ffc15b081b3bc2cd823c1b93b539c13196fd9a0fb1c8209a62fd9ffce0d07c295d28e5e14ddc21fd382b650096d23e43d705559f6856242d70d70dca3fdfcbfe85d3ea863fd18a576771a45c54ec5c5ed84e28077f0a701243c99c6c78860545d661fadc0889fa557068766c718cf5d827fe8140f28130dc73da0e98d9e0fc59bfa0cedb78793c91c8b4c725063ace092db02bbde508d2ad4b3310773a5baefdb790f7aed39c7da992ff2cd0f01d419fb17373edce0b41c802f10379d46dfd090745f8f265f73836a0ef113a19a1ad508200618a74b181c6a4280581cb6abe874e258fa847832d93b643769e8d31c1643d6d8048d0901645f0296722a1e097688bda9bac323ac3cdb3adf0931effd6f52e63aff879fdb05da37a835066a122c4e16a951faafbe19240a6ea4711c3ce9779d747380fc61e14a917ba43e520e4b2c3db8035ce38720a00a4389bdc84d7f5115d18ba826bc8ce06c853decd5c1631dfeadeb293ae008f5276ca2972e7c618358afa7a2a9ed519e0fbac032f4488d685f25c5d3a836e8d77261577a513fe6494859c7b75c06ceee24bde5d2a04095d42dc3fa77fbc7f4061ecb7bd9d7cba50bbe0514ce2bbeca52039e09a2df4dd3acef1349789a5679e71562d5c70a3f40945b01c121d5407dce2df19e69545a8982199f713c0bc43ef469941556584203ae84e4134ba9cff2b701615c69c58eac3a5a541548d91d25348f63a6a2b1b9a32a091d8dd24a5045146a47b687995134a2264d5d827ff1f9659feac52eeefcb263ba3076b40b7f8cb0d0360a53deeba6f051dd9ddcf28d077d3111b35fdf0c25031f9840996c3de973ffc02c46a002afad8719aaf01bb0acc738886c7152ad94cb81260dd32de741673d7a57db0914230b38b6944a8483cfce0ab11acc609cb8c2a052d083062f494502ba26ade540a52d79813140e73d50a3cfd14645b1944a1f864bca04f8e05f6ef5bf714b121d934cdbdd431880101dc96cae6557e170ce685070937562757419eae3b69f8bb9597b3837693f008c4f34c400e1239430a9bfaa85b4dd5b8c1ce28b4ab07e87a01a6354a465214dfa90c559c1d310514616e4e173f5c23122f4e35370909aa1860ba8aeeac3a6d9fe1f3bef960f90ebff171389bf6761ea1e02aa0540f8c9ba72cfb0ca6a6b90a4aca1d7ac9cdcb43c755617028bd92093422d1e012d8280495da4184a05490b82069913ea0f50462c736d9307543df9191c1b43c53fe886bedc3292b9b345b51e1c30bbe1b913b5aff28f86ca50d4e7571f8ef7fd6120e64191555a1c8146d9baad05f20d378d86a2cf64dbdd18badd103085d5327a4afbe18b03c89d1570fd1a7c762be6d3a64216c18202f91f3fcd790511578194b70a212e47c27f605985d5ab5351e27d3ff15d571804a24b9e8977dcb14163188ba81a4f51800ce2fd345ea490e6da459e85bf3b7787a6c0e6d9d92d151c46b5bd3ab4f99576b8e249f25ab6903f71f65c514472e1d61644b1b3bfe50f62c004a5d57a3e8c083c1990179c40899561ec8668a1ee4ecd83b1533a3280703160b8c5389e56a43d8d40b56031365be173321f0a54e075e849ca7c21d1ec82c92fdae70dcf927963c12b09cf01cd9b382c359035c4498240e5a44ca52d146137999f874559e2e9ca8b6bb554706543d2a8184c22a7719c4bda554515bf2fae7d9407c3d963cbe7052843ed343e3e254fb795ae80646328775ad207befd5b01ffc0fd44d24227b26cea3c23eec95b082a722bb68c983ffc1b9f30a6b1744f149378978f5e414ba53d4676cc12be8c23b116154b20e4f432f543e37c1b5f55b9d5f1ddf6223a385f00e1a97c463e9846173b61d4a3a21ccefcfabbffb1af114310c26a847e186c4f37656115aebc1dec5266073de9f1906ffaffbc13992e7ce0ea64ac3f0158c77f8430d75053593e4fff1aead81ce1310f6a24d29addb26e5e27d38ac5e0f269e97a99e4d6cd9fe8b0c68d045bf63319cbd57c790b2e1adcf2babba4f4984f5daf2451c1824b049259f4eb6c8aa8d0493a8b34e19ebdc62aa4cbd7176b658750b5019162a628a28f81d0775aa5a9434ca32c3999376f0bf5799ebc072d688a02240d02e598abc4eeff2acf826c49c99d6676e853fbd2957cb5d6bf24ce5af7ee15be217d3985f7473e2a679176c74eb454f19828ae71887f1339be8411c8a74bf0cf115f07ae78163b497eec49e9a562adab068141a8269a13af304a960e54e8e2dedeef76f190f627e5a50b6f0d8c62dc73db3c6daeb26545cb62955a9a6b84628bd02d033e36446cd824e3d02497a6813b77a5f6ded6d4b9977f601762d30ff025b5f704e2af02a4abf39cef522cd612f43e778acf06e46ac78dd7a0379043fc18fcac260ee60b25b7ab5b0ac0b122e65a103dbd2e55e1f3e9498088d3ad664b51a2b86ea543f55aac7a77ba898f0ab134b04dbb08b813ff3fdf58820eaf958c5b6bae3d444400eb5e7aea332af71267779167587d07ecc6d2db827f67d599ea050903ac3897b13fab8a565af218a1150fddeb4026d36b65fe20a59434a771602c27c43f90221ee659ee509ddf70487fc0885951a3c7ba85758883c4c766696b5357cee585555c50854a8344b129490dfcab571ccb8514b7090de74be6a637c14561563da3d382afd1976eb75aa5c52dedc60f4fa9a03149ae88184771560ac525f29ff37d888f73d07a721ba0a99da4ee1361dad0d8379a6833ac9028a10fa8c5e6148dd23b66aff0a01b3649166c3d80ca54bb0e2d46d685941da1fe686b2456a03dddecc80cdef1c2b2d08babfde8cbaa0409d4e62f08f8bbbb9bfc467df95718e0df549ff2bd1a3ffeef5a5986c58d7a331b728975d247f706e0c12d77470ff3e6326f494ab8ebe305c06c8a7765ecd8b779ad4d106327889e2e50d9cbe3c7be1c48936a7b6cb5cca62c5158b9eb7fb0ff7d6b8f61fdfe5b698b4ead9ab4404a8f5cc88d50ab44285da43790a83d353026f7815dfa8f952f93c021ec2bc12e650a7dbf59fae64997ffa6f7bac9db5e805912594bc9be3cbf95268452eabe3ebc62da3f92060c494291a7e43a64788dddd0cffed0e3b97eb3fca597e01d990a240ddd5acbdd84d1a4d29cd609c2e8c8dac25cbf413d1f4ca49bbeed378452f12b7dcabf6a4b30bd7e5dd1a9ad0a87aac2ca118d00e3f33a42ce39cc1056809aee520d1ed0926cf0165884a06d9f6ef6986b2fefc70ae1922c6fc5d4d4753726279bbd91efc46b07c7337a6fbdb582cff67f9d4a7383fab5a096c4d24a0a7845f199bdd35991bf2a3765812938810690244aa863a6f613f29f519a75a8fcce498cb5d32471df66492e62448b8ad14e2d68b483e695c5966d561356c084f8ecc2cb90b11cd58134aeb2a8dfcc7582bbb292990bad949012751292697778db9b8abd31a7a70d5c53b864b49a76ec8120e904469ee8681d390be51ff089e3e736f73d3eba8cefe6d0e1df229fc0b0bcfa6045b154f865ef904bb0526857c4001802cf4e395733a6b49bb9f33fa4898e94699d4b87acd226b01aa98a51950fc2e4b527b3401743d7960d4893e2e347da626d88895582969a13f4a31fc56607472bb35e78075e94266ef45549bd15fdad735f811e7e9d5cc81a6ad6d0f683b6803ab7a85969d4628f13ac034f12ba2378bbc3ecb0698fe6b1b12688b63c4071139987ba64b7ede9246107d6674bd33115845a47ebd53e288f5871970a00c5cbffdde2daf09193aed5956b0d288d383aeb1bffdc10155de0c33dd051325c7d9523d885a9b31a130098e032bd9f4c3ced3bd79c3bfde798d8ee16cacf0af4548fc6cd5d6d2f34e839e48e826842abc994b0ea84b5539268de2e85f5929d87c9e6f29c62ea901350c892a72b7516293ed5d2572bdccac5499e96f6d841276186b272af8b30449b4ea012426f0460aa790d2a856751cc1ac89fb20a66a2232be49c4f22176d2e2816636a4f5f352b56f160752a4c587b165737a26a7f8e96f5c9e64dc70fa2814d2b5cb3d0da0f41a6a79315a1adac76f46a3a8e076fe31168fc9f924452a0a7f5910ef1ebd4688dbb3f0f4beaa6dcb018bec632dc977df76b6122c0fbcc6a4bfc96c3c508b1efe5b3be7cf4890da979885eb269ccf9812da166e486a706a266bcf76ef379c5d084b35363e6a4459d95c62701544ccd6002a54814074eefbcea9c4f4c7dcc1b831b07a9a80800ea0b98d2a7f33238d9df2259da848ee19fea1f394829f8ba14caf6f2ba42e671684154059199eab170e373c3a856aeef6a75c05db4ed2bbaf46594584904ffa584e1405fcb74e95565b45cb3f8773e448ed6c5a41b2f5a73dba7d993adb55f3f6fb56732f6cceb37b9fe7dde7a0ff5aec3a1728c13cace90d179e39ea3c8f51ab06a9ddc29ecd8211c9a76f5c8aee1ee72ab6e58617d84b60f8a9cbbddb2b14f2c246e304e60be2c622fa9a5fdbc2ec41b5d6c981bfad9d22c8283064c2f47590caba5f1044f1ced19bf735a237bba27b4cda34aae1f1ad22d4fc1cbbabd5c195854fc9ca3ddec0ef4deb280567d770bdf5eb6bbc5d5b34a5cf3b4801c5e67a0eb69a210332be1ffdb10958eef70e6634d9f802a7a03463508cb64c823e686a599dfad9312e8fbc39b162575ef0779bfa3fa1c9ce7b09f693811adfaea7176133dcb14fb21310c403575d72cfa8ac9d3ffd38aeba37078529e2501319406c8fa78cb7bc1bccfbc1eeb5f24817d8a7c1ad2db672c03fead672302fef6c32cbc5e864042a21a44fc9513f869816a98221fbd7a5cf089427548dfeb7c64131b278d9633d7886744a947d2ae7707dc4d0824b8f4a4e3d46a4288852150f160e4f0d95fe51a416794bd8c1e8c5f5446314dc5ab9d8db79bc1a44583a989d43b12f23e848ed6b2d1cb4eab803c12caa2830899199b5fd3be532effada2f36d26a0c4b913635caf6d2faeba5fae249011aa832e7e7a42255477bdf3dcc10db94665985a41276f0a18f313dade82cb09213a337d09fa9dfae283c72751de9df96c8e620585183cab45c41d9d22c41defa0c856f0083a575b98f9a9274d9bc10c3a291de7f36b97779a46c847267be3de310a82615b6182fcaaf05237f412f4e1fef73ea9cf0f195d1b9b49fcc0a1a9916777578dbc539f22e0709f5b8133cca11bf1fb033b1baf933be0de85bb9f6bba34bdd7a38b69e69f99ef148b99915b8b3414f10066916221940aec76f0dafaa510eb3c99cee3fc01c86546b960532991446d2606d4ec8c32949a3285bd666d88576e17d1db2c4045306301c76fc6e0110f149ed127501ec734ce32941077482fd67dfd40f2dcca2aec5076fcf767cb3a649500d2f412aaf5d6c92be1cad73d5e7dd4fe06fd22e2a7641d4342a49f725f0ef9533990c026fe7aeaaf9ebd8b2e18bf30af58a530c343db053611be91a1a4eff415240c9cc0d38cb42c9eabbd8e086f08a307aeb5b5c24feb95455a8041ac0034101327a993a220aabac1c2a728f2c1b36045e63d27e0f63d85364d0e788ac60aecffd01aa31f46dc2648c0bbeaa366e7bf4541fd9a4205342fe6b3207f5c57f1c9d8990ce8ae3ba1c73e0b7fc1e59ea4d7dabf56af703c49b4ae5bdde141f19539fb9586d7527dbedf621d725472d2acc413606aac257069d6c48845af0998644d5284c3593c8eed2d42edde9eee3e2270ab5a69bf8643e0f13cd33cba00ad226434584a3cb625aebfe6cb2f90170d03963e29b81300d66b8f4f9fa92b38dd69bab7aa4d6069d78d42b3a566baf889849ac198796a3a2391f6e13e3e8f9948cc2da64c37533962a709236dff772ab60e02c88e0db499eabe27eb714c002c35bb793f2551b65863f375b1d2bcd4555a02c8a4faf60cbf0cebf339ee6932b3712261993db50f11d9eee3eeb9ef6f3934e19ef6512a48ceffaf23993e5051c90af46306f0ad81382eb3a6190ca12ba3090ba3da69cc046eed6f7cbc73419390624635a911f0fcd174acdd6ef4cfdb69254b957179d5e8accb005a1a98de78dddb2578f49633fe2825664d2946ab7ceb4fe151601b0101945ae2cea017dd53eea98b086a35e0044e6d606477145e52acb715fcbb575aac16b856a5894bd215284239835d5dfa457b7cce1820bffb6dcd654ebe74c9997c9d13697d15faa996e3d1f12b61f9d118bee407c45be91e3fa6a6da93df50937137fc037ee42b2bd66d358843fe701a0eb75666a86055b25d9f0a2608712e28369637d3a85ca014b5e2387bd96f3d041ff36f7c77056bf1cebfb265b895f95cf5c15128e26cc19c4ebcab8a54477ab58d17599e04703d9501e83f3b4a16a56f3e61028dd6c993ee287f8c38335ebf23345097aada9b8f80a65e4ce91b3d4f8e3721ca9ae88b34831f4ba2acbe1ed9347372500b700ef8c042a087871c883d2a37967b93df3412a51118957227a6237693697cf087364996cb360f3f96b1ce6617f63cc222f3cc6aa53e7ab66615b04110d7c9598b27e7bac00e83631e66706b4448ff8b2aa18908bbf90c4b3eac7da6a7ac6eaa107ff04d05a2b09731ff0faade3c57e6cc5ce905cae7ea68b81bb2543846d93b8e2d7d770d3650dab12eac1ccc55064b76158fb74a2752465c4218678c0ab29c4a6ef989789e6a0bc31ae751414feeecca6e6190a6628c4c178c0a37ff48cb16d0d421567b7dfd23c8befaa783e5108c4ef49ef8a4b44047b3edc13fa58e5bd8ce0b0593c14533d218366113b4026e129a48842876c23ff3c688f70962a21745bebad5942585f6b97d3c99a327a9e71a4be11d8fd51526545cf265221cfaba8ba282e29fad3c5ab05c569ff83643ab4f2cad2ce83bc023ab7138813bb27d4a7a38211cd8feb5dd3c7462d47a6a1c176e6460e4aef3685654a7535504c1cb6ed9a9a689b4deb3a6440e9643713ac3d516cb381529ced0b8df6b1c55e5e30dab1e28a4bd0d84a1875dd810c694bbe4fda1321467aa09692492fed40564c566702736d00eb8034d4c071417748a0ecf44a0698c97951190063242cd1d1003f9fc09675ea6698f893c554ab45bdb6bfa40d6d7b68666512eefd242543da911a00d8ea0ac2fba324a54581152353d7fa94648ad96903804834854fe65a13fcdd05aebf4cb817cff3471263a293e84400b484576583c6659808978b5cdf3982aaabcbf20c1ad15ca27a392be9bf43737919f843cb584ebda9021b0f9112d976009525dd1ced6b11a5c53f54b50532177ca7b109b51a63d725f29e315f1220da3f869f1b9acfae1446ad8e09758f9f223d00c854ad73d9da57d5e7039dd15a2bd3060085868476a3348f23b3cc9d198ec46067eabe4f8cd9bac99b7a80145faaecc6c0a90b93e758d57927278dba13d16dd00f8bc4c8ea9adf38e7ef754dac314bc11ed7d33dd8c78a73f0eca046a3153f0a0f7a561d5b03f0597ac2d36e62ac82c1a4f6dd3b3d9288adf57d555af86b50d9dae039b87e1df2d9435b5ed60641cbfb7af24dca43cf31d2edb75804e9912476ac405f386ed34e9eb409478aa54dcd4d9d1de320ce211663c544bd0addd704e3c073a6e80029594dffd26003e798d7e24cdc94dd544ae04eaf680ae2de34e0bf19e342a8f83003f5e0fed7bf2023d9be68cc9bbef2f7edb77c1dd7f9108e7a284e541644328478bd57449c2e1d3c3b22bf8c9be2393048690f5a288ca7ced5409ad4c20a5dac5fb4054a5492089f7b959a79fc5da00c8da8f9378fefaa8e68cd5efd74537c6ad1e2a736185da83979b0a15a569482849bb96a141884c49a91f528ff24e1d1d762fc798329a2447dc7502f38b931acfc4084c0e953349e3a636d0a8e1a8de0cf692887f24bde0180920e7568bed42e1f9e97bf926564d28b2943f9b1191f4077a0c2ba0296bb918da806efd9089f8e5f048ac9e03271b9a7861c10acd8996c5ee4acdd0a71c03879362cd0e6a3a95675fa28b4719268c5affbd352cf427c407c6e0cdbf9e0e6812fc32e974d06bc9fe64883a842ccba61620a12dfd3e0b20a852b1414f097abfdd3d50831eca00901a2d512e8a458413b3dfd832e27774947e4ce77ce573ffebf1a2e980a30daa6b7888e244417c8fd432f60d5c1a632529cfd15697422902ad04c934f18d645c3a14a7d7d242253af3c574f90a0beeb3c3f54ff228501c43911640064cd2932625c5ab800b4ad7e977424067a86ca24bb6c178e9465a7a125b99e479e0d449ab61d63d06d556ae4afccd5f8de4fabdfc6ac07ec1d05ccea1c237530e08807ef0c337a4165f85991f9cc2195c6c5cfb13ca483ae8fdb3b276ea6acad7e60f0336f571b6fdd40e5473c80255f583c85964887a274ec52cb3fa75dc029c9a234d955e26a265b0374149c5da7a713f2cc2c86659826bba2b59ffcd700b4f6531b660c4ff011b56b34f020c5ec2584ebc1dac6e9ecc7b24496e89098028dbf408fea2f810e09a200ade50f7bba27a7874ee37be619240c710bdcf90e672a76bda5afffc3c2f9b7f732356ee34e540fd3070ca89e4cb6061bf689f216266113842845c50c789d42f2ed5bed0ad7c3f347a3f6ca97931b5981c47fe1f20277abb8a0595bbc6c1d7dbda2b2f2b04b2fc6586edaeff4138f948a1efc33519e19f32ca1edbe97bf716ec44b4b2653755bb93820b9411528d0eb4d8dbb7dec63803f91ff65ac988ed68b705dc2c5850a149858c5376265166c1441361587a2da22fce211c8d5d1f14502084e60115c950e930afb47850cc4887ccc0fcb6b3bd24294f56997ba613c1934754ecadf551200175e91222666178d94241558062a0f1b4751d65ced3310d036787e633b704dd04ebf7c0a8ae40b8358bee01b17ec60152d952ccddebf9d334c115096bdc5bf3a92905c55ead2ef0ff6b07e99abe2adc8f8b572e454fc795605630f418a9e9d727483fc3f8a513873ad534286eb11f495dd31b6a367ca5bd219d13b3fb0df8a28f7ac0894738ca55030851b65bd7d38d3b9e75b5abf6b56d364a31acfe985c1b98873d5e22a75b57ca1f6ab0a589e9a7d04c82aa1cb80729c6c93d4a12c7eeeb8f32ae2ee151499b575247ad642777b887f95d1cb1aa7361cf68a3234daeaf0d6cc8e810817c4cdecb5921bad39f4ebe4e5e31721482ae28e07935239624b7b5283bbeb3ebfe32f2685a3b5d3aa23d87533c3c5b82d431b9a770aff0f19615cd474dd4c7c4d05daa9c06187c6ccfafac04dda6addae01fdd48c6891acc1b3480aab7ac4a66f256842b70ce0427a076b74f3f6a6acbfa338896eea1e04b8b014b09c28e4f7e5c9d4156f90e9faab869bb7c8935c3d995c400c16a373af054f3f8b0290b74ffbece74c0bffa92e14b66f66fc2e35e5fbd6dea02d6700510998e0fa1a16f4c0fb39ec6945f1be7f94728c26f45a8fb96e3a0ecd952f9e1e84225180625e9b2061d51461d1dd59ae23757761c63c384a9ad6ab28d71b620cdddd296a1bc62fb34be84357d159206df43dc28c4588238c2325a55d3872b2f57b6a9b55b32359d0228b87d016a811f80073c4dc4bd86acd8361dd893149aa5dbc8a50a3c0631715aff2683d588c9fb008685885348e2f54d2a2a42db9d68154890f8fc3aa65a06ed28e988c2131cccdada40027186a4bf8dd6378d6e4451454783c630d92b510de57f8aa6104eadc9e9451ff78cafda2d3c9ccea157fed97a4f4e4ac5eb9b68f69fa7ad62fe06fde6981c77f3b9cab7ffe27c3d0120f7a82b22c3a0fe55b9e06d9ced4464eb8f15336570a93009fed3e7e43b6bc3716c48ee8e613a4346836e3c5787049696ca4a05a54ce45252120cd5a3f3b38c3bc2338fd9755fe2ae1d402e091f4958ee8e5c1c7c8c711f5525cc78986dfb50782bef451a4fb2722c0d6436a55596398c50668e344eab7337f255f27f6168aa9a01ceaf5c930be62ef28c9194cff7e0eacf5afa06c1f27b4ebe73e5e20d224b1f2afb3873243be77a350046418586b146484847b7ea7d74e15463abe703278f3f887c016a15f6ab2b1015e382ebb696e645c6db89c5ff199941ff059385da9decedb20653f07e37650ddef393a7cf74796b2588fb171ae4643479df7fea38f1f9c978225043951df432474ac7c4e2e0bfcd1b70dd479f3d719a3e377d212b8c96f5890721c878eee07a28c129d2e1684a2648e166ae1790fc880e19c3d5cf03c0da09fe546d37ef25340e103ae46c8c8962d591cf1e1c3f9070526b6e74f08812802c260a5c2e48f351a293265a828cfc1d91e0b30c1ddd7dbf1ae5b4dc96456b91c494dbd69fb753d9a67ecea3a8ad09390a50bc872d0a89896d78026f19bea4c6e2bb9083463c5174aa4534cae73cebca3040882eb53aaf3010db9ef493de9a2db44e23a9a9758b723a59a034b2aae37f23e6c582ec9f232e009403b7acdef0146afb514e75d4eb50d758533de78ac30c52effe96572b6518a6e74fd0730ca2543682b3f791c429f37144290924e3e8239eb87c9d2e92ab8333d2135af7d643f4b35665192539768d3e2e332c4def3b6ecbc5427baa0cf1541e020dbfd699ce5db4e6220bccfdc8631b0f8674204ecbb9516dd12ffe452ac4d019becbff5ac4cbeea636ee431c685ffbdf4c17a564b5003a3cbfc625aeeacb97b2731d8e7c2b2fd87284e6dbb0a37c8e2a6956b4f966ffbdef0cabcbba3601986d145d206817e1209a4f3d8481ac727bbffcc5409a433b93b6bb7efb725103def1988f0ecbf1e5dcee2c872f9cf69563ff2da06b0a38ae3cb089622a87a23482227bd79cdc529526c3009129e7012d4fc1011208bd542d2daafcda455af92f70ad5f80e954ac8b79d81f6513db67fcfb126993be4c1ccc6f46170fcbb7de04415c93a2b3d10f082749fce20d9c89a154928bc7efe754e6472dfc5b99700cef7db384b6b1277aa4c1545973c069a88ee8d3ea2366873e7e6a211fbcf01f6503513a4902c7c6ba00203bc9c35a696c6ccfc1612eb16b1eb5fc884912381b840b2ce4ad207dc551618f51f77ae635b201f0187f102208abfcda7336def04da86133c4bfae2b90d7fb8194570beb643c96ddec13213d0992899340d8d9d93c420dfd646840823e3a0a2ae3ba277346161a3066f65e248f8c2a73e55145a0a4650b8c79291506a361030fc91d8a57d817497b70c6296d5dbb4eb04a70e636f72a76cd90f8e921e95b906f15a1aff51d69851591cd3f77b407df2c0cf42f9cd01ce7a54fc78ce8a6c075d7369085bcd1eb05b4c9df078ea475c113711ae3d6403f6af3a11fce628cfde3f4e8e4d8c036eae0d8b055b6b9bfd023a5dc4ec4befa764ae9a03b26e339072bdfed1176a7c16ec9a68c23545f46e64830b6148e304cc3a79e5dc07506c41dbb60ff47d98b2dd41843cda2caebb32652233ba3275514acd93b6a3fa8a9a5431406b2c67c451f953339686144e5dac941538937bf92ef81e32f3400354ae18f22c8ce607f1d6b012e56c24b3c968cf0bcff8542982f2f0ceb1db97df98170d518ac96f487eee44442482cc0ff6abfeec253aa4345052183b4648a46cdfbe8617652175087515adb2d3af482cdb0d8ab7d37b1d913326135dbce2cfecabdef9e734836ae4e063bb5eedeca6e01e867d42df4b544eb47249a8f7f3fb420b053876e49840881ec52aee200ff318577e05c990639d90a9326ef3e34c2de06f60c82f03344e6b3734006db302633bb002dd1faa63cb54276bad1d2593f627f0610ee6382022ac0a141f87e32501e0eaacda0bc24c017addb16fd1b26d8af9af82d42b16f78c0670988b4aa3d996af5dd366de014eca880b77118ee2e1a40a8199398f991c634a6e14776aa692bc84738048b99e105c2be2f983a3715df212d30d57a2143e6836545b1359d940ae6f96dfcf86454c821c7a3005ecfcd896e9c97e19cbb67380edd7c5545230c889544c009a0130ea238abf486ed21ba82df4d3154d238999f3e03ef8fd11cbca889fc12a1a956f675da21af1a7b43ae7d3428242b2d672eec2b894d88e84089a0bb2d9214a65c12e026815582497360de2f1ccbab552222638b83d892c29360cd2d80d02bb8ac127f8a9e449b1e87827eaee96c1a9978d1c783c8cdf231082976551624287a84a0dda092c8465ae7eb635d81ea2c75a61b34f71199c02f278943afd6650d80921bbcf6100df33832a03aaa845144dd16b83f647cd4babc2a94b77a0ac1a24c9f4e652abe71c11c1229d13fc3b2093678515f5f8e83240a06b617e80bf61cd4019f61a2d08bec3379bf91902e50ec39557469c46f1cc705328deb23867df9cc2fde19ea3a573d7ebccb1c50b6f0c17259dbede5285e2d8e463e8369057d661d42e2240adaa6efdd3043bd5b651dce63f40c6d5b428a2b42e4ba375a97c4cec274dc9c1a175882c6c04da52aac1c75715a580445e302dc05bdde275fa4f55334331c9aaee40e617cd70e7f358e7b68880f8239a705bb0ed85a7fd9bae3c696a77ea1181595b719c9bb5f02f0778a2f87f52f95b1eb677bd6b8c4f5d70aa808c54cde417e99d010da06f303606d3f9c918b13671d33794672bf00d61a7965edf735f001e4200c90d6694ae7902a01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546ba973bc7d549b7884e67d24bdbad7abefac62b359a46a949ebec3740a8ef4591248376c3ca74efb4878c4b7aa95a58089b67cf1bab985c0abd81d8a9ef3200305e26fa3d2baba6a0cb643308e1c05b637c20ee7dd837053278a90a15e0fd9d05a771dd976a1607c4e37f997bcb2388ebee6147f1e39fb7608982c3bd9a06d07c8e5a32e088dc85f3e813779c88f88f39f0ea22e1e421e5e12ccd916366b732879d110c4d22de829d3e15dfa949ee7f74dde82f1e9d8eb1b2da507a05a4c4b40850b6157aca18b44f1e444393e964c736f66d3eac2b626609b6f5b176e95fffe0d6292f419165a93684220b3e0c83c7dc9386105782a1499638d6e54381c42de4325daec5de1fc442ad4372082f7907fe9bacb3a7cd06c3ae7b7e90e462fe8449c7ff70e07aa2b57421db564216034b053f5bd60591fa4e677f4c241c3b94f774f9f03754243fa0490d98fef352316d5315ac7876c969c0442a2a9824b2c05d6e60ac76db39ee57aa7d2d6889ce519b053a5ed142b6a92bff14d8e047dd9a27e85058db9296d7d8fc8b7ded5ea11a0eb6ae898bb235ef8f415bb0403b92111b5c2acf9699e8fd8c1cfad8852ae94440eb05c2c231fc177d1958c000a9f5cf1e862ea2a5cbb20ca4697d3a79b3b87de3bf29cc6c0d624895fb97621a8479e746c798396399c4644d0aaa20420d63c496d9b1541dbec11f00c4810d7a22b23c034015a684e4f35ced2f1efd36c95829930c40e6cacabb007da6e8e610e497d07f6c1b5ced9025e04f0fea47b4e57bd51cb0bd709d7e69cba16bf27613efc8ce55fa5d284017609b5efa2dabfb3c185f43581d5439fc88e8cdf6220aa9212ecae12d49607ba5f47aa97ada64769eb58ebfcfe9a6533811f0d0693082c7dce5e25712dcfd72d9e51bba592eff35ce04f6fd5ffcc373f648a734bb698f4612106cd96bb7fcfd0b9aa731a48eb121a452c3d233e89dbd3a52a36494e247b0d4fef18af4dfac848ef90a105878d977bfd6e1388c657e6dbb82812aea66eabc4343994f1efb6e4ecb98690b23896878eeb1ae4e30767ab3bfad6fd4fbd59a2f52f3a842f7bbb5ab93275f8a38d8b031b9ebfbb16828f790c31bced1976ad3081615a80061a096662f47dcc55401387413cce8dee03d1b1bf15b545b4949c6f718fa063c8483b0ac4ddad57414c70345a7f5d409f8de23cb0d7ef76c5845ec564b1a423c91855c44b11f2784556241f20006faabd38eae4dfa17295fb4cd52bb18152fbc10297c9eda0df19899eb0d7723626bec218174cad5105b6065724b50d53bcfc368910e89ccf685d2ff2f453f4ee0358a09eae2cd7eb12f30e42c5dd63f19d2df8c5f61c14cd589581c8a0d313c13ddd43afe460a74963c5d53028e03db52d1e3d1661ac25d6d85fe31581e66415b4ea7b3e90a648429ae117a29de88126e0f6453983168e319a5fbc18128f6765ad39fdd77d60659b33cca6d1e218f8afb4938105e0ef0f481b413d017cb99082965f4b35fc1389834af5603f27d4646326c62d45a2016fb460d98268928aec74a90f42ff7c656a55dc589238c59331d3f089b44443f3452fbe40f9316e12e6a6954ed0471dfe97b544e570b1e0dffe8cb3584500234e24ab03ca820a474b0341f72edf0c91c88e5c3bb0aa7e332b6c29ae9da378dbe6231962c82f1bdad16e912a3205e968eac5ebe0c2d3c526b76125517afb068190cbaa1997dd528f3c58107591038d720526d584a7cbabfbad2a296af178e14f00deea0cdd1f59d4f921be61441a64468c404cc627ff3e1ba109073bceb6eee7dccda9340d332f92b6fe902be1bdba7845e0106b022f639444a35bfb28d93e8bec362bdd376d290a923754a0d28d67ee3f939b03a4cbc62051ca0657587bad58221ca368080c105267b7f2f47d48ec6eda9ee28f787351f30cd23842d3c1aef8482a7f595c3bb5ce251f4269aa08afbf8a5f5fa758f2e5778a6167e66e90ff37b32d86248ab7f7998cab40d844057bad48bc7693005cbf4509943d433e037cae1b43d7839ae2a436149b3fd21a8837d498c43372a618d4a9d1a3becf627fae50c2084cdf52908dd3af081aaae487fdf854bd994ca634bc3af9d1a72953944878c38c909da707ed0044b82988716f862a42d8c1f50aeba3ea5ac8ea883df625649f933537b9c312c5bb4034fccfa825ab0154866bab3d027b0a1c9281ba6380f32b34fd8136c974cf4756fd89204493130505203abf8d3e5a4756042b990c00399a32ff77f509c7d45c1217ab34962a1ca9a3ef5b92541251068881366380433866bbf17e2cb4ca0823ba1210e25d55c810c234274d8eabecf2087cdbbf5b8929872167e3de9669f93dc87f37bf6e9ed5e27c42585d91dbfa8899cee75ad4b3e7bbfc4352599986f3f71950420e5fd74c2d588290511840794a4da7a136f398f97b4e2fc03b819430b8e73bf4ce5834e4dbf7fe02f0e42f6e89cb8de6fab43318364fb2051c5cc4c6b57b987eca5431daa44b36c46d1be61b3f999b091155aaafa97535db272b310dc7c17c414f0ab0b6eeb3312fc8aa94de142da7e5cdb41fb13f233fe0d8d7b79852034967dcbaafee776c1d5829ac5b9beff03cb615c36a5b06fdb9c3adc9ca69225d21b5556ebfbe29ccf94b0a2f62930be9e3f146db0baac5564e6a98da98a59cf3d66d221f958f28e7e647d55d41da8e1cfaef4d111fd9c2e96e18ec704d5e0fd31cb8d74b4d392368bfc0a2a9cd0d9775353f3ee49175956d565a7d53f6efa45be7cd10d7a932c0e7552dd9864aea750db9be9ff698008d4add2a0fc91b6f3d96333a888dcb5c99171832e3d517f1978c0bb829aea54e863e468f8c3eccbcc0546873f074cbe0c10b1c0b249286c3fd42aa8af3f21de5cbe987bc9796782b430030033788156bfbdd334e9acdf1c2c324d54eda95f2e6ea351ea0d9f1562bf0301a46db4344eb7e8d6d17402edeb57b5b3868c2a07e4bac31179a68b11a3c119b63989482069675fe58df613f5a9565b33f1da5adfcbc646d802e0d2ead870854037c98685f722a38718854c9745ae2f59467b357af92d4f4844afed7a83e7e49e4fa36b0c0f6893cc0da3b4d842e0810aeeec5e6be0d1d34e1ade137cf624ed584d3458d116f6cfd873ff486c699ee47ffd3068edebf241c3bd1d376f21f59033842432663aedebb52d0d74135f45806b6f18b81206e80e10bb3c84c830381b7898ddaadeadd2c7754b1fd29ec6363aaa49ca32a1d0c750b9316de0f41f40916dae7a5d2b052b00675e8810ac96ad63ef466fc90edb7bdab18c55480a926b5aea13b34a9dec16f9b88743b58b41b8a54a394f72b724a9b2a32204eb42f4e576fe210d6dbdcd42ea44c08206969105cb589e30058c5d586e1b91f875e195e9311434268804869e6f4542dee84c1b7d14ed9690f69370b5af1a858ef39e2439e1bca4e180fd43810e40860b6fcd24f517df4f6506723f0a27b27245b51d54d05e4ddeb5b22fbfef0a141221bbf98f25d22013f6e3c2b3da1eb2baa6ef5d40eb5fc4f3080329e7444a3deb041e0f8d9898cd71a97c9b4900018a618a16f4524eb911c05f2a8d82c4df2da98e2df9b8d83adae127b01019c6b86d5851cfa14e1428be75b3b3084e84d7371cf4e5726f93dde90014c89516fea38cad0569a02b19516e6ce1bc757411039ad9ac26c13129fe87fb13f87b34d4785adf06c3b449d8f173e7d32b20f9e2ca30b10c56076d5b3cba02f4e53b226f476219fbd38b6e8a3d49b0c7f367a37a9fc1cbe6f9d2aff1ce03845cf14a558e4a580496c89c3066c3a12f4d3a57572706ba43a535945ecb6ebd52e8af4d4c544481006cd43a3b8c338a898c9f33fa2e1d3c469d934800e205ab1844142e7368f35341f469541c352b42fde76519c8d732cd22f0ccb1336859c049306f9f87831e608bc34f03657b5483555c9ebd6a865a92d7f26a1bb3355e65927046177cf9433f1dc751c6d9553f979d0387de0c504e4f7858219cb0aed637ccb9e293a5fe7e72eacddc11cdad0f11c3ecd96e4703f3348c7c651b9914fb2315902b91984425ad7f70438429301e72a0923c3a8c26bd3ee695d020e78498ad51a170806565318e51ac659a5313d7e7eb1f7402309bae49f46368cac553226559bb497d40c1bf46fa243a5e69897fe8f7a0b57fb0ce2eb34580d0bcd70c213f55a2f3849ec7f6959521daa68e3e52616ff32595d90f2dfb46e63cb2c84c85270fdc1efa359429019720f0e4b6cb2e5d9c2f49912bb1da374f6601ff5c3945a5d3ba7657776548857ac105837127e774b53dff88a8b55656555cb225d4aef8c842ddf75f733d36ec476b8735825bd61ce638c2a48d71c68406bf8a12408b3192d79c641b542bf4dfca769a86d2208aec4c2f128e31eee15cf4e438207b61626d3e11f24a383cbc3e0ce219e58e45e0c420a7607b3b50b2a21e8de5d91870ff55d49e8f87b094f86f2dd8f2d5c4cb1ac6a3285efda9fddd44a3f4964a772b076c6b24a33c5cc800bd90b41868835f92f3a735ca5e489603adee1912413f7d0e7e93ad01fe85f9d88df46c642744a0125f34c79c713309b2eb51f38bddb02bd5449942763a592d7fca192263469a94c4f1f25ea01053686fa961fca1bbbffc1a1dc6ce5d3930126d5cbb3a8e65499907d7004ac5d64e1dd15b7e404b85621a01ccc42c715334f53c09e9fe11a6f4b3bb5c5d0b97c4c200fdecb93d5f1bacdecc9f41517d3fd83d23f73adf0b1c01b1f543222614ab6a63224dda7734905cf02114b538a95d5f7e28b5286a002b14d2c47044d991111383efcc84d609844eed912ecaa3d5b4cabf2e07cd234efe116f1826d871276d87c04ebbe4725de988a884ba673976dc47adc2e7c71023f3ad6fd23e5db7563862e2dbb7ecd15d031d511d44074b870943fa092f759af83cac53bd50c8c9176115c7592ab15f2b2fa24d5e07b9ac109d5d8c9a0089b21c02e4246c1ccf5bcb87d96b600cb5c00e6345d82af46def0f16c93e55f79c2262679b8e6c04cd3436323ed2563d091dc1de0ff57cd43351ae267ab7aae886e3ea8897aa5ffc1a26af7fe9448d889885e76fc22c1f2e93eeccf588b82d08687bd2e97e36a94ff791b97ea3f7d7563936af20c970dbf2acea88bff0104f85fc8e4d6dcdb710fea0d16dfe4140a386f79914e627cbce3d5809668948d1618c06ede9c034e84e4ed19e58537fd181c9cde199ad60107500140ef0621b1a0080be95d4c59b0aeb3b171476b7f36be6d202bbfef856741ff98a7f6887012c06bd7b6661830e1474fe268ea567af92e31b543c4382fcf6585a0b83b8bf8d3df80f49f51ea16e5dde5cede08735e15c2eea6400bd86da179135ac3075e67e41f81357c0521014ca700e1eb2d8a80907d4f7fe89e0008e8ba51ad2916b0285c77a6a8242049265285fbdcdf49650dfc9f1a52940e0e000e72903f3233aba7770fdda9c5f26afe0e395a8ca0da0df4cba7214bcb6f718e8e08daefccb12e2c734b7bce32015c1a3db01eb111e2c70b86ffbb71a0f6edbda44fbf4315fa0b552f8e3e9361964a04e293bb8b8533b71e57950fd93be83c960dc9299eb9619e667340c3b16edb32085855b40743449c34c1de37d11d722ce3571aab9b06d60b1ec12af01c24f0841d4e3f94765d7838b94f9dbbb7cd3e74e541a963c0142d6d5c4823cfb4bdb786e919f60e9caeaa785662f9bc27d8a02442d7bdfffe4a228cf6be65df892fbfcd76487857578725e3ea8a770b36970b28a46095c0d1bf9c634ce21cdcec0d513c0d6e48749d8530f4c7d79873796ca58428ff770de2ac627c2faad30388f4113837889f8cb4652b7aeae0cd0e5dda1324d1dc43af7e0620f1278ea8858abfa31502bd316a0616045a1069de4e70b1f5aa77d540008f55b8133c75af05ab83d2dc6746155315597c4d8005644c686b3d0b6e8da6f2fb930cd7d5aadcbba70403cd799b32f78c62b8ff7d4742b7599bd52844eab15667aee9b7e5fac0d99cc923015914fd9d6262d17e349a9bc9ecb362a191873942421e0feaa15761b566fde6a3273d3ad953a6fed64cb1a2278f7cd2cb191fe6cdbdab3d43a90dec47ff62c3e5a27296e1a7848f1265f80c30c8abb0f79234b98ec67b0f015c29e00ab21f25d893688b9c6134ef526b0aeaa340b7676f7ae04b7671532b91afb64ac914f1370bca13b24cfac399704af73a6d539824e248d3369d537a54e501f88fc32dbd0376b1a87e8c8d738457599494f6ce206439f8d77765bde0d303ca2ef67c9e32a4df06c6e9a39492e1dcad8e7d9951a9c719a4601c5fbbc44449c55934c62f656e8afb48a97e788fb30c4b47b3b59d25ed26b3b72ed3e1760554d75aabbed825fc678bc9b5e834a8446c2406b0ce2062e00f6c1b2a05e0138026d2b9bbffd7f01a8b8a6f69e69c31c7072dc079d45b5347189a71e5bb1632c1d0bef88e8f2b5bb9cda6cb202694f931ccb2cb0045d8507cd9a47f4f69ad2ebf21f32bfb36ab5fadccb40297048a7c50e9a20faa073f61ffac2fe7dc02fca33a367b34bf6252efab4ab7127f52da63931f8a68b5ba5c6667703019591737fa19d6b54e4616cdfa1dcda5b87e01fa4cd62616514dd9640921f4deb22e3df7b247dff78208e97e1a4267ec4a7fae763461618ea2cf1a5c48f008cdfba962875a7a1d0cbcf26aa7e3ca0e6d07ee19220698a4fb52e26c2134ef90129b9be28a0b80442e5778830deac79f3323c47c64d62e26842310d4adde18c61b139addfd9d3584b212811ac6000eecaaecfaabb72b708631b9332ec14fb463862c25e60c184b2b51d0dd806ce1be713a66624bfec6634c47354bd553334b4a0a5dbfe701f8d18e7111f7413f6f2d85d3adcf40799ce5cd8b5d128f25f87e049316f31ac1e30dbf0273a24e1b4e5c2a393f425c6186ede660234b488135064f32b94b17598235e424dcad24db26a58a9c99edfdce261eea8888d716084dc869680e6dfe8706f57d1a7ccc85f78a0fba2303e3c08d910b7fa47a26cda5fe67befa68516d25930b110014d15b8e00015077f6596ae25ee3e3451aa517d118ac8820fd34d91640aad1ebee6dfe7f52ee22dd33ecc651f2424b3f7d0e27e7bcfeb0ee9d9d714f63daffd79b0890d186ee8adfdb77cb96f52a1dbf2621374b36421a373cbe741716fa0fd214b5022dcc16f695ce1328320619a6bb6df73051ad4eee3c2f423c81203df6883dade06078867f95f1fc33cef0c556a8f0d97a97e615aa7195f9c9e6dadf65c558c6045fdbfeb8024d0da6e3f3073c660bf7f1f4e47456af471b622361ff997b5977b422b4a98a009d7a6ac1d335886fd3e8bcb4848d2d3b542c5c50b2198fdf8ad1f4074481bfcff6636784b7303f8838173207b07ffd29ebb2694db883689f8214dd712b555b7dda54ed3f685ccdfd7e28de39ff9e83e3eed4d692d5cbc376511a5e4b84040d60eb55c02ac8633e528b6cf9e5bb2ef32e8a63336d48147ac50fca5f48fe1908bb0f4db312ba1eef32686de8a7baf1882d28165fb545de94a1729d14584939ce4f1097b81fdd403952a19bfe01280b8305365b1803d9d12e010276e9dff523aa8230bcddae43403d0a6855ded6c8a37f463a7c12295d95ba1e2f3bdb58018fbcab13b8078090cca894e7aa48c483e363f3b720ef96e378e7f8c2e47d1082fe92f491e9fa42ef0aa218a489952f58ff80602238054d4b1fe71be54770b6936b3db2f962280a42390171b0cf23eb2ab265c42757553d7e31b72c025cdc2e05c64e4f9585febfa754f2ba6a45df8b971fb8ba521ddc76a0c9ed28a6543e226f5741eaf741b2c8c82d326e4c71fcb9d569cf26edaca3ec5383957ba01150e0933029f18767fe87920f68ca7850386e0f4e237a8b0bc90b662eec4adca1dd1024c504dfc9d4354aa8fa59bdd73d2d9c184fd1adfc43c34d77dc3a13a81f7390ba97ca1409e86e2e5df3fa8a9474ea653222165945609ae00156cae911a1415df393ee436b94d1071a6b8c55d20ad1c98ec23d485303e50b68ebd759a564f533e53cd0ec2c3864a5b3cc5c44d89db7a40ff3ed8940ef92da16be006cf60e5971903da0e9fccbb66e4b5adb1d1fc494bd3286b1ffef13970d931ac16531bfc9bf656be11deed9a884d6fa8cb4227bed89b28d0c4ad26107470e7844362f221f1a0da5de14107c781c16b507566ae1a285a28ae28c9b9ab9566daf44fb5465b7f124c8e367209e5a42ec75e82d6d860cf1bd074041f8e6c556dbd7e15c08710193df0901ac1bb58f3ac5f9fa8eb469a5df07c86feefa6ba9254044b00a0b1165a2cbb9a0aeae775cae18f7ac5928dbdc0673e5b878e25055b93f9af1393e00bd74098bd1c67a71f9cf4f15bf506672526049e7603e39075f085b1475feebe1437c0d4fad88bb3ffdc5ede071585d5baa03cf968e2b31e8454d66c966fbdbcf423f2e0df90c2694dd6b2d48e5ad243d26c1cb617257107bd999cb0243ed2f670dcf06709c750923f4536815af9335ab0e2eeb8e21423ba756c2ae0536c29e815e19da5ef80ebe5e27eb82aeb4db3452d45b63b357d61471660e55b5429c187a260e08039c6fae5a1340ece2f823d67a5359f387401a0796f02daf3d5d5f78b4af148ca0e9251884dcc95230688f82cb93b9cd5ac326b8dbe63bc241615dae52b40cb1802ca6ed86e585c60c51f2a824978a3eed0ce3d94051ec5bc064604872cd8a3642ddbe210339e4a3cac5fef0ca3459fdb1027d4809ffac5113967ed416acfc7acc30bc218c4fe2b97f58cc30f015cc946b091a27b7824554e8d94812b09a310bf3df217fafe1ef8b222cabea1e4e128f721bd8c5b6a0612c0002c28bf2f228286e7510e17d424804d93308c69fdd4f5dd4ed183d177291f1cea51af3f1033ea9bc4800c0cba77b0a5fcfb3dee282b0abf29e9291bee761166a1f02ace866c2a98aced1dceab5f752b5e235a3aa88aaba0ffdab15099eadbfbaf87fd7a9988b5bf43f51e2efa73f02019188ba7d389058fc4fcee17e2429ce03d5d47c5b36c9157797bd98998389962370eff924d94ef67018fc9869d236f2b21c4e6d50f1c1cbeda3921c0b9071ebfb43b1a97943254d350222e69410d828f1f79e6d913c75f289abf36218c5f6c9d071961e5e346d40b74ecaa026b5504e734ba95c0d8d9d28437de8e273511853bd6862172109bf0f9593d9d31f15c78da51e05538b8e70072c18727b043407473c2a06a5911ea8dff35447e8b9f4910e58ed14ec8e61feaa9ca4d8de3ccf3ba01dcc58d05f15935eba32fe713058419e28a8af11de7382b6e27708592e426db77c0feefee5501dbef57f0dd84683aa32ed3bb15e72a6e8fa11dccd7cb81f0e96d5e959010d3b12af5125075dd22456dccdb9be4d2d50d1ff193e62ce94c3ae1198e91ec165aad88a6242cfd604a2d00340d172eb49d5f0da775f469a0339da1aa3a6d4ecfda61bd1c3e754cc3fdd25ef66cb8a9044df6a47bb778d553024ed29ea50573985623bd9b24430eb0ec7798a85bebd505e021e12e25303faf37ae68d39ff3ca1316daa80d8450577702be2a18ce90681bebcb0e748367506cdd6bc95aaf9c934023c084d9ef7e26085ee0b8ee65a9eeaa6badfe540b14baab4573135c86cab7141d96b3e20a0b5fb1f48d76c4b24fe8adec9c19e985371c1b4ba6659a1ae0c1eee218f3639d1180950bb508cda032d3d4ad252a104decbbb10325995d8db587d2baf0d630456b2f5be27a259a318247d6d619483a69ccfc3adc2fe0f697d52d68e791ec1d0f51fcf30a11b1dc22297073ac460452b5d281eb75c4e40efcebdf8db80a80092cc26b093aba8cc434bb640facec3cf9b0b149bc39ad537e7cef20d9630a650a6a7768beb1bd5a934443453a9b334c6e8ae517f39b2d920c617d18ab6e18de34b68c5778fad2b1df248b6203ac6085c571b3a03567480939f0f5183568d9a27308c8bffad9a82e0d0009e42cc156e35d2dc899c11fcf497eeabf413b4af9a475ca04cd585608fd47b3c4f8e20b12fdf4b96b53d3893f7891dd55a3517dde433aa76799a533c0f140020cf098a8cdb7e72e24236ef964a5939b87c0fba1e7eab93aac44ad766159ae2902219a9645308f53cd3e2f73300fe7f6666d67cda7b7a876e63c1cb066ac40b8e1b3ca8b51c95e52264722210789ebc9eef749f36760d67f23375574d5cf393991aea89d2e245db890516d37aae14e5f81e124a72c50de2d6c10ead6c2aa8eda71fbab954ca166c2dd9bb960a5fa7c22988900e4904b05718108e7550cda267f3b97dd1c5bc00f63f292fcc3c36ca8bd8689630b243b11d53a23b5d3431055f08ea845612d86e4dcd737bfeef3b56b1441c66bec1b2912aaff3f6a9431f78d8a2189c117719ea0c1717691b62e9bfbcd7fefcc5e2894b0f179c526cad26d8f6e3b05d03cc29ebb0139cf0b1c9bdda1ffb1579bafb5c5ad5d2dcbba3dc1e8631440c1018dc3f41853fbcafecc976fdc9a7fd78585334a6b290b693fada88045ead69ebd54b497eda5b18f746e00e7aad80714325b932f81a72e45e6bcbad581a9e7a199ee5a22c4834442700303b98d4258e603ec0ff9f4e35bc314ac643ce1682dde6ae5eae0403b7b21f74cb6e37cc6fba3482a9e74688ee46b0c82fdc59c284f9ecae34a20a6016d05323d859f32e51c175edc1c8b26179829c3e7228ea952676b825a74bf8b54d41ffb1bfbea1503d930bee0bfcab9ce76c455bbd72df2b6e144f9d5d08985c9f54c74d61173ff990c15c9ea930ff74fa84aeddc01b1ae5acc63455d21f61b2b510cc765fdf91493075233c6b4210f7abe2a378ecb680d1992c0b258e5e3838b821da4a6fa3b6eadfdfd33d5a006a9a80d2d7b9208769370f99405159a2f2a2eb55a76eea581e76fb53cc3f9f2e37072b9bf3ffbddfa5b3b28dec7248d48466e8f151575e7e6fe5cd7bb50eb7c6f5265e56606e57223334034a49777ad60b6ea34989a6424c409d51971533b20567da93a55607b880ecd4bb755396160d47a711bfb16557f687709c3957f47398adb6aa7f770166547acadb23b95bf32b7903f1a3143bbd17fd5d0851669551b058651424a97ab02641baddc5ec508a5e25a69c25932d3334b045a12a2d8f9cc5b17e70158497b5372ca3ea30160a677940212b7cdb9cd8878ada88e7224f7771d87e96d3e7e1c86f665fb4decbb81d4b3be0e1116981e23841c538cdc11d2df06e1efb934c68af2138f576fb79703f8146f3553da14ad96f21f146d610c5a748ef395809ea8d0494ab8f3dbef39c91e6ae2e3d1d0d1ecd50727ca7ff293265a6f484d996b38f99c3f503537b326996a347d871a852171242770f8646fa6820117f2e0de67e7884bb75c561d6b08e63f50e828107e9e6bc76f7d1928993f51f2bfc80a7d0ebd281c9637c4121e584ed7730160d726aae3248b1819fdcce65b876dddb569c9b9b9d4403ccb3d2f72d227d1eb93623a448d7f14c6a2022ad5e1c6333b83cd2b7259edbe5d7f47a76ef1e5f41b1416188a3b0a21cb7010c1c6a3f29a2b59ef1d81c9ea9397a54302709133492f23022e897fcb4d732be0a42003bf2012e191f3633fedb53cb151a7383c39468f50b9065fac9e4e0ed357b10ca383006ec64aced566c0072a9c426ba45cb323451e7a2e8acb734929e7a94c02b375ce0e91a4aefb2fd3e3ce48460cc28f869c0ee3eae3949a0500bb8761ea0b2495325bb66a9e336443f0f4a7fb5caecf237201c461c65da383644adf7902377ad378b06cd9149119c1f14793499605e00e8cdd10d13d95cb99653dcdeb5ac50b7da3f0d42a958d2748df2997977f01b1514fe0e733e1edf39bfdbb10f29cf440e45f6fd5966788c5feae86de434b1ef9a18bf4f40b36c2e0ecc0dafcd0269c9cd9a439a3f41edc7c72e3fa13c0e4961edf7eff8b94b272ae0dd2b9729b5abf5a3d9b1690590b6f3451c571cb69f716f5473d9729f66901d8f178fcbc329d022e5729abaa3f445ac527b3af43bc0ead905befea6e708cf72b99ef8f434a90f62165c253ca6bf002490af58479fbad99c7abc6d63da5ad985a6f13ed9f3a53f1bcb0023f3e3ea3fdb1009897c5e16a4023d96af12bf2388079f380c9c6a9c35dfb0d35ce6cde8ed6aaf0b39d4c65d44da8e3daa19f621c2273c35be4e3f8a94f546d0ed724136e36c775848a5993206538213c242f41b03ef9eb9390f42bb8aa42ad0589de0c6c6b206e27e1a10bce810ce942685a28f3ce02d93243528439ff72558f7747d9e9610ec9e966ee432a764ec74f4c98d7bc9bc942b36ff775d401f1cee85678c89eb392fa9cb7648f7f7f03a0bedd28482d543eda2f9e1620854c22e5478928a4b9dab9b848019270e569425354c44117dc2de18a5674f0cddd91b198236131897cd2b7048d95f91c39c42517458e4cd745f34f6f04af6c739b0646cedf8d4df8b99d036b286bc5735b2ba09b875e989bdbd05b15ff0b71686f41239bcceebe42d294811ad303fed96186285fce6ed73adff073d2c2eba87ee0f68f5a7b89aac11d72e16777315e7f159a695dd676f8e5ccb0e9ef210e898d84bcef1c0c8ebd7c3bf708341e82868a43d7cae2a945797a2689e667ea72a30ddca22de6507e5bfe0643b5b74e289b17fff7150819f8e1dd8b97abfd383ee2748ea0561f07c145cde17ca8aa63686e6f387b76088e58690d04f630cabbaef7aa81a6605762d06617a95ab8cbe6d42b2255a5acdf2af6cde9b775e3bb795d82d85db6c28654493bb76f726499fa7cc37a2574c6e66158c0676829c914335be4cb42d4d4fdc92979221ac000554d67d4da7005fd29d7ca7aa09746dffd48c0fa940bc69c6854bd14f1c8d06051e090c819acf24d638dedd98f5c8019913a1286f1aa5e6dd2a6865e0acf88a85d444d14ff299c88a8f7f5771ccbbd521975811d207b7bcacf09cc06888f9d0d7fd8f89d669e01419c817b449095205254653a5b2a59380a6ba340d4aab4f4dc3cefad43e532d7b9eca4824b3366b6a8e20684d773e8fd4ca630bdc70f79c277ad39e73fd3cfa122fa293df1606bfc52f5bce870dca4765b30a598e7c2b747917bd21a671b80e98dd6b8cf95dd82125b6a887fbdf63164cffa9bc989f673cbfad6ebec5198abc6866fe1476676a13f3e14214efaef9b6691ceba55030d64434de4df46bf995d955ea8ef82cb1fd5204be5ed833f11306cf28099b46d48f0de939b3e98687db4c6b206f992a9ae5e5cbec155eea14c30c8ddc9aefbaee897000a459c0215335c49d1d0cfb0204f46bac66761e4d7c79e06e31fc62e49227792e799a3e930d990fa126e861576e2b7416ed704816e86ba34b887e4e8edcc27ef2110350c89525b4e27e2a5a0bb871845b0c3e237e7a94720e08579ff84dcd17ced7e77354d71c08479bdafdace4dab06747a0c26ad8ad9aaeb84f2a19f95c2ea4f455e2623694a59ce1e325f41df75b2b86df7f5f4d6cae66a5473d9da8fcf53854fc27a0b0a0a42b2133a37b4d95899dc95deabae6feadee31f66e7d85509a76a57091d216f2b18c36203a626e9d88c49175e46a2fc31af8250a750289340993f2fcffc67ef3ccf0e4c91fc8327c123233339a7dcbdf6d8f92bc4858ac60cd3f0c574a10ab917b08bb10cff4b388b0f72db31dab2120ab6684b8bf962f9b5bb1676e946dc369ac97c65e95d5faf6e1b6c53e5ce4eaa6487a5bb32e2811450eff263c92bd079d1a64ff67f866b38afbbf292969e03a0325942a67f13ca767cf3d0d94e028c9ea52780bd81671a00a1cb64b3d4d5058e1bccb82b116049d0c20dce5592dae9c5d224a9dce9b6f65e3d7cfb18944266b0b794357b7f47d5f929d5a4e8cf1f399c7d50a65b802555718f7d4aa730ed09e290f03888c54c322bd66fa07c0dfdc5f9e592067fbc54ee6e572a9171ed13485c2be9ed5ed869294fcc54cdaa322eeadfce4681cadabdc889773103c8e6bf9b252dd4c04b3876caf403461bd3dd2c47b734b0157cc7eeea19d49ffdae2185d9c6a4259ad02ed8d802cdcab11fa62de30080b5a19df217bd9f29a5ea70d0e577ad495cdd7e0e3ea5b341c995f070a105c2320f67c9571eee23b6c10a59e1e3da2fa0511b1bf767e64552e2de1bff1ee7c9893691fabc2427f20be96cdc6ee3053ebb2270adaceabfa3fefec48b93c69256dbd227006edfa0c4b12e385961c2c5eb50f9cf81922543f62ffa739b2e5c2e1eaf119cee3922eb26e38022f99fabc41f12549a277f1b61a2f0f356a8e90fef81a9de1860697c7c31295cc8dccc2452915ce96c5275d8556cacf0c9d8ebb2100ceb4b8ff328214f610cf5f9ebf6728a9d551d809623b2dce274896dcb57e5f82f8f3b634c17cc3edde6b25503c02814fdea2f4f09c0233923e2819145b70d48765640cf41060e571dd41e4706df17acd5f99661125f4b78d7547a96967d97565c2b2d8254539aa8e7db398d79b145ac95719d6583809d4b7e659d030c5417d19fd6c02d4319a6fd240b68c8dc92e12eb89962c8a19f4ccf5a62e7db1aa34d63b0bf26f45a1605d2f919e3a458bf6b06b79adf3346c4ea2850b27bfbf81203a6b66184c9b7584456d03f0b941bfa48b8f43d1c7a8364a3db631196be8d6eb7d50c6089cccce2ab35c8bba3fdbd9ad6ada8c0eb0f96a6c7a34bcf5f9dd71faf04b883edb7bfa212235af35d61fd32b46b782411f5620bffaa48269d79ab5d8c3c340ff94dfd4ad74377f51e53c2cfe3cae1de49b830f5c0c961988443ac57fc2cf3565cce7528253ecbbafcdc98f5cfe4b9e292d1a32043c3d97cc4b703f866bd8651ac621664a27c7724edd98eaa7b15c5eb311cafb55aadf94cd78d36db8a60b692c4b5090e558f5eb84f3909dcae2dd371c65245c2bb66bbf805468f6f4f98d9ea0d914d303bd46db595a15b434d2923abab6915ffc23a5afbe9ae4b492ca02f1b43312ed2702f790bd0ddaf8b3fe46929bf81902f51d4a9626ce3c7384d25a7a3df5827a9282721dcc5a9916c306d68091a818e598ede63dfb9e33b10a757ed1af4a34020f8a09fe389da01e0ded00302179d3bb1ab4138914e545ebbf339d70b830c95b4a392a55695b58bb90d288dc876ccceebb844f4bbe02f1643219d6aaea2adb881544fc709378c5e0354b80e4480443e20b2541316e1608fea16da864952815062e2b933cd41618af7332683d492f3bf37df2115f7838981d8aad0792ad389f4e961b9ddad3efd79973f57bd4845f128c86fe2b0468958335235d35f9ba706f46ac8868cbd49b93930b3610c1fd4f00323ab5812d53c67d31c3783ef5a4efb5ab2426ff3c9777e16e7bbab78205051473ecd155a8f34e5e07fdc00abee961e9b345a6a67540dde7a190cb54b18a7ea0435c00ec1f1c12d6a330d6d0ec79f7852f95eb6c449d9754a03900f59ac595698f38250fee0a2e1d7ec4ed757f369fa03597c8c1a2de13a8a2734bf02ec261c35e727c517a33a8a89e728356cdcb2e4f2d008284b179cd342686d9981bb7612216ca8802c993d0de02cfbd0cd6d0101b824186dbe9959bafbc7f3c3c583a4f5097c92a3730417ce6f1b614588ba504916703640ca207e0a6748b774bfd49605335d77c06ab1ddcfd91a145e34ebac65617c27a23eac093858778eadb54b13e64c932cc03da6ab78ff95cccab4432e8b40280cdfa0dafadf5c9c2a2f0d6965e4df77abcee2edb04766bc854800ba41a3f0be7399d6598b5afd1b0a7b2a0d319ba8cedcccc2b91be93e918143a750d789708b70c9260bda1adc01dd4dcd1ccab99bf0205f42c4e135f9e98eff138f44ee6ea4cb1d8970cceff5d7ddea381c859f6fb21af85fcb47e27bf3e15a249c8cdb52759ea668c2ac04c4cfb708f302f536dd2ae6d83b0c4a5a142fc3b93b038c5f588acf16a3eef1d8d786973ad4ddf95cb715ed03774da2d172f6bb031d465e1671888d75d43d8140a6c2d5c8d54fa838067bdee56c0ff78fa1f4343d81ba76b31a34bb621adaac6e95a4077b411f6f7efeda119ed25c5a9e4722bf64d41cd8d6416e808748758101748bc1e158b7e8a504b76674b5292a0be944d0aac6b69d1ed48bc1ce810a2800075fead0bfa8525e1220f85bd4db92e08b22e1f9531e1815b13f4d05dde8dea87fbed2aebb9406da7f859efbb80ec4e3cde534d8a85a139a80e7ef4e9424c80c57fd2c7f127a3ef33e2df0b27e347bd05997a682019debd3f0dd9ad9ccac5248d29fa0b40570555b031613c29eb0e7964b0bd5d4dbf79fbcfba35f763880b0928e2820752e638c873a5f26c22064b00b0826567d45e2aabae2aac1d9a0836bfdc0741248a63c8aa41d8d2d63db57207010308c55876c1d3ff55397cc34e05f2bfd9b839ca6f3b51afb04938b1c2fabefa77260ecf0622c0f94ebc2443b0bbb6fb32f907ccf2da3cea5835d499cad4d935ee26e2dc312149e100d2e91e093f3418c91cf697db611f13991ede63a83bb4124788181b8ab92a2a84b5384be8d3001be514454cc03ce74c450530a33ea4208507625f2d08dfb8e5905ebdb77c8ec0fd0dd668fadbbfeed2ad8ef9ee967171e6da027e726534d0477cadecd40d31b22aab0b433f4ef35fffbb09b27710edfb15b3ed531408e7dad9f54a5a866ad3ba08d7b28eedfc9d98cbd455ed94e4f892a088dff9701825ccb7fea97eeccb51d85ec9e37fb3e69d2fba4380676a1b1d7294d60ce3bb291c48eea9de1715d9a0893ad568aec610075f318d18e51f695afeb8e8f450c83b15b4fe2a863f87d2de819c1fe12896565cfad56937fde7f289ae13a95f15c8c31354d5e110021af3b0e3651280cce49b896f0216151d9d39128c404c28b3e3cf8547d90770a9fa842c541a11a707cf35c942df252c947f411867c46c4f692a6ef208244e8cbe5d9d28b5b60d10c08615fd3e088f0a98e7b9ad4718ecc7d9c517bb5daaf8b63138fff62f8d21baef8c890f2e30f0bcf0b6df31e44e0843452e704af920b54a1a72f6c7c6c0a5e01436755ff6e8a7c7f8df70ff8ddf8c4dcea432390107d8447f02208e368e098f3f4af8a3a1b5781571ab7b6b784a0151f3e8470316081c46b77ebec65d2c1968d10dbb48a55771eb087b7fce559e680d717d2c319b8422ac480a4794bfb4717303ca26eac3040f264887fd3de49ada21bb9779bd2139785786d7703fee566e46d343583796eb2b02eaa41e9aca94fa25b42e6ffa9b062d87a07a99243236cf826d1d0dda7ec14ec9166607ab321658df5bc36d796ab8283efda16e97813f323135253701c47a46b691404187a6a89aa683f26547314df244593cff8086275b3f8a40ccf09bee10b7d8889eedb4f6a52564408b1d7cbcd41402cc213f9141b755568bf4ebf779dbdf78b29619fdb84b3e69a0d024c5edad28903397baa18c529cdd96416194384a60162f3d3fd04ffa7883a5c5d289dfdc9df99a38c91e2a9390be037ccbed05a45da09339e64f2fe5da4aca016f1f385fbfdd9c462cdc72de94e3c9ae2d817f208dc7344c95d6569fe01f1197e278164ce69c700aed67aa22d83d6f0534b6770744dc66d793f1a011b9a5bc1a86b58fbbcf0586a4cca333ddf1a61f3351f1edda0c7265ac36469ca3c6a83b0f283fdb734488ea8fc92e8988ca0a08b3a1cb8ef58705f8c856ebc8bbc72f42bc5fee552a111ff39dc745877e47f130df1a5bc472c43d2b69c0e850a701e057446bed7c7612c36b02c9c149c87f76b8cbf46d7958b6bb5a44d1d5f3f7cf52b597e0c9f3977e2970fc090587b70c41f9287cda539d042f496a52c2bd27259df599ff95c952f19ea70be40a3c2fcb40c0a22e6a048d1d7c5a20beab13646df276dd8b90b882aef5dd69803233a6cb89d56efc5ac97f2c4bfcc4395c61c8ba56725e7f91049a096c5e6bc8371fc46c3f581d195fb68896d7b5b4efe3573d1b7847f7e387be4fb019fae7054f46598826ca8baca2af20b6b4b78e12b7e66bcdbee2a4f105da88523802b5d849988d2d0e3a21f1f79a2caf85ed797bd12d8a283affa85f3311c391f948c3beb00df5178c5b8535dfb23f9d9761880e6d69d0887de58294a91f444dd6a7c37565b75d19f33a6eeafa7d76b315e18138ed26cdb2d331e80f9010f2ca1a2029bd1e746df5c4ac69ea47100c31338eac2361250ab679776eb1ec8ab7c1f55a0788251d3d13fe7d00bf8e4a5d4eb6e05ae466a63d068326c3c1945a214fa6ed79d4724b741c9d3844b1a590bb3ec8b1d342671d4fdfab08fe4e9ca41e35f93fdafff708dec3c38c7b18c631d3401737cad84e09acf8ea2790198387beb8fb8981e53fbfd5798048154a1d584eb9a7de4b00fe504ec0d1c88b13f0e8bd9a2770d7571690b65163732777d2d48adf4b8eba2797a2effecc077c84cb595ea7491afb1cfe26c22304ad1c7489735a2be610dd7546bfbd5b58cefc79d4998e174172ddacdaf5b747d4ff0e7856a17034e4824f0749db9d86c982127c1e86a25ae790e88c7e278ce6aa304cdf47416ae94987e75c2a7f6ab4ae6a830c70a77bf72483e7aab347a9e152ca6063f7263ba87cba6cadf02cf8c7de7f8724723a615e88a5ad89941eb0291ebe03d4b79d4cd16b718d4f3fb695f96ac31d491a0a97e8c7cbbeefe5922d9c619f2b7182cf63fc1fc74afc4e69a4277283814f4b43e3d12783e5bea1b9fb183b9158bc012d301de26d950f9496cb9cc91f83e64b9bfca98f04d749960946c0a63def9760501bbde39a6d03d4cb3af43d2fdc8611ddd6d205d50984dc2460928de4a0bdfe2ac9b3b9c7f2120fb18895e71bf694996291a2e49836dd9c1d307f5f0cb353d4c8d24583f28a600ef7ad940a5241dfcd652f7982aacefc1eb247c693c7dee7f4c76863e47a7eda231bc9529a5b388990fb074ec406df86f4607a8fee7d1432775d12579febb325e9dee791e15f8346e47f59eebfb50fb9d13917b493d929144ec6d2b385d447d7db2d1ee67ff9bc7bded53ff925be14ad87a001c818c9a25f19bc094727682a12a0816a82abd3a2b18e55ee0c060a9331c545c7bae750681cb7cc542b17a0f7ce5c9117759a92f7c00fb2bdeef2fc9f4e9579ba206d72ea4a41834fe2b12f9c5bcc594539b915796eceac1a3f2fc6facbf71727758ea8d67244b39472ab4a7c21bf7f105309c9064ab959fc9e9c4d7059862780346d14262c5c4db67eceb3ffbb66a3098fa198d563423af9286025d1a913ec471a1dd38ea414f9d58da235c6c522f9b35c6dc3eeb569d68d7dfe08bda8a470b7427826f3049d9c2205111da50cec8ee5dde685e8d1ac5e0a8ef74216d8686797fb2724002f1ccd1f80a5570975ff242ec232315b21893896e76ce342034ecc029033e0ebbc3f9db8cee7b6857828b7471a2b40551c87a186ca236ec66eea6e84b4c2c468131dedc10b91f24059582313d8abe14ab88c422a72f16264e08e0e703f8d1c4ef9bc940d0333104ddc1a8e869754f2c5e07f4de310cc8ff3a09e554d63fec821a021c011239bfd7c4b044cac319766b58274e6696349a673c6b262f7351d6978847317db2fd28e90d3ef09d268e3792922e1f28d6c78d5e83e503a1fda148f52fc6d7c82d7f6ce2bf88ba7c8956af053dd8d3dbd2ecc0fc20da260a57749969cf10485a932b1e708e9b97e6d4cc8b7248f73cfcc036401942ccfcb8ae0a25eb53d55bf5443dfb39f90add6b9e8f8208ecd2b67f5f3c508c0a00a4fd9be45fde89c72964b8dd959bf6322b0758902df476366027b0aaa8a70e699496cd9b3e1ec634694c80d7dc81e2bb53f6824526cdc9e2c1cc070ee2c5430f2ba3a0073e25c7b92b6f608c9ef56d800e1f3a502313d0900603d1390d884747bb080d6a36eb57df4859d7e3eea64de826cfc07ef31d5ce80ca994867087e7e2adf12f44165660468ccbf20d3bfbd9fa7e8547a5f3065f9e07d7d3309381e44a0d5ce44e6934b9233e30653b1e4ad263f02557250a54d99fb391beae04ccce999fdd36551ee1f4a1cae94c71fdde60c6c0455dfac62c1093f55d3c38202ad6c9ec35a1cc2aafa70217fb7343e2ca0e4d02e6dabdb8713f88c2159256556b01001610cc40f2023ade585c5b8bd1df780f7333328044497975ba993cb89ef5e51bf90c5fb7436ca4e26109622e4e65a10249163278ec17ead237794239a912a3239403b74cd60fa42750f303d2183bebef3c7ea8bc8f8de26b8b10fa4f4ad4730450a16e1803fbd9bff4ef43cbba177386e7ca4447ce4585b8dadae1bff32e41fa6d84ac8ce953077b281f54cfdd8bbb6c2120ad2d6b1b1ca2d330fed41a9454fb773f5cd3eb09788ddb3d9d39801135aed24073275215439520e0f91e4364d2409447e75f9ee2d29bbe0fce71f131453011806c28c9c74078f8d92068672d7cf979aa28a526b4137055fda29902b177282b6bb62ff3c1dba6e51036a601b688b3ba374fcee1dd02306b6db34262fdab2f350c48b60c8a5eeb4b1904569cd4f844ce96e8971aead99ccd6228b320c595aefc7d305c2e49d09a6a42722300c56a1e16ac2572e8eba7905df5bc5fb9dfe8aa9844a78682b8f8d59f13a332e8a1a33d507bdcca4f16b6e8637fcf7658b0e790b5b84b505d4f06c4cf2c44e012c9aa44fc3e44b7c5f78d95e6ed6faf8c02e18bd8b2bf7c86827d225a80243bf617ea31dc9e031dd7d1e197887b9faa89e58fbd7253a2abb2589c32dd1f72822d92c1f0410f22c8498d2fd3bb10539df3892639aaae681bf8de88f175f6c18f7cdace40e9238c92942eed94fdbcee35ad075be0bdb0497e34639d058c91aa6f1531cc310d96f36ebd4211ced8b6d57f75bd90c2627b2a14524c383e09667eb0e142b4f0ae716a52a0bf03445fdced86e9b6da2cfd943c5535d0ad275b5e8eb32d741a2185d4e7e3a620f01bb7e12299f6607bd8fe022cb6296c390037a999b9a7854c37bd808801406b91f4c20d99d80da87fb481070c6dee612ceec181b1be39631ee1b8ea1be2dc6e24134fe74af89ce03ea50547b7e9322090655f19d9e4a64088a566916828b4ffbb926dcba837e951293cdcbc172f3ecdc7c4361750c09630cfaf3035751ecc673995da8d3ae6424b98c8e287575f589f346c67f4cf739912e115db034defae2a9b9ccbae8ffa0b6273a2c545616ec15c36997bd2e9ac5e7e15a56be5aa326bd02d2e7f600121bc8977f4001050006a6e52d71d09d693d167e331d27ce1ad9f5e5b4a78430268224bf143441860f1a3a35be56477b99a0b34bf8882f8ece730770cc2a908fd3eb025e366d90d61eba1c14f1b371d912ab2717adc8ddf407c463e9971bfba80b6ecc21049a3b5fc8b86ba22d7bc35f0f54784b931f30aeb98a8947d03b33ae6ade3cdd6a4f8404421fe639b1b5847a2b8e3e2acefd9a596827ee608e3fb66dc2b43d0b1cba51e87002cf529b6a76c78dcc00f3710d2e29b2631488826a60e0089fb093bf1daa063df683309f05afac80b3402313c077a827cc4447fd324fa7ecaf795dea2267a3fb7918627bf9d758240a8d50b38e947bea3cd149637416f6628067b65661dfc5b5f65811f685a311d2342952243c79ed594f5121b46a5cdd9f47052bf0bae3a0a8c488dd9fb5683b08093393be963e8fea46e52405062a94dafb9ac478d88fd5543a3c6302f3e48f46134ff0437f915757d551c831f950fb7ac17b45398a5b662d10a74823f2fa36337665d59b775cee5e513309de7c2497b55f58bd1c539bda21c63783d60a033854d3f4b31c604c708c9d4bb0397b9d1d4ca38a6a97c15fd9a163ccc53fe0f0ee962f7dd52283fc5b8d31020fc8a3021a129ea93d39a6a80e5216b22f5dab5627bcff9f3558059e39714d17519f3a0d9da4ffc7cd300b7cfa4954a153a9c55b5b63f0705a33e88809ed35ad2ccb3fec6c7f205c54de32bb316f094bfabfc38574df8ed869183d18a252dc92c1ed2d1bf8e45de9b0f5ca1c893e912a640bc3ca0c39c0d378e1631295b121c96becec0f0013b2a982e2817cab9f35d6a9e8ba6adea69a59c27e0f6c29c8bde014e209e265d27a937a39238bec551c7ffcc56441460db991eeb71c78439f878b339c563507674d69966cf52e76bb213b82fbdf00a69845e88449d6a9793e3bd58abadbc8e7eef012a3b8ea59191e3a896424713a61fdcfab3ebf914283e0666944f62578ec6239a354307dd8ebfbd70a6e85626e4e20f4b09c29597206c0f09d2e4e07b77d208662b7f4798cf2d86f1684f121d5f26794a6c92c98db7b45910df15f7d0e08e94f45d593e486f02d671da1b907806f53c65744222ebbe8ac9f43535899be6f6cb35187558e78de60eebaf078e1b755cc7caef49dbd406e803ad9a71c240296df64f7b3e806884389638607cb14427c1cd93275e31d032c703308f8f16427d71aa5378f6c61682504e6e4e77bc0a01bc88f09c8abcded788c2315129c30b0c0b6e330275e7d98fe88d662fb5201fcca6703d0b42dac6a267007d96d116654ae2c5f3ff0d7e9909783019092d68bf14abd62ca19e7f46e278ad274ddc75da7c441df6d8f03db1caf0710c712d77a914bde2d1a73152e79fe8e7ba5997b3df2e65484297ccca9d654e0833e1610499247d35508fb20bbae10bdbb299d42c79b1418f667af7ccaac7357d543f8a6fec9a362ccb4e012333914eb4e9b9fcb677c4a4502c5e5b0954fbef9bc242bb9aea3af4ce6e16cf09c329cfc1afe1fc072efb3edf365a5bccf6fa0916a4e5a3d7a46cc926cf94d869023df256cd0a03ae80e56d7bb2d3d34723c8bd59360dff2bc9c10e5bd772bdeefc1c828ffa46042af0a616725366312567f3294fd85401a0d49c45135ff8756cf38ef2f59078d6a2da4b75dff9da048c33440c413ffbf4c608b5fbbf9d0e3ddaafc16894033aff28b657751c87b9baa03283a4375df07b856474cb74f9c07a57958ed2156605ad17dc5692c6c727149a651f5f355959fea92765ee45fa98f951613412b4164e7cded79504db82cc119795861b49c184867e929455722a30650bb6e04c0276ed6d2422b5747de046c210abc345a3340b12adf231310c435b19ebc3212bb8dbfdc4221f11a399432f5d863f943db574b814b5907f0dea1e63abd0bd4d015f8d3b6f2ec8948a699c8cafb77922a250c1d807ac4d188c489382e2a6b7d1d43359fa8535a2cf51ad69df4d5bd3003488202fa41001871f545f38cb8c1082ade4a8b89366f2a0605f1b1afdd3b298d727bd46de847d346d24cbb7d3526169695829c2ee2145a3e575c4135431153b5c87bdde777db5f52c6d452a0b040e670eed8ded9c00c7df3336d8acb4a6dd166ec81bbf3a549a38289115b0065f764dae80a8fede412979ec53dab2da596d019d1fbfebcbf43c413083c66ec09da07c1f39e2d1f44f73521a8dafe1a204959e8bc18dcd1ed9aaa2d1227337c02f32dab666c6a6335d2153277fff4ef88a9cc4bca746eb3973d49c622db29b71d054acf14b008e0cf2708d698daa638c1ef7c6f8d2fb630c598c513d479fcbdeeb16bd5754338bcc44e42f0fda8d050e7a6564ae84736a9b08136be97611d544876bb4544c1f2b4ba3019f9727f37bac3087a95b1cf3a4ade4dcbe5d498cb660cb553e46cdf55557b7ad6a556f9a982cecb58b2cea1d9c9944fcebdd5386df7a2293c99dfc714c97d7689546edbcd8a820e58d6c94b6c0b68b5529da4f751ba5340e731ec1651315ff2aad2ce9a140a947fef34ebede92c9be7f86fba21e16d5d93bd328ca0a481d98a0c279a91b3c7b23ef7ded6f0ba07e2bab730ff091dbc48a4446142b66cc315b423bdeeac4b631acd8d9dbd17fbdbe84e6e6a1e565c7521e2d52993fdf54552311b109597462785d125908e8849f64f0f0abb6637c0fe5f52856f5eedf8ce75fc46c928a27342113a16fb22b7cad8509e5fb523a70907dae7dbecc1ed4ad1e45c45b70e3e13b7e7130c49a341298ce770a85c5b968ecaee41cc611aa02cd5e71e4ad22ce58ee2c98634a7cbbe91c179d1340fd9c1ed65f192b1caa58114142ac288526528c67637282227d15fa346ebf6bf9021b33572e2fb9d9039a653696cb987c7028fc2eadc3b18cde8c69f40b9096c055f861c30e88153f1f131f166d8b95e7fc1ef207f45fe19a1ae7c58a001ffde311bdd9aec74f434ea649a1ce1987712d3f64f67a554c8f7c30d5d9548a0fcbce3cb01f77c4698000baaeba87051fa7a2b4d6d0291495bd3093ec08728080129d8a5a376d5e05d51b09993622b1046c5748ebea75b176a849089b7d5fff782f5f4f77e1bcaab582e2d88d38e6b4e398e99da1a49d3468fb690a9af750fe97e20554fbcb856fe6b54f93e8100ab0d6a7a82fd66273aea964aa48a51d147925eb295c2b3a50e59cbb70f3241f82014f4f0b549385945e56ea007929eb2e53f83f3037c21faeff65dc4e227158ca7a2dc7796a99de2384577b7700e581abcc4591a373e9e113796fc7318329edce9437bcf6054c0c8d4345759078c6ffd0580c629cea235de7ecb3ec23c13989abda4c97710892c738bee3fec740647e6fd48c99cf273e2efdf5f8b2a1842a5cfffe994de4add562b3c0a02771bde94e62dfcae9e989ee3752411c3162dbc775405f4e281ab62292fdc4971b50d1fd2abaaa40c4ab34d39c287499289a745c817deeb78dd0fe450beef61413e8b05ff92d22bdc80618c33c3995d70fa932b7127c6e852393ba034582f5c3501454c105df55bddc577691eb5ed61093d993175d5b6e9d08e03ba3a2b8bad18034d43340bf5d7b041b34170605e9480489d4d446187a36d74893d760f8f8870c6cf0061554f5a825d4ecad2197dd6afc2eee5f25c40ca9ded12b7682da195be87a9af53898411a7786c9c881011eff12afc2c74f6f68a4988660ea555b45fe3f20d6be76c058abbf440e610d5c5656d46107f462aba1e1235012dd6b22d8f6ec5d0ff2b82bf3a5858261bc8947ae54aadd4082f3c22a5cc7c2f7b76ac865cad8d1eadb7dcd08af61ce6a725649a3a66304d35003c13ba143b059a8a02cd4fb83d7c9b2e99916ec76906d4025668c8ed42d3503b5edaeb569315141eb0c23639cd3d4e02536dfd9d628a7a2045b21edea7612ba7909819c558cfc7a55ff13dc8dff825f399970fb91c3318c69ad5ca3bc5fffec87f9f1575503bdd621ac7ecb2f634a93a86d4850d38dcdca9533ce020ddb2b1f9b59411735dadcd7be1cd8997b6f05750fc68ee42b8e4c801c438d836de3ea16ad76302d44166a7094706d5609210dfb3e1dae63ae867c2f0b08475e521d5c3870ff9ea4193460e40f56425413ba3b80b4822cd6b2ca5c895f80eefba91c57e42fe9c5fdccad06a3855325b9cfe1d793377ab2b9a2f1712ef01688fbc745d578bda0d0126bc985b24b00c295d39ef53fe95a2c684a1a1d75313db423b7f1c0c1e61cbf1ec9f4877722b39a397c5e2ad14910f4bd38d817cbdb814bdc9164592e5b35051b1fae72d3705c0dc6e5bae2e9782aaf603e3f57a86a797607c5e5b1c4ff98c28316ff133208994c0b567e4c2971abf2e1cf6179a36f43e0099236e85e6a023225e2a1864db6ef90487f09134048b6e66cd1ba633a1fe489da373d662f8a6188c6a4e9457ff5e0123f71ad96390a302c71df28b85a94564ee9e0038cd8f95bb3ff858eb2169d47053b235b31e9009de7ca478e27af0005a92ca49804594578e8a5e0678fe84aefb649212736072606787de53f609180b086f7e2244ce435ae0f498969c69f98bd63adeeaf8c2b519b9220436d2f144fddf76c27758b0fff4e34441ed0663be9cdab1e3b0062ec05acfc78baa9c5cf8d1fd93db9262e38ffcdfe8c92f458eff7d0777e66f54b3c515c0c85d1620fde69b13a0facfefb640bf1f75bce593b3ae29edaef777df36b84b1f7349220fd015c6a3884ceab83adf69723b08b321d209e6fad7dfe655f89ba4da26eee7c0cbcac2e5e748a34406fb2ccbdd08a71b04b6c6b56d5814ae5ffa377f692a3e1029851660a20157205aba2c36d5157639a88ffd458a217d842811c5521766e27655d15ca2d9386eaada9c325c910adc5e8d1f3873fcf1b00db28f5817f8139e82f56e2a64e986245b1fe2950f5d90a6707fac8dd198145e27d93c28e33dabfc1151cb11575ad80f57a2d3d2b382d69c433f6e813539e6d010cda85c8564362d6fb6f4448f32b3c871388452ffc54f22c832e8af32f5d16251adc0845df72608ff3e3928eec47aa6ea8d6848b8eb8e00d1fbd7b51e8784dc233476fba207f13209281793cc75c759c7b286fb64a9b0257641c907cfc8ec124c51a4691174656ea7690dfc2caf81511e01422471d80e46884157d1c0a12e3da30651c6871f0e6ac272729d52d3e6e8ef221080b6a56483084995d7545fedcd1538ded9cbfaa6a1ef9538c7409d4a0708b0287794bc04eebb82832ad842cf7bfbebb70ce5b23b45764a4dd0159d0634060d8ae1c0383cbb30ef60020c4ac35a219af972b131551726680dc3d84b9f5726383c71cae904f8cce19872b7e6c13cce605b5f2567c7d143bcb941a704699c1039fa8bf109ceae6bd94a56360a09abe119e04a5d02b4417f4f5ed8b46290cd015ef58809c364693baf0db65049ad97c2b47b01c9d499304af677fa1efd214ef8bd65fab9d879519ccb2adc7f7588910e38b0d0a296298cda8896bd9bf2c69885b86986f25691b16a25b917e10e68b73e6ae82cdbda97bc75e83e5411691abbbb732c4cca1859ff9e2a1731220c0c24779c6aaa2956f06683166b9fa2f5029938eaa284d42efb77696d6d43b60ee267bda17b1145869e529a87de31f3b8ad5a83fbb8e07335a05b0a808206b87aa33cbd3dbda2d79c17f8fe1d43a9a85c9ed884c201efb309c6d17958e3e4d6e4c36d3ea0382aca2e91177c3a5387a67f470f700d44af1ebb0ededda0d736e4655a6cb5843a59c7fad6bae654d31ade61a1f6b138a8e09a49a35d164bc2e3004fbd0415259e4affdeafeb899eb371b4df3baab77387e94f6a86ccb21be2b8be2386b435e58cfc23cc2489e47fbc78afb1b57ea90e586b053f2b8a394e6314d7738b1fb40e8c2d91a0954d0b6cecc2578b38af59d12b8f0f73873c6531a3fb77e521073fdb0d50a4d4ab224f3b4dd6232c65b164f98376bd92a7aaa46ea839efe88510daadb162a404f7a67d9956a7095d292b194a4c5e278c525fce2130c4cb338e9cc5fc2a1598b0ea783465135981ece8d2f3b582fe5fd610a136604129dc6bc0ac2e34335aec3050b5387937f9593128b6f94d5db253a43b04a3e92fc2a759c193f35541ac6038ea97da09b33da2abde19357226f65c712670b2ca280cfbd97a64775c710cc069cb129f13f198e8415a6ac057471d46b51f3db84f37c9c9da65b08c73b21838693c5212fd12a587b2ce82f77bf8fd3841c7698127106c9b1a9ea99315cc288e06537b982cea5f443f81ac3a1395cda1c4bed5ceb4b5ad15fcdbd81e533e42eb294082b1945c792186449021e48eb5f58dfc0082c8e87f5b03fa2f9dcac5132a913322e1df9af392b36d630af450f42d3322761e4c55e74b4e613acfb7aea38f834153676fec85f162458132515e44d020a5e35ee7b3094b45df4ab485e4af11ed1773d4175b7da418cf171f0b8502ca23b76a856f7f7ed9bad4fab050dcefe2306a0aec0d73899ae11fb4962e156bb49997d2e39e991e4700593035f4d5a4babd818a33a72f1e272235b9d998cece12d493e0fd03dfe07cf54c1992b7ab0c816ed5dfc704289abbf5c336ab2fb29ee8a6ad70dca65ab6c5bbef3fc220f47ae1109cc19eba10b7a7edb50f6a08778c7384153b07da76d2222b064d413c4a7d2fd5b6e9d205c343302273050399e05a937988ea04f1ebadc7e415b1d0bf325af6b94c92c9ef87e9aa8111851797fa58e6cf2e1929337e1748faf2e110929a30fb6a83160a9594a7847a2270c7ed46d132e3d2f15b5c3449aeb31d2acb019334073d2b53ed3ac11199400ffe276fce83b8c86621f9e269e4254972c63cadb2f2a05500e327d8027e6be9b0103a52d8541705c4b32289cc3fc79c644fdc928d22c17e8c0cea756765d3dead1328e3981571e5546d637c2f65dac659dcd8ee1b835863eca3a0501c7da90a45b497efe3082ca3d7a666fc9d816222641571f008d8375a70755fee563b3f437a0a50cbb992285d4da49990b04c1edfbb95d8d0862530dffa73fbc983ed7873b879b84cbf903a1af3c73278b203de5d380cce21ba399fd5e0ff48e1dc29cdb74dbbc0d3ef52823a86a45975f46762e65d8ad7646f8d57d936d47f35a735030a4d4f7129d2ca954f39e26c7f3b18b322e987926f6fab7886923acce5986627267c7e0cc3ea4f41c3526b9a69740f1544cce519f3d4dd1ca92236a6eb5967dbbd0b5640104a82f1926e1eb07cf615137bca11755d5735adf16ec9d31ffbe59d3db50de83b3b543f6f8a92ace5100c33b87f88de2058bbcca2a150a2d98e364ecd16a57c833b0e333cfef0a9cac010c069e724898963172640b4e2ee095e487f2d21eeceafbb64fbefdbc43b8242d48bb6cae046d7876bb69cbc645a65b5d63988dc101c6a7b62b8270cc1407a65ad216f1a63482e0aa7d3b96f54aa31ec80d71142c1d93a9881a71a523173125bef271a25e924f66150ea841bb3a46f0924d49d2cd48f08baf365c03a96bd5a0817f7b3d7b8fdfb414ee987008a89db48b230773799bf4ceab56b0ab7153ad2395ecc66673b8f7bf3f5f175449e506f150e70765ccddbf1200e54125960095033054f0f9691612821812cbcc4212dfba9ce430b2a4035496e11120146a081f46627fe7c7ea9ec69949657cb6e3665a6d9fb5f2cbaeae9650132438781fb7517c22f202e6fb4b51a898be2f73c04feaf358be21ba3d1c2f71a5f955207dee3e1ddb0417981ac03a97506c3e6ee1be669fa39b5fc67f1b75ccc8b7fee1390887b107e562a948c782a7d9216f4cd9ceb2433fa080a950e14610cc45691abac4ad8a09b3ec529763a7a6e908176ff0071a7a442995872177f995d94fb02641bb8eda6b5c0f5f4ad7c4951addfd74c323e3622aa1b9201a214106d280caf0db10d51f88f836f719d28dc54852c388e71638e01824b3d023f46bf6ccfb7ebb15e29d187a53d800336f341b14705e80da2306b5d14ce47e4a93db483f6cc167a710d95f3947db8a0314a0655f63287ca0ab0a3c758dfc18ad0700898019f003375b8af4725c287ccc774a27d57d659b48f6968c8530e2a16879c14437e7154d8a7d6affe30dbdff77dbe56eb9962f6c4bab37a06e927aedcd95de0668b4ed026eaadd15fc7c95a20246ec40bd388c4f3ac2cf0b0f6c3c17fbb484b109f3d1d3989f85857c9cadabbe803332c0d30203a3b896a8a1311a8512a6412c05e300b5e1b77d2212a2c6afe4b4f85779bd3b43b5ad2b1a2c5894e8246235d7fe82bca03bc1f9036bd00375e2f7df3daa8880e97c5e0bff4bce52efc83f8da89c1b095cf6167b32e5958449eb6555e32c048b38daca07657c716df3b5a05a9aa7cc46626efda35177296bc7d9cf93ba41de4ac91de23849ba1f098582d988be3d01f6dc9137ee4eff0703bea40114d1fc508607686ae9e65d3a90e9f37c1b7d6f9752aa84d035773259d19323da7749b8bb0f457a313cdd21adf690000077c07e6804b537d3b44e9f36fa1ec5e58e83e37677fc10a41a070d6ff25a921f31b23f39575a26f3f2a2c9c7601926fbb2408fa28332f6fdeeb7cd27c1f5781f6ce9d50e299c12e2f14beb165d808fb69a9611cb58b88575af9a5588f9417822996adb414e6de2e8746aa23f8dc2862b9d4d1cf389ffeb418ec33afec7d35e8a661206b779685fe776f0791170e5b2731fc754a72cecc86ed3e1a6ccba3f08ff20c36862a4edf24859c5f6cc646f625810415f294ffba434826a3a3c6457acf0a378671ab45609075a389dc812d4265aacea4da35d12a1239d0f865dda1500be4d726285513fba01736b88168ae929f0d0a44185529f1b8069c8001a6df9fcc07da1a2470ca3e787b789ceb1d6e031b8aaf75616000ffb947375af4a4a9272189d459cbab90f02d8e42e7589eff95ce49e81d536a930ffc587c8227a8e3a44f220eca77d8bae670f596ab88659590f0157a18c08e25cddc427e542701281c918f7ccbffa34a0c7d865e246c89d815b2971528d3230541d33bc9ddbb5785eb18398275d7354d30569822abbb35979fcbccc459e8800f0751c0e24672915b0ce31093ce60264bc9ccf749ce7d534040beabeb1a6588f3802b2670855ad81d0a5b289b3352cf689819b72c819be5e6838ee438cf29410fca8ef46080fc079586452c880d321884f7d3ba9c1e5ce3d4be80df08ba5bf6ec06769d92cb34c316a8ed9d9304a96cb67549fcd3b988459aeb7e757167b8ec29f5b88f885708189e8721f086c41a24a52050ef91452bc9c0576b96f1c3ba3eb139d357638b51b808ca1bea9e4f0c11cb4357cc787b60b3125ebc7183145449937d44ddeb1a911b2e183d7e1df2d68281ffb0a7a000f74a9fa384698b66111b9fca330a5a54523c1277fbc205da7f7a662ecb9482e16008a1efa8f53a85ffde28255b2705794b20a5ad7ecfb1c59fcda588bbd9aa93f7f8f99d2abb0b551561311a7bf758871e911c9cfb7363e40feb81cc0385711189d995e63450a67db7bcf40d2e838073cc12cdf6dbd40b9f97ffe69871259d7a04e3f90952686dfe61d2225c1a6fb30404e81df05e32921f12af39bf5889a86a4c4fd31ecde432a7207a0d032aa503e55044390edd2747bf91c689271e8954284dcc1fb63955d521c662126f68f264b831c8c88eb06c4bcf4c106fa5b3d1d2da3c3c7831946eb9229ac5069e09d6619715fbedbed0225a4a3f0c0fadf5619a10b063f9a5c13547c985d56ca108a127179bded976f7719fa4ebadcd08e06e27121f0f3643c92966ac42391a71e60e1f57a69a99ca1202c95efebe0dbfbbbdbe26961030aa1ddd5b6fd36d9c3b3a776c331171d167f0eddf7acfc5ba2d49c7a9c27f38912b21810fb59ed72dc36b6004f979941736903a4579ea4e1ff30db03c4d65c8e86c55abc2e6b40f16761f66f04f15c175d9aa0748da26517a4c2aba37c58cfdd4321df843ba95560f5f76efbf2d850a66d839482bfdee36d3441f4ee57702615bc02aa3873042d64df282570a23b2d8c101ebba37323352be041f7f9f64070f050266e4982bc80e5cb4a51549d1fc7de34071c2959c8def330a9596a2368c98d0a1691eb4f614b7219f2ff615064ac157f63b6157ec0ab22769b4505aac2139d047d25d49c39ce0fc6bb88371b4e9d3a732fa3e6b67430c52c146990fbe25d0151af2df96f10c08e89ed268c6d63d64849ccf74126665e1ece1b87679a3367f998ca16b5f687972addc6f724aecbac63e6e789a56003c6d6de90a5c0d3f75333c3e09fce97c1b2bb68ddd3236eb52d91913a29c74a04d5130ccfb122d43c7dc5281f6f83255f66435f0370d5d5c94024cf7f16f49285fa2b9e052c4580b53e93931a46d5a26f23e12bd19055dd29c78a9331b965478d5400b89a785ada5464ac6d485fd8a184def044d3ad9fb3db65a385634c2f72eeb237fbe92ec1ef73ab68676954bef6aaec8fdb95bbe22f443e1b88205eacfb6225aaed7417a08b588c207e353d0534d64b0aa7c8d181740b60ff0fe0f05c1ec0a2223673af7b2295132c9a9c59c4aa251dd7000ccc30ff3412b23f448ac0c2e998f7617505ca2e925e154a084d881b8a1421dd1e5454109bc96e3aaf523c1ba33cfa2dcfb10f40afbd492b2ee352477cb382ed4a49e05577868e639a9aebc3ab0a954cff34f896ac6f914c7240736d969c87d40d60dbfdc4da9b36dccee47317a58681739d6e943fc29469f54c6e04fc7f63f37e613947f051f3266faaea6f8bf41aecd5e5e4d1744015c16d6b0345320aca343999ecb4b1e42570f96d4362413af782499a2411d9cf936763c4e8dff2e0294052a69da0f2cd3330c999c27aee524e916679b5103f0fecd9367f0b632f25b7f6821941304b60ee22bc2ce4081e4979ddb57ef0a7fbb43ed2641b3d46b4d9989015204fdbd2acfc3016ff7e959e44cb0159165294ebada77d8057af1eb159f65eea32f9a6d98ad559c1fe7d2aa0c796453b0cad9d1a8cf5ad5514faea0c6eadf003794e6ec520fc97b6c35b9a2b4aef09e3a900f8166a42e3be6b0df73e0a209f49e460ba68805667d814d7c28ee3c654edc9f4305e44ef8a509492f656bdca2b359f3e005a137d91fe7872ca3bc6875b08906723936485ced5b1704d0ad43c26210d46ba8fd11d901cba9b649aa8c14576fc91b0ce03ce832d61e0e7e5cd65f0e9d9362d1302df2648623d2f4d1ef85d672d5e9ec8121bffd2f4913d6679401ce588c0dcb0137db5bab84b87ca00007f9717678d96016beb44c25453f3d62bf0850426afbe47e1988221ff41143e19f4b80bdac77fa33c3782caf0dfda9cdc56c39ab779f1574adfaa48d3e2017e916feaa92cb3fd672e232fe1b1712864cc3078051a43bcfe195f7a44701648ca337d6efe86d7e0810dfc45a03900a7bec4a3f89b1128a6aa230772d13f369584e37c8b8f2481dffb38185f9f6953b610b07cabf57e6fdb68b76fa14a708ef2c2e50397d67c1f06635664c3787fa1dc41a7b86d4dc5a594813f575d63469227cb47a648e8e2ef220c40d9959be2e3e3435251e5f6d73ed67f884f1f984985b1b956f95ab04ec53caaf0d61b9d95c7de1245687903803e422ca5a54c0e9151e8b0596a9954b282eda9263c76bd015f7ec67e8f64d32f9c1e2c972e4c8f18ef9907717b0c08029e852042c95210358f2e13bd4b46d6b6f7482a8a813a328b9a587b1e825389299dc55bea8144c04da0925d9523b26603a4e4aaa61daef2e9cd4eb00e7f902657dabb21ec00e7d1bd3db08806ab60ef2b8da7ce6a051bbf850ca089b89909a76d8a79509d20ef856c5b470b314a013f5c38c33e177af8e658c8ade84dc19ee8f0eb11b52059554e53cb81c67783af4db521e12ac4f8fda278fd81c8666c8d94069c119630818053ce73e3966d1d96ef908d425c40d75b4d9cddbcf848671c30a6f57ac87369297f4ed317ec4ed2d3d5669c1763c1ae9966943e41f87c7030f0b9ae2ddfb76c4894771e51569ab14cc8dce20ea8ea461fb8dbc0e41d94f61559ce9497f417c3d8bd2674b9e6e693ec94352ef73e1c5a29a97be620a4623c1460aec2501ba1c15356c302c23fe2dd955ba624054afe28ebeb61a84dc0b068e45401b8bfe80249b65895e9b9bed392ba14201f45e2303b97127f7e65baee62be688760bc5cf6941503ff553e6c6cb19258bc8eb745a765b49529bb9b3c7a8ccd7cec3e09f851baff30967b67be35b93dd364bf13fef604155c2d26455dee04db65ba2d6f696b22fbc805a0249b9f8764503bd3cf9442931c0a0223d720f2b468586c6ed6c1d2003f0573c1c6f0ea225699f869d38cbc938b562200c78a167e4882125224305f6859eef612560c350f95e0e8c0c49b2981d3fcf1863db6e70a758bd27de3838c5ef4105ac600f07d1742a4193f9f74ba81d86bb1b29e66f45625467dd7257065166dfe0ca3506cda883cecad583c564a0e4a43aecad976e406bd4a03ce06ba2537b06779daf4d35107dd49bd4e07c79ba1a567fa9c1f6062604b046efc8e2c53f57f1a2f570ebc358bf310f9266ad43beaf9b9722d2a10e5e660a9b7c1b5b721074a0eaf38f40513b8d5c1218271cfba6385b96042133282ac50a9be61a65f7abc7eae34bc5601ceb66da63861ff5f3fd4dc82688e4284fee2352bf8e5221040c1abc8f49c991f2fcdf9d07322ee2773f4bc5eb4900d54db530cf2ceb7ecd81d47174575eed2364a70a759c9dc68c9261220d80fa7d439247a0798ef6bc2687b4e23fe62f81188d76b3c1aac36dfca15d0e0c5e7a162b24bd5ffc8e7744dea7211ca260db786e5f94d4410e8b2a435b8c8979fb4fb7e09aa224b607910b4828d8af7e52fb0a5a3e858efb1c6392319317311b1817668d2131b375eaf296902f0e107bf8cd8b5f8b25127c16a6760ad27f69d8103c3cbcfd45bde274446ac98091bec409ae6e8819111a802e5f46fe77f579e8c6c4d26ba0215be5a08fe8c99d981bc8f38aee9b0e68956672d65405c15f4edb8a5b3f6753a76553978c1b6ffed8c3c1c892763fd85c45c33623e6e3b0ddee185fe1104ec820b6ac3ed55d9acdc398cb2715cd443ababd344bb60fe22f0a7f3765474fcbcee2bbe515c6c33dc5b0fcf8fc58b5ba85dee972ea62ec18b86c3f1aaddfbbbd475c6cce365a88b92c141fb367a9d0e67756a8f51431ba76d3b10c64a4c5cafcaf2424419b1793abf3ae20bcf98eb9769fa108e18e5a2f9f7e513080611c6168e2bab5a3636c81407d7c60087ccfe009bbaed91c6c9f2ca9ee8781b6b0bbae62c4e02c7e072ec8a01f76ce8b94e444c0e57736fccd44fd131ac25807a3a7761380194310724d72d6f54f972ec26ae46110cc61ba6609674a1b095d525b4667e83bc1d92d416c5d6d85b111bc28486252be5b4348798daf1b720e51961f2a5ff40fa312226436161ec609be79f250170cba41c9e0e68198ff415f6dbb1d2c85e9db3ebebb0b4725520354410fe80362e40cd50e085bdd1f44d9775fbbdaa0c27280777256d2d6eae3be0a5801bad47e1f396d13d36288694331e1b471b5b01c86e32b8be0905d104a5bdc0e8cee1f4371fab18db873ca912af5facb432973246d1cccf1621c07d08afc310ab8b883a5fb476e5fd8c408e00b030a33b3f4a02334a737c86df26665194c8750ec1025a75e872d39b0947a791329a8fd5be0b1ea8b76397e70394bfbd43c9604fa239a9d8e081a2515429fc24a561c24510bc959526109cd98696b8e435dd257c042ab5e71dccfcc7d87e160f02731a4a3592ddc9bfdbcc0db65ea52ff1b9efbda84466a6b4167a5e71d6df86da8433246d59f3bedb8d495f3bc1a04c625adcb89f5962cca368c1f0229abf89e293c9eb18de8f7eda1b6c328f2e5eb655901deabf9c3729cf0dee822e74b824ed6ed42434f26516ac9f0277726fed0d4777990f6636aa9f254e2376d5becb1498924a99b14261b78c0eeffd7ad7b015bedc3a01df126ad4e02895f8d09608e8d4033855e53034a22cb58eff2e8412305f52c9824c37ddb7da46f8812483ff6b4af04c68e20c9b2aad349a770cc8757b95b3f6d7447577a9745a93b84d20e9b1e0871b06b34e783b9a028a65ef1e7c0c5f5f9c9c79e47748e6d48fcba41b26607f5ea8ec426d3959a61565934fc74d46ef0035bc79759a2e1a0f87c3d0c89e916f49a2c75b63ef8b06d36ae44b9631553880dc88cf2672bf2f38750da2ffdcf6bcbdb9214ebd14a37ad560d9db28232cf0b152d4a21ff9c8cff807a07fd9acadf681d4027e156159438868d889ed15788bced5b0455a18790f66aaf16f24dca552ea91a030d405e51e98e8ff24a7b29f41ee877949678fa87e7697f58dc165f2eff7f202d5d0ee1f029ce6aa28666f9cbfe4da426b2257312c191bd16093cb5ab3607a60cc2971c4c14c3b5442b225096c83ffd6cfe2972ca743ba7766d85e74fb338f6ad67a8e9f58670c7ab5e9ae336b6c9c02c32c6e8479bd7b6250e1f2a337c97eca5de198a25cec06c48e301e85866f82b9f9809d9c78a534a16e6c8ccba770d5bba97f893be0921c6c23e5bddaf911c639c9ab25367c467a237cabc1adb94100e4aed9af74c4a7c28d71d0e4ebd572f42d203ceeade6370281a94a8301c43b90bd65049ca45ac92aaac7c6e8a62ed92cc0db361d12beff150b4e9293930ea8f0a8de461606440c1d5de71b015fdb28bc5480b40fb2f34c672ce81f1c71c6f5c25b73d652bab87c2b45c26150a0b7d2d9c746d6b374795a3ca3110958c31110d705a8a8a739699c5c6e22c4e1927922b85e5ecdc3164036b087ed2fcede9cd7afc5b86a2d7154ebccfff02d747ccf29810dc05713168e1517ff19b715473619fd505ec3d5930b4a6acf4cd794e4a1d9e7e84dfc30fbecec6a1a7a6c0a7bbd789ea12a0bf337c86f3a15e2c19f85d13305ce2ce004ddcf826496e01b5662669c9bd77b9ac1739962592b66aca609921fd16e37ac050493d7256b253243f1f1e9523c126f89f7caf415f33ca459b53955adfb2f5af7a62d4940c2d8011624c9aa98dc9b6f40d7ce2e222e98af6ad94a01d119f94c94be4a5761ed453addcea21b3fe7b4f4bf985af0fb4da424f2019a8e6ae6982364f4015f8474b8d31b4cef2583f05094e776815e0fc1da5baa760559a0a6a926d421e9ed699ba687647d2692172353fd0a06b46833fad1ebc6ed394cb499a8779cdc925686829a663f27a7e5137edff003a082379edbb0dfd296ccb9a59d8ea70a8d95f9f2fa2cc58c3a71d7e739f64ca25cc8548b2ae2644d8da88bf04b8eab89a21a3844802b87b4dc0129897502d9299e849121e2d5b3399435da1ef43853be845ddba4ef98b3abe8837e904aecc94a0f58580af89d66c5acf2b223c9f33146a2558cc0e7d20e4b731bbd1ff3b4f968691ad91699312dfd39a7186dfa85b586666e7553f3129782ea2369365675edf031e4d1c64bb5080bf4ec6ac3485025ee0540a07abf2d6c34ee407ff48549868db6bb96a723519ace6e2b29995c3d8082aa0656fdeaaf4e9d4ff982b88a7e6f3c3db153cdc3523a88694763de019f0664e733399a1ef34eb8e1eecd2fdf4e4c24368e1ae985582c7d48fcaa433bb1cf1f387908efdae23f3eb50aed4d98df8d206fc460301aff750f9f23b9bb0c2742c5b931f4389405eeed0aa6e962eef38a0f1b6a62a6d2e988072bc9a0a7a1fcef65eb6fe4c11a5dd3e32b63e67d4b479050bd63cad4a5054a6e97dd0617b716f0322798482b6e16e7a159c372ccb98a6529e1aaa340b68d9aab2f139d86e78ba16fc57e273de993731d66eeb109cf4a137fc2e53e7aa3fbcfabf1f0584c6427d0be8fcb8c9d396f113831b76657ea23e70888661abe54697f235dc8a1ff1351834b2cf7582bda410ef61d8f9d2456acc4232e86b49dcd9d4e148cb1016804125ced947c9e2bf8a9c197c25c3bcf4f69a597dc7bb6db0ad3900b706132412b6fe04aa5832b5c4d6ccedf62e618052467bb2dacbee8468ae00fa81e9f6c24bedf95d19e212867d362a970f0f96101f61c0c090715c30e4730dbe6671de8423c0ff3a01a541ea933d83650a102a250a1fc1056b0002490d98841d28ad65ffbda5a8015d5f3d6729ee655cbe2afa3bb4c3b73d921638018537cafbba787f8f5ddbe2f36e2a39f884a8dbdac4c64e310e5f0bd3303198119f65fc2fc4a7abee2808c55d80a899bf272eb956cfe18d5289bd426821f839ca1dc51acf9b223f61e26193a9e3510b06a8f5efc9f752154e9ec5c4bf4207336fb8db1d0a5a2139019fb98b40e5279b6e923dd56db7a1c2078d672252dae778f7a82577eaf0a001885b0de4b17ecb2a7fc47c82ea4a4f1a39e052e0d5363ba354b7fe5f1bccd1953b8d9808b0a1fbda60b418a4ab17a4b7a9e8437c81ceb06a35ecc66c831ba9945e8b0fdf63d9aad38c10b8bccfe9c88c60f7e91261d08e049957efb455946d03722c3e0870801bdd8804426695ff844055f7e11774f0096bf94003d97b1d41121db8cd29c81ddf9c01c014a472512e2d3caabf4f6fcd61cff800ad8cff84874109e47e73617face19b246e159488fbf776e252742039cb5202247ee635857fffeb41f91c950580ca2c08d817fc4795bf13ac9f09f506d0712dfa4c6a321c6961f319e897f0ebf1c9fbcf6dde2fce59ed3935d14b16147d09bc38b3da9e7038dc0f85252ba6a103dab764dc388e44cdaf40b5e963c5ad9f58537062466207dcb9b59fded60b91298f864c22df74b650012c2748a2113e367ae1505548789c6dcee478106ab6b92d11ec3cf82a7f960efbd1da5fef979c3e1a7b423f551a96a6ca91f3a27c50d969cc138aad1dd170a93d09572caed2c79e645e89160439fb8358ea703d782836e7a154daaade3e2a68c07dc13c5529bdf217e3d09e997d79835b7c28ee9560d9148f5a601a637a7f3330030fdb08f0b73db6cb969fdca81cce5bad6e148eca4017407365d5e78f0908f592720e675a69745d274785bded1c65cb8aa31b4e07257a9ce1a4542c11554b77c251c11caf58e4f5ba2600966db5768c2c033690a2ea4eb923b0ff581ffdcb0091d1a8b1dff386c2b68632d081391e4e340cb70a675d0549711991666e59656402820ddab507464a1f1d4e74fce3cb80fdd71ab49b6ddae5c77a8be180f876392df27556ecd005feb8e2a530d6e22ed29a2aade3e282cc9b1bb29edbfebfebf45658d57867855bc3dabdd8eea59b897ed3d5a723ee87e5e79b001593edc3883a1eb1918495b6b9210b5ad3a03254cce2257d408c3e03920ad7dd7c46e4a8ca100aa0495568eac149c8d36067c39bd71a625140ff190503b0b45c734846e87a409778ff7265c14f1483324845dac6eaa2775836c3f84a7d3cc53778dd2fe223409be4103d17662629086bec81aefbc359064105e4dfce06d809bdb71fcb53ff5887508fb0d0a057ed1aa0ca8be1526ad3652453ffd7405ce924e93cd6b9ff925e5a8053c0dac817344764cc9773a2fbf2da18591e7c4e9efce17024c4bee74d5a0521d0412d6ac0e594f003d18b552977c9fc65f3b8f042969610656544020e9ed00f00ae8b88098e1075bab4e75cac4f58a1a7efb7d483b13f4b81a6201890cbff60197eb6534129ad9446dca10f77ad9151d9fcb2e51cdd5180b3ba0796b5a11f175233e52e766ce2ec86bc82ad11d278205a88b3a6e6e5dedc9e6fb913c865ebce299edb83c206474157b2486b893acf05860d0ef0bd5016945f2fc3d4e5e522fe0f8a81caf13fa1d66d8600e0aac3a0fe664f6971db37eed57cba1cec371827e6fa5370f2f91af40fb1dd04712592efa91f7cbe28f46bf6cb7cfe716408b34d9af15970e3fdf3bcc7ba957d6e796151a8469c2186babdb116a7ff5791df1b194bcbe67944e4ef129de91feae29fed04a052b021dadc5b56c3b93290f99e65ef968e889370eaba0fe295c019fe7c6db72b02e636a3a3fb127a49499da6f02b5300e3fc61f787c22de6e3f99b2c2b100396719f3b0e73f4e60f4a971d89fedd0e841a9ae734460eeba06a02421d3f4feb04f452a26ec2c20cdf2acba73d54377edf1dd253a6afc4f8b1d74dbff3987ab75d286d07ccb4a57244c5637ecf2f6d134f85d3c1c43e2a1d5ac090eb819d9d8fd8d832c8aa384f5826b25bb45f1bb128ed48453d015e9b5fbf9236773bec714ed3626878311b565082494574c21b2618fc5d71880ba4adc57f771f211b1e108754dcdb4ee866f7fa52cb5c437de2851853f4b986a5007b566360e1a952f0ded36d1ac50f0e5bb150b4eeb1947f24f19852ca59d9977f102dc365d45207c48332f2ff37087dd81b7284954e1508e2d3aa6cd109945c5041869134b71811593913f0dceecef4c411a70941a0f255203b2e24fcc4479eba2df7d64dddcd3730377a1f6d7a705c111bd23d011ef42326eea53e32334f65aed59b6af508122cd9fe16a8f423b0546ad6f84f1681b38fa072031de22f1a44832a987fc1a55114687d4c88d6d105681992367312d148e652274cd3c58b7369ea5e7db97a6e14f8e07f0d3116d5c9bad9193d519eeee52b380f7095693c64f31cadc7fa2cd64723e26599b61292e01c1e2b0266efa091c7ac7d34c352b8638ba7847ff65fb2a09b8568ec4fd1f320e4bdab33b1856a6088076e9a1b9ef512b11b754211712c15e26ff7d4bad7fea352928e170f92dcd447cb45e2a8a92379d4f36de8667bc1c931c17fe88602b13939c54de966cf2ba1e62bac57a99a5a47d6653a6edccf9bc55e982a1a865d99d63a190644a5c47346b6fec30a97e09c42d323a5cb636d4f39dbe038ec4d3f56c5812fa03f0c7ca5d89e948419061486e74dd6cb90fd5fd1cf1d145f9c5c4ba2ee323a72284457b92dc624e8640a40a6b07e6d458149a2c883cbc5d60a1ed0a51fcf984e266ffa2db868757c3e3552127a34a298f593468a33a2fa67a2fe63cdc413836e8938ee7b56462b372b5ec2dfd490f8c2d9d4c6ce9a1f07dd34a593de8ed427c015cd5f0757e2c28165c77f02247c3da6ac6628609f229542d104616e1d18fa0895ca8a01088f0cbf6eeadef587fc0b5e01a138d17323b18618be5d638b249615fba1c5d271c781783f91554b7882864410df470ecb60b93341d32c1072dc24562161518cb767f44fd872a055599f0a12b2afcc9d125e9c1a34dd9913ee00fc983fb88d449ce710d89b4004cb2471fc43b563662ea1a4ac1ed2177b73ac23fa215bd34b5a186dc6a9e33daa7464ad0875d7e5c4e4107f3b961bd043a942a6de40f6013eef84bb56c10dfd2814e04391a1a3bac0edbadc074899596bd2ade7d28e9faf225231a9f88c372de37e16531b9b385c85e899fac04b0ad2fbc7c80244b87fffdc68755b3b089c977a08f560390a89950e7b8feaf130468debff0bae47de988d956a485d8d11f000cbacb54e32183ad40585ab26bc39ae55e6bf101b5aec43612da83667ee849587b1eccf62d9d59c624072c24665924ceb2fc8eb3e8f40f93204e2e3edef5e288f57737d041e37ba4c98d78133e5dcef63b1661a78e6aec27963f95fd0635ecd8ebbe42ef3f5eee826e1fff77cb726f7c6db18aa02c75743cdb0df1f343665e4fd16ec15186b0519598876daafb526b0ded3ce67c431d0e70dc22759c352af3fa28a7136c710c5353b1cf23b478c89144a2ac6b2cbc564ba94160c830a7d92ff6b28bc448c7ff868d133664d4cf2f9efa32a2b6c186e2143cf5c26f6af988ce6ba674feea51554c55efd3bc738c25e6e675c6681d8e271120672c378f8d6b6d1df3201787fb0416d24da86c8721dd28cfacce9f26e96bcb8371c04ae3e7a8a61397c2ee27efad5dbc381b06eca6474ff54f287ff25041da558a798c65daa4590f3e4bdd30a4aeb9dd2b64dd90f22425dd11d2cc309ca733b47396af8fc798d66dc9524973cb172c739475a76548fff6eda3320b30543b8a67f456f8527a1a59ec5b7aad260b96622eb6e442257a495562885d3846249a9a6644714e022558d6be832baca5c0abca6c69e5f78026211390b37379586aa10407269f0c401fffbee6d60b556c497ca79ca7d10cc33e6ee254ade6a6818c94f6f3167089f9c38e2bd01b9e5c1e309cd36330c10c646cef8bba28b4fff0e2aa9b2750d81a7f3b54eef8e1aa28739fdfc9f8e6d144db913f8e88103b26450204e53a77ca2519e382381e69dcf9f2a317e12453bbc51af005174a363e3e612fa955c00a81565b5799a6f28ebda9977190764c834c4bbabd00f850190cfc7bd31de7ed447401a427055d45c3c8628a0f62cf665ef4a3859dcf46d78996fa807c771eb3e6042b721c2073f446f0b5bd692a76d50e3f72797652d386b004f4bc8dada1e356131b24fde17cf5f69228ef4df88a00e0c841ff8b1f21690213bcf07b814cf1068529d2b29e66e5d4a7697fa123e4407e2e28e0057c4bc13de1a4763a15d2a7dac81b2e27a1f5c228d965c724560c26d5f8c5c232fd93b826277c7ef4cd23dd61ff8a8b68ebf6d4ded4caeb77d26739d53f1510963c66efa89d060d8270eed59643b95e5ffe359581a8e5fbb71a2f199403f84ae2523512e5f46f8b6c08134be9f0bf67ed4067bdc15a25279696ff0da66753c39113a5553a3e25ea666be52ed976d10a022e2cd18a1cfafdebd652f694dd013a2187bc0dc1625c4db6f9226e110c4cc0880823292e89db545d870618b550ad2275a1080a33a9d1ed9bc5631c327904f6b83b64ef83f3f83590d9bad739018e3189042ceee05e5ce639d939969ee1dfa59c17b29ec2fc59391a9da50c538bf8ad3907b2de19e339df120503643e8f1f829e15ad81ad92d253a69b1c2a14c8382c90dca726293125a329e2bacba0cab7c6a971542023280ff151b5b8c30783f24fa6ca02c8c9a23edf049187f09cc13b7b5fa132beaa1a7ac2338d086abf4923256a415ffb04bcb9d24f3ce93e48a46e719dfbc7e9cf110d9586828bdfef95eb180031b815863698151fdc50314ea98374504a24d63a92fe4fd66d2547676c0f68bdb78003959bbef637da0aba875318734d9cc8692e5a7440b0146f56d49ff3da0da169c2c39a8bd9e80878758a01e57716acc4c21f24d225db263ebb2f995cdd20606b81b2cee32a14e3f49b7f5b82f22906892c1966c498d74073d9e1ac8c9c3413a7ae148162ca7d337bb6b9f239ecf475d073419fb9aba3e6d1be050aa37fac876466867c50200f838618b60983a826597c58008b3ebac808225d8f1f921f4ef457c235760b48534a97925808ba2563f7e764df3dd23afda7a93eec6431e7308db391e42cd0ecc3df42c6487c4067ebb8ada2346dbb95717fb6b7a151c409abe265a80482eb40c17309705abdcbd8690ab3e167e4d0351456b6874ac72f80a8b5a611b4547544ac3fbbda8616e84fb561dade7104576e4a2920ed64ba1ab77cc4b596906442e2dc74f118dd1bbf66c91a49b9073b575ff98f7534a9e1a1d5fc976b950fc7befde9abdd76390730a09c722c98cfd25565271f9d89c1ef33f270e7c6d3d41be2ac948b2e9d9b7227eae5f0b018cf0c95ef6cca0cae777dee2c1d164914f409827d1a4313d4952493de6b6ac2b65f6f3b572501de98567f6e5771dbeddf95ab0015fa121b2d65f936dcaab66ac646a24509f2b8fbe56fdf07b0e49c49937f493c12dd45472afeff95fc9446a0932145248b3cf3959d913d65e8fa252fe2b75e05c8df5086d410aa4ac140d0ee1294301400c8abc47cc47c7c794c46c373436c71d23581f8044b3221d4900f04aa8fcea74b9cfd67e44b35ed0c06f3dc91468bd2f0aca629883b51c665dde870aa4ed76a78bb2db3db8f2f4b2dc586954fa4ff7bc6375c6429d56773a2504f63505fc2f37a3adad415aa4e29ebdfdea1272851e2eef8950bf87a3c9793212b86e9894bde9632cae3761ca54c49e3085a8c558c0c177f28846c570b33f8a8bafacc0f62dd9dad3a2de43142829325c7a168c1054ccfe0fb4ae81ec9ecba4cea814cacc82c0feafe41c1632454648b11a7d760e33515f2f4ad7da5740617318a395d217b3bedabaed2af01237a19e03718b316e3ff87bfb9ebd47d7d94157a47f1755a974e6b1f49c793e9e62f05164fca889bf6fb55a412142a23ff5449cb9bff42c568ef94f82bfed72f84be2756f6f07f92b50dcad2af1c499c01bbc8e4f1c7d5fd083faa979f85fe84694a2fa3ab6cfe40e94b9bf5caf8c3ccac600d000cf5b38d8aeb3f31b28b6e48ceab2ee635e980bb3a5de16d1dd79d9ae290269890c89cb8cf59cc7e4683ef5dd92064bccb7d3cc0b51f7ff516b50143facf8d1dda28c1f4b74d81f918c0e97c0cbe80065abac97d96ce156516bdbe2f99433f58db1343465d33d8441857a7538945d5a962834c0ea88323d4e16d40c1569ac273caccd911ddae01f7390545f1afb66390ea538ba65660b0a2b09748318ab3ba7b1fa1f8e4b93ff69daaa7c9857b5bb05dfe94fd6fe43c0cfea0f8ccf4b465f58928939dd851dd90850840554e7d4aa9f257c0c5391c9bc54c178c1f93d60b7d0f480423bd2729b608f302febbd6d31789d7562bcd0e023d6f3092fa5a6413cf553568dcebaf784e63866393ec203657ef479c172f4e9f0aeca0f72828c82301f76f652dcd74eddc34b3eb07c0d929ca3a2f23e739a7c3168d9c4833d04d6f1a55bac5607c8211be91f9b915f17215ee168da93dac8823b460a1b705d902fd58f325207b008290869aec3dba0040cf9220ab3612aad77da12986b4efcb558184c97cfa0be411ebdeb98b031644359283cb8c91024919d9007c533a964265edf1eddad988e2944f35e7021424a65f51c0d442404843f9c70482efcc477b291d35e32f2d0ae21969f749a72615ad4f0ee8db1abc2059c444855db9be321994f4b6f2f856ceb48dba27541a5765a6f555eb4eefb9ddf05723c916eba359b7574d6e8724d2cebe64c8bcd42ae6c4b7ce22a3bdacfb759bac5c8b40fa8a1925112aaf1beff10b4c781079e8e6d02f9437e549dbd79f44ccb3e5337f8df5f67ab0265bcc48496c91d2bc0c0b62b154f58c6eff67290f0636f82e3dbb117b2909620c14f246760a69a318a058da164bc4bb307bafe524d20c3f5522fd8ab194a9bfec3d77bff8abd30a1144ece2cbc0dd4656615c502121606f8143afb36d20502c0afaba671653e907766c401f701f78d8d43c4957c1e1ffcb70d9ba16c8185061910e81fbfeceab151eb92a6bfce1c3b04095290eddc6bf933041205ba5dc31db3938a9e3b658aa0e6a514cfd22ee459505ab5551b01c92d32d506eeef1e1b86abd920e29a22be39617210b90770fc6e52235676a05d03a41c3404181829df19fbd5269331b06eaa9d92532e8d05bae961460422a7d815c565b8276faf390e9affb2ab9c824be24142fbfff4a7085f0cd848a4109ced7432edd700d4538154bff38ba26319f0ea92ba458ac8a99978b754f12736c32b3baa9f8515afceb45866785cfcfd8dd672d2ea7620458d9fb81b61c0c075c787e134a58154ebefc4d93f5a8deb004ae515d198063aee111b9abea7f349fc68a4a85a089ea8ae38cf57cdbcaa0a3b5996620d265df5aa4b508b00fdc33caf4ef976445ac6827aab2bed9ae2c438f51acceea31a818ee08711aba908272e8e8e396b86c075c6c1f0b1ddff4a66394a529e517be0fb065fb6480bcb284a33451620be8df50b6c841da556366d2a217a7703d233a0b5b765528040093c368407e451ea5383fc8c1508340860b4c28accac2d631de0bf839b1d700e65fe6ca891e0c0fade459d28e8686a19414a81b514933d918cc1447e770d940c3882d8626507fee1a4214755ba5e2b5f3d30301c405dfa9c995ac7178b73da3c906942b7a5b6be7c07df801a2de4eb99f1db82dc8cf4baf72b97a99a967e3b090cef58b5b79d01895180f4fec809b2e055d6805b48e9e4346ac1ed27ba483c42d3ef701bb48fd94e9d215a82ecc2131969156dc68f0f79e273520434b66486e1f2f332b1172f072a1bc0f583d8aa3448f6f9927add5e09c0618bed0ced9acce88c405f53ef0ff0e0d87ef51fe0ed5b160ed89da4fa8e7c6c338919bb14f931e3ba80d94680afe9169036522cbd05eaf75147c4165336bcc6bf02ce311f74e04fd5eb1f1d195722e555d2714c9fcc8d45e037745c02f76283bf73de952f2480f9e33ad390a0a7252240419da0381634c97d9e724d66f864d6ba34b01052391c7a770d34693914f4eae9f265b1b669bf71e9d489edfc1035cd1c84273120dddacf9f4ec4f5f69f84b8a105850b8a046be995d0798e1b27d3cd94758aaaf0ea7330a0a42b15b6b979ca2e6fbc84ad30b3551f5c3ff35332f5f368ec69f67d73d8005c6c5ac0fe8371be0a9ea234f85fbfa14406147b3eceb838caf1452208768618f71802bdf975520d2375b9966bedf5b66e424c6eb3cd3b9f486b142bb08ce11eb7fa896d981ce1e20d3bbcb217bd84b9522b3ef7cff71f48be9331160f44bbe2538aabcf6704cae09899772d60e79335f1061e3d5902b990a1e0c8eda750f939129d9cdf5c4793b4db1e3392a72742923a35a4828d6dadbef10ef42d293f42d95d63be8b805af01e8cd8c998cdaa6680822142718108160a67f4458eef564a108e8e2723cb5862ca6b4b8b17b49b1e66d492021c4396df0fb4ea13fd6a72014766f204e452ca3c0589fbafb3d0412ddbe93af7afbc8737be979cf0b7ceb324402c1a2c4b61e3b57975091dcc42c483cccd698bcc218456874758dcbfc36c946c3d4a919a87cd993076e63a77957073a58b45b66aaa618b5f85f73f62fcaeeb3b9a95ca60b451718b80c31639da62dcc07b5f5238928ba5da64e1f9935e325e1972247c103c9f39499a395fa06a461104dee9c5e622702a123301790f2caef3df76885b0998ce72dcc0f5b68bf0ba58360e0fe1d4363f050143ab3080f54145dfe6ce0fd99c0d00ef870c1605ada72157ebe8db80fcaca7bb5962419668b57df82f890574dcbad4bfde52a3e2567c0556f9aed8672a792e03cde393f4918b5244e2a41f92d9b4e4b1b92b0edead28d8a2d5a472839e536e2891d620669967386f52ff5d4d6bffc7a1a8964687dcd1a1c26db7b6f9a8a4a969a4c53295a948ecf0e6950863c6219161c4e24d5c7a40d70267463bcf56e23f4e8c3a496cca6f1327479a0dd8448913e19e66f5cda16e9ecc5f2ee4ecc8f0f998cbe47c0e9a726876f4e6b4c4211e288a3241a2d3cf4d39e15a2f440511d7999d41cfc103fd52ddb084882dbef2926487231bd213eb5c08e43822aae2094175199a9baaa5e4d65c4555583bbfb817c08fffa3c5d98d1a8ca1bcb338d7cb4ccd0f69bbcc6e91c27f14fca90d60602b0b331e880ebf4053448ba1980039076a8767ec560ea7fa667a70ad302383ea32783e8b2402906e94927149512491011826b3eaa20f4f99cff982c62416dbece815d0cd2dd888383bc227df1d70568fd75ec8993b56362b3a2ebc4ede76e74d9ddc101c0a23313cc9f8c754df66bee265a7a3ccee5462786f65d67e3a48b62d1dd9c5c0c153fc04ca0520de342a0f2a6900160fe84a16f45ddb8f65d99a5f286ff18e67a80f2d2a39bda5ef60824e491fae6a617c804ed6a97dabb935bfb2ac5787b1b375ba687b9c254675f159f85e5c1b4a3eb1f4371e8e756d858ea37e75c90f0077a355c118532f1193b99190fc3c19210312d75eb48cddae7779f9c167f47c97b8f9bb1aeb13cbd1eb87b43894f59bd06110cee1bf35c29abd21acdd017ec542a6b94679aa0d6319f67bc7d4b00168b63d89ef66bee67756d4689ad3ae380b5e3140e15c7383a91720d0e7f7624ceec82cb2a696a3e69ea12f681696599da0ec83e47519dc4c0856b3409c8d505c1e324ff419d8f06ed41f3e79c5294b348feafbdfca32fdd8e778129096a330c1c1c6762dd15a30c83a0f444a17b80b1481936e1c75ab219daeb6a1d99a310b074e1337b8e7476c92459bd3809a7da7281a73525bebf8616bcc7d99b025abeea075a47185d670fd2a3ca5d735c7f2e67ae94dddfa3451aa6e56118ebc28f7e62d392aa7b09f74412f356155028ee05a8150b88ed12a42fb6cc64c0abb80373958ec28439384098ae63c67fff134e6d0509b3fc793e05248ffc8fecaae29487b536f120d2dac8013da6a2831eb92cc1118bb05081248d6671af1b75f0736ef4b1e4002cfcdd742803703a64965497528188af9f3fddf0f855dca4ec4ac6a9c339c3b9e982aa752186315b6d657a672b7cc576317bf6135650e82dabf82fcbcab68885aa2c62f42719703cbf99bb79c6a6d553306c4d6ee5be7f7d95d84f09aa5d5503dde535bd3b61505c36764207e881bc0baf0d7cd98bec49769d6a19806bcdfc3ed4e7a6e98e4ce47bd6bb05ab2f374d8bd7c3e59d368ef17d9b1c9f4f0dcf50ce57ee32803d9169d7fc9db85b3c42c0d84b6219af23737af5c4826d75abae08f0af99cdba40f9665ac917efaaddba2d0e7615764b9800ca3d6ea575c9beb5609a2e290d185de13863a6ad69d5d9964061ada2094b3bfc2822c203f9bbf8184f2b8a33eb0e1ae13c5ef13ebaff7b7274a765c0de9e00c484fefd537fefc7e69393f815ba1ac205825580a51276feca1bf75dcc235110c59bda5acf39976525f6d29479eec39f2a60dec9cb40bc016fd1bbaebbf54bee818e55b59d1408ab069e92cbf38dad9d6e746511874fc2f4c38eaf5005714c34cfd2ae3751ad20b1ebd3be7046d2efd02b0baca9a40aee4427201616b95f6754b723a254d51eed791a4b36c9e261c04f96c85a687a55e352acc6717330ab9765c902407e822171148ef3833d8332a406c36628d6f993e11ed276264682a69b165535e3737e4c661a887db531702eaea0bfbdbb76af7e079d7200297f1721a48cb1ae55bcbfb16b02b34791ada51df3d7d9efdad713991d3425c535374e5c72e0aecd5f1a83fd896e5d03615aeadad6e0b1d58da9331568e7fb3a59cde4197dafb27d02e9bb5166d606042206496ff74befd2886758aba778d82e7aad029910af585b4519dc3a0f6d29aa05a6962503ca3f82e7edce5b65946e0870a6cbcf5a91e8f004dda501f021a8f8019b716ae43ab8a490bf4e04415381d9b72d4e7fa170365484b9a9cdd6a51791fff020c995b9bceb5b80d10ce966b6f854d0c0e5dc31dbc39b2ace8812de835e6e3c321f9079f8ef553f72205cc8a02d48366be4a3af5ed94d6b22ae35a5727cdfe889019299fbeef7d315b5833c5b83518e67c28b17942c256fcf6bdd276cfa8f149fd948eb421ed26b2e8d8015b063609c8676c13262bebf7acf776b71b1dec7b283e7415a684f97e8fa007757dab0a84c92a7cb5cee554f9f181fee7d6163dd2f999fda9a569a873d4899245b3a6fea8741ee86cc5e5169bad43b45ccfce753d374bf33e71c05f2f735540196435e242549fbff739b2dff43b73d5254da192d0cdaade3158b1e4560d3849ae4675e5a244bea2cba76ca802a2e5cbcf043e835424dac8821c4771d19bb662dd33b6db2282bd741eb1c668ecfd7ce49282ef697391ad628a80a2a810cbbf4bbcbf8a4b7f74e26a5d03f4aa33fb2927d1b25c27d1135f154919c3db79b82535bfbf0650179ca4855fcc249517736418b499c5ae45d4f80d50e65802032c77894e767291edc44193b89985670db3e975f05aeed7f81365e52d9275c3d116049b50e2172cc916c5fd42da23de8ff7e355fdd5645481b6d794bb44f5f4a21aba7e3d62d224e38feee06cd94f719c465c0437bb953d430e55da0124432c76e3a823c78b2d217b6de1c860cb8ab70b4cdc64389e83747af94c78953195011e67657f12360242699185a96d80f75175cec7f1d7bf7eea7fd32d9013d919e0fbde54c2245bbc33b523ac8356482db4da2c46e5cf53fe6917a3c372befdf5021c3defb60f43bd01da839ad2d71103b5bad675918bfb99b34ed4f42d2fb6f825ef6828a13e180c21b4c7631c8111ee425b98436f6282ec2965bd2929022170f2475eddffe9ce2958922721c4db5f8cccdbae62f0b3d45716fc7c7b03bba9435f60d9c78ed8bf5f0b2b0442158142d7e5561921a7ba1da31ef4a23e3742aae9388187c1fd2905fc56208e3628239d71694537ef1163bfca2500f3f7cc40f456dce59552bc80d61ff2146ec378d31d2dcc2b21c9081c91f2542d71df970beb6e9ec49c122d976d5ce5b31c7ef1085a0e640fd71da80e6a554ee19d4c97d4213f987742402b7e920175497994ac7f2399697d50b87ae95d554b2035b46729e553ed9a233aca801caedb9ed9a8a33678c9703026c479c0b3a1e0cbac8024ac8e4b2704f2b1d384e08a0c1d329bb569869cfb93bfbc758d847604cd986772ee993b4646241689b39cc9276f70eaca7cfb611fb33e6d9ef7c397dc5e3ed2ac5bdd073bede4c0e32d29995ea9e876c6e7dacca9d9cf8e602ec6d0c7bfac0b85579ae1813a3eb345b4b38676e938d01572cf28208c0a28ee935ee4bc21fdbfced1c0af395dfd6726309be0c8b360b8fa55bbffd582ebe00031e2419783139526fce1549aa84b9dfeed973b88d3fe7847e59b2f7b98e5792d6329fe3642935e470f74c73b4593bfa80085576424985a23009534fb5e8e1d0c2c8e1b4a7e90aba3c1ea222db835102eb8e3299d312a384c00f4e2aa4d76b99747149acfc3ede6702c8134c578a93b4f7d3203ba191f9f4e5b8d46d3dd40381a3b5a7dfaac2c0fd9090e988a335ee5b0ff21147932c714017e50988a20a9d10b65c8301669065627b2382ac9eb5404a132015ee90d75564851f66312d0f4cadcbe81a888f0de556383324337940f90c2f27d304f37fb34ddf28c07f34479d6a28911ffb8ba286cbfa8c599fd7188b4481a394f7c564956bf50d00c76818db0f2ac5174e3b8677139f761eab25601fb1817ba15b97ee8177b6ba82273c2d0783d0a0b342e4f146b365b925494d41c4993f9652f7999fdf2d1c2fab17215fcacc84824fe83dd19220f9c3a19e9c6dd597a06dfe563fe342b139e786d298de79690b546431e9e99782295e7dde1a830ed03c04ba0078ae0591acd010c1c39d888a7a1ef149689c9317bf3867163744875e01b492aa133c1e852537c0058815b28759cb0bea76d39a7aab432f2970fa9949ad681b9680a5561ed2961653e959a1f20dce1c3909822bc7627a5829cd4b93107719ac18bd4dc44eb945e867d84810f8e3106906247ca8ae9f73632430a5d3accd326c83fadf64c18c0944e716fe939a612610b4525596997c664008ef2dcc7d600d2a46fe406661ea1be8a38cbd2adae6859f13daf2189d19a763f6fffe718b93ce8431514eb3a2b23cf3912b4acce9ecdcf69e78815bdaf2ddfb05737ac9fc36f84be8525dbfe6817c30aba0d57b98d5d2fc6025651c98bb206001a4584cbe17486213d855d5ef9ae5f1daf18091d4b79f01d22964d59f9b66c560db74266e7abd830010673e706dcdc76580af75faa7168d9db6b5b02f427778e2272ae31b2f44eeec452ea777380be695da27ec6d17fbce794a6581138f4bb92b525d48dabb0b7608c14c74f97a8d523e4411aba68830cedcd301e76e993795dfcf408ed695ff683d647775b0d780f31dfed56770fe456f294c85e1f01ec054afd8953259a6947c6d644b79528a560ffab11e770f7d07cc4be1ea4543d168d6e13eefa3b6e30998c4eb2cb408ccdb40a4364e1f174cf1492d95dae326c99c3fa8dafcccf83158ff7a6402e1d688494fe5231af9f5eb1e2636ae8ed4d40208dc60108d01689932363289e285213140ff7253fffb8cf1e54e3209630b183e096dfd7f5ed77c9050bfceb1938ce6a669e1f8d33df3acc0a36d86b6d33269c2fa333324f6786b004223849f1f6c6d381a9eb2e349eddc40d259b3ecdb469fb59c2f41828535fe869ff04c1dad6e77b02f2f3627a0131f4a02e32b5c310f83108f3158eb9a381ed74c21691f3a602211e2b316a41e84904f79e756ac6b0f54312449fb0847ca26d46aff8166e25bc38982ff0f320d7d9ac202ed1447774aea4412e4935ffe26d2072fb03fe34f57193896a211035bf5a58606042d1a13fd665be3ae50ccec073944b1f62bf67f8f98031b82c0572cadcb0a4f97066ee8f99d02539f8aaae3bfd5e9324756ee9d8d79d58fc1d7b4c4284a851cc975ddc862dff8b78c103edbcf7e862b557ddefb1a1905078f5fbc0a025cd84e4e15bfffbbf85072a8fab9527ed3526b67bf434fa8aac1834aa180d46de425e36364af78a70c3143977046942e18e744ef65650f555b939f888ee3bd924b39f19c1702c22647136d8cd3832048074180d20a37705800ec6f19ed1438a38d5eef54eae6cd9adad07b4532af66e2b52a893ffcf9c1194dbb886dec6ce267fc7531f8328e8cc06fd0cb9021058cb7e41c035495a58eed613f343bd57e2ff06e2abb8443eaeb7beb6b06cd6b13897c7915774c1f95da6c05dd3eb31c18c6f9b22a2dbe8c81f074d3bb2aa331937388499b1e6acb2bb82d1f50d4663ba6903e1459c75291ffd33bbe7cfdf4714e6d106938f19996051a105805e70b9dd003eee3cb00300868b99bf5d1cde8916a0b1d83f8c90fa4f3d3e682f6135848749d4ab25a38735445466f5d873756ac9dd7eb5584c07e3c8d489a964a7a9289a2b2de6d492910923c5fe6ad4afd93cc9d978e35d35992b9dd85cb0183a9d810c503cf4cfc52b1ac0fdbd4ea71fa2badfb68db9918c642dcd3801877ad576ba1aeb74ade7e36c528d1a39a7017d62a51afd9650114fed5febfb297d3867ee7beb05dde9d6c9c72f884ca04951627171ff880ecff1d5b8649890b9500ee0090e28dea321883d40d0f06bd9d73de4413b73b914d32eb1fc5595a0842994b12ea84ca06ea7ebd8d03bc59699dd96fd306b7ab70192f3aa37b7666c632871e671a8a1e22bdadd0d569f9ef92da9d57be3eec529ee64f34a3d79db5e4fc077dc763b1cea4f4ae83364077011cd8e1ed3c816a327b343b5a88c84e75bef79509a329f28235ffa0f2f3aa94dfcaadb7e221879d4bfcc84521ffea0b868b352a3b23df5f51d783b88ec5e2452471c14563a76f0ab74b637e4bb433e09267954815c9dc5d4e4e618bf78ffaa443e6116aaa08bc00fade96d00085debb942b1e3cfc57021899e0b47ca6c85e87a1230130674cdaae009fbdef43dc4ee2ab3679d759d473065f5817e1b1c6d5e125c83d3fe641723f6df1bb9c5eedaabcfa5efd275059c96d876a660d42de654907014c0b645950ab9e61a08c33796f8541efde1b639d58662fb0a9a10855149917f2ec370f68bcdec33f3c4bd1620a434653e39b28db3e38459fc25cea43fe5edca2240c2370a4bc908d6e8586c5ba8b1cdfe1a49e7c6fcdeeba45d84d3c25b793fad016bb025ac06bfd8fd7874f33c9c966ee7d7955fb789f95db765a37300b7b378c6464a847275adb9d96fa2a210739e16bef443a2f77004cc5ba060b0554df3235d89742d939216b7a763546e8370cbd4b1ee6a8be006e7fc66b91aa00578cbf4052ea6607b1cedd3b4b746d41bea77176089b7ced6ea1f17357ee344feb890135711c763d9994d0f01820dcad2842b631bfb64525292a0602eabf5f82355968ba15348ef4727ac30555472c42ff5d8d07bdca2de18165408be13f9f54b773738e96b51a173c15d33744e61f77fc1d07e9a0b27aaacee3e84fd8780166d94f911ca1b952caf9e2883d594880a1c7894e339e6de13502116ac997a4a7ac75b0bd4a9b6ceee7e28fd60ddf61131e868cff8747f32a8e0d30dd348c3d33055d58409f9defeb16c8fe079819b087e1e0aa53b5792ea2eeb40565740a94a09ec252d59fe90e7054fa8f6bb4ac1bbf083352c5c6bf6527f475bbd8ccdcc09283471b8f6344f092106a0cab5393de567a26f1b9096150e7e73787fe24afc4cb716757c28d7c10f6bb61964827d583dc091b6bc0321fe7e35df41923cdeee69acd58afe330276cffcc9fb1cd503be7562fd685a744df7c2620ba324dc05608cb559a6f58243c6131dfefd8cc569af8c930879994310dd6a0552a4c7b319ffe4d28e79628031a55086ae9dc27f2d59e6afa959419e7877a80f7abfa90870283982d3f03524b1ef5d8f14554b1146a357821d78ce096529a10b0be41124d382bef52e22553916e135bdfad9cfe9c6051ad872706eb0b211981a802a22799ffb9608a06f7697fa39c37762ea1e55d8f9ed7f32a195bf65e5373bb7ea98f5e59e8a3e262fd3ec723fba8fa655a12d8557a662a1207013101f10dd086816c47b76d6ea0e56ccdb48a004075c0039ec17475229671a1534e42b6b2c80a88b7c941311787c38e31c4608620a3d93db62a7aaea6994359b3b62f514f67e0c763fd4effd6074d3550fb24a95a9bf7dfe71c436c74ff2f42a90e083f01d9e6c35b958eca3c1d511ec8ab2e4ec89472e241ddc1621859443cf4a4dd1341becfb89b7484b03d37d91c101a84abd134283d1d998491e6e8b6eeaa1f83b60658bf5cc1dabeb2344ab6e33ab487760e121c967ae9285df3ec879e801c8c79954b1475eca28bf27447d80c65e740ff1f8fc4f54f148279e63ce30cf04b65218815b3886065b714cfcdc0160099bbf01ed82056ece853d1eff81949e60e0fc79c4d20971ebb035a1d7207faaf2ea0ac19341a81a7e4d484cbeea570e6bd31eed3d07e8ca9f70dbad52481d1ea293f9b8bd713d7b80ddbd1545b63063af9093b37e0815ce0189b7247ac7ec40835c5e34eed0371a6fecc6c97c2821398085b01e0f8b2f8a9c4354f0017ba4dee27a76038328edd24dc10984ceae83b3f0b622314b5792d217620071b098047fb0370a08306fbbb6b387106e1bce194584c551fd703e281c371b9a81644e7436ce5f180fde2047bd95e26a016cf15cbc47c99af580aec217d8997b4d6e9c1f5d13c71aa4a59e5a751c776546519283fc57f71691ec103302fdc31757550dc52db14b2af5a16d90467efd8ebdbf8f888de096cc9195ed64c795818bf5e9567f8598ead8539dadb5829de49b78fe4c7e6109c602a339757dd4012d97f6b6edd24db23238946506bc9ca0a6507f4a0b3d2068b55d366a34ac2f25a0fdab88481f37ff2a4c0beb13ed352652ee58509d82e00c885a3403948be32a82467bca8218b99d3b59af9d432e9417ebd72f75bd133b3305762bae2ed64a858116143b8afb303094bb5340ab6709da9d43a0b630b81c68f300d1bf74d9c8675a2168620ae7c802f25c8148ab0789a9a69e7b351617aefabe1a7ad8b9670747123bc7675b21055a372cf5ecc500041f50e4f6dbe26af5b9fcb46450dea67f2e80c7da24738bd65b3638d5412aefeaca0c75c675f01361959cf8700a90f50c6b2ae8b70ba504fc912ff1ef8c627e2b221e65b9358cd7ca082fe64c40c1ae8d0d5d11cb9cdebf711fd9c29991dc16c61e7633e73c2abe65f8b939561998f664b92594b0b6a4dcac08487cb85d6afd6aa668780015ed7f063ef113529d552d98dec5e18c090c730071052ea214de84df60e13a9a2960e0d5de9a815b273163d97fce30e1feb68fbb2914477ed8fea73a1cfa2363f87cda6e69744fa9b2138f99325f796cbced046faec07433d3d005368ed48038ea5470db18a0dc18f4eda75e9560eb9556862a4f98e1f2b7f18852050a29690f7d16d21d7281cefd3f739a927283d0ba20b0666ca2c975d8ca38210be90c06d4b00251ba89ccdd1e4ef6b5cd6c21289feb466a597e91ee05dd7b433eb8c5ec7b6904c34fada3f11216bcdc2ec2e29773ce5f0181b71ab0c5fed6bdc8dab6be8d9fc7a17b80af63d31426c3320515522a1b324ab91746eb78bb970b7c4d8c13a82b9235bc945229651384715f615f8266ca273e12b44adbc9a68a520083e5bc814d8af140ad49bb385ace3d9aac485fd484f28b5ba9b9292df6970e50bc04014c6e5492bcb1a28560e72afe43d9c73aebc62455431659153c8bf050970c9d7e9e38374bd50e9d80eed06edd3f048f46db2551068327a337080089057c57fcc5520c8449385e805b32a1f738cd1d43b9d44c1f8e9b3ed708e1b0bd477447d54898218ba502e61aa3d96df06c181d2da484799c9d2054aaf692e5d068d6ef9e9f7758124463ef5737e6f50af54a81631aefafc4444e2a39b28bf2fb1b55c942143fd73ee272f84e360554d70fe2d31c56d5b61b140fb2ed41572b3f76cd0df831b35a571a7df467b55afaee9a94cdaf4e3d8dcb53d441adb3915d3bc1cd0674d3c282a1d05ef9f0f37d07b94f7077633e440d4d104291eb20cbfc8ebf97063bd73efbac9b28963ce95d88ee8fb39088623ab2f6eaad0ba1472f8d26dbeca4b4828bc7e02c236e65c7a3c93253f3e6d87a71196e26352b66a49787bab28887b08d5e013b23e0f4b685d66a5efe24c75d9b827ae391868c070c0ea7315fbc2d4f0f4ae17f8c901ee3901c730277d2dbc828de0eddaac4cc632c8586658be889cf0bc6b11600ddc260b41d9523b695912c31381c0297c9975044346ae105e9a1150468774d4c140400c99da7f7e012338cd5adce550dc8ee24ab5f0fbda33fe3f6090987ae2d481dd1bc125107dfc9f4b8e9bb17e69d58315ddab5faf294abb13f70603adb336b04c7f19e89a381594a525d999cc478d751a7a9a1a2db0e8fa12f0498f07b1ef662defda374b9d03d7f2782d0639ae76d85705a37d4769a54694a5316582857833450c53d20b139a098ad63d13e77bcd4e90e033b06cc5e0394e3ef39cfecb04a3df93e8566d5f8ad889368534bdf61dfc06a3f451b2d3d4be614d0105977ec59221fb098b4f6f0673e569507a0d1cabb98e6642e196b034a8c5e699d492973f5363e8ae8f412f5c37e026fd35bb95c4e6473af0945606f647549825b3507c615077893fbee969433b0b5e5d99bfff08dbfe61ef625641a8808e096798248f29694bc82d689f1f4fe170e97729fd9b6658ae0a28337a386c883eb22c38ec9d9f6846bfa3aa29e6e9b444c302bc4f4ad4e69a471b656e5f2047a0b206af92f0774fc092874300c17f30d1ce249acc905fa3cd745c88196e41a13e7aa98414c1bb83613fe934c09e1ca6ff43f4108641b8216522833168b0dcfd024329e488b967b045bbd1c09a8784932618cc17eb3242fe1901a859391d5f064214836ed9b24f5ade0f165353c9678ae8e8f130a2c31650142a2d53b309c00ec7f3e4d0d06db8cb277e0ccd32afa2a1507b6c8767308f530e1754f2ff7adb08687fe445506084fa99ed6622a9ec99992e8afa5be5234dce165da1ae3cceee7958493ac9833b01e81420ddc95366a7145aa6ab0944a9e809ee2dbd28b80fb70a9d6d724c46baabcace48331c7516abb2c48e191e10841180c8f795bbc538be30586c0b3b55d3d66cee47a2e7e976f8acfaedefc2afd52a022c40415ebdeab1be0b509ef2169fc9fb9864164874be1b432a6dbfb85b396564c4b25774e0ab2e9f9e1b3a955da5293412f30eaa963b005cc01c0fce623226333e65bdde61bd81c5e33ad43457d4e66ca306925106e92738c19c7338580c108b7b3e23ce1ddf82484fdcab923a8c9e82a6a4f42b8802f1a7fc12ad055c6b4092e369e485db2af1ed7789cc7356fb65947cd995b25d5af03121a1a3b2a8399932c3ba438639d29bf7ad6de4e69aa979607c58852017e19bbcc2110b011051a548d1823bbeeb828657ef28982036bc401edd009e361dc115126c66b9c39a4ef1ab1d3dd6fb72ba3b839a480ba5274b2b5092cf96ecbae677f93c07a40c44fdfbf6e0019aa9ddc8f8d96b61c292fe7ec1dd7e81eef91d36bb0e179a7d952ac9767ffe7a4fc30d0c240ee7f4728ad2eb80b64dbe3c209b7fc341bc4d3976f518c60413bae1c0d095e82c8822b991c38969d5ab6c02603a15324656115ff57e085032d3602e5d42f3d946ff0948494acf3829fbcd1de82ff4c187dcc87bdc53d3bd9db0f75c0b34d5148be0707d6620320fca0cb15a2ff08cd4050c05aa16b1aba64a0128cfcc2222e7af6284799d2b27f86f826f1dd2235f0acd3bca0f6470b6b61991b5b35bf459a3b44a6f869ca9f3da9f6b46516a06cc4e52963d9d9f2765f4be359a87d8abbd8b02d4c43f5b4e1fe90a94a699b88a0457744b6a39522f4fda9b5eed8d2d28cb6a8b97a7d326d1d9bda8aa06d840735e9ac172504f3fa8e7c6542f13605f74e75449371056d1281f1a8bad89736990e7303910d58307c250944842e47e6f100acff6fb52d4ac0f7d63d7aaf4fc40d87a1840f2ad105d4d62d7ccfd224a86d4ff03b8eebc42aaeaea74ecef66a5ff671160ab4c468915c648410cdb1eb2849634fc163455053a721fe96833c62e82db6ef1dfe4da944cec1ac1770a786fe6dc909717c913351dfc1d61c8b0ad3d4cf9d25f1ea90109d148fead08b37fe216042859c62f737101ff38453b9ac545643a9876bfc7b8081b52b022aaa9d1b46d9570ca0de47e73d0bd07db91667ddfc6cac04d8fe2cfa905f6e95670777ee3f763409ae2b215f88bebb58c50e19f51db5ef96235267485542769d581a7b0846539823c4e9db0d53ead56e19218d2eb20169d8d24e72bb6d9c2c6db3b5883d1c740737746c75751a82843709108701d8a70b1e97e88bfddf58918deddcf298e09ca46f05408ea8945a2505ddf5b371e98487b050e39363356ed013f24108d343d433dae3fc082a6d6f816f232f8fc28cebbc5bd6d541185a8de06977142f748010e073bd963aedd752567190399afd17c91ff802cd7ed33b9d4b4df564b3b0b28e5b365aadec86777bbabb7d9cecac06f962ebab47abf462e327d2b27a14ab0b1c3705b302eb1ceaf521ec6954307157d08db6c53e91a53c2adffa8a7e16a64388a2412e69ac80c9d565b08785392352e6c6fd23b356aede4108bc2dd5b91443f5738a5cdd7de5393d174741a570f7a763fa146f56aac5fcf3014420704ffa50ffd0771b52904b2eb202f3b2cf799b4e67853963f07ff00edc4a00d7670c1feb46e090fef49a54ddcb8a6ca6398c49d35c04165f6dce95a42d48c6216fe16062b1f8ec309bba920f7bdffda1e88e15a2bfc254e1a72a2ac9baa13e650f3879cb7f1a22c76e675e5f4efa7540ded7cca3f8711f1913a217ae2bfa0042b8fe2410baa530094c50e32876769d2bdb3a1197588468cf97a3c1a4165050a93595ec5bac6feeb5ca044a09b31b753c2aef773985b9bbdb2c1408b434a91c9bba6617d62e1ab6340d49d47919e430d7b0d6280855fd30f1d9529fa9e85a087c328e19a2024481c1a036ee441f89964b1989eb183bde2dcd23c685b13132640230f8c0db4f7719bc9a19b9c5eb7e25502554e92edbd8f5cea09681dd974e66203b1a4a4b3c1b6d966b030cb2a6213d329b00b5cc3d97b8510c1b6a66581be0a7b6972e95f5fc14f8036091017fd57880f2d46b18b28372253a74e63b4bda0368b951036579d4d9491bebcd2abdbb6214b00dabf8f2a23f479c9d43d0688a7fe0bcc4c0a8930fd3bb2d85ca02e7a58d76c6747060b832a06edf1efca03aefa0718487bdbf16609a056f289921b6f74f205767e8bca1e9f087ee08b53f9b0bb96bedd0144e0f24c0bc06413af89f021b38ad606ae7af5af7a2c8082bd48ca3361a5600bd4e77da9d60cdf1113134bac905ea9b5901969bb5127d29cc03e37a629c69ad9797487c90e2463638267ff37ed55feadfd521e8c386d4d804e433b9a0a5b80fb7ef20fb4acec2a2a0f6a14c853dbe07c9de01dd82c940782fce0c67d35a90eaadff6c2c5463490e97d24f7fd29b72086fcce01856ef5f176b9ebed4fc1a44a5e85976e31af9bb4004f100defa07c3579fbc07c45b161930d6f01c3602b09b0c8324c98d13ee53c3aa2d0a9c3a6f8f250b312c88b355aab50953e35e7f7a769d98799b6ed092de1db099a394fad5de62c41051b5a3d110e4a434b9b501ddc951680712921198df9fbadd3d49b6e0365515bfbbc60c02ebaaa3212208dd832263762729f8327f0c3b9012a7393a0354fcc3ac905102d75a2cd0486d5a30110545b9b207f9b7ad8aed70d28807a991660e0b0cdd28f3e1d77a538ba4bee05c122704930dc7212fc572a90f1801bffbffb73907bbd3ec34494ab79061a520c82e408b5b81c878ea4ac588c20c03c170d395b64bf6e64e2f2037807c1a2dcf2b9dfdb3bf6291e67900bf0c4c64d69d815fbf7d5b2575e43d4363d9b36f38effaea7a6dd8e211c0eb3ac49b5e2fc77722618847c4091ee050b54db1a60b4a51d44650780e9a13cf5382a5c4188bd63f0ec9dd0fcb46aa5f37350f6d9a7a4c15db56e349db4d71cb6c4051823328b0fb00edefd72a73402601832f0ccfcb29d79fe7c6a60ebd098acfd550e8d28d089e70900dd861e779dd5a0f8931a9f0d70d5fe0d6a4ac0d32082441883b91461883ce3ace5503104c16d198e2020830dceb979e15db1ff94acfabd6794d86f00f997ec48bd99f2c1a3c09d6d2e748fdb6916d45d33f4d92fdb42a73a849a0941aa12fa3a73107172c6f6fa0cffa17596682253477a0119ac77ed402a87aa82a6207be2857324cbf0d468f54b5d315731e2fd0251fdb7313b5d13b7d846bf5f29ed9f0cf4fe1f9131abd8862487d788e529cd58704deccdaf352a539e93da9a8a9b156f3d2d9bcb4104ed630f83121f4587ed3f7bc7a8a07fbf73d32981bc4be8186526d8342f960385e641391c3046bf3fe994be5f60e16e22e6306d87edc501f06b2b70cdcd098af420004784d6cc660c363e98e2b894253bcdbe925ae3bded3a9fd6e372c0a80f10eeacb79d92178f55d823b715cf2cbe99a5387939c7a29ea21fc47cbcd758da48eba7893774cc6ba4488bdb4e8df5ad602ae980d3a2127586707f5474e4bc3842d63fafff5ad95f28417da624aff58cbb95973e627eff15b354f94bfc0d587c359c858d5dc8eb8527b5502e699ee679b79cafd7a960d5765752dccdcfd6d5ad9f64955f6c7abd7e2cd26b606f478179bcba961816a791157ae2aa469756379cb459f2a667d5da8a914554e7d4f213fe150d6f10527a113ad7882d7b0bd5d7a9fbcfc1564b42b553fc3932891eff5fabc600f45a11afed81db103c0fc524774f72ebb4ac0add05a31188af99f592eec81827798c15bb2b1e0f592f69ba197413527ad8c20c73c3bb473836989921e0c989d5b0c727dd4fceacae0ca4654a553f724004fbffac38738d233e200be6b7b286cf6e63169d20ac3180170c7e9c69fcf410c3b8408a68062c83ad0a8cefb6bcc64a6dc8871959725882a83caabed76eeb428020f75e34fd868b02469dc4391340dfcaf1ded14c32b2aebb76c707423c08499a560bb05834c451164c9f279fa67fee72d33ea29c5af586e24eb4b9c94098fa9881970f5bf4d7f2754ec69d31bc4af2fdd2fa482993e45def0360dea852dc281c6ee2777a5ac132ee3f4fa44e3207ebf0beb8e457ef15b0620c530f036ab5e085b08cfca9aabfda95c595f0485e71a3eed5c83b63bfe9c1b62a4b8df237a03b2dcfe0493491e21410f9eaa2e7f514a771de75528562c89550a71588a40b60e0d64d8acc2545398aa77679c72955f72160b16f1541740bd6e813f2a17e719f15c369435e07daba7f352fecf671a3aa5a83dd302520efe7e4469a4c08db691096d1d72b40d7c2e7aba1824879792a210f1fdc774e7448317be52dbdad4ffc7e27845aa3f3e9fb66f20ac21aea0e5de93a23f4fcd9ee6b733cb82f8f22f284fddb121a3918667186c17fcc38098b74f97a7895a6d49f3aebff0bf5e26c2bea5dba2683b77139a9434ccc08b5ca1865ba3bbf1796e4b76298819a0ff74f4f9870ed089ca7780eec7865e4d5692a49b9558688b542eced843fc63465c45c800aa831a98685be4bf806f7182f7c5a5db6b243f94ba9d145ac3807afd20ae7b7af7e24d08fa0bfee288d8c3eb6128583eedd353a799e7194deeb362cde53956d2785899ef548648d926a5878bfa909cbf248b279e5a04d5b0b94b046e1d2ac44ac7b8ef70962f5add773483e3dabc82b1fa1cffd98f2f442ca61b7c732b53926d611c674f86effc71439c6c83e1fbcca680892f09b3a4a7abd47241414acad70fc6628e73a5342b14cc9b96eabc6b47351a825de12be356a4986a1368c11e7ff09d23ff62cf94b0801761077b041b7ad94fbd6625a388ca6cd86e2abce36b603faf0eb0271083b4e09054ebb02fecf34cc6d70b7e4c1dcb93550deefacc875e8dcd321aea01dc3d46c1c5b53fa8fbfd739fd173082594f1f9a8508d4adee3cc1463f60091d7fe0618b9507f51325f5c35c55aeb90ba82d3067610ea326fb14205b2e8ffca906836cc9bae82b25315f821bf82a5e53909043b79f18ffb8767f4387b552669eb20307cd7044f27a0ed4190dfefda0445df85d53855f405e86dc8f99568e5935db7f00613aea911746c10537084b6605a272d9d64bf4adf0ceb47ea80bf46e4a4e5bba1fd0d7c912f117f67422998ce0f43fe6659dce9c54849860330cc7a8ceaf4a613b4b71523d531ee8dc108f645942c953dd5271ecbcba097a47c66c8effeb240cbd12320fa4fee16835028bedd42827fd020f929685eddc64695660e4089121ca478ec8c0bb39e5979702655ace1475b4d8a644fbf461595755d5440284c58500f440c47f4263093dc772b0ba8df693075ca6c4018266bf5f67b83ddfe5d694456d3ccf348c7f3355aebf76eb240550bb4d8d0971d8f225fb65625714e664c221569d8bdebbbeb377c3d6bb629a3619cbfc951f29eb162131c26143c7270da08371611d4b83626f05f3e478b9878fa89f39e753563908237ad85a147230294fca4a67229bdedeb3684cbb1ffd595cd87792f6ff634711077c5897aaa26e4c5347d8b116ebd0b38b745e0c242f7613cabc8931fe87b8e7c9f40f1b7dc48f47f49fa28866e82399ea3baed6af7f4577b9e3612c6ad9ab09deced2ab10b9e3b3d6f7d0cce0d35472d39d45b66332fb1f61b7623c1606d9badb02e845fd2800cab6f5e05b0b95f7aa7937faea57c49ee4f03bfb0de112c252d8bd37c738b6b141215f0832d433ce630d193c9652e04ea0a51363855903cba5b79944e4d8aded07eb1a334ff436bc8c45b8feb05ab726096e5c07890cffb08ef30e73be169e4ff47e58a79e792cca9389d58a7c1e25bebf7ff633a412a3c5386c5978f95e36b836b25cb422d865357e2aea5c63cfebaf01e43af708cedd88ee9b2d4a63d13ecf65963c5600444ca682254173f44a8e003a04c63d7046c31ecc8e8f0e5761e429871747799fbac7f5fd864a43a8bfe02eccf5708b0620a862d48055be92d7c2b9d11967a028ea143e49aaa3d2d5580fe72d82bb5135f5d1cd31d0c495d58033b2a6b81def30754a0cd329bdbac1a9ea2b7912c0545fc98d02025d153fe281198993511116223aaf63fa68a76c7e16a5f5c8fb1fb5b4886aad8ad9b9ca61a883bc5bbe4b3fb165e90f6158a1749bd2e588bb5e5aedd2959b7ff1c82471fec377c31da22abf79507b923ce1f0c3de19fb6bcf8b8c5b1ff3f1b9d6b5ab4a8d99c1761590e512680993ef178745f677c37900c56aa88bdbb142e02f05123d173bc846178f3c157f7be49e2efadb4403810c3e13dbefc6315655b1d05a445f1ac9b4d49526385119dda2e371316d58194e61e67bca2534762ffdfec9fa5298aafc909b9d49c23946f4db2c517f52d02cd5cca029e43d25ce34b0efb96c86205f81f3a786a4a3cc1826eac8a32a4f08b1106ce33adcc201900c73110bb27e7185fb4cb8f459f3e33c43c53ea8eb1bf50f616ce8543f52c8c3a687e2407f4f7f17b21b77a1835373fe243dab963ac27ac6670b0073bc862222b7a3ac7e8c5c62f1a198c9a6ab0fe325db803a66732b14e2038f83bef28176ecf056ffe29d8436f97d9aa15aebde5dccb3afb15504510fb1aba0fd644e0a9f5e9800f4f78ce914660d089c32aeca344ce019ce73f8d384053060863bd5a1822bc7910112c2b4fadef08e540352501d6838f7a2109671a1cec2b0067477eac20a8eb7eb59df773b088125868d027c5cae858bded9583eab6253e22a03de2e36ff14301dea9637dbe51ed7c877176e7d430648a2c3fbf86ec4845cd5e290e6fff2ca66ddef8b352d7f6b0fa76835b4a46c675c1cc4a5bceb5015f29f2f7f44c5c50153aaecae78ac294418e1e2f9c3838982ea3eb11aa97ddb2298f80e5830a8eb1e5902ecaeeb7b664a7156b92c80f9c844c3ebce97efebf0be003fcc2ee221a33b5720d852b85b1755ec437f7d69afc490611858447b788e9b9eee480924a34c60144e31e4056ff485f755964cf8bf1104c955c89ee19e4edac7054f31d53eb0f2bbc4fc5c6ee81630c9fc0d4077158a63fa32e211528f1f3005313045f355d18bdef8f453c7108649903b4da2dae3bde4ec85c45e582657e2424f16a8e56d0cf26195cc6798464faeedc478e081cf3dcb27f3d5e523ad9d0033accbc0b319fbe7a88f10a5ffc9cf0a5457194dcd1146ed25b15188e4869ddbea1fb86f6f46172619ec36df3c17a3708544d3fb47a712b6ac04929f13e7f1697fdfed30bb70ee157ca9217b9c68816c4e177a3a5c2394f806534855868dbda241aed5da08e457eb6216e9f7e346341f8cadeb3eb8127e50079eb6a2232d943a619e92a5c6d001af6a149f7c815906cf81dee8a88d0f6a10088173ba6dac3e3199c0740ec3ff2d51afa23c93a56bdcf26bd70749a5555f27eb0a06f1daa8217bea877303ebce16b91d84f139bca40c73a474c5ca57fd334a49c343d0cbf82a4b16a0fda4ffbe0eb62ce990edbdb85b7ea8cac809cf0c12e3332e3c5e4ad3da9f1f0e08902a61fe5bde91ab7d9410d0122982e999771f459cd40ce744ccf7e5748f76a65addf66a6299845f1787b8f23ddf7836bbf43aaac823c4304d4cfd959fce7fb7e72a601283f1cab471d98b7a933d57e3067007ad88d4714137121c27f73d731fe9da3fc73a0e115a636d45356b0fe8ac71d25f51f93582bda518a956d870785423f2fbb29e83736464304bacd3208de0161d6cbf80cafb2e96538b68e23b4856ecbaf2c85ed5143e6f4043d095336099a256f699d2c5540a5d3df87d0d4717e4d48654637d417a46fb7028d9d5aef4974ace32edc67140b986ee0525d4bd85a850bafbc98bc6a2ad02673d4e151cf4501d65ed12acc63a5142cd1f588e4f6ae0795ebae09445b08972c30ad5c7865eb8d0e5b80544ac244036ed806f77b2bd22e81f4b36f8e316c2de298da54b1abb6f47e95d69f5033fdbea7b10a28ad17fb4fda796ab8fd3786b8b17eecb8d10a534b8a59d66e1b341a858885d75d41424ffd5e492c4bc67bcce5f4de77c37d8df2ae2d59175c96fff1a374cc7233359a6ca71ff10ece8a1cd352fe6d9c9ab359cf956d5916e741e0b6ae9a5e4341bdb5ee98f0958f295380932347009181d3e9e73252c18da142006a553e6ea7d01b61f651bcb997b26177fa80ce24bc41830c35239ad1b77a2eb0bb473e559f4343e6f89ab88ef3c923e11bf3ce0f61289895247c332253c49769f37b5dccdd544b8079c1d81a6c26c0f252bd0e337ce1be5fbefe11c4daa2eaf5413d03d04ad8ee354075af4a143ea298b5b3700556c94079ec7d78e5a579d170bbe23ce7f94e1c0aeceafd0ad678da09f84394385e4302cc967e118ea638683813be634f78e50ddd97cf1f1a07f3deb681025bbd7811ef292a93efd4847b44a9ea9db0a66dab3d858ccb7565109de035726216012984146869cdef08c13c24a6631f91a2008795ccdfada46025abbb9fceb160ffbf300e6d6d2ec32d19ec4d57f23969f4190c2dc98eca47774c528bf46a0c62c42d6d22905dd7a49f7b82d5b1cdad8917ddc356ec5b1cfb9483a7c6184a3c5befdd262809fa519a1fc2db4fff1e78e414c94d916a8484c0d0be8122a5f9b78b8834e764c614e3e0d9e74970f8b69a27c9030791e54281d015eabcf022772e110b36772aea35e4b2b7d7f018b014a3bf2308785b398fb937d3396c4a5f2d5f96692b48e8484bf91953f2cc8607c7ab588ca1125c3652b1486fa91d682cb473626e7f43780ea77f7239d0a87763bf07c7f57b9ab4d3876c46264dfcd38842a027d80e85dc57d2b93fa2526ee5a4bed1f15dc68d627fa50dccc03660d520f3c8d6cb7d5712b83ab02e1271f58a9ad3769e64ccd0461d15646c59958847d3a39695333592775eef2b06a1f2d36c0e0885676d8a7ece0a7993e978174ba37a77db3a50815de751767135e9e5a902e839bfe337641f2d9bf9b58ddf6f9234d22a7aba63e17946a82a02dfef6b29d527488d3f7696dad145229abd6d5c7bb6b42071bf6cd54192df04486e5d56a1eece891338ee80da2f9c19f61cdd0b1432c6333ecd85c387c3b3218c6c9493205fbfb2866b1ae30853be07f4695e6bfa5d4f1deb3d71179c1d6960b3db6559d200981d93d424b5b6e0d51b959c97b79175003fcb32eeccf931debe319ec861d571aebe4c34782188c593820d2e0ac8b274fcb8219d327fa95ff0eea1f5b76b9fd7e616a7f7c0b5e0b8f1f464fb2d881a2116c264cabde78e63f583f6c2f5658871ad3d56323e4d8f367dc968d72648e37cfe6277ab00ef1f346ba1e3f52194a79e474b8929ad4ef5b22cd2382f94d3f22c55770da15625c5eb8b930978db847ac3905622b37391169bb6fe58256fc207af821bc7c36d6d0024ca1990d2a9eab475c00081230582903d24d30bf765745af578393fb2243406f5436b8070dba3b815952dfe8aa3792d7abd2a391afe3b971eecdf1fd71d6cc833befe29b8fe09c3b68bea72eda926298ac7478c84985e268af8aa79995263c9be5342175c3e7bdb913b72d17c1ec744f3241ac0c7eadeb660bf7ddf91c2d2bccd8db5f2c0c9f5803f05ff2f125c84c91aa7937bfa42f6f06b1b746ea8c88121ff5ab5786982807d62244d3c8306a931065b74faaec8207b0546042d7ae46851b9f5a0b9860bd3ece92773362a79dab85a28ccfd1edfcd52c216b646c674f85ee1cdebdfaad66fba3b98c4026072e16e210f2dc4b2410f8d5752df8c87730f3b8a8cc36b906283b7667d1d9521d3781aacf61e9e96e1b0043c13640af04493fcf2a399ddcc5f5dc2852cc8085837bceb615b0cca60855d3ab6bf5dec3b0e020413c7d090b2bc79c166026c127b112e0505974603b0f5423e05d0b66be0226cff4228720f29810f7071fff102b30935c065d240e7925670e9ccf67eaf3493859baea28584d27c6a9d35f68088a9468c9d2d1515cd4954de69cf3980699851cf7df07e7502d82989db305ab6d42f3573df5af01b7f83870c3bb6c3d14284cae55b4e60ffab1fa67c6f9ae07041575f1bff8a5a828a88529766dd6cb8a985606df3c33100d14d20d7b1d4a3a7541c3eed5e64f4ec298cab421397f6ce386b0024b840a7d8531b8e6d72d6fe6b30092b9ae79dd372b81bcb2027a926c1eee5f794e2b216c2b2380437c0a3eddd8b8734bdc19acf2aacd46eba0cd002ed9f041f3ccb173ff9ea9444dc0459fc4de9a3b56293a6b8b3f9d5c6959fc2267ab4189a53bc7124af1282220de8a04b7a4d3af62dc4fb5b2f43283a73f41e2c397531585a4bdefbb263e881eb97c0e04071c49b7fa70106f054cafd2ce0c4e5e7930590cc71c6f622f505f5f47d9526655e21fda3beaea7c60cc6ffb4c9fdf0b6c3a0b4cb6a745895100f7b9146993a127e4619f69fbc6ec42b67f36838db80307a4809df9b8b9cafd7fbfc5eefaba9850de02a11e7b1d1034862b3c4950cd660aa77a6ddb49b79c5557e53474d9085b8b23a66b86a9eb7133afa8ce7b82a9b0f68ce6b8b1dacde241dacdc5ad2dc637e63be36516cf24aad9e27d51042dcb721de53fb6b3bd11e94fa3d7a19f02f629a0d38c465038f73f12d0a2b6e0983b8ddfefa11658fd1ef47641db3e9c4247716b0137855e1d8bd23428109d696d39271c0988b975d82858f8bd0c2c7ba2f229f2cc9f1846f638ae6cd8bc2dd6a6c011c52d4040ba590a11c9c20ee1847cf75a04ed5cee7e880f5295231722a75db0c73065ab9afa474bb778a0d159c906ad8584f4d69b9ba74f2dd023d8e9417950555e8328cf663e9d1502df98620d3be54945bc522a290b08499fedb639be89d8563b0c48261ea15da1cf5605da1ff1f9709fd7b8b2da4dce5908cbe6788418fe6d3c03bf9232f47de143f6e408c9bd08ca2b5a0053bf5041e0f25a4b9355145a7031df6e09e93754ae975d9b5347ccd344e9c9e52587dd1afa6406afcb9d647c2cec81e74c880cde688d6d606c8cb40933cff689c9abc641acb7fabfb247166e8df4f5624f07bc0cb04cacff18b6e5af8152d6c253b5c0756195bca0999f7aaa1f2295237d3c376fb09d635d07c2cb692d3570672457f6bc330344bc1a0085773f58d53bdb838ef359db06984b611fe8e196f9cd832d21a18cf2b72b3b08859c7b0c2e740d9bd63292221ecad9335b1a0ed4d4c489af16c43bea42a7a6083f08b5735de50de80c5f7ec8ed951ca45038ce4df18e4a84d53ce8d5e682855006253ff6f630fcf0abe061bef6e4a364e4460fd3092cc8f30b962d5d6bb519551402b66dea0e1d34050eae8dd22b370f4b7d97fc4ae84a29e583a95c97f92b601c61dc5a9849fbfe8fc8db4ec8f1884da418bc7a651cbb83d41fb5b9a25da503a7bd1f210cd6210d3abece66c5fcd05cd2f603ffff5f96d3421246d176cfd654dd466c0dd209d525df67df55c54ad39f30805b0da537743099d96adb04dfa20181b8ee8eae8fded6e872cf0e35ef99b09a8c3da010361276f02df3e91e7d1e3bfdb468dff45298ba228529e079eb7e2c375e79494dd735b187cc263066fa4c0c4043ca5ee3fe00eb608a1d5f1a556b519f278d307eb94ba80d3faa3fc5eacb4eacbaebf9c248fb1271dd5bdaab3ffce449579de5aaef4dd8de86627b8208675d74e6b0f31932eb91654b20922d5f72d14dc86055e03c9738e1e53f69ee4341c71b530542b5a5e6de768936dad0be1fce3124f0034ecd93297ef360a5778fe9f802866c29e724445032265377e3449361fefa4472745472c7092987650b89024132a837418e57ae78730d693745f32a07442440646b8bf6b5b50eee796ac0a8f632d5b2293b10c5a277d953f17f6494152bb6c27ebf92bb16945babcb2ddcf7c9514c190b68759996e37b7bb9de3bfcda11728818d413ff08dc810f06ef785a8c8a537d14c38a9f6dfbf444164b9a65f0361b2c5ce249d0d009d377049d218324238849f828873a555b8bb4fdbec0ebe4bf37f280f0936ed8c3b12eaf2b7f15f33d6eaf50202d75e7cc45c3a9a354dd376ff3ec62bd2f1cf2f4539ab15d01110af7ba180673d838ae4936b58f43d8e75c680cd752756cdc283688e6e94a848ec3f34d86f1652f005d0b5c64c826ed542d1ad94af80b9495189e096cf1b0266fc9eebf0683e86abf755026340b1c12cacbf582867b6ded2aaac5bff20b541d27f8f233433074a3d7b110907f9f7473893191bd384aded66254a9231295998a82a3ca571d780c0e6165b56dba3ce1561af04d13242c07d29a95f60c2455301ea63dfc08a8e914a63b06d3583102c904c645d016ef7450f9f1459634adfa1428bb23346bc0c4ab7e9291c74b0bc097c82ad49f8b51e51656b673869ae7550f600185cf7af1edb98db8641e3c1f9d02e231042d5f1d1a3197d742137365116dfe11d716ff460905ae39fd0513f16ab2826b358c08ca838aab3d7134941de7a085114c89c59252f166dd8c23423718822a552a5e4e86fd540e6b4fd7a341ac2b800aebc531f3886405bef1953d5a97e2500c12bab0254eea93004278966ed3e3c823610e9759de18db38a83f7bda6f7018ce7507361ab5d4d5103e9471f70ca6a7f05219f33265f57b252e8c8f068cf1b8cb53720b8b38553eec7b461022d8f15a24255cc6d705fbb0ac4e95b8edb919bfc286fdef36983f80094cd09aefb2ff5ec9e26c4fbed3b8e530032071e127c1a3929a254ec41a3b54f043d5f9f0d8ec8eb626c2bf77127bc95f5f11785432228b98e59ca8bbe2585c0a6a0e0da13273e75df413bd90844dc7dc07e9bf443d14dc82bb91bdcd60b85f21df3b81dd58cf5a3944fd01dee72a75d41da7e644bae3b00549d2a9e1cf2f488c59813159b905247ad683372998acf02d92af0cab2f4313e3b887c7e302af761620540fa1ef95b13abceee1a44d202be81847fb7f862bfa1f8fa30a3206387a8a97806dace9231e53c52756a3fd058601bff7a404a30ed67da681050e7631714f8e8eeee2285abd460f9f01a2acc54b32adffb19f82bdf8531d0f4cf3707e2c84e4736027d5ebea951d310b03d02b32462651e3998aee7bcaa5ead782ec6e4c119454bdf151344a71662213c37e0ac8efa6a94fb8f556268238724c7ab755a059aec4b6b2374daa76f45ca8f220e4dc105d744f8a7a30a4ceb3b68a5df836eb40065fb75cd1178d0d0d3c29f2252cea39d4e4399668a51207d875cadd291ac7f8a607efba5393ce35c8d15a2277adcabe4cdc426ba184746ae71743f47b8e91f476abc766d3e878c83c835d5d872a1e9bb00a8926381ee5295993c28c7df8be2f165f190c5c90f133fcb23c670570c566f822aaf2acfa2951006b78c87a7ceb23d83cf9996682501d126b80ff8541202f43a8d0a56160f3fe76324c443a6b1e81d16b56162b724fbb120f80d09715c6b0036b4bb7064eb58c25634b7feba5f54fca1d9a0eec47e83c8b77eed5dccf48dbd200e4c8188a4ea82f0efa343753c5c1cce155e2ed4f2dfca84d511c10ad84ade1340b49278f68831f76ac44a93e027e540def9ba194824a8baace64290bcaa65eb3c8654a4750536292854bb95460d9fccd3540436d4f78baa3b69d9c37daecb55e7d1d74289faf93340d1a58a7df6624f084f58b11623b370e162277d0adebc01ea845cd3bbdefc4e54d344b2f6242536a96e40dc15c68a53e5c66428fd7304225191dcbab5facde305e7f1b491fbb38de58d44554e092dc0fe9c9542fe9417ffc0f5464ed093a8abf6b2410dd33ceed38b229ce618e7fd50b5a08f7c198d3db0416d26786d5257c4a9b16498a429dbd40356bada90a18192dab1789988a13508874cef1b69dd3d2b2728f4c5108b92592b87f423d5496aad97eb2ed7478d69c180b6bd2015b0202a1ab871191c7ec6b2c44e7bb7cdcb8791a8c98bd5e8b6140e161509be817e82d6a8848909f0367e9381ad581ba1ea7d6b9f84ce7cc0b6f93c86a53410e1afb153e571be6c4f39f7a8ca0bdd8f7ddb26cb2a9d8abe844f787474222ad9d0c966694b2b1b1acf1aef83b1bb97c85ff25085c4632ca543a3a5b3a3505600700e30d301ece14f0e33b759397720923cfb6a11c1373790ee7cebdf640d92a5ba39c28e323f46e24683cf4d1d21df8487a3c2ecb256fe78cd5ba7dec4cce4876e452bdf68dd0a06604ff9451ecf96407a55c5fcea88b0afe04cb2d07d8636fb4740627bca6a2aec79def4d4a34a48375d9f7d0fb30754084f283b1ac1f3e40a3c82fb206d1fd27a32c3e14b5ab0a5eae7301b7713ba45adc58aeccc9c56011f529b11bb8cb1242b0ba447e35c5a0a7f08a02276bb9d23fab79447c3aa00fba7ff236a031e7856835bb4c1c507eff746b4aea2e75d6f99c4131b22d1a2570358adba4af2134a1a0aba1b8aff7d7c30e8e177087d60454d1258b68fe0cc903e20cd2d0e340388e719dd244f72dab30af124191f7c292d72f3db709ee908f444577882ad3a1f8d6a852952838d2159f837fa226b528197d4b0ff36351ff395d03e5339cc9cd6eca0333656c9a40606a03c48c5d3c1f399adb97cb057b94c18eeb4fe97dc04d3c4196448373ccb9b7b5bf75b7b02f897d2eb32c53756a9033a1952849aec34a8f5165a7b89d2b3ffe594809e0636c1bc6df1872818f65fa9e3e7785dde57e82eba114397ce0e6a239a598339b84a205870dc89303403ed80bd644d7eb2c3b3ba2d45221e0e329a8ac913bdeecf942b2981cc56ac6abc5e43551f9b509099ae75a790edffafdde898f4f5c4a28d24b42c925c5075b76837b2d5ef0dacebe9c033f2607b842c42967e9d1f937a993089ccf6c02c9edcf781838d7b4d01d0f6f4b66ddb1c5b7e5455a81debc96afd3e40949acd23b820927640858908fb1713c721fbe05b7fc9042c02d330d206c9012e0a915d93a55bdebbbe3b9a5832997b5c909e9e71ae83a474f47460b6a78ce6c8b57ac66b2f7c7a203f791916c9db129ec9c65811e2bd1878c9f9b4d35cf8c630a7812baf4b0d88eb27607bd5d61ff906495365db8683b321ae654aab707448f5c60242d12c637ae3ca8c216de4886c1a4ab6b9ea7077801598febf1fcd74a5455b05f076091c3422264402e049a5a626c21f96d7f3ee0fdd64b367e4e4338d8a71fbf38350027f23085f64c7ae61bdfbd91dac30e94bdffad5a7128f06be0261d4559801c06caa3ccfca4891c2ff10d2deed224fc4a454c9219fd3e935d526854d109e3d90326224e82253a1fcffff19697766f278d1bdaa1343beea34bb907426ce512397378314f341972641b6c013fff6dbcdf81999c407fce4ad6466d4c18a5d6b661d5e9aef5982b605c5633b8dc178a2a08bb7f20424c8b180089d84b352bbd7aae69868f5de6c8c300eb6d03d9e55004807708b0d84b4574e51259e162828eddf8401d7ba9a16afd4b71368e399e178876689f84ba7c8ab51b3f4652a7cc206f834c685f260b033cbcbc165a5b095cbe3402d7c096fa3168d3121f5ca1332c78009275eaf772a56bc8e69e8cf276b19cc95ce1c7c7b2dbf9dec7e86be7a6f2ca9dc0a6d522cbb98f61a88089a6e798e965f8e75fe75db193f723d0a72705491078ede22aa19cabc7728897558294931a3211444246fb7bb5e341a707748f1bbccbcd9207771ee6c606fe5a7c45b8de2331e00793e26e0fd8b850b34e290e353a531402eb3875fc1b6dc18a541d2d58036d5b9d847ec8e1a9d797d460324548d3a10bfc0466a09016fad1aca17717b7a045bd3d1a32e7a37ad23cf1e9adf7f8ebc86398052dd59f2cc720f40ddd1cfeee8eee013ac8aab98248d6ea2d92587b1d0e1aaf3d640bbd485f4cf4038816f07607041180903e1789957c025c5a8b1dd26b0fd46b79d502fd0654de6dd0f5ffedb7a07f9e4a69a0b0eb36d4a53ce1a981b0cf564a785c3ea9fb918e4a191f2c045b290f6b4cc3b944a392db8c1261a6dfdddda50945cdeb5703bd540ea61a48c809dadbf4cc316a815c07a455359f4ed927f601763196f6199b63def50895761b75987e9ef7e1e4d1ba856d7be1aa0f6f4b1b022443d64b243b8686f0f094763be64da726e88fc2d25dfb57982db549170f0e09010637abf4d09052ccaecc86af423a0f42221b4bb90f83356c4f9c129a0a3046500b1000ef085a2a53c51692675e81d21cfb07fa9c6b04c90159c07be707e0587459dd0013d880088bd9301035276d1e5435cf726f01a3b170f36f9d72bb9819399a70da39666f5fe61fa78a3931be94849107a275cc2073921c9b22f75ed44339a96cad16352c43b9b4047ec441b707a3ed87be237982214a9ebe38e13c88f9983ec753259c5503e98bcad3b8fdc2b22ae2f5bffcd79b249ba8d58e9670c94130cb3c8bb67a0001271466300781fe06520f28eaaa7850852b95eb223e92c0eaf5972bfca40986b5fda84e8373fad43f50a4d9780b6a7fde0df7c39625799332bcc7078457bcfefcfffbee347e47c3a561fbc7f43d3f627addf8f2a0eca972869a2ce2081e2a383f2f3dece00c50f00f975b9bc9202a497cb512d39d2fd0d8b40717dad5840192fdc813f58b3a9c718ddfadd08705033e74bc65d42dd5dd4b175229b508c16196f2476116e5f51550f113222cfc74e4ac3fe59600380f8caff67bc15984f18e28c98b6702d99bf11ba42a2385c83e9f86c1670304cfe8457dc9671fc6cd77782e0bba398a790ed91c1cc9ae23ebeb1c0c538402a7998d73b232baab5cc41972739d3762725c7286bcac812ab45aa00b27dcb494293941398ebef4b5691ace8c0ff7c8428a614c3fe951c719d58008393617a42f1a496fc205b2f8524cd75af76a5685623d98e6c2c4d3c69352796425d008a29dfa2cf37c4d8c1705457dd33f6619e81cb7bb952b58d3938e247aa3f7e2ad02f792424d040db732d4a122787472716f00939b5db466bac556bb5e81b178bfe58a7da105d7f9d5905885d0d33fa59ba4dc7af112aec539d10b6153e5d314c110a869d1adb25c4b46f9b500574ac8a26e4b1a9dd0735c890f160ce57aeb55e8ab27ac5f823d2578579cd67106ad639f44f9c3b1ed831b41a3b131f3ab5567a25aa521ba56ea8863377827b5b84c0ab4d8e4697c30f2b654e9d54cb1897ba49744b95f6134440e58e99daf0e940a7caae4e69e280e2864abccdac13a679e64626d7ac538674b36d9b4fc71d9f15e8a82b3c88179232dc30a6de2e825ed7e98dc7b05443664a01a097619629a73290ceff000523e8a7824fca010d5e871f2dc9d2816857a06f121678861b6ed12f116bd0d0d8d0ad1725d6544ed7a0e51ec2ace835e74e8ee20db0129c319e5112766271929d782af5a62bbb89c8bc2a9a631f077552baa514df4e5939e44cd0477542632db6dfb0b493bc292edc95712bcfb48ecce5e23f1d5c78737fbc619daa6fa994b4cb82d2941004bca4476cbd2ca14ca793252290a3d205f1dcd3c543d91f632482447fb3de717ddd64ce2acf76a82af45ead552427e01720dfd3b01f4d4c5cc7e371fb781ce92b23d00d9c8de663e7fcd07c1ad1c4a0688f775e3eba8c7f5dc2861dc955256f0bef5148e4515e83ad12f8b3b31c7e11bfe4a6b825a2755ab90aee8ae098c60b7706f1ddff64e149e054759fac4e76468462cc1bb2707f4031423a8d7e3ad6a5fd38dec64cc2250771bac7ddbb481be799f2cfc89d5317a875d04b9d3d60ef7c38a30ed8db66491ab66325c8124fe4a905b1047b5cfc7b051413aedc7f570b15a807ddd1807ed1e9ecb89ec95562bafeadbe2adbb7bb146c4aabdde9d4a81e45d3112db92b57eacb94c64fa40673293f3891192b42508c0ff12a0d6e1e4e037d67326e468264989767658c8a9b91a7759047b1d6507981f453c485dd3a8eec29ef0405043a4b33f39143bd2636dcac37d46a9b13f69b8d7a89c564b88b402217f3fc782a88de970682f0865182f99b54c8ad4eda39d5651f1016904d2698ee98cdf84ccec8bbec564f388c1ef92f5dbe78ab374974a5eca2122af56993aee727df570318af396d7774dc85c171376abb3227f5bd326d3e71fc535c0049f45f23adf69a61f1885543a5692d29595033faea242324b8d8e9e3df2c17fc4e8fb33df938bfa6ba37a3dc6b847e721abdaa59fbabb1be0ab6d21f12dd8646efd538d82951cd7f077af23830290b82c655c4ad275a9fce77fa67377e3215b65529d29e080dfa0696eca3c562f3e17be04f9595924bea218b08e429988bd8e2143efcdd987797d57297dec1da404533520be44a6668970cd34a883b8e276cb48ae7b7c191be84333ab0b544da4744061741ac3f32e978bcaf045a921459790fd2b5ad8b57d14ee134717107cb6d58d513db9a2d2c4b45b277701a5d2eb7a2b62b9fc4a80af911fde55d826ba7f198a16bef01bd1e58514e31d9155be1bc8e39efedf0d568748c8abf72e63ace4e42f44c69efec23fb03ffed32dfdd48e7406ecc97899fb5a219f26d6f3f4b5039f8bf81a1855c0c658d3689b4e9bfbde7b245e11e4fcccf1c7a3082378fbc4b2fc23805e04aa48310973f7ceb219427780c1ccd66dee5bdf0e3c73264a36d53d17874927e5c059d8fd7e8475c0929554ea1751c33a1661c9035d1893854a33a5181c0b507a30cc8644f7323e59c43d31a45fc94a8c70c7abdc55953ac56daabd11a0de11ffbcc8243e746cb670ef12520dcdc2027a008b4064d5252b3076a24b4a4df8ab0671db79d94c09c40eb0c410f39dcb9dc4b57e63019760a413c48d9afff3cc1db3acc9730ef7ab0194344bfd90015bf4387c203a46e6da9cf891e57e69985d9bcd642cb3a9dae880063820776f82b2007d36650504cf42cb90211eca5370c64f271413b51f32287abe7e5016467faf432acb64f5070e222cfcacbda5349fc0cd58ad6aa429a6e854781a3fc9d2f7857dbf6f32fa041d4d018ef5c946bd9dc76525fa472e0a2d91f53bf26d1fdc6eebcfc14397c67b926b43199057e4b6927b290cb6f1d507ffeb703880de86efc159aaaf8ffa07bfd65892273fedf480724a1994085c3cd0fa92d64f4abdedc0f7cfdc877a7d08a0283cb41d6e20fa66572823174c0a8e48d2c65533a52337cfc81314b88579021bdc846ab9075e6e78198b6980584a189b736e0f6f77e55418c9d0e34fdcf1322c14d880df94015bb540200a04cba6e1ab972f136fa4928c00a8f1ad00272bbdb7ca737752c4b5c96c83c8d7a108325bda411410f8773e42bf13cf9e284261e6449672a58a91ae685c2531ec3730bbd951184578e144d8ddf4c282a4f3dea83f9cffac472a85821eac8d038ca093099ec91ba5ba73cbca64b9b799bff0a2fdf5bb3e3e905a22ed2c2b913f3f0189fefdd66c0fffd6471ad907d084d7e0e975043d67aac18751047af3e8a6535e24bc6f68d4a6967efc94ff838310d577c41e841e6ca617d61117909b8d95c82dfde16d8CTS.cpython-36.pyc__init__.cpython-36.pycaudits.cpython-36.pyccib.cpython-36.pyccibxml.cpython-36.pycclustermanager.cpython-36.pyccmcorosync.cpython-36.pyccorosync.cpython-36.pycenvironment.cpython-36.pycerrors.cpython-36.pycinput.cpython-36.pyclogging.cpython-36.pycnetwork.cpython-36.pycpatterns.cpython-36.pycprocess.cpython-36.pycremote.cpython-36.pycscenarios.cpython-36.pyctest.cpython-36.pyctimer.cpython-36.pycwatcher.cpython-36.pyc__init__.cpython-36.pyccomponentfail.cpython-36.pycctstest.cpython-36.pycfliptest.cpython-36.pycmaintenancemode.cpython-36.pycnearquorumpointtest.cpython-36.pycpartialstart.cpython-36.pycreattach.cpython-36.pycremotebasic.cpython-36.pycremotedriver.cpython-36.pycremotemigrate.cpython-36.pycremoterscfailure.cpython-36.pycremotestonithd.cpython-36.pycresourcerecover.cpython-36.pycrestartonebyone.cpython-36.pycrestarttest.cpython-36.pycresynccib.cpython-36.pycsimulstart.cpython-36.pycsimulstartlite.cpython-36.pycsimulstop.cpython-36.pycsimulstoplite.cpython-36.pycsplitbraintest.cpython-36.pycstandbytest.cpython-36.pycstartonebyone.cpython-36.pycstarttest.cpython-36.pycstonithdtest.cpython-36.pycstoponebyone.cpython-36.pycstoptest.cpython-36.pycdate-1.dotdate-1.dotsimple2.dotsimple2.dotticket-primitive-7.dotsimple2.dotdate-1.dotdate-1.dotone-or-more-7.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotbug-cl-5168.dotbundle-order-stop.dotbundle-promoted-anticolocation-2.dotbundle-promoted-anticolocation-4.dotbundle-promoted-colocation-6.dotbundle-promoted-colocation-6.dotbundle-promoted-colocation-2.dotbundle-promoted-colocation-4.dotbundle-promoted-colocation-6.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotclone-recover-no-shuffle-4.dotclone-recover-no-shuffle-5.dotclone-recover-no-shuffle-6.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotgroup-anticolocation-4.dotgroup-anticolocation-4.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotpromoted-0.dotinterleave-3.dotinterleave-3.dotinterleave-3.dottags-location.dotmanaged-1.dotticket-rsc-sets-8.dotmigrate-stop.dotmigrate-fail-6.dotmigrate-fail-8.dotmigrate-fail-9.dotmigrate-fail-9.dotticket-rsc-sets-8.dotmon-rsc-4.dotrec-rsc-6.dotticket-rsc-sets-8.dotnotify-2.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotyear-2038.dotorder-required.dotsimple3.dotsimple3.dotorder4.dotticket-rsc-sets-8.dottarget-0.dotparams-5.dotparams-5.dotplacement-stickiness.dotplacement-stickiness.dotplacement-stickiness.dotwhitebox-imply-stop-on-fence.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotpromoted-3.dotticket-rsc-sets-8.dotrec-node-5.dotsuicide-needed-inquorate.dotrec-node-5.dotrec-node-7.dotrec-node-7.dotrec-rsc-7.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotremote-recovery.dotrsc_dep8.dotsimple11.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotrule-int-parse-fail-default-str-match.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotstopped-monitor-21.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotstopped-monitor-27.dotticket-rsc-sets-8.dotstopped-monitor-31.dotsuicide-not-needed-quorate.dotsystemhealthp1.dotsystemhealthn3.dotsystemhealthn3.dotsystemhealthp1.dotsystemhealthn3.dotsystemhealthp3.dotsystemhealthp1.dotsystemhealthn3.dotsystemhealthp1.dotsystemhealthp3.dotsystemhealthp3.dottemplate-coloc-2.dottemplate-rsc-sets-3.dottemplate-ticket.dotticket-promoted-1.dotticket-promoted-1.dotticket-clone-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-clone-6.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-clone-6.dotticket-rsc-sets-8.dotticket-clone-8.dotticket-clone-6.dotticket-clone-9.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-rsc-sets-8.dotticket-clone-6.dotticket-promoted-1.dotticket-clone-8.dotticket-promoted-1.dotticket-group-7.dotticket-group-7.dotticket-group-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-group-6.dotticket-group-6.dotticket-rsc-sets-8.dotticket-group-6.dotticket-group-6.dotticket-rsc-sets-8.dotticket-group-8.dotticket-group-6.dotticket-group-9.dotticket-rsc-sets-8.dotticket-group-6.dotticket-rsc-sets-8.dotticket-group-6.dotticket-group-7.dotticket-group-8.dotticket-primitive-7.dotticket-primitive-7.dotticket-primitive-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-primitive-6.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-primitive-6.dotticket-rsc-sets-8.dotticket-primitive-8.dotticket-primitive-6.dotticket-primitive-9.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-rsc-sets-8.dotticket-primitive-6.dotticket-primitive-7.dotticket-primitive-8.dotticket-promoted-7.dotticket-promoted-8.dotticket-rsc-sets-8.dotticket-rsc-sets-8.dotticket-promoted-3.dotticket-promoted-3.dotticket-rsc-sets-8.dotticket-promoted-6.dotticket-promoted-6.dotticket-rsc-sets-8.dotticket-promoted-6.dotticket-promoted-9.dotticket-rsc-sets-8.dotticket-promoted-6.dotticket-rsc-sets-8.dotticket-promoted-7.dotticket-promoted-8.dotticket-rsc-sets-4.dotticket-rsc-sets-9.dotticket-rsc-sets-8.dotticket-rsc-sets-9.dotticket-rsc-sets-9.dotticket-rsc-sets-9.dotticket-rsc-sets-9.dotunmanaged-stop-2.dotunmanaged-stop-4.dotwhitebox-fail2.dotattrs8.expattrs8.expsimple2.expsimple2.expsimple2.expattrs8.expunrunnable-2.expunrunnable-2.expprobe-4.expunrunnable-2.expbundle-order-stop.expunrunnable-2.expbundle-promoted-anticolocation-2.expbundle-promoted-anticolocation-4.expbundle-promoted-anticolocation-6.expbundle-promoted-colocation-2.expbundle-promoted-colocation-4.expbundle-promoted-colocation-6.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expclone-recover-no-shuffle-4.expclone-recover-no-shuffle-5.expclone-recover-no-shuffle-6.expprobe-4.expprobe-4.expgroup-anticolocation-4.expgroup-anticolocation-4.expunrunnable-2.expprobe-4.expprobe-4.expinterleave-3.expinterleave-3.expinterleave-3.exptags-location.expmanaged-1.expunrunnable-2.expmigrate-stop.expmigrate-fail-9.expunrunnable-2.exprec-rsc-6.expnotify-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.exporder-required.exporder-optional.exporder4.expunrunnable-2.exptarget-0.expparams-5.expplacement-stickiness.expplacement-stickiness.expprobe-4.expunrunnable-2.expunrunnable-2.exppromoted-3.expunrunnable-2.exprec-node-3.exprec-node-7.exprec-node-7.exprec-rsc-7.expunrunnable-2.expunrunnable-2.expremote-recovery.exprsc_dep8.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.exprule-int-parse-fail-default-str-match.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunrunnable-2.expstopped-monitor-27.expunrunnable-2.expsuicide-not-needed-quorate.expsystemhealthp1.expsystemhealthn3.expsystemhealthn3.expsystemhealthp1.expsystemhealthn3.expsystemhealthp3.expsystemhealthp1.expsystemhealthn3.expsystemhealthp1.expsystemhealthp3.expsystemhealthp3.exptemplate-coloc-2.exptemplate-rsc-sets-3.exptemplate-ticket.expticket-clone-7.expticket-clone-7.expticket-clone-8.expunrunnable-2.expunrunnable-2.expticket-clone-6.expticket-clone-6.expunrunnable-2.expticket-clone-6.expticket-clone-6.expunrunnable-2.expticket-clone-8.expticket-clone-6.expticket-clone-9.expunrunnable-2.expticket-clone-6.expunrunnable-2.expticket-clone-6.expticket-clone-7.expticket-clone-8.expticket-group-7.expticket-group-7.expticket-group-8.expunrunnable-2.expunrunnable-2.expticket-group-6.expticket-group-6.expunrunnable-2.expticket-group-6.expticket-group-6.expunrunnable-2.expticket-group-8.expticket-group-6.expticket-group-9.expunrunnable-2.expticket-group-6.expunrunnable-2.expticket-group-6.expticket-group-7.expticket-group-8.expticket-primitive-7.expticket-primitive-7.expticket-primitive-8.expunrunnable-2.expunrunnable-2.expticket-primitive-6.expticket-primitive-6.expunrunnable-2.expticket-primitive-6.expticket-primitive-6.expunrunnable-2.expticket-primitive-8.expticket-primitive-6.expticket-primitive-9.expunrunnable-2.expticket-primitive-6.expunrunnable-2.expticket-primitive-6.expticket-primitive-7.expticket-primitive-8.expticket-promoted-7.expticket-promoted-8.expunrunnable-2.expunrunnable-2.expticket-promoted-3.expticket-promoted-3.expunrunnable-2.expticket-promoted-6.expticket-promoted-6.expunrunnable-2.expticket-promoted-6.expticket-promoted-9.expunrunnable-2.expticket-promoted-6.expunrunnable-2.expticket-promoted-7.expticket-promoted-8.expticket-rsc-sets-4.expticket-rsc-sets-9.expunrunnable-2.expticket-rsc-sets-9.expticket-rsc-sets-9.expticket-rsc-sets-9.expticket-rsc-sets-9.expunrunnable-2.expunrunnable-2.expunrunnable-2.expunmanaged-stop-4.expwhitebox-fail2.exp5-am-then-bm-a-not-migratable.scores5-am-then-bm-a-not-migratable.scores7-migrate-group-one-unmigratable.scoresattrs7.scoresattrs7.scoresattrs4.scoresremote-orphaned2.scoresutilization.scoresbug-5014-A-stopped-B-stopped.scoresbug-5014-GROUP-A-stopped-B-stopped.scoresone-or-more-7.scoresone-or-more-7.scoresbug-5025-3.scoresbug-5069-op-enabled.scoresbundle-order-stop.scoresbundle-promoted-location-4.scoresticket-primitive-8.scorescolocated-utilization-primitive-2.scoresrsc_dep3.scoresrec-node-14.scorescontainer-3.scorescontainer-3.scorescontainer-group-3.scorescontainer-group-3.scoresdate-3.scoresgroup-anticolocation-2.scoresgroup5.scoresinc4.scoresinc6.scoresinterleave-1.scoresinterleave-stop.scorestags-location.scoresmigrate-3.scoresmigrate-4.scoresmigrate-stop.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-success.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-success.scoresmigrate-partial-2.scoresmigrate-partial-2.scoresmigrate-success.scoresutilization.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scorespending-node-no-uname.scoresnotify-3.scoresnotify-3.scoresnotify-3.scoresordered-set-basic-startup.scoresyear-2038.scoresorder-wrong-kind.scoresorder-wrong-kind.scoresorder-wrong-kind.scoresorder-wrong-kind.scoresorder-serialize.scoresquorum-3.scorestemplate-order-2.scoresquorum-3.scoresorder6.scoresorphan-2.scoresorphan-2.scorestarget-0.scorestarget-0.scorestarget-0.scorestarget-0.scorestarget-0.scoresplacement-stickiness.scoresutilization-order3.scoreswhitebox-imply-stop-on-fence.scoresprobe-4.scoresprobe-target-of-failed-migrate_to-2.scoresutilization-order3.scorespromoted-2.scorespromoted-5.scorespromoted-failed-demote.scoresquorum-3.scoresquorum-3.scoresutilization-order3.scoresrec-node-7.scoresutilization-order3.scoresrec-node-7.scoresutilization-order3.scoresrec-node-7.scoresutilization-order3.scoresstopped-monitor-25.scoresstopped-monitor-05.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-25.scoresstopped-monitor-26.scoresremote-probe-disable.scoresremote-move.scoresremote-recover.scoresremote-recovery.scoresremote-recover-unknown.scoresrsc-sets-seq-true.scoresrsc_dep8.scoresrsc_dep8.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoresrule-int-parse-fail-default-str-match.scoresrule-int-parse-fail-default-str-no-match.scoressimple7.scoresstopped-monitor-26.scoressimple7.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-26.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-26.scoresstopped-monitor-27.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-25.scoresstopped-monitor-26.scoresstopped-monitor-25.scoressuicide-not-needed-quorate.scoressuicide-not-needed-quorate.scoressuicide-not-needed-quorate.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp3.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp1.scoressystemhealthp3.scoressystemhealthp3.scoresutilization-order3.scoresutilization-order3.scorestemplate-order-3.scorestemplate-order-2.scorestemplate-rsc-sets-3.scorestemplate-rsc-sets-3.scorestemplate-ticket.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-8.scoresticket-clone-24.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-8.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-9.scoresticket-clone-8.scoresticket-clone-9.scoresticket-clone-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-group-8.scoresticket-group-9.scoresticket-group-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-primitive-8.scoresticket-primitive-9.scoresticket-primitive-9.scoresticket-promoted-3.scoresticket-promoted-7.scoresticket-promoted-8.scoresticket-promoted-24.scoresticket-promoted-3.scoresticket-promoted-3.scoresticket-promoted-3.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-9.scoresticket-promoted-6.scoresticket-promoted-6.scoresticket-promoted-7.scoresticket-promoted-8.scoresticket-rsc-sets-4.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-6.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresticket-rsc-sets-9.scoresunfence-startup.scoresunfence-startup.scoresunmanaged-stop-2.scoresutilization-order3.scoreswhitebox-fail2.scoresdate-1.summarydate-1.summarysimple2.summarysimple2.summarysimple2.summarydate-1.summarydate-1.summaryone-or-more-7.summarybundle-order-stop.summarybundle-promoted-anticolocation-2.summarybundle-promoted-anticolocation-4.summarybundle-promoted-anticolocation-6.summarybundle-promoted-colocation-2.summarybundle-promoted-colocation-4.summarybundle-promoted-colocation-6.summarybundle-promoted-location-5.summarybundle-promoted-location-5.summarybundle-promoted-location-5.summaryclone-recover-no-shuffle-4.summaryclone-recover-no-shuffle-5.summaryclone-recover-no-shuffle-6.summarydate-3.summarygroup-anticolocation-4.summarygroup-anticolocation-4.summaryinterleave-3.summaryinterleave-3.summaryinterleave-3.summarytags-location.summarymigrate-stop.summarymigrate-fail-8.summarymigrate-fail-9.summaryrec-rsc-6.summarynotify-2.summaryorder-required.summaryorder-optional.summaryorder4.summaryorder6.summarytarget-0.summaryparams-5.summaryplacement-stickiness.summarypromoted-3.summaryrec-node-3.summaryrec-node-7.summaryremote-recovery.summaryrsc_dep8.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summaryrule-int-parse-fail-default-str-match.summaryrule-int-parse-fail-default-str-no-match.summarysuicide-not-needed-quorate.summarysystemhealthp1.summarysystemhealthn3.summarysystemhealthn3.summarysystemhealthp1.summarysystemhealthp3.summarysystemhealthp1.summarysystemhealthn3.summarysystemhealthp1.summarysystemhealthp3.summarytemplate-coloc-2.summarytemplate-coloc-2.summarytemplate-rsc-sets-3.summarytemplate-rsc-sets-3.summarytemplate-ticket.summaryticket-clone-7.summaryticket-clone-7.summaryticket-clone-8.summaryticket-clone-24.summaryticket-clone-22.summaryticket-clone-6.summaryticket-clone-6.summaryticket-clone-22.summaryticket-clone-6.summaryticket-clone-6.summaryticket-clone-22.summaryticket-clone-8.summaryticket-clone-6.summaryticket-clone-9.summaryticket-clone-6.summaryticket-clone-6.summaryticket-clone-7.summaryticket-clone-8.summaryticket-group-7.summaryticket-group-7.summaryticket-group-8.summaryticket-group-24.summaryticket-group-22.summaryticket-group-6.summaryticket-group-6.summaryticket-group-22.summaryticket-group-6.summaryticket-group-6.summaryticket-group-22.summaryticket-group-8.summaryticket-group-6.summaryticket-group-9.summaryticket-group-6.summaryticket-group-6.summaryticket-group-7.summaryticket-group-8.summaryticket-primitive-7.summaryticket-primitive-7.summaryticket-primitive-8.summaryticket-primitive-24.summaryticket-primitive-22.summaryticket-primitive-6.summaryticket-primitive-6.summaryticket-primitive-22.summaryticket-primitive-6.summaryticket-primitive-6.summaryticket-primitive-22.summaryticket-primitive-8.summaryticket-primitive-6.summaryticket-primitive-9.summaryticket-primitive-6.summaryticket-primitive-6.summaryticket-primitive-7.summaryticket-primitive-8.summaryticket-promoted-7.summaryticket-promoted-8.summaryticket-promoted-24.summaryticket-promoted-3.summaryticket-promoted-3.summaryticket-promoted-22.summaryticket-promoted-6.summaryticket-promoted-6.summaryticket-promoted-22.summaryticket-promoted-6.summaryticket-promoted-9.summaryticket-promoted-6.summaryticket-promoted-7.summaryticket-promoted-8.summaryticket-rsc-sets-4.summaryticket-rsc-sets-9.summaryticket-rsc-sets-8.summaryticket-rsc-sets-9.summaryticket-rsc-sets-9.summaryticket-rsc-sets-9.summaryticket-rsc-sets-9.summaryunmanaged-stop-2.summarybundle-order-stop.xmldate-3.xmlorder-optional.xmlrec-node-7.xmlremote-recovery.xmlrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpacemaker-2.1.7+20231219.0f7f88312-150600.6.3.1.src.rpmpacemaker-cts@@@@    /bin/sh/usr/bin/bash/usr/bin/python3pacemakerprocpspsmiscpython(abi)python3python3-pacemakerpython3-psutilrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)2.1.7+20231219.0f7f88312-150600.6.3.13.62.1.7+20231219.0f7f88312-150600.6.3.13.0.4-14.6.0-14.0-15.2-14.14.3ffwf@fifff]@f]@fh@fffff De,eee@eԔ@eԔ@e@e@e@e@e@e@evepb@eoe]@e]@e\e\e\e\e[J@eV@eV@eSa@eRe)1@e'e&@edddddC@d@d@d@d@d@dNdNdNdNddddd@dad @c`c1cۥck@cc@c@c@c@c@cFcFc@c#@c|c{h@clcb[cb[cGcEZcD @cD @cD @c6@c6@c2c,N@c,N@c,N@c,N@c,N@c,N@c,N@c,N@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c)@c(Yc(Yc(Yc(Yc(Yc(Ybc@bc@bc@b?b?b?b?b?b?b?b?b?b@b@b@b@b@bb>b>b>b>b@bbb=b@bkbkbkb|bobobk@bk@bk@bk@bk@b_bMbI@bF@bDF@bBbA@b<]@b<]@b'E@b%b\@b\@b\@b~b8b8b8b8b b[@b[@b[@b[@b[@b[@a@a@a@a@a@a@a@a@a@a@a@a@a@a@aaa@a@a@a@a@a@ap@ap@ap@a@a@a;Ha;Ha;Ha;Ha;Ha;Ha;Ha9@a9@a9@a9@aS@aS@aS@aS@aS@aS@`i@`i@`i@`t`t`t`t`t`#@`#@`#@`#@`#@`W5@`W5@`W5@`W5@`W5@`U`U`U`U`T@`T@`P`P`P`P`P``@`@`______@_@_@_@__D@_D@_D@_D@_C_C_C_C_C_3_c^@@^W@^W@^W@^W@^?@^^^^>@^>@^I^@^^^^^@^@^@^@^@^@^s^^s^^s^^1s^0"@^&^&^g@^g@]@]]M@]@]])]@]z@]z@]x]L]@1@],j](v@];\Q\Q\@\@\Ɋ@\8\f\,@\@\\\\\@\@\~d\w@\R@\N\J@\I\E@Z= 150400 (bsc#1180966) - rpm: build with --enable-legacy-links only for suse_version < 1600 - rpm: build with --enable-compat-2.0 only for suse_version < 1600 (jsc#PED-106, jsc#PED-294) - rpm: build with --with-concurrent-fencing-default=true only for sle_version >= 150400 - rpm: build with --with-resource-stickiness-default=1 only for sle_version >= 150400 - rpm: build with --with-nagios=true only for suse_version < 1600 (jsc#PED-3877, jsc#PED-4446) - agents: create symlink ocf:pacemaker:NodeUtilization only for suse_version < 1600 in favor of ocf:heartbeat:NodeUtilization (bsc#1070347)- Update to version 2.1.6+20230524.6fdc9deea (Pacemaker-2.1.6): - scheduler: ensure earlier group member starts happen after later member stops- Update to version 2.1.5+20230502.802a72226 (Pacemaker-2.1.6-rc2): - rpm: avoid bare wildcards under shared directories in spec - scheduler: consider mandatory colocations before optional- Update to version 2.1.5+20230501.832463d94: - daemons: pacemakerd -S should wait for shutdown before returning (bsc#1210857)- Update to version 2.1.5+20230501.b049bbeea: - scheduler: deprecate support for Nagios resources (jsc#PED-3877, jsc#PED-4446) - scheduler: deprecate "moon" in date_spec elements in rules - daemons: Preserve transient attrs when possible - daemons: Sync remote connection info with new controllers. - daemons: Record the node hosting a remote connection resource. - daemons: Add node hosting connection resource to state XML. - daemons: Broadcast remote node state changes to all controllers - daemons: Add daemon uptime to execd XML replies.- Update to version 2.1.5+20230424.6127934e3: - fencer: fencing timeout sent to peer takes no delay into account (bsc#1210074) - libpacemaker: initial timeout for fencing callback takes any requested fencing delay into account (bsc#1210074) - controller: use "target" terminology consistently (bsc#1210074) - controller: log fencing timeout consistently in seconds as priority fencing delay (bsc#1210074) - controller: initial timeout for fencing callback takes any priority fencing delay into account (bsc#1210074) - fencer: apply requested fencing delay only for the first device (bsc#1210074) - fencer: fencing timeouts take any pcmk_delay_base into account (bsc#1210074) - fencer: add correct values of pcmk_delay_base/max to query rely (bsc#1210074) - fencer: per-operation fencing timeout takes any requested fencing delay into account (bsc#1210074) - fencer: total fencing timeout takes any requested fencing delay into account (bsc#1210074) - cts-fencing: regression test for fencing timeouts taking fencing delays into account (bsc#1210074)- Update to version 2.1.5+20230418.ccc3b3344: - python: Default CTS iterations to 1.- Update to version 2.1.5+20230417.095c09eee (Pacemaker-2.1.6-rc1): - NLS: update translations for current code base - sysconfig: improve help text - sysconfig: overhaul enviroment variable descriptions - tools: avoid use-after-free of attribute ID - tools: fix use-after-free of attribute set name- Update to version 2.1.5+20230411.dbe567bfd: - controller: avoid use-after-free when disconnecting proxy IPCs during shutdown (bsc#1209640)- Update to version 2.1.5+20230410.97fbe1f31: - daemons: Add the default port to pacemaker-remoted help output. - controller: Don't use "//" in the fence XML query. - scheduler: attenuate chained "with this" colocation scores - scheduler: don't add group colocations twice - controller: Unlocked lrm_resource should include cleared/expired - controller: Ensure we don't ignore relevant CIB replacements - based: Use correct local-only diff logic - scheduler: make asymmetric ordering handling more efficient - scheduler: use correct action when determining order set flags - Rebase: * bug-806256_pacemaker-log-level-notice.patch * bug-977201_pacemaker-controld-self-fencing.patch- Update to version 2.1.5+20230403.7945075ce: - tools: Deprecate crm_mon --simple-status - tools: crm_mon can use update mode with XML, text, none - tools: Last-one-wins for crm_mon --daemonize and --one-shot - tools: Fix crm_mon seg fault when curses is missing (CLBZ#5512) - tools: Don't ignore invalid format in reconcile_output_formats - tools: Case-sensitive comparisons in reconcile_output_format() - tools: Implement --output-as=none in crm_mon.c- Update to version 2.1.5+20230328.76c42a514: - python: Disable the too-many-statements warning from pylint. - scheduler: NULL-check when adding colocations to list - scheduler: always add clone constraints to instances' lists - scheduler: avoid trace log and method call if not needed - scheduler: always add group's own "this with" colocations - scheduler: always add group's own "with this" colocations - scheduler: add "group with" colocations to later members independent of assignment - scheduler: always add "group with" colocations to first member - scheduler: always add "with group" colocations to last member - controller: Delay join finalization if a transition is in progress- Update to version 2.1.5+20230323.ee1bc67ff: - crm_resource: Add the --element option for delete & set - extra/resources/SysInfo.in: This calculation of cpu_load returns an incorrect value in Darwin and Linux - Rebase: * bug-995365_pacemaker-cts-restart-systemd-journald.patch- Update to version 2.1.5+20230320.22590c566: - libcrmcommon: allow crm_attribute to try OCF_RESOURCE_INSTANCE environment variable if -p is specified with an empty string (bsc#1209586) - libcrmcommon, libpe_status: New enabled meta attr for alerts - scheduler: message now applies to all nodes - libcrmcommon: avoid libqb assertion - tools: Formatted output in crm_shadow - schemas: New diff and any-element schemas - schemas: New crm_shadow and instruction schemas- Update to version 2.1.5+20230314.692147cd3: - tools: Don't teardown on unsuccessful crm_shadow --delete - tools: Don't print teardown message for crm_shadow --commit - libcib: Don't unset env var in cib_new_no_shadow() - scheduler: avoid displaying failed operations as pending (bsc#1206263) - Revert "Fix: libpacemaker: ensure any pending recurring monitor gets updated if it fails" (bsc#1206263) - cts-regression: reflect any test failures again with the return code - alerts: make alert_snmp.sh.sample compatible with SNMPv3 - tool: update crm_mon synopsis (bsc#1208868)- Update to version 2.1.5+20230309.a4b0ea1b5: - controller: compare recordable actions case-sensitively - libcrmcommon: Don't parse "-INFINITY" as a list of cmdline options (CLBZ#5509) - tools: crm_shadow --commit now works with CIB_file - scheduler: expired results shouldn't affect state - scheduler: avoid remap log if not remapped - scheduler: always treat degraded results as success - watchdog-fencing: correctly derive timeout with topology - watchdog-fencing: terminate dangling timer before watchdog-waiting - scheduler: ensure resource history entries have an XML ID - crm_resource: Add the --element option for --get-parameter - libcrmcommon: Fix problems with pcmk__output_and_clear_error. - libcrmcommon: Fix memleak in pcmk__output_xml_add_node_copy() - Rebase: * bug-806256_pacemaker-log-level-notice.patch * pacemaker-cts-StartCmd.patch- Update to version 2.1.5+20230220.c4f6c191a: - libcrmcommon: Fix handling node=NULL in pcmk__attrd_api_query. - fencer: Avoid double source remove of op_timer_total (rh#2166967) - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.5+20230216.ed8bc68bc: - scheduler: count only containers' active nodes for bundles- Update to version 2.1.5+20230208.231b58a40: - cts: Add a basic cts-attrd program. - daemons: Modify a couple log messages for testing. - daemons: Add a -l argument to pacemaker-attrd. - daemons: Skip connecting to the CIB in attrd standalone mode. - daemons: Add some additional errors for when startup fails. - daemons: Add a standalone argument for attrd. - fencer: Prevent double g_source_remove of op_timer_one (rh#2166967) - tools: Don't allow use of --name and --pattern at the same time. - tools: Add sync point support to crm_attribute. - tools: Add pattern support to attrd_updater. - scheduler: handle cleaned migrate_from history correctly (bsc#1182313) - scheduler: unknown_on_node() should ignore pending actions (bsc#1182313) - daemons: Fix pointer management in attrd_client_update. - scheduler: improve migration history validation- Update to version 2.1.5+20230201.11c15a89f: - crm_mon: Display the descriptions in crm_mon output - libcrmcommon: parse_op_key() can now handle confirmed notifications - xml: change resources-related schemas and bump PCMK__API_VERSION - crm_resouce: Add the description to the XML output of crm_resource --list - python: Disable a couple more pylint warnings. - scheduler: correctly choose container vs inside resource for interleaving - scheduler: ignore node when getting resource inside container- Update to version 2.1.5+20230125.95bb4788a: - libpacemaker: avoid assertion failure if a node_state entry doesn't have an uname yet (bsc#1207319) - libpacemaker: unify bailing out in pcmk__inject_node() (bsc#1207319)- Update to version 2.1.5+20230124.a29e52df9: - executor: fix regression in remote node shutdown - scheduler: avoid memory leak when finding compatible instance- Update to version 2.1.5+20230123.f414133a7: - libcrmcommon: avoid infinite regression when logging v1 patchsets - controller: clear last failure from CIB even if executor state unavailable - scheduler: downgrade message about instance where it shouldn't be - controller: use %u with g_hash_table_size() - fenced: use enum fenced_target_by consistently - scheduler: update Chinese translation- Update to version 2.1.5+20230117.dd503ddbb: - libcrmcommon: bump feature set for crm_attribute --pattern with -v/-D and permanent attributes - resource agents: add depth="0" to validate-all metadata- Update to version 2.1.5+20230111.39e62b78e: - rpm: Add a python3-pacemaker subpackage. - python: Add a private pacemaker._cts module. - python: Add the pacemaker.buildoptions module. - python: Add the pacemaker.exitstatus module. - python: Add the very beginnings of a pacemaker python library.- Update to version 2.1.5+20230110.292d6bf6b: - libpe_status: clarify more pointer arguments - libcrmcommon: Improve prefix spacing in XML logging functions- Update to version 2.1.5+20221220.51cc0bfbc: - scheduler: order cloned fence device probes same as other clones - libcrmcommon: Remove colon and space from log line after prefix - libcrmcommon: Avoid out-of-bounds string access in log_data_element - libcrmcommon: Don't use aliases in XML logging functions - libcrmcommon: pcmk__output_xml_add_node() -> *_copy() - libcrmcommon: Assert on failed copy in copy_xml() - tools: Allow patterns for permanent attribute in crm_attribute.- Update to version 2.1.5+20221212.b4db7685a: - cts-scheduler: update test for preventing inactive instances from starting if probe is unrunnable on any nodes (bsc#1206263) - scheduler: prevent inactive instances from starting if probe is unrunnable on any nodes (bsc#1206263) - libpacemaker: ensure any pending recurring monitor gets updated if it fails (bsc#1206263) - cts-scheduler: update test for preventing a leftover pending monitor from causing unexpected stop of other instances (bsc#1206263) - scheduler: prevent a leftover pending monitor from causing unexpected stop of other instances (bsc#1206263) - cts-scheduler: add test for preventing a leftover pending monitor from causing unexpected stop of other instances (bsc#1206263)- Update to version 2.1.5+20221212.074e9c860: - tools: Support setting transient utilization attrs from crm_attribute. - scheduler: Unpack transient utilization attributes. - daemons: Add support for transient utilization attributes. - libcrmcommon: Add a block attr to an IPC update request. - tools: Add a -z option to attrd_updater.- Update to version 2.1.5+20221208.cd0f91f51: - libcrmcommon: Warn if deprecated command line formats are used. - controller: Don't nack joining node due to old CIB - based: Successful CIB schema upgrade should always force a write - based: Don't write to disk if CIB replace failed - tools: Fix trivial memory leak in cibadmin - based: Fix double free() in pacemaker-based.c - libpe_status: avoid memory leak on regular expression error - controller: Avoid election storm due to incompatible CIB - libpacemaker: don't regfree() if regcomp() failed - libpe_status: don't try to use compiled expression if regcomp() failed - libcrmcommon: don't regfree() if regcomp() failed - controller: Avoid error if a join request is received after fencing - controller: Don't double-increment failcount for simulated failures - daemons, tools: Unregister formats before exiting - scheduler: Advertise metadata option in scheduler help output - fencer: Use formatted output in pacemaker-fenced - fencer: Correct refresh logic in update_cib_cache_cb() - controller: Reduce CIB deletions during reprobe - controller: Don't reprobe remotes when target is only cluster node - add zh_cn translation for error (#2957) - tools: Validate scope in cibadmin.c - tools: Add status as valid cibadmin scope - tools: Fix action danger check in cibadmin - libcrmcommon: Null-check return value of pcmk__uid2username() - daemons: Support cluster-wide sync points for multi IPC messages. - tools: Fix scope/xpath parsing in cibadmin - libcrmcommon: Bump feature set for daemon formatted output - executor: Use formatted output in pacemaker-execd - pacemaker-based: Use formatted output in pacemaker-based - controller: Use formatted output in pacemaker-controld - controller: Node exits fatally in response to join nack - libcrmcommon: Retry pcmk_connect_ipc() if EAGAIN - controller: Remove CRM_CHECK in update_dc for no current DC - Pacemaker Explained: Clarify resource maintenance mode (CLBZ#5382) - libpe_status: Node maintenance mode sets resource maintenance flag - libpe_status: crm_mon shows "maintenance" for rsc maint meta - schemas: resources schema supports maintenance attribute - daemons: Check for NULL in attrd_do_not_expect_from_peer. - tools: crm_mon fencing history is now in high resolution - libpe_status: Use correct guint format specifier for failed action - add zh_CN translation for pacemaker-schedulerd libexec - daemons: Handle crm_ipc_new returning a NULL. - tools: crm_mon now shows last_update origin - schema: Add update origin to crm_mon output - tools: crm_mon --daemonize should update when disconnected - tools: Improve log messages in crm_mon.c - tools: Remove an output format-based sleep() call from crm_mon - tools: Include Pacemaker status in crm_mon output - libcib: Preserve return code in cib__signon_query() - libpacemaker: Use correct pcmkd state format in XML message - daemons: Avoid infinite confirm loops in attrd. - daemons: Handle an attrd client timing out. - attrd: Fix removing clients from the waitlist when they disconnect. - daemons: Handle cluster-wide sync points in attrd. - daemons: Keep track of #attrd-protocol from each peer. - daemons: Respond to received attrd confirmation requests. - libpacemaker: Show pcmkd status if we can't get native CIB - libpacemaker: Check conn status in pcmk__get_fencing_history() - libcib: Allow cib client reuse in cib__signon_query() - tools: Add --wait=cluster option to attrd_updater. - libpacemaker: Improve invalid reply type logging in cluster queries - includes: Bump CRM_FEATURE_SET for local sync points. - daemons: Add support for local sync points on clearing failures. - daemons: If a client disconnects, remove it from the waitlist. - daemons: Add support for local sync points on updates. - tools: Add --wait= parameter to attrd_updater. - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.5+20221208.a3f44794f (Pacemaker-2.1.5): - libs: Check for NULL in various functions. - daemons: Check for NULL in attrd_create_attribute.- Update to version 2.1.4+20221122.631339ca5 (Pacemaker-2.1.5-rc3): - libcrmcommon: Wait for ACKs from the attrd clear failure command. - daemons: Fix expanding ++ and += in multi-update IPC messages. - daemons: Add host attr to the children of multi-update IPC messages. - daemons: Copy all attrs from parent to child in multi-update IPC.- Update to version 2.1.4+20221115.d3699a621 (Pacemaker-2.1.5-rc2): - tools: quote timestamp in operation history output (bsc#1205279, bsc#1204581) - tools: Fix setting utilization attrs with crm_attribute. - cts-cli: add test for text output of crm_resource --list-operations/-O (bsc#1205279, bsc#1204581) - daemons: Set an attribute on the child of a multi-attr message. - scheduler: consider roles when blocking colocation dependents - scheduler: when blocking starts, block children's starts as well- Update to version 2.1.4+20221108.ba419204a: - tools: crm_resource --constraints now accepts --force - tools: crm_resource --constraints --recursive - tools: fix syntax on resetting options in crm_resource (bsc#1198409)- Update to version 2.1.4+20221031.0b3656e85: - scheduler: prioritize group colocations properly - scheduler: ignore empty groups in pcmk__add_colocated_node_scores() - scheduler: properly consider effect of "with group" colocations - scheduler: ensure group methods handle empty groups - scheduler: improve error handling when unpacking resources- Update to version 2.1.4+20221024.844c0640d (Pacemaker-2.1.5-rc1): - fencer: compare fence action names case-sensitively - fencer: check "on" support when checking whether device can fence - fencer: improve eligibility logs - fencer: improve argument validation and variable names- Update to version 2.1.4+20221012.44db4ca5e: - libpacemaker: Correct sys_from default in pacemakerd_health() - tools: crm_mon --one-shot fails while pacemaker is shutting down (CLBZ#5501) - libpacemaker: Fix pacemakerd-health XML output - libpacemaker: HTML formatter for pacemakerd-health message - libpacemaker: Memory leak in pcmk_cluster_queries.c:ipc_connect() - libpacemaker: pacemakerd-health message accepts state - libpacemaker: Correct default for pinged_buf in pacemakerd_event_cb - libcrmcommon: Check invalid time value in pacemakerd API reply - pacemaker-remoted: fix detection of __progname - libcrmcommon: avoid memory leak in crm_time_subtract() - fencer: skip "on" in remapped reboot when agent doesn't support it - fencer: skip "on" in remapped reboot when pcmk_reboot_action="off"- Update to version 2.1.4+20221010.79db170a4: - controller: connect before updating node attribute list - controller: log attribute errors correctly- Update to version 2.1.4+20221006.d82151006: - various: remove support for versioned agent parameters- Update to version 2.1.4+20221006.5cb4f0b94: - extra: skip ifspeed agent's host check at default check level - extra: avoid deprecated command-line option in ifspeed agent - extra: improve messages in ocf:pacemaker:ifspeed agent - resources: ifspeed iface parameter is not required - resources: update ifspeed agent to OCF 1.1 - extra: update ifspeed agent to avoid legacy terminology- Update to version 2.1.4+20221005.8c568f599: - scheduler: improve resource action ordering messages- Update to version 2.1.4+20220929.708e532ba: - fencer: don't try to free NULL GString - scheduler: don't demote on expected node - libcrmcommon: assert on UUID generation failure- Update to version 2.1.4+20220928.4690461db: - fenced: Add automatic_list devices to unfencing timeout when topology is presents. - controld: Add missing option descriptions - libcrmcommon: copy result reason/stdout/stderr correctly - executor: work around flag value mistake - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Rename libraries in accordance to the packaging guidelines to solve potential migration issue on SLE 15 SP5 (bsc#1203744)- Update to version 2.1.4+20220920.4313595c6: - controller: add messages when getting agent metadata - liblrmd: use resource ID for metadata actions when available - liblrmd: consider invalid agent specification a fatal error - libcrmcommon: map ENODEV and ENOENT to CRM_EX_NOSUCH - libstonithd: return CRM_EX_NOSUCH for bad agent namespace - controller: pre-load agent metadata asynchronously - controller: improve messages when metadata cache update fails - controller: add failsafe for no executor connection - libcrmcommon: deprecate CRM_OP_LRM_QUERY - controller: ignore CRM_OP_LRM_REFRESH - fencing: use requested timeout with RHCS metadata actions - fencing: use a default timeout with metadata and validate - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.1.4+20220919.c650a480e: - libcrmcommon: Ignore non-comment/element nodes in pcmk__xml_log() - libcrmcommon: Prevent buffer overflow in pcmk__element_xpath() (rh#1822125) - libpe_status, tools: Show guest node host only with --show-detail (CLBZ#5373) - libpe_status, tools: Show container node in GuestOnline in crm_mon (CLBZ#5373)- Update to version 2.1.4+20220919.9ba3fcd8a: - libpe_status,tools: work with -D_TIME_BITS=64- Update to version 2.1.4+20220915.2e7d3dc92: - tools: Add locked_to= to resources XML output - schemas: Add locked_to= to resources API schema- Update to version 2.1.4+20220913.76eb273f1: - schemas: Add schema for crm_error - libcrmcommon: Bump feature set for crm_error formatted output - tools: Use formatted output in crm_error- Update to version 2.1.4+20220913.9baec5d68: - fenced: Skipping devices that don't support the on action.(Fix:CLBZ#5495)- Update to version 2.1.4+20220912.dab392c41: - libpe_status: Deprecate "collocated" meta attribute for groups - libpe_status: Deprecate "ordered" meta attribute for groups - libpacemaker: Deprecate {with-,}rsc-instance in coloc constraints - libpacemaker: Deprecate {first,then}-instance in order constraints - schemas: Deprecate pacemaker-next and constraints-next- Update to version 2.1.4+20220912.99c8b14fc: - controller: Resource reordering doesn't cause transition abort- Update to version 2.1.4+20220912.7bce48ad0: - libcrmcommon: lower clients-at-exit message to warning - scheduler: Fix types of arguments to formatted output functions. - schemas: Make score[-attribute] optional for rules - schemas: Add missing valid options for duration and date_spec - schemas: Add missing valid date expr rule options - tools: Use dynamic widths in crm_error list - tools: crm_error should use last rc format given - tools: List all RCs if none are specified for crm_error - crm_error: Handle negative return code arguments - scheduler: simplify some messages with node names - Rebase: * bug-943295_pacemaker-lrmd-log-notice.patch- Update to version 2.1.4+20220907.aa8d5599a: - resources, tools: Drop SystemHealth, ipmiservicelogd, ...- Update to version 2.1.4+20220906.71885fb7c: - schemas: crm_resource --validate validation fails (rh#2123727)- Update to version 2.1.4+20220901.df90a631e: - tools: Don't use fprintf in attrd_updater. - daemons: Don't attempt to update the delay of an unknown attr. - tools: If -B/-Y is given to attrd_updater, check for -d as well. - daemons: Initial new server-side IPC support in attrd. - libpacemaker: Standardize rule check error processing - libpacemaker: EOPNOTSUPP for date_spec with moon in rule check - tools: Improve crm_rule invalid date error message - scheduler: disallow recurring reload-agent, migrate_from, and migrate_to- Update to version 2.1.4+20220831.a81e8740b: - SysInfo: Validate that min_disk_free contains an integer optionally followed by a unit - SysInfo: Fix typo - SysInfo: Implement the reload-agent action - SysInfo: Add reloadable to appropriate entries - SysInfo: Enumerate appropriate values - SysInfo: Add unique-group to appropriate entries - SysInfo: Remove unique from all entries - SysInfo: Update OCF version to 1.1- Update to version 2.1.4+20220830.68c64fbe1: - libcrmcommon: Wait for ACKs from the attrd refresh command.- Update to version 2.1.4+20220829.08693870a: - libcib: cib__signon_query(): NULL-check correct pointer - libcrmcommon: Out-of-order pcmk__rc_info array - scheduler: rename pcmk__native_allocate() - pacemaker-based: update primary terminology in messages and comments- Update to version 2.1.4+20220825.c190d0d37: - fencer: improve self-fencing logs - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.1.4+20220825.b676a8701: - libcrmcommon: NULL-check pcmk__numeric_strcasecmp() - libpe_status: Let pe__cmp_node_name() handle NULL values - Rebase: * pacemaker-Wno-format-signedness.patch- Update to version 2.1.4+20220824.ad5b410ae: - controld: Check all crm_is_true cases for globally-unique - controld: Update for OCF 1.1 - resources: Use runstatedir in controld RA - Rebase: * bug-977201_pacemaker-controld-self-fencing.patch- Update to version 2.1.4+20220823.7f07bda79: - fenced: DC node fencing is unconditionally relayed.- Update to version 2.1.4+20220822.367ae2d64: - libcrmcommon: Validate env option strings- Update to version 2.1.4+20220822.0b28d46b2: - cts: Reimplement cts-regression in Python - libcrmcommon: Free the output object if fopen fails. - libcrmcommon: Set formatters to NULL after freeing it. - libcrmcommon: Don't allow registering a format with an empty name. - ClusterMon: Update deprecated -h flag - ClusterMon: Add OCF_CHECK_LEVEL handling in the validate-all action - ClusterMon: Update resource-agent version to 1.2 - ClusterMon: Add unique-group to appropriate entries - ClusterMon: Remove unique from all entries - ClusterMon: Update OCF version to 1.1- Update to version 2.1.4+20220817.ad32bc505: - rpm: Requires python-psutil for cts - pacemakerd: improve core file limit messages - fencer: log target consistently - fencer: improve error-checking of request XML - fencing: rename fence action IDs- Update to version 2.1.4+20220816.71d8af5c0: - daemons: Correct an error message. - libcrmcommon: crm_generate_ra_key should fail if std or key are missing.- Update to version 2.1.4+20220810.b794021e6: - tools: correct minimum execution status shown by crm_resource -O (bsc#1205279, bsc#1204581)- Update to version 2.1.4+20220808.e445c8a8b: - libpacemaker: Free the CIB copy in pcmk__status. - pacemaker: Free the CIB copy in pcmk__output_cluster_status. - libpacemaker: Free the working set in pcmk__output_cluster_status. - libcrmcommon: drop DOCTYPE from daemon option meta-data - pacemakerd: lower level of messages about core file size- Update to version 2.1.4+20220808.799e2c327: - executor: don't finalize a failed monitor initiation twice- Update to version 2.1.4+20220808.986d22dd5: - libcrmcommon: Fix an IPC-related memory leak. (bsc#1208544)- Update to version 2.1.4+20220802.1e2d5eacf: - tools: Restrict ourselves to XML elements in command_query. - tools: Support regexes with crm_attribute --delete and --update. - libcrmservice: fix the trace logging about finishing reading stdout/stderr - scheduler: avoid "left-hand"/"right-hand" terminology in colocation logs- Update to version 2.1.4+20220725.bbb0e1b04: - tools: Add the -q option back to attrd_updater. (rh#2110452)- Update to version 2.1.4+20220725.90ed6fe66: - daemons: Fix a bug processing child XML messages in attrd.- Update to version 2.1.4+20220720.51519cdf8: - HealthCPU: Complete implementation of the reload-agent action - libcrmcommon: Check for NULL input - ACLs: bail out early when creating element that'll be denied anyway- Update to version 2.1.4+20220720.a0a66eefe: - scheduler: calculate digests based on the crm_feature_set version of the cib if there's no corresponding operation history entry - libpacemaker: correctly find the best operation history entry to calculate digests for - scheduler,controller: consistently calculate and record secure digest based on all parameters only except private ones - scheduler: restart a resource configured with extra operation parameters upon changes of any parameters- Update to version 2.1.4+20220720.3b57f9b58: - scheduler: avoid container ping-pong - Rebase: * pacemaker-nagios-plugin-dir.patch * pacemaker-Wno-format-signedness.patch- Update to version 2.1.4+20220719.6bf20e794: - tools: Fix a segfault in error handling in crm_resource. (clbz#5496, bsc#1206761)- Update to version 2.1.4+20220718.f11308913: - do unfencing equally for cluster-nodes & remotes- Update to version 2.1.4+20220714.2ab4412e6: - HealthCPU: Validate that yellow_limit and red_limit are integers - HealthCPU: Update resource-agent version to 1.1 - HealthCPU: Add OCF_CHECK_LEVEL handling in the validate-all action - HealthCPU: Implement the reload-agent action - HealthCPU: Add reloadable to appropriate entries - HealthCPU: Add unique-group to appropriate entries - HealthCPU: Remove unique from all entries - HealthCPU: Update OCF version to 1.1- Update to version 2.1.4+20220714.cbbaf0b40: - daemons: Convert schedulerd's hello message into a handler. - daemons: Convert schedulerd's one message to new IPC handling. - daemons: Use new IPC handling for unknown schedulerd messages.- Update to version 2.1.4+20220713.b162888bf: - scheduler: Resolves an issue where STONITH devices cannot be registered.- Update to version 2.1.4+20220712.37b09e240: - libcrmcommon: Remove double "error:" prefixes from messages. - daemons: Convert pacemakerd's shutdown message to new IPC handling. - daemons: Convert pacemakerd's ping message to new IPC handling. - daemons: Use new IPC handling for some pacemakerd messages. - scheduler: calculate group promotion scores correctly- Update to version 2.1.4+20220707.4d02a795b: - controller: log an info instead of a warning for a stonith/shutdown that is unknown to the new DC (bsc#1198715)- Update to version 2.1.4+20220707.5e75c2173: - schemas: update crm_resource --why schema for new health check - schemas: simplify crm_resource --why schema - tools: correct crm_resource --why schema to match actual output - tools: crm_resource --why now checks node health status - tools: crm_resource is-managed check should use meta-attribute table - tools: crm_resource target-role check should use meta-attribute table- Update to version 2.1.4+20220706.6b53629d2: - libcrmcommon: no need for "Cleaning up memory" message - libcrmservice: fix log message arguments - libcrmcommon: don't try to log NULL - various: improve messages that use pcmk__s() - fencer: improve topology level validation - scheduler: improve validation of resource XML - libcib: validate requests better - libcrmcommon: validate pacemaker-schedulerd messages better - libcrmcommon: validate pacemakerd messages better - libcrmcommon: validate controller IPC messages better - libcrmcommon: validate attribute manager IPC messages better - pacemaker-schedulerd: validate IPC messages better - pacemakerd: validate IPC messages better - controller: improve logs when routing messages - controller: validate transition requests better - controller: validate controller requests better - controller: validate execution requests better- Update to version 2.1.4+20220705.e7507cee6: - libstonithd: Add the "Agent not found..." message to formatted output. (rh#2102292)- Update to version 2.1.4+20220705.c6fdc985f: - attrd: improve dampening logs - tools: improve error message wording in crm_resource- Update to version 2.1.4+20220630.8b0f865f4: - Always null-check result in stonith__rhcs_get_metadata (rh#2102292) - Use failed action result in rhcs_validate and _get_metadata (rh#2102292) - Use correct boolean in stonith__validate_agent_xml (rh#2102292)- Update to version 2.1.4+20220628.c791e26c4: - scheduler: don't prefer greater anti-colocation when ordering instances for assignment - scheduler: compare instance numbers not IDs for assignment order- Update to version 2.1.4+20220628.36c594099: - daemons: Atomically set certain attrs in controld.- Update to version 2.1.4+20220628.2120dad10: - cts-scheduler: add missing last-rc-change attributes to the faked lrm_rsc_op entries (bsc#1182313) - scheduler: a failed migrate_from always matters for the source if the resource has no newer state there (bsc#1182313) - scheduler: a failed migrate_to always matters for the source if there's no newer non-monitor operation there (bsc#1182313) - scheduler: use the consistent way to check whether there's any newer non-monitor operation on the source (bsc#1182313) - cts-scheduler: add missing last-rc-change attributes to the faked lrm_rsc_op entries (bsc#1182313) - cts-scheduler: update expected output for changes of handling a failed migrate_to (bsc#1182313) - scheduler: a failed migrate_to always matters for the target if the resource has no newer state there (bsc#1182313) - scheduler: use the consistent way to check whether resource has newer state on the target (bsc#1182313) - cts-scheduler: prevent resources from running on multiple nodes due to partial live migration (bsc#1182313) - scheduler: prevent resources from running on multiple nodes due to partial live migration (bsc#1182313) - cts-scheduler: update expected output for changes of handling a successful migrate_to (bsc#1182313) - scheduler: a successful migrate_to no longer matters for the target if any newer probe/monitor indicates the resource was not running there (bsc#1182313) - scheduler: a successful migrate_to no longer matters for the target if there's any newer non-monitor operation there (bsc#1182313) - scheduler: a successful migrate_to no longer matters for the source if there's any newer non-monitor operation there (bsc#1182313) - scheduler: add a parameter to pe__is_newer_op() indicating whether the two operations are on the same node by default (bsc#1182313) - libpacemaker: record migrate_to/migrate_from separately from last/last_failure lrm_rsc_op entries (bsc#1182313)- Update to version 2.1.4+20220627.812442e7f: - tools: Don't output "(null)" in crm_attribute's quiet mode. (rh#2099331)- Update to version 2.1.4+20220615.ce53c2c3f: - libcrmcommon: use proper size for snprintf() - Allow acl_target and acl_group elements to take a 'name' attribute to use a name different from 'id' - Add ACL group support - daemons: Allow setting multiple node attributes. - libcrmcommon: finish XML for libpacemaker public API function errors - libcrmcommon: Wait for replies to attrd update messages. - libstonithd: use case-sensitive comparisons where appropriate - daemons: Track the minimum attrd protocol version. - remote: Shutdown if tls goes down while waiting for shutdown all-clear - libcrmcommon: fix a wrong separator in the .warning CSS declaration (bsc#1196673, bsc#1203367, fate#320759) - tools: report CRM feature set of nodes by crm_mon (bsc#1196673, bsc#1203367, fate#320759) - controller: record CRM feature set as a transient attribute (bsc#1196673, bsc#1203367, fate#320759) - schemas: copy API schemas in preparation for changes (bsc#1196673, bsc#1203367, fate#320759) - cts-cli: fix too greedy version filter (bsc#1196673, bsc#1203367, fate#320759) - tools: Support regexes with --query in crm_attribute. - tools: Support querying all attributes on a given node. - nls: format of XML-escaped string - scheduler: do not enforce resource stop if any new probe/monitor indicates the resource was not running on the target of a failed migrate_to (bsc#1196340) - scheduler: do not enforce resource stop on a rejoined node that was the target of a failed migrate_to (bsc#1196340) - scheduler: do not enforce resource stop if any new probe/monitor indicates the resource was not running on the target of a failed migrate_to (bsc#1196340) - scheduler: find_lrm_op() to be able to check against a specified target_rc (bsc#1196340) - cts-scheduler: fix on_node attribute of lrm_rsc_op entries in the tests (bsc#1196340) - scheduler: is_newer_op() to be able to compare lrm_rsc_op entries from different nodes (bsc#1196340) - scheduler: compare ids of lrm_rsc_op entries case-sensitively (bsc#1196340) - scheduler: functionize comparing which lrm_rsc_op is newer (bsc#1196340) - scheduler: do not enforce resource stop on a rejoined node that was the target of a failed migrate_to (bsc#1196340) - tools: Fix deleting by pattern in crm_attribute. - tools: Use new attrd IPC interface in various tools. - daemons: Use new IPC interface in pacemaker-controld... - daemons: Use new IPC interface in pacemaker-attrd... - tools: Convert attrd_updater to using new attrd IPC. - Add pacemaker-controld Chinese translation - fencer: avoid redundant result in XML - fencing: add device/level description to configuration change notifications - fencing: always add notification type to client notification data - fencer: always add device ID to level removal notification - fencer: always add device ID to level addition notification - fencer: always add device ID to device addition notification - fencer: avoid memory leaks when processing topology requests - tools: respect crm_mon --show-detail for fencing actions - fenced: Don't ignore CIB updates if stonith-enabled=false - Fix print spec for unsigned int count - libcrmcommon: Process the cmdline before saving as a request. - tools: add more detail to stonith_admin error messages - daemons: Use formatted output in pacemaker-attrd. - Convert pacemaker-attrd to use glib for command line. - tools: Convert iso8601 to using glib for command line. - libcib: Check for NULL before calling g_ascii_strdown. - fencing: prefer same delegate when checking equivalent fencing - fencing: show delegate for later successful fencing actions - fencer: make completion logs more consistent - fencer: deprecate stand-alone mode - tools: stonith_admin should display device/level errors - executor: improve messages after fencing connection loss - fencing: delegate shouldn't matter when checking equivalent fencing - controller: downgrade successful fencing logs to info - fencer: downgrade topology failure message to info level - fencer: lower eligibility logs to info level - fencer: log raw XML at trace level - fencer: log device only if not null - Rebase: * bug-812269_pacemaker-fencing-device-register-messages.patch- Update to version 2.1.4+20220615.dc6eb4362 (Pacemaker-2.1.4)- Update to version 2.1.3+20220608.d7fce3868: - libstonithd: pull exit reason directly from history replies - fencer: assume unknown status from older fencers' history replies - resources: add SystemHealth parameter to its meta-data - resources: remove no-longer-relevant DTD reference from meta-data - resources: typo in HealthSMART meta-data- Update to version 2.1.3+20220603.ea9bebf6c (Pacemaker-2.1.4-rc1): - fencer: avoid use-after-free with self-fencing and topology - fencer: get target-by-attribute working again - libcrmcommon: fix a wrong separator in the .warning CSS declaration - fencer: avoid memory leaks when processing topology requests - Fix print spec for unsigned int count - fencing: delegate shouldn't matter when checking equivalent fencing- Update to version 2.1.3+20220601.da2fd79c8 (Pacemaker-2.1.3)- Use the project upstream name for the -devel subpackage (rename libpacemaker-devel to pacemaker-devel). - Drop libpacemaker3-cluster separation, since it double-ships a file that is already in libpacemaker3 - Rename libpacemaker3 to pacmekaer-libs following packages like xrootd-libs et al so it does not get picked on by rpmlint [boo#1191752].- Update to version 2.1.2+20220526.b387f8972: - libcrmcommon: avoid memory leak if IPC server fails to run - nls: format of XML-escaped string- Update to version 2.1.2+20220518.dff7c3a72 (Pacemaker-2.1.3-rc2): - schemas: Use fence-event-2.15.rng (rh#2086230) - scheduler: don't support versioned instance attributes in operations - schemas: allow Promoted/Unpromoted in crm_resource output- Update to version 2.1.2+20220511.0bf080da3: - tools: Set options.command when "attrd_updater -Y" is used.- Update to version 2.1.2+20220427.c01a90fd2: - tools: Hook up the verbosity flag in crm_attribute. (gh#ClusterLabs/pacemaker#2696, bsc#1224183) - tools: Honor CIB_file when doing node name lookups in crm_attribute. - tools: Handle a remote node's name differing from its hostname. - libcrmcommon: Fix a bug in processing multiple IPC messages. - libcrmcommon: Add EAGAIN as a return code from crm_ipc_read. - libcrmcommon: Handle IPC ACKs from proxied connections too. - fenced: Correctly log the total fencing timeout. - scheduler: make multiple-active="stop_unexpected" actually work - libcib: Check for NULL before calling g_ascii_strdown.- Update to version 2.1.2+20220421.a988afd4e (Pacemaker-2.1.3-rc1): - libpe_status: deprecate node_ping - fencer: avoid core dump at exit - fix Chinese garbled - fencer: don't use constant within translatable string literal - libcrmcommon: fix NLS issues with option meta-data- Update to version 2.1.2+20220414.8cfa69660: - tools: set command for `crm_resource -q/--query-xml` before changing any options (bsc#1198409) - tools: prevent possible crm_resource segfaults if multiple commands are specified (bsc#1198409) - tools: set commands in crm_resource before changing any options (bsc#1198409)- Update to version 2.1.2+20220412.826f287ac: - schemas: update some API schemas for node health change - tools: add node health to crm_mon output - libpe_status: tweak HTML output for node names - libcrmcommon: tweak HTML CSS - libpe_status: show node status components in separate HTML spans - libpe_status: remove stray space from HTML class name- Update to version 2.1.2+20220412.bd19767c9: - libcib: Fix handling the return value of cib_internal_op.- Update to version 2.1.2+20220408.6321f6534: - libcrmcommon: bump feature set for multiple-active=stop_unexpected - scheduler: implement multiple-active=stop_unexpected - scheduler: log a warning if invalid value is given for multiple-active- Update to version 2.1.2+20220407.844c3972e: - scheduler: allow-unhealthy-nodes resource meta-attribute- Update to version 2.1.2+20220407.56d93678c: - tools: Handle an error case in crm_attribute. - tools: Convert crm_ticket to using glib for command line.- Update to version 2.1.2+20220405.1ec3db01e: - schemas: Add host= to crm_attribute schema. - libpacemaker: Don't output attribute settings for blank strings. - tools: Override the attribute text message in crm_attribute. - tools: Use the new attribute message in attrd_updater. - libpacemaker: Add host to the attribute message. - tools: Add formatted output boilerplate to attrd_updater. - fencer: drop useless logs- Create libltdl/config before autoreconf to fix an incompatibility with autoconf 2.71- Update to version 2.1.2+20220331.1ad8bbddd: - tools: Fix the -v option to attrd_updater.- Update to version 2.1.2+20220329.efdcb0bbf: - resources: Add an OCF_RESKEY_dampen parameter to HealthSMART. - resources: Mark HealthSMART parameters as reloadable. - resources: Also fix HealthSMART_monitor. - resources: Fix a bug in init_smart in HealthSMART. - resources: Fix the stop action in HealthSMART. - resources: Add an OCF_RESKEY_smartctl parameter to HealthSMART. - resources: update HealthSMART agent for OCF 1.1- Update to version 2.1.2+20220328.24d87d0b2: - tools: Do not allow certain operations on clone instances. - tools: Fix one method of restarting a cloned group. - tools: Fix restarting clone instances in crm_resource. (rh#1930578) - tools: If crm_resource is given an invalid node, error. - tools: Fix one way to restart a cloned primitive. - tools: Fix restarting implicit bundled resources without a host. - tools: Fix double free errors in crm_resource. - tools: Compare host names case insensitively...- Update to version 2.1.2+20220328.2dd22a9d7: - tools: Update a couple option help strings in attrd_updater. - Convert attrd_updater to use glib for cmdline handling.- Update to version 2.1.2+20220322.5129e5ca5: - tools: Add XML schema for the crm_attribute output. - tools: Fix indentation on crm_attribute help output. - tools: Finish using formatted output in crm_attribute. - tools: Switch crm_attribute to use formatted output. - schemas: Add a schema for the new crm_rule output. - tools: Allow passing -r to crm_rule more than once. - tools: crm_rule is no longer experimental. - tools: Convert crm_rule to formatted output. - rpm: Remove the coverage support from the spec file.- Update to version 2.1.2+20220309.d007690cb: - cibadmin to be able to "render" access mode for selected user- Update to version 2.1.2+20220307.022ae2d5f: - rpm: depend on gettext-tools instead of gettext - scheduler: Take case into account when finding resources. - scheduler: improve fencing-related messages- Update to version 2.1.2+20220304.b2c456e77: - pacemakerd: override locale earlier in start-up - libcrmcommon: initialize NLS only once - tools: Fix a corner case in crm_mon outputting. - tools: Always output to the HTML dest file. (clbz#5492) - scheduler: shutdown locks apply to group members, not group itself- Update to version 2.1.2+20220301.6981b549a: - libpacemaker: Fix a segfault in crm_mon.- Update to version 2.1.2+20220301.a5db0024f: - scheduler: properly set data set flags when scheduling actions - scheduler: determine cluster status more efficiently- Update to version 2.1.2+20220222.250a6b0d7: - rpm: add nls option- Update to version 2.1.2+20220217.578a0bc42: - libpacemaker: Add a public function for one-shot crm_mon mode.- Update to version 2.1.2+20220216.41a118c10: - NLS: expand translations to all executables - libcrmcommon: match allocation and free functions - executor: improve alert completion messages - libcrmservice: improve exit reasons for timeouts/signals - libcrmservice,tools: add more detail to exit reasons when available - controller: don't retry an invalid remote key - controller,fencer: add more detail to exit reasons when available - scheduler: improve "friendly" failed action output - libcrmservice: improve timeout message for alert agents - fencing: assert that fencing actions are non-recurring - libcrmservice: check parameter for NULL before dereferencing it - scheduler: improve messages for action configuration changes- Update to version 2.1.2+20220215.aa3779ec6: - Add pacemaker(pacemaker-based) resource translatefile- Update to version 2.1.2+20220215.c0ac153b7: - libcrmcommon: Escape option metadata descriptions. (rh#2050259) - libcrmservice: Escape systemd agent descriptions. (rh#2050259)- Update to version 2.1.2+20220215.80e43ec90: - libcrmservice: Additional metadata fix for systemd templates. (rh#2045096)- Update to version 2.1.2+20220214.81e6a29e4: - daemons: Add a longdesc to the pcmk_host_list parameter. - daemons: Put shortdesc after longdesc for parameters, too. (rh#2049722) - resources: Put shortdesc after longdesc in agents. (rh#2049722)- Update to version 2.1.2+20220207.58dccbae0: - libcommon: avoid race when process checked while going away - pkg-config: libpacemaker requires libstonithd and libcrmservice. - scheduler: assert on notification entry memory errors - scheduler: avoid notification problems if node names are unknown- Update to version 2.1.2+20220126.16c1bab10: - controller: correctly match "node down" events - controller: improve meta-data warnings - scheduler: assert on memory allocation error - pacemakerd: improve messages for subdaemon handling- Update to version 2.1.2+20220126.57e783b4b: - libstonithd: avoid controld shutdown hanging - pacemakerd: have signal-handler take care of lost processes - scheduler: avoid memory leak when displaying clones - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.2+20220120.3f0398825: - scheduler: implement utilization for bundles - fencer: reset op result before grabbing new one (rh#1470834) - schemas: update fence-event API schema for recent change (rh#1470834) - fencing: display exit reasons with failed fencing events (rh#1470834) - fencing: return exit reason with fencing history (rh#1470834) - fencer: track full result in fencing history (rh#1470834)- Update to version 2.1.2+20220119.2c937a4c0: - ipc_client: use libqb async API for connect - pacemakerd: keep tracking pacemakerd for liveness - pacemakerd: tweak systemd unit respawn settings- Update to version 2.1.2+20220119.eec504705: - libcrmservice: improve exit reason for timeouts (rh#1470834) - fencing: improve exit reason for fencing timeouts (rh#1470834) - controller: improve exit reason for internal timeouts (rh#1470834) - controller,libpacemaker: make history XML creation less chatty (rh#1470834) - fencing: don't warn if cluster has no watchdog device (rh#1470834, bsc#1213125) - libcrmcommon: don't say "Unknown error" (rh#1470834) - libcrmcommon: improve description for "not connected" status (rh#1470834)- Update to version 2.1.2+20220118.de344dc33: - tools: Fix the show detail toggle in crm_mon. - corosync: Repeat corosync_cfg_trackstart - tools: Handle output format arguments before doing daemonize mode. - libpacemaker: avoid unnecessary limit on node names- Update to version 2.1.2+20220117.0fb17de37: - tools: get stonith_admin -T option working again (rh#1470834) - libpacemaker: compare fence action names case-sensitively - libpacemaker: return exit reason for fencer connection failures - tools: display failure reasons for stonith_admin fencing commands - libpacemaker: improve result for high-level fencing API - fencing: Don't set stonith action to pending if fork fails- Update to version 2.1.2+20220114.fb2dcedf1: - controller: compare case-sensitively where appropriate (rh#1470834) - controller,tools: improve description for fencing alerts/traps (rh#1470834) - controller: improve messages when handling fencing notifications (rh#1470834) - controller: compare fencing targets case-insensitively (rh#1470834) - scheduler: Use the old RC code to log maskable probe failures.- Update to version 2.1.2+20220113.7c94f0367: - liblrmd: Avoid double-free during notify operation (rh#2039675)- Update to version 2.1.2+20220112.b496b9826: - low: Remove "formerly called..." text in metadata output. - tools: Free metadata memory in crm_resource. - daemons: Use formatted output for metadata in schedulerd.- Update to version 2.1.2+20220112.c894b0aff: - fencing: add exit reason for results without a callback (rh#1470834) - executor: set exit reason if no fencer connection (rh#1470834) - executor: return an error for unsupported fence device actions (rh#1470834) - executor: don't require a fencer connection for probes (rh#1470834) - executor: improve result for fence device probes (rh#1470834) - executor,scheduler: treat "no secrets" fence results as a hard error (rh#1470834) - executor: use full result from fencer for fence actions (rh#1470834) - controller: improve fencing result messages (rh#1470834)- Update to version 2.1.2+20220112.69a63fb99: - scheduler: Handle masked probes in the scheduler. (rh#1506372) - include: Bump feature set to 3.12.0. - scheduler: Display the reason why a clone rsc probe failed. (rh#1506372) - scheduler: Display the reason why a native rsc probe failed. (rh#1506372) - scheduler: Don't output failed resource probes... (rh#1506372)- Update to version 2.1.2+20220112.08200a00e: - scheduler: use plural correctly for fail count messages - libcrmcommon: avoid file resource leak on decompression errors (clbz#5489) - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.2+20211223.94ced1fa9: - fencer: clarify timeout message (rh#1470834) - fencer: free result memory when processing fencing replies (rh#1470834) - fencer: restore check for invalid topology level target (rh#1470834) - fencer: pass full result when sending notifications (rh#1470834) - fencer: add full result to local replies (rh#1470834) - fencer: set exit reasons for fencing timeouts (rh#1470834) - fencer: set exit reason for timeouts waiting for peer replies (rh#1470834) - fencer: grab and log full result when processing peer fencing replies (rh#1470834) - fencer: pass full result in replies to requests (rh#1470834) - fencer: track and log full result when handling requests (rh#1470834) - fencer: handle topology level unregistration errors better (rh#1470834) - fencer: handle topology level registration errors better (rh#1470834) - fencer: pass full result in async command replies (rh#1470834)- Update to version 2.1.2+20211222.90769ae96: - libpacemaker: catch bugs scheduling actions on unclean nodes- Update to version 2.1.2+20211215.5f767500a: - fencer: get current time correctly - Merge: * 0001-Fix-fencer-get-current-time-correctly.patch - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.1.2+20211208.e3c53cabb: - fencer: avoid memory leak when broadcasting history differences- Update to version 2.1.2+20211206.3a6dc7c79: - scheduler: handle memory errors explicitly for friendly failure output - resources: use correct syntax in Stateful meta-data (rh#2027370) - resources: remove DOCTYPE from OCF 1.1-compliant agents - libcib: deprecate get_object_path() (clbz#5488) - various: perform XPath searches for CIB element names case-sensitively - libcib: compare section names case-sensitively for CIB modifications - controller,libcib,tools: handle CIB XPath searches better- Update to version 2.1.2+20211201.c93f6a460: - fencer: handle malformed topology level removal requests better (rh#1470834) - fencer: handle malformed manual confirmation requests better (rh#1470834) - fencer: return -ETIME for peer fencing timeouts (rh#1470834) - fencer: improve broadcasting replies for fenced originators (rh#1470834) - fencer,scheduler: compare fence action names case-sensitively (rh#1470834)- Update to version 2.1.2+20211201.18f4b5d83: - OCF: controld: Give warning when no-quorum-policy not set as freeze while using DLM (bsc#1129707) - libcrmservice: Handle systemd service templates. (rh#2003151)- Update to version 2.1.2+20211124.91f4bad83: - fencing: improve message for callback errors (rh#1470834) - fencing,executor: improve mapping of legacy return code to execution status (rh#1470834) - fencing: improve mapping of execution status to legacy return code - attrd: Change to determine the processing of attrd depending on the section replacement location of CIB. - based controld: Suppresses unnecessary Election execution. - based: Makes the replace notification a comparison base for the hash value of the section. - daemons: Convert schedulerd to the new IPC API. - daemons: Use formatted output for scheduler help, errors, etc. - Add a 'name' attribute to acl_target and acl_group elements (rh#1384420) - libcrmservice: downgrade failed action messages (rh#1470834) - fencer: improve messages for asynchronous results (rh#1470834) - fencer: handle dynamic target query failures better (rh#1470834) - fencing: set exit reason for internal execution errors (rh#1470834) - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- fencer: get current time correctly * 0001-Fix-fencer-get-current-time-correctly.patch- Update to version 2.1.2+20211124.ada5c3b36 (Pacemaker-2.1.2): - fencer: add missing space to topology message - controller: handle remote connection start timeouts correctly- Update to version 2.1.1+20211116.8db4569e4 (Pacemaker-2.1.2-rc2): - fencing: mark state as done if remapped "on" times out - Fix OCF_RA_INSTALL_DIR Autoconf variable name in pkg-config files - daemons: Free memory at the end of fail_pending_op.- Update to version 2.1.1+20211104.62c36e2b1 (Pacemaker-2.1.2-rc1): - Use user_include_exclude_cb in crm_mon more. (clbz#5485) - Only set default sections in crm_mon once. (clbz#5485) - fencer: improve messages for dynamic target queries (rh#1470834) - fencer: consolidate messages for asynchronous results (rh#1470834) - fencer: log a message when out of memory for dynamic target search (rh#1470834) - libcrmservice: distinguish local and global configuration errors (rh#1470834) - libcrmservice: improve messages for pre-execution failures in child (rh#1470834)- Update to version 2.1.1+20211028.70f82d2c0: - attrd: check election status upon loss of a voter to prevent unexpected pending (bsc#1191676)- Update to version 2.1.1+20211028.7ee8b5bdd: - tools: select technical or human-friendly output of failed actions (rh#1470834) - controller,executor: tweak action result messages (rh#1470834) - install init scripts only if not using systemd - executor: log execution status and exit reason with results (rh#1470834) - executor: improve result message (rh#1470834) - controller: log exit reason with action results (rh#1470834) - controller: make executor result messages more consistent (rh#1470834) - daemon metadata: Output OCF-1.1-style metadata for enum options - libcrmservice: avoid memory leak when checking systemd unit existence - fencer: avoid memory leak on async execution failure (rh#1470834) - fencer: report correct code for CIB secret failure (rh#1470834) - libcrmservice: improve exit codes for child execution failures (rh#1470834) - cib,pacemakerd,libcrmcommon,libcrmservice: improve child completion logs (rh#1470834) - executor: map nagios warnings to OCF "degraded" result code (rh#1470834) - schemas: update crm_resource API schema for --force-* changes (rh#1470834) - tools: show exit reason for crm_resource --force-* (rh#1470834) - daemons: Be more careful about restarting subdaemons. (clbz#5225) - daemons: Re-register UID/GID with corosync on restart. - tools: handle crm_resource --force-* failures consistently (rh#1470834) - tools: improve check for supported standards in crm_resource --force-* (rh#1470834) - tools: map LSB status to OCF correctly with crm_resource --force-check (rh#1470834) - tools: show detailed message with crm_resource --force-* failure (rh#1470834) - daemons: Correct which subdaemons need the cluster. - daemons: Keep track of which daemons need corosync. - libcrmservice: improve handling of too many nagios parameters (rh#1470834) - executor,libstonithd,libcrmservice: better error handling for generic actions (rh#1470834) - libcrmservice: set exit reason for some memory errors when creating action (rh#1470834) - executor,libcrmservice: set exit reason for invalid arguments (rh#1470834) - executor: use exit reason from service library when available (rh#1470834) - libcrmservice: set exit reason for internal errors (rh#1470834) - tools: avoid double free with crm_resource --force-* - tools: avoid error message when no stdout - fencing: improve error handling when executing fence actions (rh#1470834) - libcrmservice: check for memory errors when creating an action (rh#1470834) - executor,libcrmservice: don't overwrite execution status from execute_action() (rh#1470834) - executor,controller,libcrmservice: use PCMK_OCF_UNKNOWN_ERROR for timeouts (rh#1470834) - libcrmservice: don't assert for mainloop error (rh#1470834) - libcrmservice: ensure rc/status are set for meta-data failures (rh#1470834) - libcrmservice: ensure synchronous file action always sets rc and status (rh#1470834) - libcrmservice: use NAGIOS_STATE_UNKNOWN for internal nagios errors (rh#1470834) - libcrmservice: use standard-appropriate exit code for signal management failures (rh#1470834) - libcrmservice: properly detect systemd unit existence (rh#1470834) - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch * bug-943295_pacemaker-lrmd-log-notice.patch- Update to version 2.1.1+20210924.be206af22: - fenced: Change query timeout calculation. - resources: update HealthIOWait agent for OCF 1.1 - resources: add integer parameter validation to HealthIOWait - resources: fix HealthIOWait validate action- Update to version 2.1.1+20210923.ce81ff72e: - tools: Properly display supported output formats in crm_mon. - libcrmservice: avoid possible use-of-NULL - libcrmservice: update systemd agent meta-data for OCF 1.1 - libcrmservice: set default execution status for systemd actions to error (rh#1470834) - libcrmservice: ensure status is set when masking systemd errors (rh#1470834) - libcrmservice: ensure rc/status are set when parsing systemd results (rh#1470834) - libcrmservice: ensure execution status is set after parsing status result (rh#1470834) - libcrmservice: ensure rc/status are set after invoking systemd unit paths (rh#1470834) - libcrmservice: ensure rc/status are set after systemd LoadUnit calls (rh#1470834) - libcrmservice: ensure rc/status are set when loading systemd unit (rh#1470834) - libcrmservice: set rc and status appropriately for systemd timeouts (rh#1470834) - libcrmservice: handle corner cases when creating action (rh#1470834) - libcrmservice: always set rc/status when executing files (rh#1470834) - libcrmservice: always set rc/status when executing systemd actions (rh#1470834) - libstonithd: check libcrmservice status rather than exit code for timeouts (rh#1470834) - fencer: avoid assertions in delegate_from_xml() - scheduler: quote execution status in failed action output (rh#1470834) - liblrmd: don't mask errors from sending IPC (rh#1470834) - executor: set exit reason for stonith resource action failures (rh#1470834) - controller: set exit reason for executor communication timeout (rh#1470834) - controller: use OCF timeout exit code for executor communication timeout (rh#1470834) - controller: set exit reason when using synthesize_lrmd_failure() (rh#1470834) - controller: set exit reason when using fake_op_status() (rh#1470834) - controller,libpacemaker: set exit reason for internal errors (rh#1470834)- Update to version 2.1.1+20210910.89c5b06a3: - controller: use "not connected" status for remote execution failure (rh#1470834) - controller: send error reply if can't initiate action via executor (rh#1470834) - controller: improve messages for failed resource agent actions (rh#1470834) - tools: better error message if crm_resource can't create action (rh#1470834) - controller: set exit reason when remote connection start fails (rh#1470834) - tools: better error messages for crm_resource executor failures (rh#1470834) - fenced: add support for mapping pcmk_delay_base pr node - scheduler: use existing epoch-to-string function in failed action display (rh#1470834) - scheduler: add exit reason to failed action string only if present (rh#1470834) - scheduler: add timing details to failed action strings only when available (rh#1470834) - scheduler: ensure failed action display handles NULL values (rh#1470834) - fence_watchdog: fix malformed xml in metadata - fenced: support escaped characters as values in pcmk_host_map - fenced: Added nanosecond field to operation completion data. - controller: use sensible message for poke of disconnected executor (rh#1470834) - controller: improve messages for remote executor connection failure (rh#1470834) - controller: improve message for failed local executor connection (rh#1470834) - scheduler: reword "multiply active" message (rh#1470834) - libcrmcluster: reword initial quorum message (rh#1470834) - libcrmcluster: downgrade message for CPG messages sent (rh#1470834) - scheduler: improve migration threshold message (rh#1470834) - fencer: downgrade reboot remapping to notice - controller: handle malformed CIB diffs better - scheduler: avoid memory leak for invalid ordering constraints - scheduler: improve bad id-ref handling - scheduler: downgrade inverse ordering failure to warning - fence_watchdog: fix version output needed for help2man - rpm: package fence_watchdog in base-package - watchdog-fencing: Silence warning without node restriction - tools: If there are no nodes, don't add an extra blank line. - watchdog-fencing: allow restriction to certain nodes- pacemaker.rpmlintrc: filter out shlib-policy-name-error (bsc#1191776)- Update to version 2.1.1+20210909.77db57872 (Pacemaker-2.1.1): - liblrmd: avoid segfault on TLS connection errors - tools: Fix a segfault when calling "crm_simulate -U". - tools: make exit-code stdout/stderr consistent with --version- Update to version 2.1.0+20210816.c6a4f6e6c (Pacemaker-2.1.1-rc3) : - crm_resource: translate LSB rc to exit code and fix resources_find_service_class() call - controller: ensure newly joining node learns the node names of non-DCs (bsc#1180618) - controller: ensure lost node's transient attributes are cleared without DC (rh#1986998)- Update to version 2.1.0+20210806.a64ad221a (Pacemaker-2.1.1-rc2): - pacemakerd: show correct error message if can't request shutdown - scheduler: Output the clone header if there are no instances. - scheduler: Sort brief output of resources. - scheduler: Fix display of active resources on offline nodes. - tools: avoid memory leaks in crm_mon (bsc#1211678) - tools: avoid (insignificant) memory leaks (bsc#1211678)- Update to version 2.1.0+20210727.9e3a841a3 (Pacemaker-2.1.1-rc1): - scheduler: Fix XML output of cloned groups. - scheduler: Condense group and clone status in output. - scheduler: Only output the clone header if necessary. - scheduler: Mark partially active groups in output. - scheduler: Tweak resource filtering for groups. - libcrmcommon: Also allow string arguments that start with a dash. - tools: Audit command line options.- Update to version 2.1.0+20210721.0bf0e8547: - scheduler: respect runnable argument when creating pseudo op - scheduler: pe_order_implies_first should matter if 'then' is required - scheduler: don't make optional constraints with group members mandatory - scheduler: avoid invalid transition when group member unmanaged (clbz#5423)- Update to version 2.1.0+20210720.202b37962: - libcrmcommon: Allow negative numbers as cmdline options. - tools: The --get-value option does not require an arg.- Update to version 2.1.0+20210716.1ee04e687: - scheduler: add test for probe of unmanaged resource on pending node (bsc#1188653) - scheduler: update existing tests for probe scheduling change (bsc#1188653) - scheduler: don't schedule probes of unmanaged resources on pending nodes (bsc#1188653)- Update to version 2.1.0+20210716.1029946ae: - crm_resource: report not supported for --force-* w/systemd, upstart, nagios and bundled resources - Pacemaker Explained: document how fence agent internal timeouts work (clbz#5473) - Pacemaker Explained: clarify pcmk_host_check default (clbz#5475) - cluster: Use most up-to-date corosync API calls - rpm: assume _rundir macro is present- Update to version 2.1.0+20210701.9df198b18: - libcrmcommon: Correctly handle case-sensitive ids of xml objects when changing a value. (bsc#1187414)- Update to version 2.1.0+20210701.b295080a7: - scheduler: Fix group-by-node resource HTML output. - scheduler: Fix list errors in bundle HTML output. - scheduler: Remove an unnecessary blank line in HTML output. - scheduler: Remove an unnecessary space in HTML output.- Update to version 2.1.0+20210623.2a6d5ae68: - cts: Update test files with crm_mon new xml output. (bsc#1187694) - Increase PCMK__API_VERSION for new crm_mon xml output. (bsc#1187694) - libpe: Added crm_mon xml output cluster timing settings. (bsc#1187694)- Update to version 2.1.0+20210623.34ef9b169: - pacemaker-attrd: avoid repeated unfencing of remote nodes (rh#1961857) - pacemaker-attrd: ensure node ID is only set for attributes when known - pacemaker-attrd: check for remote nodes in peer update callback - controller: check whether unfenced node was remote node- Update to version 2.1.0+20210622.485ce3a4d: - libcrmcommon: Increase PCMK__API_VERSION for new crm_resource output. (rh#1686426) - tools: Add the node-summary to crm_simulate output. (rh#1686426)- Update to version 2.1.0+20210617.8c0c4eff9: - Purge remote node attribute when the node is up. (bsc#1186693) - Merge: * bsc#1186693-clean-attrd-attributes-when-remote-node-is-up.patch- Update to version 2.1.0+20210617.1df5eb2c1: - fenced: Wrong device may be selected when "dynamic-list" is specified. (cl#5474)- Update to version 2.1.0+20210616.dee8cafe5: - attribute: Add OCF_CHECK_LEVEL handling in the validate-all action - attribute: Add unique-group to appropriate entries - attribute: Remove unique from all entries - attribute: Update OCF version to 1.1- Update to version 2.1.0+20210609.40b86522a: - tools: Use the new resource-agent-action message. (rh#1644628) - tools: Add an output message for resource actions. (rh#1644628) - tools: Use simple XML lists for resource actions as well. (rh#1644628) - tools: Add an overridden params output message. (rh#1644628) - tools: Add an agent-status message for crm_resource. (rh#1644628) - libcrmcommon: Increase PCMK__API_VERSION for new crm_resource output. (rh#1644628) - xml: Update the crm_resource schema for XML output. (rh#1644628) - libcrmcommon: Add OCF_OUTPUT_FORMAT to crm_resource environment. (rh#1644628)- Update to version 2.1.0+20210608.3c1bae500: - ping: Add OCF_CHECK_LEVEL handling in the validate-all action - ping: Add a reload-agent action to handle the reloadable parameters - include: Bump feature set to 3.10.2. (rh#1955792) - tools: Add OCF_CHECK_LEVEL to crm_resource environment. (rh#1955792) - ping: Add unique-group to appropriate entries - ping: Remove unique from all entries - ping: Update OCF version to 1.1 - xml: Add schema for pacemakerd. - include: Bump CRM_FEATURE_SET for new pacemakerd args. - daemons: Conditionally enable logging in pacemakerd. - daemons: Output the pacemakerd feature list in XML. - daemons: Convert pacemakerd to formatted output. - pacemaker.service: Don't start pacemakerd with -f. - daemons: Use glib for command line handling in pacemakerd. - Add verbose debug mode which logs ping and fping output when set - daemons: Use the new IPC API in pacemakerd for shutdown. - daemons: Ignore ACK messages in pacemakerd dispatch.- Update to version 2.1.0+20210608.7c3f66070 (Pacemaker-2.1.0): - schemas: Add "digests" and "digest" elements to digests.rng. (rh#1967087)- Update to version 2.0.5+20210601.b7762381d (Pacemaker-2.1.0-rc3): - XML: bump API schema version - tools: get `crm_verify --xml-pipe/-p` working again (bsc#1186576) - rpm: respect prefix when installing resource agents - tools: Return ENXIO from show_metadata. - tools: Return ENOTUNIQ in find_resource_attr. - executor: log OCF resource agent search path at start-up - tools: Fix handling certain error codes in crm_resource. - pcmk__pid_active: Lower the log level when readlink() is EACCES - Drop obsolete: * 0001-Log-libcrmcommon-lower-message-on-reading-proc-file-.patch- Update to version 2.0.5+20210519.4edf50cc9 (Pacemaker-2.1.0-rc2): - rpm: add option for sbd sync default - tools: Return the right error codes in crm_resource. - configure: add --with-sbd-sync-default option - libcrmcommon: warn if sbd sync environment is invalid - libcrmcommon: warn if can't get user information for log file - pacemakerd: don't try to repeat shutdown when disconnecting CFG - executor,fencer: tell user if additional logfile is unusable - libcrmcommon: use return code correctly when getting daemon user ID - rpm: minor clean-up of spec - rpm: add configuration global for bug URL - liblrmd: improve messages when loading Pacemaker Remote key - liblrmd: return sensible value when remote connection fails - liblrmd: improve failure messages when initializing remote key - liblrmd: improve failure messages when cacheing remote key - liblrmd: return sensible code for unsupported executor type - liblrmd: improve messages for remote reply failures - liblrmd: use sensible return code for disconnection in remote send/reply - liblrmd: richer return code when sending remote message - fencing: register/remove the watchdog device - crm_resource: improve help text - libpe_status: Don't output an extraneous header under crm_mon -b.- Update to version 2.0.5+20210427.aa4bdaa2f: - schedulerd: Correctly calculate priority-fencing-delay from Master resource stop failure.(Fix:#CLBZ5467)- Update to version 2.0.5+20210427.529de7174: - tools: avoid exception when pcmk_simtimes is used without --verbose - libcrmcluster: improve CPG validation messages - libcrmcluster: use more efficient payload length check - liblrmd: correctly check for out-of-memory condition - executor: properly initiate quicker fence device monitor - Fix maint-mode output on curses mode.- Update to version 2.0.5+20210422.d469c6340: - controller: check for empty OCF version as well as NULL - libcrmservice: always advertise OCF 1.1 support - controller: always refresh agent meta-data after start - controller: info message when agent supports newer OCF 1.x standard - libcrmcommon: bump feature set for reload-agent support - libcrmservice: advertise OCF 1.1 support to resource agents - scheduler: support OCF 1.1 reload-agent action - controller: support OCF 1.1 reload-agent action - resources: support OCF 1.1 standard in ocf:pacemaker:remote - resources: improve Pacemaker Remote meta-data - controller: log the OCF version supported by a resource agent- Update to version 2.0.5+20210420.e82d2a1bc: - Convert crm_attribute to use glib for cmdline handling. - Support "sync-crash" option with PCMK_panic_action - tools: Don't reference the output object in cmdline processing. - libcib: revert deprecation of cib_apply_patch_event() - CIB: allow resource-stickiness default to be set at build time - rpm: detect when to use --enable-compat-2.0 correctly - Support "sync-reboot" option with PCMK_panic_action - tools: Set the output object when running crm_resource --restart. - pacemakerd,pacemaker-remoted: simplify help URL in systemd unit file - crm_mon: try to connect CIB while pacemakerd shutting down - Rebase: * bug-995365_pacemaker-cts-restart-systemd-journald.patch * pacemaker-cts-StartCmd.patch- Update to version 2.0.5+20210409.6c31efd67: - libcrmcommon: bump feature set to 3.9.0 - scheduler: provide notify_{,un}promoted_{resource,uname} variables - schema: add promoted-only to crm_mon API schema - libpe_status: use "promoted-only" in API schema for bans - tools: deprecate crm_master - tools: crm_attribute -p/--promotion option to operate on promotion score - tools: crm_resource now supports --promoted option - CIB: allow OCF 1.1 role names in configuration - scheduler: accept case-insensitive role names in actions in templates - tools: use OCF 1.1 role names in crm_resource --ban constraints - scheduler: use OCF 1.1 role names in output - scheduler: use OCF 1.1 role names in log messages - scheduler: support OCF 1.1 role names in configuration- Update to version 2.0.5+20210408.c71bd880c: - tools: crm_simulate --pending is deprecated. - tools: Make some small changes to the crm_simulate man page. - controller: correctly handle remote node fencing after Y2038 - controller: correctly handle node shutdowns after Y2038 - libcrmcommon: bump feature set for recent configuration interpretation changes - tools: constrain node IDs to non-negative values for crm_node -N - tools: treat invalid error codes as unknown in crm_error - scheduler: don't treat invalid duration fields as -1 - scheduler: constrain promoted-max and promoted-node-max to non-negative values - scheduler: constrain clone-max to non-negative values - scheduler: constrain clone-min to non-negative values - scheduler: constrain clone-node-max to non-negative values - all: allow full unsigned int range for PCMK_ipc_buffer - scheduler: Use default when series max value is out of bounds - scheduler: handle series max of 0 better - scheduler: handle exit via signal or main loop similarly - fencer: use 1 (default) instead of -1 (unlimited) for invalid pcmk_action_limit - all: constrain minimum when parsing certain internally generated integers - CIB: constrain remote-tls-port and remote-clear-port to port range - scheduler: constrain resource priorities and node-health-base to score range - controller: bound stonith-max-attempts to a minimum of 1 - scheduler: handle last-rc-change values after Y2038 - scheduler: handle ticket last-granted dates after 2038 - all: use default value when a long long integer can't be parsed - tools: Don't print to stderr if crm_simulate -V is used.- Update to version 2.0.5+20210406.6b23b2bb4: - Add schema for new crm_simulate options. (rh#1686426) - tools: Add new options to crm_simulate. (rh#1686426)- Update to version 2.0.5+20210405.43fcdeb35: - xml: Add schema for new crm_simulate output. - include: Bump FEATURE_SET for new crm_simulate args. - scheduler: Use formatted output for node weights. - tools: Log crm_simulate output for certain cmdlines. - Use formatted output for scheduler node actions. - tools: Use formatted output for simulation timings. - tools: Add the beginnings of formatted output to crm_simulate.- Update to version 2.0.5+20210330.7fa194778: - libcrmcommon: Allow setting the formatted output log level. - libcrmcommon: Flush output in text_list_item.- Update to version 2.0.5+20210319.c75f0a34a: - crm/cib tools: implement CIB_file="-" to accept CIB from stdin - tools: Promote a couple info messages to errors.- Update to version 2.0.5+20210310.83e765df6: - controller: re-joined node gets the host names of non-DC nodes (bsc#1180618) - Merge: * bsc#1180618-0001-Fix-crmd-update-crm_peer_cache.patch- Update to version 2.0.5+20210309.90b3e455b: - Allow the none format in other command line tools. - scheduler,tools: stop using last-run in CIB status- Update to version 2.0.5+20210302.64e0c771d: - crm_mon.rng/crm_resource.rng: Change the schema type of 'expected' and 'call' to integer. (rh#1931332) - Merge: * rh#1931332-0003-Med-Change-the-schema-type-of-expected-and-call-to-i.patch * rh#1931332-0002-Med-Copy-crm_mon.rng-and-crm_resource.rng-in-prepara.patch * rh#1931332-0001-Med-Generate-xml-crm_mon.rng-from-the-contents-of-xm.patch * rh#1931332-0000-Feature-xml-Move-resource-related-XML-schema-into-it.patch- Update to version 2.0.5+20210302.f537b60c2: - fenced: retry getting metadata until we get it - require glib 2.42.0 or later- Update to version 2.0.5+20210224.63d2fa7c2: - pacemakerd: downgrade corosync connection loss messages - libcrmcommon: be consistent with IPC server names in messages - CIB: deprecate support for can_fail action meta-attribute - CIB: deprecate remove-after-stop cluster property - pacemakerd,tools: use high-resolution sleep in a couple of places - pacemakerd: use high-resolution sleep functions if available - configure: drop support for --with-acl option - rpm: update for new legacy links default - configure: add --with-concurrent-fencing-default option - scheduler: allow 2.0 compatibility mode for certain output - include: Bump CRM_FEATURE_SET to 3.7.2. - tools: Convert crm_verify to use formatted output. - tools: Use glib for command line handling in crm_verify. - iso8601: prevent sec overrun before adding up as long long - Merge: * 0001-Fix-iso8601-prevent-sec-overrun-before-adding-up-as-.patch - crmadmin: tweaks - scheduler: route monitor cancellations behind moving remote connections correctly - cluster: try to reconnect with corosync if it goes down - Rebase: * pacemaker-nagios-plugin-dir.patch- Update to version 2.0.5+20210223.dbc27b2ac: - fencer: optimize merging of fencing history by removing unneeded entries on creation of history diff (bsc#1181744) - Merge: * bsc#1181744-0004-Refactor-fencer-optimize-merging-of-fencing-history-.patch - fencing: new function stonith_op_state_pending() for checking if a fencing operation is in pending state (bsc#1181744) - Merge: * bsc#1181744-0003-Refactor-fencing-new-function-stonith_op_state_pendi.patch - fencer: update outdated pending operations according to returned ones from remote peer history (bsc#1181744) - Merge: * bsc#1181744-0002-Fix-fencer-update-outdated-pending-operations-accord.patch - fencer: broadcast returned fencing operations to update outdated pending ones in remote peer history (bsc#1181744) - Merge: * bsc#1181744-0001-Fix-fencer-broadcast-returned-fencing-operations-to-.patch- Update to version 2.0.5+20210212.a4892ccb5: - Fix a problem with crm_resource exit code handling. - Correct output of "crm_resource --locate" in case of clones. (rh#1925681) - tools: Add newlines to the description string in crm_simulate. - tools: Straighten out return codes in crm_diff. - libcrmcommon: Set extra_headers to NULL after freeing it. - tools: Mark a couple things as volatile in crm_mon. - tools: Allow other output formats for crm_mon -d. - libcrmcommon: Try to make sure formatted output is always written. - libcib, tools: Use the formatted output password prompt. - libcrmcommon: Add a prompt formatted output message. - tools, libcrmcommon: Add a progress formatted output message.- Update to version 2.0.5+20210205.46cf48d27: - execd: Skips merging of canceled fencing monitors.(Fix:#CLBZ5393) - Merge: * 0001-Mid-execd-Skips-merging-of-canceled-fencing-monitors.patch - crm_mon: detect when run on remote-node - tools: get cibsecret stash working again - Merge: * 0001-Fix-tools-get-cibsecret-stash-working-again.patch - fencing: remove any devices that are not installed - Merge: * 0001-Fix-fencing-remove-any-devices-that-are-not-installe.patch - crm_mon: suppress pacemakerd-status for non-text output - crm_mon: retry fencer connection as not fatal initially - tools: Report pacemakerd in state waiting for sbd - controller,scheduler,CTS: use ":" instead of "::" when displaying provider- Update to version 2.0.5+20210128.7c8114f68: - scheduler: process remote shutdowns correctly (rh#1898457) - scheduler: warn if lrm_resource has no ID - scheduler: warn if node state has no ID or uname- Update to version 2.0.5+20210128.aa41a984d: - cibsecret: use crmadmin -N (which also lists guest and remote nodes) to get nodes to sync to - tools: Free --resource=/--node= memory in crm_mon. (bsc#1211678) - scheduler: Free the result of pe__node_display_name in one place. (bsc#1211678) - tools: Free command-line related memory. (bsc#1211678) - libcrmcommon: Don't leak memory in pcmk__cmdline_preproc. (bsc#1211678) - libcrmcommon: Free the results in various test cases. (bsc#1211678) - libpe_rules, libcrmcommon: Free the whole xml doc, not just the node. (bsc#1211678) - crmadmin: use cluster instead of member term and remove pacemaker_remote node type - crmadmin: list remote/guest nodes and add parameter/variable to choose which node type(s) to list- Update to version 2.0.5+20210121.55598be5e: - tools: The 'm' key in crm_mon is a cycle, not a toggle. - tools: Describe interactive crm_mon use in help and man page. - tools: Attempt to reestablish connections in crm_mon. (rh#1880426, rh#1466875) - tools: A lack of stonith history is not fatal in crm_mon. (rh#1880426) - tools: Report if getting fencing history failed in crm_mon. - tools: Adjust fencing shown indicator in crm_mon. - corosync: Add cfg_trackstart/stop calls- Update to version 2.0.5+20210114.ad074d869: - all: use high-resolution timestamps in detail log when available (bsc#1197668) - CIB: remove cibmon command- Update to version 2.0.5+20210113.a4bbcb033: - scheduler: implement new critical and influence options (rh#1371576) - xml: allow colocation constraints to take "influence" option (rh#1371576)- Update to version 2.0.5+20210112.631bb9c89: - tools: bump feature set for crm_resource --digests (rh#1872376) - tools: add crm_resource --digests option (rh#1872376) - tools: handle required node names better in crm_resource- Update to version 2.0.5+20210111.c600d9092: - Build: tools: make stricter compilers happy - Build: resources: drop ocf:pacemaker:pingd - Build: require libqb 0.17.0 or later - Build: require glib 2.32.0 or later - Build,Doc,Test: all: drop support for Python 2 - Rebase: * pacemaker-Wno-format-signedness.patch- Update to version 2.0.5+20210108.1f1408ca7: - scheduler: multiple issues with value-source in location rules (rh#1872376) - tools: respect rules when showing node attributes in crm_mon (rh#1872376) - scheduler: calculate secure digest properly for node attribute rules (rh#1872376) - scheduler: treat NULL and empty string the same in literal attribute comparisons (rh#1872376) - scheduler: don't include timeout in secure digests (rh#1872376) - scheduler: filter non-private parameters properly for digest (rh#1872376) - libcrmcommon: compare CRM_meta_ properly (rh#1872376) - liblrmd: Limit node name addition to proxied attrd update commands (rh#1907726) - Merge: * rh#1907726-0001-Fix-liblrmd-Limit-node-name-addition-to-proxied-attr.patch- pacemakerd: downgrade the warning about SBD_SYNC_RESOURCE_STARTUP to notice (bsc#1180966) * bsc#1180966-0001-Log-pacemakerd-downgrade-the-warning-about-SBD_SYNC_.patch- Update to version 2.0.5+20210104.8ae19fdf9: - attrd: prevent leftover attributes of shutdown node in cib (bsc#1173668) - Merge: * bsc#1173668-0001-Fix-attrd-prevent-leftover-attributes-of-shutdown-no.patch- Update to version 2.0.5+20201218.c67665496: - books: enable Sphinx build - books: remove Publican - xml: Update XML schema for crm_resource changes. - libpacemaker: Also flatten XML location constraint output. - libpacemaker: Various small fixes to location-list. - libpacemaker: Fix printing out location constraints. - libpacemaker: Correct loop detection in rscs_colocated_with_list. - libpacemaker: Flatten XML output for colocations. - libpacemaker: Pass the correct resource to recursive calls. - tools: Don't display generic lists for colocations and constraints. - libpacemaker: Change the colocation list headings. - libpacemaker: Don't show an empty locations list. - libcrmcluster: properly check CPG payload size - libcrmcluster: correctly return error for invalid payload size - libcrmcommon: set errno properly on IPC connection failure - scheduler: Don't output a resource header with no list. - libcib: Cleanup at signoff.Fix(CLBZ#5457) - scheduler: add class back to multiple recovery message - fencer: standardize fence device references in log messages - fencer: improve wording of various messages - fencer: correct order of arguments to a message - fencer: log operation IDs more consistently - fencer: log operation state as readable string rather than integer enum value - fencer: prefer "fencing" to "stonith" - fencer: use singular or plural correctly in messages - pacemakerd: improve error message when -S can't connect - libcrmcommon: improve messages when adding a log file - libcrmcommon: drop unformatted log message about log permissions (bsc#1190821) - libcrmcommon: drop unnecessary parent check when adding log file - daemons: improve client name used in log messages - ipc_client: Use libqb to get auth data for ipcc connections - Rebase: * bug-806256_pacemaker-log-level-notice.patch * bug-728579_pacemaker-stonith-dev-id.patch * bug-812269_pacemaker-fencing-device-register-messages.patch- Update to version 2.0.5+20201203.dc64a43f9: - libpacemaker: add public API functions for cluster queries - libs: Remove extra whitespace in list_item calls. - schedulerd: Fixed processing to expand meta_attributes. Fix(#CLBZ:5451) - scheduler: Fix output of failed actions without an operation_key. - scheduler: treat missing parameter as NULL in rules with value-source (rh#1872376) - scheduler: correctly skip dangling id-ref(rh#1872376) - controld: Retry connection failure when controld is stopped.(Fix:CLBZ#5445) - travis: run cts-exec with --force-wait option (bsc#1177489) - cts-exec: add --force-wait/-w option (bsc#1177489) - cts-fencing: add --force-wait/-w option (bsc#1177489) - cts-exec: add --timeout/-t option (bsc#1177489) - cts-fencing: add --timeout/-t option (bsc#1177489) - cts-exec: optimize exec regression testing via appropriate synchronization with execd (bsc#1177489) - cts-fencing: optimize fencing regression testing via appropriate synchronization with fenced (bsc#1177489) - Pacemaker Explained: Explain limitations of node attr expressions. (rh#1891929) - include: Bump CRM_FEATURE_SET to 3.6.3. - xml: Add a schema for new crm_resource output. - tools: Use formatted output for stacks and constraints. - tools: Use formatted output for resource searching. - tools: Use formatted output for crm_resource checks. - tools: Use formatted output for CTS printing in crm_resource. - scheduler, tools: Add a new node-and-op output message. - tools: Use formatted output for crm_resource info messages. - tools: Use formatted output for finding resources. - tools: Use formatted output for resource output in crm_resource. - scheduler: Add a message for resource config printing. - tools: Use formatted output for props, attrs, and metadata. - liblrmd: Add output messages for agents, providers, and standards. - tools: Use the existing resource-list message in crm_resource. - tools: Add an output message for a list of resource names. - tools: Add the beginnings of formatted output to crm_resource. - scheduler: filter Pacemaker-supplied stonith parameters from secure hash (rh#1872376) - scheduler: use same default private parameter list as controller - libstonithd: improve filtering of Pacemaker-handled parameters - scheduler: properly compute digest of non-sensitive resource parameters (rh#1872376) - libcrmcommon: Prevent a segfault in pcmk__cmdline_preproc. - tools: Save the optarg parameter for --list-ocf-alternatives. - xml: Add a generic list XML schema file. - xml: Move resource-related XML schema into its own file. - libcrmcommon: Automatically lower case XML list names. - xml: add schema for new crmadmin output - crmadmin: implement formatted output (bsc#1178865) - Drop obsolete: * bsc#1178865-0001-Fix-crmadmin-printing-DC-quietly-if-needed.patch- Update to version 2.0.5+20201202.ba59be712 (Pacemaker-2.0.5): - xml: Revert to correct schema for alerts-3.5 - tools: match calloc() with free() in crm_resource - tools: "Connectivity is lost" may not be displayed even if the ping communication is lost.- Update to version 2.0.4+20201116.ae2c04b54: - tools: make cibsecret use bash - fencer: allow peer configuration requests- Update to version 2.0.4+20201027.31aa4f551: - pacemakerd: handle shutdown requests better - daemons,libcrmcommon: send status code with client acks - fencer: restrict certain IPC requests to privileged users (CVE-2020-25654, bsc#1177916) - pacemakerd: ignore shutdown requests from unprivileged users (CVE-2020-25654, bsc#1177916) - pacemakerd: check client for NULL before using it - executor: restrict certain IPC requests to Pacemaker daemons (CVE-2020-25654, bsc#1177916) - executor: return appropriate error code when no remote support - executor: mark controller connections to pacemaker-remoted as privileged - executor: show CRM_OP_REGISTER rc in debug message- Update to version 2.0.4+20201022.354625c62: - tools: revert some changes in crm_resource NULL checks - xml: Mark new crm_mon attributes as optional. - scheduler: fix build when DEFAULT_CONCURRENT_FENCING_TRUE is set- Update to version 2.0.4+20201019.878658661: - cib: create reply when needed for diff - cib: only build reply when needed- Update to version 2.0.4+20201014.b0ef36d82: - cibsecret: read value to set from input (or stdin) if not specified - libcrmcommon: Don't leak memory in pcmk__cmdline_preproc. - tools: Don't leak options.xml_file in crm_simulate. - tools: Prevent a potential memory problem in crm_resource. - tools: Use glib for cmdline handling in crmadmin. - tools: Apply resource filtering to failed actions in crm_mon. - scheduler: require pre-/post-start notifications correctly - tools: avoid memory leak if crm_mon --include/--exclude have bad syntax - pacemakerd: change one message so CTS recognizes it - libcrmcommon: check controller API object for NULL - fencer: properly deactivate stonith API callbacks - controld: Avoiding Broken pipe when shutdown. - Stateful: add ability to return custom rc saved in state file - Dummy: add ability to return custom rc saved in state file - Use effective OCF rc-code to avoid increasing failcount for DEGRADED statuses (bsc#1205861) - tools: Don't display crm_resource error messages twice. - Accept PCMK_OCF_DEGRADED and PCMK_OCF_DEGRADED_MASTER status codes (bsc#1205861) - libcrmservice: avoid dangling reference after DBus memory allocation error - libcrmservice: avoid double logging an error - libcrmservice: improve DBus log messages - fenced: Avoiding Broken pipe when shutdown. - controld: Avoiding Broken pipe when shutdown. - attrd: Avoiding Broken pipe when shutdown. - Dont add OCF_RESKEY_ prefix to OCF_CHECK_LEVEL - controller: recognize reprobe requests correctly again - tools: allow crm_resource --option to be specified multiple times again - tools: only create validate parameters table when needed - tools: use glib types/free in crm_resource where appropriate to GOption - xml: Add a new schema version for crm_mon. - scheduler: Display stop-all-resources in cluster options. - scheduler: Add management status to group output. (rh#1748139) - scheduler: Change output for disabled clones. (rh#1748139) - scheduler: Change output for disabled groups. (rh#1748139) - scheduler: don't select instance to be promoted on a guest that can't run - fenced: Set the delegate correctly when fencing fails. - scheduler: improve messages when creating actions - libcrmcommon: Warn instead of err in scan_ll() (rh#1874391) - libcrmcommon: Don't always write out a name attribute. - scheduler, tools: Add a resource-list message. - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.4+20200820.09f345c49: - controller, Pacemaker Explained: improve the documentation of `stonith-watchdog-timeout` cluster option (bsc#1174696, bsc#1184557) - scheduler: improve the documentation of `have-watchdog` cluster option (bsc#1174696, bsc#1184557) - libpe_status: downgrade the message about the meaning of `have-watchdog=true` to info (bsc#1174696, bsc#1184557)- Update to version 2.0.4+20200820.216d5db57: - tools: properly detect local node name - various: improve client flag handling -Rebase: * bug-806256_pacemaker-log-level-notice.patch * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.4+20200819.643f19b71: - scheduler: update migrate-fail-9 test for migration code change (bsc#1177212, bsc#1182607) - scheduler: don't schedule a dangling migration stop if one already occurred (bsc#1177212, bsc#1182607)- Update to version 2.0.4+20200819.114974685: - controld: Log correct timeout for timed-out stonith monitor - libpe_status: Use pcmk_monitor_timeout as stonith start timeout (rh#1856015) - crm_mon: Displays completed failed actions as processed. - libpe_status: Support integer as rule type attribute - libpe_status: Error-check and expand range of type="number" - xml: Support integer as rule type attribute - daemons, lib, tools: Correct comparisons to string functions. - libcrmcommon: Allow default formatted output message handlers. - tools: Apply resource filtering to bans. - tools: Apply resource filtering to --brief option. - libpe_status: Allow filtering bundled resources. - libpe_status: Allow filtering cloned resources. - libpe_status: Allow filtering resource groups. - libpe_status: Allow filtering primitive resources. - tools: Add "No active resources" to one case in crm_mon output. - tools: Allow filtering node history by resource. - tools: Add --resource= to the crm_mon command line. - cluster: Close corosync handles when they disconnect (rh#1614166) - libcrmcommon: Use truly implicit deny for ACLs (rh#1833173) - libpe_status: Destroy hash table after use - controld: improve message indicating the RA execution request - tools: Convert crm_resource to use glib for command line handling. - Allow logfile perms to be set in sysconfig - pacemakerd: improve logging when synced with SBD - pacemakerd: interworking with sbd not using pacemakerd-api - tools: Add -P to crmadmin to ping via pacemakerd-api - sbd-integration: sync pacemakerd with sbd - executor: only send executor notifications to executor clients - ipc-api: avoid infinite loop when disconnected - ipc-api: allow calling connect after disconnection - fencer: don't log assertion if unable to create full request reply - libcrmcommon: avoid assertion on controller protocol errors - tools: Add the http-equiv header to crm_mon at the right time. - tools, libcrmcommon: Reopen the output dest on reset. - libcrmcommon: Make reset and finish work more similarly. (rh#1857728) - libcib: Update known_paths - tools: Update valid scope values for cibadmin --help - controld: Show action timer plus cluster-delay in action_timer cb (rh#1856035) - Rebase: * bug-943295_pacemaker-lrmd-log-notice.patch- Update to version 2.0.4+20200702.813fdbfdc: - libcrmcommon: deprecate create_hello_message() as public API (bsc#1170346, rh#1796824) - pacemakerd: properly conditionalize corosync calls (bsc#1170346, rh#1796824) - pacemakerd: use existing handle for corosync shutdown (bsc#1170346, rh#1796824) - pacemakerd: improve messages (bsc#1170346, rh#1796824) - pacemakerd: functionize removing core file limit (bsc#1170346, rh#1796824) - pacemakerd: remove unneeded IPC and CPG commands (bsc#1170346, rh#1796824) - tools: crm_node -l and -p now work from Pacemaker Remote nodes (bsc#1170346, rh#1796824) - functionize numeric comparisons of strings (bsc#1170346, rh#1796824) - controller: add new IPC API command for getting node list (bsc#1170346, rh#1796824)- Update to version 2.0.4+20200701.556cef416: - tools: convert crmadmin to use new controller IPC model (bsc#1170346, rh#1796824) - tools: remove dead code from crm_node (bsc#1170346, rh#1796824) - tools: convert crm_node to use new controller IPC model (bsc#1170346, rh#1796824) - tools: convert crm_resource to use new controller IPC model (bsc#1170346, rh#1796824) - libcrmcommon: add C API for controller IPC (bsc#1170346, rh#1796824) - libcrmcommon: new model for daemon IPC API (bsc#1170346, rh#1796824)- Update to version 2.0.4+20200630.107af1896: - tools, libs: Use pcmk__str_any_of and pcmk__str_all_of. - libcrmcommon: Add pcmk__str_any_of and pcmk__str_none_of.- Update to version 2.0.4+20200624.67a6a9b31: - lib, tools: Correct types given to PCMK__OUTPUT_ARGS.- Update to version 2.0.4+20200623.e36fe309d: - sysconfig: remove outdated reference to wildcards in PCMK_trace_files - rpm: use https in package URL - resources: don't check host-specific conditions in attribute validate- Update to version 2.0.4+20200622.c7e75c04b: - libpacemaker: Don't allow a potential NULL in a format string.- Update to version 2.0.4+20200622.4bb3b23a2: - libcrmcommon: bump CRM feature set - scheduler: support "demote" choice for no-quorum-policy option (rh#1837747) - scheduler: new on-fail="demote" recovery policy for promoted resources (rh#1837747) - xml: add on-fail="demote" option to resources schema (rh#1837747) - libpacemaker: check for re-promotes specifically - libpacemaker: don't force stop when skipping reload of failed resource - scheduler: disallow on-fail=stop for stop operations- Update to version 2.0.4+20200520.81d4b3976: - xml: Add rsc_expression and op_expression to the XML schema. (rh#1628701) - scheduler: Pass rsc_defaults and op_defaults data. (rh#1628701) - scheduler: Add new rule tests for op_defaults and rsc_defaults. (rh#1628701)- Update to version 2.0.4+20200508.3f6514f01: - tools: functionize listing nodes from CIB in crmadmin (bsc#1170346, rh#1796824) - tools: use proper type for glib timeout value in crmadmin (bsc#1170346, rh#1796824) - tools: handle memory cleanup better in crm_node (bsc#1170346, rh#1796824) - libcrmcommon: new function for draining and quitting a main loop (bsc#1170346, rh#1796824) - libcrmcommon: drop generate_hash_key() (bsc#1170346, rh#1796824) - libcrmcommon: move get_message_xml() and add_message_xml() definition (bsc#1170346, rh#1796824) - libcrmcommon: separate IPC code into multiple files (bsc#1170346, rh#1796824) - libcrmcommon: combine IPC internal headers (bsc#1170346, rh#1796824)- rpm: use the user/group ID 90 for haclient/hacluster to be consistent with cluster-glue (bsc#1167171)- Fixes for %_libexecdir changing to /usr/libexec- Update to version pacemaker-2.0.4+20200616.2deceaa3a (Pacemaker-2.0.4): - cibsecret: don't use pssh -q option unless supported - tools: verify newly created CIB connection is not NULL - tools: check resource separately from managing parameter in cibsecret - tools: improve cibsecret help- Update to version 2.0.3+20200608.44045c027: - scheduler: Add the node name back to bundle instances.- Update to version 2.0.3+20200605.0db37d66f: - rpm: add spec option for enabling CIB secrets - build: avoid resource-agents as build dependency when cibsecrets are enabled- Update to version 2.0.3+20200603.4ff9c412f: - based: use crm_exit to free qb-logging- Update to version 2.0.3+20200602.f7f36e8a8: - libpe_status: Modify filtering of inactive resources.- Update to version 2.0.3+20200527.e67fb5c73: - rpm: put user-configurable items at top of spec - tools: free IPC memory after closing connection - resources: attribute name parameter doesn't have to be unique- Update to version 2.0.3+20200516.b06fc662e: - crm_ticket: avoid unnecessary issues with dynamic allocation - crm_resource: avoid unnecessary issus with dynamic allocation - crm_mon: NULL output-pointer when buffer is freed - crm_error: use g_free for a proper match - libreplace: closedir when bailing out dir traversal - libcrmcommon: return ENOMEM directly instead of errno - libcrmcommon: free basename after setting prgname - silence some false positives static analysis stumbled over - move bcond_with/without up front for e.g. pcmk_release - fencer: avoid infinite loop if device is removed during operation- libcrmcommon: lower message on reading proc file to info * 0001-Log-libcrmcommon-lower-message-on-reading-proc-file-.patch- Update to version 2.0.3+20200511.2b248d828: - tools: get stonith_admin --list-targets working again- Update to version 2.0.3+20200511.e7d7b1aa5: - libpe_status: Apply node filtering to clone resource lists. - tools: Remove an extra space in crm_mon filtered output. - libpe_status: Don't output unnecessary resource headers. - libpe_status: Handle filtering of inactive resources. - tools: Print inactive resources by default with crm_mon xml output.- Update to version 2.0.3+20200511.a9e085d8c: - fencer: avoid possible use-of-NULL when parsing metadata (bsc#1171372) - libstonithd: make the assert message from stonith__device_parameter_flags() more clear (bsc#1171372)- Update to version 2.0.3+20200507.c8529193e: - libstonithd: respect `pcmk_host_argument=none` on `validate` (bsc#1171372) - libstonithd: add `port` or `plug` parameter according to metadata on `validate` if no `pcmk_host_argument` specified (bsc#1171372) - Pacemaker Explained: update the default value and the description of `pcmk_host_argument` (bsc#1171372) - fencer: add `port` or `plug` parameter according to metadata for RHCS-style fence-agents (bsc#1171372) - libstonithd: add function to check supported parameters according to the metadata of a fence agent (bsc#1171372)- Update to version 2.0.3+20200506.a212e4fa3: - fenced: Remove relayed stonith operation.(Fix:CLBZ#5401) (bsc#1181744) - controller: properly detect remote node info requests - cotrold: Notify tengine of completion of CRM_OP_LRM_DELETE.(Fix:CLBZ:#5424)- Update to version 2.0.3+20200429.029571144: - stonith_admin: --delay is an optional option for --fence/--unfence/--reboot commands (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - controller: avoid possible use-of-NULL on logging fencing message (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240)- Update to version 2.0.3+20200428.f0a4d08c9: - cib: populate cib_nodes when 'cibadmin -R -scope=configuration'- Update to version 2.0.3+20200423.01b9bbdbe: - cts: add `plug` parameter for fence_dummy agent (bsc#1171372) - libstonithd: `plug` parameter of RHCS-style fence-agents is shown as non-required in the metadata (bsc#1171372) - libstonithd: `action` parameter of RHCS-style fence-agents is shown as non-required in the metadata (bsc#1171372) - libstonithd: functionize fudging metadata of RHCS-style agent to make specific parameter non-required (bsc#1171372)- Update to version 2.0.3+20200423.5194e4a0d: - libpe_status: Skip summary output of cloned resources. - tools: Remove yet more extra newlines from crm_mon errors. - tools: Quitting crm_mon shouldn't be an error. - tools: Remove an extra log bump in crm_simulate. - tools: Convert crm_error to use glib for command line handling. - tools: Fix --html-title= in crm_mon. - libpe_status: Add space between role and state strings. - tools: Filter fencing actions using --node=. - tools: Filter resources using --node= option. - tools: Filter failed resource actions using --node= option. - tools: Filter node summary and attributes using --node= option. - tools: Filter nodes using --node= option. - tools: Add --node= to the crm_mon command line.- Update to version 2.0.3+20200408.cfb1746ec: - libcrmcluster: use uint64_t type for corosync ringid (membership id) when updating node state (bsc#1168771)- Update to version 2.0.3+20200403.eb73f2237: - fencer: update cpg_topology_delay test to also verify pcmk_delay_base is added (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - controller: requested priority fencing delay defaults to 0 (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - stonith_admin: --delay option defaults to 0 (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - fencer: any delays from pcmk_delay_base/max are added to requested fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: do not differentiate the case where all the nodes have equal priority (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: priority-fencing-delay defaults to 0 meaning disabled (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240)- Update to version 2.0.3+20200402.0a67b34c5: - libpacemaker: don't output "0 events found" for stonith history cleanup - tools: use return codes consistently in stonith_admin - Use glib for cmdline processing in crm_simulate. - tools: Only free things in crm_simulate that aren't NULL.- Update to version 2.0.3+20200326.508402483: - scheduler: don't incorporate dependencies' colocations multiple times - controller: improve shutdown messages - tools: make static analysis happy - xml: Add a new version of the tags schema. - tools: Apply various fixes to the crm_diff man page. - libcib: improve messages for CIB sign-on - libcrmcommon: close logging *after* logging an exit message - tools: be extra safe with freeing API connections when exiting - fencer,libstonithd: fix Y2038 issue in fence history- Update to version 2.0.3+20200321.3e73aefb8: - Pacemaker Explained: document priority-fencing-delay cluster option (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - fencer: add cpg_topology_delay test to verify enforced fencing delay with fencing topology (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - fencer: handle any enforced fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - stonith_admin: add --delay option to support enforced fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - controller: request fencing with any enforced priority fencing delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - libstonithd: introduce fence_with_delay() operation (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: add regression test for priority-fencing-delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: implement priority-fencing-delay (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240) - scheduler: add priority-fencing-delay cluster option (jsc#ECO-1611, jsc#SLE-12239, jsc#SLE-12240)- Update to version 2.0.3+20200320.e16e5121f: - tools: Close the channel created with g_io_channel_unix_new. - libcrmcommon: Don't allocate a ptr array until it's needed. - tools: Free the result of g_option_context_get_help. - various: improve configuration warnings and errors - based: avoid memory leak when reading CIB - xml: Add a new minor version of the crm_mon schema. - libstonithd: Report an error getting history in output. - tools: Use new formatted output return codes in crm_mon. - tools: Eliminate nested execution of bye() processing and clear data_set. - tools: Add clear cib connection pointer. - fix compilation -Werror compilation issue with GCC 10 with s390x - tools: Print errors to stderr for crm_mon's legacy xml. - tools: Rework error reporting and exiting in crm_mon. - tools: Don't automatically show cluster options in crm_mon. - tools: Use glib for command line handling in crm_rule. - tools, lib: Use standard pacemaker return codes in crm_rule. - tools: Allow crm_rule to check some date_specs. - tools: Add better error reporting in crm_rule. - executor: record correct last run and last rc change times - libcrmcommon,libpe: validate interval specs correctly - executor: correctly set first run time - tools: Remove an extra space from last-failed strings in crm_mon. - tools: Properly close ncurses output in crm_mon. - controller: don't ack same request twice - controller: improve message routing messages - tools: Try to remove blank lines from the end of text output. - tools: Don't display an empty "Migration Summary" header. - tools: Handle corner case of printing cluster options. - xml: Add a new schema version for crm_mon. - tools: Add an option for printing failed resource actions. - libcrmcommon, tools: Handle displaying maintenance mode. - tools: Add more fine grained fencing arguments. - tools: Conditionalize more output in crm_mon. - tools: Add a real cluster-options message for text output. - tools: Add --include= and --exclude= to crm_mon. - controller: improve client IPC hello validation - tools: clean up before exiting crm_resource - libcrmcommon: improve messages when sending IPC request - libcrmcommon: improve messages for IPC hello creation - executor: correctly convert nanoseconds to milliseconds - executor: handle systemd execution times under 1 second - executor: improve process completion message - tools: Use formatted output for more errors in crm_mon.- Update to version 2.0.3+20200218.4544c9b82: - rpm: Run "make check" as part of %check and in travis.- Update to version 2.0.3+20200218.a290911ef: - libcrmcommon: correctly check configuration options for positive values- Update to version 2.0.3+20200213.68bd2b4da: - cib_attrs: Fix mismatching deallocation - controller: clear leaving node's transient attributes even if there is no DC- Update to version 2.0.3+20200128.df6c286d9: - scheduler: ensure attenuated scores still have some effect - scheduler: ignore colocation constraints with 0 score- Update to version 2.0.3+20200127.cdf84f849: - libpe_status: Remove extra colons from operations output. - libpe_status: correctly check for implicit resource ID collision - libpe_status: Use the same message for headers and history. - get ready for implicit -fno-common with upcoming GCC 10 (bsc#1160410) - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.3+20200116.92a6f7e97: - controller: bump feature set for shutdown-lock - scheduler: clear resource history when appropriate - tools: for down nodes, crm_resource --refresh should clear CIB only - controller: allow CRM_OP_LRM_DELETE to clear CIB only - tools: crm_resource resource checks should show shutdown locks - scheduler: display when a resource is shutdown-locked to a node - controller: don't clear shutdown locks when node rejoins - controller: mark shutdown-locked resources in resource history - scheduler: respect shutdown locks when placing inactive resources - scheduler: respect shutdown locks when placing active resources - scheduler: add shutdown lock cluster options - tools: improve error checking for crm_resource cleanup/fail commands - tools: improve crm_resource "why" messages - controller: improve messages when deleting CIB resource history- Update to version 2.0.3+20200116.ea5b06fae: - rectify thinko possibly behind spurious "process will not die" msg - tools: Adapt stonith_admin to new return codes. - libpacemaker: Fix handling of some operation return values. - tools: Re-enable CGI output from crm_mon. - tools: Correct sec vs. msec discrepancy in stonith_admin. - libpe_status: Update the maint mode message for HTML output. - libpe_status: Use a separate log formatter for cluster options. - tools: Move --watch-fencing to under "Additional Options". - libpacemaker: Convert to new return codes. - libpacemaker: Add higher level stonith functions. - tools: Handle request being NULL. - tools: Be sure to free the GError when done with it.- Update to version 2.0.3+20200106.bc6f54495: - attrd: properly declare global variables as extern in header (bsc#1160410) - libcrmcommon: introduce new set of return codes- Update to version 2.0.3+20200102.1e3b41f65: - controller: improve CIB status deletion messages - controller: improve join messages - fenced: Clearly log merged STONITH operations. - iso8601: Fix crm_time_parse_offset() to parse offset with plus sign. - libcrmcommon: correctly raise detail log line length - libcrmservice: handle child wait errors appropriately - libcrmservice: improve messages when waiting for child process- Update to version 2.0.3+20191203.d671faa22: - scheduler: make sure cluster-wide maintenance-mode=true overrides per-resource settings (bsc#1154881) - tools: Correct the crm_mon man page. - pengine: formatted output for log - libcrmcommon: Add a formatter for logs - tools: Use glib for cmdline handling in crm_diff.- Update to version 2.0.3+20191125.4b1f869f0 (Pacemaker-2.0.3): - libcrmcommon: memory leak when comparing time with invalid specification - scheduler: only add successfully unpacked members as group children - scheduler: include execution time when logging action failure - libcrmservice: use "error" instead of "unknown error" - tools: update blocked description in html output- Update to version 2.0.2+20191108.e39096b5a: - tools: Print nodes_maintenance in crm_mon. - libcrmcommon: Use

when outputting a nested list. - tools: Explain what happens if crm_mon.cgi is run. - libcrmcommon: Update formatted output help. - tools: Add a space to "CLUSTER OK: 5nodes online". (bsc#1158180) - scheduler: count disabled and blocked resources correctly - scheduler: simplify logging resource info - libpengine: Correct display of master resources.- Update to version 2.0.2+20191106.eef56dcd6: - libcrmcommon: Make sure to free the --output-as description. - libcrmcommon: Rename formatted output cmdline options. - libcrmcommon: Group all output options together.- Update to version 2.0.2+20191031.1d695899e: - scheduler: clarify message about when watchdog will be used - scheduler: properly detect whether guest node is fenceable - scheduler: initialize unfencing digests to null - scheduler: improve graph synapse logging- Update to version 2.0.2+20191023.7a12ccbe4: - tools: Explain TIMESPEC in crm_mon help output. - tools: crm_mon --interval should understand more formats. - libcrmservice: don't close descriptors above current limit - rpm: pacemaker-cts requires pacemaker - tools: restore ability to show groups in crm_mon console mode - tools: Deprecated old-style output options in crm_mon. - cts-scheduler: test "year-2038" only runs for 64bit systems - fencer: clarify more messages - tools: don't ignore cib_new() errors in crm_mon - tools: avoid memory leak in crm_mon when displaying nodes - libpe_status: avoid memory leak when outputting resources - libcrmcommon: avoid memory leak when IPC compression fails - Security: introduce restrictive usage libxslt's security framework - libcrmservice: try not to spam close() file descriptors - tools: Support "crm_mon --as-html=". - tools: Don't output nodes if they don't have failures. - tools: Update checks around crm_mon --daemonize. - libpe_status: Use CSS to style messages. - tools: Add formatted output messages for resource history. - tools: Add output messages for operations history. - tools: Add full output to node messages. - xml: Add a schema for new crm_mon output. - tools: Use formatted output for nodes and their attrs. - tools: Enable formatted output in crm_mon. - tools: Use formatted output for failed actions. - tools: Use formatted output for bans and tickets. - tools: Use formatted output for cluster summary. - tools: Use formatted output for stonith messages. - tools: Add cluster summary messages. - Rebase: * bug-806256_pacemaker-log-level-notice.patch- Update to version 2.0.2+20191014.09114c357: - fencer: improved log messages regarding fencing actions (bsc#1151007) - cts: ComponentFail: killed corosync doesn't respawn immediatelly. - fencer: no need to check the length of a non-empty list for pending fencing actions (bsc#1151007) - tools: crm_attribute should skip attrd if CIB is file - controller: improve throttle mode messages - libcrmcommon: improve messages when waiting for child processes - scheduler: greatly improve efficiency of interval-origin - tools: improve crm_resource --cleanup/--refresh help text - fencer: Indicate fencing target in the logs when scheduling and executing fencing command (bsc#1151007) - fencer: Make sure concurrent fencing commands get triggered to execute (bsc#1151007) - fencer: Don't let a fencing command with a long delay block any other commands pending on the device (bsc#1151007) - scheduler: de-duplicate inputs even if not adding to transition graph - scheduler: check for invalid orderings when applying orderings - scheduler: improve messages when adding actions to transition graph - tools: new tool to compare crm_simulate profiling output - tools: add crm_simulate option to repeat profiling tests - tools: Use glib for cmdline handling in crm_node. - fencing: Do not block concurrent fencing actions on a device (bsc#1151007) - fencing: handle fence meta-data errors better - libcrmcommon: avoid buffer overflows when converting date to string - executor: handle remote server socket consistently - tools: improve help text for crm_resource --validate - Rebase: * bug-728579_pacemaker-stonith-dev-id.patch- Update to version 2.0.2+20190930.7fd98a2c5: - controller: allow more cluster properties to take ISO 8601 specification - scheduler: allow failure-timeout to take ISO 8601 interval - libcrmcommon,tools: handle NULL values better in time handling - libcrmcommon: allow 24:00:00 time as equivalent to next day's 00:00:00 - libcrmcommon: allow ISO 8601 strings of form "T