dpdk-doc-17.11-13.el7$>1Jb 9 j>7H?8d   E  44 &X4 24 K4 4 444224KKKL;(LW8L`Y9MY:`YG4H`4I04XdYh\x4]H4^s%by6dyeyfylyty4u4v\w4xd44Cdpdk-doc17.1113.el7Data Plane Development Kit API documentationAPI programming documentation for the Data Plane Development Kit.[x86-01.bsys.centos.orgWCentOSBSD and LGPLv2 and GPLv2CentOS BuildSystem Unspecifiedhttp://dpdk.orglinuxnoarch0f}HZ ` D /8 K R 3 ` R R^ R c M Y ` v  S R k( <  g ?o  DK6 H ` D ]V GH8g,L?:,$Hqo|T;9[$#v!C~@Hp:/B>_7mx]gRҢVhQ}$Co<]l6_99Ww=b_Fbp/+en8AqvqjNFA$w ',qRlKVRb<zJjf\y)XL=HL)]e@s] Zy"?2Z/$AZ5cWVhUVV:V-87DC-4<&'3%MW$K?!|8|f<<"& -57AC-1<#'3%MW$H?!y8ye:?"#"epF2&+Hd Alt#Yu4yL o|{ Y lU H t[9!!alb{c>'2Oz)XDC|f;7,2o(DfHRMC%OJX,%985am!,h*a>wUs])@XF]+tM>\pb]&sE `=]LZ+l^_^q6?x/? -uA"q4bj44LiSUdK^ ~h (O~>le? BDC U N$B0>3m o/$ D1>u{SV*UQL[`=CPr8>mLZ`}df x1j7jhP?[oF.0 CpH>J G<layNLv/UHgQPѝJ4"t2% k}45oJ2L -aIObZKfiXQ HOd=6_}@]Dnc\QL"MKJb0.3~yCbAT_mV^M3 Jhl;Z_b3= *_pcN9(X:FF(+6JR& UJKV"V Jff?Rx92 W1K/- =% Q2(  <} - HJ)l$*0Og&2&)k.1m-gl"1*{",U'  K$9S pdwh&eb6.).ytr Y %E!]()?4.8<*1_RA4@ `'Y%\ wl"-5l)VXY#/" !H"!@R&>44( =kRH 20 2  kn 3'a<g|,C,+`7r "SU<[)'6 '!_"-#IE #6 ngn, b# a,KL4u:k=' -" E9) &VB"JF3+jc+  <!7{UAP;$G]   !/#}UM w 0 _jijsaR+?OM aaP}<-i'6'J-)eN>sl HBmnA-S-=%ڲ^x"Z@g<c*D cv+-Ri,qhdwщT)<Z">GTP"{Ubq9`J58uAX ǐl&ZWe9`C_=X_^tznu)x5 ~]GF'J}bM'RsSlR<ZJN.9V]zby _O O\ +% 9Op:!jg53" @,q{C'//}(w0kd-~"^ "M,k' ^'_iF D:E6STC$iEQ hh&(.DdP ,)"$61jv?Ln:ht7)$,9<:kFQ.*1 ]/ ++ QPXwo§0AXr1&-K eSC{H#VhPn {yQa)K;H ,./J2mT!2G"T}E;YCEJ?.F"S6F)CC(j#jN\23( I 6t:Y$ ! >>! upk\>!~tkb*=+m$>"j(]C)58z(74N*%dbniK3#" /H&+QX3#]n<'f1{ }Kb'_h0,IeVr]Y-'8).Ne@$=M7HCd ?1! 8,pj[| .5d=p:G48q_SPI;,<a:$P3+c% ae.Em)Aq!N&'N2$F%Ip,.-3x7@<FvG3Arw?6a(=.” ?$,#u$# R'AO1&2$D AK(!e8ehtbku6!="21 .1jVY(*U{5DCt ]*$@5[3E(jX7Nt4=9D>6u"VU [/l#k(2PaAA큤AA큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [[Z Z Z Z Z Z Z Z [Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [Z Z Z Z [Z Z [Z Z Z Z Z [Z Z Z Z Z Z Z Z Z Z Z [Z Z Z Z Z Z Z Z Z [Z Z [Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [[Z Z Z Z Z Z Z Z Z Z Z Z Z [Z Z [Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [Z Z Z Z Z [Z Z Z Z Z Z Z [Z N[NNN[NNNNO[NN[[NO[NNN[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[9d850583661f82677c27bf5beeb59048c1c4cbc58138e515956e553ebed7e0379e7ed0ef70f99bb7f763a48ddd95d5990e103bb145eedfd0a76d19c122374be2782b30d237bdbeddfde4aed01f007264cc116b2d4be2f398a7cb74ec7a5bc58b1e718dd4acb27da6e4493feb5c96a2ca23ccdc8ea20841e388ea8959028e38bfc98c02adc57337f58c40aae15bbac05a3ccb364e5adb1d610a16452e92f17830eac892e87c5366ce2ad0cc51732c76adda03e931a9b385f53fc7c344f6601de9363800b8b211fb4c1c782d536ff07dad63473c0ce8bb2f2d3f782eb7f08d30ab9d082457443d8779b95901ebe24b59528f4e98e5b78f19e1225e2fe62d425943e327ba18e1631cef6b7dc2fb57bf54649cb83e2c211563193c00bbfa15899cdee48757e21515941048dac273bdb1d8a581b8759e22a29bc2a1066803266f0e9b5c20dcac36b325d412f1e1c55f11e700978599734ffe7f52d7eb3b34371dc061ae3660894df977124e5336d7d492498b72275be641e713ea97df5d99cd9ed08e5a40cb30be8676e4a72cd91e01b22d75dc3def96bd253d39e26cc1ece32c3ba6a86a1588fb6fcc142822b56705abe0e94ee5e9e6d8fda16dcceded227e35021f9c062f0265aa0c3f24919cb84e23f644f122ff285fc68558ceba649f10f81406e2035e3cca9e897308004eb2f0b0a800c337d001a22d706676541bf9ca9deda8ec09292a559defbecb1a8131b3b5cb6de06b37129723acd7c4a5cb86e3d4fe245965ef295ed8494f394bfb27adee59e5b10672452f85d567d612a6d5b4aef91b1e41433ffc9deb28b07db62c171289e2905bed57729c5b034af0bee33050965ff084e87f858d30075142a43b680f3b67af7fa30a07f6c5501ef76171e5cae4871dd026900eae84d185edd3b0f4d251b5d1d544c0f14b1ea3d2a603be80cd102ed84147e49254c00c3864563dd568614411922cbab8b4635af4a720e638a13566f37d95ddde54c35a1017a9bb83c73378309431cf068029f716e18d5df11b1499e3a3ea1681c4fea9b85c20fcfe55dbe65bfc9105ec02f3c6bbfed2ae393b6cd7900788f1e27dcdf68eca1ef3bed3b68439f2e2bdec3ed7e6ae5833390b010441854eacc9c930f3d323180e209fbb785e6d3bf6bced592d2bb544039704ac1d891ee082a03913a97cc6482a938c2dccf69172887b500248dd83f9c7f95fca18253ad057486adb420c73f97b588d21fa7df5f609f3c9293632624007cb3f985082b7e5f81f1b5f8c298b3d0170bd0c5b2ce5b96a9a742ca865d6a4c21a7d77e411ccc80f939050d4236583890ea5dc089c93c028b04d5cd2a1b5287de7fddbf1e176a53903b9c6754f4d6e779eb4dce8c7c83f28cd4108371047b3b0417bb855e6e2c575283b721da1fcd204bfc5c3d635c7727ed19d77aa2ee6f17c5fd885b1b1e7354513fc34227084fa0af67a72ea4bb97b6bc317aafc78dac3fb16179f2ec7c97db4f430ad68d1906b62564f6533a75fb1b5752d91c64b2cb623759fedce14dad7e72afa87e071975983e1e4ccc5fed581e3e61b28d43a9f0fba919c3f3fddaa450151ee904ff521440f0665ea8d7fff3dffe40adb20c7795bde9f1e93ab5e1318706f6ab407a68957d981f1ade20280eae8963ff993911c8923aee0eb5826be39b268a15f70fb9d648361ee6fdc54c3a23d5f157f0a9289ba670447967b43699d9d56e88eec1b3d39ffea4ac4dbfe33555a01c81962ab9beb65ecc207d9731986e7e02958b8753768d0a53c658fb605d96924cfbf1140dca7ee22a785564e55f7086a518e08058590c1a2b41618fd7b17ef1ea50f9937138cd54c50cc51106a9014a75cee9d9f4f58bb6f5d9d45b4389b9d6c66db2fad888ae2ed0f7d590401f3f4056095e46f528c4f7bd51525e2d17f9393897c45f983fea6c6f6408cc9bc2f455d08cb92b33b963a53302165ac3df289c81d215c82898ebad11cbee039d00850e9db16914eca8f00353ffec579d3917b83d1aecbab1e9b9942354100c3097ad8c6098cbe8d8330c5e4c7cf384aca33389e6d2bc9da43fe73380df192f43dd28376dfe982e9392965d5c6879af3c3bbb0117eedb5948b2799fd67f3da01b8cc43bfd67f5076804d95a9e4e9e6c839b9f57bfc266e28cf6a72c601eaef22f3bfa6bd510b3e3dc2fa989aa52c12ecf55a4db496e2b36dee800c8b1d15ec503e8fa2f59ec12c885627ef70e187a17eb8a7c5ed59f8b868deb5e6be0d4fd58aa93e831176c12961ac69c185f1e9f0fc5cd5d7775a6e630a747f5c608dfd8a59ae125e018db51c0b6cf5f45ba9d0fe6585b1483a834250105ef25e5522fbb0d3cd3914b6000a982721e559807eeab90213bf2d22ccfce123d635ad195ce57cc306aa669a3d871cb625a917ac322fd3956836362fcac784776e2ae754b63dc42c97a4993c7ede34285b2bb7c8e490a84ff3c2bc0131099774b6750fb923a161d747bcb9b2dba6ff98a17a034800a794141868514ab67e6c68c6a2b6b129788568dc938cb3e5d9ef8fd9014fc4d81db4e155d4cde9749844ab6868844e5bef4e8da11bfd1b6906db5095b303a0eecfffddf40bad6081bb19db919f3a88331ad9b6855bc1d016c8eb0331d4e89707f76729b4d296f1ef5a8378cb0df492c7fed22d7cb37e737e0d0c3e3a1628b3a1dc7e811cce4a60cb1a19b852bdb6aa5439b91d9124ffb2cb4aa622762fe3afdc8f5878705bc47b4ab7456cd7cbbd3d45f9a1436973a2aae66bbb99f2b57f2ef160182825fa5305444511ca1eca4e1b0b38528b2bcfa36512722e08b0df565708751ab57fe7392cf319bf34d66a96a21f1cd17f76de72982990829db457eee6debc64a5c0ded4fd743e0adf05732eb8d2c1346522016dd5a2ef91821b5bdb35a7a65c78fb49810cc5b5083c664f2865dfc9c49a4b2c9027d16448170bbf15060fdf8da46e5c153788b331dad17e7198e94119349397a04d3990acf239a4a5e102863a1b4457b4b16ff01d2a3b7fa046fd9288e97b1934f010c89a4910c94199bb3fef630bebc112c0a02545f5b01bc751fee1656024c739ba42c45107da68ee8f335099dca0610de509f8463bbb5b502019a00282d0a2c944420bc755d6a7fbcbd5ba8c623a89cd62a86aa6228e31bdad66f392975a92d68ea0593ec8f3c1d81284fef6b1d3244cd462184a63331df13442da424c0729a95eba857bd2758415ee6c286e7ea1222a62df9a6cf57a8d973fe3b2c950ae2041dd6dd66fe3cfb3d66a7e7750fda604113a018257482a21694cb5fac68af1716517ad24c6a07c371eb7d5adf21c51f611df4cdd22e57eeb5ad2de561be1b6e5b3f20cc386c788e89374cbe998ef812e822e01893157ee407e2fdd2180e1264176ed518689a3fbc9b36e2f68e27f909e150bbe159e98e22144dc736ea73be310d1f7e91a1d1d0e9bb24f3d8564f5ac28b1983ff88f7784af6a1b6ead5e55ae2fbe0c2738b4d1a2798e3d9ee47ee866e43f0e3a9406a8e50ee22cae0f46b1abf64972aab9918ea145c997b1fc90dbc3b206bbeea374f39316566de47a21abed75d69a89690172028777ad38895dd0e2f7a1e9e170823cc809a84bdd6351a198900c80c4623982723d489ccd4bfb075a157a9e20ff27c7cce6ccbf821a69ea369af0d1a3ef3ad8d577c4240397a059ece51f87d7b4c7b187fb61f98b75ab9eb9cdd505e62d9a762e9ecbdb4abdf8ca851fbaea43d56bc42d2b90878c89fe0601ed85ba8750209b9971cd0a427b6a04b109a301aa082faf44ee931271e5a867d8633c01cbd17443fd4b004c2358ab6b1a2be00d183c9685e2e52c7aae41ec12d860a2660accc22a89bee8283b201ca563e8a37b3f08af40d2c01c84be9e23e371dc4f7df9cbd4ab3da3350d050a71d5979f9cb3f062835a9f65d1f58eede0610d741dc0b6356ca5a4f016b9f61c37a185823c3aecbbb983775f30c665ca1c6a1ce7e5ffb91d21d67de8e7cf1a60e16587dedb5922d5915c593ee2d358fe614200f7ef7a6909fb287baf0730b87c0d86daf40503091d148654a97f8f9775b8554d6ee9d520ddc67aa9ae498547b673a8708858e5da2f8e39bc8f0892e091897f6570fffdd29cba192386c42dfbaa32a847a30ea0dd5ff7afe0ffe943105106fa2d8441ea55f72116e6393ce7ae97d12cfb1e5dc2e898b2c0c382f22c583d261a290d647b4ba4f11d2503e1980faf6818493f08e9c219663c31989ceca54497b9d15645300e15eede93e99eb3a1047aebe7eae66e1796130089979dfb6c51efc4a401e7a96e26aa83b5dd0fef8ff7262bc39eb9a213b79f72797987ff39be55561e372c612112e1c30a1c62d44bf28015594ac4a57e3f4a68914f2e0090be64eb362794aa5ca0f6931ba37783b80d0d0f7339c58d9de7c33a3d0dc51fad0fa2e262f345ef49e4d54669f8767670b0be9990fe4aa12a3aebec6dfcbc06b181dc77700ab65da4fdd77c669dc1d1e7bb5b427f80d7bb6de3d92f1007a220d9649649e8cf476ef295aba8f8a9bc4525996479579e2887a00bb43401c8f64ebbe469017dee886d08649e37c9bc8392461aaac4f9c4dbe1c9537521f1ece7edfa4805b1f54791738ee8fb448827bcb714be45734485a43572fd12934e277b785f5a9e32f8c67c965df271e4716cd96fd096ac1efd084f3c0c8f2b6ea89dfa0e118ba8d7d99ddd626bfe5ab81f8d262faa13b05ff6747bf29791286005c584b33dcb8ba114d1d4fd8f0e78a677da631d874862b59c6aea14ba4c74bdbd6e8db21b9d95bf493189cd7b89b1291180fe401db01a6e4e6bec2844deb921d25133e9a60b29cf32966c41ad602faf1f9e4b93ea39e515c1508cb6516da1020a105cf9c6b1a5df6fb67a2656db8f6c0603e5f396cc011703185a899fd4a7a8f1c9510fb32aef40e02264194cc7c569c668f89ca77b8e9b624d6206924c63e41e2fbd915fc76eaf42a326da7fb5b20ed208b43a724fe28201bc7bb2de78eab2206055e073c8a702004c2899b2606e20ef03d4a5b9700520c4b61a6216c254085ade1b5f3d5901d63dc8d41a4f0cf3d0dc51ef287a30c6b57cf24dd2685bed3c5f1ee70945c93c3857ecffb70ddb18d4b46d22a750ee5dacf0e26f2fb7c35d1de97271207d990d44984434f1ad2f0415fc70cc7316ea30b7328d9672db0264b268caa092848f907b708f705dd7e4012fa8ea29f7c841e4b859467ff28e655badc5d9a13a823e59baf7973526b924ab7e0771fb18f21bc4b0098b65f250a167dda5da9716b972c80fc21239a9f72a8b6fee9672439a90307f21407b321649cc9030b793e4a7a8200577f96ba27426d4c48a754e711b82c115ee1b7df7283ce232f939681d8a4fbf5f0603295e9e3b086fac0e44862e2d9553020a67e2be7b3c8103356bca4cb65129cd9ac232674751428d1345306f9c2fd2807448abf2e5f9109f80c44fe541e135fb74f63aef6fb9dc53db6548cee8d2aa8bbd07a7a0780826d3782e9db50f74a337dadfe742439dd9eaab09ff6582ae90203fde1f783fc4322ab8ce6151168341b5ce6a7c7a725877118b87e8b972d2338337b153d3838bea02c6325050e14320ddf0929cac2dea1eae4ba23a59e365bab0908f4af40b38bef08785e1c055079f8e1b9f14ab813d6f1c47b0e7ed38299b00086b26a088afae2cd0c026699ce60abfd744ea4c5ec7185106a6c67adc46cacf5d3d9953af9b20dca51daca7653c76deba383a27138ea1902a1b31e848fac72866457e4a9364fe1efa39a83390c150afa8f84adea93829a5a2316aebce6c85c71e8ab9c078a2f0a11d7d09d371ac68de96af4efc24860131ff6fbf367c3cacddfd5ac2a2224040f67ae4ccb910efb8531e672464e0d1662271ea018c7d94db0651634454992d35582d287801fd280571f37caa2ae63d265adafc8e844a668abeaddc9d00adb1d8f94d9a324c7a9bbaea959ab1ba02a315bc32f629b21dc2f8c14e4a359bb2228c89d336075bae1bd01af18ce8517295cb6c6dd0841942243735e529a445059cb6d357551019f4fc140124f8d243b20344b564246a272228e7ffa71d1a629dd852a7479739676d388c61be04b5c518abddd499667f336688982e000eab51b97b1c16215d1f41b639cb55caffc56e2d062ac11cb496954d488928a41e7700ee32b9cd0cd49a62a00923c8b67eb7531cf041ffe2390ebd473caeebfaea88c4d24d3aa8751a49e4530c1a20018000bb408db2c51e3915ae275d7e1fdf3ea7fbe40a9050256295bb67442768cf79f61fde687d01df895540080c4d1c2803afc647d08776c3d8a648f98a04f12070c5cdb1bb9eebc49dd72df746b7c6bac7a5975c439a2fb6533e3abf1b6c3befffc907b3614b8960b628dd688e52fdb04865fca7a09447d51c486d2cc20b30782a23888a9931a5d630a960696b296795a5a7f26f5b9ddb4bb173fd4458cd9c6599b48af10a69f454882adea2753bacac0ca2f6773035fd2a7384f9a34779c735b1c2b695b80c133b585d462dc4fce29a5ae6e8f1330e9e15022221c6f79214e3b61eb77e54415cdaee7aa3e67fec784fab69a2f7fe9d244730976a004a9623d66bddf7d47f6da8c9da195790e984086c7b19daf9fee8a5effc57b01fc6cc5cdcbbc0fef5cc356bd4ade3d9c95f1677afc46cc6cec4d8acb14120e7040b49ba6819b0a2deb5a1ed4acd2094014927372532486a63a72fbc24bfa58da0b982370bfeddf1bbf15512a0c360575c23fb030cead34b3232af91655bc1399815560b37f6831ab2fd85cacef423dd8ff09eb1c92ee1070d2a0430921e063c54a2b43fef6cc3d499da8e42226fe8481ddfaac6728e587f5a7b295144ef6a0d188e1145fac05ec4144e4aeba3fd31aa66faee8c1a4b5a8036b43e9dff6f1c253f6eb19029ecad54a377059ff7f2301387c7164285ffd797b0c201291019bd597247c56a00f4b2bc1bfdb00e07f7969ea552ae60554e0cd2c68ad6e4ba8500dea92ca7d48c31c6c4c75144dd169f11d322c0781461b40a8a9e12e12b34081384582ee1d1f2dad61752c59d0a2775b04f69375e72dee71ec4da4143bd240bdfa9f98eb9b4dbb18e56ef4b8ec2b158ea40fe74f273e41eff8fab7af1441b70f0c0768f85366540b7bce89fea8d42a268ceec491fc9247b37e28c2795ed9961201c10e8dd710bd97ad1daa4f96816bd3e77c68148e4488b0cee943a7454c28d31e56393d0ef56277297548de132abd4b3bdb8d3f699d6f99b970577dab7ea87516cb17dcc9cb9005865be9c7250c33d381ba3b1626c50180c9096211333d691d11182444ca404aa14bd8494790c60bb1a730dec22dce3394db95cef3097b1ec613b3b292c7fdf3898c6f79584bfc056bae327e31ba28155a9e90e05ff056aa6081a024fdce27cc68342301d9f6c31a5a35cc93febe5f8035fd862e634614bd7a3a6b06618bf99138d6ccf83f8b23ab0d22c2706ef905f43e78ba652a939cc7fcbff9ac130ec7858cf4c128e5982fa3f29b25a4fce545b6b6f04da3368e8cd91f6e10092d1f3606594ca98ddb77c947682e728b278346b6010967e60a0f3f44537d0ec69ecad692a1b77427f1d74fca8af32284f4d9e2cb7d28c1dc199403ad9c545d2c4e068a7ba49cfa01697182c18f818ce61d770b1a4b5e7dc05db40d473895ab29ccd749c0bc1c5855e760a11b9e2a7ca8bb484538fe704b743956f4fcdfecbef914f2c88f281ca96cc90ac71150601a9380640035c8032cb050966be8542ef3aced24951031aaf2ee56684ad8959bfe11e0bdf32181f40362e45276cad19a0215797773ad878df1afe63bff92dd3339edb112cd04b2cce93a06765ef31e1e39a879e090b07cd73911f2c792351e90b6e70ba52b79dbbcb0e3299a2af858698e35033c78c8673f2ebed70bd10000351431d6943b0d75180c97c28e92fb8b2cb4e6e90c45a0fe5f3bb66ae9efec141f1f67f77bdbbcf779625d6115b6a118f728c454af50c93c74fc4b86ccc9c8b7c2ffe5c48b9a5435d1a01ead5d25cc9f4f935767efa804fbcc22913e73572e9f7a3d5cdfc5c717fe62c1eb1068783b52e3346c2567947dacbaddc4097d0155ccc7d45b263ed62d295fd42423fd8fb0db8fc34cbf82a49bbca7bda8e8aab2c4d6918ebfeda37be5370f1d20e744e288db7a8eede9f6467ab346a93cda034a7978dbb5040859c3ca0af8e180d223b68c03c7584b4bfde605d4b920bc2656f6c2ccdcd67a06b4f156c948b7daa2cee22e7efbe327128475e77ab21e32d7c7c702e2a648dbfdb265673f2ce5347663ef3b24ff07b90f75dd70935535ac32e18420f31043ee36fb7022e9e9ebef17cc1f7855d03a252c5b4b976af7c6adf7c0927638c7eab2cae2445b776e274fb4d84b1c1df0bc25c0c5861de5f7fdcfd809f260cf35c39815b469a40f319290c744a4cb1a2c1732fc9b0f5207df5c3e5366e042c0ffd3bcd5e370c70ec9bf87aa9eda99529b4d28f2379844d48db88e478596745bd5ce79e950bd9d27472b01230c33e1570ba3d18f70ea879c73d9f5e4fcb0037133fdab8a096d2cd0d2caf00dcd6ce3e8a722d75008a4b8ef8693d9bfe9e23f5ba24f74e6ebe798e6c028896f108a0a0c3d8b90a6b3f8ed7a8d9f012f86e1bce3fdb39eaa3c36133b414a15d670980645320b46a12f100b0ef724d4caecd36ca1a233fb40a564fb5ee4386308cf2012d15e306c5e277cce14f96234faec0a7aab016fcbeec39207b1d3149299cc7bffc7ed588626095ca6dc44df20f03b094cca8e2ce424ea8675ca6f984706134f1bc4631c01fc747f2fd9b8f530474462a6bd9221bc4800b145b441e3720ad0ba1817740db8f840b2b0c6ed8dba0d3db0971f00f72afeb5c98dc7c677a98f91fd632c422b29f5cd4cb41607a30d7820cc20ea76b4a3b8f57d3d2b7d102b58c8e13ad95e83aa1a6ca13a1c87edcfbfc91317896452c31a9d49c4768f1b4b46ac32e0907e00a73680166339ff62595dd2d2eed3a79fb9fa0c2e8250e89539f6d678aa2e5e51e26c747f2fd9b8f530474462a6bd9221bc4800b145b441e3720ad0ba1817740db8f5cd4cb41607a30d7820cc20ea76b4a3b8f57d3d2b7d102b58c8e13ad95e83aa178feabe3c5c148145751813bd515c36ae5a63e1453778550ea17a16116afe64d78feabe3c5c148145751813bd515c36ae5a63e1453778550ea17a16116afe64d3260ddaa44856ba63d14621f2436ed9d3cd432214c751968a95fbfc0ba3e8995c747f2fd9b8f530474462a6bd9221bc4800b145b441e3720ad0ba1817740db8fdf6fd4e35ce1205eb3af2dafa276c6ba2b8c5279299bc2e8130c43946e8b686ffb1bd95d3ab84076623479182c8493531bb685720e25eb15d3f40bef58482e19fb1bd95d3ab84076623479182c8493531bb685720e25eb15d3f40bef58482e191c555557ca84ba3598f52c281780dd7e22655db21ac383712e62d4540a1bc525c747f2fd9b8f530474462a6bd9221bc4800b145b441e3720ad0ba1817740db8f8f6f6db7a828793d638f8adf137a35dc9d1560865604d9f5f2912bc1cc6f1fe0ec685765a35b75714d33039e83b2da1724150006751b4a0a7bd146d4fa7e46c8d2bb6f2ef465aed26e30fb62b6425bf1086f1a3052ceb181afb53daeb4d1963d252e7596b852c1af999ff2fca39c95dac1af4e54f561ba5409fef8f56de64170fdd3e2064511b69fc65bee215f8ad4a2ccb97d019899f3f4b5eb1c9407a16d2e68b0463fffc7ce4ad49bb71859544e5a9a00d2e707e30b8315f949c92fdac07b190726c3b22b9a99d17657f604df8f247f034a4168b95de786bcdd0f03505928940a609997ee986ae32613324261eb7403c2d6557d089d6f7c5dbd6b3cd29caf120fb5d809292e5f7d5c717d7c48dc8212f3898db625e082bb9ea0e57357924f957122f1e55bdfb5fd0811f1cc1e0663a47cae1f14057a820d22640f7c1b98c92a8281b8201bb032f2b5a39c4cffee4118dcea319f5a0e30e049f033ce4af589c8863a3f35b0ec3756d4c82df886d2e25eb68b0c3e7513f066f73944aee1786d4af07fa98b3143448c7ef3b9f9411a4959148470e0f885cbdf0824852c2b94a9604292e270e3921f8abf47b08621266d6681b99bad1c22abbd34609f43f9c9840908162b42237eb009f1315757f172824624967da5d0f3d6842a00ce28058a1f09604920e381f1eac386124de840d8547a2a45c1e3d457bd802fe44b1e71635c2b66c0b6f886063950a5db9f266f75f25686550e92365bce849ad2a9a9255456e54568e11423663ebdb3ff4936cdf3b8f27668d05757c1fb15ed2fe8b19db30e7a93d007fdee3de57600eb1c9fb52822a5d774b0f87d5604606de7a8d96a8aaf209d67ccae7f7e5982bc0cbaa50a37b3dfe297bbe06f50dddf35415024f19dfe24845a4de2d0636f335da46aad70fe3a527a4cff59a742c4d077e6f471d985e3ac573aae6130996aabf3beb682c6f6560a9c0f1290c41877676427c231636ce78fca1671572f04a8fb0090180c6e7c1ab08759fa188b02c8578fedbee22299afe6d3437e75b5a8a3d6c045be7c70443d7f148bfbc033c65ecaec2908abfc7daba1d1a7c93ddb8b5389f38a69623e97c6f17f552ce4ca9730b4ad3ef3a9f1beff190e9d0624962a48c92722735d7630f7bb2ab55958c9e21d3445f6340774abfcb0018a60420c7fbb1c2950dfe87b4e8ece4a3a8ee947c6ab4c65a41b2ac29fc6fb64bec80366b1a4803a3e19105001f4fbfdcb758d9f7772158008dfc342827e9c490a4544b5ac6b5eed756e0e9e3d34aa5d974d31f6f35b42bd68dfe226b5791447a2367165f62997dede2164664cdaec19fd505a2a3ce07804d0ed148a00089dd229fea0e73676db148269379da7ad7d277b89c8f9d118dc0aff9e4c0bdc6e7420ab5b5f20b02719e0f2e2520168703894e20060012de6ebc3e42daa8e0f219b81d338062b360be85ca8bb3a13cd46e51413696a0b78d414147b5d39748756d935c15511b5a657e2c638f3a0d38d03d001ae36d0e8a5eb7b9531e0076f7d33fe526426ceced0e52dbb6de52c25eff7c70d9ebff3e362b6b990ae97943f9ea3bb3daed9aaf0c39c80ccdd8b3b7670e6d4c644f04ed53818be032666929f5ef60a31e3ea584545c4096ea4cb1a0fdaefecd1b7665f1f5b336b78c3e00b640025de627090544dee1f854d3371361ad2793376e33dafa0a793daacc226bb0d28de257c1af39e59514154a35253c23da8f5b8657fc026e1a7b8beca8d293611cd950d7cef691760bc09a330c9c43e0befbf725f222d6743118ed0651a0dedf8358c1ffc320959eee0ca88d1720ef0a1fcac140791f040a22e23e81fbd689cd953ceae9a2838ccc887d3112270f915f970f39acbf806e55fbfe854a61fc08be47edc2cc454029c215774239c8abc6c8a204c7fcc427693b6f21ae49cb6286093817b7300ca3d996b04d76aec5b73c6e962f1085d1369f6048738c7927da4688f494cd2ef6ad227074937b3abf894011fb4487b39600a0ada92af4c5636408fbe622dc80116969f713c44637ded7a834214fb535543656ded75e3a5a59150c0b17fd355c8f3d7ec58a3e468348b97a2a56c21a7b8a2d76cd23b8cd91c95d8022cb6d2ecd9be09e78512d7a920325f84047c6c87341c7c7b0dcb1fe93a80f6dd0677e87233d5ca288a2183bbe97d721263b57fe334b588676add37369119fed378338a0b549b5e1a16b58a919a2ea3e9444d589918a0697e1f7e14f3cb06f64af2550c407d667ec603f8d4e23c6a45308e05613817c6584b5ffedb20431e00476e7ba8b2ca2174e898cd94d4ea5501940585b7732bcb0c79d84bf18eed004aa6fadb8f9194e041e7f4d15c1e58d418955540722263db7b35e1b7222fa37c4cf6b26bc9bf4b2e560b8e2b8bd84b4891965bf476670c26b94b0757aabbbea8601b5361598ed40972974d7470aae66cb3644fe553c4a91d5f99e360f65b84cb5344643645d74252dec09dd8190ac0ea956c92a29ee0b9b24c91d2c34e82a43105e0bde9df7c0b42a958feac3d4c361a95541012135bbf8157bacf676259e4f2094139945eb20474f0e5a90d6c91166bf7de1b8162a63b8c2ad8607216e22fce56f43d0b09f69ee032265ed3d0948f95713c68ae570669a752b9da388ea74cc8c8d1c43f1de9bbd3d622a9ac3510fedb0cd14f6f59a9cd77d975749d6382aeb1805be49579f0a8f2c452162b7ba641c5f3eb427da7ee62143cedfc370927524e79741ee3a53b879346878cda723df2916c24cd13762fd324f005601889f8d9ff1d2d405732d19cbf2ecb3bfff23ce9fe022903d363dce8e3e2a641ffa79a502728a524a8d64ca1fdeb7fbf353784ce2d94d5253bffd4bc3d2ce30f50fd79ba6c5e782223e16a98f0dfc86b7c43ac59623c7d7eb4c69386d7645e91a7e774ba3cfa289feb9c23c2c806bc90b522948b3981181aa2869ee4979e85b43b5abdfb86f3b5015224c070e9cb0d7d517dc420ca0b927e18fb89e8c28659627ee0c904420c0c924964c9d4c9ca845bb4c84914765126071b84b0e944b3b2d03196455272bb998d663da2efe1b2b22d290c55fd3c9ad17246349c21952a8d938b0835bb03bf8135a15811e85e0fb2344e74ed725c1f82be09c18beda98700b342370678ed909fb8037e4fda053f72049995f570cbbb5a93c7d1dc6efd79944f51dc055c38df61343f0a07b2813104e33bda380a7cb96ab2fe14dee3c06dfe3fa4dcd17c213cb1763eea3a9bd5c3f3536b186db15299efcaa74919579788d6a63b35ec3d17713dc1dd53dfa8cf50bcd80a0c488ae1c4f43aa8debe4e7b10b1e78ce310d07fe2145f0cb6bc2dc09a1b5cb0a5371e29ace7b71aeab01e6d0f0596fe34a719077ef3554b6d57a842c5c33d6d485f5fbc27e6b755bedba05bdc7eed58d7ecce357ffcbe4c45b394508a8f29c47297bca5b66093d3a1bce18beb2f3232b9e2bc70b7c1dda4b30adeda34be9105cc43cd641ba82734c19aa3822ebc7e650c8dac333d2f22577e300df10f1d1e8e06f32737659510da8a9f932dfb89abc790bd38e96b6f83bfd38c4b601fdff143e4c44d4c604449137cdbce21668b51197b8c1688244f9ac95e4a8476d178ba42ad9a98dcc2e5f10692c9f1c3cd74bc9b5cafd44bbd463efbc63426c494b3bb4fa55ad4ca0034dee799878bdfc4de957375edb65da535c656f2dd2bede6fa7d2b1bfa798db8c6a0a1e93350f2ea740586fc92e07d956bee104d5dff5708492569b09a692b18e20ed92042d27924c35b5cf90c855f55efb4a3d877bcd290898d450fc58aea735486c108792c6401a68ddb817422704e723ddcff08c6372714bd74e13c3086e0326f31e763de9d0b6f539c12af202cb5161f4edd7eaa8de90bc9e04a824cd5a08b7793d2ecb69369a3968b70a29f97012c5d58d99f5409ef175a35b2da144b070c80f5891cf759e0ecb09fc6aee51fd9815b90709c793a02c72f30ce5d549b602c16d38423c1d47f79bbd3fa40bb5a945e47267f4e039594e61d38223b16613c253965188cfb4c2d5d17904cd9d0149e398fff39dff5f83ca72400bc65fc4ef8a799900a54afa155699bd808d7d21c16c91b1ec54138b958c2fb55fe6b1cd956fd031699e8580120d287826212c5ffe87abed787020e9d822f9eb873f558934bd45f1bcd94fdef9534a1614bbbcb735418bc3c6e75d1d7ef43158655b37b523fa94f8c652e02b5616932ad7825b86975a0642d1e607e20ff9448b2b837020eae802e50c8dc8b42567d2c9679dd907e62bc7f6cb9069ccb9c7a983467cf40b42e7f276c73eb0de2e120d9631948ad9a3a0c0f4b7c19b045d8398f756c3cd7afd293839190b8f4630abe984f7fc78b312ac4fda8e3ae1831171e2459ffbb7ad4d391b7c5dd25c42788bb428252dd7751505c703daa7822e91440d2a8e6b06fa2c9c3bb82be5b3b62bef4c594ee9d279e5fea77e4f9d79084057623b2c0ebcda069a8e562af808315bdff43ba8c4cf6987e88283f299bcaee53af67f5e6f2e80f471c44ff1f18b8c43b78f481f179955f3c2addb25bf7aeaae610d359c2df7822dfc9c51a04edb8a73ef6b314716c68d4074940775aa9a821680fa235590a27a0058dd1b10141d2f1a516dd1df1e24d6d29eeeabf25bf1922222d45b7ada6e7affcaf82972d0819d6af83243471042678443bebf2c24bdc6a72666e1b300fdfc5ecf102714c9fd57df76fdf47139f8dbf8ae59863646a30bdd21a49026b2a0f553e7944593d3cf015fdda29c71bb495e68c77e88ec1b7711604d6cdeaf3cdfd661fa21fc5bf18de929671c801f00415eaecd35abda3a04665e9dd0ef5ef2c6ddf02b4a12472984485adb027fd12ae6c60ffd203b1a4934acf44136fc8c90fac4fbd0ee48b47c707c99ba1ffc252b5d9e15a8545aa09e5233852ec1c5facc77e6b751c1bc44d2e14a955636314d3cceaf016ad5da0f4b5b79b0161e8f5d642f7d9d815d188d336186a555b867e974026fa442b133629bd27cc7700b4a09823931ecb5e468cc8e642c8ff9c660c6006a3d552776b246a6ca227ed0fa5d48aa50b625eb673f8149fbdac4422d8d678ad8d74da3e85d03f2bb116fc36e575218ca0f67c903b06be93fe352488d9a7b4c17232e3a45b748a05c2838e483690ce999658af87e027a1c9c235d5c7ecf4cd447da689301c5f329a97b94a25daa04a6637e4ebc37a33c734094dde8a526159bfa803a849193f4efca98b106712415bc8cd1c2b4f6a67a328c2c60f9818f6ffe17779db315bfb8c6b102527bd45eec3440b03a61e817eb4b0c04c94f42feedc38d92f1e8ff7eb7bd87b43f0eb303593ff36ab007f4c7df62ebbcc05f0e4864e556aeea7b80c843a7e445ae3016568768eb391fb55b0ac16f81967cff0b7441086c1596b818a6dfca99f046a243f678e49d24c6aefe1032c1c0573ffa6ade5879c7e0bf781e346be3226bff4e3ace717d6f416db26b73eea49fbd060147a10170d1cb76c4959f316bc6e0671cd50e06edd7923b1043b897a6bc1c1449ffa8b632754669cf122912c911c5b904973822e4c31166afcf624e533787fac63611f8765b9224ac44d9cd04fd501d256b7af489c35198836164dece7bf933d85de3be1b7f848ab11a9659eae714e211a2a58d38573ad9786297c274d8601a25f9e0861ab9adacb0738d763e5fee09356f964f8833492163bd280185d2f9fff438fa9985d18ab31b3b87e61a47110551b2039a1c32ab72d9f31dabd83c476c1c516ba308c12bfe83e2b14561d0e63e629f3a596cb8939d213937f8c31d5f07e4234ff21fe9fd7c48e9f54dafe0a6d07124aa2f193d42704fac4046f764fc6d2bf7e0aef1f29b510fd5b79f4ed9c728056c428417e4a5b9482a99a5d7b89012224547824a98a626cd280537cb09e9b5b9ad1a5a6135ae6852bdfd0c8210116ec399aec9e940128c6a54f0db296185fdaf740317e609a568171b5a3b65a0ef9f105711bbce0eb6eb24d0a69993c688cea30e3dd59b1898aab8801e22f4770aed736142f804ed8f679ec386dfb4a6199513b68c1782cac52f7abe8c9267d4d0af3907c6c45876b426518ef7775d3f521dbdb4113b3738ce18968b0550960be6abfd8c2d7e567df90cca61de21c4ac2f39862532a588abbc37725a509645fb7a92fd9f7bf29d0541534277ee58baa1fb25ff9d456cbfb8488d4f7a0d0fd4f316cab75953bf9879fc1bebbed496740ae8491e097706a3dcc1025de60f68d22ebf45a2caa69972298c32c453bf20ef769e87f77bada31c0c3f0958327460d7bf2e78b11afde8463bb67793b7964ccf7cc3b7c8be8af18f95aca191725a0ef36d3ba36b904ee853c5cdfc8492ded597164ea310f727aa860f6e976d9e8b5a78660033267a0e20b826ed79586cab40b158a031aa69bd4de2d4c9aaff98443ccf4a38921d4d004f59c7d71e6ffd5604b632eda8451ab473a3e6c25097856d1629e80a796f9b3dbd26c7b147ecdb615d07c4973e536c0be6e971280b9e4e0ddae51a47bfd508415e03c760f592e14bba8987fd7bb51ef4f54629ca6d1b23cd8120468ffc046b2b7d7e03d1e72a05b5229b8e986c7e5afcdc5fc4f1d8005dbcf80a2713dce3b0de9dc1a76eafa9565069db40c2c9650c2ecdb19f37679b9e61418c04b5597317923951dcc9b68b3364464bec658fed3762a7230a75de7451d2e77e60ebd20a15d749ffa6985d5c8f20fa6e92f68ff486d996551f02b261b30b7a2ca7ac56d67ba589ba9b4fb0503a9b9561d746a438646d47715e45d14f7f01bb838910f3da2580e4b192107cae31d3802aee4ab6e59fed2f1d351fc8c3083eacbf5502b5c95302588c5c7dbd3e24300c64a3885e4a583e71786bddee77b18abaf0053e5ada32cdb42ade4ed7510fef05e5d4039bc48efda486dfbaf8c6ad9e4521a93ba8a932be929ed857f7e2206575c8c1cd058e9cd3a061b152a4264088dac5646746a794b4248fd1b94569b4f507eb59961c95ebaddb206eb515186bb6e7abc3ee46548e606c3f8bf3ee9f85ee2c2a996c673f1f8144a0d9a12c7b1f0c861a9d4b885294506452ef1ee9f76e6a752c486ff4bed8d6859d3510bb0b91a8f5d9432f8f1f45f26ed861ad3cc366f8e561fcf521fb61028029e4583e3e1a53eb91e157a63a9f9361432adbc538df142f90b0f13f77482de90b46baceb7c08bdcb1d6758df7372bf388547ec1872280caf753d82f6add99fd6134fa9a356a805acc8d0cd82d33cb468324245b27e9c42f200280b8c5c9c15d5b819a3506a2a64d2c42d7e6dd5958dffe04b14311200999cb8c7f4d0c2507b0b18dddf22e3f8553e85d8f34487e3134dff50d508a9b130d73c992f7951ded2e3d4931cb7c18fdee162c1d1e6365690f4f33d901defeba386a6e995dac239b5a263fc411df004d94581ab77560cc76329483827784bca73cea6be296505c9d662118999e0c3f2d7faec572caa2aaf023f799cfbe6985a78947e7bf59fdd520933f011aa9bde291a6b6133dba0410529b051151e15fe4522762ec038ba68718573951c3c063ee34a1831d5cae11bd9c485cc17bc7db54eb2cf9715480d8cba5f97cca37555a4e4ed44d60286873c2d3cca400ec49257fd5185aae45dd61a7fd556a11cf95a0b2b4ba4395d08ed5e5ce510a758a48efc22bf184b1639aab4fe4e206ae6e75cfba65ad15d5ec7250297ff062d9ded2da278fda2b200fd3b551e78801b6172b7c50dfe168407660a01dfb3fc9b423bd357aef8b75f96cf35797136e139d5e5b18960171a4c181d320414a20772e311b3b5aec023b019c63934a389160957e5636dd17e7cb3ed1d0711cc62a02f77160295a4f74dfdc1898dd0690a89b608cbcd8323b90ec7568e99d1c4c2e12566a9753c4173fd293713c134577afedf4d183384a0b15e2d93637eabfc3c003c05d1366ab9e112a13d295843c0d89f9910cb2a3977fb80397414f0f31b935a70e8f7e7f56191621e3ab4ccac0acba8ecee2805512bf48431156fff3ff999926d5073ee97c8aa4c6a66abacb989bf8b0682775e82abcf60305774d5800e23c9b91cb356a2d8588c1f63dd3f612d3034ffa1f218601efdd51b9ca3e132f1608d9839b1be798429237213baed636dfa1d22b5442fec42219ac5efdece3d67f7efc575215355799437e6c9389b8db38c2944b31beba26651a61c5c7e99b251f403358fe6e6f5208ef42c99f54e6650b6df3969db6ad90868125acbecc2b874f990644f636ede510df8fd1c7acdbb55c24c7e1daceea9fc5d29c97a506d216c80b67a46abfa47f9a2a911d1c5627258ce7d7a98a92c0a60a729f76151428952bc300b16d519065c7b97c7659752c3aa955efef2350478022e665d880681d357979e0458f89c24dd6a3ca65229ed1b21d6fc6f3bf9c434305b33586a518b7f898d5007f429fa9a6f34563a0eca5346c65e74ad63984d357ff73b2669c4e45e707b03dc9d84bbd9eaa7969ef8dedf42739979822e81f477efaa5c67cf0a00dc014fe89fd9dc675e109b9f3132f943d22e0897aed98acf9783e3fe9c6a1c054a9a68bf5dbcd2d6893e4d0413e7065a17948ce16bf23894276042b7db34ecdf7a8c353a4f41361b0278e766492becc0e9b9b1f2bf0f9617309c7f1ccf50eb87e8676072a8dbf0109d142f4b4b9f75faba9d4841258c90316f5d8b810d427a209544d73735f3ac2301652836073a5b110687b7e4b05e3e2a0c0f07816675e8a9fdb68846dcfc3ecf503ca83985e5a59af9b250b43989ad5fc69db74db2d533b70db30e3add52a3a5a8ddd7661636c90281c906556b5b080e297c32598377db2a9a465018d2ebc1cd582a5d75dc3f31fd42e8a3689152b8d2fcabc411c256bd77689b9715988231831deefe70ca3ee6daa8c4e92ea8f48f522bf822d068ea1227c508606311cd9537c8100da5bee54487fb37a8051c376d9935f5fdadeafd163c819123333846e708fa66575e4f3c462e83e1509a378978e449aca7ad9c8254bbc4d60c04d129a3aaabadbfb285938fa41b0ab2fc754681c0dd7d3448887d9de2d3616aa2f4bd78d4a8355efaf78d620f865453818fc29c8d9e1fe85287244527566977589c5a8f8a0171eca73313db9cd4ba8376d6443d56a6ce71e2c103b9d9bfe3e0e0a3a8a20b31756d941f05e617c75f3477145a2e9d0579a00dcc12996a58a4a11c9789c34efec165a661fbba90abc80ea897ede1b426cf74cf438593cff53bb53b8556cc157bc34a8a5e4af1dd37926124ede8b5636912cec92adc560e9a88d7d68a8aca3c5eaf93d456ea39cff28a6e942270d6bf398284de2560d64ac1f4f556a81dbcf9de5ff5b1a644f02e87112ecfaeb3cf906c05714a25d4816826ddfac8dfa407cb74290444c41f5f2cf0f2ad2e9e814f42a0fbbab533683be7068569b5d32c8a17ee3b227016d55db13cc6efb9183ed68205868627aa6bd1b304f0c7c182abd597f7d1f160102a03a8c973724391d85d65714418e0710602edc617c709d10e12232ebd2657d2ce6a6be6259794768975215c0e4c387c63a508f194bb62fb47d679f251467a4b827c77b4bc4cbeecd009d08e7d9a3e05f9e80ec15bd2138f45b1d95482dd9dcc522d1043d26050e15b7d43af8fb06e9a0a6112f28b8da999dad62854f938cfe53676fbd20295b165588853690548efe4a8f0cae3086ab1df077c04648fc173aaafd983ebe5c00891b9366c1ef22eb462ce69b3993975d5d7193d645aad77b71c22a4ffc662a72f5da8340e210b78db7680c46545f9c35658b5a5defdf38fbc16be38d15af7d2ca24967667de2f99c48c2c48bd31f605db5ed8fabb6c2eb1939181d4400c43f182bda7516f26559e45b87ee281b6942b842e17117dd435ce04620d392aec2797b68aa1a3a6c0349341942074697617035154a31eb2bd507aa4cc18022408911f38ae9bfbbeb7bb11469597ca652f1270b412f0e61e4595669de3e0265ac63789294d2e5c4d19aff2c0faa0ca9acdbb7ed1e64d9688b33d8481a27d558b7a7f9acd61ba660788e484d8b82e7a4793464a3f5a4c52e36cc6e34737b469ca62d841f67a646b2a0baf3192dec6eb1676d1d9c5fcb1cf1026746872109a30b257beece6914a13657f9208d3e77b252975fb1871f9d5f1849890ee20ca0059c9fde7a622051d45ec05aa7acdb794379b11be41e1d8347d8ed6076bca787ee9918212efce729b28353de75974f48ded711297625f0370b305ea57ded6e1de38024e0b8967debbb26732bcd5de3621fbce48b96c45556854a96e8b4709f8ad1303a991ac6351c2b66aee4fb08164bd03150a7ea15994184fe73ff8e10ac7ef78568389325655c4853f13c72cef15dba13bf6442e764c284516a584081b25019f31a1836c3d42df755a10051abcb557cacecb934bebff5be08115e746b40fd50f626ab37df8489053cfca163ec17a6f5be2b090164a43f1909b8d030a1c3ac262890e095669e6085920e04fa2d5b37fc5bfca694b6215972b2e46b80133630d5b97cb714c91f54f344a8a961ab520718d2a0d83c7e6040abd17210316b1ff1dd5b7ff588dd82fececaaf5c69662deefc13f9b39aa389aec2a1f16b1ce987a5f92f948cd5fb9e44f95ab670ab2a14c93677781843feeec6b931c9bfaf8df94ed54027b2a98474103fb123450a75246bb1195f148c173df26f55a45a33e47e13ccc9acc6e274c60f47789373bfee631d45ae2a674a8ad26477e1939479c5b93922294f051e5725c0e79ae1678508071bd79e27e18542e6e70b12aa9ea0b80f9810eb32011ca4f14b961a9ddf2dc3605661f41a1daa1b0fcdc2a42160c49e9adabcc716e9a93f7474e691666724d8f7479ec3b0545b6844420759dc5e9f2a542060cee37dc68ab8f1897a04b6772bdb66a1a5b715cee3f8a0d0998feddab7fcf1777c63759d25617950d5063e76c4645361448705c57ad2d7ccee7ad2a49c7c2fca81871e404028a716aa4eeb8112bc85cfc6aa957b87ef5591d6fb3fcea9515a65f67461914dbc60f670ce87b02bd08f47ec55fb5284537338be3d4132840fb414f06341a7ee7412bed274525b58b22f2dd3af9f63b93cf125a1530701b146f9260074e6ce0aad2ca95e60942ca4901c9ec83d0c192da5848e126a09df88775eb4b3691389a6e1b588fd47af816ca3509adff5093f124b845e538e2261f6f167d7c048340cacf33afa96f0443d4192bf7fb094213466dd1a95f1b6c2cc80a593ff347270f8ab5e13a282857823ba05f614304016316aa1aac4836057de04c1513092681816a20526d4d9ea0d04f6a42af3912027c361f4389d76330b9e4a92e46b4370fecc0b5385c6df0756fb15609f8f14bc93b9672448bd97bd4fb7a730fb77c2f58c26fcff6ffb0f330d2df72901de93eb31a3cbe550651febfcdcad6e3d7578080345eaecc81255f4a03e0358a1bfe84c0553204febe44502d0075fa87c3d39b43ae3b5423f533d1f16d71975b4f06368bd52e16728918e3088402a1c9e301d88326523fd4807675e3b15aeefcb24be38429938598e596447b01b8cdb0c0bac4cb10db047fa7d57d07e7cfb9c747f1407e50be3f04ec3e53c45dcba27ba68dbca8879ccea2b0e3025dbf20060c038dcd805d4d4299967183462b884d5313fab2fa9ba0993f1c655fdd2e98b35ab3c444b804f42dc9eb9e462a6956ba4513c4833fb394b1c0c150c1c669ac443dc9b1954d45e100da45191b9b38c147228cfdd8a6fffeca92cf847244aba3713b8d6137655f40bbc423586066df05351b7f9537780d63576ffdf93571567c19c7c616497fbfd92badcb4cee70c824b345cd4a777dc80577d1cf71664119c62964c0bf58db36058b6aa353a4df5294a4844f2f70a47ec6c9451d7013867f1c7418a87f60a7cb065b88968dff57bb8f1933af291a6f96d2f9825cd2afcfed29a03965cc4462da67e6636f0a90b5e593b99d2d1cc07d3f0b50967edbd0d577098491acf46d9dfa393694557f1d90214b6df9d6bea8dbc728bf7b2933afc9c0d88f6a09d0dde91bb178ef1bbce6235cac6d32d8811430352bca5865584c3c97d01dc9790a8733665fa1110c1cc104c4defc425381ebbf6d95784bad4e454ef1d0e5f2205c8a655e13f76123e029d355a6f96e3648fcbfe00b6789987a08969c94b1076c8cada76cc5676f568288395dbe1da3afde1e4598549639ead60fa5be070341a9ac63f8f0c3301be81fccf792d8a9e22f56d4124b1810c39215dcd7d0680d86fc182f60eb09563d53cdccdc9e74e30831921f07f6fa9cb36a6cc851e13a111ffdebc0f07d642b8c0eb7c0fd2197cbf9bb6a76ba78e20f06c8e313bfb7aed1acdbbcb0c32a7f9478ed017f4b32633a4ada41e3b78cffc7cca9870afc1482391ec97a67a8feeffa773f2b14d7a7065b075721ff9fa95950ea77c3f57db9e390f26bd68ef52cef0c644a35715caa50c936fe9288fe33284511f7468c3159e53fb94c73b39e0081f1cbc8caf963bac9a4caddf447a533ebd08e8e31bccb73240bd8a87e1125cad5d883db9af7c28716f7d502e80869545785bcb28dd099bce97d6c37a24b5383339f8e4419a60a47192c20319bdebc99c5703587be366634cd5cf9d2271654aa8f49d81443324f6614a1c3c526493159675668f1d2061d5852fa2035b4dd3ddba17574920e4269e7a03b7af5276f5cfc88616cf34899886f32956541593bf5a0807336a59aa9895db25f83615ca264b845be001f56df6ba6b8f6e991ca9a2740893a3b4b2cfc6af26b9821800bb8f5bb5aef7bf914948b3d854f65900f7df44d9ded5703fcddcae90b38434cb44bba2ea41ae3af46d55bcdc19bfb893441e270e556e43fc5e73b7c2aae2c6be1da24140eadce4e282f87ed6a20ba0289ee22d1db0428ccf5516119263f810d756538fa9f25378374a9536593aa0957e5f09383938c3b56577884540aa830ec61bc9ed510cb5319653a773a08fa7623c6be86a04ce9f57edcc9631218d9f564c2a1b915bf3b210246282ed0d08c0e999259b6a59d23f0b8670f1256dc33bbed8e8b2a9c9c97324ba4004cee6a0ef9e1ab5a5508de428978a54853603dc808a0e4637c6879b2e194bd6710637b343056d42700aa50b380917b9d790ebdf4cdd5548ecfcd0945d0aa42b68091afbda01878765e61d56f1d614262e36dc2e0b159d97e5b9a5d52abd869767d828e15b4bdb6aa04a501a2fe36321b3c04b8c82adb994317ce5e2fa27f159bc1200817800cf4059bdcb2318a3adb07023593a00a335609fb2d0a5aae2753a0f85ccd4c59fc4dc91919e614a7ca6d4925586cb94c18485f8bd8add8b78b8bdcb890d0870fa612e80cfed385b20fd665dc4960fb8a4f9a824b4800ef7cad8ed78cdeeae9ca761629722303a8c3ff8d3364154f328ae2a8b0b55c80a0c5242258d1a536d060f964c9d8608be76bee66b849e3b25a60ecbd7a2b0486cb29b12836dc9cf98126729aabdff4e7b7b07d0e8d45c39712c40ce998a4b3f6e7af025bcbaff7249ff328c02a73753746790ce1570c1cd68f76d0bab381e51a7c2cf7e41fa707f2f97ff3210868fb1906ea49168f30f2b5ba1de71ef4ea27244e1796b5d2e7c25fdfc53668fb3d7080b48cb60387d9703891d0169e30b86bf356367dac7aa7cb38409631fd863cb77ef92f1d81a55202f97d92636ce6138bf253180d4b6a2a066de6963038d449101449a17c0426375cd0494b023581a6ef3a9c443b52cc010cadc554ad27acb9b0636f4c1c07a10519977a8c4f934e7bbaaf7103af0df3c51acdc45225b97d1162542193fd3ed3191cf96b64fcc02ffe0bd345811346b1d20a51f49451cf35a63ac593d867a8563043a9e725c64d0a1e96f593cf66ddc17107afa55ca5d7a5a8b788b492d5993ba0e4fcc3a1b8f00068c41c4e122271db8c0c7852bc1a575e2e986a7770d1c62f64ad04f292c99154945bf4c6f3234a7d9e3adc13d70adfcd55c28944fb9cf6a7bcd42931e081cbe38130e16654ba185f50a6279d20415b787a3d99dcd6455611a974e6447033cae167bef5f22e9d5fb0e28127842e7177c6818fb7a0dc5a1589225428e8b6e7989baca88b7335dc974287b42ff8777db7bef1959f0f148ba7b14e31c881dc63f7fa972b41a2006f6ef04384fb8f4c22d97b6aa47f8768c88209df32b4eb08f5bc11ba3a5e8c36ece473e771e9cb5f43c3b4bef0d8edba1fa7d390299515f9821de67d923ae4b3e648a15ea09b3e38d72e4d85a8bb396f7cb5f2395307f60219affd5bfc6c3118c015f59ae0228df86b0bd541b2fd427607efb1553e65c667aa2aaa2249b5e3e5213bd73816bc3904f68dabf19eb1570c739dccc0471ec480e21ff37fb0b04eec3ad3647a9696f6302f63494f0d9725a9e869d093ffcc041c848eab9d0216b893d42684b944db1645c4c99f4e8717ad8fcc5f9d15f37d37089e32f25d9c4dfa09f085a2d5395748bac4017ef4242722eb359ae957f399f0960c9b6ad40120e9174c7b6074675e0afd9cad13638cbcf1183a28a16513f9c4081ab1fb4fedb1ccc92fe049579255ca30f97f0f65d752715d3b6a37f43c51b0c1087df0e27f4e8b61ed5482b1c8251c41a29dc64b97eb6694ef338c3ad1c72bd96edbae0dd3e87edde8fe6d3bd82d9d848b1992e613f38c5a3806edbeb55767e8cd8a65108b5628da6147fa27506c717eae63578a9c43ac34ba04ac7d9007ac39970bdbe1c4abd5ffd3af9aa84a48103a0d7fa4d00a3202765a1122c41f1cab251727642f5b6107408dbae4478f938a00b0cb950f21781e5d81b50d4200633e9ea116793dafd9e63cc4d421b9d44078ff2ace510e024a4a9853b5773581d8da768f1b543c12f1a14174478c0303324604fdadfb0e6872a0f93b5fad78cc45a2907ee1d3517a0ebb44662d7333d1df10075c5e9a6b89753baa4a201014b08f20856156de076a5d772118ce10d394eb10f1d0f99581c320c1793b7ffbe2419419e4f89c430f4d70af5bfa24058e6bf1abd12a8a176f67b2f6c5cff4c96dcc96dc0a6129bae2ec2885b7aaeecd88cc4058c96145a98cac77bffc82c990ecea2f410627444d9542fbfe60e95a39602e1113605293b8ca0e0ef081a9693a7802186c1bcd5c79f22497fa1a28084336be47011651987f198163c65c5b1ca44331e62d4ad43b1b758d225be10f8787fb25d11e44df0e63405d0a0ff0186e50aaaf4241135a041b67b5282e0c09c6be2104c2b9b4e0150f070fa4602eea53eb0a0ac32a4418aad693be0a8440ea4ad51c959962270c44bf07ca5d0457e8c7147c8880d323ebbac8278eeb0e13aa05ea5e55d3d60a7f477f1729400d7ccd7837b7e02023b53deb4782604e284e6c1b61439bb5d1a5f8a4bd17e905e2035146a852dff55e9d0436322ebcc7ab3e29e52abde247b466cdb0f10372e947a25e4fef90e26b19f2bdde250ea981e8df94edcebeba783445d77cc24aa4ee52ac2cc0bb59fc47d4f1f7347147aff7ccfbf0c9ef2eb5196394d7370b17afb548b90f3bf70466e28b41edfa57ea2d270bb1a7340c04cbb12f75e4887af46db31d080e3b9ccbd8c94812d7b776f31bed05de91e5a027c923fc00832b680dfef222736492a8c86e64666742ac20888cafc6deab25e4e6f017b6d1f9a4e65fa1f1c069d95ca813a7bf700d3c0cb038d7c8556dbd92571aa5a95ba2f26232621a43837fa8933c18d158c1dc07dc0c33d30214c0d0dc689e932cc3c52d1211e2c26e82ad3501e51e2dbe4ace17119ee4c0c083160979f7b652bea5a7a5b0bce98e0e9f0fb19bac9acb68f0e97ac07da9e2cc058bfca111ce06958af22056be1109bb4631e62b05b818973d7cc7965fbe36d1164b5f0c562459b792122d0242a1ef1b20f81dd5c7666f3a5d95b76f6a979894e19a78ea2a31f5d1e08c6e23165257cfffd89e636f0a8ad686eb47aec4d2a4322ea7560174f82daf401ca1b50aa9ade3afb29338868510b4acc188fecd86de5d5b4f870b073c8b3dfb0c7651631c2cea01fda485a44aa0a1e21eb708f11a01a62a0c4e64be8a20cbef7d7add4b290e5c7a90bfeacd6b8f24799c098f6203959dfb671d0eda155b50e2c67c76698ce22386b7b75cbf4402fd707826ed9cef20d632cded52dcb4ec11d58ebac001ba7645cedbb9e453ebb75c6f79531a6b13ca2cab925409d813dcff99de8d4a983aefaff9498d97002f806bcd657c5f4e263e1b2bba1864c36f71dc397efddd8b0f93f4cb8697ddb3ba74cc02f1aa99405213a240cf1c78fbae2d6f99c454372fcad4d216ffc6c995098152e3b94136b3539c47c33efda33263008111558a66a54459daf31144ac1764a9541534d6af37acaa1113549c242d3c9c31ed4d340d9c29b8ba8e4d9cce1838ecc8f287818548b3b3b322bb53577a9d96272b3fc896d5567e994d550fe8329c3eb2a57f95e6fa7718e7e6e61734c08aed35aae9af209f9b6505e3385fef7c7809e4439163c938ab2a36883200f3745250f1a708774dd0690dfa11710470261dbfe97fc58cb08c782425d056c55213c52a54693c8a0ff381c2b3480fd99705ab120f11be68758c33cfa657323fba7534acc164a8a3d1d55c4444e27457d51c819d97bd8d0d1fa1dadd5c86b7f5a3e114f5f6074fd1ae46586a00040df2b1576c1377c0fbdb86a17c050df09d40f90d9be10440172de2b83c338238084ff012d44a704e86238da9e1f8dfa2c99cee6dbac5885f30e287540441894b7867f34cb0c7379e20df88a53c58b0173fb2448a2d490346bc7dbfb9456e8904309cea38abbbde5fad223349cbcdb1615fc6517d21729d2d3a9a8aff529f959d87699bc2f53597dd9169e119e2a5e42ff0a30f7cfed0423b5de71ee242493a2250e69d675104a985d95a7731e067cdd8096cd4712ede2aeb48cb1799855132d15b93032a3479734de127b1899884de1a47c1c6044ff4cba6a0b22a7fcc0f618204e8cca22b8cf77192e83792d06db9fc01a892bae9880e0356438e51d6cec3b979a6390f7680a88cc2b16301b0111fae0f4e414d16294c3de50b34f6d404e6037ea379fae451910d7ac786b9c1e46f056009a66acfbf90137566266f34c2a26bccff18ecebac7a7c9d8aa2e08fa67718ab89c18341f6f1882d6cb0742c3a3bddaeaacbd1b8916f8085c8494445729b580e33e1a41589ae97597d1ec130e22707474aea5eb075d1fdc613a827aa5716a637b9b5f31b19eecc0d9f3e40d6b97587c69402f65cd7182361fceb8eab09e6be3e206a72a854c8089de4029c822fbd74b7aed456a4ba96af2b997043ef0e1535b7b9ece98b83feb94d17163b07c4d3cd33f8f14559a5d36beb74014b219b7224810a1aec5561580bfce4b5ebc4cb37d74ef83bef871d37a78e46a48598a4da1d62dde75422f4f726dc1921f06c85e7f355011502454086d09c7068fcdc2d99f184ca33fe64f12acac1e8b2006dda5a8d2380bf30028186d33c36c51ac322780e66aba45fab5e723264f8019f1c458e57ffc2edcfa8078d8b9f33b9a33b4156ce49a867342ffcb4616810e9f387ecc0c39ef2b1ee29fea2bcb1a4b18d4c9d1d400ea53008b8a235c0cbc30ec181a158e93634b0ed1a81b79ef63fab13a9dc4272f0ea06f0fc6682c83bcf95f4a1bf52d9de4ec10efa7c8b80985012c274ceeef1403bc61f3cefaa980f18d548f3385c1a7704453a181a073694a15e9b9b5044dc677310cbd339ee86c8d523051cc69708aa31fc01a9674f60eee272b68e388837af83510c202be9ecae42d232a048046871d16d29abf8e87f7107a97f6de3ef9a341e14058031003b54130ca5c8cac7b22a18b9490915aa262e0ac66733f91c39ccc0def39ef99abf109d4deca82f1448c5a71fcb6c2e97f4464ad3d3852cdfec2c6261e3ee3d756538e64ad8a142f39bb03e6d16cef6bc3170f97c853f8ada126e28ab8289a77612b040fc7189c74b0b638f4dec8b74774845e23b87b9a5707188599c07e48f2d39966fbed5d66b113d6865e50604a1a2d0448e5ea4766f2cc6c21c565e60ce6cefba4e78184756393c487b710fac131c93a8a32c5e552473242a32263eb39ff86e6639c865eb9fa3100ebd0ffce95f982d2c8a2f1e2578d2c2a8bc211153f0d926122b07319695355674f7c7eb3ffca03c04bd3d0176be4005ee51bd6037e14efd409b3817c301533f9fa2324291e76b34b64721a643371e7bdb12566d11bb97222a0a9cca8030fec72f5d041e0dee840d617b720300469ea2191ac1fe2ac90e4eef32aa1244ce006bd4a9851c7cc3ace89b55036ec42f463e7fe2a85f20136e84e7e9fb874e211c100b0e292c27d07b04bda2ca373c2c8bdf4c8a716eff4288d51eabf2582e8ca2dff929a835945f5202bee24e919d6025b13a6767e58b32c26b7f6e4fae173145c30ea7f879bc5ac0ee4743a1b943b1f044ba05bc98d303ae59dcc050039f3602c3a33a147a9ff954a70d01e316fe1c077c4d35b22b860af55c401da35dd7d21b8c2b64977aa84b9eceb030dd2ab5673dbffde93fe28f01ed7e6e0d23781eb5c053210d537b5e5eae6ea0ad35fd30d1f1eda8636ca0a759b293857386c214e03b879ba45aaab90a1149e77a0aba725519ca0293f78dd88fcdb6b87c7830f1dabf792f4730d77a53367a17249ef8c60ecbce902329e9d61e0caede5eb006275b1b9658ba0a90214e9d407d4aa651e6550e4ebf1a3274823d396803dfe5c2695f5088b72b5546ea84a2fccbe8b095d012ea53900f0659546133f4e8d3d4a5e102b3f0990ac5fd20487cb9e85c8dee5309f652298c5e2c9e897fc3c4a07b0aaa7843af831bfec9396a50b412cc30d4da02ea296281f1e45c627fb93a150eee64647543c7b697048ce37c31aa1c23d58a0eaba167fa22f8fed3befad0289fd190f7e672d68e56d0acbca0f6656640d9f90f3ea7b3b0a65f0a5562bb66db05fa1878660290f16e4590b476e4f7200f59f81d4b40b59dc5dcfc8798caa47050f51a51785c22d3de05d0acfe5d12148dc7ecf38a5a7c54fae70a734f86b677a4e021c71045671e4f874fcb0034afbfc05b9f9702bcaee36e14e582387b4f627d7c3a5f212b2b98f0d20563b3186ef5df698a93879607e7a0fd9070d340197a66b969d417ac1ce6a93d52da6e7ed3eb4e1bc3d4accbb8867b0848e29e70672f10fb03f78fd03a59199cb10e8c1d511459ce793c28bf4f6830164b7ae57f7c174d98fe6b551d4d54f5fafebbfafdb6eaa887cc642ba86db84219328be93d18e0bf0bb404ee9f59650100cc961e790b50e75006c50eefe4bf132947d722a4d5db5ed8a3900fcd98bf02dc483d3d3769a76d5b6f935664a5ee863d3d9660a26330497e64bb51fb9d201f72e678d3cb1ea89050d0eca7fc052f3db370228208fc3471938b0653cb3aade4d8c0dd49fb068935c712345f45c14fd7488a702f4b4a044bf951f1149c623c1298f831d8d346f3da02845a18934f4c16fc69a09dfd805ba8a61b441e64651c7c07e9bd128ff681eb62e8489b78b800350ee78931d0433873ed3c4cc8ce6d0d2caddabf400221a5a8c6610199be5f442a7d4823cc44eb888cca2e931d0d762f6b26ff6a63d31e0186c2f36419948f95f14293dd7ef7907b8dcdedf7c9ce2984c202ba1b65ea2d70fd913ced4e8dc085b83f63a2de82e51621512bdde6831d4e10a64ac1c17cf0a1f55c1b867f0fe16ac29e259cac04c6ebc09ff9cc6527f1debac8da37be0ff5a54a1eaa6748192355af9d6f7ed6363c051a004f71786de14ae9657fe67a8bdd821811da5bf16b89007ce9d01297d9af9821ab31dc01112f7ce23ad93f63e5852b81308c0896d531c6c154cc17d06fcd6fbc15104582a17c771b128d4a36c43b52e854af093b3f9b8000c905bb46bdcfe1a5161bc4eba8f105a4cf87b492fce145958732e6105f0ff5354a48d24c57abfc1cd2aed1ea761c9b6a89fee460e4e3d693d7744ba44154d6e6316c59e559881bb7f8caf7c1e95e74140ef296d19f095bce5b3277c27b5d20a9e7525085d4bcf1dd6225bd35540b6bf8aeb6bd4e68a31bf43e87b0bb5f7a3cb465257509c7a0f9a69fa70e7ec033ce9dce9d0bc59cacebf7b20ac0731885d822bf0aaea932b39806f597583970745d7dc16563cf82f994a5c3c44505b5854e113026e03fc0828654429b118811c9f9908a1ab691619505518246c25af4164322b0da64a767af6579425cebe548a5f4095874e6dbb17ba908f63bc30afb1c1c7748dc254c0798864ff0867b505e7286df1949e95e1f44828588d909df0a41b7d350050c3fbcd7fe31982f9e6ffda9a3b1a280c7007a69d2e0a0753d555032f36ffb480d433f216a838c71c4c6fb8e682cfa2ee1413aedccf79420b6e5e6af75408bb6a5726947302adc4eb3393c8c44fe2e13d0dca982466be5dc989ae99eafbc0f873b91e20faa200abf371f061955fb3cbcded76051a26efc6401214b5114a973768f0bb5efbcb71c7527949912f6d4a9255129f7c6d7d4aa212ac043faad434695e8a094aae9f19a65f0e15df64599485863ca1104489fe5fc29fe87bd3851dd23885ba69ea3f557e5a63059547578fc12c5c30838ebb19a74ada0619cde44def30ed89bafa550c4f6ddc238ad8c277bcb57b6767944d8c7a26fc1eeb2006073fa1f9de60b564152727025e3cad3f27b0454df2df2c07de91121f4af3cfed062f4f7ec78a61a8e4a42f640447ca4333e3532d8e68cd5613bd76ff59beb215cacdc16db7cc7c341d597d46baf0f35be863e03b7263ac61adde75d19fcff1d5950036a1bbde9470d8f5862e49a031c30306bc4f1b97498655e51ffbb1dc8c923daa706e565e56bf38a99de1b71c5b8969bcbe563af6bed7f570a528a8d11d1125b4ee681da1b66d75641ed22060384742ed2417cf1ea10adea06a384d694023e73bd8d7cade86023787c987fef3f5b9419fae2d276507d713ca6c9504a4aab502f67ded5d1833d1e9c20d91887c5329b0fa399593a14933a20bbc073f41912564cb258c2e37715f155f7ccac0804c7e777dd529b3bcfe1df100ac95cd06eecdf5d36f141477a387f6f72e1a428987860c1ad1ccb21e3a6ef5f33646bee02207be57b71b6e285cd03151d77219f3069380c13ff53f9bbcf976c67201ed035b40e65fc248e73f7deb31867e4314adee10c31eff38242a473fdd141fa3acf6ec17a83f27204e1f214b2c32ba61402b83e73c8ccf1ae152bece24400f829861db3b0a535b5082d7c01faa611d05454b998466dd2888bcfc90797a96e8a73f8255267d26583b756cb17585615fd5355970edb04c25f5f39defb68a265ba52db936eb5ed739acbbb9d15e95c5ab10d524b1e9c53659212c944abee53d6ce3be58ffc449ee174a8463fd297dd8eceaf1f9ee4b2164c6d245095c54113c73993e5184400e6ae33e8a52667cccd3261f4139bed53036a76f61112f6b6716a49e0446ed0de1dc3a7df7caaf3e407cdb75a2fd93929a26e6e42b1c415652851604b6c8eb8538cec265d8d591c817866fc505ed303b7b1970b8aca4f7fcecc9d0184e3f100667a0b5bca65dc6dfd6746711452756f8055b238979cd475d6ba3609ebbd97fa0680d0fb5a74e703db12d077c1973a18dda52f6807a22824cbc8872ffcbdb4d7cb061a65930926162a96a8e186cf04fe9f41e5218a6a669a39e30eb3e6c027b2a8950f55e6018695595f15cfd6b30b9485602ddff7935fbb1c8f8e6c81501aa94257a05d260ec5b0a99815229b62003a2f585da559330c294360e79b49722409ee5537ff81c376f66744b574b5890b6fab131b53a0e85b436afc77eed8039f8a65038b8162074f28f019f085eb40577d59107a2f0adc8ea06c383b6d5ba612587f8f51577f89e5c499ae07bd1c0e1dd310ea52c4bacad3be63691bf45882de984ea539d1685ad70150a0e226884b5baf7c65e1c72f84577f6a704079b7e95ef705c59fe1f9642ef58730ebf7d7f3045ab169d0e555c977e359915231c1c0e6886b4fd7b7c346d87a5a7a701fd883dffe5ec73717f18ef32c93da0b41305e8451844a3cefa5a1736a7fff6653923404d9db962e1ed81140a808c44a14b55dd8c5b0f4efbd4944a316872d58d320b072aa26c2369670f9c32ac9b8c4f5be996796e237739d0aad9249d3dd594651cc7f080f34b35b4cc5432cd49dbbf381ad353d7343932ef08abb5cb528f5df1efe1cdffd86b3044dd475601bf0baf917ff4b7d14e3846dccd2d55579d43ea90822ff60580f8da18af3fedb33ba4cf7c619e38ba8a6e80f387b973182c7ef5a5fbfb474227a47ca0b4271db44325ae44a01aaf860753ab6f0c3f5f094438fbdc02eaac21f353f7a4fc04eae3c5c385a67965c50d1ecc7cbeac71048d1de4738f2e84afec357b9a7a268f710389f66f99195258f8ee7cff9a9101339ebdd38d8a3906b6582215b698f83f39f10f5e71f712817b79b55e245ac2c42ac321eee7a5ca60e1a59c3e2ab7cc04d866681fe4157e120d8dd229f29f64e780cc8c4fb1d3fe1ca0555ffcc6d7d98269ed0987c14669990a3e03537f3ced915ca586e819f69e7780bc5a94daadeb551008e012e24bf9690c39de73fbc1d55f9ab41c5a0a2b0d491219c5763cd8c61d2ca66c5679807d02fa33fe92199f84e1e4e4965791c33047b4388cd906918775c21204f545205fd75edd0fdd76887d2f80aac2dd9975bbc1edce28cc29e0fc802b84961398921899696839d3a567881a7b51db2e38ca2fc4b72c5ee009ce2e8dd499c5c95ff441f0f9ab5b62b174763adaaf62d65e0d836554adec1c2d936d00f05738ccc368cd6f8b5327e28b4a4942a53acc64afe33c8979efe8cc20030c8a39b8537c68eb981853d715e61d228033c88a1d5cc7cf5e8133e698ba2bb88b79e565cee3b7b0dbe9a8a3cc4a8d585aed35c7395830d449f38c12db36c1401775b01c5f9a879437a3584784ec854091dee0d2833d5b93d15a5f58dc3ce498e2364bb293c9fcd8b205f522b2a00992c910d148f010de1f16b3d82f4cee3af259f8a18098a5ccbeeea7f8191f33ec0fd379097aa5b2f6e878682c1fa0bfb6b787d3dc542ba1011cb7dce7f86817b88ce57d07bfc870b3aa0dbe8db0a3ef4b74b57aa511a64fd68c7b36456e6f5ace9c037f205281b45dc1eaba005218d8418d4ca9ab46af7327a43f904dc61f9f72bae668a1dc77831a2cb724fd8a65c17a32e75ed1b54b7874829414dd3bb593eada136fe6aa3efc12ed2e849a5ef69ca16727a0708e4c109df8012c0ce9a84504af18287b8f204e4d1e59c7693a990da11d52b0f9437d067c6252f2a8699cf596e90df914a885bd7496c2e9b8fc40ab5e61ed2da0a5ee88541d7777deaaa918ee9a8e5c756164bfd2c6cb970987966c24b9891fec05e4f745aa973a3cff4b0ccb4b0cd062aac6e84f394ef9f535371bea6b792e9dc553b21419d4f09b9a8d3142e22d4a5abc4d5217fbc940c37f52d35827a1a64ab425fc4f311ad7678906c9887cf7d5c59eff5d81b9a0d1c073842e1667d84256b505ed42e5f9d263192af0833edff5093c0c4466f021abd29bbd02ca9d01348a5d3393d957287a381293db74cf35e545d8396f5bc81dd27619430096c329ed59df606df0a22ac62e651f8decde983766a40e09f05c04857e9807a74f755b7815d4203e2e6aaa464984296d04e8af84c02b367da506e28fae6e4159825f8694db0561ca6413c84f4d698f3de252d5d1a949dc4ea0fd5def75ac52fb96ca965f2aaed9d228af012d0b3e4076d45ed03f8042b0b5e7d48863e446a103c6f67847a2c95d1f7353de39cee43342332a08b9f9d7ef1e5c03b66574a6a513de5640b69e254ea72446c3b96d65f8555422e236be106307aeb33754fbb620756e0cf9d8c8f98540482e49578e60e05dec3c928e53d765c9abe034d271e977e0e852d54f8413fad6d9d7aac7ea5744094e6da78278d1461c6177e84a56dd2cbb5b7362bbf8441c6f8361a7dc64abe600a449e9df52f1a80130fce6cc8feeeb17f2a62a96f706e47579f2dfea6cd02bd5381aadfe1cba0fb5dbe7335e0d053d87301d1b55e9c022370702423124bf31f34974258ed99071a92769333bf7d304963fda1db33ad8849d1dc296c906f817c4493f22adaba9319a13acdf2d3d4563ec8a38750c421d07439c285ce9954f510e647863b0fc0b0a8c49de29092d702540db6a5c4b4b4582160e653c5dba7dc9a390feb6efb93d26c26ffbf21fc7e878638eb7e01f3b82643ed2f01fb52f20b11728197b5432dd1a37aef4111397909efb5d79ab8c97cb21005f9512f0b2ccdec4455b3b764059dbf0e022baba4987dfee6cf07ffe6e6eb4f75fdf2579ac53f2cbd3e3f47d0eda8a7c7d9390cb08da8e12628282806d876e178ff1f4f92fcbbca9cbcde5c6a99fc801e8ccf21f2d6216b8b54d0f7dce72edf74d5b3396e9500a827d09abd268118d9a3bcbfe82426bb6415a1c608d3b7a4b0b448ef0f293da5d024cfacdf8bc0096abcb05303f48c0d2300352d35916aa7de16f30f5f67c485c5d21798ee50b0e5fe0fd942653e3e4a2dc79ea8764c9167b12bd951c7a6dee9d4e24b9b47f13787303e4efa5f02759838fb832437a1bbb16a03f7af2970e575531f12c43bef3b88c6472ec5d414a44386a8725c6a3a8878ad2668b5ef62d657022814ac2ec083f78f298c98c7b184682ff9af9b06d60862244b60e698d33f7023ffd653b3d2ca935315a6c55085234e9758cd64c1a1bb9367429ea37f94eea346982c74655e7c899b635baf2b5d0df2cf47a35cda011a48ffe25fa7f442ec3e379e4dc041a1afd5271d36313148269a66b43fbc8e1b9fb8cd462464f43831831ef4274b122e80d35cb9070b255f3fb584fe7146eabd40e213622abce6ed5d4ea034aa382254a821211b2c3c4c00019f6b93d54eff20d17cd8e42d57c13aa960c49b848940bfa3afc53090538cece638696a071549e725425ae555e19ba65f7266d9d1d987aade333ac6a91053a04609575f28b4e412386e8b2a62daaa427e1aada7217669f2033e55d52b3b24fed88e70f8ea10eb6df81060c39857a2036b2dd116d6b56954169ec6d08a6d91f9b440d2dd4460c9b33d2cbf58a3c970343b461b7cbe90896128fd8d15e591e3cdd81d032cc501ffee795a7543b2ca03381915d7d17e508358b80d580ce02d2e0f9ac4d01d198ff90f84303cac8c65d57dfaa4f0c037d84aab8a5c4ec8f960d7dc8ac8852ce5649491adebc0cc9bd99217693d7d09a61f9dab44f0b91c8b13524f36bffb45f4739782bed988ed3fb3e014d9e2d8c0f97ffefaff30d2ae1baf9a1ebf9b50681650722f9932d7dbaf802f1efd23dbf1f1137f0481bbf0ea02ef79153a75a73545903856fbdaa94c3b23608b4166a22139abd485026cfee6b5e406aefc195d596217cfd59402e3074f9c456724d37a707348f21a1c9265853bf6960b2f04d7bb30f40c917963128d44e4bf916b56afa385b70c7eaa87404842b3bd78c3f974b5f8f108ee28ddf4c1a7e7ee6eeca39ef60832cdfda513f3c99b7506984e450671000a0d87af6b1454d6a8b941988db1fdd1c3d7bbc5b9d80c66ffbea990ce75a771f0c6f8ab6763333e4a4595ee8605fac7c66306c29a89abc2bff7f5f38e116f50c8d2bc3985617108166b26da5031789efaf9cebf4ebfeb21b6e2e64ccbcf133d028da5b4cbb5a611fa1e1ae0651edf54925576c63f77c9710cbdcb8dd82dc8a0fa78fc80c3d56d2abdde3123a6fed9f62ab58792d33fe3db9e0d283ce4aad2c487ece55bff6be2e48fd842a9a1c26254572d5c6e22708b3ad5ade07ec6dfa074643a3f18d8fa94827a3661ade9721c1f80ff3a9630b6ca8d3a3ea2e00af91dbb51b91fe053646784b70407adba0dbf1e1a2b97c0d178a11fcd6e6dab38f1b3f0311ce7d8037a092ea3f7db88e4d212fb2a8ee9dd79bd31918d14660a89a59390a36128b33cdc64099ceef8b55183b6695bf599a310ae09c8911bdc3216ec08854d9bf69d92977b369267c8eb2f6ac179c4e6fcf6c8fa06efd8d8d2fa59201710c480f1f554d3f70132e63355e6d5a4e16c52e4eaf22670ae9045fc5efab704b7f39cd2b253cfba4389b256b13eb92301688987c8a18fb1d60b2961f849717b112d6c14f7054b2a61aff08a37eac2e59c5eddfb64def03dac6831ed80c25d424e5aea286fb8a681d5424a16f635ef2abf9fd44774db774c94b9627cb077c7ad5a5f35b88921c0eed377ae6321be7bbce098f67ddc8101d5550d3863140869bd6d3e7f13abee71a7d5afd94b0bc7454396b8ba798644b3b56300a62da8e8f770128da273fd9436cb8d02f5314b08e324dfb45131540c388e9e201dd4c45e4994cd00c30fcfc13edb23603c6768625b7e4e157a8c4f75b5105a51d15885bf700b5299bb833c4a6853016513d6443fbfeade4f22e084ef9ee26ac574f67b10b159ddb0500be71ffb7ae36e2680b10d77811510bcd657e98ffc8116c7cf0923d9b01ff23e7f500a0f52f6ffcd234ffc6b831d4c1319d1f65c2841a36c0a5161e0c1063a4a6c2828eb8122a9ce8419105a05240175a4383e31c8fae1c642d25168274bfddbe90da9c42c523dbe5aa4ba428deeeeadcde72beb0ba0fc6a3388f466137b9b33a0e71edf993b32813de394a51809f942640dac32f0f4fe52217b1bc1c4161d415138cccfab4bd0cffa2927ed60d6f96d6a6bf67e4911be9016c3e23f93405b75bab6ed7d1de70eb6ba1b873d1261c1cf89303588ee88ded8be3f5ad6cce38c8191ab34ad734547b165b8dd5d628daaf95b38c63dd0c95bde6ccadf9fd7fc0cf9bbe3a4dd31f18de30534b713d64f88cf2061130895284ea22056e9f96ec2fc8fea64cbdf4dcb2870306fb7ac8fa0a034148335ace5963da27253daf7f29c85e8b318dc5da875f7b7f9549c6b594d3c12e801163a9872b43bfc9ba7c60cde75d6786c9cb4e03e396c675669a9113f2cc0cd3ad0e6c926c59a902dc33167e59e9c118d1d80b9947de2cf40536938856f0e457ed36fa8603624ef54b217b5222ca78b5191d4024907dd0307d43213c22a5b7e48caa4edcf27b855799626e36222acdbc0468aed78b0d9147fd28ea1e9d88a65603028e1188bfcb8fd13c668ca9b3c38a5a519dd5175c99990360de7bdfc49fc8e1f36fc665a460a326c40f8b0aca63fe99fbcac7aa51d441ed7d1d3650c3194f49f53f6f4c6a98d47d59d87bdd91e0dd3af6f1b4542a08e051d19a16205ab3fd16bbb0923c62862dd76e1c6b141fcde1d600d0c70ef2d3cb5ebaee9a6fdf9e81f9594d98ea1c44b27f617ed3273b9389348d49ea42f773d039c5b154750130df82b9491d1ab4eaed399f9dfb16dfbb9c7f82e3491d26bd0e91cb8e635269ab7d45c7ab9b09f01616b34ed5284b58b682c3b01c5afb46a25e514218d49e1a2fad11445354a11d52604b43d3d15f1068a307851a0defb0ebe044b28ec196291d6aeec54448fb3861804a3a26e0437cc16c39ac824b884648f3eb58d0e3b3071de3d682e148012a206572cd2e6522902754dde444380a382c4b80618d98e342ef8eacbe7337faac0f650f72f8e84aa98c36af1ef6d7f9e0e4cf3911c1f105240399f088ba8aaa08ddfc883b3102cf2aac0534f4329d7304ad51fc532de2087ce003b03f20613243fb1ab34d037f414f38e7e469ebf10d7560243516a0c7e74d4d4ceada11d6c5794bf4f35db76cf133077d7d3209224187415d71cb654859c2a3632c7576d1e05f4dec4802d8956fea6c62a8a1931c17e6e38d98b3a4614a92d8ec30d50651b353a5c520a3c8b8e2728e6d49fe31f217bd91d8808ae3bf2f877f55b973c29892dedc0992ae428c26cac92d82b9d79f78587164e14b99b19d157aba10a944297893bc8bab3ef9265ef8326d60408c74837304c7c51115410c01180313883da0dfebaa8793fdcd677e4b6e0eb9f08df9dc3ebb1dd7f09882129fcc3f3ce44c9c0db2effd8e2d887640be216ad3f89c9afdf49a42cdd8532639400b3a07f077a99fd77b64c4014d30918768b5e3f95a8b5a8202df130ff9aafc434e754cff41f466d5b397ab85cbb4d818f312552995ba1f3b089845a37d7dae76ecc4204e76af50838248f56a31c3f4291f75ffc2957620b250d3b3ca11ff7f2a40f4a27422d7040e0a4bf4cb267b5b47114819afd0143dd3db7041305bd0029535f4fc23559c2bbbc373268364916877df283e5fff5bb83f5de788e77ca692e628330b80ca398d64a5dda6e9fa2b9c3c1beccd665b1d05cb6c1c5f37464a63492f5f927401a2b29cdd1c5c246fb8ff82e4a97c978a3503a647d6dcbbd5c77a494b5697eff6413db83b5f0e6e4550caabb43c817ff8a411c6c4df036840a36266bd74ddcadce3dee3395ae4032e407ca6ad2b18433c9d0bc370dbb9fecdc15b70c53f165b1f2abe3ad6309f59093f2d7469350c1b64eeb14888a1e09baad2d34ab21ac697066e642a8128e2e69593f7defa1315fafc714b2d281cb8781df6045a78592a52a7ccf38736b7457bdd4857e4d59d7228420f40ce91cabca37fbec25ff8b5a216c96ece9448833802ef444632026fa91efc6c90d32ec4413f599a108ce623381f937745909f778b875f4b6cb86385cf018e31c6f7d18a74998790758747738aaf82679bcd883c5850245c8809a267f4c7586f3224bb7029665ca4fe1303175b8fbe869174be9bf026d9a09031bf913c3364f8eaca05c10e9b8c12f5939b97d620138f77424d3e824b2dc33fdbe2e880d5fceba5c3fece74dfc4cdfac54b1d321e4eb9d41096d5140d398870838022ad5016aeea47e872adef9aa160d29bfece9af5b63bf2b5453d768ac786d344f34053207c13b42115af2bf32765dd068848f893f6c2c6b2c4116ee897e35c7573c2e2b563c14ab1651b3f616746c21e968ce1b18b3d61d828b2dcd7f660af1bdbcc2f9afa5f385c3cb9e56f827bd32e45129546fbe0d6beea6013d121572d43b112b1391db8041fb610f5db3e74b33cc3590b2180c45bfdd4692f094a19fdcefe82670050f29383affb3b655635574aabf94f8957a9f95623fb22518b3e5819a9fc56caa4d6cd2276c76f26eb02bb6bd38134fb714ce5634bf5402c1258af30fb5538234d0c569c6e3905c024c8331e8c747666005f6d9ef48096ef817feb40b916f4b7916e5e9f69564f3b9af561af11269c092497ca0bbace9b2f209dd643d2ccf2c2bed2c257b36d61befb86711ec020ee7e40e0f68c13f4e24461dadfe362f474c24cfc2f5e82548f6c1bbf040606ddb2c40a5460539ae4c8072c2b3ee118075330f3a3b3ef8fa2d455cfc69efa4f05ae1c2b5ab925b835326fd1384f65acae206b5a554e9538df638e2989002a1945541b4097a77b124a5522c0dd5e0c9d45ef07b09a319a957b4c5b2cc358242863dffe592b81ac689274347d49337473545836f467e10a8496879ad31826d6a79a8e681c39efb4f73286f05129dc8e0129d44fd2cbf69c2962c40a0cbf7e8267e4e170533e26e9f566f98e8020227e8ec7fe9c9a104d8053efea0d704e702a95f0a203285841d5fb97948013cbdc2cd13a8bd555d7b4489dad98222cb4691c7baad6d00ccbfee1254b81ab95082a8c63b85c0589632127894eabb4705b85d0073ca111a68ac2e123280ed65153d3934e285e7823782049f3afc1ae1912f0b06304a462c397fcbf4e7d680336698350cac86d34a9a1cce3d0ac7b248693a428e1b139facf394eb201533a0db146653ed8e78c29bc3748e4346f6cc55ae848eafa5937a3036bdf5da2de753c415ffe815a156dd663ed7a1396b89b6dba4c40a4ed7fea48f8c218121c3cc767a6269f07a1fdd86c9026bd44837268a3fd1ffd1316b24e015b83d81b26063bb7c326ec2ca0a70faafb8faf3d1615ce9de0af494b4a8bb78a4c6e7b7c3e30722507bbb7cc836037737438019979550e73ae95335febd973f71b5c9147635048edc513b38a8fc316c95066305e70df1923d75eddc5ebeb5bac2394dd821e7a326ad66d4c76f594b211ad33587ab2fd440b50e75733397c71b969dc40021a0a0921e22f13b7e6c8e4a3c68092b609e49519433160b4e90aad2829c92ba6ea86df90a1988c4af2d553b15867ca0c40350ebb35ce62b32a642ee9ebf5186e2b60b71a9d053457352e5daf8aff3fa9fdbc39b3b2df04f7e1d95a89d8019cb07d4f1eb0f363176fa88daf913824fc86710c66ebc0214dd5bb5ffc52272335ffed9d1b6dcfa770eac170545c61fa517108da00900c1b6574df3821763169d552f475d5ba526e32b97aa598cf4b777cf777ef6f03ddeeeb55f6f0400a146c900743d0f7b508921cc4c4d0abc4c4613d3061bc2ea3e3f6879b7018a5b468a01de44b7935c1faf2e8d71c677284223176e450dfa39376bce6f1b9bf9b7b174c26918a2a14359e9da9fd9a16d6f2965c01bbb35531d74343ac19a74ba81c650b6c9db1cb1b6a55c2536989a0fec703574e8f3a456d8477b12ba4fd72545661510d62e6c9dd832732c2031f407f2f3a19a553ea731c12c736a0a90cb0bab91b569d8c2eb0d40de7e022c4cbb8755f7454c3215a2d1b833b963d5c9d07db888f6e1cc772a074e89ef0789f20ffec956a877205c984979acd30ff597c7c4017e52e5025f35b6620c8296a0d6ee9b7cfbea9a852bf2fc465fa19352025aa3808d8ab844e77142036e030c73252eedd4569aa7e694855402dc888ed42c72474bf5cd614d586a9737cfb93cc65c29f6750b5abd2bf5a00eae227800bc90552d26a65037fc0453ee6134e788e55c8f85922e064f99bf47d6e37fa640686b845ce68949c0ff932e296e3ea6ed0b47fb893683fd87495df1e5c3778c437f3f592031fc008d8eb95f52aec124468bbb1361450b66c64d09375082d887ede6cb6cc170dfb07336d031b30b28f52b3a9543da0231c1ec7ce05e47c615e0dfc20bdfd4e874f44f724fd57f855b80d943e2bc5f0c17402c4c509f5496732ea4b28c0759152cc0d021d10f59f1151148af9c45f8f6d4f552e6fc79ce771e6022dd41371a06ca39645ee4da26afe533ee735a80c1e2e7fd7903b3ccef8505a45e3d6fe1339a2c22882d53950fef0298f5ec7062b9659c4c12310741639da6c948834533991bc75b1417139964481943663a545bccc8dff30f5b09ba39918d566f1b0b718d4dccaadc0f58628d97f0172630f856688561a799d30891b47ab3aa276fc48822fc759f16ac23373ffef069768aff70de3f4db189104e77559f580b138ed75b784c42a886b4762f26b2329b5bb19d95659fe9573b03b4b69c2817d903d98d4cf64404484cee20e57e63506dca57844bb45bfe9abfe76ce2deabea4e822db899c0049234d2faeada2a30936df9309145850f5104bbf67ecd23e29bdff75466854b0041965b92b10b617dfe8f3e1194a09d18788b7daeb88438325e23fe976760a2462bd5da68be583e40c2f396366444e9e4360e43c7b24b6492c169e9e10240ec8f0489714676f99d79a6d59835119ede615fcbf12122f2e62d48141f8a690487c6d35e6ee9711c6147bb5373b51bc0941c43b7e2ecca15a173b9ac332b62f5db697895f1d038862f4d6bf7b66b062ac4ec7538d7237fd16a5a146cd1ec579e84eb4313e53b465647a1a279b394e1490a0ce51f2c97c1eecce425f47cb93ebcbfece1fb9c42af648065022a540da7f172ea09f7cb35893b8d2c0da01eec82388e5cb9b3676da44f4e5246332fc395a80a4a7e391ad1bcb3a1f593242af9d41f0f81404c38a8594f888d57c07e74c62ad03f4a268623a96292658e11e1c63492d4d90d701b83ad20992d5bafc76dbe41bfd151d0bfd1c52b34be4890f3ae613d163c3de96743b5fcc51ddc737f8ee337e56cd23eb26826a80c38b43a0a2d9d7e31cefffa6399447245b991da56b1029e124a3b5e2522579e2ef64cbb4a5bb0cdba109ccb48fe576187d5af7ce7a364a4327cd1494fa7320ebeade2d1af617e643c0c5b794ed5618cf6e4b39767ee149ad3df654e80fcfb7dcdc67326d0bffc3dbb50ffd6ede9dd69ee819dd52487e4cb84333e23d519899fc07bbb90cf7fa54cdf00b301f804967d734a71b7b6562458b29bdb0411bccb7cd510fc1b7da12fb46a43a6a9961b6725f4a24a37feb89854b5e697e4fda687464637d35bc4d372b3cf09c89dc3598d49536002993b69b6b12d5f725ac216c405ec2f18680412807209fc383ea786c0fab7fb9f95559e5587a454f1759b6e1c8957d0a2dd8af73907b774153b7fa285df342433baeca30aa5fa414e752c02cce3e991cc652db1683f1547b134d2c7cce56d7ec30cbb7755afaf0ddc2f45f727be571d3fe5dbe54bdd688a0ec63ca5e0fc90b855d765fe36933f6ff7498dbd7b97be78e4328280bf69ceb5733fda214162e52a21cd7b15d7fd8b9f4c8c24c31c3a2f0c7b2a9737660f46ec3a2d9d149414d437221ee7682d2087742b28b2761dcb40e6a834e225e6fd08c39eb011a321550e6106bd6425f4b17da5deb948da2acadcb8e90f9af7c34e65c97b215a703453ee842a71fc1bdafe857ce88cb32d2fca96df2b96dada204733bbb40284f3faa215996e193af3bfdbbf4d15bc198f52634ae4d61778c148bf7120be8a60f5ae151425b4113998594f5e9fca3d8284a7060ecec29ca342f4e3cca79a36ab8ce92918effe1f1e6639bcba0c183ec442cc90fe27a2dbafd4e1c791aff374b5326ba16880a16d98269abb731904dd1f8eb00aaea66bfef72d5252931d84cc01cfabde3bea854b5b145ddd37bdced843340e0679b6b4e7ed2fe318fd0cef76d160543722e0c3eac11f901ae15db25905dca7a17b81c6d51869fd12ea569fc4b072d217786b4b4d73bde4b9bd9425bc87b33d6b1911e6398673939aa2f15ac505b9a1ab029b8452dd0869f392daa28adc942272615ff2db16bcf084f01ec9fcc2f7f6a632b2bba8c4689a8f6c574cb1bbf474ff6bc90f795cc992d56ba4c2340bb4ef235e09853c94b4c832c8b32a7704cb502001349a1afdd6489b2cfede3a23e1d0deeeb7c34c17dc2a99cfc88e27d3ff5795944326c70e6742d1ba846e87d6f1a5f9fb35d6d98e4b301ab75adec9b176fd11a1b6cfad6832c1d17f883d7d5158ac4b127c33e43a4aa3370ab43cce1a775f0c9c8411f45c072e11ce3ba5053b6677ebe5d0563118e77626edd1c93aa083a79db785af29472b9770f7887153d130ac691e68d77cf9f007947570022845d4ebb80045fe314ffd2c5d1d308824e2a7459962a643ed01ac5796d18019510ddfb68be43d6fa88094ad4da37b089033f9fddef13b09a6d490d839498a28178bfef4beaad69e4cee3e151fcd02201cecbc8fb43a8dde1db8e960144129546d44dd5eaa19b6c08e08db7e036c0015d956ffad62bd48f3018c76f0db3df4d4386d636006fba2fa8cc4773bf314c685b89eb016a2b2e3dc5d4fd72999faf84fa3cf00b3c84eced7ee695de20f92f24180a1939a9a174bd17f9ae6f01fc6adf07a3f7bc83634b41967060c72cfae7476979478dc27bd6373cd8a2c722927af9efb0229c7a7c7f75488f8324f9a48e735faa7a1e28b170ca1e0dd6a912b6388e40c5e8b026caa7e88d8a5f40e88c4571f952167ba10dbfa10a83b74297e67c2695b36bb18fd9fa5626a433ba74c8c520324591b0025b260bf150f815111ee840ade66e1d428a3d3676fb4c0acbb3c736b2f821576ab25b2c2f3dec944801c1bfa38076c34f195bb0648c424b2abc08636bc096cbb09550133cdff71312863d0afabf8f8b0a149e74a5c4ba047e04923555feb45af3e68396583b919370f465fe558777841d2c5d1cea3210284257c101cd91c2601fb93f5c327817a1c6e9e7f3729b03b8406538b169608c9fa8cef1371ca3b67382c2c145ef961d69d1d33a2c8e53416e6458cede9cb7e81da1fa4cc6b0b7748a4500d54c9f751c678cf2cc07287659abc0529ae40f92170ff04187431bfcfb2861c67b90eeb2d7cfc3d0f8f5a87f2b275713a8180d80d5acb7a0a70a878828213caf75d43ddab6a285ac88f99e6309a180319e8a58811beedd002434b7231dcdcd9fc9f9463da86b64988d49b8a6dfb1b5dff3c0f5dd6f6767ced03a3ef6f253c56978554a47398ec73991a21f240785db0516d4cca9ffe1a3758d9992cd69ca7a98eccec216d2c420057380938b1b6a77a08f6f275d54c834674a8dcbbaa3ba157673928173768071b6c0c99a61e31507dd56dbec65470df2e16c6ffe973a75d799480568be84bbfa0ac7ed0396f36bdc01c056fbed7285acaa54f45f0a0dc1c7d8d422c7ca9dd8ee700ae4fbaa24d192598143ecfdde9560070f21eda27182efda48a5877383af7d7766efb6fcba838149e4df4230d017e44fd51cdb0e530081757bb38f3904053885da9ee1097256ce43ebd00c9a1cf4989eba1646197027912a73eb948ffac7df078095a209f103845f18cf3acec2dc65d8c9a118fb4991f378dc801f5783a703b6ff8311e6f9f88fa48a0b5265be6fb369fc7a018a616efb7d4f482bc71c881a327f01d75f0bf89d8662885fa8f13bb5868e4d0ed93897eba4db1f856b7ee676cbae06c95fb6ca379fc7cdcbad5fc7a57c7f30d3564b7ab2861295a2b631028ef69de14878d50a896f25f28ce4eb5816501d658e19b8c692dadf2cfd95e7fba890e82a15634e5818f11e3b51d84bcc37b1fd9f4a2204be145e4e41fba9b8754d62637a482a625af4304166e293b06c40ac5220f194c78082d32de6e901ab874a3b59bc35bcb6704bb2916cf058c5e5047904f17390b4c480cc34b5d78d7064e711adf5b1e72685434bd77dc1a0f775a79c5626356d3d1fdcbbbbac068f04f37a1761e5061985e5e1d25816456bb958468a114392a4963e9b5fd3e1f31a2d0c7712a8172a41827af5714f9369acfd84c93634b63bfdab453ca3357c14290f5a15cb0339b330b678b126a3a5b6f630faeec6d18d6936abc1636b4cc3a4795f5739d950ca84f29777fcfddc4cdd75b40e5b5e97daafbfb7d60d46dbab634e08cc5cba44ed4d25ba4711ad02fa888b413216228c3a74d88f3732eb145db2ea7ceba4e674ce908e70048381f90fdffb77ca5fca1734108cdbf6c935ab69d1310b724a24af5cb398076107081eda007c303ce572c8403cb588c58ef14ab1f608e33fd5ddf527f4b45908a119e648a24f5fdbce8799ec3790a8a91ba55fe71d51698d458377c3ed15fa5a01316afb1718755a1564062a009f9dee5fc4e05b625272537e4b5f1b9ea4140c7d4982a98a319915aedcf5fd05149622c964e8ff8beaaeab81af5e1f5f67af2f2696f2e2394d7db931e5c60796c1a19da7f79cf2455475c7d37cb5302950067f058784bfccd0242be14c1648abe1ec541c8025b427d8faa720e9467ea96905d59096cbfe1aa7122b03a761ac450b4cf79be3f091f2af8835aad83784902950efd62d97cef5b58e1f046dc4a3e6c273599c242f029d89038e24ec3a04ca09e383c68d838c2b8c0030ecdd7d69884f08a197f741f4d2dd01f7067ee02198203d896142f879fed8d2a31a0da39258225a5f6da84832f2b3859b5fe578f35c07dbdb423bc54e58cb367ebec9d40818dcdef3ecdedb5c284200e837e38943e88c34b92ffcba9e2f74cbf4d209846bc25fbeab6b2ed9c9479570fd91436d2626255551d9febbf5a9453adeffc8027191fdba97e9741fb032e76a26d9a604e1c7b1043df3776da357cfc3c40178c6e8e8d4ef94aa6b2ed30bed0272fdf57203a884a1e0d7602dd4486cff7ab02f23fd99b91c1355b516e533a103147aea73280e3b4cfa34efc60e1f75e91c522fcde6d65a48d7b4d3e1108896428fe48be94369402327be297f7fe2242b8aec530493795919bb41fcee15dc746e66b08b577b494c8b4fedbdc3b4bfaad9c64c525109ee7d9438b55886f6bf0e8100935bd552fc9c62bcc588702a26f3182411789750761166c039ab18958bc71875bfaa241bbd738af0af443ebcff9be05fb975b2c71262547e66c62d74a3f638d6b039eead87f40e9951aa02d918f22e3834d1bc6dc0ee827f2e7636104b4bf8439dde5ec689571a4b944a4ac9035d48a084330a58e49ca4b5864e55d14512dd5c801d1ded089df88399101d78a9e1eb66b594833fe7f71bb8de2f4ee069e8d41d84ff95400bb312da8d083edfb8ee0a3200a3be1141e2259745f9b98799fcc92c920b5283b1768f023532594f801d12b882d2514aed6799394965d07a650d4fc17f1958eb04820e8f5166beb9e7eba65f5b0a1e923066adea552d22120ce74d829c4dd6aa2729a6ec7ef38f40cdbc1e651cbda1bd1753dcb45b72894f40a3478813b5fbec2abf175206cbd980c8abd5b0a746d765d3de4d11178b3f2fc9ee1f498950970168b15ebab5f85ab22b4ceb4d55bb452e19775bdc403a63f8f4d7a04ce78ed8d30b9697f2b6a4ec2966d3bf116df12e8e3f623bb95a78e0df18a5da028acbdd74552d72e844f75ab3e0f4e924a46ddca275af40e6556f567c5ac5df9e7a06c3f016ce4677e4644e3f26c91ca59f117c015511c03de52c65ca3d4f8839db9136489c9a856dacfb8584ec919b2c1c42f3264dfeba090d005f5df961f3e888297502c8b2789dbd88213aa0cbb9e7a8fe44b1052639f064562cc12885a0cc4964416220ab752d38919ed2e97ddf19b1c29adf6af48c12c7f9700791cd381737377682472e9734807a2b74f6939086b90691d0d12c3ed444836e1ebedb746b4002ec3fe06fbd617051aef1f597196a793e205eb0cd0920c99096ae256910e412aaf4e8bf146439284fc1cb19da28dc973d576e9f1c44b41f6461447e212a7cdc8a5562b42c8d5a97a0bbaf9b1fb3b7240babffea30609794beec9cb4b5f9744abb70a0bd7f4d4d1b6f6af0fd826144a9582ee5f516889d4e73139616f4f3eff143ff60759d9a9868df87390432bb2487e033299be138c4c7e1363aaa9fe19b101e56acdc02f525e65ff40ce428ae952c65ccf331e000e5a0985aa48fe0ed724849cd782ae46b1471b29db685d95f94d416bf95c6adf71a7887a98bb1198d07ae66e7447fac2ed8bbcb2ec7abbd22767ff0a812007b78a3079d317b81ed3f0ee8f86ef6133c3826a2f3c2ee2c4a135afb1994dfff9663616733a59905cd13a46e59c48178ba1e4288298f3160bc8ace6bde24e0cfbaa63bf6e5d309a39e8308b3f3bf6ec13a5d0e51de01bdbc82d7abed4d43800d8c4308be82679b9751d448cc1a1f1b5d256b6eac88335966c43b92c08d1f02ae9d18dc0b2e2900f6deeb3ca5dd593b5046a0e1adf76994874656946a1208b1ada9b0c1be93fbbcd8e7f545eb199d96e695ce5508776f8a8b3e04d522d9baa0eea516aa56ef1c39b44f1638c20d462398c416ee1258bd08033ba728776311e06567facc98562727373d1b1e9a15e3758a960b1b3dcc4fa3dee998c8a6ec851b5a045a79119bfca49959f533df45b35cb586f98d2d300176244fd8b56359d52ddbda7233256b336ede16c32f35966c0f6dfbc6c2c742418a36ee9927ce41aa32e439f928094e83b1b7d8dce05a8170555c6d6ec9755d9bda2aa0595b0ad7f915361078562f46d9813bca6fd682394280f31df37857f8b25a1b8be01fcafbf3ae6b2aa43fd77a579a99abae0cb5b22e0de9ebcdee9178725b2cb084bf9438d6eaad791a287894272ed1a35e097ac7df0659820d769462f744f38ae39f91d49852aec3812eee57885d5c216382a943e6f48ef8e10310f3c0656ddd4e802e89b0dbb62577d78c7400c6a0c360c3a31deabbb1d0c50f3f8d05ecd4eb939a51d0c7b30c82b3a14a05946a3a195eca4a789b6824e17c4e163a3b95f4c25b66a0edbdd3463b6bcf3e0da39d7a55d051643433f658f63f601373fa16522171bf331163b651a4e12fb1419e0ce92b23bd2ada18c07dc44a2a3accf13603967b5563e68874e040010224849bf4fe8cbaa2a368c1277523aeaea2dc29833f4f4631ff4ad6830ced45994d86de1378375cb18f9ee9c34c2f825b5df31c9f5258aed37d179cea0f1ac1074dcdae88bd548b70067f5674810a25d09ad4cddca2c3d78556bc9c50900c265243bcefc822ef8b582ec0540e589b3178fad5dd6490318d19f461b48abfab67e95cfe7b6f198a02cbef6d74966af2683d44ea3ae6d53e7d240c1dfc97d78aef6d667a222eb571bd82a704e821737ea7dadc64b06c8cf6c20360b64d43b6be7d599aa00a7d5ce9d763371e980d360ed8f1aaadd24209f443dd6460f054d0f2612d3b74b3f4fbd4878e958224eb8c66df31b33223a278521e66d879f4f181b2a2fc36f480e3ad3e38b69ee8a23bb3ee6b540e34ec6f5acaaab57c8e304a835970e352c61345576be5dc910c7e2ad6a2aaf53ea83514fb4e7f1a77ce8d1b662b28e90b92b7f4c8179a4af5b8315d26a4c3fd345c7c9573b2b21604dc064c4d84eb1cc3e7217acbd5bc8d63018207e24bcd13c6eb691c16a907bafd1bb18ff15c0b0698a4e91203b1ece186873771bb212d556c05f06c46a61597db32a54805ddbf690d809867f2bb6a0193733a6241e571e995fa499c4f28d9cb1fa063590ceca357c8d30144f375dcd78b38ed19b7523df1aeb5b523cf20a4a09f8dbf376dda6d43df556ac845bd44638a0d86cc2ddee72f3455acd6c36301188dd2f412de6d62079ad60aa885b114e8e5bd7c422305e9903d295b164f74ff7801403dd1466a1e65a7fdf8a4d5a84397af77819219a5592b8b422fe92708af0128a0f77fed6fb48e4d242afd89113d85e350f3aa56e2b55c120823a28d891094acdf4da9cce69ccf0b34d1deec7f8f806060abe82b68f8d7e02e586eb1e1a100f39d7a7505cc3ea1c3000b937428ec839aef06bb4dbf034979349a3530cbaaa2d7d64821c03b09a77d9dad5b3a65ec8659694c58fc7ca912f3ceaee6191a0f65c696aaac5865037433702ad58f230de703b6ff8311e6f9f88fa48a0b5265be6fb369fc7a018a616efb7d4f482bc71c8e31d8cf95b5383812fd944df228fe55095acf574318a063e8c5fe48cd847b8c30bcc111716d2d854bfb9d507104a86250909750c043fb4f6495ebafdad4966afbeb0721ade7b1d3977e88a74ef376d2524156556cd2f37a4332f59c918c946fbadbc24f5a5bff1887545b09ad1b88d1d1d6c6e3f004abdfef61e2268925ee9fe8f6499e6d0f92bb79b0d97546e034f092ca624d4972d054dc6553aed6d249689c384dbcecc2aaa4e701c93fb540cabc9160f843c0026a5fb18a24502061d1bc131280006f7949f91c5dc74b837b3b0c21db0d62c0a43b22e63e3a5ee9d797edead981197d3d340f0a5ad117df203280b38dbc499482112038888265768a95a11f9e0bf6b5e2eba3582a33bc828752618470fe3c70b61f3c4914566cdba1d0414b2385c7ff625fc974ca1bf44ce4879a7b15e962d3b366ed92ddfde356d2bb23014f5f274f2cea0f57fb9b0c454adc84c25d62cd79ac7a5f121bdd7651153fd930cd54e41b3e3c4d81ba704bb07fe465fa9c25c3c785e6bbf71d6cf3653ba62ae3a42bccf0e9aa9ac3baa0e66f5cbde9eea5c1c64a750926f6e2e568eea1b985831e772e8743e853f48a1278c5d44b280149c9fc2edee7a5f74f01a8b11c75a098d04c1cd4d4b7ae93966a5e95f3ef84dafc142acaf27fa0ae7f1cd4a4bbcd51f60babf6d23303bf11826727713240c37b1296d5d34fe6271450322b69a496c7f2fe15c2b1a7658b9c0efd4e001c8aa59386ab4af91950bc0a7968701ac4b1a79fe77b707001248baae6d0307ce41b95dee59c6aede174e2df47a6d98ea460b04b66a1a4206a87c8f2ec7ccaaa561c637cf80bd69604bc014b89f90b2321aa94807daac0f9d995401518e3866343027989610720e3d45585fafa94d766f9971a73f132f2a4926da0938c0862843e6e45d35c3790a6269bab639f6cc0e67c65861e60163a8c0fb448e65420d13e2a3cefa001a0dd00cae02e60270eabf5c8440886b8457128d6ab9652bf8484381ddd0061b7d47c33277147e1f340b8b175379b77b69cbdc68950d5325617a8dde07880be2da4cf42ea6026930c4ec04c36e904086662d63f07bdc1c381eac1fbb4cad36e19ea94f054af571e1b863b5ef1b052cd12e30479290183ca6c69a02061a67f71e16b1c4837ef04e5a64402530f1d14f0044dbc58373e6c8b43d79918849ab3e94f92b1a42bd9aa17552ff1a695d98eaaf65bbd92c1cd57d7a34bafe7f4627480636e2188e5f4a4d520f7d16fbf670ab6e9a3c84f5a40372d7459041763bce14ca806fee649af013085296485c4b4f3a50bbff0d7c7e37b40e6d1400b6543f730b4c565fc7088458f4d6588c3387694b1428b7f560534136c0d11f37f299a5179f2be96c88be2828984f28f2c1b6ff871db76a70cd529c170de83273ff6978f6902425bb4ac3bde15dcd6e4b864d2e2f82c2ea8a00a0583f69db26cf32bddd800328799f0ba3c866d99930f3883b14f775f96abc051913828bb595a54a9e46525ac8f74c6bb8bc84d38b4b1a3cb90689e6e0b97719c21b38b864d3bd83cf37d191560442746ffe31c5674562cb118f69c290a509d007a686efca41def41f19d87a7703019f2daffcffb27b10d2f4c3c25e6d49bc854745242f0e424cc290a865b67be413a62957213d8e71d91455242d7a346002113581862c5110f822f282717d398675f1381299196574f81a3a1ce8a6c1bc3a572709df96b572fdb45f5bd37a4dec91a4fd3d4d5404d42c82192905ccf5c9db0aede87e0bbcb9138347d0e34349352a54fde39e2cd1836b655cf380d6041a358a501370aa70c69e8491fb58de5062445de44a9620a8e12f091979a92f4a3eee1eda05957c42914d1b65f6e1cd7eb935939b43283bbb1588cee41bd06317e50d2345bf7b01a319b0af18ff44024580d27b7921f054d48dd112bbdeca9af0fd466bc3ba002a8b9f99d001686dc853083f4e8419de4fa2e791a5d6df1077c8a708175ae32cc1b2a8256ddd5f00544b603d48a56cb57484aea05dab273d1168b87d3ea09677273ba14314de99fc2a13688236080121714f9b1047a7826218a40dafeb5b7d146a189428f10051df1460444c2fc28e54b7dbb3d3145eaca2919a2c9c4fbb73b583aa540591f76e7287d47565dfbc455183aba3f1163fd67453d071a15574967258fbf4e7cf9c56f18ff6f283a61d69a91c01d5cc145903af0f9cdb81418a3967c4d685b32a33d9336e0ae2d9e7f774ec79680b0f0650b54b98c7b0907b07cf343fe04763705e35133dc8113ee95630d42784394e12056140f61629b5f038e8282d04a19b19f7384b5f08864a8a60a9b3d54001faf94dd9909aba84877f2113b6726767ef6804c638701356c2d11a04dc57235e6debe87b96cabcf8a916f49e1822ad3735d75b9389aa7e6f7de2dacb80e4345689483602a92659352b0a370823864e89922447411f380994348f5092379917a644e8ffbc2618a86e4c42216e8bc30bd3c7ac8898a08776086634411720853b512c8c188acd098373487ae70dc31c1255d1f1d83da2a4f17c6e9ad569b1134c157c607c8b0aba2878f3844377d9e21bdbb39b44dde96b91df76a01ee54778d50f886ec8322e7b1a449d88dee1ad2479ee47154be8f78745a17f288db851fccf28e2d6bf157eaeec076e7c45b324fd706b80aa822863c5b4791d873c610b5ef9dbd5fe32b344b375920944c3b6c9ecd86359540d1415902b39b628b0516def1d9d401a64e9566aad1bfbd3b472a850dae8741b22369a0854d85050e745952f5ac4ba5d52690e6e757374d124fb930760479b10f8d2605a887b42358f727ffc962dbb671ed8fa8a1ceb52c53f1c80261d4117e222500b8c8f3c2755e0fafa6a9f4e28b88a90aa8a1dd2536568562af40809bc2f2ebbe0d1eb5be978b64f3182bec5bf7ff4e17f593ad2083e3c4c346da66f7b01e35806aca150e8408fda28b81a244a9c9bc24a165f1e555845fc85f9793f3c1f1dcce52203d170f953386558408359b22e9817d18cad847861853264cb3ee1464d79527d96199c65e89fefe51b53150adfb3f5003cfc2aeb8c547f663adbf7a8942e132e6fbc071f7fc62c0fe1021fb33318af9394ea349717821073da748806120b25a31fc0bb59920d67244f19e22555db669897f7a2afa13d8e7841fb668d10f70ab47d8ea92fdd9aa4780dd74975bac8ac44f7807e7f73e94febc77968c1d30e43b1489a96b91bf42d178615b1b2c9dff15f1f71320899e1e6a1e1f1dace21aa3ca8c8985f1c705d7387218afacbb8c9ceaa9f5123c3938dbcb669495eeea1910fb3740c75808de156c3b47f8d15711a143ccf70be02ffaef0b3cc2e9dd5e5333337c08c76bdcd03828b855fb6b361dc749de559f8fe82d5df68e64d070e39724ba1c548b54b96d946c0d0340bbee9b2ee00e6d33825d475cea9c71eb0f369ae23ece93aa638e470843a8c706933a1a8bd078953807c8398140a94a7ae7164f4d98563ffb479488b45a7809e498b5cd5274d3bb0ae4319a57d2850b6ed80e21e8d9858913a7cd8d9e8c85da8294709eb70c85949ebd2bd414e19be73c3773429d57f95ac04ed39dfcc421d8aafcd7f13d9be82cd4a0974e4c5fe256bcc7acc095a6fe92489350296f5d8cccfab132fa2c24b919fd51c70da333e90bbad0702b25ce6e2681061bf4dd1b83d27d5420daf471726574285f4f5ec1fcfdc75547f0f8c140c5ffec9541b7cee772d27946f054092fc63ce0f9ae4cf271d6c414b610b35a836fbade9594dd7cd38a7edb43a012a1a430eabf65037e3bea6f9c4a59c9b3094cc6957ad43ca741ca6a9b7f237ed09b877bbdf950774d45815afd0b90ffdbfed374caffda14233b8944b0729b6bb8eff65a14717824589227bcc9074bc66b6db2527fbd4f199dc32efdd45d498ee528ef765f5a7c9f843ebeab1873cf40d055b9b315c10dfb9a8e4a8048e90c6ea0971b4a8ab4798a573b2d02002d5bf7345c0251cb42016018326806c2a166e3a93879d8febd84202ebe48b5bb7309966d891479fdfd43bc085b5bd095f8db8773f5b7f4a6cb78ef4040c68011b42a8d9328951200939922f3b41811bbda1c36f9cfb283cc8c1b79a2eb13df074ab64f0ff42f5074c6cb73d1494cb1f49632c374a94027b06fba9585a891b6f4b9aec5493c11b063a3a3a90925e6dd6e4db0b28624d4289a24f79a0a50fe859bf1982b3c6040714d18c1e8e4e44d783eaa444868577c59560afa2bea814a49ba8c5b06c39321805026381e76d9b098c041d79ed534fcc34795a240cf48cfc9d98e46f64b8525031dbfa80886defb140a880a1d5f1457eef43aa366ad7dd9a65f8c16dfe98850c6cc491d037396d7be478b8e84fdcd0d958ada70ee805486da32b023ed3cc7ef58f543794c8e00c91b6cc62a6387f602902a4dd87a7dece816e9e3f6ed33adf7e096899570b255466fa1f08800ce1b138584023fc076cb8a15b98cb40d15ead0a7d678e6052250de1a5fd8a027bd40dc864f482907afd640f2ba677039585b56e353cc183b18cc10a6eed549abab2a68d14e92a01c96e629a6858bbd7384969547a920a83e5ad4c4442b7bac9beca1be30a40876b309a6cddb9f497a5c8794fbe3b6af5bf617331bde9f5ebc853d112be60c1df558c96b4592b539edc996ccb716da96df036105a8541326ebb77e6543363789d146051d5fc183c1ac4cc4d0e688ba5157393e585315ad735218c0abf634059d0fee5ca841283795524e16ca7844c28d9e5b513122e38e03826848efb855ff3da8f02069977ada64057ba5c18236aec42c46b677e5d871ff465f87341aadceb34d82fa7ee572bf40a6c3fbc41d764ebd02cd143ac60daed30ebb2a0e5353d269a135e052033591e2eb6e512f43d6eb4e03f05ea65fa9732ece2dbac20310eaaea1de510b5887840464408258e98ce9ca028476928c1a28776d25ce331dd2890962c10acf0e7a44d42a2394f7e539cf70b4022fa366cb258a581ca92d72d8828dd9127211b127381703f3fc29f3d65a627bfc7f44356d54a0f27ebc854871a4d60622b84c6730d9fb4bf675d8359c88ab2e76bea4d7a854014a9fa2ab3c119fb3d8e52e67f9b7755923123490e4fff7c6d69f3e922775941d1685bdea6682c8a2e8b5737c86077b2629e1c5f3426fbfb8de15e4907dd7854daa16c9b608bca52c98a69ce713a3f39e242625240b9c5fb7042833263200ba586f16a7c3f449a4cd484f093c65c5b44abf2c2166315d1a9c215348a65d441d251a8d0554d8ec170036db89630291860fedb4f859f58098aaf86508a7c5ae1c00a8064da60198b6f01cec433e4c422838dd68aefbf9663c554a6253859bd896cd38c88f5cdbb9b5a72f1d33a9caeb18a86037a88f2f959ebffd804e4bbd1f7fec118c66e6fa253081108211f8f5bf1272655fc20c35b2d9cf6335f3fa5274a1a8d5be915bcc4fa87a8a7d24abe54cb733b706ae013566e3bdb07e80bbb401fcb7e014fbeb42d8c9e22a54f621a6c61921275ca76fa9143aa6904868826e38bdf9f3929e6c9edf78e446b54a6c8530602d2ec9576adb3a5718a6dbd8c9d904598bcba00fccc0fe9e5e2ae425347b4f1778978d31054615b16de19b6ee84ab4183afbe18cd08ff960ed55eb269c38e8f00fe58ce98e2c75cb158d1726e1ff7b18255b3e44ae7553eed71a2b387b0e7cad47e742dede76631deaadaeda445af1474f5e2b92d7a1e1888bb1470a23b069f406bbb39f68c29b62b97c03d325946ba21ab170607bec1056a1c5212bab0a6f7ece60e84238d1184e7d1df3051701d6f3812f10f9c8b1573570dfa9a8616a6262583d8870cd9aa1269a3970205dc492dcb31e9a72de1711594d002410d4dd46783f428c615a691f09d4e376f655babd5c713a0151c89e426aca99e8789395fb8c0c3541be7839b099df7930a0e7e15d37d9ac17d4b520facb50b742cae74bbec933bed0a8ea21c2a2a03c045f9bc9cbf7d0b13e100bf426235cd2b395279815e132f8466ca516f67173096737656c66f3ecaac4fe22acedb7954e4a2ec9c3d340d74bb711a016ab38ded0a66ae0e999f3bc59a3a22a3e349c7c394d315b1eed7eaf7939e204feac6ab9d3c3e203c5def31fd92e3a8ed195955abc125817df2ca2100862d9cdd1650c40291356582fd3b18f95dd4632e3b92799ca91fd960593e4bbe9fa599178ecb0ce2c08bacfce25d10890eee163e482a6b65e6c41f20ed035aef7834048acb224e86ea2ee3f60051e191eb1befb8b19c14252ec6bba2873a8794ce0e5f1d6c70483ec4a5723f10a656f02055a6e2d562c418ab337346f7e70d6c501055e54e64aa9db8f19858582a227d89796dfb89fa69a1397eb8a7cea6a2c2472d879b1e3e3b7648784881a1df0ac157d2e45bec40664b4fda38d2958abd1de1d75ac402720c45b3b01d8e19f697c8edafcd8509629c4439be79be8e7518dd0feeb91fb222e571d25b5e2d4e42fff1a34e5028d38b93a5ad073ae4b450770a46a38ef9a8ba278148bbc76be60670c9be6aa1e5489632fa4e6aecda113e7b8a1e133767b4432aee67f993d9ccf3a3a7ac6d0ec1e8d83e931735ec5c7ca8907252a8063007bb0eec37ab6c8a836e8d81b4c8dc271cf9634768081a14cd743b1d5562cc670609383f8f43636a5ac924411b68d70a1b4380b5a21282c0ec87b5941ea3189638a43577e2021cc8054d21b15a1eac2b884ba45260761953ae58f82e32c83863916aa44c844e988341455fa8737b56e607b1ad12e41e6d3132c47331db9cc9cea6cb31a63306dbbaa65ea29c40cda1dec27b833347b8dc9d1b94f2771b6d57365b1b90955ab2b47329c23e14a2c70e8de89ac0740c69f9304b530f2e0e131ef938f13e3dde8de4b49292d695bec168fa506a5fdf4464529958b9588d53108e58a6e6798ad1d3aa62addc1cc7124442404fa696f4559e6e5a07e8378a658f811e1f06b3ed7f8e42b36fc7be4a89a409be302d2eabc5197a019789c9ba7ba127caace6418d67f21ba77ae19c1c7bdb651fab20188e08642335048222f62e1da353d3dd95e6bcd716400a2d740681f7938caab9fa7d56387977cd57d5d2c91875426f3695be2977ab6bdf46dd57e3e54536f5e868a5715e73c04484b4d018578d3b3a030d1dad3d4574c59f61e9d528fe548676a068a967c3287b46cd1e685c9a3b7e42e3d7196d667a18d076ab0b7e73f3a378b00780703cabc740487d1c1f6c72b4940cf992ef4d38113b9eefe79c0823b5a9d985f058539fd2310c47b2288aec8c73fef8d7b4234c56061648e4f8350749769e229c8a5b321921ff0ee4c51f1cdedbee9a6944e4c78bde241fa15f18f9885c5fa4bdc028346be6c5cf5f35d3f409e5a63439094666b4420257a56369cac0ffd870f648600676098e16c8fcb6636a0bfb5db5aa0be2b974153d882b2d4a1648c098d00a2d947d2b7e079001992bd431f313c56b68abf12c861389c15cb678e69670ab3bee026017f833abc16d0b434d5375608cc69b532d096a35bd232f5f8062b82e3dc908b0568649474a08df0162a2142cdefc318b8b45a760aa1ae974363ba1ba9c290c3fa7349f2a08eb9f76ed6f9ff052683b6d7cacb9c4ccf3c2a9552efef8cdb6530456acd06c470b49bb950f051eec245437151252142edd8787abeb5d456b25e9b2efd989a2abb6ba0fac49cf4d98d6b158645515f6c27f4ec16884816e5cf5ecea0df3b2a736c0012f83e2881675525ba0a6fede9369cd7f8894042c8bbf6011a0478471e83bf1247e03ac6472024bdc2895fea0d932d305429bc57a1bba60bc4e1ffd2f6ec9801fa405977f881b0ce6f96d8f6299af668924f9c3458c6ff2404b574d4f1fc84bc1cf78675362c13877882e39d333053d75de71421da511d59c2a72e3bf57215c40a87e831eff993002b48e4ce822d00e80ae043300f4d6600efc2abd9f6eeeddf16ed7a9840f9b0852bf4d361b981239798c37594604ce3dbc2e97acbb1130441ebf4a922a09d211d76c9c34823004ea09da7247090ed83fcea59ce11a30b4ae708e36619bb00b07f43ced5643a74ac7bf082370c21d0cdc11fb5cfe086b5cc7c4ba12e45c7716f856d603c25cd787bb8a36f4a6d9025d5200d3d72e7a65f3b652ac4ffe5e2e5ab3498b4c1244f46e2036071d00a115bae6ba707c08b068ad749b7a2b6359998d87d42e641e73f7cc22fa7ed29b755720390411ca044b3cd8e35d6322c61c4d2a31e9f89c298910217ce389f5e08a293cd807af7be6c59d8cdcf67be91bdd50cfcbc0e5611a1c289217ab2d451d09716ba9f6927ad53eac185ec7e430fa8824bd88788b929b7b6d96f738294942b8c068178a9174900fd8e43d0866a1c8d6e961a4738c6d118a2303ff97cddd8c367315516ac74222ccb77ce1992adee8e821874a1754a3b4681b5dd13a1ac21eec364edae2b779653462220fef1d0afe7f62153ef43a4e7f16cef9151eacdc85794d81c91a68ae9575a7a6803b1e44e38b27715ea69e61c4ec895a18e745f4dac258f65e6f0e47dca427c5c739f22e3847dc4bfbaf2c185de0f7a705f095bb9544567827d8dc9bd6d947a28b8c0b3bc6717570f1051c0a02c80e93f06ff4b840a6fa143b50b23605b67f3e129d51062364b4d7bcc73920da72bef9bc73f7469cd6f04263017056e862ca8b06e46899bb557a2a5ac1fe1e7fb2e6d65aaefcec0e4b1acc8183c7f61ca2bff1aa982d9a924064c95869e1ae330e147f10873f4112dd4f030cac679dbb915912e10b021576d7123b9d300850e9cdf782a761e2367fec942920337d86e8ba8e61d2d1f120e3818d55c5bfd0abcf7b6dda9f6e4025233aab478d1dc8c3713ae07c753d6f4dee50d555f33f59032d647a4a7dbaec01a6617a5d0bf7e3ee3d1d914dcf7557d16c6d78dae8a4f749af251241959600ecde381ad9efd8f34050fb844c25f126344157436ec17a3f9aecd16c09a21bd33ca796ab588e30be1f0088bf18e8f14c95684767292f0d0408836817cb30800058acc643e158d24c888b26dfde84096d3a7e7b5ad370c735c51ef8eead4b98ba24c2caa19345ab1525d40954ca315be6302c2bd4037c4e351985a28d8eb4d34b45cfe2f51ae3c48d001ae774e3b83c4e2568c0833238a7ad9c5509050d1028c595767ca54d482a78fdbb2f3f35a066bde382eaa9364cb5ab9ebec8173cc269da56b950327ecd9fb95b96d42ff32142d05852cdcead10d417161d0ef2548dfde32501c070f119a118dfccca348a9fd36af1f8f2b76c480c7514fbd3fddd764c9be9054a7045c6e404504d176984811bb1d6df51604df6426866262b9e8af56b27853ca4f3ad2dd1e89814fe06bfff4ad3a3e6e159eeab6bcc8941d99b4e2e7896a1aee960a4838438b9ded61bad218a258419a20229502199f06ed8dd5d6b3b382c394ddb7a65eb7f09d01edf4c4f4e1e4f7d7181ebd55134ebbfdf0666bb467797dd130b1ccdbf294da84be92328d6fb65197bc5c69b1509b1068a8f1f0a0c370cb014483777027d9ec2fc5f26bb9c896a033419ace4c480c6bfd62a0c753c73b6e15d3a4a961bbb211f4b294c23b5b9fd65b2244158e91124d75efbf9f7a5987d5af6949e36aba6e453e7f352c7e6f124eb1a66376a7ca5565efa5d3fba710f3e2299f40e134b7b36439ecec0f5be1d1d8ee92955db9f02ba533e4128c851608f56492fbb6db600c9dad10865d65821814ab5448b2e207202f4ddb07adb8026ee8df0370c424e952abce948f6f72056f449f5ed9eaa45bf9944538fd746a8efd23cefdf737417207fc9de8e6b8a8a9f1934d3185d77c324bb432e979cc2bb96517fd26b70db11f62470035e6ea21938c99d376014b7290b984eda8eb3ac26c4e44df30a6cccffc92d5a1286d6df16be1a733814f1728b66b18132056a2c7defc1ba03e7b2914ef13aaf50e8dac2054a8e1b3139c5170db077b7c6f8a207dbaf87f4c974713adac8e0326f094e101295f268e43381ad6e3e486fcd95b66067285b12f881c85eae2ced2af0b57dae7389636cc14b88ecb1e0515d572a7acdd7093f63811a883e0d883ddd1f710d1207b4dec663d945e3fec3ff9fd0448abe712b1752e727cdc0903bb7534c27895241e7fb90db598db6051ac225330273397dcf70a2226f76da524ca97d0f1f58ff066ed2ab610d2cc867009d06d4785b22061c4826234d82095873e6b649f2766f198f404a0cbba0b078ce2d791a85bc0b6d4d6bdf998874a9eab78f4752d1f5a90b07874ec4593dbfe1a90b5ae9f52c19cb349f5709a4330c4f034af92038a5138967d3a819294f74b101c8a41e415763d1097dcadd596678cdb4463a08304c0a0a74b43f38702104432ed6346665932bbd92fa234cc5949212b4c8948533aed5e2b1efa07cfc75876bcbd04959d3e4e1426a2566f27bab02c6315e18f3fd757dfd06102e9028c6d7cfa070c2f256c312c38f755d733656a778d2364c82a864dd58ee4da094032587e0a9596056217ac287318badd5107c97a2a124cb0e64eb8413871ab537c11b5e58c213c3f8498ee86696c711e6f44d90961ac83fd84e730929d6de9d86336a0bad0ec95b92c4719f5901aa1a22de13c4e2209318bbbc586ebb584e88c4e50cb608f799e79dfd7fdd5d045fd991ddf2b208dd9bf39a591f50e6ec793416e2867f54e8c6c7e89b68c2a3191ecec4d09e8d4cb00f04cc2f475eaab197dc54b026f6ed1bd6304e5334c9fbf050c2a28e6cee57d0cc9611371951519946dd4997fe16f22e5645034ba9ab3ea320043e367d66516cb66f175a015c64199b44af409b83d91209019ee9c530d3eb24bb509cbc6bc987d9ee2df98dab9150931aafe02046f040dd042764e6055e85270d8e8e115bc0bc85aa3d5aacb7b34c840a0e22e2c33d542f35a4808ac18b9faeae765ee1e9afa8145ba4695652b2c4eebdaf698bc74f779e56e7f564150e6472317b0dbe74a73361c7cb16681c63747fd9203b2e244861ff543bdf6ba26ba01d176cbd96888354284a0c9dbe24543b81f8c47a64e940bb5490c7f413cb1834b8fc8c98c09f88cb2264011c3ef917fe651f2678721384c0aae346dfb062e23a2a4e2d7c2b41ebcdd8ffc0679df7140eb7f52e1eebabf827a88182643c59141ae2a6288687b83d817f7fc0daef577e43d1410871f2f9fd1ceff0af825faa55fcc0d9d9d52070dae60f646ec56c0dd111be1c13459b06470c7ff5b6f2fbf79a34b97c69412d94ce88fa6f43b208ab09e58166a2c9d798aaa769dff02083cda7469788210da2c5ee8583b28f7aeafb8a5a7c56137d2b9e2a9bec8a8f690d456b0e4fd814cedd6bb1369cf8926d4f397ec1e37637d00cff0e21dc265594c424d5e0c52ccd3aee99f6562c12f8e261bb97c44795bafc4fe9bca29961d6843547c8f4ce1c60d51b25fcf8317e1371b3fbbed3262199366d90abdd4df9d39a658e36946056f97cc557c78918d50b635167168d5252523e61668746f3a64d1139c39a8a2f3ed9471f795195fe3340ff3263223f851a9a584637d30663d8ec7e13edd18e9112ac9bcc41403e9393fea8866dacca42917c6cdbae1af62449d6a8ed957d85c7707a7f24c1e4062a011e7ad8968c27e4090c9eb3514968fba826469a166e5e8add3896c215d30ba18eeb143556eda066bfbb966825c487be6eecca5135e8211c09a21fc34c3649a2fa7e8ed620ca51c37ea7eeb9f19aafcb314f3b140ab8738de3d652aa3be089fdb1e7dc3b4d111926fd8714ca5d1ed4fd5afcc3dce743dc34cc03901a835e3920844cd1f73afde3c5cadc79feeb8089618975b50f7c8e642791b4a4fdf52229c82ad09258aca80abca90c4524fe655e44f2b122f4f659961a71cb60e4bbfba6fff30c08cd0bfb92dc22ee45748786cc5617fbb1896a312bf9281123eccaae5e7cd0467fa13fa8cdda6639943e4af806913e37d961041d66c62eab7953545b88502082738e91ed8282e99749428f404817d7f021aa1dd17c6c2e59b19b2abc9295627fc39df41e24ea83f056e50849a91d73a527d8b88e0cd2aa53062eb266dc573784c6d66b823219710c34e8794cf60451ada45f0932a36cc759e18fb4be671d97ec472b78ddeee34c9804c79b0d05be7a26bc230b9ea2018d777ccbc21f846b64746673ac3f7e6b546d1e53063d32e0db05d8bd68ef6d19ee16599decc76ae31f8804ec313f1782c9354183e3ab8b847ead46495597824b3e57ecd92ac037a7393c46fa8915aa1dad515c58bed1e3fa40032fe627ac081ac774954cc5e7091cca13e98330d6d672f8523e600892c8771d589866726b9716111d42284603dcee9ebab4fe12c818e672bc39056ddd103c4f2473ba53a47bf69e5f5e925ecc60bec5c6d8807e53b7b6dd19dac3a26b216e032e2dff328012cc80f1477feca50986141f203ed12e9afd6584ed3a201f6d256031a532ad4a1ffd1fef2ffc98cad3199829d1157a2f407eeaa74eeeeb6ec47602f8896393e0781f3c1170c24d79e3cc3b1a2080c4de26ef65140f72b257c16d96db6aa798c84bd5fad65dba51031fb6c5f868c5ad33e80584c47b2920e79f020997cf1a81b0d4657c2cf88b107cba8f1dc4b8606dbd8225d0bd5c814bb977dd597bc2dd2506d7a4a5ee82fc55c7bfdea5fecc620d75807a951de35203e7170ae039138bcd43514bf2ac8ff01927cb4ee8f9e1a65ed62ad67aaf7fafa745b77357604ba5ed3620e96cadde2f5bcf0b360a7b3949f1f857d2abfbb48577e468ba59672c30d8d6d07ab8cd8b1ec6b417ec53955f084e54f7ef0de6d2f9f5abd20d2416f5497b81899e1fd5ba98e62dfc8532b83c5268827215d62bf8796c26a09cbbf4885fd02e78b0c3c6491334261225e7690a24755ed4960fd3e6d44f277158ca40a7984cc4af1fea0a97bf111165e18b42dbb1c03145e09d6e8800aacf56f9334b07224a3b74b6d1fc6543600393658999c0a038df7fd0fa52ee1d1337183c7fca45b5bcbaa7dc58958b3f181559582a5bd93018207cc7a9c3a60939ae0a8ae6a073cab24ba3420152bb317f0acf707a66f8d9db855ab3aa07ea142fd8ee50a232cf6c2c8ef6c056b2909b3f6c891d39265fe03b8b2154b59651a3d0a7352b255a218ae7cb3431c3ac04c219a6beac022c4d250c76b3d62ea23f8be6fb6cdd7375ae95f8108629ee4712a727835f3cabb2b247aa69107d7fc1a22030d1ef3e7cce4ab3690f679c28fe6cbd087652f67aaba942aa88143ff8f0751102e3625f95ca0c26df2db080c47b35a805ed1556c8e71229d2137f21b1dd5d979ee56ebbb863f4c1b913fc184a2747e3276389ae12422039ec8ca7b9164d467b0f5347412405cdd2cb4e84c27e15f3731355662afbb29aab7af16834dd7e88d62c826b1fd9286b4d45777f335b29502712ed97c1ab880e925fc7ebe7c699ba2be36561d77878c2763d95521ff3e63653242ced697110429e78d725d5ca91b6fd7050a467532ca9a1cd10928b1824684705bb9d1f2d9f782ee2231849a2034b3fb0ff3dd15adb47eeedd1b891dd48113d05983d1ec3a0f9dac951de402c4160b899970a481703cb27594cf7dc7d21fedc72c1846a099521fef575e0276524fa20da076e6a49c6bac499b4fc07708d988d97b9af6b715efd2d135c4df770d7f45c6f3773c9cef93c0d1f72153cce2e1074fc189bc0ab2d1dbb85e57556e5e5e58b57140e9a79ec8dce74163d64dd26fc984484d251e0615c923b6f74564963c6de59d7abf1222d32fab4ad4d8ce58c3927b540ef96dff2276ae8c386d950b609179663b6e8177a7de61683d374f0bf6a5982fd1b76a0e4e7f0764ed580814cae302362c66f04ba9b4dc6f9c7d299c59cef05f67923cdcb5204989e8df7d87af84257ce3628a6512ec6d215462aa2b7afe2d6c7f433b23de82a71d2bb1dd756792ad770a07afc1b04c0a2b69ab19e48da589ca9c2feacd5620644e1e7dc073f2095dadb6aff23c0dd7787162e2fbdc7f01084b32be7a0f48fdb71955c3a01f8217b4737f61e18294cdf449fbd9e659ad9ec0a18d2c54eef6f10fdda0b5349813dfb74fae6827e0f41fee08e9b6141ca2500ec9ae73f0ac45504c10ab59847ff31665314e831367f00b83d580a650214c0ba9bde12a98e9262cfb5e9eb635e226c07f4b7c84fdf2374daef3e38344e2df4534524de25b81512c36bff6647283ce26c01fe44caf40e8f96a90db791081325e83b53aa0dfd48298744c814ef2f7fd317fbd552faabfecae8aca302e12373b2081cfe05f111afa3d490e1409010580ba3e9488a3d6f8537da33124dc0495232ee3857b57c03628f7de3f70a4188a79dc3a19d9a60004354f6d72dfbdf02d1416f2f5f1b9e6df5afcbd2148c0b033fcc170e2934520e4d05519214ca5582d8094b1be724f830a39680e66ed0495e10080b22641f6f1a659e95f2f1cf20a7f8e92dd15d77a8322c2e08cc2385468d7663abffd740139192d7a51d6c03c7dd5263af3c586bb9f90f93f33919d2e63962f0b5d76d9934cfb9e7bb240134b686ea3aa900d1a725c7e1bc0c4c966c0f41754d24db54af264c512854ebf41acc0cb787af7f0bb2b911a2da63ed3a2334ed66c3ecdb7422339b95c8a75d9899b7621a9fe56bc6e319738efe29a88b4d3d2cba166dee74af2766085aa32f5673d5dc879b4c82565fc0ba8cba06fd16015f2f7f3a278188568b5b9ad7a6dbbbf4f50489efff3399858ea3830e0c1305c911f10a6ade1fdddea17c4e336511faa965b3b7d69d9bf6e216483d304d23d7e1facbc3406469327811fa21ddc32f42ccfd9335dc4786c75e3aac4018bdba4b58c5ee73d68a0a02c0bcf67e6e92154b4921134cdebc2cc10e5cd7a77a95bd37fdb8ebf0668126f176c856890496e7ef12ea8293f19052bfa7f9562485848549bb7f7363103c40bd092a03f54ec518fcf49fb88144fe57b9644a9519ac753fe840f958a34bca785f8028dd7165da6d107a790c3ff070744c1479fb99c3a8555d2380969464c8fc30fdc99cfd2531e62160af6f40de01db7f236ac6e9889fb1a478bab9e4b67c88e2e7c404979f1f2641ba8125f350c87511011c35b008eff6c41e0aa99d4a0dc13c98818ee75204b4d55b1e0bbf29a01e1a1fb7e07723c8e1f4f0bda70d10b03a4734c23b1e2cb31d70a16939e85564d8fa223a23109c5a4de15c465bdf6aad8a294d912a8bd252c1629fd445711ac481afa20b9ce1281cf2d1a225d7a4fda7c22348f94793814157dd4f32e1e6ffd70b1dca13991562c6845bb36df57876ea5943147dae4a5827a2260a5c5724e94219b1120f0ed40ed401d6daebd497fd657963031f0029b6142e7b3b0f3d62aa9eafc8f151f6a58c012f56b78caa0a9c3df2fd330b248ce95d5e1c5107142c5d699528b71dc24ad37a69aef1de587a6eaeb74fcd547781833050e06a4b8f8253df1861c43ade55722a5ffffbcd9a0f07858a99c23e3008801a0ca21eb068c56eedc97a0f68d420ac5eb98df545db051b7c83d58582580a7800827ec47b865c3e703107d4ec512936b83d363c6cb4c402b758f7ab3ebfb58b710131abfd544508680a120f70d8f16085c4f0bf6fce02b587c9cebfac78b05461386370a09428e9b948c50c26a242be9d005c2882fdb0f0e8a3a05db782c9915f61dd3db748c94d724419a7dbe5377b80d20d7ded84d13d02c1f61af1908b457265d9aaf8ee5a7498bb7c5c6677216181a193044a9d8429bdc4249acc42b753c894567d81be6c99048163481aa2271616ea475f479304a124535db89d0be49527966d4f7b954fde31343ae500a12ef5cd5ba0d2e8b6862645b20b8605fb9b1af3cd7731031d81f71ea214a6f313ff3b318a3e8ed66e4433848b1ed7ba2ec9d661dc2e84764ea26cd6eccf568e36be4fc988180ceb087f50b85bd2bc263f4f04e3c55e7c71362c86e6867e81025527178e5f7ae673b385d9a29c6a5121a18dd68080a6a89c6b62ad0d91703d8469985bd23aacb791987c62036534703e158269232c6c0dcba27a178149add523fa30b727f454e1536229501072bdffc3cce22832ff8195701d35656e1ca3a460a731e2c9fca798203f26518392ed4515a2b3aeb814f3c1b4c4d9ea3a79fa23765230559d924edf5f619cd46f259c717351ceb6ea58713e63073b093a5d16735e4cb692c712ea9d676ea414c2fd48a19acc2c181278bd13a597ccf0c0d0c05b727931db7ece0fa267cab14812258e95b1b8efb6856e29ff49c8a95f16d215b17cd05f264d861d4ba5623f04ab075a0f0215d101cfe104286c37c8967d310e0f64608e49bc1f1414688dd1a5638dec30237881381c2efb2656b8b35b610463996d221a8635023efd3c4513ae9a6dd43ae8f5ea1c4b4d3d1ee011f200109612ae41e2808113906ca79107b1e45ed413ce045857918a08d0ee5ecfaa8e3c3e60c14ff2feb85434cec97097f32f7453403816f8ea495af489a64ec850149da6da6e8669cc91099857ba2565eb8222fb1dafc356330dafbae80fd60695398e47570ae39e49ea7ef36d4eb12d5a46268a442125c186f3cae736e07efcf98e0aa7f6b512e359fdc071cf32c6fa100aa2387900eb38774748f8c5a3473d0188049010678b2d08ab2b2642c63ca0dc86364129ee87ba3a3068690782c0fceb1309089ae389a19de3a08dea2f1bd4008135174c45fd60661bcdaaaa0a15fcc1e81027073417e47ca330eb82d22b238b2446d1ebc4dc1afba415637d9854f9c889058edef35fcb0414332448309a19688858550ae284d8f15b52300a378e25f499244449e39ab4605911cf639ecac4100c2e8edf75ff992d9f37b9d80aba7412159cb83e6472ae9edf239484004b9154e1e1df750da703145b1b1cbb9fb6699ee4d379b8b89a00daded93dad96a8c9acff498357ab326fa1ac656cb4cdb4f22d1a615e226dc65bce9c2c41ef76ffa661b53ac8384a414dbe0ab96358f1be0f47c91df1f8891e6370c25c101b6d6190b550983f263dfdeb56c14a0f1288430c40358577bcc91d11d24470c7ff3471fb7d34fe71bf217fcc4bd205b381dae4ed5d81ccf58e02b4d8c149ccc767317a2b1e967be79b5c1f6f7433a568ec244f9d4195f3e05f23d49d9e93f4a0a1867c3275a401fa5d7e885c1387b56aa063086e6e723be3adeab3566fb8d62aac93a3eda88637402cdd9f97732613a871b830e6384e80ef5a47ddff946c7dd2f6293323548b1c54dab295b9cbf6891b47102b6debbe8dd27586b6c37741df500b3f3e9ea490838a25bec9e209e467613b7d7db4cd3e445b0cf777bc44619385b119e9eb50f499e46b6212a3f68b68e67f02476dfefa164e66addd3234dda9c3e35c05d25ccdbebc9032b7bd9761e907d4be5bf77282d559b658b60b9e5be356d03b3cd7745103fb56bd53db7f1998f1a2c4d55b0260cc6c6bda69eae993164bbbaccd9c974e03618094fb9109f97a7a16897766a393b56afd6d713cbad1411035159bdf86ef76f1f23ffc44b998be9f9491695071be4a25d161b90ca3ab6ff438d4cef6e822fc244ebd2d121a740d04b796d5d2ce36277d9d79a13ccd8b34c613c609d70a595076d4f32b1e1a3b3b58ecc120bb83462038ff62d5ba121b0450068feecc46b152b6dd669045a2761de06ce8be542c28ccc899e3308d8ce067fe16f5c3288ef6ac4e93769dbe0a3a8fbb53792b7d1ac8729222ad39ae9eba4fb46c6027e8bd66f7214a05da318d8844c472f569f27c114a9fb0a66f6ab49dd373357cdd3ac9d531c559003951f2eb037d860327f3efacd77d1d53bf594351e5eb8aa2deb2182ee133c7b36399354202ea15e25c8574aa1da25271f33d7973c60b825af0fd0744740e0a29fb439a4a98a905d798d344c8d34c78ded59916d314ef494b0e1f0e17b8d49693963193da7f565cada2663194ab683ffd79e990139aa10fca322bb222d4ff7649affb6b689f5aa2d0ff0296cb1e171b237c8c738d68b8bc0e7d2796a7e8fb0b5ff06a13f99727003b45a0830b4fe2de754d4f09d8812b9b788c464271a85e48b9e53e83577b464cfb84b3711b494ff269b24c2f406a64afad0d7ae3003b5738bd72f01d695f5581c74fc848fc108c46c1e1e1e0d2c00d5a6db10e4e345db4d40e5e5350adcda327108f90b02abc1ec6b9ce4916da2376690988278bda6fd1ba25934f77858b2b29ab1312aa684541b1f1ddbb6947498dc3041d56e3add1fb8f0123113744b64106556e0d90b4d37b255c5393c20818a66b2733af4ac5d997b7542ea36ca3ff7a148e4b8b518faf83e04f18828e93c7e597c7196ff936beff2edc3618c8273e2e9c0fd1789313fd53d482bb8278a568611097b5f8f5527476e0f1654166cac77e545119c8a619b4cb11b3a0532bfb5aa80208bfa3faf3c4500ddbd9ebd7a28ef061dea7b1e4b5031e2b9a08b904b71e7ea5a224b14a66c579c0e2e6609bd61d1d49103e154f5bea32ffde638a251b399df5528479f3798b15f3d73e86d295f65db4078ad0c7bc776fa244e88344a4fdc4e37da81934067ca7d8538598660456b5c839f5171f69a34b225a73d16fd7c0c34003a6de5e8c901a132118ff966dc2b26c5374cecc890ecf11938b312ef92c8ae48c22627d72ce54841bdc3972a43f1c1b6483317dab6693217d2882a41f02ef5ccc56bc99ea56a3edce864c79f11420b60295bc17629f1da020c35349f4a56d9df1b14ffa1d6dea9daf2be8db8456d294a525414b07b727e29db888fceeaa8d6bf9ddfbf911d267585610c9ad04b422e8b9fe86b25f4892a5eacaa0ef32f66d33ebf20a48ccc6cd7e5cd95fcaa369402b33c588e687c48b73e8e94671e2916f9fae06b96d33a8966d46943886350df8d7713e903a9505337ceb31e823771c80c123797fbbf93cf379231f8412be5a9ee54cf6c4374529b58aea7a0cd437ef8c46bbb6845f84f352f04f3f032b4a3872f5283ce9495f90e7a836626bb230d45147772e270a66be79423852399cfde61d808514cdc3ac08822b1f3609e39b7a52e0f1f7ddb2e35913b931d87ee94abf279df42adb19f3fdbabd09a562d940b36f80affaad4b0a086ffa6d3c85f6692fc801ee2e322c9fc8b811246007301d0c20f1e9883062485ba7d63a6b3ae8aa2c5c6b3ca9dc560cde7229d48eb3502027a57cf966e3b8fc4930ddb0b2e512cca0327a53997eb6fdd49c014b0800b51d06d83d63364c60da48a6f6440d29a28e943d58ae30c3d10e6a7cddbaf420370e2848f39324cb3e67ce65bc611b3b4410a6813384f350e3bbff861bac8a3433eda00e128d1457a288c54e161331ea487c69a4ae2d82ef919f5b43c59c4feab47a5f7f9d502e7353286543f8a37ec3300c622b3f22976c77b73f8135073fdef9c92783bf7de91569105148cf56f5c8f751bd6b1fb73a1c1d2d4bef4d0e9e83db9e9ee75d426c52362b4321fd369efde47370d3e73359608eeb10c7b9c10788de67ca930b132a2e9c4d8f9e43ec409256573f3aadf421dd8e23883866c34455478cca54e130b1e8e8aa4a0a30022b2365ae95b4bcbb0476819eb3968d0a6b41f4904e68a75029361ebc494e5863dc3d4d1d188eccc915d5d585b023bdbde9565dcc0233c2a329a23e719866843df6693f4091992a5897404f40d6b45c84f1ab8405e5186ee447b67df5b4c7a1d2adf4bc2df43028c72e1c49fe9bb2b3da90bfccd4ab8d6355833e7cf51299b7eef53c1c4cfc92b255edfc8287104633f7a8832b3c83c7bcdb7567f924d691b2df6747037a6f262dbb69be6564fe56c8d0d83378d2e31ea3f8fb658f0c61f3f1fcd2f5bab6c769786f5c352c7ca61765862acc144d6aec2ccd178327281153f834c21ddd0274fff3c7b8a3c3c7bcbf8ba558cced782c7474be893520495e33b87b97ef2e2047ec428bed1064c14c11e174e24f32539fc4334028113566f67da56528d6de236e69a2aed56955998825b2dc45052bd22cc010770b5733048a156acdfd4067bb5fa2c56b4374d077a29e20eac61f3bcd62f5704ac77c36d7d59ec895c83bfd406feca8cafe22397c143b2ebe7d29e542688c28950c3377a5d311a94f3b1afc91d58f5be0ba737c33f55b387afcccc9581741ada5f1863939ec982ac19c0b9f0a666c4109b772ab01350b6d0209cae415dd2abc8ec5981f605f5d4b05e78c0054647a33c2a9849283cd09f1c38dc1aec3d4286f0f6c4820c1b04b6f7b0c0da1ecc18395fa736ad79ca478786572c50b7141f46a284e0bd6c813794761c1ed4e0de436387582c40d9869b88cb728f4573cc3605b2ad9296d630a436dbcf387f2eded6d41384d22f8cc7b3578673f3fad0f4b9c6784cebc342c64d677d948b88051eda8c32f19d72d81a3d0b7c89f283ae2c527bd23321603c9b6cc6203ea4bd83bd57db865da00648bb741509c8acf693ddbd520ee3f498ef47d0e3800a70e2346495065279f18b8ce4dcf4e877bd1150247a5948a117599cb4db759307c3fee333a02b8ff6214973305c87d3347bb3994c26e87716e4465e9760b5078b5da7ab7fceb014fd412fcc7883f14ab03f8aeae04f59eacf832367627e88d1d9fb9854d3abb214f88bab3c3317ba08515445ac3ecc007205e1df804715346a4a18647d04ec124d1f2b697b56e18c07ba3109705f890aaaf72d06a4b3e7373bcdaf8a60efeccf69dcbd601b6333be6192e33e6f3b5ae7b2fe543b4bb4d89b0dd9d97e94c22fc07305fe2038029d04692dd517798b7082a558f479fd0a1d38690067a8a68fd34060ba7647ff5e5188fc5ac5e9a629dca7877fa7bf4eeaf087613ff96ab7f5a20629fef4a118839dbe929d16a62b850c427e423a7b9876ac9371bef8f760eb4b20543fa218394a0232d8fa40964876fcd022c0c927fe9a85b48d1d10ee8bc23f0712c1fbc950c992c0394f50a6e6fdc08803ff11929340b9a0feb232c5a3cfdb18c81e6d49ce8741f5af5553023e557dae6e0f278c5be34dafd640484ec8b5d1ec492fa331ff66eccea0402048ee88e044bff00729cf69604dffebd6996cbc569b3a535c8618b3210e22ce3b9d20e43c2444c437405f30224ac6c08c98e2b73be6939fa317716a887a82b5acc22ad35deb8ec174ff89b67b8c82b7572818281cd373d68e421898beb286228676418ede126a0bc7d68f3b5ad6d249c93e0724f1160d7594a49f85c562b85abc6e6db33eb65c0a480b5155d2580459908ff33fb21b0f5b068f2ab1dec460095fce202c7ac79a9a6683745987bff8ea20887452881f8d6e84ec2b3e512aa3a90e22fefb98409a89f8fc3d2cf2596968b3879aab13466add22b4c2db12dd1c9551d779f263572f8b44e86d8e5137ff8f04548b9a0d44ea73cc1a0886f847bcf2ee359a8715e53bf30ec6db25862407df23c2191ddf4828bc05c1299291c8fabca79cd77c55a8e399c74364d8ab8a8a00e23ec45b810f317e1e78ae19b74c16402d83241a2d9233a60993e7897725c060991f4ae114f77c750c8ed224e4cc83745353ddca9849b8228e35fc5af4230e93b27d123807crootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootdpdk-17.11-13.el7.src.rpmdpdk-doc    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.11.3[`O@[U@["X[d@[@[@ZqZqZTZ2gZ'Z'ZOYYYMY:Y9<@Y9<@Xg@X@XIK@W@W@VJV@VVhVEV*!@V +VUU\w@U[%UB@U:0@U6;U0U&iU#U/@U:UF@UF@UU U T@T@TPTPT\@T T T@T~T~T~T~TܕTD@TD@TԬT[@T[@T Tи@Tи@Tи@Tr@T T T T T@T@T@T}T}SGSǺS@SESSDSSSr @Timothy Redaelli - 17.11-13Timothy Redaelli - 17.11-12Timothy Redaelli - 17.11-11Aaron Conole - 17.11-10Timothy Redaelli - 17.11-9Timothy Redaelli - 17.11-8Kevin Traynor - 17.11-7Aaron Conole - 17.11-6Timothy Redaelli - 17.11-5Timothy Redaelli - 17.11-4Timothy Redaelli - 17.11-3Timothy Redaelli - 17.11-2Timothy Redaelli - 17.11-1Josh Boyer - 16.11.2-6Timothy Redaelli - 16.11.2-5John W. Linville - 16.11.2-4John W. Linville - 16.11.2-3John W. Linville - 16.11.2-2Timothy Redaelli - 16.11.2-1Timothy Redaelli - 16.11-4Timothy Redaelli - 16.11-3Kevin Traynor - 16.11-2Panu Matilainen - 16.07-1Flavio Leitner - 16.04-4Panu Matilainen - 2.2.0-3Panu Matilainen - 2.2.0-2Panu Matilainen - 2.2.0-1Panu Matilainen - 2.1.0-5Panu Matilainen - 2.1.0-4Panu Matilainen - 2.1.0-3Panu Matilainen - 2.1.0-2Panu Matilainen - 2.1.0-1Panu Matilainen - 2.0.0-9Panu Matilainen - 2.0.0-8Panu Matilainen - 2.0.0-7Panu Matilainen - 2.0.0-6Panu Matilainen - 2.0.0-5Panu Matilainen - 2.0.0-4Panu Matilainen - 2.0.0-3Panu Matilainen - 2.0.0-2Panu Matilainen - 2.0.0-1Panu Matilainen - 2.0.0-0.2086.git263333bb.2Panu Matilainen - 2.0.0-0.2049.git2f95a470.1Panu Matilainen - 2.0.0-0.2038.git91a8743e.3Panu Matilainen - 2.0.0-0.2038.git91a8743e.2Panu Matilainen - 2.0.0-0.2038.git91a8743e.1Panu Matilainen - 2.0.0-0.2022.gitfe4810a0.2Panu Matilainen - 2.0.0-0.2022.gitfe4810a0.1Panu Matilainen - 2.0.0-0.1916.gita001589e.2Panu Matilainen - 2.0.0-0.1916.gita001589e.1Panu Matilainen - 2.0.0-0.1911.gitffc468ff.2Panu Matilainen - 2.0.0-0.1911.gitffc468ff.1Panu Matilainen - 2.0.0-0.1906.git00c68563.1Panu Matilainen - 2.0.0-0.1903.gitb67578cc.3Panu Matilainen - 2.0.0-0.1903.gitb67578cc.2Panu Matilainen - 2.0.0-0.1717.gitd3aa5274.2Panu Matilainen - 2.0.0-0.1698.gitc07691ae.1Panu Matilainen - 2.0.0-0.1695.gitc2ce3924.3Panu Matilainen - 2.0.0-0.1695.gitc2ce3924.2Panu Matilainen - 2.0.0-0.1695.gitc2ce3924.1Panu Matilainen - 1.8.0-15Panu Matilainen - 1.8.0-14Panu Matilainen - 1.8.0-13Panu Matilainen - 1.8.0-12Panu Matilainen - 1.8.0-11Panu Matilainen - 1.8.0-10Panu Matilainen - 1.8.0-9Panu Matilainen - 1.8.0-8Panu Matilainen - 1.8.0-7Panu Matilainen - 1.8.0-6Panu Matilainen - 1.8.0-5Panu Matilainen - 1.8.0-4Panu Matilainen - 1.8.0-3Panu Matilainen - 1.8.0-2Panu Matilainen - 1.8.0-1Panu Matilainen - 1.7.0-8Panu Matilainen - 1.7.0-7Panu Matilainen - 1.7.0-6Panu Matilainen - 1.7.0-5Panu Matilainen - 1.7.0-4Fedora Release Engineering - 1.7.0-3- John W. Linville - 1.7.0-2- Neil Horman - 1.7.0-1.0- Neil Horman - Neil Horman - 1.7.0-0.9.1.20140603git5ebbb1728- Neil Horman - 1.7.0-0.9.20140603git5ebbb1728- Neil Horman - 1.7.0-0.8.20140603git5ebbb1728- Neil Horman - 1.7.0-0.7.20140603git5ebbb1728- Neil Horman - 1.7.0-0.6.20140603git5ebbb1728- Re-align with DPDK patches inside OVS FDP 18.08 (#1610407) - Backport "net/i40e: fix port segmentation fault when restart" (#1610481)- Remove dpdk-pmdinfo (#1494462)- Re-align with DPDK patches inside OVS FDP 18.06 (#1591198)- Fix mlx5 memory region boundary checks (#1581230)- Add 2 missing QEDE patches - Fix previous changelog date- Align with DPDK patches inside OVS FDP 18.06 - Enable BNXT, MLX4, MLX5, NFP and QEDE PMDs - Backport "net/mlx: fix rdma-core glue path with EAL plugins" (only needed on DPDK package)- Backport to forbid IOVA mode if IOMMU address width too small (#1530957)- Backport to protect active vhost_user rings (#1525446)- Real backport of "net/virtio: fix vector Rx break caused by rxq flushing"- Backport "net/virtio: fix vector Rx break caused by rxq flushing"- Enable ENIC only for x86_64- Re-add main package dependency from dpdk-tools - Add explicit python dependency to dpdk-tools- Update to DPDK 17.11 (#1522700) - Use a static configuration file - Remove i686 from ExclusiveArch since it's not supported on RHEL7 - Remove "--without shared" support- Rebuild to pick up all arches- Enable only supported PMDs (#1497384)- Backport "eal/ppc: fix mmap for memory initialization"- Enable i40e driver in PowerPC along with its altivec intrinsic support - Add PCI probing support for vfio-pci devices in Power8- Enable aarch64, ppc64le (#1428587)- Import from fdProd - Update to 16.11.2 (#1459333)- Avoid infinite loop while linking with libdpdk.so (#1434907)- Make driverctl a different package- Update to DPDK 16.11 (#1335865)- Update to DPDK 16.07 (#1383195) - Disable unstable bnx2x driver (#1330589) - Enable librte_vhost NUMA support again (#1279525) - Enable librte_cryptodev, its no longer considered experimental - Change example prefix to dpdk- for consistency with other utilities - Update driverctl to 0.89- Updated to DPDK 16.04- Disable librte_vhost NUMA support for now, it causes segfaults- Use a different quoting method to avoid messing up vim syntax highlighting - A string is expected as CONFIG_RTE_MACHINE value, quote it too - Enable librte_vhost NUMA-awareness- Update DPDK to 2.2.0 final - Add README and MAINTAINERS docs - Adopt new upstream standard installation layout, including dpdk_nic_bind.py renamed to dpdk_nic_bind - Move the unversioned pmd symlinks from libdir -devel - Establish a driver directory for automatic driver loading - Disable CONFIG_RTE_SCHED_VECTOR, it conflicts with CONFIG_RTE_MACHINE default - Disable experimental cryptodev library - More complete dtneeded patch - Make option matching stricter in spec setconf - Update driverctl to 0.59- Fix artifacts from driverctl having different version - Update driverctl to 0.58- Add driverctl sub-package- Enable bnx2x pmd, which buildrequires zlib-devel- Make lib and include available both ways in the SDK paths- Update to dpdk 2.1.0 final - Disable ABI_NEXT - Rebase patches as necessary - Fix build of ip_pipeline example - Drop no longer needed -Wno-error=array-bounds - Rename libintel_dpdk to libdpdk- Drop main package dependency from dpdk-tools- Drop eventfd-link patch, its only needed for vhost-cuse- Drop pointless build conditional, the linker script is here to stay - Drop vhost-cuse build conditional, vhost-user is here to stay - Cleanup comments a bit - Enable parallel build again - Dont build examples by default- Fix potential hang and thread issues with VFIO eventfd- Fix a potential hang due to missed interrupt in vhost library- Drop unused pre-2.0 era patches - Handle vhost-user/cuse selection automatically based on the copr repo name- Dont depend on fuse when built for vhost-user support - Drop version from testpmd binary, we wont be parallel-installing that- Remove the broken kmod stuff - Add a new dkms-based eventfd_link subpackage if vhost-cuse is enabled- Update to 2.0 final (http://dpdk.org/doc/guides-2.0/rel_notes/index.html)- Switch (back) to vhost-user, thus disabling vhost-cuse support - Build requires fuse-devel for now even when fuse is unused- New snapshot - Add spec option for enabling vhost-user instead of vhost-cuse - Build requires fuse-devel only with vhost-cuse - Add virtual provide for vhost user/cuse tracking- Disable vhost-user for now to get vhost-cuse support, argh.- Add a bunch of missing dependencies to -tools- Another day, another snapshot - Disable IVSHMEM support for now- Dont fail build for array bounds warnings for now, gcc 5 is emitting a bunch- Another day, another snapshot - Avoid building pdf docs- Add missing dependency to tools -subpackage- New snapshot - Work around #1198009- Optionally package tools too, some binding script is needed for many setups- New snapshot - Disable kernel module build by default - Add patch to fix missing defines/includes for external applications- New snapshot - Remove bogus devname module alias from eventfd-link module - Whack evenfd-link to honor RTE_KERNELDIR too- Add spec option to build kernel modules too - Build eventfd-link module too if kernel modules enabled- Move config changes from spec after "make config" to simplify things - Move config changes from dpdk-config patch to the spec- Fix warnings tripping up build with gcc 5, remove -Wno-error- Move the unversioned .so links for plugins into main package - New snapshot- Fix missing symbol export for rte_eal_iopl_init() - Only mention libs once in the linker script- Fix gcc version logic to work with 5.0 too- Add spec magic to easily switch between stable and snapshot versions - Add tarball snapshot script for reference - Update to pre-2.0 git snapshot- Disable -Werror, this is not useful behavior for released versions- Fix typo causing librte_vhost missing DT_NEEDED on fuse- Fix vhost library linkage - Add spec option to build example applications, enable by default- Enable librte_acl build - Enable librte_ivshmem build- Drop the private libdir, not needed with versioned libs- Drop symbol versioning patches, always do library version for shared - Add comment on the combined library thing- Add missing symbol version to librte_cmdline- Set soname of the shared libraries - Fixup typo in ld path config file name- Add library versioning patches as another build option, enable by default- Add our libraries to ld path & run ldconfig when using shared libs- Add DT_NEEDED for external dependencies (pcap, fuse, dl, pthread) - Enable combined library creation, needed for OVS - Enable shared library creation, needed for sanity- Include scripts directory in the "sdk" too- Fix -Wformat clash preventing i40e driver build, enable it - Fix -Wall clash preventing enic driver build, enable it- Enable librte_vhost, which buildrequires fuse-devel - Enable physical NIC drivers that build (e1000, ixgbe) for VFIO use- Update to 1.8.0- Always build with -fPIC- Policy compliance: move static libraries to -devel, provide dpdk-static - Add a spec option to build as shared libraries- Avoid variable expansion in the spec here-documents during build - Drop now unnecessary debug flags patch - Add a spec option to build a combined library- Avoid unnecessary use of %global, lazy expansion is normally better - Drop unused destdir macro while at it - Arrange for RTE_SDK environment + directory layout expected by DPDK apps - Drop config from main package, it shouldn't be needed at runtime- Copy the headers instead of broken symlinks into -devel package - Force sane mode on the headers - Avoid unnecessary %exclude by not copying unpackaged content to buildroot - Clean up summaries and descriptions - Drop unnecessary kernel-devel BR, we are not building kernel modules- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild- Use EXTRA_CFLAGS to include standard Fedora compiler flags in build - Set CONFIG_RTE_MACHINE=default to build for least-common-denominator machines - Turn-off build of librte_acl, since it does not build on default machines - Turn-off build of physical device PMDs that require kernel support - Clean-up the install rules to match current packaging - Correct changelog versions 1.0.7 -> 1.7.0 - Remove ix86 from ExclusiveArch -- it does not build with above changes- Update source to official 1.7.0 release- Fixing up release numbering- Fixed some build errors (empty debuginfo, bad 32 bit build)- Fix another build dependency- Fixed doc arch versioning issue- Added verbose output to build- Initial Build  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123417.11-13.el7      !!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""#####$$$$$$$dpdkapiannotated.htmlbc_s.pngbdwn.pngclasses.htmlclosed.pngcmdline_8h.htmlcmdline_8h_source.htmldir_09939486c1591516b984494000c3f64b.htmldir_099d2d80b969e7fd740b685b10b04f52.htmldir_0c4a44b1891135ef8e3f51c114dfc40e.htmldir_0d8d734d473b3cabdef3fd977d50bf3e.htmldir_13eeac154bac823f6a128588ab25dbd1.htmldir_14bc92f4b96c8519b376567118ac28b3.htmldir_1cb3d74b2ac9573f839cf243cfa1bc11.htmldir_2154f83b08d9713661fee356762316ea.htmldir_2164e25561eabb34d2bd0b8fdda0aeba.htmldir_280cb7b638dc3c2b18b46d48e8ebb350.htmldir_2874bf55c2200dd42774d2ba99074e53.htmldir_2d618a55e588f156483774ccf7b84b21.htmldir_312e5f832048176c38c17335b02a769f.htmldir_313f6c18e163a6142a5a3b7a38753440.htmldir_38b2ae9befb282239df37d3eaa427f9c.htmldir_41189bc1b2cbbbf473cc198cfd351ef1.htmldir_425fd6afd4367244802c1f095c2bd91a.htmldir_4b8e6c0016b49edb5f37b579e2023f82.htmldir_4d32756cfe7396f6b5bd672081496d5a.htmldir_5035da364ebbdb660400f67ccee744ab.htmldir_5188debcb509bb3663f061cc199aacda.htmldir_57fc2e9d988df25248b2986356737354.htmldir_5dafd97c0d945e0ac41aa1317e88fadc.htmldir_5e14993b9b1571024c777dcdb495ae81.htmldir_605c07ae6e02b3d13cc3bf92b6c5e54b.htmldir_6242a765e90f02e6b399e351944e02df.htmldir_662763201df975e54664a452d4fba6a4.htmldir_68cfe39720133e98f6e3a4074209d013.htmldir_80017d03a93d1c6dc29fe032f2756a58.htmldir_85ecb587e53a4a73ea61471f0b12c7cd.htmldir_87f0c34ed8400daf07819036fa8c39bd.htmldir_88c81b6ae6213964a6a534ee00cb813b.htmldir_97aefd0d527b934f1d99a682da8fe6a9.htmldir_9b3d03c4eb61cec62b5319e654017f5d.htmldir_9cc23110c523433deab11cddab39a876.htmldir_9dfdb91ab02719873a80bed01b3a1a5d.htmldir_9f54a0e5c0accd58ed9d59aeb0a494b6.htmldir_a837e178e589be76a266a59d671110cc.htmldir_a914dcfab5ff2d1bc9dd6b873a7b604d.htmldir_ab1cf081cc3a382f37f4faf4624bc98a.htmldir_af404d643d0129b0e925f84c76faf17f.htmldir_bab3158cba42af609928ad7bdc323e4b.htmldir_bac27e586ee22d1a1bd044b56f04c04f.htmldir_c546cd799bdd92435e34b0203cfe1750.htmldir_d5965c24693e7b1ab7ad0767cbd37f15.htmldir_e4d91705e579e3718a61980d7fa2b542.htmldir_e6bf5b3b5611bc8c19dd42f833c7eb40.htmldir_eaabdb77807ddb33c9f95a20e00c6648.htmldir_ede7e24c7966ae13eacb9e9d5c8994f5.htmldir_f5e0cc2a752635854ee1050679b5092d.htmldir_fd57c5f233fdd9e7da26a5e5f646d081.htmldir_fdd811c43070b66c424782ec94ee51d7.htmldoxy-api-index_8md_source.htmldoxygen.cssdoxygen.pngdynsections.jsexamples.htmlexamples_2bond_2main_8c-example.htmlexamples_2cmdline_2commands_8c-example.htmlexamples_2cmdline_2main_8c-example.htmlexamples_2cmdline_2parse_obj_list_8c-example.htmlexamples_2distributor_2main_8c-example.htmlexamples_2ethtool_2ethtool-app_2ethapp_8c-example.htmlexamples_2ethtool_2ethtool-app_2main_8c-example.htmlexamples_2ethtool_2lib_2rte_ethtool_8c-example.htmlexamples_2eventdev_pipeline_sw_pmd_2main_8c-example.htmlexamples_2exception_path_2main_8c-example.htmlexamples_2flow_classify_2flow_classify_8c-example.htmlexamples_2flow_filtering_2flow_blocks_8c-example.htmlexamples_2flow_filtering_2main_8c-example.htmlexamples_2helloworld_2main_8c-example.htmlexamples_2ip_fragmentation_2main_8c-example.htmlexamples_2ip_pipeline_2config_check_8c-example.htmlexamples_2ip_pipeline_2config_parse_8c-example.htmlexamples_2ip_pipeline_2config_parse_tm_8c-example.htmlexamples_2ip_pipeline_2cpu_core_map_8c-example.htmlexamples_2ip_pipeline_2init_8c-example.htmlexamples_2ip_pipeline_2main_8c-example.htmlexamples_2ip_pipeline_2parser_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_common_be_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_common_fe_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_firewall_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_firewall_be_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_flow_actions_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_flow_actions_be_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_flow_classification_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_flow_classification_be_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_master_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_master_be_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_passthrough_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_passthrough_be_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_routing_8c-example.htmlexamples_2ip_pipeline_2pipeline_2pipeline_routing_be_8c-example.htmlexamples_2ip_pipeline_2thread_8c-example.htmlexamples_2ip_pipeline_2thread_fe_8c-example.htmlexamples_2ip_reassembly_2main_8c-example.htmlexamples_2ipsec-secgw_2esp_8c-example.htmlexamples_2ipsec-secgw_2ipsec-secgw_8c-example.htmlexamples_2ipsec-secgw_2ipsec_8c-example.htmlexamples_2ipsec-secgw_2parser_8c-example.htmlexamples_2ipsec-secgw_2rt_8c-example.htmlexamples_2ipsec-secgw_2sa_8c-example.htmlexamples_2ipsec-secgw_2sp4_8c-example.htmlexamples_2ipsec-secgw_2sp6_8c-example.htmlexamples_2ipv4_multicast_2main_8c-example.htmlexamples_2kni_2main_8c-example.htmlexamples_2l2fwd-cat_2cat_8c-example.htmlexamples_2l2fwd-cat_2l2fwd-cat_8c-example.htmlexamples_2l2fwd-crypto_2main_8c-example.htmlexamples_2l2fwd-jobstats_2main_8c-example.htmlexamples_2l2fwd-keepalive_2ka-agent_2main_8c-example.htmlexamples_2l2fwd-keepalive_2main_8c-example.htmlexamples_2l2fwd-keepalive_2shm_8c-example.htmlexamples_2l2fwd_2main_8c-example.htmlexamples_2l3fwd-acl_2main_8c-example.htmlexamples_2l3fwd-power_2main_8c-example.htmlexamples_2l3fwd-vf_2main_8c-example.htmlexamples_2l3fwd_2l3fwd_em_8c-example.htmlexamples_2l3fwd_2l3fwd_lpm_8c-example.htmlexamples_2l3fwd_2main_8c-example.htmlexamples_2link_status_interrupt_2main_8c-example.htmlexamples_2load_balancer_2config_8c-example.htmlexamples_2load_balancer_2init_8c-example.htmlexamples_2load_balancer_2main_8c-example.htmlexamples_2load_balancer_2runtime_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_client_2client_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2args_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2init_8c-example.htmlexamples_2multi_process_2client_server_mp_2mp_server_2main_8c-example.htmlexamples_2multi_process_2l2fwd_fork_2flib_8c-example.htmlexamples_2multi_process_2l2fwd_fork_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2main_8c-example.htmlexamples_2multi_process_2simple_mp_2mp_commands_8c-example.htmlexamples_2multi_process_2symmetric_mp_2main_8c-example.htmlexamples_2netmap_compat_2bridge_2bridge_8c-example.htmlexamples_2netmap_compat_2lib_2compat_netmap_8c-example.htmlexamples_2packet_ordering_2main_8c-example.htmlexamples_2performance-thread_2common_2arch_2arm64_2ctx_8c-example.htmlexamples_2performance-thread_2common_2arch_2x86_2ctx_8c-example.htmlexamples_2performance-thread_2common_2lthread_8c-example.htmlexamples_2performance-thread_2common_2lthread_cond_8c-example.htmlexamples_2performance-thread_2common_2lthread_diag_8c-example.htmlexamples_2performance-thread_2common_2lthread_mutex_8c-example.htmlexamples_2performance-thread_2common_2lthread_sched_8c-example.htmlexamples_2performance-thread_2common_2lthread_tls_8c-example.htmlexamples_2performance-thread_2l3fwd-thread_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2main_8c-example.htmlexamples_2performance-thread_2pthread_shim_2pthread_shim_8c-example.htmlexamples_2ptpclient_2ptpclient_8c-example.htmlexamples_2qos_meter_2main_8c-example.htmlexamples_2qos_meter_2rte_policer_8c-example.htmlexamples_2qos_sched_2app_thread_8c-example.htmlexamples_2qos_sched_2args_8c-example.htmlexamples_2qos_sched_2cfg_file_8c-example.htmlexamples_2qos_sched_2cmdline_8c-example.htmlexamples_2qos_sched_2init_8c-example.htmlexamples_2qos_sched_2main_8c-example.htmlexamples_2qos_sched_2stats_8c-example.htmlexamples_2quota_watermark_2qw_2args_8c-example.htmlexamples_2quota_watermark_2qw_2init_8c-example.htmlexamples_2quota_watermark_2qw_2main_8c-example.htmlexamples_2quota_watermark_2qwctl_2commands_8c-example.htmlexamples_2quota_watermark_2qwctl_2qwctl_8c-example.htmlexamples_2rxtx_callbacks_2main_8c-example.htmlexamples_2server_node_efd_2node_2node_8c-example.htmlexamples_2server_node_efd_2server_2args_8c-example.htmlexamples_2server_node_efd_2server_2init_8c-example.htmlexamples_2server_node_efd_2server_2main_8c-example.htmlexamples_2service_cores_2main_8c-example.htmlexamples_2skeleton_2basicfwd_8c-example.htmlexamples_2tep_termination_2main_8c-example.htmlexamples_2tep_termination_2vxlan_8c-example.htmlexamples_2tep_termination_2vxlan_setup_8c-example.htmlexamples_2timer_2main_8c-example.htmlexamples_2vhost_2main_8c-example.htmlexamples_2vhost_2virtio_net_8c-example.htmlexamples_2vhost_scsi_2scsi_8c-example.htmlexamples_2vhost_scsi_2vhost_scsi_8c-example.htmlexamples_2vm_power_manager_2channel_manager_8c-example.htmlexamples_2vm_power_manager_2channel_monitor_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2main_8c-example.htmlexamples_2vm_power_manager_2guest_cli_2vm_power_cli_guest_8c-example.htmlexamples_2vm_power_manager_2main_8c-example.htmlexamples_2vm_power_manager_2power_manager_8c-example.htmlexamples_2vm_power_manager_2vm_power_cli_8c-example.htmlexamples_2vmdq_2main_8c-example.htmlexamples_2vmdq_dcb_2main_8c-example.htmlfiles.htmlftv2blank.pngftv2cl.pngftv2doc.pngftv2folderclosed.pngftv2folderopen.pngftv2lastnode.pngftv2link.pngftv2mlastnode.pngftv2mnode.pngftv2mo.pngftv2node.pngftv2ns.pngftv2plastnode.pngftv2pnode.pngftv2splitbar.pngftv2vertline.pngfunctions.htmlfunctions_0x61.htmlfunctions_0x62.htmlfunctions_0x63.htmlfunctions_0x64.htmlfunctions_0x65.htmlfunctions_0x66.htmlfunctions_0x67.htmlfunctions_0x68.htmlfunctions_0x69.htmlfunctions_0x6a.htmlfunctions_0x6b.htmlfunctions_0x6c.htmlfunctions_0x6d.htmlfunctions_0x6e.htmlfunctions_0x6f.htmlfunctions_0x70.htmlfunctions_0x71.htmlfunctions_0x72.htmlfunctions_0x73.htmlfunctions_0x74.htmlfunctions_0x75.htmlfunctions_0x76.htmlfunctions_0x77.htmlfunctions_0x78.htmlfunctions_func.htmlfunctions_vars.htmlfunctions_vars_0x61.htmlfunctions_vars_0x62.htmlfunctions_vars_0x63.htmlfunctions_vars_0x64.htmlfunctions_vars_0x65.htmlfunctions_vars_0x66.htmlfunctions_vars_0x67.htmlfunctions_vars_0x68.htmlfunctions_vars_0x69.htmlfunctions_vars_0x6a.htmlfunctions_vars_0x6b.htmlfunctions_vars_0x6c.htmlfunctions_vars_0x6d.htmlfunctions_vars_0x6e.htmlfunctions_vars_0x6f.htmlfunctions_vars_0x70.htmlfunctions_vars_0x71.htmlfunctions_vars_0x72.htmlfunctions_vars_0x73.htmlfunctions_vars_0x74.htmlfunctions_vars_0x75.htmlfunctions_vars_0x76.htmlfunctions_vars_0x77.htmlfunctions_vars_0x78.htmlglobals.htmlglobals_0x61.htmlglobals_0x62.htmlglobals_0x63.htmlglobals_0x64.htmlglobals_0x65.htmlglobals_0x66.htmlglobals_0x68.htmlglobals_0x69.htmlglobals_0x6c.htmlglobals_0x6d.htmlglobals_0x6f.htmlglobals_0x70.htmlglobals_0x72.htmlglobals_0x73.htmlglobals_0x74.htmlglobals_0x75.htmlglobals_0x76.htmlglobals_0x77.htmlglobals_defs.htmlglobals_defs_0x62.htmlglobals_defs_0x63.htmlglobals_defs_0x64.htmlglobals_defs_0x65.htmlglobals_defs_0x69.htmlglobals_defs_0x6c.htmlglobals_defs_0x6d.htmlglobals_defs_0x6f.htmlglobals_defs_0x70.htmlglobals_defs_0x72.htmlglobals_defs_0x73.htmlglobals_defs_0x75.htmlglobals_enum.htmlglobals_eval.htmlglobals_eval_0x65.htmlglobals_eval_0x66.htmlglobals_eval_0x69.htmlglobals_eval_0x6d.htmlglobals_eval_0x72.htmlglobals_eval_0x73.htmlglobals_eval_0x77.htmlglobals_func.htmlglobals_func_0x63.htmlglobals_func_0x65.htmlglobals_func_0x69.htmlglobals_func_0x70.htmlglobals_func_0x72.htmlglobals_func_0x73.htmlglobals_func_0x74.htmlglobals_type.htmlglobals_vars.htmlindex.htmljquery.jsnav_f.pngnav_g.pngnav_h.pngopen.pngpages.htmlrte__acl_8h.htmlrte__acl_8h_source.htmlrte__acl__osdep_8h.htmlrte__acl__osdep_8h_source.htmlrte__alarm_8h.htmlrte__alarm_8h_source.htmlrte__approx_8h.htmlrte__approx_8h_source.htmlrte__arp_8h.htmlrte__arp_8h_source.htmlrte__atomic_8h.htmlrte__atomic_8h_source.htmlrte__bitmap_8h.htmlrte__bitmap_8h_source.htmlrte__bitrate_8h_source.htmlrte__branch__prediction_8h.htmlrte__branch__prediction_8h_source.htmlrte__bus_8h.htmlrte__bus_8h_source.htmlrte__byteorder_8h.htmlrte__byteorder_8h_source.htmlrte__cfgfile_8h.htmlrte__cfgfile_8h_source.htmlrte__cmp__arm64_8h_source.htmlrte__cmp__x86_8h_source.htmlrte__common_8h.htmlrte__common_8h_source.htmlrte__compat_8h_source.htmlrte__cpuflags_8h.htmlrte__cpuflags_8h_source.htmlrte__crc__arm64_8h.htmlrte__crc__arm64_8h_source.htmlrte__crypto_8h.htmlrte__crypto_8h_source.htmlrte__crypto__sym_8h.htmlrte__crypto__sym_8h_source.htmlrte__cryptodev_8h.htmlrte__cryptodev_8h_source.htmlrte__cryptodev__pmd_8h.htmlrte__cryptodev__pmd_8h_source.htmlrte__cryptodev__scheduler_8h.htmlrte__cryptodev__scheduler_8h_source.htmlrte__cryptodev__scheduler__operations_8h_source.htmlrte__cuckoo__hash_8h_source.htmlrte__cuckoo__hash__x86_8h_source.htmlrte__cycles_8h.htmlrte__cycles_8h_source.htmlrte__debug_8h.htmlrte__debug_8h_source.htmlrte__dev_8h.htmlrte__dev_8h_source.htmlrte__dev__info_8h_source.htmlrte__devargs_8h.htmlrte__devargs_8h_source.htmlrte__distributor_8h.htmlrte__distributor_8h_source.htmlrte__distributor__private_8h.htmlrte__distributor__private_8h_source.htmlrte__distributor__v1705_8h.htmlrte__distributor__v1705_8h_source.htmlrte__distributor__v20_8h.htmlrte__distributor__v20_8h_source.htmlrte__eal_8h.htmlrte__eal_8h_source.htmlrte__eal__interrupts_8h.htmlrte__eal__interrupts_8h_source.htmlrte__eal__memconfig_8h_source.htmlrte__efd_8h.htmlrte__efd_8h_source.htmlrte__efd__arm64_8h_source.htmlrte__efd__x86_8h_source.htmlrte__errno_8h.htmlrte__errno_8h_source.htmlrte__esp_8h.htmlrte__esp_8h_source.htmlrte__eth__bond_8h.htmlrte__eth__bond_8h_source.htmlrte__eth__bond__8023ad_8h_source.htmlrte__eth__bond__8023ad__private_8h_source.htmlrte__eth__bond__alb_8h_source.htmlrte__eth__bond__private_8h_source.htmlrte__eth__ctrl_8h.htmlrte__eth__ctrl_8h_source.htmlrte__eth__softnic_8h_source.htmlrte__eth__softnic__internals_8h_source.htmlrte__ethdev_8h.htmlrte__ethdev_8h_source.htmlrte__ethdev__pci_8h_source.htmlrte__ethdev__vdev_8h_source.htmlrte__ether_8h.htmlrte__ether_8h_source.htmlrte__event__eth__rx__adapter_8h.htmlrte__event__eth__rx__adapter_8h_source.htmlrte__event__ring_8h.htmlrte__event__ring_8h_source.htmlrte__eventdev_8h.htmlrte__eventdev_8h_source.htmlrte__eventdev__pmd_8h.htmlrte__eventdev__pmd_8h_source.htmlrte__eventdev__pmd__pci_8h.htmlrte__eventdev__pmd__pci_8h_source.htmlrte__eventdev__pmd__vdev_8h.htmlrte__eventdev__pmd__vdev_8h_source.htmlrte__fbk__hash_8h.htmlrte__fbk__hash_8h_source.htmlrte__flow_8h.htmlrte__flow_8h_source.htmlrte__flow__classify_8h.htmlrte__flow__classify_8h_source.htmlrte__flow__classify__parse_8h_source.htmlrte__flow__driver_8h.htmlrte__flow__driver_8h_source.htmlrte__gre_8h_source.htmlrte__gro_8h.htmlrte__gro_8h_source.htmlrte__gso_8h.htmlrte__gso_8h_source.htmlrte__hash_8h.htmlrte__hash_8h_source.htmlrte__hash__crc_8h.htmlrte__hash__crc_8h_source.htmlrte__hexdump_8h.htmlrte__hexdump_8h_source.htmlrte__icmp_8h.htmlrte__icmp_8h_source.htmlrte__interrupts_8h.htmlrte__interrupts_8h_source.htmlrte__io_8h.htmlrte__io_8h_source.htmlrte__ip_8h.htmlrte__ip_8h_source.htmlrte__ip__frag_8h.htmlrte__ip__frag_8h_source.htmlrte__jhash_8h.htmlrte__jhash_8h_source.htmlrte__jobstats_8h_source.htmlrte__keepalive_8h.htmlrte__keepalive_8h_source.htmlrte__kni_8h.htmlrte__kni_8h_source.htmlrte__kni__fifo_8h_source.htmlrte__kvargs_8h.htmlrte__kvargs_8h_source.htmlrte__latencystats_8h.htmlrte__latencystats_8h_source.htmlrte__launch_8h.htmlrte__launch_8h_source.htmlrte__lcore_8h.htmlrte__lcore_8h_source.htmlrte__log_8h.htmlrte__log_8h_source.htmlrte__lpm6_8h.htmlrte__lpm6_8h_source.htmlrte__lpm_8h.htmlrte__lpm_8h_source.htmlrte__lpm__altivec_8h_source.htmlrte__lpm__neon_8h_source.htmlrte__lpm__sse_8h_source.htmlrte__lru_8h_source.htmlrte__lru__arm64_8h_source.htmlrte__lru__x86_8h_source.htmlrte__malloc_8h.htmlrte__malloc_8h_source.htmlrte__malloc__heap_8h_source.htmlrte__mbuf_8h.htmlrte__mbuf_8h_source.htmlrte__mbuf__ptype_8h.htmlrte__mbuf__ptype_8h_source.htmlrte__member_8h.htmlrte__member_8h_source.htmlrte__member__ht_8h_source.htmlrte__member__vbf_8h_source.htmlrte__member__x86_8h_source.htmlrte__memcpy_8h.htmlrte__memcpy_8h_source.htmlrte__memory_8h.htmlrte__memory_8h_source.htmlrte__mempool_8h.htmlrte__mempool_8h_source.htmlrte__memzone_8h.htmlrte__memzone_8h_source.htmlrte__meter_8h.htmlrte__meter_8h_source.htmlrte__metrics_8h.htmlrte__metrics_8h_source.htmlrte__mtr_8h.htmlrte__mtr_8h_source.htmlrte__mtr__driver_8h.htmlrte__mtr__driver_8h_source.htmlrte__net_8h_source.htmlrte__net__crc_8h_source.htmlrte__pause_8h.htmlrte__pause_8h_source.htmlrte__pci_8h.htmlrte__pci_8h_source.htmlrte__pci__dev__feature__defs_8h_source.htmlrte__pci__dev__features_8h_source.htmlrte__pdump_8h.htmlrte__pdump_8h_source.htmlrte__per__lcore_8h.htmlrte__per__lcore_8h_source.htmlrte__pipeline_8h.htmlrte__pipeline_8h_source.htmlrte__pmd__bnxt_8h_source.htmlrte__pmd__i40e_8h.htmlrte__pmd__i40e_8h_source.htmlrte__pmd__ixgbe_8h.htmlrte__pmd__ixgbe_8h_source.htmlrte__port_8h.htmlrte__port_8h_source.htmlrte__port__ethdev_8h.htmlrte__port__ethdev_8h_source.htmlrte__port__fd_8h.htmlrte__port__fd_8h_source.htmlrte__port__frag_8h.htmlrte__port__frag_8h_source.htmlrte__port__kni_8h.htmlrte__port__kni_8h_source.htmlrte__port__ras_8h.htmlrte__port__ras_8h_source.htmlrte__port__ring_8h.htmlrte__port__ring_8h_source.htmlrte__port__sched_8h.htmlrte__port__sched_8h_source.htmlrte__port__source__sink_8h.htmlrte__port__source__sink_8h_source.htmlrte__power_8h.htmlrte__power_8h_source.htmlrte__power__acpi__cpufreq_8h.htmlrte__power__acpi__cpufreq_8h_source.htmlrte__power__common_8h_source.htmlrte__power__kvm__vm_8h.htmlrte__power__kvm__vm_8h_source.htmlrte__prefetch_8h.htmlrte__prefetch_8h_source.htmlrte__random_8h.htmlrte__random_8h_source.htmlrte__reciprocal_8h_source.htmlrte__red_8h.htmlrte__red_8h_source.htmlrte__reorder_8h.htmlrte__reorder_8h_source.htmlrte__ring_8h.htmlrte__ring_8h_source.htmlrte__rwlock_8h.htmlrte__rwlock_8h_source.htmlrte__sched_8h.htmlrte__sched_8h_source.htmlrte__sched__common_8h_source.htmlrte__sctp_8h.htmlrte__sctp_8h_source.htmlrte__security_8h.htmlrte__security_8h_source.htmlrte__security__driver_8h.htmlrte__security__driver_8h_source.htmlrte__service_8h.htmlrte__service_8h_source.htmlrte__service__component_8h_source.htmlrte__spinlock_8h.htmlrte__spinlock_8h_source.htmlrte__string__fns_8h.htmlrte__string__fns_8h_source.htmlrte__table_8h.htmlrte__table_8h_source.htmlrte__table__acl_8h.htmlrte__table__acl_8h_source.htmlrte__table__array_8h.htmlrte__table__array_8h_source.htmlrte__table__hash_8h.htmlrte__table__hash_8h_source.htmlrte__table__lpm_8h.htmlrte__table__lpm_8h_source.htmlrte__table__lpm__ipv6_8h.htmlrte__table__lpm__ipv6_8h_source.htmlrte__table__stub_8h.htmlrte__table__stub_8h_source.htmlrte__tailq_8h.htmlrte__tailq_8h_source.htmlrte__tcp_8h.htmlrte__tcp_8h_source.htmlrte__thash_8h.htmlrte__thash_8h_source.htmlrte__time_8h_source.htmlrte__timer_8h.htmlrte__timer_8h_source.htmlrte__tm_8h.htmlrte__tm_8h_source.htmlrte__tm__driver_8h.htmlrte__tm__driver_8h_source.htmlrte__udp_8h.htmlrte__udp_8h_source.htmlrte__vect_8h.htmlrte__vect_8h_source.htmlrte__version_8h.htmlrte__version_8h_source.htmlrte__vfio_8h_source.htmlrte__vhost_8h.htmlrte__vhost_8h_source.htmlstructarp__hdr.htmlstructarp__ipv4.htmlstructbond__dev__private.htmlstructbond__ethdev__slave__ports.htmlstructbond__rx__queue.htmlstructesp__hdr.htmlstructether__addr.htmlstructether__hdr.htmlstructgre__hdr.htmlstructicmp__hdr.htmlstructip__frag__tbl__stat.htmlstructipv4__hdr.htmlstructipv6__hdr.htmlstructlacpdu.htmlstructlacpdu__header.htmlstructlcore__config.htmlstructmalloc__heap.htmlstructmapped__pci__resource.htmlstructpci__map.htmlstructpmd__internals.htmlstructport.htmlstructrte__acl__config.htmlstructrte__acl__field.htmlstructrte__acl__field__def.htmlstructrte__acl__param.htmlstructrte__acl__rule__data.htmlstructrte__atomic16__t.htmlstructrte__atomic32__t.htmlstructrte__atomic64__t.htmlstructrte__bitmap.htmlstructrte__bus.htmlstructrte__bus__conf.htmlstructrte__cfgfile__entry.htmlstructrte__cfgfile__parameters.htmlstructrte__config.htmlstructrte__crypto__auth__xform.htmlstructrte__crypto__cipher__xform.htmlstructrte__crypto__op.htmlstructrte__crypto__op__pool__private.htmlstructrte__crypto__param__range.htmlstructrte__crypto__sym__op.htmlstructrte__crypto__sym__xform.htmlstructrte__cryptodev.htmlstructrte__cryptodev__capabilities.htmlstructrte__cryptodev__config.htmlstructrte__cryptodev__data.htmlstructrte__cryptodev__global.htmlstructrte__cryptodev__info.htmlstructrte__cryptodev__ops.htmlstructrte__cryptodev__qp__conf.htmlstructrte__cryptodev__scheduler.htmlstructrte__cryptodev__scheduler__threshold__option.htmlstructrte__cryptodev__stats.htmlstructrte__cryptodev__sym__capability__idx.htmlstructrte__cryptodev__sym__session.htmlstructrte__cryptodev__symmetric__capability.htmlstructrte__devargs.htmlstructrte__device.htmlstructrte__distributor__buffer.htmlstructrte__driver.htmlstructrte__epoll__event.htmlstructrte__eth__conf.htmlstructrte__eth__dcb__info.htmlstructrte__eth__dcb__tc__queue__mapping.htmlstructrte__eth__desc__lim.htmlstructrte__eth__dev__info.htmlstructrte__eth__dev__tx__buffer.htmlstructrte__eth__ethertype__filter.htmlstructrte__eth__fc__conf.htmlstructrte__eth__fdir__action.htmlstructrte__eth__fdir__filter.htmlstructrte__eth__fdir__filter__info.htmlstructrte__eth__fdir__flex__conf.htmlstructrte__eth__fdir__flex__mask.htmlstructrte__eth__fdir__flow__ext.htmlstructrte__eth__fdir__info.htmlstructrte__eth__fdir__input.htmlstructrte__eth__fdir__masks.htmlstructrte__eth__fdir__stats.htmlstructrte__eth__flex__filter.htmlstructrte__eth__flex__payload__cfg.htmlstructrte__eth__global__cfg.htmlstructrte__eth__hash__filter__info.htmlstructrte__eth__hash__global__conf.htmlstructrte__eth__input__set__conf.htmlstructrte__eth__ipv4__flow.htmlstructrte__eth__ipv6__flow.htmlstructrte__eth__l2__flow.htmlstructrte__eth__l2__tunnel__conf.htmlstructrte__eth__link.htmlstructrte__eth__mac__filter.htmlstructrte__eth__mac__vlan__flow.htmlstructrte__eth__mirror__conf.htmlstructrte__eth__ntuple__filter.htmlstructrte__eth__pfc__conf.htmlstructrte__eth__rss__conf.htmlstructrte__eth__rss__reta__entry64.htmlstructrte__eth__rxconf.htmlstructrte__eth__rxmode.htmlstructrte__eth__rxq__info.htmlstructrte__eth__sctpv4__flow.htmlstructrte__eth__sctpv6__flow.htmlstructrte__eth__stats.htmlstructrte__eth__syn__filter.htmlstructrte__eth__tcpv4__flow.htmlstructrte__eth__tcpv6__flow.htmlstructrte__eth__thresh.htmlstructrte__eth__tunnel__filter__conf.htmlstructrte__eth__tunnel__flow.htmlstructrte__eth__txconf.htmlstructrte__eth__txmode.htmlstructrte__eth__txq__info.htmlstructrte__eth__udp__tunnel.htmlstructrte__eth__udpv4__flow.htmlstructrte__eth__udpv6__flow.htmlstructrte__eth__vlan__mirror.htmlstructrte__eth__vmdq__dcb__conf.htmlstructrte__eth__vmdq__rx__conf.htmlstructrte__eth__xstat.htmlstructrte__eth__xstat__name.htmlstructrte__event.htmlstructrte__event__dev__config.htmlstructrte__event__dev__info.htmlstructrte__event__dev__xstats__name.htmlstructrte__event__eth__rx__adapter__conf.htmlstructrte__event__eth__rx__adapter__queue__conf.htmlstructrte__event__eth__rx__adapter__stats.htmlstructrte__event__port__conf.htmlstructrte__event__queue__conf.htmlstructrte__event__ring.htmlstructrte__eventdev__global.htmlstructrte__eventdev__ops.htmlstructrte__fbk__hash__params.htmlstructrte__fbk__hash__table.htmlstructrte__fdir__conf.htmlstructrte__flow__action.htmlstructrte__flow__action__dup.htmlstructrte__flow__action__mark.htmlstructrte__flow__action__meter.htmlstructrte__flow__action__queue.htmlstructrte__flow__action__rss.htmlstructrte__flow__action__security.htmlstructrte__flow__action__vf.htmlstructrte__flow__attr.htmlstructrte__flow__classifier__params.htmlstructrte__flow__classify__ipv4__5tuple.htmlstructrte__flow__classify__stats.htmlstructrte__flow__classify__table__params.htmlstructrte__flow__desc.htmlstructrte__flow__error.htmlstructrte__flow__item.htmlstructrte__flow__item__any.htmlstructrte__flow__item__e__tag.htmlstructrte__flow__item__esp.htmlstructrte__flow__item__eth.htmlstructrte__flow__item__fuzzy.htmlstructrte__flow__item__gre.htmlstructrte__flow__item__gtp.htmlstructrte__flow__item__icmp.htmlstructrte__flow__item__ipv4.htmlstructrte__flow__item__ipv6.htmlstructrte__flow__item__mpls.htmlstructrte__flow__item__nvgre.htmlstructrte__flow__item__port.htmlstructrte__flow__item__raw.htmlstructrte__flow__item__sctp.htmlstructrte__flow__item__tcp.htmlstructrte__flow__item__udp.htmlstructrte__flow__item__vf.htmlstructrte__flow__item__vlan.htmlstructrte__flow__item__vxlan.htmlstructrte__flow__ops.htmlstructrte__flow__query__count.htmlstructrte__gro__param.htmlstructrte__gso__ctx.htmlstructrte__hash.htmlstructrte__hash__bucket.htmlstructrte__hash__parameters.htmlstructrte__intr__conf.htmlstructrte__intr__handle.htmlstructrte__ip__frag__death__row.htmlstructrte__ip__frag__tbl.htmlstructrte__ipv4__tuple.htmlstructrte__ipv6__tuple.htmlstructrte__kni__conf.htmlstructrte__kni__ops.htmlstructrte__kvargs.htmlstructrte__kvargs__pair.htmlstructrte__logs.htmlstructrte__lpm6__config.htmlstructrte__lpm__config.htmlstructrte__malloc__socket__stats.htmlstructrte__mbuf.htmlstructrte__mem__config.htmlstructrte__mem__resource.htmlstructrte__member__parameters.htmlstructrte__mempool.htmlstructrte__mempool__cache.htmlstructrte__mempool__memhdr.htmlstructrte__mempool__objhdr.htmlstructrte__mempool__objsz.htmlstructrte__mempool__ops.htmlstructrte__mempool__ops__table.htmlstructrte__memseg.htmlstructrte__memzone.htmlstructrte__meter__srtcm__params.htmlstructrte__meter__trtcm__params.htmlstructrte__metric__name.htmlstructrte__metric__value.htmlstructrte__mtr__capabilities.htmlstructrte__mtr__error.htmlstructrte__mtr__meter__profile.htmlstructrte__mtr__params.htmlstructrte__mtr__stats.htmlstructrte__net__hdr__lens.htmlstructrte__pci__addr.htmlstructrte__pci__id.htmlstructrte__pipeline__params.htmlstructrte__pipeline__port__in__params.htmlstructrte__pipeline__port__in__stats.htmlstructrte__pipeline__port__out__params.htmlstructrte__pipeline__port__out__stats.htmlstructrte__pipeline__table__entry.htmlstructrte__pipeline__table__params.htmlstructrte__pipeline__table__stats.htmlstructrte__pktmbuf__pool__private.htmlstructrte__pmd__i40e__ddp__device__id.htmlstructrte__pmd__i40e__ddp__version.htmlstructrte__pmd__i40e__mb__event__param.htmlstructrte__pmd__i40e__pkt__template__action.htmlstructrte__pmd__i40e__pkt__template__conf.htmlstructrte__pmd__i40e__pkt__template__input.htmlstructrte__pmd__i40e__profile__info.htmlstructrte__pmd__i40e__profile__list.htmlstructrte__pmd__i40e__proto__info.htmlstructrte__pmd__i40e__ptype__info.htmlstructrte__pmd__i40e__queue__region__conf.htmlstructrte__pmd__ixgbe__mb__event__param.htmlstructrte__port__ethdev__reader__params.htmlstructrte__port__ethdev__writer__nodrop__params.htmlstructrte__port__ethdev__writer__params.htmlstructrte__port__fd__reader__params.htmlstructrte__port__fd__writer__nodrop__params.htmlstructrte__port__fd__writer__params.htmlstructrte__port__in__ops.htmlstructrte__port__in__stats.htmlstructrte__port__kni__reader__params.htmlstructrte__port__kni__writer__nodrop__params.htmlstructrte__port__kni__writer__params.htmlstructrte__port__out__ops.htmlstructrte__port__out__stats.htmlstructrte__port__ring__reader__frag__params.htmlstructrte__port__ring__reader__params.htmlstructrte__port__ring__writer__nodrop__params.htmlstructrte__port__ring__writer__params.htmlstructrte__port__ring__writer__ras__params.htmlstructrte__port__sched__reader__params.htmlstructrte__port__sched__writer__params.htmlstructrte__port__sink__params.htmlstructrte__port__source__params.htmlstructrte__red.htmlstructrte__red__config.htmlstructrte__red__params.htmlstructrte__ring.htmlstructrte__rwlock__t.htmlstructrte__sched__port__params.htmlstructrte__sched__queue__stats.htmlstructrte__sched__subport__stats.htmlstructrte__security__capability.htmlstructrte__security__capability__idx.htmlstructrte__security__ctx.htmlstructrte__security__ipsec__sa__options.htmlstructrte__security__ipsec__tunnel__param.htmlstructrte__security__ipsec__xform.htmlstructrte__security__macsec__xform.htmlstructrte__security__ops.htmlstructrte__security__session__conf.htmlstructrte__service__spec.htmlstructrte__spinlock__recursive__t.htmlstructrte__spinlock__t.htmlstructrte__table__acl__params.htmlstructrte__table__acl__rule__add__params.htmlstructrte__table__acl__rule__delete__params.htmlstructrte__table__array__key.htmlstructrte__table__array__params.htmlstructrte__table__hash__params.htmlstructrte__table__lpm__ipv6__key.htmlstructrte__table__lpm__ipv6__params.htmlstructrte__table__lpm__key.htmlstructrte__table__lpm__params.htmlstructrte__table__ops.htmlstructrte__table__stats.htmlstructrte__tailq__entry.htmlstructrte__tailq__head.htmlstructrte__timecounter.htmlstructrte__timer.htmlstructrte__tm__capabilities.htmlstructrte__tm__error.htmlstructrte__tm__level__capabilities.htmlstructrte__tm__node__capabilities.htmlstructrte__tm__node__params.htmlstructrte__tm__node__stats.htmlstructrte__tm__red__params.htmlstructrte__tm__shaper__params.htmlstructrte__tm__token__bucket.htmlstructrte__tm__wred__params.htmlstructrte__vhost__mem__region.htmlstructrte__vhost__memory.htmlstructrte__vlan__filter__conf.htmlstructsctp__hdr.htmlstructslow__protocol.htmlstructslow__protocol__frame.htmlstructtcp__hdr.htmlstructudp__hdr.htmlstructvhost__device__ops.htmlstructvlan__hdr.htmlstructvxlan__hdr.htmlsync_off.pngsync_on.pngtab_a.pngtab_b.pngtab_h.pngtab_s.pngtabs.cssunionrte__distributor__buffer__v20.htmlunionrte__eth__fdir__flow.htmlunionrte__fbk__hash__entry.htmlunionrte__timer__status.htmlexamples.doxguides_imagesarchitecture-overview.svgblk_diag_dropper.pngbond-mode-0.svgbond-mode-1.svgbond-mode-2.svgbond-mode-3.svgbond-mode-4.svgbond-mode-5.svgbond-overview.svgclient_svr_sym_multi_proc_app.pngconsole.pngcrypto_op.svgcrypto_xform_chain.svgcryptodev_sym_sess.svgdata_struct_per_port.pngdist_app.svgdist_perf.svgdrop_probability_eq3.pngdrop_probability_eq4.pngdrop_probability_graph.pngefd_i1.svgefd_i10.svgefd_i11.svgefd_i12.svgefd_i2.svgefd_i3.svgefd_i4.svgefd_i5.svgefd_i6.svgefd_i7.svgefd_i8.svgefd_i9.svgeq2_expression.pngeq2_factor.pngeventdev_order_atq_test.svgeventdev_order_queue_test.svgeventdev_perf_atq_test.svgeventdev_perf_queue_test.svgeventdev_usage.svgewma_filter_eq_1.pngewma_filter_eq_2.pngex_data_flow_tru_dropper.pngexample_rules.pngexception_path_example.svgfast_pkt_proc.pngfigure32.pngfigure33.pngfigure34.pngfigure35.pngfigure37.pngfigure38.pngfigure39.pngflow_bifurcation_overview.svgflow_tru_droppper.pngforward_stats.pnggso-output-segment-format.svggso-three-seg-mbuf.svghier_sched_blk.pnghost_vm_comms.pnghost_vm_comms_qemu.pngintel_perf_test_setup.svginter_vm_comms.pngip_pipelines_1.svgip_pipelines_2.svgip_pipelines_3.svgipv4_acl_rule.pngixgbe_bifu_queue_idx.svgkernel_nic.pngkernel_nic_intf.pngl2_fwd_benchmark_setup.svgl2_fwd_encrypt_flow.svgl2_fwd_virtenv_benchmark_setup.pngl2_fwd_vm2vm.svglinuxapp_launch.svglm_bond_virtio_sriov.svglm_vhost_user.svgload_bal_app_arch.pngm_definition.pngmalloc_heap.svgmaster_slave_proc.pngmbuf1.svgmbuf2.svgmember_i1.svgmember_i2.svgmember_i3.svgmember_i4.svgmember_i5.svgmember_i6.svgmember_i7.svgmemory-management.svgmemory-management2.svgmempool.svgmulti_process_memory.svgoverlay_networking.svgpacket_capture_framework.svgpacket_distributor1.pngpacket_distributor2.pngpatch_cheatsheet.svgperf_benchmark.pngperformance_thread_1.svgperformance_thread_2.svgpipe_prefetch_sm.pngpipeline_overview.pngpkt_drop_probability.pngpkt_flow_kni.pngpkt_proc_pipeline_qos.pngprefetch_pipeline.pngptpclient.svgpvp_2nics.svgqos_sched_app_arch.pngring-dequeue1.svgring-dequeue2.svgring-dequeue3.svgring-enqueue1.svgring-enqueue2.svgring-enqueue3.svgring-modulo1.svgring-modulo2.svgring-mp-enqueue1.svgring-mp-enqueue2.svgring-mp-enqueue3.svgring-mp-enqueue4.svgring-mp-enqueue5.svgring1.svgring_pipeline_perf_setup.pngsched_hier_per_port.pngscheduler-overview.svgserver_node_efd.svgsingle_port_nic.pngslave_proc_recov.pngsym_multi_proc_app.pngtbl24_tbl8.pngtbl24_tbl8_tbl8.pngtep_termination_arch.svgtest_pipeline_app.pngthreads_pipelines.pnguse_models_for_running_dpdk_in_containers.svgvf_daemon_overview.svgvirtio_user_as_exceptional_path.svgvirtio_user_for_container_networking.svgvm_power_mgr_highlevel.svgvm_power_mgr_vm_request_seq.svgvm_vm_comms.pngvmdq_dcb_example.svgvmxnet3_int.pngvswitch_vm.png_sourcescontributingcheatsheet.txtcoding_style.txtdesign.txtdocumentation.txtindex.txtpatches.txtstable.txtversioning.txtcryptodevsaesni_gcm.txtaesni_mb.txtarmv8.txtdpaa2_sec.txtdpaa_sec.txtindex.txtkasumi.txtmrvl.txtnull.txtopenssl.txtoverview.txtqat.txtscheduler.txtsnow3g.txtzuc.txteventdevsdpaa2.txtindex.txtocteontx.txtsw.txtfaqfaq.txtindex.txtfreebsd_gsgbuild_dpdk.txtbuild_sample_apps.txtindex.txtinstall_from_ports.txtintro.txthowtoflow_bifurcation.txtindex.txtlm_bond_virtio_sriov.txtlm_virtio_vhost_user.txtpacket_capture_framework.txtpvp_reference_benchmark.txtrte_flow.txtvfd.txtvirtio_user_as_exceptional_path.txtvirtio_user_for_container_networking.txtindex.txtlinux_gsgbuild_dpdk.txtbuild_sample_apps.txtenable_func.txtindex.txtintro.txtlinux_drivers.txtnic_perf_intel_platform.txtquick_start.txtsys_reqs.txtmempoolindex.txtocteontx.txtnicsark.txtavp.txtbnx2x.txtbnxt.txtbuild_and_test.txtcxgbe.txtdpaa.txtdpaa2.txte1000em.txtena.txtenic.txtfail_safe.txtfeatures.txtfm10k.txti40e.txtindex.txtintel_vf.txtixgbe.txtkni.txtliquidio.txtmlx4.txtmlx5.txtmrvl.txtnfp.txtocteontx.txtoverview.txtpcap_ring.txtqede.txtsfc_efx.txtszedata2.txttap.txtthunderx.txtvhost.txtvirtio.txtvmxnet3.txtplatformindex.txtocteontx.txtprog_guidebuild_app.txtcryptodev_lib.txtdev_kit_build_system.txtdev_kit_root_make_help.txtefd_lib.txtenv_abstraction_layer.txtevent_ethernet_rx_adapter.txteventdev.txtext_app_lib_make_help.txtextend_dpdk.txtflow_classify_lib.txtgeneric_receive_offload_lib.txtgeneric_segmentation_offload_lib.txtglossary.txthash_lib.txtindex.txtintro.txtip_fragment_reassembly_lib.txtkernel_nic_interface.txtlink_bonding_poll_mode_drv_lib.txtlpm6_lib.txtlpm_lib.txtmbuf_lib.txtmember_lib.txtmempool_lib.txtmetrics_lib.txtmulti_proc_support.txtoverview.txtpacket_classif_access_ctrl.txtpacket_distrib_lib.txtpacket_framework.txtpdump_lib.txtperf_opt_guidelines.txtpoll_mode_drv.txtport_hotplug_framework.txtpower_man.txtprofile_app.txtqos_framework.txtreorder_lib.txtring_lib.txtrte_flow.txtrte_security.txtservice_cores.txtsource_org.txtthread_safety_dpdk_functions.txttimer_lib.txttraffic_management.txttraffic_metering_and_policing.txtvhost_lib.txtwriting_efficient_code.txtrel_notesdeprecation.txtindex.txtknown_issues.txtrel_description.txtrelease_16_04.txtrelease_16_07.txtrelease_16_11.txtrelease_17_02.txtrelease_17_05.txtrelease_17_08.txtrelease_17_11.txtrelease_1_8.txtrelease_2_0.txtrelease_2_1.txtrelease_2_2.txtsample_app_ugcmd_line.txtcompiling.txtdist_app.txtethtool.txteventdev_pipeline_sw_pmd.txtexception_path.txtflow_classify.txtflow_filtering.txthello_world.txtindex.txtintro.txtip_frag.txtip_pipeline.txtip_reassembly.txtipsec_secgw.txtipv4_multicast.txtkeep_alive.txtkernel_nic_interface.txtl2_forward_cat.txtl2_forward_crypto.txtl2_forward_job_stats.txtl2_forward_real_virtual.txtl3_forward.txtl3_forward_access_ctrl.txtl3_forward_power_man.txtl3_forward_virtual.txtlink_status_intr.txtload_balancer.txtmulti_process.txtnetmap_compatibility.txtpacket_ordering.txtperformance_thread.txtptpclient.txtqos_metering.txtqos_scheduler.txtquota_watermark.txtrxtx_callbacks.txtserver_node_efd.txtservice_cores.txtskeleton.txttep_termination.txttest_pipeline.txttimer.txtvhost.txtvhost_scsi.txtvm_power_management.txtvmdq_dcb_forwarding.txttestpmd_app_ugbuild_app.txtindex.txtintro.txtrun_app.txttestpmd_funcs.txttoolscryptoperf.txtdevbind.txtindex.txtpdump.txtpmdinfo.txtproc_info.txttesteventdev.txt_staticDPDK_logo_vertical_rev_small.pngajax-loader.gifbasic.csscomment-bright.pngcomment-close.pngcomment.pngdefault.cssdoctools.jsdown-pressed.pngdown.pngfile.pngjquery.jsminus.pngplus.pngpygments.csssearchtools.jssidebar.jsunderscore.jsup-pressed.pngup.pngwebsupport.jscontributingcheatsheet.htmlcoding_style.htmldesign.htmldocumentation.htmlindex.htmlpatches.htmlstable.htmlversioning.htmlcryptodevsaesni_gcm.htmlaesni_mb.htmlarmv8.htmldpaa2_sec.htmldpaa_sec.htmlindex.htmlkasumi.htmlmrvl.htmlnull.htmlopenssl.htmloverview.htmlqat.htmlscheduler.htmlsnow3g.htmlzuc.htmleventdevsdpaa2.htmlindex.htmlocteontx.htmlsw.htmlfaqfaq.htmlindex.htmlfreebsd_gsgbuild_dpdk.htmlbuild_sample_apps.htmlindex.htmlinstall_from_ports.htmlintro.htmlgenindex.htmlhowtoflow_bifurcation.htmlindex.htmllm_bond_virtio_sriov.htmllm_virtio_vhost_user.htmlpacket_capture_framework.htmlpvp_reference_benchmark.htmlrte_flow.htmlvfd.htmlvirtio_user_as_exceptional_path.htmlvirtio_user_for_container_networking.htmlindex.htmllinux_gsgbuild_dpdk.htmlbuild_sample_apps.htmlenable_func.htmlindex.htmlintro.htmllinux_drivers.htmlnic_perf_intel_platform.htmlquick_start.htmlsys_reqs.htmlmempoolindex.htmlocteontx.htmlnicsark.htmlavp.htmlbnx2x.htmlbnxt.htmlbuild_and_test.htmlcxgbe.htmldpaa.htmldpaa2.htmle1000em.htmlena.htmlenic.htmlfail_safe.htmlfeatures.htmlfm10k.htmli40e.htmlindex.htmlintel_vf.htmlixgbe.htmlkni.htmlliquidio.htmlmlx4.htmlmlx5.htmlmrvl.htmlnfp.htmlocteontx.htmloverview.htmlpcap_ring.htmlqede.htmlsfc_efx.htmlszedata2.htmltap.htmlthunderx.htmlvhost.htmlvirtio.htmlvmxnet3.htmlobjects.invplatformindex.htmlocteontx.htmlprog_guidebuild_app.htmlcryptodev_lib.htmldev_kit_build_system.htmldev_kit_root_make_help.htmlefd_lib.htmlenv_abstraction_layer.htmlevent_ethernet_rx_adapter.htmleventdev.htmlext_app_lib_make_help.htmlextend_dpdk.htmlflow_classify_lib.htmlgeneric_receive_offload_lib.htmlgeneric_segmentation_offload_lib.htmlglossary.htmlhash_lib.htmlindex.htmlintro.htmlip_fragment_reassembly_lib.htmlkernel_nic_interface.htmllink_bonding_poll_mode_drv_lib.htmllpm6_lib.htmllpm_lib.htmlmbuf_lib.htmlmember_lib.htmlmempool_lib.htmlmetrics_lib.htmlmulti_proc_support.htmloverview.htmlpacket_classif_access_ctrl.htmlpacket_distrib_lib.htmlpacket_framework.htmlpdump_lib.htmlperf_opt_guidelines.htmlpoll_mode_drv.htmlport_hotplug_framework.htmlpower_man.htmlprofile_app.htmlqos_framework.htmlreorder_lib.htmlring_lib.htmlrte_flow.htmlrte_security.htmlservice_cores.htmlsource_org.htmlthread_safety_dpdk_functions.htmltimer_lib.htmltraffic_management.htmltraffic_metering_and_policing.htmlvhost_lib.htmlwriting_efficient_code.htmlrel_notesdeprecation.htmlindex.htmlknown_issues.htmlrel_description.htmlrelease_16_04.htmlrelease_16_07.htmlrelease_16_11.htmlrelease_17_02.htmlrelease_17_05.htmlrelease_17_08.htmlrelease_17_11.htmlrelease_1_8.htmlrelease_2_0.htmlrelease_2_1.htmlrelease_2_2.htmlsample_app_ugcmd_line.htmlcompiling.htmldist_app.htmlethtool.htmleventdev_pipeline_sw_pmd.htmlexception_path.htmlflow_classify.htmlflow_filtering.htmlhello_world.htmlindex.htmlintro.htmlip_frag.htmlip_pipeline.htmlip_reassembly.htmlipsec_secgw.htmlipv4_multicast.htmlkeep_alive.htmlkernel_nic_interface.htmll2_forward_cat.htmll2_forward_crypto.htmll2_forward_job_stats.htmll2_forward_real_virtual.htmll3_forward.htmll3_forward_access_ctrl.htmll3_forward_power_man.htmll3_forward_virtual.htmllink_status_intr.htmlload_balancer.htmlmulti_process.htmlnetmap_compatibility.htmlpacket_ordering.htmlperformance_thread.htmlptpclient.htmlqos_metering.htmlqos_scheduler.htmlquota_watermark.htmlrxtx_callbacks.htmlserver_node_efd.htmlservice_cores.htmlskeleton.htmltep_termination.htmltest_pipeline.htmltimer.htmlvhost.htmlvhost_scsi.htmlvm_power_management.htmlvmdq_dcb_forwarding.htmlsearch.htmlsearchindex.jstestpmd_app_ugbuild_app.htmlindex.htmlintro.htmlrun_app.htmltestpmd_funcs.htmltoolscryptoperf.htmldevbind.htmlindex.htmlpdump.htmlpmdinfo.htmlproc_info.htmltesteventdev.html/usr/share/doc//usr/share/doc/dpdk//usr/share/doc/dpdk/api//usr/share/doc/dpdk/guides//usr/share/doc/dpdk/guides/_images//usr/share/doc/dpdk/guides/_sources//usr/share/doc/dpdk/guides/_sources/contributing//usr/share/doc/dpdk/guides/_sources/cryptodevs//usr/share/doc/dpdk/guides/_sources/eventdevs//usr/share/doc/dpdk/guides/_sources/faq//usr/share/doc/dpdk/guides/_sources/freebsd_gsg//usr/share/doc/dpdk/guides/_sources/howto//usr/share/doc/dpdk/guides/_sources/linux_gsg//usr/share/doc/dpdk/guides/_sources/mempool//usr/share/doc/dpdk/guides/_sources/nics//usr/share/doc/dpdk/guides/_sources/platform//usr/share/doc/dpdk/guides/_sources/prog_guide//usr/share/doc/dpdk/guides/_sources/rel_notes//usr/share/doc/dpdk/guides/_sources/sample_app_ug//usr/share/doc/dpdk/guides/_sources/testpmd_app_ug//usr/share/doc/dpdk/guides/_sources/tools//usr/share/doc/dpdk/guides/_static//usr/share/doc/dpdk/guides/contributing//usr/share/doc/dpdk/guides/cryptodevs//usr/share/doc/dpdk/guides/eventdevs//usr/share/doc/dpdk/guides/faq//usr/share/doc/dpdk/guides/freebsd_gsg//usr/share/doc/dpdk/guides/howto//usr/share/doc/dpdk/guides/linux_gsg//usr/share/doc/dpdk/guides/mempool//usr/share/doc/dpdk/guides/nics//usr/share/doc/dpdk/guides/platform//usr/share/doc/dpdk/guides/prog_guide//usr/share/doc/dpdk/guides/rel_notes//usr/share/doc/dpdk/guides/sample_app_ug//usr/share/doc/dpdk/guides/testpmd_app_ug//usr/share/doc/dpdk/guides/tools/-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=genericdrpmxz2x86_64-redhat-linux-gnu   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNNNNNONNNNNNNNNNONNNNNONPNQRORRNSNN NNNRNNNNNNNRRRRRNRRRNRRORRRNRNNNRTUVVVVVV WWN VVXOOYZPO[directoryHTML document, ASCII text, with very long linesPNG image data, 8 x 30, 8-bit/color RGBA, non-interlacedPNG image data, 7 x 8, 8-bit/color RGBA, non-interlacedPNG image data, 9 x 9, 8-bit/color RGBA, non-interlacedHTML document, ASCII textassembler source, ASCII textPNG image data, 104 x 31, 8-bit/color RGBA, non-interlacedASCII textPNG image data, 16 x 22, 8-bit/color RGBA, non-interlacedPNG image data, 24 x 22, 8-bit/color RGBA, non-interlacedPNG image data, 6 x 1024, 8-bit/color RGB, non-interlacedASCII text, with very long linesPNG image data, 1 x 56, 8-bit/color RGB, non-interlacedPNG image data, 1 x 6, 8-bit/color RGB, non-interlacedPNG image data, 1 x 12, 8-bit/color RGB, non-interlacedHTML document, UTF-8 Unicode text, with very long linesHTML document, UTF-8 Unicode textPNG image data, 24 x 24, 8-bit/color RGBA, non-interlacedPNG image data, 1 x 36, 8-bit/color RGB, non-interlacedSVG Scalable Vector Graphics imagePNG image data, 856 x 603, 8-bit/color RGBA, non-interlacedPNG image data, 696 x 358, 8-bit/color RGBA, non-interlacedPNG image data, 516 x 166, 8-bit/color RGBA, non-interlacedPNG image data, 494 x 581, 8-bit/color RGB, non-interlacedPNG image data, 355 x 68, 8-bit/color RGBA, non-interlacedPNG image data, 121 x 38, 8-bit/color RGBA, non-interlacedPNG image data, 728 x 392, 8-bit/color RGBA, non-interlacedPNG image data, 194 x 36, 8-bit/color RGBA, non-interlacedPNG image data, 112 x 27, 8-bit/color RGBA, non-interlacedPNG image data, 267 x 27, 8-bit colormap, non-interlacedPNG image data, 209 x 27, 8-bit/color RGBA, non-interlacedPNG image data, 606 x 341, 8-bit/color RGB, non-interlacedPNG image data, 497 x 120, 8-bit colormap, non-interlacedPNG image data, 838 x 547, 8-bit/color RGBA, non-interlacedPNG image data, 670 x 260, 8-bit/color RGBA, non-interlacedPNG image data, 3578 x 400, 8-bit/color RGBA, non-interlacedPNG image data, 793 x 203, 8-bit/color RGBA, non-interlacedPNG image data, 3652 x 485, 8-bit/color RGBA, non-interlacedPNG image data, 792 x 97, 8-bit/color RGBA, non-interlacedPNG image data, 791 x 131, 8-bit/color RGBA, non-interlacedPNG image data, 2882 x 487, 8-bit/color RGBA, non-interlacedPNG image data, 325 x 629, 8-bit/color RGB, non-interlacedPNG image data, 621 x 140, 8-bit/color RGBA, non-interlacedPNG image data, 580 x 400, 8-bit/color RGBA, non-interlacedPNG image data, 436 x 468, 8-bit/color RGBA, non-interlacedPNG image data, 417 x 445, 8-bit/color RGBA, non-interlacedPNG image data, 893 x 581, 8-bit/color RGB, non-interlacedPNG image data, 468 x 64, 8-bit colormap, non-interlacedPNG image data, 757 x 451, 8-bit/color RGBA, non-interlacedPNG image data, 757 x 582, 8-bit/color RGB, non-interlacedPNG image data, 482 x 434, 8-bit/color RGBA, non-interlacedPNG image data, 826 x 407, 8-bit/color RGBA, non-interlacedPNG image data, 146 x 42, 8-bit/color RGBA, non-interlacedPNG image data, 823 x 467, 8-bit/color RGBA, non-interlacedPNG image data, 809 x 720, 8-bit/color RGBA, non-interlacedPNG image data, 1108 x 643, 8-bit/color RGBA, non-interlacedPNG image data, 897 x 482, 8-bit/color RGBA, non-interlacedPNG image data, 459 x 629, 8-bit/color RGBA, non-interlacedPNG image data, 498 x 461, 8-bit/color RGBA, non-interlacedPNG image data, 734 x 548, 8-bit/color RGBA, non-interlacedPNG image data, 896 x 466, 8-bit/color RGB, non-interlacedPNG image data, 892 x 426, 8-bit/color RGBA, non-interlacedPNG image data, 790 x 122, 8-bit/color RGBA, non-interlacedPNG image data, 691 x 302, 8-bit/color RGBA, non-interlacedPNG image data, 547 x 417, 8-bit/color RGBA, non-interlacedPNG image data, 570 x 591, 8-bit/color RGB, non-interlacedPNG image data, 898 x 693, 8-bit/color RGB, non-interlacedPNG image data, 831 x 240, 8-bit/color RGBA, non-interlacedPNG image data, 565 x 466, 8-bit/color RGBA, non-interlacedPNG image data, 608 x 390, 8-bit/color RGBA, non-interlacedPNG image data, 564 x 370, 8-bit/color RGBA, non-interlacedPNG image data, 661 x 241, 8-bit/color RGBA, non-interlacedPNG image data, 538 x 459, 8-bit/color RGBA, non-interlacedPNG image data, 545 x 443, 8-bit/color RGB, non-interlacedPNG image data, 517 x 261, 8-bit/color RGBA, non-interlacedPNG image data, 520 x 460, 8-bit/color RGB, non-interlacedFORTRAN program, ASCII textUTF-8 Unicode textC++ source, ASCII textC++ source, UTF-8 Unicode textC source, UTF-8 Unicode textC source, ASCII textC source, UTF-8 Unicode (with BOM) textPNG image data, 176 x 131, 8-bit/color RGBA, non-interlacedGIF image data, version 89a, 16 x 16PNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedPNG image data, 11 x 11, 8-bit/color RGB, non-interlacedC++ source, ASCII text, with very long linesC++ source, UTF-8 Unicode text, with very long linesASCII text, with very long lines, with no line terminators?7zXZ !#,kG=r]"k%]=3B{ޫsguJרQ6[1Dq[63$ȳdɲy:78T#WX%p?kH3s;$`cqo@ebHtQ.OlGl.}_'*2lցPY_!c*sP9]F1#uOYЋwX2[t72̇7  rPɫ-}[Q}r0}bj]{br'dg6Z4i-%WrqZTqJ| j-L!JvT'̰OׯTpU:un=dҸITa^!Sesrp 4dɘ<ͻ/$~wN9J^X 3sHx_ղ!zٹ?&00Pz(, ԗb"xA#gJs6Vrj{V7FnHϻlZC9g^N+;(" \ N$߳b=a}Əv 2gQUq|{as GXDл96c 񺊕; UK.nE3} p)`ÁyuOh̢i1<`R̹\w~SY(^)Kci صp baq^f"IuȶY'Km (%4nqC2ZU 5 ؐ`ǝފe ɝeI Ae!$ۣ: #>2P#n㎴owxT]4O[sn ! fa&,,̐FJܕ&I,|ה9٤Nevf \:*t^Eʻ ×ܨxq^]َ b(ᅗxa"^W{4`TaB5 ꫎1^GғP\KOc|]3+!~'d6YsdƠt?pR2d+TI7 ?6 8i~ lHY( Ŋ*[ 9 :&-ٽ8ڷV\*npP؊VF0>DAʕk˥1ENɯt޷$}l[L<=d\qۼ+3w!B$ Jf kI [wV XBHwٱ`LsC";v.whpT6ΐ-z#fPݮyՃ!ẏ̬Mt >&m7+7[mTk]`UcY޼d/ǯ4˰E)rsk^@mp",!mP7@exBPM<-U){xv|x ½ssv5C42v~)Ђ3 [Ln;HseyQҤ.,}EG)L#e!䛣\teE6JϏݕwP"y#qB IMz1[g>"8j} fM~y?X' Q^Ǚ؞yJX[dPȶNjf{5 ba;tv+[퀕P]c5p#2t ϲ.=\mo1TlHkz~zMC~lEs\H;%{lZ(þ\GJN@ G0;xj %C=YHjA<8nz|{ZA!Έ8F05 $n83>SW[A`dP[TXĶyќ!UW 1]4*TYv{x2Ͽ2.(C" Mu>h@Oiw J2E5d$CZ 4@1}9W-BhxEm=/A4GI[=}!S oJ v%Ρd]DŶl$!0A"2Pb∭P*l]B1b'pdY6zWGQSi, {C"!Pš %(~;јJ~BgE`'( D#&FG4i;0I+y/zuzE:Q#@񕏩 V#i\_P_})x:pư(sQBfʋKRuȨbTh*>9=ߡ`!1iP2ıllhn/Xqx# #GuAĕ{?ueս#`jK""ս1*o;wh0bVf1v|Sf%@ۈfipFPn4FjcWޓO4NؼE_a&vƆ5136^ߣ *Im"r=Ǻ@d IaQ Tc^l'u "U7Iieȟnm yAsO@gs t%Q 5IJ`ߐ{z\jKm'XT+<Лi9Gt 1H򵆊vӖ*c|)fvN3@S9mo-Ι<i|_11e&t[@[ VݯZ0k`տՔc4 l0 snn;.*;dpqbɔA&#S@_<=߷_[-ǞZtm2Fz&gXf([%yJtmBkʔe%)ڕ`PTXU`FO3Ђ{"}5h[ Wp|Q 4' "Hc73z>x6T]0fb!L<~M}uZ%wppX&wPe:aqMmB \o5(k .P_ͲX"xؘPup3VL2seK"/AULj K.DՑN;5#*:K: L8Ӣ Ν`㔜.xzUy)\;"Ο>M]<|*?v_Ipt#2?C  G.R亻efP Zfz ؽ&؜Э"'i#ΙG2 M}`ټNr=Tva3j"&V$g$.)[B !*Ʃ&Ǝҵ} hgP{RRVHew⊈hMbxBMۂ\u8w!ɕزŵ+,ECZ *,XiW6I(V['@N7 '̻ _7 gflnw!&({m2J ų@|ߴ9"\@d܈B pE!;}FTr/HPvx)A8/$w2!': )G^uʺLIn%ӡȠ??s$/aAXn)Aٚˣ4!aCe {F7x`*,AAd2^XuڃRR<cI 7-o6a' x2~*̽ }f{N%2e=mJ*.ޥXTAbω+&pLŏ{RW "";G&|KIK m偍7B@I'C2rik$ \rEw݊r*8zUXu܁]c̟%H-KDczFq\qjjGDh]5c}ǣ'\)W!NkYb3-!4^a-sNJ_pĂ }?O^>4 G21LH0rt. -(l-H 8h}w9bQ%h'`(9å~āE#`!;6IlF#wѯзh9)EUT} ] |JۛJҶaipU)^u4[iHs$dˮ @TSVw}F^3c\"ctz,a;p˺]ckA=X޴~|H {ߥYUԕ}z]hVTڅkh#{3ʙTu: +:8sumEVνOR2 4x_e1*k(6P\SJΓk0tUХGGa@]`Ml +V觛|8o Ԝfst8{E y艍pF*7:뺝 B)L:!#C%ٚۮq&˃fUvIٮUUSPW صy׋Q?κtRH9NTI3/v)T :gJv}٨zr OcFȣ.JV6)TApY< _y0BY mGح&4L,v ό`ȍ/.@Y&AB3[pW_r\vmeDA2q9o4L ޥy&H;#+ۤ,zDQ@ wZWqyx_r_3:zU5׾wi#r{ &VhOO:rulzࠃ8XnYhw#glU2 RQkP@%jS7mRecӺ{XQ6AtJmgAbS:Ãma,ͻb=JIcQ]ư\RG,}.i &Pfx۳(j%?M@LkՋZd|ys=1z8AN\ ]&\oe;QT7Ad+%Aj3K}ы<,}2 L %ޏ]@mCL*k}`'!cDÅρH]hw!<^EߖWm ~)B{W Fc1ra$zb,3R!r\vP=ddb=5}^Lz °ڴ=ޑѠԁE^mro۹ 66t qKke:g5YMu>Zu!qxASkplV=I8d7u^N[,XmSbs`r,U~⹄G7-s1@/;g\Uq(87W_g2 v»hTXb|j"Qo]nNc#9 gk Ear t/_&iWea&uU,?uɅcӫ̖0fRG;a0aOEI6L M~\ Ek">HF;H3 ݆0'bkeO0 l)iF9JF mj;&%ę'|"!z`AGl~e"Sx} %UHW2MH5N!3?!;PL uch\;DTYW#f^^hFSZe_JB\ uZ HLDJbWK}d,H,5i>(bcd~fD,6-=O}֡o^h4~ @Ĕ oY6ud |B!)]w*9Kw]堈h:ӏmw5nu9wf .uE?IyGxzJS8ꐱq J rK /{SA[Qx9Ph3W*aM,m@!\Zݤ$L FdzqSByiCrp"87(T*s#zjϼC=t1c;1j4V2b9$+oi߂sæLQW^>`%K,8aP;M :a.l~]HfrwQc$U,SMWzA^P%6$ 0WX2 `,g/q.d qcӈWR kk5r5-Dh@;<ֳ!RO#ؖ?KW`\.vH>_ Eb|&!1pÂDx^)Q@ h\SKz2f$eט8 ^N7Q']Pa7U5TiJ>PQ5]pl WINGM$;O(4@7؎d@F\aJ~?\ofQQf *.ވIrcYDJ,L$QL/Tی`F "x%䊮f><+}F d>)y8u捝f?)ZQ.*l?0:v v)vPh_2LU*Z3l2]e u@Y 9T,!% D1pugN6[`HZlcNB$uc? Z9v$ЃkC\H>kBDӯR#Bui73h&CsXnbVot1"xDU )g. Hy=yi/1TI"r%+Q]R: 1R9Oؓެ$yoFjp/tmXgʞ~؞_Ldu4𤟒O OTL ԼPCURzGH"b%+sP}iO˴1% jg?]R& WQN_xUA֏g?U8Ӝ=|0uèF|zSFlihkW/(GdOǡ-LS ]┴Ңj7{,nU@rn7lNYE;IC;~1zp |{WZ2{񑺭*=.0qTmE3g%*ʌZF~aiB"5l`vPG?lanʠSl֪cv_Ƕkњ8UA`4zӀK@mt}^32Cp#3˄`"ySϷUp Ckj _RTQ< "]4Gn<93)t ̆{۸,38&ڌr#T; 76EɇZo"3ɞ'nq1$ >+ V.7Nah@VG^o'rA:C`$M<#x.豇W$]kOl쒨9۠abtO09LUj^K7s+!g<xٵ0^'y6)OGb4ɥB!l 璫'ᵤ`$BBV J@,&z/qjAƣj uuegB{ K,Ir',@{!YJAbK۾]_u|5ѵIgx?E^q2 &$˞Ѱ -b X⣗r/o㳗$ Mn,2TCPOk|{_QpC6p_k@1 ӝH̿_kJҫ"TfͨtƷ<nR k|Z_[V㙁T "= 97`R8FS_50=h'" 94!kNǸ ieu>@rǕm:6+HHv:sTs7] v{=$VYKͲvCcPJ 0Y>sCXMShQ 4HբY[(m> WŻ(4^Okcu -zWG#LR$-hac98gg.q۠BK6fs '6E1"ìeHTׯӑA3e(a9H2.({m.1%{J߃e0Zg?ڥ瑉ό( kґGLhDԶvלH"#9l6 mDZb+&)mg;DxBqI=',`BItYsM̮suC'_%FYq́O?SS!GYD.lf+̓$*Bf> R@d.PL@KxSmy:Ƃk_fdU-"d:7IV+vda?IOh@.R JaXiٸV 6<.?u"t1:i~U :O~c<:v&&KံpP;^ű9C,Ϸ!M}/|-Pn>gn["5Sb;g&4+]!*QHJ/9/j2}BTq{~Uu-L;d``THkkO(tοs8!/)5eNX9PNz8Gxl駍;hB= 3XWy$Khs;LM(! w7,bW>$YU(ƂRoR 4Rbt)"]M{=GuTu! bm<z LS*sFMFvB-cKrQڍgyoQ JT% ձec[n7VM=Uͭݗhj-F#7c)}JAc#nb_)Muec+ޑmu˨Ԝ 턨)ΩUw}׼˚M(0HʮΙ '׃Y>M|a #?(JW):fCs4Eýw_V.**+aӓE(B23tR?{k}jH}4V)eBFf,0X;ηoGX@k,7:u_ik^"3ltj:p>J` k&eK HYw" ā^nj2I&@8tF9Sh"M'ur91j~ o2X?'qO;Ne.iGZ<zs*e>(宓KU]9P5sUrV1a^@dkĖ{lұ~SCƞ=$5YCN}_A =u[D,1y:.6*اu9ނY}ɩ$/%'6> ?m:L0Ȍ\9N ˃ޅ/I"a(^oNֳdXCj%&|h8>[h i΅5. "+o(6WLtdyN~6ΥwV^ncNr,?D$n0㙤b+L@ '<}mpgNZ*Gnc!E^Yhy@ /2PZxh@bUw2Z(9hS5%}p'Ğ^8|ynCTt^hZ*_ctukZY=9LrCFt؜~J<;yL{wפȲ$oٌ/ɂ:ذXq_,+t~QL9Wvh?LA/RDN ܁!ɍ}} *kvTNo0U5 cYue;B6Dܢ^ݿ6o4aZh6 lhD]\ud-Lg 9bkE2␙?ِ< (krW%kLp9QE;>AdW c&KH5]nƽZ)!Ѝc],[D 9uQu| %LV%mЈ6[wwR!EZ+EG5^I%ZO'4pU?r R_R4 9<4oZ1C>Lb/8' ({}*,xrygܜՙ)"0h۴&lC68d%$ҡSY[Jd~1hFFD w=6E-gTY-T}wbh$-@Ի!ޝ̧h'2baT7Øή<-A1FXG*q J'(Ne#=HcI+d~*K܈hTNOӥAJY1H +T>1_E$ė>/lE<暩@;A?w:~ mwFo5ȹŁ:̟YBWy= *JEZ*JȴPpzd7RɌΜL_G}pazp~P"Z V?RekdNSTke .eX[ۛp`.p^3ítQtPx)ŔJtOJ LOJ4Z095/Cv[vyƘ (6skLID ϫhT \K`ǜ NRTLSL+oQC2FIasNY4dtcɭ_6[U7x)B=aL}Tt[w(,CY]Q*/*e6-;t­~ZNArW.[x=>a5ZtjƘUE/k֞H3\H\\h)[q06'O6g 0Q߅sAef#O-ʲ“97&p^G/IpV~SIkjB oksx:2Md=Lww@_r)VԜcs'=S(,k{Ն<#_r-Snμxt8'j 02XN$y.P8i̊]J.R&P,C==2@B,wSwSf|# yEUMNbR%duc)#xUDH1b]t+rM)!9X.4ecQ J.4wh 5@2C-qA]Љ+>ՌZ=59~Mx6'bx$I1YpOeDzv2[Q$ض Rp+wސ 8p>vNY٘$ޅv|—Pr ' }O<Y7/(ȏ> sn kN _,* rzu?P| ACJh ʾNҪUtnmSqB-]ͅlo[rec̦Im[-hkFTot,NV&$UgXRuhwB*e\o8/04nGsB#?W.5"ouk-o]:Qśz0zuy칈 3VjsgC/ؤK%RU 0E G' Es'H nS[#rFBr/u/鴟!j$ 7p"i(@Oy}3CYLxb+FVS 6㘠eWÂ$s-G^(6{U\.#pBk;؛ENЄ1ffG׹؞ wM {HTEH㩵.ӥ)_@7P"rf%_es~ˌ\#_H''j.zJ'7H~3oK,7e[q+O~#q ?^?FGðjq t, MXBLzp_y.h/ڌ6 (/v^,@RAe