# Test core audio functionalities with `qrb_ros_audio_service` `qrb_ros_audio_service` is a ROS package that provides core audio functionalities. It serves as the primary interface for audio playback and recording within the ROS ecosystem. - QRB ROS Audio Service: A ROS node that creates a service server, responds to requests from the application, and translates them into operations on the Audio Manager. - QRB ROS Audio Common: A ROS node that acts as a bridge between QRB ROS Audio Service and QRB Audio Common Lib. - QRB Audio Manager: Executes audio operations provided by the Audio Service, based on stream configurations. - QRB Audio Common Lib: Provides audio functionalities by calling PulseAudio APIs. ## Pipeline flow ![image17](data:image/png;base64,UklGRjB3AABXRUJQVlA4TCR3AAAv60TOAFWPgrZtpIQ/7P2nAxARE+AqXlOfPQ3wTn3zNI+qj+zbbSlO2toqE8c8rTpRXfC481Hzjlu7RkwnamuomqmSGsF5ltqkqZK8SBmoqCuGqlzaL6xbuYplBZgCnJj9f2+5kXOWtbzLWt5lLe+S43iWd3mWd3mWd3mc7/Isz/Is7/Iuj/NZnuVZHue7PMu7PMu7rF3B/9/39/39z7237v2fc08PIZMYUHSiDKGFcrhO6gKGmKjJObDvZBkqARKnAV2imu1MOkhyFkSCBjguR9GphOsgou9iogD2JInsgYDO3aQBEbqFScLk6VQE5J4kOOdAtvCD4HK2iU5SozrUopwDxZqggTAyIaMcJqojG3SgGpgkAQKvaKAAsdupNZEUjJpEtUMHYTI7OLTB8aoDcZ2aDiJkCwUSZANytifQsbpAlzFR0HEO7EYZcs6cUKBENMs5lDqtWsCEcmwUMBREg31ROM5BphzYIEooGEXnskhnNYVfLSRMkrPJBQU3/4BMiPLkGdlSg4DKQBVQ6J48Q2NEpwKEMsAJzkGdKUeOccVFu+nQwVlhNXk0/ROu2tmcwEb/INL0UGgQQ8+sNHmGEC4wNDkciY4qOhANOpFqZ1poOsdyKMxIcqTXbXs7SZL2TyzNUqzEWvuzzNqsgo1ZB9uEAfvPGhgwYEAv8zAPUzPtby3TMPUi7a/j8LptbydJ0v6JpfdnCfRxlFiKlVh5f5ZZm7VZGwasP6thwoQBo5mHeZmHaZiWaZiWeVn/ZdG2VbXVOrcPbZJuEE+AczC3+bQabb89N9JCw4GGAwcOHDhw4MCBAw0NBwoKGhoaGu59BRsKCgo2FBQ0c9U5p/8tq3ROd/3PKZ8qcQWwF7GOYO83rBD2piSWqUpBmH9hNHMIpntVDsv/VQ7il4EyUA4dQO+FbRBigq76V5lKSSxWOZG5KYupcm0UYh3CoXtVDgqgU1i8eDLoHBSAAugcnEFnINXJYe8XpbFXJWG0qlIWC7sUQTMzK4e5X0VVjmVYZ9JlLKYAXFAEuI0k1f9ftvcaCgpqb0Etg2rbbt3owMLCwMLAfvpzZgQNBQUFBTVvwRvWf1mQbNtq0gPuwwUiXvX6TK7l51kw6rL+s/6z/gujnYEzU1bQKYu/Oft/9LS7k532xK2Ou737LEvon3/iD5Nzl7W1sxzJ9jKykJaTLS29YbDb0XGW8tOoTq1OR5e8S5EFNO4XOzvVsa7fOrPRzr81eAu8hLzLmUy5rKLq2Ap4tyKtrNEhA5A463I0nHM93z9ZRc65ZCdfAjByRyP/SUier7qS4paen5+sInFDt5Mv8pEm1rtJaPFjSOCWLGRDHkBtVgvr2dSBhaTLpW7JTja46gJQX9PAetYAOuVs64ezmtjGAt7/8oLTvno7b+zjMGBrVrPxEPsdD7fetu7923wl4DB1a7az8R2gNKh3LQPL/JodXRaBgtbVnQJW+DVbuqwAOZ37GQL1RjalUQdm9a1FYIZfs6fLFrCsbbmUbdnUJWEHnK5VAK5lW6r69ikXgAK/ZleXAnBJz8oDB9mXpBPI61l1LPBrtnVZQF3XPvqNGjHymvbBM8AfDTFcN57RsVYwQj6M178OLdR0LOCKMaMAXNay75eWJxiyH8xq2UduGTO2tOwD7wDPGTOuAVX9KplMeaYhu+OBfpUDkmljxvNAzuhQRQwRgZsOIYXCxfMMD1VxYlW0CNyqdAipivGiKp6Tw9rACpCaJbQ8XgVFZNYpKLNCsgFmKuZYxKuq4qEY0wnKbAEOx4BAPF4V60VWHUII72QMzKzA2RPiAMycIiH3eFUsF1XxUKi9WSIjQ6RrDpnHqyiskIMrghHEAuAuVCuCsEXuFCe4FwMhwXBvsTRyITyTY70I4Kh4mHFWhurLYYSmx6F5eQhxTUDmEkpIKFZac5HmOSQer4rpwl2HyFgScktvKtxTcOD/RCwUM3XbwjmFogoq2UBUXy6WC+BJrxn38AA3xqAG1RhQo4+vmC96iocpJQ9yTSbkEwPt093FfJHRpnBNiVfFnXWAG+Mb2m5rAXo3JeTS7YQtSizX7qp4EIa1QsI/UcNPo776chjEguluUnI39CY56YFcdjZ4txguNiAhXTJOJjeOYcvro+Med4gTmxfcGCfhNArqjlcxSAv0CpKPGC7OWCEo+0oByI3RHOa/DqzDBZz6Wwc2N1iHG8uFqw6BGLkxnsNMLqcC+RdQIbFbgOnBrCnI6gwrYGAmGvq6UTSIkNguegorSHBu6EBJat8dEIg0HPCzmC+WARcboDSQG8euURW/111Ioh7StxTXjGljA7CNzBlqncuYNarItaFONHcVFgvWbhzL9ikej1exZEAtesTFgt2kqqqKKQNo0SOusMFwOS+t9Z/1n/Wf9Z/tUqzizA2xU3GxqSF27+6oOBcbGx6Ed4F6u3HeJA/AKVBrR8H04NWa9Z/1n/Wf9Z/1n/Wf9Z/1n/Wf5lEWIHNQpJYthC2TyzjHCeLpl7Bba/ILmE3gd/tuwjNqTBrZvFLrFpQ5pTT5DnlNkNRVpEusFd42K4QtxG+Um8ksCxV3NhPCobVL3hL4GGJwrBXZn0cF1Y00Tc92CeGdlSZvLPBxxVwx+52F3WqTf4IJaQL/c/QlUrM1+QYxbcxbL/yzYE7TlugMaaw39sZzOGqkwhYJR0hQiXaqTX75v7+qHb1e2JK8wloPtAn8x9pBnF+I6px1j6Uisw9hhdp43hhSWLR29yWgZa4yAGC34uJJR09isShzbkMM7qIfoEG4VHI9mY0f21NXhVgJIIRLS24ks/HDnW2JRPZ8j8HaIK7UNaoZDo0f81LCtSoImChtBhHgnpWoaAK/pnUXmbPGoOHfBjWyJgPlwPggWIGC6w3IcPVL3CIGDXe/aC/a+i2I5Qltm/wEsVyYzj7C3P0YArNbAJr8DDFdHAe/2xK2DZxOQeWYNoLv00ogbo0n+Z2CiXNWE7EYMFq/BWy9xuzpXbX1Ggy8fWhCYskw560QrlUGQHebuU0h/DObDHKfw7qB8IwCyH2uThfwzqKLNG9N/gSxVtdXUUJMMHXjvJllz2FvLsTZBjBzmJVIuCVfxyzLZrXVEG1z14sOdhSLheZrrBVl2sWkoCXcUgboWJvm6lNAS00OLjKZgN6mEIH5EWt1PeSTedjsGPVC2BJdzuB6yPquOSDeZZZxY7+ZejCzedpoC7FSbN3rXIzvP9Z/1n/Wf+P7j/Wf9Z/1n13S/aDYTA/Kzejw0KTgzA0fjp2Kiz9savhwrOI+rO9lXcXueS3rAKhmbQ70qypwTWVihbkGVPUrB2wpTOxidckBPS39ahbIq+xIdrrjYmXJAxf0q8tAp1xhB7Lf3Qc31aUARPqVr2FIYf5J7ZOLVaWEmtew8sKbUtU2ovunm7G6npnXsRwwpiyrRHRicrGajAE/1rEuAzVVHcdOdYhpTSpKjd+jaW9WXaysSXRyUtE+iV0V6LJ7Lesfinpy7F4jwQPTpJIsA07P8i8IQz0mWyR21cVKenTNa1oNJY3YfYNSPDipSAFo6Fr+CpBzsbIm0cddrJrrAfCC17bWgKFJ5RzHTnQowD+VY7IErOlbfkbYpBY3pyio37lYOdtmvM5tRTUfeSB27RsK9PCkmF2S58/Rumbf2OfvtaGSeXSi4Do6LlbKe2rsvzGrd3mH9789+CVWxoGsbaI0HpmUIebXu3Be99bAXRw6F6tiVihdiY4idkjs3Du4izvea+AL8EJDDRtj98REaT06KUEcu5tXADS8Ds51nAH1LaeAReyeTz+JOtsuVsDKbfGvGef1cL2oAGDlgC9iyR2fSLDa1iE6NhVFj02SqyLf/S+XKS8vP3tubrPY2HLgiy3HNsic+/p9k7C66n5C9DP38S8Jl6605LtCuwX5rvyIZnGyzR6CVV/MTTqZO94houJV9gLeveGcu7rKPD45mZv7iL/YC5dr9os9qlnMbJcWIVQqHOZntuQskToC9KWTaeEVnEoRtbX5ZzDT3v4zHZkSTkl3wrt6o+M69SgH9ov9uWYxtO3kapC7R1MPttvlENsnOu6A2Kc+81PI3Z92xB/dLK622Wq+JrETWkitzR4E777bp74l8X1z/NGPahZ32+DspTXZO70hek36L/p9PerXY8bI2LuB6DR4Yy4Q4fx0rhN1wPnpbBMl4Px0ToJppxPMOSegf/l/eFqKBMdbuATfL0sF+3mYpvcPT+46jwKA/XhYQDaOUaEL+lHG8Wjon02+Qewc52j41R0/HmZeEMtk7UDUDf1nm27e63sMHZmvpwWOHUyzzLPNRuScWwCtnm9MDXCRR/JuI5mdWyDZJQdgYhuNH+7cVhIF5ykmfslsgqzWZpYClGrzZI6+GtDmlVbLNwau2XVW5371KHdMtLwADs0v2cN5HlRZsnlpIpOC3ausrjGFe5tJHKQUsR60AVES+k2Z7Tht99Hk32C2th8nb5CSbjs9I5mNW6DmzDsL1+vJLUBpntKKWwg4p8l9zoa780F3a0PrwV1XZ3Y4LQ3KbYbbW0m5BfLGmrKkPXiycXrsl+7R0ntXQnJCyzRLVjLP3fdqGbg/QPEswNnXO8TbnxYEblV6yYbs3H4fTb6D2fhhKV+XVlqtWO6rxc6Q+7yumHl108z+/LQwpMhnY7uZpplxPLn77Ay26ZYUbRHiNmnK7MeTZ4w+wDRDb/PY5f7rKyvW0Zy4Uc/+aJB4OLP10pXuu5mmmfNpJvVokH0RDSDnkj02B8Ubbx1dCJqAfbJvMbXbVk5ifkGePo4Bppn71JR9xXpESp6A/jSMeLjM/WyAexWggY9j4Doe3HN2IsHzetJMZdmhQX42XjdKCItKz90oBaG3y9JBc6WmSRRrgMdZosHXTcR6Xg/uvg4TcFbeCQylGxQ8HBEES5txHjEf9EC/cRw/4DReWaiAnyKT7KVHMkk7nlDC5WelCHycFgLoW6dackwrHF9/juRJQWnOfqHVgb+80PbEUkn55hpp1wFUOY9H5STm7NavwwI9d7xA9uK+6xsSajlBum+iMa1oD+v87BLTwXHoR+f4rUlnrvWPOI5zXt6obBZN4L+jIE3gp+UAimEc8mvuycL0t5XcnHPObavm6osGbf3psDH4BTmfTssGW9RRjN0YgVM2plWsB73QX1awcJpEw/168GTLWcGhgFx4MYfp/TTVkvo+sSz3uX2kaezj+LZd0HEwwuzjHdMCxw7u46ndQM8nze9SFiPDPORR5xplgZJz38HsHqDlHUE/E+z+woRL9gh3dxP4Jfm1k/0g4+/HnXpQkz/CNt2S7dgNjJfny7w7lg54Xe65ZJQmmN49jvDQli2lzd44x55X2R2UojzjarEdHAOiqJ/M/ja2qCO0DFwfGtn13IwwD8+4Do2s/dlDI+fTmDUp6h4kQBv23cqWBje5/JLT7jb72+CnrSPJL9ttiDHVFVMEunUyKaZakqTEtK7l65iO48Htd1+dhJfLJ4nBYGK+3EcXz8lUS65jgo1Km+H2KaQ8OYB0HE88K09Resm339IKTm6W1R8jK698JgtBUsBIdl6f4+4DmHl9/KNs/9Ijy71XJb8Q5PXxw+HLPNKPB29+QRrzi2tleckq/ng3MnOf9gpgXp99HAPMGAx7FCqjZdHjQORF0Xjr3XBOhm0XGq+E1mDhhE+lMYw9p90NLr64QbbIPOAev2RKNV55zBxZ1E3AaowkCl6Z4qJjhUXOp2VtPlLTly1sAmVwRQcNHHw/XhcEM5tXSnNsvUZDCs6TnT2rxGY85EWiymYUrLxZoaI31HoEiOgoPMkWj4Fgb75CBtvJfRJAJC7W6Qj4iS82iYgeAm+sVSShVpGa6yRWGqDmGsUxGxejQ53SN+0HqDIfb09JmAWdY3a+pLdrtP1DA9Ia9kZbq+ksGW7/0oA01r3ZJpoKNmG8nX470Jw33USVAE3jbXq/GWDDm2/KldRZ9gZc8ynmvQmn3DTopvcbglFvxtnjo1L2hlzHgNn0ppwJoqnIG3PN0bg350y0vDfpLkYdS2IT5gRmBwac/MH+IINmvZoduuCExac0hlsw0BuSadlt2fBZ72mHTlYcSiiTz1kZRqvpXOz5nTdYEcvyXBNwzg7OCTJwtushNcsqYjMXb37TDOzp1TEUr8BC8cWgmQTWsRfY0awYMxDicVFKeUx2lVKG/vXFAJqUcteDlVKVExap1E2Yk7hgTiTDYQv2m7AuEqFfpolSvQ+h9xjDHYf0VmrNfkXmz4KJvuAsF2VYbOWb1ddFGNQrpbzGHWWtoTTZcSOlVH3ROL98M2V47GadIwkeXbn/mpXPhd5rJHdeTM2pHr3IjKRlmXhN/MaHBIKznQyHvdlDXtm67SONCFlnNafyO8taA2qyg5pTdS4SI2lZljssKA2MLdjhFBFFhGxlpX1fa0hN+1atXBRG0rKDDE4kTUq5P4yQRQT4nZTyushag2pyZ6UWQFli6nEF6H8daoFj7zz8C5OH8XG6Qf+eqXxR1q83jKQZpQhZ736RwKMr1T4U2N2o0r2kvVL9MAIfp4XojkUK/ZRSlUYpkiY7ViqlIoB/lUrtL2sNq8n9lapE3+OFrZr8DAULzZpqOqs5VQ291wjtrFFzKsP/8PX0PiO7qx5zjP3NIoTJ2ivtw1C1wBql2k9m/L8Gg4wtCfTL5Wf1Xt+ptyjgMevA39bTIMkh9SjoexnA5pdMqd6D/AU/lJ9DHqlUU5miEliAbZT56mhUnZO/0ofFNt3GBepMbs7LbVpD9ooQejN7Ww1wc94waMrVyV+w13jeCCvMkX4eGsGB6fscCf6wH1wZ9pYJUDR+WMpr8cMxqSFPzsbr6bbG2NNZqXVlraE1ua5SnSmua4G2O/0WBZju/ckrrUYvmczGz74I+l4G4MB3QmD7i/DySVhssxm/K00wp2ltPy5efuX0tAZ18xT5vBGTNIHNLvR0F+FJkWcBQL3bv3QP7jgP03zH3HN1MJJveUdzr5YpYOTvQePOs5u4MvQtEyDo+xiq1LKGq8HKZZUaaujxByu1q9FlV6V60X8s47Zd6LcoYJtu5O9rLDss37YL9l4GMJjqisT/mk/B+zOYa1T5pyN/RCOCd3/2SJH2T5jmFPbXyV+GCX/MAcRRb1EH/4DHpYlec6olLfC5t/a4W9SRYLT2p6Htxc8eWq/kD3FsfkFcGfqWCRBONao886omk/ZKBZ2MF+dUqr3Bz+nrLWsNrsneamVI48fYc5xJv0UBB8K/m7YJ/JZ82NiNsfcygIHvy5VUYhz0lQzoP/94qitSlC1dOYkJhezAYqtjgYJt9/oBP2/yK8a0ouYXNTFb7m6al+zxhU2NO8E/1zbjPHBl6FsmoBEcoOvjUGOWCyovptShBp5cSPRkj9G9cU/AJS2F7kg4oWlqnpGKNBzIV0HeywAdFkIIUGRhfIbbcgZ0fGP2twHR/uLkQXubVElYwPjLO+YPRmvNfUJOCQ+Cg/3tcyLzNnwdrRTbvX6Nfe4J/F3Jm23bBVe2F38w5CaVDcH5dhvq+pqTZMASpLr/msb+S71ShxhfDlGqnn5XoWjfN9coinn4Kth7GcDCu52PwTmvTInowWIeKpa7F0UT+LknFQjei804umCQ0pSmpHDJjrclXH7Wx+sy1RW3qAPy6bdXAFVGCoHAy9Pcdbw1DPXwqzH7Um/oLwyaML4klGpGOP1r2twEMD+h72UAzjOMTArJVH70CXVsDIOULZ1nn/aqnARw56RXlDsWB4JCkOpgjkzZ0hYo93R1vopJfwIjckQZ+1PW1Vovzddh4Q1RKsfRmHFMpaY17tQoJWsNr0mlaqh3FYryfazd6HsZQIE4R82G8f7YGyQAdj9eF6Ay7N3wbREAU4KAYfyB4VwlKN3V+eGW3upYBOjjr8s74crQt0xgAHHsJ56VuQt7FCP2IEY+q6+3Eaa3qiScdcvdKVh3Q9/LAAY86+oaFz027894gwRmfxvlnqtqd8t4XXlyt9OCgtmvo44idRwDiDxtN3DR4600aycTkGwtV15I6bbbEFeGvmUCsC87nNXZ7axUB6NGB6U6G3YOVu2NMO3VwdSjYmNaKq9PS7vD38sAnGcYye9q+5fiyQZzjGnFeIMEgu8zqYWmoao8CYKZ16f5SiZJASM1fbyht0VMaoNf6OnOZCFongwGh9jvmH5/BCpv13ID8OYJYMoYb5kAZK5RfB3WvXc1auxq5O+8slFmZTAmXceEYKsxNrn4UfD3MgA1+AaS8U+VJblx+qir7I6+QQJgVcVI/qmeyv56UIA3oAyusmBiP7u/reRmYEEIAC7zaOeQHPLXefidCCvMQb8/AtkTb9gDvJFkuDLsLROg5yiD789u+K4FlOrY3aBdhKKjUgtEv2lKjH0T3QZZx8xP8zqrNQ1bc5Vrqv2K3ZjC9jqvsns+Ty+3N260V5XFbPi+nNdqgJt/rHxursaOlSMfJG20DobpkMLUrFNSdz0iGbp1aM+TqoEC87D+8rDKmxbm4ZiNaYWSL7KD5QqL7M9nNwskx+wDii+QMgjgxrDhFsIK6V26jYPO0N/IvgsJ2myRHE5+zcC5ZRe1MghoqZmIEFo0LkiIC2Q4Z6sgXrrEV8JR4uZE5JERx42ULuhvkl1wd5tCZM2mr4YYxbNCDa1XSSrEN7/pEpgHJQtHamabwm5tYdmUEGQfgpkvuQ6lYMoutkCGIrmqCsoSLikLSwrUXFLXkgxXKpzS1pI6EcIKOJ2EavzoNg5B2QQByZQUD60KWpx3FckqeN/UbQuR5jWkrzJf0VOyPKYwPq2Ka5Ch2OnVhEh3CSjlxF32C4CnswsxeHoJyVxNAuu36isTCd+sEM+qQzULRvIC2GsI4ZmVxUSURl+xM4jq7PkOnLSPZoWo7j2flEFImeRdRR/fLECKj1eFSHNaef+h2ZmeMZU2UcLAx1OkK6XWnfDPr/mMnpLFJBCKLyXOtkSfpyKTZVJKL60K0lekgK1G5qSlti0yVpW4K13c3oy4JQa0xuyyBgr3bBJqSdeaY3c4r5eTYa8G/K4MRaQ1J/6bWE5CO1bnsXtJRpti/bWFc7Y8IaxZPT0ly9PdxebIAK4Ksb6kRWTWKfoMB6BanG0IW7TpJe5KPTxF20H6qNXcL/DHoYD0TTEfR3x0uraFpQyC7oLo9tOyFrACLYcic1KtDXouN7q+7R60p5aIACy4wkRX7ENnycKM6kgp0ZLok1iUww5sFaRgGSIyT0JZeXPwoTIgMG+iZRE+s5G+F9ony1iNzTLCbpWFt67wOEgCt+2dDROWVafouRzAu75ThEIXskW6R5w1tJLHO1E3lotSpZKzgS6mLPGS2YuLhN15I8aGDEXKIj+MFnBxmmSbSAx9JZPZZTvRb66JPrKUoECDgx726iLh0uriIY6OzIYuRW/ITd/61kK8yyzNa8laWoQtqHeO32VRjyzxYbACW3ImgUwp24DUTrB50ELepSaE0aAxjfZA7XhSatC4FSLlbE4MW9lEHHWcGc++Yv5BMvzzZn0Z/hSIlJtmUthL1Gul7f3MMmKHcjQjJB6JtULdUDI27ms64uswZImzTeJI9W3AvikQPwiBCF9fEu9ttxK0N9ZzP+KYia4ViavXg5zc2RaMcmTaRpFBMFsNPbEPdsnwIEmG1oUlwW5ooxBCuGYdXW+FPAtVwvkHQejIDpwnldnFqIDOAbPIPKIAvwZ3/hJ6MwfnVvmODKBjga2fWWIgYrLlXTJcqVisjWSAWpqXHLlD4aEAFyvieLVQGzMkt5h/ZcliDSHEUgUBObm7Wj0WLYvkuWxXMRGKj5dIDKcAlpMJxDnw3Svct6huwwYq8pB3FbYoM8pQfCnJqBNOJOIDahAmSTiM1g0GSykle/C+WHC+kf5qYrg+suoQCbeUnWR2CTu7EAjyaKuJxXwiOXGXZ0tnE1ZArGPKKBkSJHGYLCD7eVG7CtdqAFF9chkEOH68k3hRCacnXbNKACjJBH4RWUIUQhH/qCwJlP3KhC1qSF5l3oC9Bndhwq9p+Qpj8h3po8UKbAG0o081Mjd7BXl2IlwnaDhUswBAZvGu5DihkCNKrCQbkpNNCOdqErZBNP6WrnV6SdhACLuzxznoOHTm76MCb9BQZeKNkc5/viMXdzQT4v4DRlpp/SVemUhkzSojeBbV4zEBQqDP8jClBc9e0fFASA8MnEjvDlc2GzwZvaRdQTfi6dfdSUocVxtgHjEUkN5UvDs9yL6diLcnnUUUd5ukrkgBGbEPVsmQIEmtlD6axIsTpiQq5IrgvJXHmy4xnGZF8aR7yNru0stLWCHPAotV2538linziAL8Gtz5y575C9XSrpOjdzywRQPrW+5L5kRQVyoXrRcTMQEyustQpIy2RNsN4eCgj3dVNP4ma8nhJ3E4YkHw1yYOYvCmK9pmmw2sbpMn1IY3BShdbSJRv8XbkYYVTWBKnESGk+awalkkMjSfW+qjZ0awX1nKWv3Uyk2f8TBI9iCiinjRpSSMtOwhdeDjRU5OMDmJQMrlmlXC2EcFGl1hl0y+aaIKGZ3DGkY6sKQkP9j0ECJshASVYGvbBuhfX89n20KMkFgeTJ4QdA7uTEKGIt23OGBGSVXu0VYjz0sUWINbigYIiXcS67OhWzf0x6MrxEqs+BuJX9ENX65BGhnKimLiGQ6lp3aklCwBEhhEb7AMq6D1JTKZTLVZvWEdOgrEVMMojJT6tMlI7RO9AcaSDqtgFhnL6xvqB3ChV5ARMntjvUyyCjDzox/YIPvN7C6RhgFn47CCE98qJelXTKkDxM1J9CaXXogKfmgy0BRDdslgnBrYjmJiCQpE18uUZIRPzl4AKclE9DkD48jARte33TBvkO8c3GnOom2e7C0kUXB43aq5Ro3JDbX11YM3ctEKMwyugKOuJa89EhEVgLNB2zzFWmO5aTpvyyuPeeNwAe1pJax1eHlpTpLJZbuKCyPAp7IwuBVp3d1LlsHjb307iYNo6JLYktuwn30nJTdGS0UqBPZtg7Cd5DcXqUkuKzvhG1K+zwyMm4uE3dFjeS2JsiN59qZFONs8TZZmIlr6MX64epGwByPRspChl+yDacGzgGZZQv2CWlKUdzd5FtnWIuFwCeqbpH8BfCJ3U2wthC3QZXJ8CRp+dZv36aCoF6mZnJa/iIzsdtfWdpffXQXxh6zpQBlAHShGsACtdl+4kAM81tF17Maei4MATjaB6SbnHW3kBGQzG9AMWjMNOMn0nNU6SsaYwB+8MAT2W0i9HGGX6jYUsCT6JgOq2+QN8p2DO81ZtO98bP5Rtj8TeR0NjUaaU+oi1wQtzzqrmf15pafO0SDlXTitdGHQ0NMcd3Um+2x1ms4LPd1L92h5l+EB3emGjMDWCJzuEkwxoEjtgPVcTh+S9E1Jq7mv6VAnDENn4Lk1Q8tOsD/G6AjCFkhkLaULpHkMzqCJISd3VxXQvl9sxCO18cHEaGklODUyqgpGtMxu2YkLNrPsyTACR7XIjCXt4IRQUJOW5S8E7F5LP+pAZEoJkBlRQcfPIq+7zcS6G3GcIzAot3jfJPuFSS2ZDAI9EJ13o08fSuCnRdL+jrALRmJ4vqKjZDqhyqptTiqOvnCBQcJzcAefRdt5PPhpTdNs/NDXtM89mXON4kTlNptdZXdqgwG4xHzrpSsf0DTNaT53g+yLhMsyYjDjiZLM5oKbUHEOF6kg83zY7n7+4mcQn3ctNkDRzA4yIbRQBEkPmIjAGlDvK0TipH7lHCfWHjpmpcknT9g6IKP5AwIqZBQjMEh4ZZWgs1wviw2EaxjtXkfefuLMOUZyUzerEJ8XoMl4ZvmULywSfTI171TiLzpQHAQQfbK07FTiL2ugSFR7V86Je4mHtEKMkKBVHhAQliWrriaq28BJpp8oYCKJKNesMpLK65Oa6cjrI0Kq20gaRGrbQSyoxgwiC+y8vknJqbS4o3o9ceU6EgPlGmRsBMv8CsRBNMCTgw3izqFf1LmBFFBXyTYgCYmIQeizN2u2Gb4nMuymuK/psA3qHEYmnPIECc/BHXgW7blS92Upxw6YhwYqNbe7jj5a3tGEL+QIL9fyicJD3wQIgBjSF4MwsldwBCbJLXUtqXeeRntCzGQDPbLrnXTbnLgjhxm2tAQ9j6iLNUAbl9LLC4MKr9RKMgxain1isIItJNJGx3UIrtUkEQ+GId3lTCRrn/CiRMVsQqwEf8HEYPh/wIxUwOwgAoh5d5fuOkm3IXJaryHjtradJgvoWa8hR1eQflf4n2hvKk4HN3VMp8vZqGxU0N+kPsEzxzUbIofMGNJoLpcwun6x/QCLMm+iY+WHjpIhmmuBr4TQLvjowdBd2m6IAMMgoMZsmbJWRdKpa/MOCc/BLZxtEbEpQhAeSk60FDIOgCov2aO/PgY1Hjcg4ULbE/vN+eZ5jhV6aL3ipDm5nReQkulKr+SVohe7c2YIuXCPbmqlDAJkom8tiPXJ1LKWZKW2a8Q7iRE6oKJYoHliLCqoRjq5oy0xcXjMRE8+xkmDAx1bpF6oNk6gW2bb94600L4L0bn2nro0WdRojJIaSRB+JsDoeiHsAax1uNiImLH7sgOJX2QDT4Oey+lNk5CjK7TpIHSeEfHwieGYBjGlJFHb/w10FOoJcVsLWBOLtwv7gfSUTMZfAdDcXdNni/SRJU7fhayQ3Wkwr4L5QJcl2YUvQM0IyX0TaVlmlHmCZOfgTv8ycp9q65NzzpOCk4sBYMx3m2562RtAW/+8/4RtBCEcbKLaJwUcQyyv74fxFLCTayNkPRvv85XB5Ch9YL34fn7YrrK3FgIdfEMvSmxF4hCZwAYIi4exL/3crw0l5r+lDIdlqKQaamS+KPSm4OkdAd6dapkI2WV1rW4jqeIkhhMuHFmx+O8G80pXyEStECT9gwKbyCPhXuxuM7vRK8TDzMIEcXOkPepKf4XrLnq6TDoMHTrq5dVj8WO5I3Iy0C6zbydxwD8p1/OQdRUkh5mMjZxab0BOapSjrSaqvZJJDjN2HRV9JSNDKIeVoLIs+RjXED2Xw6mVawshJkI52mpg9keb6hq8MJXQLDd1sQoxIo8+DchzcPffJ2T6L20Vv9M/2Bhu1IYFPoFK35cn3zwsMs6DfqD82w1kkEOOu1IpQfbeHpJ9E9BK2kjQLOsTwxnxN3Q0oNnZdhdiKYQ3XSEoO79Yig0Wf5EzYcxGu05GGwuFwpMIKyApQuZsGlSzAwzSAcu3ohLfOwCcAsDVR1TUgqgZNib6Yjl+lwjIXQC0gSs16QC7C3NZ0+tjL0ESdst/PC20bye8a7oGCT4Tz0hscCZODaxS0hV0rk3zrELVq96SySye6IokBqPrxfyDMGqRat1tRiACmQnLIyQ8B3fgWbSDdEGlc40CNM++3uHuT4RwGVAPFNSrdwNtDRJvkad3owaJEOpKEm03lIgrRdzihXVQKy87EHb79d0ND5YR3zcxwo4CMeLe8wW8NJhjf5cul2eO4IETNdT1kMkasMmYxK8vqttgJF6cXG6YDdb5fNIZJbZc3RbppH5lia42t5ddz7xE8q1AlwJTDW4cKP5X1QtbUJbmtWYS7w5mYNkpiIyQ20IYtXK9LDSSW+X0fGOqWnWWjLrmAKWPxfleAZhqRM+gTV3strKZ1xxIPL1fRcravEHCc3AHnkV7m24N/TgLKCIA5MRk13MzLbb7a74BOJaf9rc3zRM36BtBKxk/bR2JEW+3YZ7l9UnN2Hl9oJ+fIW0tiQOkrs+Eutw10MPM64tfH0QVbBvUY33IFbEy9CWztcBA40R50xVw48KQHfVtzAQyDPD5Z5q1tZpjbEwswyLMjZ7LRV6A0wixEh9aGqXA+pCsYACSsq4zKKpLY56+zoVOFWFcrAjqxLXorz9cCK6VXV49JWHKzSMkPAd34Fm05xrFT5Bu+8s9RnkyOF+FZMrc7gR3+1Kc5OxpelKVfu4us78NTZWVrEeq7G4U4BeCvD5+uDxbryE9vNKCvthOzPUaMO7VZ7jMg0+UN4WzLXJ0BT5OIcLhoBwJtiE9P7koMkFDwrojKJB86Bm+J/gkqcnRdZMZDsW7kEcArp9+GgCLr8logvLkI/IG1k2QxSWRB3loiGuMhF6DO+gs2tpNNKHl7zRoPIw7z4O40dCy35ReixGo56Pxrc4DFmckBWeNEuQLgV7fcYOfOQ/W4R5hFxLYIt5MVJ8JREYRsBExc/fDzKKLWhLfmngtqe96tCBpQEuEAbZBBdwNup6o612GuMSS+xYXJzoXbwciYpOCUBuZadH/QIyon3dVJELXdkPJeqA8hvVA+ij2eK3GgrV8tyA1V+nH1RUEtkKR7jqNQ4jEShKB9lwkMRm7WzCSr+xrgFQnJkjn8x4leJ0B5vVVgM8UqUmZxgEnTbeDXFBKgYPHVh3KRYVYSso1hDhzjt9J4IRAEk4n+KDk2jmsHGYtCAZzmJFtqmgOk4CxlOt5yEGEDuYwu6RQOcxr5TGkQzrBB6VymIuTqZXZxVZDs5CdJgEXiYHdBc/rEzNMrwvsLuD1o3RcN29TRzVBGVj0DVmD7ppSI9yjL0w8JbE+vrkXqm6DxcX62GFjYNE9u2UkR4lVNJCig69Ne/XTy9q8hV6bBq5LVlucTK0sueu/Cl4Pud8vCxKccMCo17kaii0SCHaxwTqf60v0esj2wDXx6yH/EDaEehI/C6jQUrTeImPt7I5giDvDW99aJBzO2Sp9NagoFpExE4ZWhPf5V5FLCXg1IxXAuuTyaXrvhNSonaKeinrlETqiZ+qZZW10lsL4NbhbNQWwAluaa3SROaVKXQGwsF/ngiEiT1/nAhYinBIy1EpUKKsCwilad0QGUzSrmPpVMbQgUqOkGKLX4JbSADXhKDkZ85vr+P5j/Wf9N77/vFzYaIcOCKHdVmCFaRWdiyS8GxRsie7Vw2a3u7cpMFmIVtHtPps4BkdgySu4x4DYImxGygvDmcgLO/tfGsErGvYqNkHEF2aEwBVRF3glN0e8G/Vw2YbSYlDIVdEzMQlc0bT3qh7iIgGhMq+wWBRy/TI2AStVz4g1RwEL00HKqs8zYvWCUA+wJoSWWLtCF3klXp0H3mngbfPGeU8KbbJGheZZG0JfZM0JrbOGhaZZN4TusYpCq6yW0FFgVYSaPOpTN9qyDRyyUDVt4mQuG0HHqkq6Q5iiu59zm/eBQqYkFKp2W5P4zX2cSAU1WRWhKVZLaJUnfHKPd4M3zRvmrfPmhNjPSqcDFDFwbshC9TmmqUu8fMqXzUrQEaqvh7AvbgjNs0aFNllPCo2ztoWu84SbdV6Jd5G3y1viTQjtscpCEcsPjFZTrF73fkD50QpN0yh+4aMnp1K0Iq/mrqf8CMFWA8yzFpo53FqFZ4sWCW0r2mrqI4wIfDHeEoaaIWVlRkhpu6XssSqsDAveX19V8wBfGRi8R3FcwXa9NzR4r+QPOmBw8NZ/UTta+9jTKVJhC3EBp3NQqemn7AOIRJvwCHxcou158payIKmT/SJCXO+qu9cBjiMGd4H3K76ndDVB2f/R5Ds07Vx0FyGesE4nuU93c8yYH+TQSqshKHNozrWXMNBfzOJpGj/WKxCpiW7joX1yYb/8TYRwrTqgKec4wrlgusVC61UfS1h3qN4jH8jmMVBcyWucG8k0c0u4m1aIG55FP/qLWTxN1nYJyp+UZfUhes7SdNMEfkvbXQQGvwXhGVUn1g5a5eS5XdTaQKRrmcoEFqhXhXDPSgMsfC5VTE3rtyBco1ISzpG6b5E5a9NN8H12bbuDt18izdtuBYUyVx/iSX83kzJ3H2KxQTECPKFJmbOP1ISPXEdo/AgP6+GFsCV5lBvHjTC7fTcRGNnbVipuYXcOuO2SaAM5DnSDz/EDpcIWiavuDthXDM4NTW8mPqtbS5PvkM8cQ7tR7nNMB2+MFd8rPMA0Xf0SxC6BbLT2strR68X1XMavmqqYwPh4IVe1m4vPetUbMDjSdCJrFJNmmlRK/9q52Rs55C62m4tEutE16qiK+4v9Vb+XelBKpJgGjit3FQ6pA8Ihr8NSplkWYAN/j54j6Bp1UaGNL603SHLALSGOBCHEYqGVHH0J96gm5dO8o5pm639JQMtcZQDAbngGITRh+csSlxKB8WGWXQm58TSpvKk/G7MVm9Dbuj71pgL815AsS1Bh9Sw4/m2wZwKYeNusoANBALsVF09ahhHkGCKMWZjn+Au65D0vZN8ci2xFfch96vWFSAvyGE1ehwdJJvh16spy0OzVxA2bfAOAcEo+Y1mwpDpvH2L+wbCzAIeh4hvM9WRO4amrQqwEII46t3goX/OZm4KC7SsWG0TXxwTZynVlfp4DxfPTg1kAqJjfKyC0uvn2HVVFn8DMoGKAwKqBrE7MnyfanicsAm1UiAyVV21OQYoFK064tORGMk/mbEsk2hjAjSUu9TBOmGJVnQQ+hhic98ye3lUkXMrZjrkAfbLRnaz1YoZWUZ8HCr1pM6FZ4jRHLsGCJJSTOzWB8q2Pe6lEGyjr4gM0EVSs2LNdlGMUp87/3a1hh/Ucz0Xd+KTUNJ+/DfEwufMFB6uYuX5ebRRPeBjglX3bEG13QHkM7TwOh9M/IHXCfosViw0igIczz/ENieUNIDcVg7Nx1OsN1O+bd4+Nl8IKGBhiAluzXtw6+pPDXJZNpk35EbN7nt40ifdZHnNJhCeE6q4kVoWybk0aftsdkAEvoXrD/Oeiu8Dx1jHgNOTsd6aKfw5b32mZZsHRFNGdleD76NpzFoJzljow1h5YvUcecmUi2YTluwSBkvEY4hbGj7IPIJbXnilvXWA4BpFKPwt3r4sGrU0rC5XwUjgw6oWo3gPEEk4Bmbe+7Q7AB1Hnh9Z1BEHaY8GGT7f75WG+Xb6ChlpIwUC/tQn8cikRmB+IVByiyD+/0ul3YiXCd2fmA94+kJo6huheRwrU5CcwhGBPlsegJzJg9IxErMAT8vlJ40Y2csic7DcXidP4jJt8B7ppLaQpvN6cUzGxW6VHzOdKfJtAQmsf2/dSL1KTvnyuv4QTs0NDXoyYXfRgHW5rH6+BpHVOg79pYXugnOO5SCs+BnBCjyEwu0VBAPZTEXvCOugxdUIUbQgAdQIqhgJUE11h5wpz93EEZoO7gIozirD762brH5EKYP2cbFpntVlPxzognrAKKhbH3PCtXMcKkrSjzoqfQn/MDg954TG7qMI1B9as7zlLGJDbrgpuWkCZtx5Bu3FBAAyHEWZ3bOoIDKgYZk7/gNT08qoQz3aJhFvydczcYhlNtdlcagNrAOLll5hTeOuqEDN0IQhhN8kxrCvz1VkhVqWhZoPFlbIMcwJXx4Mk1T7h1c0QOimJ7pgdI+SFxuwifrzbtJWNJQ3/fGTSL/Q2iAtDDOfKXecfPG/9/IMBT2giVjAAgy2k9HfQ7pc3G5cSt2aC2eMS+egK30uwwEZkpmkaS+at12JYpvm82pGkDv93R7neVRlgcbVvsULcGnBD4CQzt8FMY3+hBQWxd/mz5ATWIUESyvmuqjtmxwp5YTG7iJ8dRaINBRjwkADsqfVy+gdMtDkGjFSQJ+8CBTjDVjJNOvjyFnYjZ8kdqJlIWybPKrpvMm99z1nCwDwGtl6j7EcUiw1iMG/9YoMMJ2gmukmmm+GN96WjZ897AaeWAThYVlPrjG2K7nWE5XU34iC5NuVHbIKgEAy5dK9DBOqN2ekJeVVvGBXgHLYe4oAcIcjJvifwTP5NiwP+CcC5Pqs981lwzOMI98Dngm33SNYNhGcUQO5zdbrAUxUMbkoyWii7qUi0wR7oxFaGRBuNnrPofSAW7HW4R6EmBSrE8iaDc9j2oDozc9m7XeDMdUxAMQ0YWB8fujw4QDiXmKEL8lzG4FxIl/442jM2wT+/YrAtt4SP4t5SYZO5RiQZCrjxnrPojdnpCnmdJ/KHGrkkHC7+wNyAXIAcDA9qKm0tJxhJHjZzS7jbqhfLmwwuuguZVENnf8qyWVcTbRcpAJAwMhovXOJSWpeEFP+A3etIyWboQiK9nlnxHObUJL8wzGH+OU0WzBoF11cpy0HPqCrEDK0YAFEZmkOOZtm3b29OphOZgGIaNm4qzi8o6zkLdSB1Qs+/UM0JZE1h7EvPQWNWFmDVGvmxyHwiZqfQG7NjTgNHETADdT2CoOxKARF6URgdO8MBnlCcmhXVE7/XT2EWAID3Xgkd9Wo3xopvi/JPgOGVELfQsTbNu7LJRH+NZmg5isnE9GyjHlngxoQuptECaZqYrVqggEMLcWsm+mJ2UQ3MKXzsv/ZFhEjYAz3GZ8QX+39WR1C2cZ3JwrypWGwQnq0l3mWW8VHMgsFJGWst5q0H9zi+u9nWgroKgPlC+9eLiw+gyzeFl9fhhbAlulxyLZnhYk4BrvR8PXKlZyYw8QuKZ4IV05Bx0V0SbbDFgcfS7pc3G9ocCBPEAh/rIlSLhHOAlyB9ff/8Gn7MTl/IKxbldS6OgwXLrtyVWtlzLPjE+eOnQT6Ljptg6zD0s9ZAcWoIyAm4NVjDGH7MDoS8YlvAMlpMWsPFByAP1NrZJ1Gxr5bHoveBdENcavWXpiS4tgn89ZsQ1LhhTWtJaUkz6o3ZMUNesSrMW4++KNNxtBuD6Fmm5KOY07k2BQG3HcVi7x2dxNDCUjCHuVUYgJz6dCNfYChSLsBSXvI0CiEuAcL+JCQGru3TfYDemB0z5BWrwjFIvifq8lbFomcJzywwR0qIwPxgr02ze5nKDAczh9ZqQtAxMJDQt9MrQK6jpztmxwp5xarwuCAPGXN58B7ZbOnk9cjVqrN5Hl6IlbBrDpBraqc7+Y3rzPAwywJk90ZidmmBP8sjmaZJX3OA6A0jZscIecWmUOjZ+P5j/XcXaym2+Hu0I1SKL95Thbv4RXHG+4ISiVKs8X7vFGkcbOw4OBr9Pj4VbXhcVO8CRHkhaQWI3qqyuJUapYzb+wygVE1xK4EgpYJB0pghE0q1K24lJ5JSAacCQlZioWoFhGZKPXpxK40TlFpXGrP3QEauq9S1DTsHG2UONougGyqD1l6lMvC3NCtVb4ODcQn5BZKUCjgbsgYrD1HqlzHu1ChlcDAuIb9cSEpleTZmLKtUT+NOM6US0vB+JJRqZhY95gsmX4zZ15uZxp1golKHGF8OUaq+CCI3Qan2Roz2Sr0GA09PpXY2vuxcRI2X/MFK1RiuFitrlOplGnlbWfU2vvQuolaZ17UnQxHjNbBoX2fo6aVUdrA0uB+7FlmdiH7K/dessoMMVZOV+6s5VT/T0NNZqXWNLusq1dksmiw7UM2psp0MVJuVm6g51aGmwbdKcmeje+/KImwsMqdqJkPxxRjRXTZTc6peptGnntzY6N66vijLlJpT7VxiiFqtLNlZzQkyniKAL/tLA/uxfxG3GOlQpVTvZlIanHYrpWzWWyntpxEA/ZRqX9LdqNK9pL0q4ubB+62slGrfoaM0LD+SmnXs0F4ptXI/MyKwBcguI7tvgaJvxQ+xgzvs31EaEuu4f4eDFbFmZqRgKyvlc5EG9eNiqih8BZeevZQBsl49zYiBzmpO1UEa0o8Oak7V2SwCrTHcspO8zoUZJ3Rt8y6//U4ymRlJ2KOrObVvDec3Uvt+ziL04redT9KrZr/CyY73/PBOUn+ha3qdRM9zbCTwq9RGHaXB/Oi4kSK/y/Bb1KIu8GFD/TJNlOp9iJHcKeUhvZVas59p/NkmWg8dmBNWKqUO3lUawx1Syl0PVkpVTmhGALSIqBuyMkVi0sKy/mAqZaG7QTMqwaHXspFDesM4McMhBLOzN1iBHTWH7NrRwNmuh9SAPWrmzqYZKXwl2vWhxKJGGUar0b6LFL6KI5xosqHekN6FDI9nV7He0w6NGBK5ImEKd4cWTbjgoc38wf6gwsIuNtu3/Vap9Wp26IIwEBJZfOVvJBRtlIo+xCmaIkodYaheqBDVQxzjRKHqmCeiYig0iZbC0UmE0MaTRNQaJToG9/gIRScfIc6cGo92iZ709SLRbhg6w5zx5NSTkfcC71EcDkFnqDO22SqA96ehHG7qgSYJhThvJI2wdBLdM9+UmxQQjDfzFOSe6WaPzebGNFWenOJ3G242qDK/54ep4qPxKSqabcpTo2XvBd5H2y0YbZbK3otSvq8YbbxPx1v/WcKERR9LKiwVFn2MUKNNNEVsIUCRaDcs3RwWndMnJBUWnavReHvak8Hn4DbeRFNB04D7e31PBk0DTlRJkQQj7v01ngxJZzmtcrhz91LYaXd6N9DeF8dDnTEXhr6d4aUUexvNqSjUuXsi/LRLROtLTHmjSfRkiHO3MMPQQUQtajaJSJihzd18hqEjqPEw55vvOJuh6SBKmSHOmAhH3Sxy+npKA2TRlC8vG9H8hUXtKjM9K0Nkz1PZrnO040vk87XffspQ2X79ohxfIp2vvmD4dipsVGOAbKODFbGbRTe+RDZfe1YqpTbaRBom24QcpsqeUY0vkczXa7dXqn12sJH6k56l3JUcqWtHOb5kAUQq7KdUpdF6Zwpkx0ql9otufHnZU0Yo+IOVOlgarncJqLs8WKleReGkSmejZoFM3A2ps2GzCQv2H087oVK94fdG69veSk1YpOUD9Novy3NvZeAsNegPVgbO1mxfWXOSaxdQapQ6RPswYP8OUaqmyPrrrutr1lTRP6ts9xoKIkotq30Ysn/LKlVELdnppYBlqrQ/eN2aDlE4u9jOlVmWqYHMRv0KHAsq1cGo0UGpBYsi2ilip7hY0ElG9azjIRsVzHez4sMrlTBqJJT68EUPh5Llie3Bu2xSG9UzkD0LdviCexa0n0jD1hCKoh/UKKV6dyB7ooFGvfs8z9OvIFGpehs3eqvKouiNIrpYiayNGpp2g2WVUicpQKys2hs32quVi5j0lt5KtU+ADM9o4jc1ak7VKwrFUKVUZU6SrI02muyllKqJOtFZzalqyN7o479N1lSqV5SJa7encp6ikf8S2r+TRJfYT6mdYfuLSn6r5lT9okksoNTBWPOLSt7heXpGj+gHrzsRxfxXo9TNokdspNSusjaaaXJZpTpHi6hXaiNZG91kE6VmjhZxsFKJKCe18mCl+kWHGAoeMdrJrkptFB2iUqkcx6gntXIjpV5DNIhrK1UJml7088ftokEMVapZFJRaqVRlNIgapTpqREU3r10w6S4pQ0rIMB1KdFSIzIPrTEJleaAPKVpTchyllPpqpqhDqWVlbTSUQ5Q6SYFElvgwHCVuLsT1HE4+Fcq/yMw2BW1WSC+ucvxOXM/i9ma0kF8pS3PIX5nK5ZuuEEdfOKwTF+qeSJL7Za4mw3N6QYDvY2tSNI/lnZoKNyCziw4UE0m8ZtaXsq91A01L0UY/pTpER+moVE1BRAbQzyAos4X8zBIDEfOnSQBitigzShZrC2EFCsyPgoDMSfgNBWWL+VeWhpV6pTaJilIre6vKAoj00aoQ1b3nk3KFt95VWAF9s0hI20ES2Apu9goxeGFJmHgosR4uNHbnUfNLD5ORS7hmLQDIo6VVFwmXyJeSsp8XzYYh+vhWlUaVQ5U6Z5SUU6j2BQIdnsZu5dxwiuwbtVcT1W0kDTWczaxT9FwO8O4ktJk0cQy8dYnBfljWAprQPKA2vBlAGQr4nkT1yWEFHG01ccNbyqYMWCdFIf5gpTpGSalUaxY45OT3LWyR6bGw5ttIX5EC80Te2SigkCPswnBD3UvuW4zo20kTR7sqlgBJjI2uyIdctD7hXZUurJ9WhciajSBxgVhQBtUtdarBJbPE5QlUWKaookYpWRsdZWelJitwXGKgWEkiKry8RM/lmFy2q/Cu7wxCoQsxkEcYqGl1tQEH1FiHTC4Ktcv3+VfVC1vQlw/5xjek9GP8cPUiYQ8+spSMrz/Y9DSL25s/hlczETh5FvlhhLie0yTbBJRkJvHuJr/91iLhcPnjJf0LaoHzDsK+t3pxJbeWtST1C6DrfZ9v6eYicZovtpYEdTD4N/CSHUaId6nFc/Ji433a2YVIC9IEF1FspHoXfbCfT6We5IV8z2aoxZ7fwyw8qyxGi4spNWEBA7jTDTHuy9pAjMDpLuWKoroNipSL1rfdA2cmMpH4pit6LqcP6aNZIYg5RZphyBkyqgpoGVoXZhYZb5Pa/YJgqwlgff5WCchYAiMzBwQ1pVeDv2BGScg0HCiIOaVlg1K/QPOOcnJ3VQEtXfO5JcFu+dtFSho+zgBYU+lap5dFE5WqfVGHlNllf/6LkCSC3s8sJd2+aLNlynDOVgEnxWx0NsO7VHSqAX4CzB/eRBDUvb6kzjjdymYSIjFc0ipG15MJJ+P1/3voXODIaFNrJ7ijIf1C7CYl2ZBcpEJ8XlmL7e53110ZcQ15vrTmYkrg6o6rC9K+v98by01drEIgdC9xtiUSbik3kJu6WUmR0IQZbIYOG8ov5hPJibs8288m+twjaNKiT5aWnUoeaqBIVHtXPm6Jh7RCjACIAwLCcj03L5EQaZ6fRW56TNgjzqpDiFXmk+tlsYGIjoYQTq03IKISw/MAMcEHletlklUI12oRGnJTRzVBWZ9MLWtJBESMZxUJQGyxNpLFGkKIpQoE5xeuWRHWFhEAlO9kNJ7BANRWXBiAtdIsqQzlo+sfJrjeJGmZbQdJPawt7Fanl7VarxRD86bkfnS4hWZRHa0QdmVBocmwmvCiUnYnJ8hK8BdMDNDKDcrbdkP4C5aS8njWBvBhSXd2KcDpSAHir0CMyAOedA9YJ4sF55uMkNDxvJxwqpAkAl+Jn1+Qtke3L9hB8BU7A2ndhOvc+1DNAgB/UVcq+oa2v8QbI2mqBQCBdEtl306RClbog3DSnNzOC0hZy0CkufglS5S1xUESRkqW0gH0eHBAgjETbHzQ5YUD0ketlaPJyJwe5pNf8N5lLWzihIlhxYDyU0VblPKQMhTJ0ZaYmECN7GcT7y4PWF9Sp8WLRmLIxdshSQSTu+sSYn0EKEtedqAYIamuBLBF68VEDN50Rdtss4HVbfKEWjD5FwZ2S6m0E8MpRtfbDbpGKJ+wjRf7jkX1xwVeDsvrmzmrhI2CjGQpoXT/TcqSZUjomM0lSGuFujGWEQdJqpTkiTsMLr2QuLCkC/eihE87PWTwwjgjKNbH2Fc86/RQ8gZi/luSOnjveQfVxZXLiHcXkeHlRVJTKQ2TO9siQw2kfSHnDw0QEu8k1mewopg4FJDelH7ul1KyBEhgAB1iJItndeEQrtko1k5kGQzUYC8D1RGXwWTokqVTsWHcDWRQWc14Xt+m7UigFkvqO7+grOdyOvDxoiMucjYacrvM2QBw8IHGmSfCkFICBw1A+qGDF9bH+nqYDbhxuvggFp130GWdLcICdaFrSTzCp4eDGCzejoEEWVsenmTEg6uizwEtxSC1bHGl72ondANPNcAhya7a0zssy/zZppTukj/ATrteCFug03PQ3iSa0HAar2ZYBzJQ/K8ia0RPOjWUEQRwkX8LIuG0/EUWhSeA3PStby2ELag3WSpKTo+f3lW1PmH3/MfLIo4Cfre+CzHuJo/32sh4ldXvlLciPT8sQwWz4+YTaJGxCshs6zRuLwtHV8CTUNGMUzICQTfgHDUKEcVYVgmb6PGmE0vpAgmvDM6gicFINWAQMuukbcLt41K6F99EQAMqZhInonS4V5Ow/yuEEAL0a5AyLpaZDpBPeQYB7IBZJCAdHExEFnUU3Lw+qZmOvD5NiMiQtpZksagQE9EcYWBiuIS2omi7h8S4FbIBfbHejYklckIsg+b1zXCo1nwZG0uFRXgbM2mnGSBPN6jzc7KICh1P/3DihGyiN1nBQ95V7DYjurufv/gZYOAEbf2uWSU1qaMDEnA54PFAcgAGK9UAZ+G1xWQSbg+ncLUptMwF2c+L2lUcBBB9MjXvJF+sGZjVlpMCFSX+4mcAEcD49cUEHxQUh0CKPME/Kks+Rhq7FsOBaQoPttZ6geQib6PArteQ/2da0BfbibVeg/KNfYbLcD7NJOanwmfkqXoplBUJ8U5iSkDfhTBmokcmfTvhXcjR6HoNH68KMSV+k/qey+UJzJtQznpimceIF5X0GCryAjth0LlnADGsO0agLeGSyhjyHmGXxHCN0fXVbXSxBpUc4OWFwUo1YDG6XpvYBtuDgG6icSVJNK4hPi2S0FArc3KR7itJGhuhqeiuFbrthrCMsDiAFcHJ3p38likBR1+Y/MRQAQO31zm3BIPg6jPpWYd72YHk2Q3bTSRgfvV8vUivi9ZAjvv5XoFwz0rawvFeG4irvADw4FLuG8YDMdbhBlaWpNjyDuAplfVAeQrzgcKENowb3hLWSds9IkISvvUNp2dGsF9ZyloG4kqvCGcNMKghfYMROiAqRkhwir0CBFaqAYu+nXouJ8G2hARQP7i11A2llPBEILTdEDtX7mCryVpoOSKKWcYZDhXvTpKSjpBIgTTg/JPRolb6cXUF11eZ3F/i/xYisZJkUStfQIisWSV2t2AkT4kzkGdBrA84XGLNivT61iZpoiUB8FcmCGRa+id6FjLaYOYwu6RQOcxrSTwlC15fZdO/voLMowAh1V7JJIcZzJzkKbVkQPNt3hgOaKYPC8+qQyk7Lob4iaYGdfLdydoI8tNEUpLGT3Uesby+H+ZqPz/ewIBngxNBZMzDBIyVKN0I7FQDHLm2GCHBtqQ2iK33w1ztLdVTPOv06LlCrN+zlWfgTsUtNC6NlHFfDbj4nRjobYIaMGKQ2dbVBDaUcJp8KYmB3IVAG+oZ5dp4szrCQG2sK48GS1HttRhItEs/KjWzawfTtzbNYZWx/ku+mL26oGyC1wda9h1Ww5Ls8xhsotpueUZZGw6IrY9QnRleIYiRMVVEubuWDGqoU4baDWzyjLbQgQMZ6lB2frEUGyx+ImdCYIbfWIDNvgvNf0uaEi+5HaNeEKMYvDB6zpDV6UjEBAsITqpBnSO0KgNHrSy5678KXg+5XyZbBWmVjKdlOakQztVQLnDSx5OUJjJEHYEPfsGNN4Uh+ktoUNkBRMZsCKCgdop6kXh6v4qUzApY9S3ZYAuReAw6bUCul4W2NckMuLGszWtqJbjWQeIxHkErWp7T5nQ/v0jYnf2aSZ1EaHdDmY1xN+JPxUoYiFu9MMKOAjEyEZf/gM1FxWQSboAIb8KWmBGYGdzBy0sXcl9yVmc4nuJmAdCBRpba7hKxIMCXcUoFHgrxMFCE7te5YGVRUprCeIUMqBMvqI4KCDOpEy8Jo0L0iarVp7gWrydmXSKVhtZJJJfXJzXTkdenCSGBBhygan0K2ZeE8KDdSvRcDuVNV0DPdmHIjsgGM9WABdicLTGc5lbayAju1gNx9m4pO0lJNLI3KN2IGTpqGX7HULx+WQS3XkMeIbWSy2Q+xnoNZGzkWk2G8UkuSoRiQyUKelBOBkzHldCVIzBTDWoZaJs/WEhN26aZjb7i2oq6mEnMf0uqjIybfE8aSCJFba2RpLa2NjpK+BfVJs40YU8QZBqFweLtSOIqazfiV7uD9ZWIBnLjkvsWDqlUWivxkZOK6jYwq0D3A7Hp26k6K6J+MlnLQMov8dr0MoiI2pSUEXug0eCBYCIF+W7fxN81Y3E7Yb1YCry+SjbALyIEGUdLRv6mHA0yjZG7Pds7uYZALhpGgqwvKmuxTP2liKcjA9qzOcgEgaRzTfBBQQoyBiPVgAm4iFRiOAVdivW0TGpdjK4Xq9wAXAIGEL++OOB7IWXEcpg/qARXZRshYwWoJRdHxMzufOScuEsE5C4EYKyLwco1QNcSmzM8+sJ0LLDPv0jWLCIJCX3ssDFYqQZsRtdrk4cI5+tFRTU8tjUZTJCsiD5Zkl4bqSc6DHJAelHx7mCvGLm2W+wAtVKe7feF10O+gR+dpKDSYH3GJ50RwxYJeTHmWuIBJ0a95I7gxjO89a1FwuE8NbU+W27qYr8IkTETBiPVgAm9JIkCyhbvsvdO5MK6TGrBCxoIW+CcQX8j6+OwzIlzz4Zec4BKmogdoLZWIjb5xW2Y95BAB0tUbZ5kM9SGnc2ACtWXMaBLGkO2lGGICsUXVoGXoZZmsItfGwOADkdXeFfZbBfIXFXK2u7yvqbT3XUsnsSwNfM1wKVYSlZdTfxg08e+sfgm6BVhYt2olZN7KO6pXiROQy6AHPMGesPaWCoKwGk+vv+M7z/j+4/1X1GOsX9/xopb8QYrZdxQaubiVvxOSi0oDdoxX1CpBYpbCSYq5Q82avRSqr64lcZwU6rSqFGp1GTFrZgzk7/R17i9BTXFrnRWKstySXfjRfeSUyjVufgV0xdszN7FJbmRUjczi2ExD1ZqZykN1vGWOyt1sFnkIQ2RMRqpkTt8EplwTaUODgYZqW+kTBys1JoTFnnIVEjWBANk15N50UrTM92DEbLb8jA7t1dK1SSkYbJEjVKqfWezCIQbIMsjuAGy/8vEPKXXWRG3sXNNBwNkNTu3V5rtd0qzSOSZXtbg2DPlHS9rdEwypjl0ZWWobOWhpllEYhocy0NyAUxjY0XpmOaCC7Q3SrRfYEHTLL6jIFkupM4GyHqamhXnYbRtfP+x/jOYRI0uR0KrQ9ZxpqT8cgV0bq2dk16UTHY6anW5GqnlG5HeNTjz7jO1VUu2+uzCIiRtZlDjulMHM5SQJ+xK6k8DdVL4Ud/kwFuQbH+tDIFVv6Nt5QCUxhpOWSVdi/ygttYX/PWsbPWknXQ1xkoAcppWDu9/eSHvnOv5/lFWziXTnVrAG73t9JaB+paUu8s5l8c+clpWA/tvdKf4karn50dZ8aNalxxYiNLpdrCX0nBS7i6+4eCNfTQ0rGgEyDlxi9IWi8BMGmvAELtKuyNcDhiJ9KsckBeuqlu4EpDmDRSAA5n3V8zuRE6/GsEIu6rQVrpxASjIvb9iN4IR7cqlTDWOoeCfBqdMyYfTrXJAVZUO09x8AXW2u+RWZTd1q2XxWKXKmy5IHSuy76/Y1bGsW72AkjJdA6oBzv4fQEF+JbygW9UUqhosAhZVoGb9N76kNIGfe3LMGiQ2CnJpzvWXAsZcKV8Xt8CxN6TxA3ysNrakEpzzhoFpzn7hOpom8H/PdrlXL/TIw0PWMMDq9OXPCHAdD8691/c8O97985xhnLvOg02QzcGajEHayy+75lEQgqx2yK2KR+CcW4C8dy2o3P0fyWlr6DmwBJLzSRttyscVHXDOLVACtzSF5D7Vuk2svbhmbfIdALOnvwZPkc9iDXbwrDQE2gPZ0CwFOB8bvN4KJl98JOcWSM/2dNt/uYYUnHML4Kej+kdFAM3TdW8P7CUbkXPO99m4qSP3OY/NOX+CNE/bb59C3oNzfjcDYHmKNyCjW9qePHk3zsdbR5eCyJ0bvDbnGaPBwWXozVL3yfmWueOl0CQvD9k0n5tz6/zs0pRRZj+enKdICykCCVO4+jWSc8/Zilswg++XpQLf7vUXRM7Kedp9DKC0nGoU587zKIIwAx+nhYGP3bgp4/KWDrxB9u/EpOywnCfb0eRPUNzC6RsdyvkqBZG9uAXSJIiYS1oK8DGtiiDmGsX5Kk0Zwzh3/HiYNI/b4Ovm++Tc9+IW5hqFEHpzR1sNMTi3AFqdj1xH88IPllJ9JOeNnP6To1C8UyfP0ZyXpzhlaV4dcRqNH5G+z5G8YZBLSheNbF7W5iN5udXzjTG47/qGFjUpUnL2Jj+BOQ+Htgrpw47bydaXpQD/gJ6V6/QV92SZ1d7/SM7LGwVlSaYDrIP2nsK9zTNzrYCakJO9hSQKzj+gZ5W6ph9Yt+NwguxOnKM559stGFCug88rW9QRoIZOkCprsx58PpvJjRGy2dKr3h3n/De0Sz6qjkPN4IuP5Pu8VUB/tNjl1/KNb+QQAuvPbAYnc7U1mnMLJK2J0EzhqW5lb4Cb88rkRJfkRwIM42M3LvNs8zk4TwpySNaEwMPqXmX1qDe5z2tJMAI0zTL3fo7k0Bppy5UXSHYdDZtzaEmRZwHC3PtlIaDjudlTKOxntR8n52Ce8fhpr8GhuS9+cMg8nNvuzjplWbhOGcU55w+sr7i+7erGkfJS5MhsuDkHNuZGwfeZ1IIDu5sBhQBlS3PuOTvGFI794rSlruNGprnE1HzL3SnSjwff4Z4If6x7f3JojrvDWjvV6+YcUcI+1BToBzleW7LmOTAYzcD0beccdBOZhdmGeHP/lSnud7w+ObCkaIvc7mnpwxoZE072lH6oJ2ELJNvqXcx3n7rL3oU4rbXTckwrat6JW5WzAoe8sQZ1k7MOnL6WBpyfwLlwSCZpMhsRQglLUco0AsL22RjCeUPnTKVntLJ57g7UWyDZTDyentHKyjmHnHhWzpMt+yYzvgmyD8nYBudpswwZkhN36Bgaad7vgVIIsu93XcV9hpGcW5U+7pBntLFZCpAaAVgAkyD4hVzKQxw8NRefPvDYmkhPcWtTzvmdCgEed2re8o4IZVrVt1zx8YccM4WUQ8/oPB6cr0ML1PweISlgJF1rL0N35U/gUPZAGuJEreK80ns1HYcagn6Ys78Nzls6peR6wsl9+nfuKdOyAW/o9fGHBJzRZkCC76CJ3HcVaSJ0gT6Ky3nIFK9MO3YvsQig8nakiC5e3Ti33ZKyL95I+eNezd5WD847RcaElz2lF+JXiG1edoxxgwpvcsv203oRzi2Ak4Dx3Uje61HAU8evz/lnrIMntG0eZyRCfivOHxgIa+67CxDm2E/Ok+I4CyTZ+llMhugvPpLChF2nZGeH8wK58GJCw/pHGqC3qbO4p08+jM6Mueix+diTU/3QjNEHwEJRmg7L+Qmbfsqcx5PzpPg8D0L25+cc4DkCVk8jPXYDQrbtQlf3ncBhog7c3W/Gm2df7xpXp3twZaAe2Yeaxt+ec1AfprnNQZxz3iApzSkruISqDGQ3oxmceFaqhGVZ/RypiYJdX9fVYRf2wWE1DeOkiJT35aeto+srIibM7Cm9bNONWwDTRc7rKe7zrK1QKHzBjTobZx/vmLz5Haknj6X52I3B5FaK9BvR/aFBjeeNnP9/ByKMu68D8omgu1ma6g+Zpuv1ILCGwEnBRwg664D0xPQWN/BxWgj4FnVIGVaBTPvbmxrn+K2J5yE0flwkDiC59xggreHkQCAcyPmd6CgTUDf7qbQRM3VUrrI7AelgPgWcNViaPBxWjzoONYB45H2+AJKa1GhXDq3cZuIXmkwPn4gaqyNNxMw4npyvAiZIpt0NO/aQLXenaoU/XhekvgpZyOvsU/erypeX6wZiCyJ0jeD3y7cKqSIWtnogKW8JM3tKL8M4zzi7aZpmYU9SsHPlR6LTKLbtgtWo++zAaXwiSojjePyGVpcZNWEN/bPJNwA6gB/ctgthn3sCTLUkommqKyJHYYpX/81YCnBoqdIWZmOBz711F/cUybgb4F7FhMyD4Dq7CexeSaAFcQcKeH8N/mMMQGjteI1rWcqxg2niDfE2nH9h6lA8sAnY6lgm5UFJvZ8+dbfkjDGtUD+p41ADtoEfaBSlAW16CvBnxkGaAZii3Oo8FMH3ZzcSRpm3EceJxplsTog8k30s+rCO3bhwpSoej8erwP3A7fLek0GxBRBmjeRL6aBU6hfEw1dPJFXlKeFmT+nnEyEUyus1rpZel4WAc+doq2O1mDrKEMrcPMfx/ubsb4Ocspj5vjw5749IfwOaj0B6V6QfRGvS5OJHofEDsjmOCfrkfIeNmYxppbe4tE2RUyKLwsY2EoHyunvRTmCuUYUCJ/CMUmea7Ad6HQGKY6aQcchUS8KO2nW1tB8AMt4vWxr3ZiEEP4UTNZmda+g41IQ0gc04z7gOk2UhjCwOG9uVObHDoVDNgDqsjbR4Mg2B9g4PQnveLxwqcfE09tsijNNgHdbClqq4jy/xMKHp8fi+4gVC6vFQqL2ZyFzC9GR5pruqIFIFqyH+fNYGwjeIul9VHpcmuwwrA6mQqvj7SsMQYoKcZVgZqnSqDOCo0Ko8Lwk3e0o/qxTaDNobW6txIzo4y7AxrUB16s4xm2uUlvdMuNhuOjTtxT4KLxxgt7fJycQiixPqLi4ROvqVJZcNO6LhIvn7pjmCPYA5gXWmySD36ZnVrOQNITgxAuZJZ38bdK4xdnAcxw9KawjdVf39nwipclibLIDto8vz5VC46upGZngxGM0AGqMSfqV7/5gjObFIiriPRoUQwhYlJBoWVBnzDX3ZU1RMmORgNUiE+WdzjeLQ7CfvSZ0invZAGu1enGecB30qbff69aRUzcPHbhyoM7k5L7d6DgqbIB/uypxvkq4SNG7awCZEx9wor5iHxdiN4cmtgwN1eb/sem7G+Z1Y9NcNlpVR/ka+g8IIRnEx8EygpEg2w4bVKXXDQEA159N5kFbZFLhWNDumYWC6ercw2McOi+uYE0WiG1vUMRjTSi/0/CJZGW1Djahw1iHsxkHd8filw6IKFDHf0Jk9xUrbepaQvOojlBeZ8aJn7se0ohQ8XhdWShWFV2wzzsGI6lTTc8ocow9o6qDzSk6LuVDcwv406PeD6P6UuZ/XshRYBRV9G877s9FXXCoe2SBpxcfff0Jtd+GK+/Ug0W6noqfQDKtjlfK4U5P734b8Mj2fHgxkx/AUo96+pFCmybRDqBvtF5Em/rEAD51cdwPcWNQbOO8Pv7du+psMu/Mjc24BtBnvFwgKAZrmsKKHqrhmFFU6IgdVSFiBVoHIoUG0sZQWBOAMJgQtC7Mi9JQaJXMKPQ+KwJCpaQrCSqsu8g00e0pXZsv/ut/V0qtaCDjJaSjz8SZJahmzDBkS8OSpyVO8YXcy7+ZLbvLv38c7JhVQ26Yb1xRQoQPXebBTqug+lH3l876xFOi7gRWqLU93Xk9xWzVLAZKV2zRizs352JPTEwZMwt5NQVVwf5p7BZyVVYxh+tBRXDoc+V2AycvClqmuSFJ0mJXyjrUAr6ZiizqK/kjlkmO6whx0tANBz+5XQMIa1K7Lz8q3Og+rFnRAHdZtu2CAHEMqsFzEQccPGNqwsAKlooqWQ1MVxwVjKgoWaFmq2BWBa4JCIPH47UFdMqhiyIyHwjJpVYh0TWfIJ8LJnjorB/lnsAe4bRf2bqqtUgo5fzB6kMxOqaLIujri4lJXA20/9GYp+9KyRZoq8I7GmFbwvGzoB0wKQ/s8n4g+1+dLTvTdmbobHQPZtgvKz7cncvI/7tQE4j9eYhGM62rTCXrAi4u67y13pz1Roco9cCRFZ6olIaD2L6PV7J1MCDlw6HEaDuZY6CepMa10HGr6OH1B0NJJyiPdOLGoOxO6WFvm3i84c40iuUWQA4uyjSBoBpm1gJgpUzHHIl7FkPYCIbUsXDYMYYVkDw4IxKto16fJ+RQDqy8Xp310379/ayGu53DUlAG35UE9jBCpiS7DoO14VYHayIZ1DSE+i0cx5A7KfDwXm61sIWwBTsNshXgVqJbn9OI6jBC2xCxBqClORNgd/ZoIZEx8fiGqL4eWoYpVLUS3FTBTKOTaLn8IJ3tqiamR/LPGD31NvHISNvA82Ry21NQBS4KTZ/a3oZ0D7JQqyGUG06OfaX975IQZ06ppxPzilgKcrwNrj69DMbz8Ws67UxcKQNL2JtGX14cJQzQ9BaeS2qgUWfrZpTxwfehBV3FBrfx+kC/VrVBlGOcnNBmpjdApjslsT77VsWgqPx2ibHM8h6d12nFyDR2HmqbxYyUdQR2c23D+fnLWXQNR/zKmPsy9OH8ZenbEgula/94AMq97csiRGrx2EUaG7YGC2AQ5K+JVOLf9dgWwrMlxvcRDsdKaC2Bg8B3/ftKqC2DV/pXiVQUIp0eFIHa659TKHoR5BgHMCugbGMerJUMlZE68vbMuKClTXTesatHw8XQaBXXn1030Z08xV5Bfl/PN2cBZwTGtgDfOvMrb4Nt2AUOdjPOgUqrY9DcBZ+V8HWzMuc89NZW0XprDDpx3f/agr4z8EHPw5heE7s9xt9UJnv4kSf+s9RpJ0RdBTmrKae7jH5lw95sBBwNnDA75oHXw2uTJ3TjfYgA1FsTRU1xQ2tMCPt6jcc7HFZ5sQw9wGz/A3c+RHPFVt+FjU3LxzU0avgO9qMUCdUNwFM6+CKHxI64EIhc6DjXiCJ8BCoVTLa5ZzgijzfbXIA0GifuymwF33b2OOnikO7sXPTUTwvW0nPP+RRXCCuQVDLnHvTi7inTNmrdCEcJhHNQdD6Y62IQV0DcpFK4Xdx3CFvxzzR3PCctgFdXBuYEyK5BHMMeD6Fysfyi8quAgbEF+SXMfTRvmupZoZLQp7Cad4/FgajqrSM0SWk5KLoRT+UeMH28HkbhPjSweQriFf/34e7GzCYFtoGXQUS1V8Xg8nwgve2o4SfSkeOjN+JhWTOhoL3nYlnc8UGv9VD4XI6UKYRzdqPnzD6EsbRucr9IUQjnDz1hHTYR+lI8L15GellbU0NmpOCST7CKc77Mxvg4XBHdw6NW09Dpc6EhADHf77T8NOXoNvS1iwi732MxFQ3LijqGruGflnN8V1NHQwVKg8ISaXE4zfvyr3ftjcL4WwkMfxHnzCyIkJXBuUwGLlcs/HdVNHDvpeckEcsukEnzQ3joONYDub24xAC7X45wnB97t9mnF745z3vIu6Rhc+pQhAWd2MyArlx/ISsrh411yJOf/fm+g40cZWXRRfTnSH/TRVZG4TwaaKnL/QzXfqw+i5ZpE8MewbWFL8E6Kx708SD8vDpyka0pBIjVF6+NqFUS8+PMt1CcwEylmTg5rSzbAwEqApyTFDMW0tRDuKfH4iNRtE7VVpIdLbgKoQtFTLVVVVflFGNlT9DIp5GTZ6jy6GAZmec6qiboHcN+9yOQZO6WKbtSUYoaNazoxXyuVH9b6f+a0OUeD4Zng+zwO4wUdWrv6NRJ73QoG6FVSxltHWn3SpQrUeRyOmG3VG9HTDpzzT4TBLi5Y3ozIyMExK+9feGLe+dj0QfoLz0oqCplUGNMKwXVWx+vkwFp+y6YJl8BCa+gluPgdazXKPNS4IzzS70FNTuz0ujli7410TuE0Iudb1OGY36OFgFP2750ROl3K0mZr7GtqPqZVEYVzCvCefQ/VvA/9P7UGE2lfFuj5fNYCiwXn1gcRmiF8RCT0kFGnyFgSckdjwwUFWFjiQj2Tye3cwnNTxUSr5fZirXjcx0M8TM4MoGK0bnRVS/4RTvbUXiwG7a2Ln29PzSWULc37k0m/yxAZD2yajJSqwgfa8VGzlc9OLovHj+VcHHI0KWv82FlNU8gtBVjXzTszdd08HCrr8Zxav/EDZkleHT4Q/dzSg9T3okhBdrJ1Hcn5ZVB0FbfMV/WLjSQyQv5KjstVdi8sgVeqow7KNt2QiZarc/6FTYRxpq9pSjVypbq16OPoaIvOFB3GufM8mIcax3wKTkJFVNoz6aA/wYo/f50Jae3qM4mCzDyzmkHu011NG1H00NSBfFEqfZSSsRdvfsEiimtC95ZZB5GBWE9tiAoIxaX5KJ3EPTyESGR48lrKsSA+D/bogAVh7GIF/LIFB1gC7V7Ekbrq1EIaGYF+hZyIeDxOZdvQwBqkqkUnzGrJZ8LInmJ/uthueiC33eo8WvxyHSJl2y7a1OIqzJQqPYzdOHJ9XVqaLXc3C1cr1HmrACBDUyGEIKPpnpTbIj7qmnrp+8sSkSRyDOb0MHurBYfqy0FuT7i0o5oQgkSDf/04m9uT3mIzUEk6YVZLfqM/eypvdpN7tbzj1z0VNnZjsGjh9ztQu0IGnlKlB3MvbSYxgoVqk1vURTxUxePHy0K3o0OZTQOkmMG0TLQPRgWqm3J0Z08x7nZWXXejvfPHmgfksWg/8F9MTi9mShUDqCDj7BEunv3s0fyOpnHmmpB5xfd7RGQDQG/8nBgBHBXIJ8r+FCd6hSb4+RYS18TTigvaxn2Lh4xDO5ofNANNaCL0b9zrLnphV0s+79abPZUneX2UAttdra/B+0PHnCbQDeSjMlKq2GzTDeYwAH1JkZITA+MjwsT/w2lz3D6FlIRtDTQPCdxT30PFHRg3qQ7OTd3kYd4ZhpeHQPgO7RTWwiBwHM+qQ1OBRVQKFuJVgsKO6CSuGQ/g/ODWkkEfNr62Vl1MPl89VUk9hV6waikY6MyeYq/XGNOKAZJ16zweMLwJMx/ASyDqSKliUPbPalkgofVK58pNu1uEyTbdOCeXSDbOgEy3eHx0PRrLIAinyNzAUZFxafy+hUMEqkAgnu8O8TiBhE88PIggoN9a0otnL4hXFRgO6ESKsq94mKfWuorir9UKRvh+j8hC+310JemGVS0F4G66sqfY63B7zWJS0PkMqZLP+83Vgbw12rMeyDlYC8lMqWIAEiTA60Nc7d7ha0dEmPx8DV/BLZBsUhc2DTQwUTiLVoXmpqqa4YhFf0SS9Esm6+IbgCThbFAHmcCI76ut7/r140fTsp/vENf0a6nQf12cJByfaO4ChFjxJ40fz00Lrhlx1il6ehfCgv21cRZV8dF0JemFWS0FAP3ZU40fYX8NTlkjLTOaNHQeArXabImpqWVn2rwiSHLQlVLFwNzpV+dI7lyE+v+DMtRk6h4oiDlMnjPOYDFnLLjeyzcxDvJ9oQjfsOkwLv2phMCWjuXktNUQ0NKVcyQK0EZ1pmuFIOYSmRsv2N3NrYO+bl4C2OccqBNWtRSIDV3ZU/R185IoqOvmsTB/1zNzKqVhL843x14BUWdKFQuzLMD6LEklQDrYGc3iH97qe3GgCfFZzjR3vIolLTSNXHPgzwzqhs6vbyapJuIP+UmfD4Ms9LeXqBcJe6BXkSz7h4v6aRUFh8v5Ub8XcimBuFYw6hIHCYen/0FzuEyq4vHl7Rj1Yqb/JuRjOt2wqkU/haBFCyncX+ciHodC2G5Y15WiUMXNqqpwxVWY/oL0Ohe6Cwb0QaHwFzBEQjGMMuiqFlp7sTfN0Ff2wq+1qQNUTxUukJZT0K4RyqwRHVWi/6KlzHpBxOisoypm7RdTk0+Xdy8C/28V41MHK2AQ2wYzYBAzR7NmzZqN7z/Wf9Z/BrtOLXTIlOkASLZ8QEr4P5AZwRXdKg9MqtIYcClICQvSmwTyGYHXWaloKT5npXIh5TdVoNvpYjVK2IEoSJcdaLhY+v9XqGpGsIBSOUndo6Osq5SZ3+wALyhR7BpAwQdhLyMvuxeAnYwgEKRUjqOMjuIxUZmWzXy3TjuQdLpYhRaBRqDLHWcYmZRZ7J4Dln1GsL9Su4ZBDoDBsTzE6By+ftNerZz/OKDmYiU+Ou2ftnYnhSfLrAa4zCAnklKBYP0YH8szjI/1l0wVtZ+Z/5YX/ihVbYuYveV6Hw5pNWFTLO2OKPBHZwa5CUrtHBVFBp2U8gcVAKIau0y6WGU5d8Cu3Q6fzhrusouk+8tNsmst8hmi9qq3XhyJhshYGNvD5zdWqp9ZAGx2CBiZcSqrsYiAn72lewpqB07KZkaAoVmfKfiDlTqn3n9GyNhjPiN7+GSWZbWmWSBs5wWwxeJW0lVVUgdjfK/gVt9+i7MOYOEd2fbXta1FtsILOz5j6KeUz0XWRj1N5gQpVWMWEMtBddWc71tnpu9B2nI+k7SmOkU0lF5KDTULig3mFlSm0PB970K+LqOF3KDPKGqUynaS0U/aK1Wg5uV3XFVN3bl0zvt2ticl245wOz7T1FlFQb/IDkr1MqND5gtWKuAso5t0L+mtVOOEKBETKtVeRj+/tjOjRdZLqQ4yqvkRDFKqd13UiGsr91+zerMymrnvFEplB5rRIwsmav/OKaOXXzdSqsaMJlk7pdp37B6t/LiYUgeb0SW7mVKVHWXU8hHWnDDKhFmpVPtEFPKflD5jNafKCTSjTfTU/kUhH0x2rFRKncSMQlmNmlN1kDK6uHfX9kq1zwE0o1LWTvvX/pDo4TdSJtZVSm3U04xSWb3SbNlNZDRwh5Sy485Ks5uZ0Su79ocH33RISGLdo3a3JXsO2UhpVtnPjGrZhDWK2PPUbHLOjiUyOmcdE7t2OFgRW7nejHpZ55o1FWVrto/CWW9FW+X+ZnTM+n349iraZ/udpKcZRbPO9Yf2qtlv5SicVXpDPny7of3MmDob33+s/8b3H+u/8f3H+u/lVsRpaLFumGov5isCSOsUEBG1jLUXY6XVDdus66bai/nqAbxRl/Wf9Z/1n/Wf9Z/1n/Wf9Z/1n/Wf9V8o6h/0Ihsuy0YsOjml8WqRfqQICEcthsuKUoxXi4yI+Cp//XdjxSctUjFeLTIy+vQbBSAZKPMWKmo/ZRJPY6DMV+jDRkoEAL/2/yXDZKVFL0aqRUZSfG3//6NBsqIY49Qix/cfI8A23bgFjr0ZMsa0ykOGce46j/H9x4JlCk/1w1+Zcwuk5MQ/P9dfAPPwsRsH6nxebgG0eg4Ka5zsOmfmvGGQe5XVAYGP00LA+0Pm4XyLOsBZeeUkhGy2T9UQg3P+G9olH5UulOs8drL1ZSnAP+CbqtMIvfmzaZrKlzlyXQwQH69hc05Z8++N4nNtxjnwnXd/EAfW0FsWXYQlpuZbnYdQtjTnFvjcm1KwVeN1M81TvW5Om+PuAyCuU0ZxzvkDa9LONZJDa6Ttd4v5YZvNOP8oLuchnuJp7BYCzhtkXwT2FTm3r3zeN5YCfTeg6UKvc8gb68Y52PhdeMs7En6+PTmlYKolSRdzrlGcN0iZ9LxDnKjJbJxXfnwI5zfOCnygV5J9v5vmYTnn/+t+Q97YY3CeFG2RWBpYpgG7hqcFuk714JyvQpF1daBkduvXwbnjbqsDSQTsIS/Zg3P+sQjDgNarcz6msd1A9/KwnJ+Q4m9c3QQaR/KkyI8ChugZr4vzz1gX28NUS/JkO3bD4h6QywwGrGBhoKcSj/R7aACR23YB0hp6TqEFf+A4fvAtdyd+uvkFTWC/1p6aVALV3zRnH++YvDlUYLZemo/dOIaG5p9ze8TSivYAZH8ejTiSSowz2fQ3AQdy/okoTc7jAShbmg9qPG+gn7n5OwZThktMTR6uCfz2nydn0KHkJvAT4cPvDbj8rHzbLljBPlZM0AM1fsBSF39lt0UgXhe40n1y7jvFJXvwcVS0FzzsJ7ou6TCSiPA6JmIhBD/Fa3r7XAMv1DDOf4UhlH2943j/WB/KAuz3/jFHcmIU8HeQSAcQiiSvwEfKOA/icLd7/Q+9GV+HaNzu9QOe3VX9/Z+Ic845wglNwDzs4XpsD0/+djmwykZBNtSwmGpJwFyjiNgDtds1gV9/a+1xNBnjraMLCXf83hzaE/yX3Wj6xyJx50fmvNxmvF+7v1LbHRYPvRkcUB/It3v9mp7NTXMv7QeXnxWoKbMfJ+f8y/T2JXWeTNuth3GxQ+s1Ls15inSQpqKHMjReG3x/dkN+4Seaakki7Lp87MmvC4WtMAff5wsAfThIYTaPGWKuUXRSimkeyAAqWIfiNpwAAr79h5H8FpP8YC+YFTOca7OHBBIkYQAUNPTjLDFEjD055Ei/B5sV5uDT/vaAd5h8GD0E1tyqg38AN6r9IO2CPTXfCpW6zk6l7n1HnMlcozBHPbz8Wp8ttmdjL87vZgDh1k/LOe/PoOyf5dw2+1E0jm87Bqe5OudU7/Edc05db2AYvers+FfiXCscjvnd9OAt7xLwEHPw5heM7eGSIzn/93sPeaCX4vxHGcnEvPOxOW+Q4lxIltAiTLUk7Vmvq7HVeQg/QdIRnI+d9LxkKW/LE7FpXcs5/ygfd4iL/SKc89PG9myY5mE5ZS+vsa+pNSUMzCd/Wg6spUu9G5bYrP2EWonBH5gqw2YcWkMvwcXvmI/dmIHZ+n/mtDlHGxDrg5nNy9r8ypw/wemOSsbRzS+IQzL2stpqRM55g0S75KNuQ0FkgcVm5AeUQPrKePORK+MN49x5HhSIPbuTZzKGRnLgl/jrY+tel3b8zJFcC2A6lNC/IMKlBWL5Lz5KSotSYC3YSlrQvyCSpUWLUsTy0UvSzTMqSotSL805OOdpdy9tgSmx74Nznjp6aYvSAKwl+bQBx9IWkSstSkt9ZdvJR1sKcF7+AR3ONfnoJVuUBiCSX8a3DCwsbRFF5SUCgqUtaCEB8M8UIdOiNAA7dZscsX8uEFjaImpOZeaoGB4eFoJIF+S59O1yzpMCrI7f2DeWQjGSc95Ie8CwtEV0HLiJbUPo3ZErjn5ynhTFI1JKbBpXneM4t48eLSfZJLka2ES2rZrmIOCBPTpMGEHSojQA1mDfvLln5lLqv6/urtdIvqV/EtXUdLSxMIS0wKHlMKSyw8zRQKZ18Klt0qwxsrnT9hysT0AC7F1Gkiw/B0+RPh/d2J4wpS/O3bNRTQ1vY4xGh/hPNGqM0oKSq6OdoqVpEQ3EC3MOfn4aez95Q+/enHMwdrconcZN3ojdgsB5ctD9a7OGkSXPpLUjeiBd+aoyZtWamnu7eHPvlADAT5dEm/OkxDSVGsRBelBTajQom/OkwF92I+oJt7TUi2FHa4ibc75DSuQs5UBiaQsEbSTSqCvnVmnzEQXTuNlJO01KsisD7S1KU/dLE+ZqcwPeIFOqZZ9yaYsoIAGPF6Q2tRMl6RX8wyzPoEWphzSpBoeWFOKRXNoiUgS0quZZI5eWwhFtC9A7BHhW+ls4sOaZI1MNcbxNOWVpq80HnnBnTtsmp208bTcppSExFvrDh5bcjEMrz5iltAXE7ddIzvk+vsFRQY7q2Ie2Cclso0fzK7Ao9fDqxnmDZLuyC1IGekNyzp/ML1TaInK8SVq/OK+0afY5kcejJ/EI5Y3AeeVf78pE2li51hKh5yz/Zdu4YB++B+epqxMPOo2tD87LU51dnq76azdC45x/GAT0w180aQvQTp1lp7Bxzh2jlrYgcF5+exeAjT1Vap+o4MZRfTg34+eHpPVTU8GgNAA7ZV/g5CktnTm1T85to0eSPMDn5pzzcqvjSb1BfeB8MIDzJ/MtJm3Mvk3OG3oPKJZqnhj0GjXzYbwIr3SPWkpSocgzLbEdLQg82fpNSikC4ON1pT5AO02bdT4izIvr0XjzK5QCmt8lnGaOCvKEfwvYBFFBx+ylDLQeJjmVSJTwT3kUkNUQGeYwM0bFlSnOLhfiHQFUULg0AGDtg3Pn7KWlX3Iz8HBEib9MywagGb5eTQ8UsurTao9L8YTWvjj//GBsTdqpdbb5oLI1xvFHhvwPfUD6QHSQUrhJTpB93iCT18u5c3Squ7FgUkJKiFclUoQObmzAqVlB18p94G6Q5QQnUTQJpRl9cJ4xWillqf3iY69QOnPatl6VpTQQASGPi3C/05MPakRCmjAw4oWv8m2UEhyjgSqMFkI2CbZ+8Vc2HwMyFBp7BVg1LcD4J9K85oAfthsjlSIJA3xjm22+UoBrdooAzCXJMOJ74jxd5KqUpdbJuXu0Utr8AFm4f+1G6Jxmu1SYnG/3h4IPIqO5U5CWmlKXtglwjxZVBG6S0XG3UgaMdHww/okUQf4KTs38EBnkSRyc824EbRtAjYy1RsewD0Oeh/0lMigWSoLNiSEAuzHZBq2VYe7RCM3/ragiYJPMCVqgLK6XiHNtWgs635j8CIa7Rt6kFOT1UXR/Qb1M49iWBYFzDpbw3grDKvhovNw9a1hcIaoI3CwdSiavI+JPLUr/lIZ93y7ZOn2ZARjuGnsFBJjgCWl+BcYijlJHvzjnyU52ZxeQL9J82G7yi9xtjORJUbVEKIKmhiE1CskTvgJtUzs/ykrZvN2IdDcI9FugLA7LRc/uAfgIejdodd8TiZXhf/j1I83Ky12zas6TdZPAxNIAQGofnP+YfTS6vyAoEKY1CkmL0gl55QN8Vm6B+p2xKf3Jsbt91kUaJrpnLm0RIW5M0w7M+mlf6N7jdt8Z4LtA7kYGGD8D5/a70U+wwNzbAHkrVPIL9kClmgoq6/l74vz4uNRoJGTze/ieyPnDpm0PuEStBTkvKx8gYoQ0p7HvqLSUerAde/DxVpsP0CCrfxHRoo0vwMTx8nPQvUNtYJEUMDRrFaIsdbRSSHq/OAZ4kuZn13JDSz8r+QVEKkmTPlbDzN9ZafQRcFIlBVoI+DspZaNt0vn3zm2O1CRGjsw8Pef8n1uglNgTOniO5M2zZoH+kTfSdpPSUrLYFlx+ZZrUfXD+fnzCpUAJCZuQNjn2TREd0zja1H5n8ysggPaZNjr5BS/IeYq0m4C0vllA5zMKCegP8C2/M4KudbhJwTNdNQPjqTg5vVpEkNdDfm2cc56UmOrpG7NBTMo5545ZS1tAePMrX/UPvxXn+1yBXlRbaXVxefrLPkMD3qDVgZVn5TNAHbfAIBI9POeAjvr/7AaX7v5kI8HC7WgkYBNcGhSFUuRh/a45tH3eUWmLiPJ1Lmzb4oi9uSm1FgewT74pB/ZkVE6yv3hKWxxpddDp0jIyV55Qy2ShAKo3pdbu+nA9GueY+GgkcJbcPZouyDjLyf5L98CumxdBrk0j2ci345zvsIzbuI/mUCEfZmZH1Q04f9VOzcj1Q6fJIjv87Tgv/4BOy/NBbQGIe2+IG8og7fN/6IOy6mcCl5An11lM4WhQNueLpASD4kQR+dToVY9ZAtiKoIqI9nVpaZhtrAWz1aEygGB282yBS22BNuhoIJ8ae3EChgAdiqCKyBE9L0CBQbUxPerYMogWHc0TaNOjNKbo/5HCoGC2yPH9R0vBIrUxbjBCvbF1/5/P8f3H+s/6z/pvfP+x/rP+s/6z/ruLBxglK4oxTi0yosI4WVGMcbLICSdnQ2VFK0arRUZIGCwrYjFYFhnhZjFcVpRivFrk323G1Nn4/mP9ZwlhAg==) **`qrb_ros_audio_service` pipeline** ## `qrb_ros_audio_service` APIs ROS interfaces | Interface | Name | Type | Description | | --- | --- | --- | --- | | Service | `/audio_service` | `qrb_ros_audio_service_msgs::srv::AudioRequest` | Allows ROS applications to send service requests for audio playback and recording. | ## `qrb_ros_audio_common` APIs **ROS parameters** ROS parameters | Name | Type | Description | Default value | | --- | --- | --- | --- | | `Stream_type` | string | Specifies the stream type for the action: "playback" for audio playback or "capture" for audio recording. | `default_stream` | | `action_name` | string | Specifies the name of an action. | `default_action` | | `topic_name` | string | Specifies the name of a topic. | `default_topic` | **ROS interfaces** ROS interfaces | Interface | Name | Type | Description | | --- | --- | --- | --- | | Action | `/ros_audio_playback` | `qrb_ros_audio_common_msgs::action::AudioCommon` | Action for playback function, specify the action name by the `action_name` parameter. | | Action | `/ros_audio_capture` | `qrb_ros_audio_common_msgs::action::AudioCommon` | Action for record function, specify action name by `action_name` parameter. | | Subscriber | `/qrb_audiodata` | `qrb_ros_audio_common_msgs::msg::AudioData` | Used for streaming audio playback. Subscribes to raw audio data from this node. You can change the topic name using the `--topic_name` parameter. | | Publisher | `/qrb_audiodata` | `qrb_ros_audio_common_msgs::msg::AudioData` | Used for streaming audio recording. Publishes real-time raw audio data during recording. You can change the topic name using the `--topic_name` parameter. | `qrb_audio_common_lib` **APIs** qrb_audio_common_lib APIs | Function | Parameters | Description | | --- | --- | --- | | `uint32_t audio_stream_open(const audio_stream_info & stream_info, stream_event_callback_func event_callback)` | | Opens the stream. Returns `stream_handle` when successful. | | `int audio_stream_start(uint32_t stream_handle)` | `stream_handle`: A unique identifier for steam | Starts the stream. Returns 0 when successful. | | `int audio_stream_mute(uint32_t stream_handle, bool mute)` | | Mutes or unmutes the stream. Returns 0 when successful. | | `int audio_stream_stop(uint32_t stream_handle)` | `stream_handle`: A unique identifier for stream. | Stops the stream. Returns 0 when successful. | | `size_t audio_stream_write(uint32_t stream_handle, size_t length, void * buf)` | | Writes buffer to play back the stream. Returns the actually written length. | ## Prerequisites You have set up the device, installed ROS2 Jazzy and QIR SDK on the device according to [Install the QIR SDK](https://docs.qualcomm.com/doc/80-90441-2/topic/2-install-the-qir-sdk.html#install-qir-sdk). ## Run out-of-the-box `qrb_ros_audio_service` **Steps** 1. Install the `qrb_ros_audio_service` packages. sudo apt install ros-jazzy-qrb-ros-audio-common ros-jazzy-qrb-ros-audio-service Copy to clipboard 2. Launch the `qrb_ros_audio_service` node. 1. Terminal 1: Audio common package source /opt/ros/jazzy/setup.bash ros2 launch qrb_ros_audio_common component.launch.py Copy to clipboard 2. Terminal 2: Audio service source /opt/ros/jazzy/setup.bash ros2 launch qrb_ros_audio_service audio_service.launch.py Copy to clipboard 3. Push a music file to a device path, for example, `/tmp/xxx.wav`. 4. Play the music. 1. Get the `audio_service_test.py` script for music recording and playback. wget https://raw.githubusercontent.com/qualcomm-qrb-ros/qrb_ros_audio_service/main/tests/audio_service_test.py Copy to clipboard 2. Choose one of the following actions to test the audio service. - Step-by-step playback (output the sound through the speaker). source /opt/ros/jazzy/setup.bash python3 audio_service_test.py --type='playback' --source='/tmp/xxx.wav' --volume=100 Copy to clipboard - Step-by-step record (record sound input from the mic and save to a file). source /opt/ros/jazzy/setup.bash python3 audio_service_test.py --type='record' --source='/tmp/rec.wav' --channels=1 --sample_rate=16000 --sample_format=16 Copy to clipboard - Streaming playback. source /opt/ros/jazzy/setup.bash python3 audio_service_test.py --type='playback' --channels=1 --sample_rate=16000 --sample_format=16 --pub_pcm=True --volume=100 --topic_name='loopback' Copy to clipboard - Streaming record. Note If you start streaming playback and streaming record the sound will loopback from the mic to the speaker. source /opt/ros/jazzy/setup.bash python3 audio_service_test.py --type='record' --source='/tmp/rec.wav' --channels=1 --sample_rate=16000 --sample_format=16 --topic_name='loopback' Copy to clipboard ## Build from source **Steps** 1. Install dependencies. sudo apt install build-essential cmake pkg-config # Install ROS2 Jazzy (if not already installed) # Follow instructions at https://docs.ros.org/en/jazzy/Installation.html sudo apt install ros-jazzy-rclcpp ros-jazzy-rclcpp-components ros-jazzy-ament-cmake-auto ros-jazzy-std-msgs libpulse-dev libsndfile1-dev Copy to clipboard 2. Download the source code and build with colcon. cd ~/ros2_ws/src git clone https://github.com/qualcomm-qrb-ros/qrb_ros_audio_service.git cd ~/ros2_ws colcon build Copy to clipboard 3. Run and debug. source install/setup.bash source /opt/ros/jazzy/setup.bash python3 audio_service_test.py --type='playback' --source='/tmp/xxx.wav' --volume=100 Copy to clipboard Last Published: Sep 07, 2026 [Previous Topic Convert between NV12 and RGB888 with qrb\_ros\_colorspace\_convert](https://docs.qualcomm.com/bundle/publicresource/80-90441-2/topics/convert-between-nv12-and-rgb888-with-qrb_ros_colorspace_convert.md) [Next Topic Test video functionalities with qrb\_ros\_video](https://docs.qualcomm.com/bundle/publicresource/80-90441-2/topics/test-video-functionalities-with-qrb_ros_video.md)