Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f0420fc3d2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1 @@ | |||
| H4sICH0P1GoCA2FyZmJlbmNoLXFhLmNzdgDtvWuP40aaLvh9fgVhYIEeQK7hXVJ9WfjYPYOasXtqXO5zcLBYJJgSU2InRWpIKrPSi/PfN+4MkhG8SOJVAXTDlWIwGCRfPvFen/fvUeSd/P1nTV/998VPsyCOVpmXvj7tvMw/xMnHah+8vAS7S5h9rOIzPJ4+pVmy2sVJ4u+yJy9K3/0Enpx8PB2S+HKmw1ZBlPnJOQ7BTE9G4S/zn/TVD18iLTv62kschvF7EB20LDj5P6Z+EvjpStvHfoqOc79q/vdj8BxkmheB/8UnL/zQAjzLIXjzIzRWS7zo4P/f//RHft5n7ac3P/EOvnbJgjD404Pr085+svOjDP78Eieap6VnfxeAe9VOfubtvczTwF1dfHgJT8u85OBn/l6DB+B54KY1dL/gt+cP7T8uz34SgRGptvfPYfxxAmPAKvkTPv2w+oks+2vip36081d/BH6iGasf/p8ffvjf8L7BzSTgkqngHrkn8cMPqx9++FvMDY/i2uH/Lzihy/wry9mamyfwmv6f/++HH9688OL/8MPnjmv8P6vCuV3W+3/AgvWV/k/GsHLy7XLS4hftP7yXV087e0kWIFFB40PvgAQFLAF/KFgwmNTsgMxfTuBtIqkovfqV9hKE4L9YWLL4DE6AIzgJ4gejASs0gq1iZtLj6E/W2NJjNknP+9HL4HxwSAo+8Qy/aiAC8BdyiZUWvPCL9b8HaZbOU3K+wZvEYmMisfkfPliZj27X95IQ3At+BuBpnM5AUDT45DVyOv7b1E3nR936UV9rxuaz4XzWddEBXXbA0NEB8I5qLy4WIq1xyf9npRXH8+uvHBTeTMMovdUocptUFq1mWQTIdPRSXvQ0sMfGb/DlL0kI/xrteREsPbYteHJtBM+0wYsQytf2s23RGTLwCNM4fPP3SOIE15LKmXBdt0gXWXGT3ODlCy7E3wsVK7sVxGUfZ4RqDbshhEKydzKJ+5injP2M9Vei7PHi9vMR32qk/ZH40V4san+A55EGUIX7dg5effxjfuY330vjyAuDjIz/1X/zQ+3bMXjJkJyVLiKVscpiuslXZZmVEZI1V8YVboAKl9MkXMf4XTtddsdcDStIGNxZObVs778F4LVoL0l8wvD9HUgGVKqf/aP3FgDJQTtv8bQlId9v3iEKssve5wXS0CV459Dtk8Cc/slAwgVOkAqUoXcGKUe4l4mACi2ACoc7YdW8+NYaXvDi9XBnbD18PVE9fCAx6UHp3nRWup0uSrczqNK9uaPS7RSU7s3UlO6BJK5Jw9b1jqZdUfkUKOPMphNcSypUwnX1Yb+VdOcGNb1ouG0nrWEPJFBydbqgOF6hSv9PLwk8sIeWfyf6MHgJ3BWkklRUX3vTofPF1gyimjx1YerL1KIHkjyZyqzLMAwf07k/8n9S9VmvASU6dzcpYlcVH5H8zknJNDzd8ctL6mfsZddbSeTN8WKQv9jyK2fXKLxxLjii/RakKbxrFHo5x0GUAd0U6Bxg/hDM8R5kRy26hOH8FHB3TAXcgNI1vid8ZpJ1f529yR9+q87uDqmzd3OBt9bZkaxag8uq9+YFofccAqj0z2GwA/YA+JqEId20LL1gqrcAIFBLYW0THK7IHve8dBs8rDb6OxrFBraQXv5ck55bVOjpxUl02KhT6POFXi1n+S1URnUVbeHNsb3XHs9MnBks3il0Y302XYkZadbFdGojOO4AERy88GYD0mwf56Gw50zEzpyZRN5gmdbEc4RBooqlKDRO3Xsap23DN81xpKqZSwVvHEd+cokieKUgApgNVPgUSXUubN4Z7cR5vOacxPvLDv0tycECYJwi6eJ27l14SZkFmvgheIr+J+2PI9zq00uI9Aiw6SM7AtrQAOM9IOgX8JyYtGnoMaZUCoOxQwAdxhOZXI+exzV8CGAhAlZRBuu3VkdmZTjulcogPHdNlcH84mLJ6radOq2sCLLye+qA+T0xAR0wVLAQySzpgg1yuW0dS5CLcF9iuL1D1KClLJekbqzgwkJEUK78yXU9TqGraIitYxV3kMFmla1eb7wybkFTY2cXlViIyArjGZXMHwJ/xfwf4z7gJzRN26YAGRx6me1jFnWig0pJYF0IfoCV4QD6oLopkBs4CNsiQGwKUqMZkyn6KCzLZOKML5MGf+KVHGOgvbA1FBPUJFfPTXaJ4PFASZ4xQ0mLyJ3UCngGD117vmTw+AcywiOwHbJ3tUeWS50ZgSZAPgI6QenkGjvCD8pvvHoGd7U4IrLCC0DnM8zm+E7tPa1+oEUzxD2q/1A2u2563iUz7Ppn396eE72HurOb38kNZ5sc8sB4VhVZ+EuBDwhg9x5CEvi8Qu9wwJvHHu4RdDeSnm4qhOmIMF/ok+Xx5Y+6FwTfOHtHrV/MJ6KpNc/c9ZW3nLn4WWpZfI9JgdS8AHUp/Og+9d8KX2wc+VDeEQBwPqM+XkQj3ml9CUBVF+5FGjpfprNodL7ClXIicjo3CA2DWmvSSt7XHG7JC906YH6CwkHoi00H8shO3vfgBNCyOqCE3dkxibMshGM6BnzTo5fsK/lQ/ndgZyC550C1AuS/keVlceaFYHGZ9woTsTI/2n2UV4hQfQ8eURIALQJidvoBDJlT7Tpldo8wVQvfBNuFlHY5inbpELRdK+WyL+XSnoRyqZBtAsimtNpH1WplOKuU2iUotY7yXF7tV5hYtqRSPkdwbSrlsy/l0x0pIjy1r1oa2RXGaK9K7SuWnpUpHEqZfcJ85+YY7J2z+2oK0IQMDuZaOcrntqEpm+PhPenK5ligzbGZtM0xJSws43TRFYa4RjU/SeIkJXFMcGEwPz6AMvZ4P5HInyTYQcCuc4yBksSSgg6/f/2Z/QpXiBxeyvIYxfIwCDS6yvLoy/LYqkDfWO7wn1H+ILiBr3GaHRL/23/9WgA4lLtB1kNTkpPWZVexAq1xY3VbBVo9gZalq1jdgsBJmb4zN307P64mqFSm7wJMX8uYkWr57defNB/eJnZT4qqPFF/SA0Zr6H3AYZaug/vcxdE+hfd9gqWIaQBQGy0k9CAmXnYAxNOXS8hPKDaa+XKTWuzMMXvnJ5kHbhxsFtkFPp09AG/t38QsW9ygFUZvsOoAiDMpwge2PS6VwQZvgwk+hWdU/yBWvNtY86O3IIkjlNxxryekVOrBVWrDwn4A8F9TqdR9qdTm3CoDJxa/ETMWiuOUiFGbq/gjJX6GNOJodI0xYs7uNjWAfGmfZU3QrlI7s9qZu+3Myp6csz151fWbFAVlUC7BoLTnEEsdlkeZY1djzGyyjJe5c74pg2sYg8vRMY5CWjtlcPVicBn/ZDmT0LUVaPULWkoXfcjYRg2EKlV09qooQG93jqroFLCTMIkIYbPlFjBuTxylhQ6mhdq0XYvSQnvQQiENtLVWJvU9tVMFTQ9mICto6i0iuVEG8uwgSJm7j27uOsrcXWDkZfsY5i4OUu/9NDhEXk3dcZO5u5JSZ6rQjNI8b9M8TRWa6dUoNv7J1hXaDYp2YpW1xFbcoLPy6IfvThnSc4IzS8FZTz4+e+Am04sqi5tX12lUUjVy0zd7wK7TCxW1ulbAhvnZatUK2DCubwVsSFoB04uLZU2TLPT63qtGH62AjUorYNsamn5toYIr52+T8a+16tjV0KCrQKMGXmn1WlJ5bcWxdmNDry4tu4qMcFQ87dnU5ixUroXFPY5YgtdcUc8K1+6A9+hIRdDpKnFraRlP5UdOhpwxlcDJkDfNRIlzR1fi3HF3xOmwfd2LkbS47dUwlZYZSUvXEUvIPVlJa3bCttSlQlZSez3TbWwywijehiSmgEFVf4crOoU7kS4VIaezsm4IlXNHWpFKRWEz7G40l8YTM9meRm8sb2+H8zHMRXZqnQY2MnnXzU4D+7OpCxtx27zboXjAELoKyCXFIqNJlne9q4AtvGGU1WqUUXQQOPrQ6tBsmoC1sPg5S74seq1bb7e1+NG1pDLXbKzXytuVzbc7mvuOMRs9aS5SKlGcmjQni6lQOlGddKloOfqdlCdLrFLxaGQOqz1VOstif0zqh1iMIOyhvuxX9JhdVRIP0WXmpxNtxtaJHGs4nWginR1qlJ8W8Y56Nch2JNqOI1ODHJOqQbUXX1HW/zKCdA1pdFCNyM00jHJaqUbkNpnY2cOJ3bhA1IOMSVXt9WfDqRG+ljK2GVTG2qnf+M5aSiKVMadZxsAGdvSKylDi7+I3qFjMQLj+CrRWie0Gvl1HGvD9W5xR9t19VWAcashUD4jju+RaUvkRrqub1BRXXCsIbPkNo0rhXGesblojyU6/NlirVlpSG2wzpg12RX8tKkLrudEhjiR7QsvKBMaQDLAcPTeq2D8NHf8bohH6WQ5A5KxuQuPoEqNK/DtdDpOGgd3VA3Kvz8S62o5uXW2H3lMmZ2PduM206sAo3I+km4t+783lipaLzfsTkSBXH85QGhBA7m8VyQ1s5y6W93ZIq6ilTe1cYXm7xtCQNGTDonvlXXCI1D2uIM692PaXeyFDrXvEFdz5UHwPKGhCBdbWG2MDDqe6Ilmxc7W1KiC2fq/wgCNTWLkXbY0cH0DKCXpHTC3pZndIC8pmp7ga+tiaqzuf7OHJqbxdSP0pIJilfCtDqqwa3c1YkY7QmG3ljuI+HQIESl7TqjO0TtN0+PoY/oArO+DQ7BHwYPlrSb71Zmdna0XSkRbCCBfeMJdV9Je64/tLhxCWKbtJDX2eflJ3PWZZgWoNcpydMw81aRhbJdqMW92g5PYY7+9aNtjsRLymZLAqq3cpGezqQOxq529nWmehPotjs2vCkJZ+l+oOHWx9YKeEUJKNK4qzW9ceOrlArvVR/BETaxA3F4fF2Jvz2nh0lXI6ndRmolCao8usqRTKCXXmvb862crOJ3Z6nTppDq5OdrfyqbuByral1MkFfBTdlMmyM7usTJr3UCbbu7N5ZdIeRZmcAP/3vLZlRAk99rbsDF6bMCk5uXduzuazsRYGRsABV3bAaZ2bUxWZPnNz2M00jXJbjXIKIZW1O1zIbVIiV1PHAB7SthVx3QaVctuyA2Ix2362quUM5JJS4RIu7xaRIgtvMaqFSOFbYiK1HilKNyn56iMvrK22L04IEwpW7wlh1yn9VJQ2c6tumJQMXumXLaWF1MDS3RyzTZkh6+0klOkpUpfPTtse1QkGeaY3+jikTrujv3tFfSqYBEEz2YfmepolvneCC/FSKCvY2V9MLXmPk9cw9vYtgz/p0dsDdIRnUblMizlmSLoZXQWRuxKm0IvOTM4266fRExo3xlgE05MhgqvlejJk6Wum7IDdkSma34lKGje5uJRirh27s5itub464l5M0YVtloqcOQ60YSihqMbIc4DYeIdD4h88QZ8MiZDlkOjjICUBKC3yTvOiW3F1U58AClnDU9AtZaeTwpeha4b+GX3M9W4CMtC9ht+enFvhP+AuLt7qNMlCr3MYFG7hbvz2hZtjsmoP4I1ampBenVuOX4GALREfsGUHTEeWWy4UxXuklheW2jDKbjXKLPpBN85YxIlLEcMbs9a7RLJbFl4LpfHGbPX7xLCltdcbd3aUikuRX5mzrLnCEnmqCiWW+DSpDDLajjuUWWI3WX2d5Wbg4oc/4rNmOuRNYDcYe/5p3mTwGByOUF2g3TSor7RWEiQet1SUwoAunWJnXOK9wLNCL4IpsL+THAvYRC1O9vRaJ9/jXLZghr2fgmuTxt37maVJuqZhj2t/IG/bwJw0v0O8A6AGVNDUO4CZACbvQ/x+5Q5b7ABhVZm86BaaLxZl881LgvhSKdHkEmTAlIe04sOvgtKZelCqRLLzkjmAPOPnU2wGJ8FZstTJNbuK0naHtiIi5Y67jljEGjWz4VqKSHW77UhhB74w/RKGYP9DLGu7+HQO/bKLbgfuMvLDVEiKzQ88JzFMNSxKJpAn5KbDOzUtTSiJIVPNOHGvKGhzI/9CQmmNvddujbGs2AUI2Q0w11DE10DtIwQ4654A16VUrxOzD5U7c3Zm6wIEtj69g1mlOQFQ3veP5nVIRK2LqSnh+ZH1A6QSY026df3y1Llyh3v6HewviUdyW7T3BCC99uxl4DuNwQfiYYO9LPSS6B6tK0CraHGD6PH8SPqXg1nBARhVrt6o9Dny4E0EgSG3RZzhN7RmX93Sjn3VuQX7qnPb9VXnVutNik3tPa1+oLo3/q/9Q1nfuelxl/Sf6x99e0VK9Bpu6GVv3HS2yZkKMA5WRT/+UuCLDH2PeKagu+qAG9Hug52X0f1RerqpUHCJKPiFvn4eA/+okyIolkyQWkvPJ6L2Ns/cVS5bzlzEDtqW+cZJwbt+AVpm+NF96r8VYCWOoFcZoxRnUvZy/SZQ1voSgKqR0Ys0dL5MZ9HofIUr5URksjUIDdsPBqwPe4jgjTyxx9H0NZ9lWDb1u+TvgLlcEUs0voggsSe/uDh6o0kW2s0bcHXKDn8/taPWfGIPMvfcSZt7s3cKKOtOWXd3su4sZd31aN0hMFxPwrpToKeMOWXM9WXMXfMimiBY2XIzt+UQ+m9U5GMSPr8lhKyVXjx41MNSenEvUQ/jn7ZbFfVQCNgNAZWSPHMlufPjasJjpSTPPuBh/BNMTho4k/Eh4h49tUatSecuZC2K6vQkcY4hGqS2TekuZl4SO87QjdkkPT6EbNcU8Mkr+Ep9vdm/uTI+eSyOTd65kK+2mbfwAC94A5N80G53iX8CLxFe7I9fv6F3Ct87FNkwePHR6Vg3LJVg8sLjnVGHA6QoNhCdUd4P+PNzEsNyzy+/jFwU0GE8lBp3ArVQhj4gAQgVFfzJ+i8ZkoiSuJAKYCwlnEC0rADmbI9znGSrLjJTiftLuRHWmml0ZBsqnmsI4v7ogMm15qMXJ8JiCsgT2rAj8Iu9X7ifv42GUWaRx8PQ7bG60E9V8uSaVx81czK+/1slrudKudZc/4buzK5Z7FQlU6g3VVWl/4tiGfmHS/+xhv+4g2yhSwhwRvSrK/wVrSQXEVexHjwk68HGHJ/1wNDXKmVzoJTNDUw4NPVmLjY80KnqZeiA4bRV9viUzfziYtHTJAu9kgeLv4WGUYZznT7IJHgzABnbQ4ju9Qxt6EVa8I0LD8hE2dqA/wkY2iQCeheGNn6pTaNayS+5iVwet8olPD2XcA1vWyvzRewSForpQNRtV1g2VESNgSk+fo4vwHoCwv7iBTBC7e2y4A0sCczo7y5YTJFdAfnOXkJoEXkRsEVQYBlTPxeFtMDKBgSBRGrTsm+OXQh+bTNTD7fOuEQdyDgxBmfqmJys3Ngh5dbWh5UOKSLJuL1DSs9NDw1jPtQbk5NAoefDkVgRVt6umrJpgHfg6FLBcTpr+ZasP7WQXoNJgDUOr1ShtU3O9EmUlTYkn7wyI86Qr6HxDGOoIIVhuVPKJ+3XIAKGDVgB+Osch4R7PsVuNZy5AHunaKcgTeGKUQYTYjBNZ8Y5ZW/G55c3DHss0qmFS+Dt7YFv7SJW1cwFIneX3sA9NxIzDGd4Z7Cha6jeCEp9fMnSzMMW2PMH9PcDGaAGY/VgKccSSRq1E1n2ZI11iXP/YXffNw9sno2VSA10yZxszw4gxw/AG+7wAfiJ5Wo0xt27hdeNtahDED5giQ9s6BmiSJXRLVJ1Q0TdWDd2CSrcRu0odk+5qK3HirtPTODah9uFxuYVXq2aIHtH8Wq2OO/qyqpYlAMTdm+d7EhLEYBdSPqXXXzYnR78A3xbrKAXS9C7/wyE6jnxko/aTbBaCSFyruYnpTW9Nvm6hXntgdZ2PQUjYTsbN0Wxld63X3/SfHjzWAIT4nBHzn/Y2DP0PuAwS9eBeAAdbZ/CpPYT3B9KSpwXQlCELSxEChxq1gfuHaIop8LtYP06+IhXNWKJThVWne+Dt2BPLB34auLMC4EiSdwwkluDy0aKCCzXoRXwUi1Q6EMxJfm25D+faDTrE6YiNaGYuhtBwojZObdW9NsnYUjqk8PJp6mP2Tgv7zDLWgQXjVtOjIiG3iotiGEcKy8r9kpB7RppXGn3OjdgMyeg3JvG8O31pio00hQNU4eNLy3zHqxaeC5BczJyEafMqsVdXCw1mmShw7BqFe6nYZRVbFpmmOaA/fKmKnVXZ1fAZ+qIDEl8wJAd0CX97ySydY/sisJSG0YZrUbpZVGyxvLiTlWu7lYrV18TV9MVoOp+FUvY3WrlupTBte0PgKXLnl2DgKmKpVjhrqlxE9S6kf2xdkO8pq6tU7EbLx4De+e/Qaf7i5ZcogiXZ0P3+67qd6fWDwolnZN4f9khCZC0rmZ90YMTSviHKWDl0NBv1ZAPyt6C8SAwC7Iro0sYzk8XHz+pxnSH3sPmJUhtdrTKZnV9rxt56Td3EbHwdNiVem98U6n+xrK2ns2ONi8hFSfl1G9uND3awDk5Uply7rKlCTOcDV42pk3xNj+He5nAiEi08/076jV8gdfz0pSuvyLZ8AZeEu/kwywQ0ZrACjKSN1ZYHre0+D0CPx2DMxqFTgDaYXZc5b7gF+8SZhoSCri8P/0kRivh0zwUe9vg7G04AoL/ayr2tp561hjmNOjbFLpNA90UM9tD9qKpA1tFzbaAXjSGpU9au71b+B6A2g7HcwD6Zlp62UFay5dLyE24KmMxTLn0Ur+SvsRB7SkG9g2MscNihDL2D7p6mQGItgB8Ix3dmXS/ivewOvHfRFvfih+0InkPcRKAr5HYj2CLxYbnyc+Oiu94DI3ZXT8Zxgr/w1Uqc18qs2VMQmVWkLlcyFRq+GOq4XUIrvTwRejh5rR76gURF0eXhctxsIHR5nPE9xKifJbdWtNSqVK/VOTYkPLhs8zY+OUlDMCzL+UAVDwvNbUMJdznCP7hJta9nkFpvoNpvjqBTdUBr68OeIZlTaMFnsKoO2KUUjUfsWFdHWIqRXMBDesMy55F8+bJIaNyVCjf7jQ1XFu5dnt37TqTavKswFF5cZVqPUPV2lY+3CX7cN1ZqNbR5fTsJ/z2wW0cXOOKxM8JXFI/Y21Rc7Jjup+Ue5liF0hDv1Lln1XaK4BCS/lne9de15PSXhX+KN+rCvNLNERLOV+XrCFOu5bsp0sWp6cYLp1xnf789e/aJUU1gTH6IwxOASlbyKGRq6aII2hD+0laKT0sxNo4OETd7nnTmmEsbDKfnj3aXf4Yp9kn7V8R8KbEbvdhsaUfxmcEt9wlcLwuPXr7+D0vk1SuCuXHnWqOrq4cub2rwtMoa1NAq4BW+YQX5RPu/LgaYV+p/EtQ+W1d5VvcI6T4O7x3sL4zeIhobwbv0qtZGZfstwc3ngRAR4Jtig6HxD9Qp5KAupfl/eWrRhtCvt9BchRZ6wWaDQg3Wt4JpTTqMTMjNkqh7kuhtg2VGfGIMKb01UfVV2WgqtTVRairpvJQP7Lj5OaCbqXpjuo7Ngyl6/am61rKeawwsBMGKjX5UVN95YisFOVFKMr23GiBKdV6DQaWgBXBIGl0VnQv8HC3yiNq5R6P6e7o7y8hljDwK5i64nHgp5Kd1N9+8BBt3ZQmPpQmviHV0xvFTdyjHu5MlZtYQeyjQqxS9B80ZVuO+ErPX4Se7w7QlXEZJPGl3o18i8LNZ30t7RdaGugIOzWCAy43A9+FsdQelFyL0pbXtgdl67q+kyNbcdMoV3ahQkdJJnfrkdpfzb0Pi7QtlrDXVVkWW3VzFDbJgttM8QpSCWxuZFUrfVe0bmxulMXkbjO3VlgzF1hhiyxDhpX6J6PQft3ETdeNGrwzuuMbukqrduwm33fd3g7cd326jH/zaviIWN9GbPiImMkcffCmxXOQnxs3NGEzx5oOkZLuxYKtrSo0t29tzQ0c23aSlHUwxqJmzKeD8RxkVLaHdWlkTPcx0shYKF10yh5bGfNSYg68nY1DkDC7rWr83sSONfhWNbZsyLehiskk34Jqdhtud6rsIeCxcxcRS0GjXdRy32m7q8j2p+oGyITGns+mM7a0CTcUU7KXfHIKJpGFPUJSMTE77x+fnJbWkMW/bmfY3UPV19bV185ka3PH39rcVltbgCUXvJAkwzJZDCi0ghklsnUi+w0+W4lDXXc/m3obhzocmDvU/4f/Ah8X2iy8BMa28csDizydReca+Nyih51eXCyzmmShV3vY81uojGq4n4ZZyc3lor8eINSjZL5O5kshpGJspFnUbWHsCB7QhQdg7IcKOH8tqWSXgjU3iLTdHDTK1107it1ELsjz8eGrz6Huc+iiButUDc5DBHpBE3Zv14R1oSYsiRYUJHLgyMBSymxnorZuRldbXX04tVWQ+PffF//i72nkUdtfEh5wYOAxDJ4TL/moxRe+QIcazFXMKYQmS3JVmpDIbJ1S2UIlrMvXWH921sJ8DXDAlR1gSmXtxVe0/3wZtrpqfa1TOdjNNI1yW40qqZeuMZyILgX/7iyuQKOydImKaK1lB9qLaxUKexTX/GaaRq1bjSqLqzmANbQUOZWnvhUl61rzxZAccHSxfW6tc/t802CfW+ub7fOWxozRZpRTMmbcwWMti6Ga6iVkI8w6kGQNVKM2mzGiNs1JCbJsASyB9rDGyyMUeM/OxDH08W0cZ2gknLOlM62AtdCQmXjA2nWHxb2FFdTNDOI2TxNAuPWwEreMDPI5iFc1M30M8dpMYANdBqTJd1fhDlneYRuMiMq2W9gpwessXUQMYK22v9pdtovhUL8PF7d6JpADh0X+huzRNyB7GPgSf+eDP/caUMUgpAFBgPBVzjAGcnXyswReJfNefbE1ywtdbtGuyiYtj5qEmHV3Cb2EHzMytnUYDwTPdiDHz+jYth68emJ+wiQHrVZVExW7oQuKoQwDehGJ2NxeHVFvUVwPZ0zKpkH3PBfRk7E/g6/qlGrvSZBl8LOLgfYZJ9C5g9w5YJkouQImmlwSqCOAjzatz0wQLyx9Dc5wf8fKrV+1oguXUHQWM6GzaBoEmSkIvpB/KG6KJXJTrM3Z5HnNT1kQ5l6V9YRi5QGr2nb0+2z4besOxCXeDh9GW1vjZGBNfqubiYUxvvdkbY8ViJ28DF1jWLSqvG5ndgihxrzWtriirvpWM4SJmDObDW02stlqH6P12OUUYkIvcrN0CUuw2+cSF1hG1u6kmXeVbdo32Co227Zstt2W1Ww2KhLbu5HYrscJdZ79CH19YXzQ/gE+L7DPgw80Q3OXIAkOIWD07O1e/TzLgmcbKaSr1TRIYMEplu/BMtcgwPjzimfarjGBcPl6M3Bi2puPdgLSNI+ywUBSmr/AYihckvXPlTKrLPG9EzYMcJaknwaHCNP0ctLC7yEkYYxE5Us7AzfhqkRKsyqeiQWMkRbMTMgc42k7vpBthzb7liRmN8bJm9knrwiVC+Tq9lB5R9rJa6LlG3021uGSRFhoQDpN/JSmw/N6ObpU7pw7sVOajpzOC4vPgPVXM9K27lpiZWm6+VnfVKtV8IH1Z0t2oGWJlUDx6q3Eir+ZplH4zppHFUpbNuZIHM9zkMu75G8Xd82GfI2cyLmYvC2Wubskb9fslV2SNcokzhtrbiTOc5BIMcul00xxyXyrkFkSb4VCkTKcu3FbStytTEDskaKB0d7/Dp4dYsHApUmRFie7I4BqUkiSfoDXcJK1YCSqSzdO0/PcqMAc3Z6Ae2HjjGX5vYBv8YjPheryKQjDoKgzR1iUUO59fDrHEfzM5eLUqvAyiF4SD5x42WUX8KRyeRrVnhNF+6o2HZQYY9I2nTzqt3FnZ9dNV0DlVMyybSpPWmFczHpOxiyVLeM6KmZJpoqYjLmgLK/HcXaiAZR3G9vT6Mqw/BpWCrFEL75OKE5ew9jb18bFDmK2qPxcOAgoO6ylWZvXP5PNbfxsls1mrM1tXgJ1tw3vunwX6WZn9rfZ3T0BhsncdnYb3byE9Yo+BNVGBHqxE4FY2K7tRNClFQG/+231YXe/n2l3TK4s8R/xcwqJJODf+M15MMQP3zlWZc7gTQE5OaG3WPZTlwv2cW4HS3MpyQS4Vl6KGCcHLyIIpH35ZW6h4inYcltjADanmQiNjKzJ1vTNZ3PTTNaEBwrImtABy2nRpzC/llhENMm6rnRl8ytuGGU5nfoUbgf3Yc9EytooThWd6CZPtlxx4q4jFbe2+s8Qnm2x+rS1xt8D048InJmhjM00A3P7uwvXDoPpQBJvMx4fJ/OqP3Ar9v8YO5g9XPh2mDdfibw2bDi6ZMMx9KsI/jHac/znfI63K3L5dNlr9DZ7jaHfmdefv6dccpyRdJ/7i0yFH78oMFW+/NKT2UhEyJQesO4lHw3U+cKFNglZu1FWSRzcKWgs95eN9kVIrZsctw6Y3yocd2hpfEu8fLuedEnJVKMO5RKSmXo4VT1J23qSq+8JlpbgMBJxqKnCkr4KS7abSVC0KMzqE7MUP8uU+Vl6uX4ThCpKlyVQumy3k9ZEx8/jUzqn0jm76Zy60jl71jlNXZ+EzqnQSWmXSru85nE1YaVSLhegXJq6oZTLq+B7wvUISpEcXJE0lCLZmyJpKkVypkiklMZHVxoNpTQuUWm0Jq00TjobtIziAyWCKJ3wKoLExosggkQXAx5KclGKYG+KoD0JRVChSwVdlJ43+9YgNRCmdLZF6GzOcLnyU6J2qWTUc5nAKCO9TW0XHCis7QIH2qfaF4u96MXF3C6aZKFXF3vlt9Aw6toEfCZo7mg9ISYgbsNTlJVbyhWJysSiNSWiMmFXOVNfz6/twwTET8ZHJoE4J4e0Uqm7UwNMeL5uYuNIkKepyt3URyK0nq5XdSZ8LqOXB5r6dhzR2VGjC0jLS3C4MDGIdsckZuYawOCo2k+cWoptUzw4kl9ggO6B4JCu4bRnOGoVDtB2D/s2z0yMTHd8ngTT0MdSaKALALyb/774ItJLUjmXNPWFwU6Fo5fsK74E4mpgA+5dOsaxAHVk/SkXkDnCAvW7FJDJqIFuYv9hwmOMxOcLtp/ghOzK3SXNgNIDWwkBqbmkrHFPMecMIQlQb4JdWvD3kPMi73QnKt6ujd6b2Xgdy72vknu/Ju/SAkPTMOdGyNuzSIlJ5SW2ebHLJqJ/h5zyUmFwOpvObRttYup59latUXr4pEDf3F9C8HhfvCCENerUAPEu4E150NtLjzB9VJgoOisaCviuR9UzDfTO7cG7CPTyvtuTTziaYfOusy4cE+Bciz+3eEBCPiF40a19X/xi70crwd9GwyiOfALLyxDkE30KSgPlRPHJS7mvqkNtsVTYvUlFS2Kr+knsFkJgV4XAnZ2Da0xzpEvrbaYc6Hy/mVvNCae1kqDXd50xjfVINkEvYNDeUGxHHdKajeQOaHANQcgdeEoYBmzmZgL0IkGtvm3WRcoofOvGfbYFcf8ooyUMGAVgH9jr+Ed81gxd14DZFZzAW/LewPP3ngNokMJAM3zcwD7DeM3QmoI4bikG3op2isFLAN8x7MMrcFjLPZCFHBR4DM79gay7FYD0JKNGH/KYa166I41d4mQ/ur3R1SO51sf1SCIRM/XhDI7liJc8E8CBcW/Hac4EAAON6+0eeBGmyAouLpYvTbLQKzMB+Fu4pzWU31wupoP7PpcjrNPyrwqlcrr+VSx95jj9rPAbJ0kA5Wae2IK6m6k0s81zCqSxpjmwh/Y3ERZBuMNQcw7OfhhEMN/3gNIAoMhgB3lKetqVmrtSYcoSb/e6ouetKh3tpFwA81O5JiA1A/p4Jy0xd+0Ni5URR+T1KypaxQOG3rY3rEB4eusNy9/MlfqX8DZzGRy8+d6kJfEuqZY3ZShUtSSjn1TLXlMUzPl4oictj+LcS1lPdIdmYBYj2IZUkIzuPdEdYSJmYwzbXA9fKjCS1lznEzC2n41NG58AGGheHQsF55oCnwCdU6w2a5KFXr1z5bdw1wgpu7lctgZO5/3N+44Q4z+8l1cPJmSml5OPSgNRWm8hozf1Q4xTUNJQJIqU9ME1eudzSKr5UpnkrWj3aSx4L6H3FteBBzfqE8A2fCGMZHEAc0NhFSe4FPS3sxLp0AMv4DWK3yMNPfW52YDWBFI6ze3gmtQjyWF/DSIrml3LVshVqRuuO2S9BijtgWxa+nz0skeSbrGeZzb2kywW20BdzyT7u0g4DfNevSTrSm+YrBnjlErgIonMA0p7on35l//U3hMAouiNJb631+Kzj6snKkrh1zjNDon/7b9+pfog9t8Dhe7gQ/Hyo7cgiSOszxcLprB672MlEr3yExHgBNz85YzF0N/Pb2sd31FmmWNVS4xkQsg3O2Egpm3VZ3NVBaRwKl5Baiw0x1tur/nsWm7BBMYaztqcHezc2dsKDDJ9/dm0RQcMHZiAwjM2ny2znbe1ikA9elvzm2kYRe6saS58m7lc2mN1g5+NdPYXpG52y1bdr0LhGyhI3dVBy4TMmV3799lIZxd/rKGXlHWY2UvdsULBMror5601dpRWzETEna7HjHu5nOVWMMu6EtU/qE/MGV9xX0/ZJzYDSbvR69Xs2qqJRIpdXs69XV5dXVmd4pDWZpH+rhlIrnCntBsdWkbJn2Uzd1ZV8Ox7ebOMFs6s7Sg1uJx6A3US6KSsqEDwJT1Drp9deEmzBiJIzH4rpYQpqEjcxcnU89sDN6PvgbY+eCXvdKWmNjbutmLOAwNhPtRn260ecGlJZEfmvPziYrHRJAu93s/AbqF2FLufq5nz7LG4QqYrgz05V9tGGCUuVpHMDeFivS7iyMRrcM/8V1ZxASf89utPmg9XiRUgsCddQqCrIAXFA9pa6KFcLkvXqQIF2UxP8NMBCs7Oz7UYjsyYm1Dg8m9y8WM53UEHBnjoq7r2aSiuABSHkxdEeCBh3trFe/+TBhlf8R3h/SaBHNJ/4mnQfhNnXpgzg0meBbwFtLN4J0YAXcpF65dr8jYPnGWMwDV5uxPOtmZjeKgvqtcvSuwylLNnlkqTic8QaybCj8G4hjmzdb0y7za07XEi+j9//TshhOIdxalElojbGPOf4vo7Pw0OEWKZkhDQFxlP52DbAFEYPzBvO2PFs4YWiSnui8Yc98WRIg9QXsLgFOD8fU5giv0pBPJSuzUFJyiCJdK5OXCcGU/m+OixHjMKBS4GyQfjqNg1mRMG5oNFqFCKK8pQw0uyAM46v+3EGl8gNuOGi4YTif6ymW+M8FTlYLik5htjPfZ2prGe4cROaIuYeiOVv5OnMtCqImaQWAJX6b24/B1JfgMfmXH0YXeRornsMX52mr5y8oEx/EGU0yymf+fKh0Dd4F5oMWGFVz2wrlHQTKp9G9BPxzjN5rf/jJ+u4BjjejPnIEz9VUi3cqcLDSFnrArpK/zqTNbMmToI5yCk4n2u3uNW8LeZUsky7+Jra/K0OeNQfv/H5dlPIqBVpBUT+d0DygTkrsqglO0v6E3vEi89amEcn1H9VPzyUueAkTtaVlzPGvyOadhO+4VvOQK3AZyTCa+OGpD42olLVpnZrmc7EyhcdeyRQsRLkrahtkVRbWppQ6wK1SQ2RHlRquPMjbJ2SZJ7U0o7l9EuFLs+M9oL+6U76e7x47Gdl5s3j13YqHrG99Ez3kQ94x3ScNlRPeP77BnvrCfRM15hiuoUv5BO8XXApTrFL6FTvLOZtH72v/zgcIRPIcX6PVPiIYUMrDpFqj2XVXxO4u8fTenMdcp8eQg8TwqsJYivKXCtQVPaHZizXfjs6apjbVVYO8xxSM/ezi/aHUq1u0K1u/qeKFgaDkFLV6l5val527FIZzicKfR9/+nrF+0VPGzqKxDAjwBpREpVH9UQN8V0xKQzVn8VEb3Gdlx9Ft6IAeSsvKMVQ0kFgwEn4uU73Qc2Fi5cu/uWK0F7FyspYuEhlP1N2sSCJ73zwt0F6z4eVO4SjzJOxKjI9XLWUMcplyW6q81ulM3OImhgq72ur73ONSbl0lDAdDUwKWfIlJ0hfbyIJphUDpQlOFBcUzlQrnegDGtRKd3w1hhXm2dS8YVYSj/sTT+0JqEfKpRRit4yFL2ON9WIdUrJW4SSZ88mEW4UzBOmqjGmBGk/LJMleMMH/cmQepfFDAhXNMQyJSnf7EU7k9bmf6YEGAl0StDWxh8RmCyD1WhgE4Sn+rsL6T3MvdkzWA8Y3rq7MZ4mTiq7KlsExyNSXAM5t66vB7oavcRKem2lvA/u2NU3OOUD/FflqvWnuLvzAJoBvvEyvpBUbjbnvweJ9yPd5/03H3Keki5CFOTAc0n2P8LC2g/ES44Yh74DGwGpVQwC+Ybt9auWlTUVWr5/+YUSoafFGnIFVX3k0hoMnwyCT6bCp97waRq5tAqHbsAh5YmYff5tDdgpz8IiPAsbpQc22ZkFBKbIi2vnCO7ihcAD2smLvIOPGoLjFIDaVZWSZ/llodlgEqHS7EYxQinuqehRf0re9uGVvAmCjFLbHjJTqAbylKq3BFVvrU8CbWdq1kqsc0zUB/AVchylYPDOD97AZKWwVhafYQ5nG3o+NFTB8cKsaJNAq0rCXCS0Gips29Kd2T9gKiN5+EitKsHpzUhem2PS2M634GUWfQjtJ3t0mr+1NS0vzENsUkqrf1Qni64sgSVbAraKpykD4PGiZMoA6M8AcFQqlFLLlFo2TOxLqWWLVMumne5O8A02ezqhp7G7pFl8oq4Q3EAD2cNZ4nsntHgEcpBMHEwY7Iptzsl5qP2gBEvT3dHfX6AX5cULQuhGoRVaHoBgsApwPj3CkgyEFVlK8xoo89xysfEI/qsqY/pRtwwAFesphclnDwlKo5p9+LoGd5R2NHvtCELetJPA/4jPmqHrGgA51BzTewMg5D0HkFwTPi4SriIRA2oFFkiRITRppzgKgFignKHmrElZWhA8hoNfEEtXWhonGYVYAJXwcimYhuwOe79qzf4mug/IFIuXeQ7OfhiA95X6B5TiCW8Lwze8m8x7LbHj54Zv4u1eV/S8VYW/pHRbSoUb03m21jGqgv8qba4Pbc5Aht80UswVhA0IYUrlnLMT76rrNyGq0lNnrqciMN9Mmz79J9IAF7zOvAful3/5T+09CWjiEhAxLQaPDieplyMXHGmSoB9uuaeHoN0tJHaCdT7oxk6kmTzMlrqcaeM/mfXPXRueANsRpk0MebW7D36IQfSSeGmWXHbZBezefGcRbv3cxVUDkfE41S0cBgH/3SiVtK947mYanOoKrfpBK6V9PibRuhw7lfK5hBDyZtpE678R+MQ5MgDR08vJR3uH9hcwMcmP/2fsYPBDzPYJ0/dRD09ScAlvCQHvrr6IcoW6VfsRacL5EnpvcZ1xzo36pP3GtZsGW0EACz7hNg8uBWNP7LGEAIi11yh+jzT0xpTiqhRXueKqK8W1d8V1GoUiCumU0quU3jsrvZ0fVxPuKqV3EUqvrSB/HMifiXtGbQHK70G3ABV0W+QW4Mwi6Pbz17+TpFgeMSugSJGQY4Ei6RV+Ghwir6ZWCMBiNQ+CoCK8ehicApzpwF0eUybUXL1WPw9O8IZQzq7yKgyUZG9gPy74r6J378+V4E4qBvY44KG0tPmn48sRSmlci9C41pPWuIoEUd9+/Unz4X3i1FJgdF9CYPOiS0JgDD2UGGrpjKMJ3vgpBlsGMJQBnDFrmKsr5yYUQ3ALr+YO2slJ4NVY7itMbAUe5wkgLh4Iy6cu8OHtfUxHhe8IC1sCH8yfpHQcEirFmReCsaQyXvIs4C3A0SmA4gKKc9mrMvN/mJ1JKZeDh6wAeusExVX6f3965mYSeqaCzAVDplKpH9LxWQPgSg1fhBq+VY5Pqe+CZCQ8f2Tg7xSWeIGBv8SHb2AvSH/RdmDhUSZdhJybCUhr4h9yyle0USj9dBT9lHoZFLdbb/rpVlem/qPrrcXkBiAAkPMlJgzdMMWh9FxY+gO60XY8d7B3SgBnVVA6qqmvmsn1B6WGMvUVZPYLmcrUf3RTX7XGW6KpvzWVqS819Ys7mkfWkielnnywX32QhYH3RP7OMxrqHQDFNFR+48IJDHX9+mimKmoeozTbMZ0EjtJse9NsLZUsNUMUUsriY9JQ1YCi0hYXoS3aymn76B4IpRQrpbjZ3auU4v6UYke5exXYKt1f6f7TdBQr1X+Rqn9jH6n3ox9pR6+4MyUA7N8gqJA9hR1Am0q60A7cf432GP5MBH+mbjo/6taPpqMZ28+W81nX2TdLTsF/lwbqbGDpwIabIcMP4g1qN+BlCa4l7retSdYlEhK2yMpB4YqbRm1kF+LvJZe8dbPkeUB3/DjjTbK+5zt8t6RDPBPKj4WK4c9g8CFOCPk9L5E/H/GziLT/6QHlCChgYoH8AzyzFCY0at/OwSsZlJ/8DWgGceRBDnx86Ff/zQ+1b8fgJUPSWL2OVBhFS+omi5XFVkZIVl4ZV7iNXBAbm8Uc43ftdNkd27lBIMsIfJ0vSXxCg/3vZ0zg8uwfvbeA7k7F0x4KSH/zDlGQXfY+L7yGBD0d8h9y2IAgA96dIwdAozPeOaLfRLOgq+ei0z6jmpcQAlQlC1cEa/L3jzhyqJqzdcDeTrpuBCESjuQSRVglAjYP+OpSqkgw3pvKgHLX2WMSZ1kIx5z8HfjEgrS+O0d69JJ9xaBgtlFOw/ZJ+9slDDFPEGYT8r8DgdsX6He+Avn1IbIgETGQiNQ5CEoPuckdUxne5Ccpn0Ckzyk7RDqtsb3fonoqEUJge7faSAMsh+BlJxmWsKKO3BWAFi+A3+CTkut74H/t9D0z1/f+h/8CXSNoU/AS6IXBrwI8gNNZeK7xmcCd4OJiCdQkC71FATQlCmDD/TTNim8uF2RjRI1w8eLck9ZY0Klq1Mg6rdEZRWssaoNtdUomrOawW//vUL9iSh9rGU+oALFoeDlZKvj9+0claxQrdZUeVFhaEMsffCbxGbW44pyIReLUXXw6wSng/3FdVO733JXrm2ayjRv2+Pu4Ndw+PldpquzJLXbUht3ZlXhjzK3swIbuybUXlwjWFbtml43abeOpMbetRm1K27M99PY8VymVb7WV3bIsnPm280fiR/vyj8UNurLHgVfFXUEugfVbX628VRZYM6Jm765uz0zMnGE31v/lB4cjdGOkuAL43Qsy1I4SMuxCFlrkWeG4Z4ViVmYpr8gbL0ulIfC8Ge6YE7B83eF2zMmJSQ9b4UYWmJBFLMh203YrdAbdCjetghatQht0W2WCtx4gajY5iSuFv4pxnQbxMnWJFIEDpvSATcWLv5ZcmkqRpmuFJ19rwyiz3Si7JDybofWoyUnShH0RxiydEduhReonlrNEsqN2cfQSHC6Yul9LP6LdESjStEE3uDsBe8o59DLwU+ue3yR7C/4KJHR/2WWEy3/vv3gwjetPP4kB6kZ76GXrKG+VoGdZ5CrS1RBFJfpxQdi4i0B5M90nvUbc6qOZtRJXL09dQqpUzaeyZuijxbyaY57iQKesL8TJz44w2MmDGJgLYiIY9/vXn9kI5o6dn55u6qPr6YYxtSSjIeVEnjUEAyCtsoZQpESoJIED21ZZQ/RaEqnQJAu7XoliS24ate2SNmQZ5qTThoYUrNu1qLYKU/PGVtKiTL0HLeo6HanDzmYtMxFoSJkUZvY4EoTTPxk0p4f8t5jZI5AipzMmoYsI8nhEP/LCYA+r5vxMFekEpliR6DFQo8GpGXRjAwMKzu7vLhl1fF+tR+Np4mRmyoy+eZqALuMMvf+MLBltdhkuViEPaBS3opqdRhTWKF1LLA6twhMtoxs1m1TbnUYe4zDckcCFq8IqShB583VtBJGsUAFZLQdTjPExZT0bxWNefh9xnrHE3JLkGRtSR43R2Ty6Ls3YMjaj7TmDAsZd3HTCXanZd1fnpquCxL3cdM3bVVdHHpOZ7WwwZRxh64INBBpMarY4OTIIZcO4R/2BKTRmHO4dmwO7YglHOnsB/x4k3o+0TpFAfSk5BwhEsv8RUk9+oPa+xdQbtiPEycGjm0b9K5bVLfMzaF9+of2E0wLd5RgaSYfxRJ7M0RUSc/BM7NmLlnzvkm9QNT42mbEk29Nwrz1yHbEctd+L2jrQWtlI7TY2JnkjpVVzDrOgmrpP/NBJK4IKcdo+ad0+lUBSR1Ry7Qm4XswBE6SZTlJAJIpEyNSgOIQVFHhAO3kRMI5QJil2utYKCuxkmp69XRVx8GwQXvtL+NKNz876s70RHbAdUbAJHCB5MW0SvgAAWYPle+U30zDKdhpjUvlt5pJnj6JoYTZwlvec+DsfnLevFBbFZ1iT24YDHA2dn4tm/OIM0xm+OGPMPakCNq1rHEvFh9IDTtuqyIpqU92M7lPNKFx50yjnuspIJldD8K8MBifyVAfd/KwbbVId4EAZD4pgqCuoj6XXEoOHJlnX9XsPW3FTDkPDJKUkY3M9khHWv5zcxdHXNQU0t1YafH12P76++yWBcnYXE5bNKBoKbFNyQjb67pJm8YkShGDmOhSozICpfEKrQfICffkAooJdWs46gOdBlXhm6onlTsE02g6nngzz6u9d3mLLqlhsSWodPKN9paclChD1Vt1it6pbsdtk4OW3yYTJ0keKTj9fghBsM14QXpKqwouNYkiS6X/PoDPwLdjn6i/eiEh4EDrqZJUJ5PyScT0DpLFMawJIYxnziytBiQIT/iN+Tqm+kr7mMSVJgtx7nLyGsbfHGlZNsQuY924ZcKaTp8C5piHw4faaAWfy4SXLHAkHzn5y8iLwoMGpHd5d6odYcsBg7SX03mA6ZP17myEMQKmwxocBa7SUhPGk4y51/S0iO/KytWJ1v0AU7lXcf1Nop6lczbLnt4eMJ3WdNhS6j+QbS3E/se6wnwh3Dskmw7/1gYkdaKpauvMQ6RbQDc9x6oXovST+OQx2XkoZtd6B/IAXnLxiAvRLFsPTwOMuKQXeGZ2Hvv86hyspgJ2Zhmk7U9ha3LGKWSciKf3Rx7RKtS7uMQKZGI5A5tr8amt+CbUTkT3hZmOLhc0i+XCGi//r2kh+bKnU2F1lxRLlwMHLVX6E185f/zjO0P+4PPtJ5GdgqkIDD/nLKXnPWxArwE6Cs9tTxg/fWsP7R4eXBilhrbHVjDWf1CFzlOKBAkcpPLAROUrxARIF5cJw3CXFQqBJlnedU7Sw8NpRm0anaOGWmATZ+ljRuMHl6Pa6YqEa0hyvk1UUi8Xn9oLiZlWka8yOSct8vKSjiVkXVWPDjFmSh8/pGfbtesZGYrqKUvLZKx7YO/ob4ZlGA0LvIAqxkZgJmHqXgdlIaC0l6dH4VdTnCaH5tC+/VHKFdnGUXk75JNzILPFeoGyEXkRSGbnWZ9pvQZrCBXLs1GAB0H+CSriiSxjOT6NxR9do7AGTYR9D9O4ZcYY6xJYndykeMHTJAd34bNitIs4CKewr4ly4mYZRht5mFLnNXJjHya99/siqdMJUcPf+/pLvdfXp3KtyLjdMdfBRHZtfZNfgz8F5Vky60WeET4cbJZNeeAr4JYCJ5xNEz26VBFBsjfGj2LYzuD24OGFrTBHu0u3E1QxDmKEDDpjCDB10hq7nDKFcirBIyprQ7upeJvzSa0eZzfk4/E3lwuqOZHouTmSvKdJroFzv2DnvZjG9kl39ri3zLHs9JgfkDU2pkeLKbNnQT/Bnk7brnoz7SXNsFHtg+eJsM54Tiy/kQmcAiTvACwjOKHeh9vb/gGY0ONmDX1yMH09CKkLyu06J/x5gE+4R67FGROjtzY2ncj2Bqme7fdigzlfDevdiiawM90kL86qjZqDO7I/zEZT7rrNsjiPY4rNn30PlGWcwk19MO8UtPsjjzAf7kfccwl2zHW8NaRSSN57ntyIiJWwfssg+JJV51MD5+ZLB4x9opyt2pEYfat1HgyaAi2ETlE6u+Wr8oCyz1TO4q8WRoMV15zPMZjCpvSfUwhxBC/6v9UMZY2563CXMuf7Rtwcv0WuoO7v5ldxwdsEbCgNsaV2ncoNrBw++sM4t2xVGPhxGfqGywSPkH3UiBh8Mk7LWovWJ6PbNM3cV2pYzF5GFdpa8cdKzn7wAEQo/uk/9twLoxJEPvwuEYZyS18fjakJsra/3XzWhehGGzpfpLBmdr3ClmIhcyQ0ywzYLR5+0ok28H5fzHj0LloQFJuWipHvwc/xxEvEbss5wRZIPMSBWAJhePvLeANxCMBVfNl+Y5PKy0tziupROOrhO6iJuFPxfW+mkfemkjjEJnfRh4USpb3NW3666fhO6Kf1tEfqbOQf9be+nQcIDbgnXhChYhFVGrcSHpYpwJ4FbYA+faSIduJlLWsmkg4XoXhDR7Bels01fZzMJqq2VztabzjZgWptyFt4QVZQWG2BeNEdvQ/YFBzoSgji7C0Gc4OLisKImWegtnYYdpw1TnH0jU5xjT8maeYzNVVkwD2vByPZ6ZcEswoJxZuGBHspno4yYxzFibGXE9G7EuJNyPD8Kiiht7RHTBeowTSlri1DW1ipdoDG+p3S1BScJKF2tP11to5IElKqmVLXBUwOUrrZIXW07aV3ttyBqwWSB4KzKA15mtsmbTe78BKJigY6iTPNabHpAalsxZ86K1raiAQJiC7qElRbG8GphiFAVH8iJMUr8FxKQHyZ0oxTGMRRGg4CrqRTGvhRGV5+EwqiQbHgkU1rrozoYZbiqlNYlKK2uMW0H4ymGJ+5hwlYQw7dKk7J+/vp3QtMIHhD8IwxOAfENiFCQWe81qWklvsYy9D7UvqOU2DGUWJ2AraGU2N6UWHMaXk+FbKMjm1JqZ67Udn4RTTirlNpFKLWW8sRO3H+hSvwfwhmrSvz702Pt5nIxP9KOXhHoEn8Xv0EXoKoT67tO7K/Rvsiziuik4vDN3zeWh5n6Z1NYHgYOGLrsgJNTAufXklaDFRd0dRlYvtSGUYbealSp+4zrqKDD427aykR72GwZQxFpLNlGc1Xgoa17TuU5L9/jr/Kc+7OU1srjr7KelR43rqtdJT0vUo3bKDWuI+YOVeii9Lkx9TnVcKE/fW6r9LnJYItS7B5dsVONCpao2K31oTsvqljjDbFGeXvHQhtDUdSxpoVjQ8vHPxI/2iOc4S4iDTcW+yl2ija2bdnYpfkjWXwu8NPOhHd0MNsZfyJB6OMaoP+++BeffAx4PwcbN1I84BF4A/XNSbFPpxKufAm9t7gUdsS/yVsmgaWdvAjMCm4U9koCZ/0jfmbfXPoK7svfXbiOqfg79UPwqeDB9LqVcCm3DDgMfszKuhneujENvOeD/yrrpjfrZj1thnn2wXf4yEUpEUhxqP/QFdg8NtiYCmx6BxtrEq6UBwcV5UN5zCSnGoxTTpRFOFHsSetyP735CTQW0x0YBVZ2TuJznHohwjXmQgaYBS/xDq4PADJ5hf5nzbtkMTwNXLUExt4ZnYc0pDqzk2SwyjzZnNea5Cdgj7r8aqWkBDJ/HRRDR7pS7YZW7SzbQUxo8L+qPqQ/1a6R5/8Yv2uny+7YDoT2/lsAIegliU+4Zcv3M1Z8nv2j9xbQbaF4mqoy6dvz+5t3iILssvd5p6/+yRY7e/VPlsP+Rf+Bv2pwjtR3i+br5rPFVxL9LPy1ILrTIJFX2+NeGSkPzgBVt1krG2URNkp7inn+siSaW9KqRLHf0mbP/C1H30uyZ99DRYhnsOf5yO1yAX8hGNuFAUpUQRt/PtiPYP3ZvhY8ORDDs+BAF9rZOUj7Ci7lRzuycxoI0ep0xtIzaNLQK8ObVOfyCWQ7tso6cqc1tldlq6cyGdkM15pyQvLR0OiRa9NYVrMaOhuutJqmkcIOi5VGj+jiYgFp3X+xVn9ras7Y0BhSb9MY0inV+q63A9S0T0jAShXixUJoXd5HtFpK3rlCXHCtNtKUr6ubNDXUmt+jUHwzeMbShCTpLvk//9NLAg/sh62SfwqZOMIUIKufFKB8lTfl/xQziZgQGbPxmkxI+oQ+CEOGXvong2ATcUU4GJKMGggyukMOukwVQ0ROCaeAI+awCvHdvF9pAL4KdMXQA5t1etnt/DR9uYT8hDVp38DeAN+EXysQVeYK4i/bxXs//aT9Wy4wvFeBG7QqeM1WrdxmUZxAT82feGL05OPMC8F85BOQPDV4s0gj9cCzF97qQbTe+ZkI29FNhM0cu9erL+b+X0yd0QS0NkduNJUGynRYzuxqsFEqaq7DGU3bBjXXucZoEt5CwyiZddZkgLEvz55tpr76/u7//d1gCbRL95fZDEIbYHtPG+Ca9P5WdgT7lB4wZqq+wft/g0J7yJFZQ47ALAIS6Ug/Iae7KeR0M5DYB+EOawuNWlM7K60fV2COrvWvh9Y9JiIhk6q3E8jC9OvtNpvZ7LUTkbkuuwpzvrFdxWCbilhcOm8qYpeceFMx+Be/HXZPedDmFjPZw4zR97Dt4HGjR20kJd0zhTZm2zhVl/0UvPPStcRi2MqUvD1edf0+y4TXGFhBH6f95EzAzBwfzMzh3PAjyYLcwexqxvqzpTc7mMHADZ9fUZzB1q9xMOcXFwuDJlnolQ5m/hZqR7H7udrBvLUGN/JGatd92wbVYL0Vd62CdSbdlsx7b0tdLLaajatoWzJBsedj0o0jYUITzpSglcMMN2zRYbyRo0tnLHEkllrV0uNfsjOKxjFC74mZKB32+EqHO9IGMUYXMekeIYR/uREjjKZVLJjyNlG6iFgEWuF8S+ulOY5Wb7pIdor13HaKEURNvFk0JdUZOu/vM3WpiJh3yqgz9AaH33Yzyo4xGLf9TPaJ9fj7xHa0DO3nSxDui2mxnCAAjIoyJA7+9wzWeb4Fez8pSgT4dX/B4WZJvSQ9v0wZdduOUYkndfSDCTcNy7QEIYAbN436gNNNDjEiQbauj6RpDNd75zYbtEZaKrqFJIlHbImu722JtpWWevWiLp3H1meYzM/l36QfEbhIBmQrg64Zxj5VDg1I4AiPjxvzUiqhQ5KUT6xQ6iEjfSXpWCAWtmsL/Ob1MUNR8r3INBU6tfhXa45UtcpM/38PEg9vHKkGhHAf4qfuaUAF9MmOcvIi7+Aj7bAFEStHu17mmUCzlfaVOaSmQ3rwsdUOW7eGlZWJUPXOS0FF5LKjS4o9XPRkclJSG1dx28ZVXFlcZSsPuJADpWiKm0dTqsKhSZZ3fTTFbRVN2baMudBRTLKcoRXXyclXf4npbTXbUtacUKoGSk+/Rat1Z6PVTk4GxYWqji7xoZXqUx05GKE5bnGYNZWl2vpYPC0DcPLOTlUxx1dVNqP50gYViH4SrYW+FFG2WHXLGKWxSbOvRZoiZusD59tS2rydwKWRXKIUiaP27j9rYbx71Xah70Gv2TmJ4Sipb2NkkOgwHgjK2rQngBGGPpw50/9br9gnt5AubTVdbJCgA4YjPLChtbplT5jgdfdGr8SvvGGU4TSPYveUS40x9M7Sv+zId5HuWcbtAveizeRWmekYQrk1dC/fUgxzNiZI/7LVxakuKPa8D5wYt1Z9FhBgYIfpb6SaitVDoALhQjkEqgUGrxcWRsgUS8Tmzdc+1FqQtIah4mwXF0Xkw8t5frRc4pP2axABLAerB8fOcUhod1PMwgsmhws/BWkK7wrOop1jMHZmjJRr05qAT98Y0FOrxLPZRQw0CeOzbdyFEBPPJdbNwAGz4izOLy6WT02y0IEIMfn7aRpllnQxZwBCTCXfEj7OKs2mNPIB3p4pMxvAO5Ue0HN7Ir+WVIobWDTbxTr4pTaM0tuNKsU6jMHTgZUE39Vddr2FU3SXiYX4Lu6yHm2b+aQmK7FvICBtVVjjEPJRqcAaem+VNQ4veOOkSb8nQZb5EdIZkj2Wkmcv20G+C2+XgTm0zDsQSxhIaQbQZeeF+EXUR+rAez4cEv+Auhh4KbHBEZMSuEHwG3j/x/iShB/zcu5a+gRyVYztSKmwUxOYa3x7VwaEanILig6cqoSMGQnqlF5gDp5i/Ud81hwN2CspSm4FEnHywQfEPHYcjxvYpnY+EKqsrsoGroPL1ufIdW6UGk407pBnXZIY43qJkUnCACnW5nxSrEcRs1bOYZ6jiU8/IUSAtwqKnJKpVWYKTwhom+bcCvemtl21kghB7Tdj9brDZtOt8ltM/MUkwpp0j9vfOKY2RM6GWyKUeNiuZjYNTjC4BDP3K5366JWxXQSeip8ioCiwPhULiNLLifIo8VVEbVs0nL0kC+A1VFfba7radjsFdsdzLNzBG/7XUq1se2pla5v2JPqBPjqUqA6gU+4A2jSoCa9UN88FdPO0TWfS2hjNxsl5c8GL5RC0mWcegyzkbTpEXrGmukKdqzSymWtkV98TBTtDKWe9K2fTatb+yMiiFLSZt2jv/CKacE4pdYtQ6gYu/RvFUz6HuO8UOArMAXuxjyIIjXU+LPtsI2MVWHMl+F2zT9ccsfIdgi/CxcpH8Su/XwYqf0+5IA3RbH0UCaqkccrlR0gDbumarsuqw8QHNtyBO0tNM813Yb21yZotRvF3wmTF0geQFRKwiy/ZIYbzR34Gc9SA0GSEsg+p17UaMks/41RlnAjHHZWLCn0Khq4ZThvKEzjQ5RN/qznDxaFVrhPuWkBYdCHXmnBd1+X/FlYsmKI2w1h4L7mUGCOlJA0qMv0yAF/P6SiWnAGJgG/gdbRml1YwqMhdld7q6JX8VrGI3Cm/1dEbElytgcsK79Yitdfup5JuorTh6R7cMW14yp02r5pB3ZiC5WTNt1H2tCXwLkUn15fbV+pOBOJ2r7qTXgrvmYA+YPvpaUu2ZOOV7LyljdekO68ulUmjux7feust5G1a7kjsYR54OxnlyeXcpbswvuzzGiQgFpcEfA2FN0bcBnNyEjrb7Xr8jiy2tR7OSdjTq27tBsQ2sbOuOGXIAUd2YCs8AMxaQ+TGEb3ZLjY3W2LTKKfVqG3zKHYnuViMRxp3X+G4S81PTQ1Hg2l+B9G4rn/OncxzJg/b+RHk31eQOjHi62Vm/DvIgdHFkhbR5NN3aeujlI8mlyiCVxI3OZdod1AxLHbGYNz3dcyQ9PVpMEaLlUwUkUVKAanB8EhsAeme0SUMNfS8UqhEhv5+XrqEs3najq5L2MbgLWXnK1T3JCnU1xpy01fUFHjAkh1wJWEokTT1RXlTWHntKKvVqGqowTaHC0jNVxpbBkL1tSQQWnj2pQOmLjvDvqMECpfYUlZqRpl6q7nsqtyN1Qt5vkI4NV29uxBOQle3Z9dceb4i28oqKDN5OjVFutdIXXvyTqe5StceuGvz71C0YLuHD/D6YAezYxJnWQgeZuL/w9/hNmYlEeB6qcra5s0s7KXrE6DKtAenY+v/5ffdFaAhGFWNOFXf9NCNATpFpphsDJxZ/O0Uw8KxPTgIXhwSt0rdRha3rbDNZaYYI+KDSELWsbyQY3Z4AskVxwaUATOQJywwUjJc4nt3WiYPXpenTNL4hNmE5OISidEkK70lnfDeGcuFu8sFb4iM5QlL3NX0tJUsVamoysSrRE8rkat78NPW56e2k9x6MXKGbyI9XZm6sd/0dSZ7Q79piXTd2HD63la8wEZ35sOGNmGRFFrfjgThigRZqOUFeBuOXIqczsDUlhcL99tgsjBWh2quwcmXX8A7fAVnIWrdnX/OUjrbztsdZdlXLWhqMu9QeYv8Cy6NIhPPTN2eRE9ixxohlWceMlSrgW8/O+3Kd7a0A1b1gDh3yNQlVTzkkmLR0STLu15LYgtvGNUio8islnw59gDK9swETl4tBh6g0Urc4ECZVJmyMrKinNFrtZGzfF1Xy1m+4oZRZruaMiZgzmjJaPOQtn6cnA2k1lIPp9lbTn3XTg3t3ZuOO2bFURRHP/7nf3CJ8URrPvlZAvsxeKGfZHm/6wpHDC0Sa0cIw9rqzq48yNlurSkoWutxy4OmIS5t/AHF6EgZe7qG6su1PNXriEWkbfSjFoXuF7IXl/Q4m5mW9ExDGsX1N2K5M/RSXJ6U30ilx+gqLIbeOkxf8ASM1IB7f0lwPRZ4nYffv/6MVAzwFHdeGFbir+x9cnVc4F0f472c/ZzpQuKq5ZnsPMboO4+rj9VxeWwRuX23uaZxS+sdx+hhx7lvAxfxruMas+vPPLYkCnca67uk0PM7Nd+/073nO5Ik67tUcuBcHSs9vwtN7u/Cnek7//oHdj1vnewIefHgow5CX/QK8/er9h0iIub4+87gycwTk5R7bj/tWooV7I26rcfsdeu5tcdY0Wxi8mSP6W5hggIFChX4p5ClB+1MceaF4P2jTTXx//vig41I+0tOHpBAq8ZP/5nIHEs+zK2cnIKOD3vylAJssvTo7cH2ikTOi7zkgwuPpvhnwlWAaQgQVcHMitytCRS5u85wkbGFito9y9VgsMmU5RKZn01dcoAEF6q1tFbXWtpbss3MVslE7DYaRtGACRNVd1zf4mIEtu9ioubE71uFtMc0pPaBEXc9TjkIp7qhWhxq2Um8irXuQyp28KMpiFge3OO8l5VQXGEpe+x9hFPNz5BYj78TD5gRPk9Rqk1VMT/bZqtUFZNPVem8NTvCpBVycbEsaZKFXp+0YkqTVm7bvZ1S+oo7RK74PGWxhvO4wCpQJ4mWTNEDBzaSA+JiBXLJVvInZwtoLX9WKz2P3UXDqHJq+Vofq9ZuXiLYL4dyvcInIk+WyN6A5MldlEEmbfNx889TTLtkohuFhHRTp3noEtHqnIZutExNNwt4ZI6j53OvIIwPqG7A/55plzN4hX4lnHMOvQz8dKqUCeTv9AhUguzZB9gZxRk8ib5U7oXSq0xAi+/oTltvJ5D/tLaGV+KnJCd39oXp28/W5rPjig7YMCtXeMb2s74VuBmqAtKjLyxfecMochtNc+F7yuXMHktHmpK0XePIap/hUHRjldWfW2XrvikMNQ4sidrjzE7tmZLktSK3oU0kDFEviVvlR9g+wrimpcTaHb/I7nx5DoP0SClJq50+2UtAHvIID2Qvuajicg2tVloKMG1VEIBjnILfzzDkzWiRSlFuxpo+Tc2oq38TSNf4CXrr9Ui1UPOVrZbUg0SREPqSdGFzP+h40SH/tbURHbAdkZOJ/C4WqA7uI71VzZ3e3OivcBcNo+xSMHG9mULh1HxF8y4xxPZamTzlh5v0Osm8X0JPs8Im0cVmyCC+CCFuR1yeUxLqBX2OchQa18mdISEc1FvqdUVuwo0+vhL3fAnCfVsxyHMg6sSh5K1k77bkhpy3bjZ+EuvGGJcfYXKS06VxCtRUZLqXKTtg65IDjkj3opcQC0w33UtvpXuZrUbZeptRTkn32phT0L0mJ3M3erMqCVlXF/BUVSrz3r6t+sSs24t3Nu3bZNZpUrs4wd1RMN9xZTiQT4i1AjUKDsIbLIDAgjRqRl6wc8mCkLxvmtEPfy5J48nPPCha2n9f/IsvpXYtaDwcXzTHClv0hX0qLMss5zuCqyUfNNER5yXiCgN8ALFRXNDSxeWrkpXRcgPCNr3CxQv0VxSTPHrJvsxCvfdfPPBP3KfmTz+J4XMG+xt6MHCXfPOC0HsOC18UeX3sc7LI5yTdXZ/B+wTIkMHjH5oHhkRxlovBHqkEddszmgBFQekEpZNr9mc/KAtT9QzuanFExJCXrc5nmM1qS+09rX4AEGFuntDeBP7r/lDWZm563CXt5vpH315NEr2GurObX8kNZ/PdiTYw6FMFLf5a4PsDew7yboOPMfQOB/jPINpD5za1+6Snmwq8pgNeX+hL46Hrj7p3Dydir7/1O/9EtIXmmbtKU8uZi588fEJ3mBQI5Iu/y8KP7lP/rYAGceTDTwmBC2fn9fEimqBU6+v9VxWwXoSh82U6S0bnK1wpJqKsowaZyVHcmbRqKqgupT1IgghY/hGwnwigxpcEZo7hxgQcjQlqE3IuwDFcz8n7Hpwup+p0bRLUKkYUwlml0CqFti+F1lYKbe8KrTsJhVZBnlKDlRo8OTXYVmrwktXgtfLQdndyzHqrUnrsmI5ZW+mxvemxG+WYXTxmKUX00f2xtlJEl6iIbietiP5GMO4/vJdXgIFekgUI2MEq/RT9C6XCgPcv6wYNEY1LlqxBxrw0hhIIZfE52BUrYvitYRdH6eUE7wqOI5Z/Bh4CTLBJ/ayyF5Cu1vhmwEbyHievlDAJdtEidTzsHughmCqTlvYoQkVY19GaP11GX6hU0SFUUVfXN0+4o9jmaaNU0b5U0a0+CVVUoVa/qKWU0Tkro1ddvwlElTa6BG10a8zCLRpdTs8+eqtemgaHCDwXBvKibGqMt6VMar7Uh29kynYLiH0YdMuQje4quoShhh5zCveH0N8rfVPpm5y+aSh9s3d905yU61PhktIolUbZUaM0lEa5ZI1y2qVQ0+mYV8boyfT3UhrjMMFy1OCQtJ5SGmNvGuM0qpgU7jThjtIIH1EjrIVBpREuQiN0lEZ4FTJPrfOeUgwHVwxNpRj2phi6k4alJVCflQFtHrw4CuaGgTnEYUcIfxTM9QZz60nYvwrORoIzZVbPPI+88+NqAldlVS/Cqt4My8A69ZD3nGhYSRh0bBrW7XZoYsz5CJGcHbNCfCmnyyy2dGkgyMzbFXNXEMtKI6NlS7rMmjYuXTgxS52KHV2fDcH4fARSSB5uiCVQ/+QUycT1TwblDpfIk9FVitA12rGMo6vn0mEMu3HNuzZgdtuaM/a25ujmcOziSxGu2l7X9merXYdhh2cm79jr2pa0gSEXF0uXJlno9b2GHSlh+S29ru1yQxhHtwZoT7QU6azpfu18tpyWsmnzQpxhMqo3fy8cKhRFcq1WosjWdYso2lJp5pffNElZ8gbv5bgUMZTbBEKG/A6diZrJ9AuM+egiUjFspsO/S4Oirpz6TP7m0wpyKYIrth10GWwarPNQ2XzQa9BP0kuooSmRfqURMXATSWEBBeI5ROUTkjQQbCDufWhRemWem/yFw5wTzJkoraJYkYvhf4vzM2ZiILjjGwjrcVynWHok4MFkB3/2GudFPsXg64UvH2EqaRorTeKBtEKrWuYhAhgMz4hAUTxBIz9pvwVpCh8MZcvEHoncUzEzydtuxu/X7ugDO+3/miNUiZlrF6LNOQY/82lur/7Hj+gewVYCrB0gZvHugsQgjniAyyBtqvbinQKwlppKMJpyxqNXQSz5ieYlUYZhTUGiBvfhz1am7uLS5/T7Vp1Gcxd7xbEvEKB7OfZlin/35qNciICKnKGPs33C/TDafbA02J++fhEXJ+zC+LLHhxPvPWyfjsvRSs8Mi0x3AlhkGAP4tMaWhkqT7LInSeqEMjVT/2xsPjtr4QFBh0Z0gLSlBg+Zv5b4pTf7htp5n/ilNo1q6snI30QuKi189MHuqO0AEEU+eKkwM48gCByap5tJMKSxM+NrcIbvGejUjA8Uabrn4OyHQeRTrTvP9W8rN7ztD6d/raRk7WFC/wtMeKl2XqTC74HrH9CtheArgHX35FFgGSEX+Wyu0CWe4CU+G07xoMEftI3aM1f0d6tw0rrdSaUrySdDYtx8k0C83fXmaS1qBNniCVWkUfq4pCMrz67tnPJ77zxD66eaf1fWyN/Vs5ftjuD0FGqCOD4OrVZvhyzeMCbGrh9iF10U7xvoc/lAegGI7/EVgRmfoHvus7HdlH5xrG11DMoglR13DZs7LhjdRfYdcX/va2S/eJPyw2iNtWeXb0g+uPFZ5BJrjyOx222xuIrqE38B06RAI4n26T8jWYWaA3HFUd5ovl3Js5f6Xcu+KkrFPWQZT/rZKvxlFv4y0EKaD1lIVukfUB5dsapxlTzmF5EdMuWHyrfQapzFy5szjrzRWELR6ZclPjBT4Qqw168oX9DLHMbefiWKDiTeCxwTepGfopt9BlsCdNJpl9Q7FNPYSdIRlVKxAxCA84/U6xhEL4kHVnfZZRdw/3uw6Ai23kmrfkGoLHkJsg3A5OcYTwA1es3V6ad0Z1l/hffzRO4HbJP4b3Y/n421TX5DtwpGgJtLn3Z+GBJEqp6yNSu/WVa7y1lWw9X6XPW95saG53BPFsDK2jTuBysDykTna7cQkIHup5cL8fDqjqyAnpP4dIYmcJaQWbxI++nLj/sETSQy5UgfiELIhFc78YzwVu+tfqKZ8UM09epvxlY0bqUVxpii84pjROd0UEbd7R2V0dIt1w4wto0zVG+sYcbmJ5PL8nocWSbBZtaeDgjzOQSChuYR9kRJJfkHbRVSeXeV+wp8PjHEGXAnT/mVwS+1h536w9sWV3DarOIOK8Vbaa83S3qE3O277PfNdLuc03l9974hHgQ2o4JAtXURRAaO5+OMoIGkJcG2RUm8v2BviyR+xrpoclDCTAOuwrTcThOgEIqEQElCHZJ2aM+VlC6A1dxb6YdviSyUajhkqcBIJXdF7d92g43mwWY+eKW1nBU9xT6W223i1lu8s3X0+/laW6/vyjONjmf2/wavvZGOV2GQtB3ZhRFnXgjNfe8195sJOvlqeyArSfDMd/yt1UhkgCTMgMSaCgPtQTWVFmM2rfQIrf85Go4behttheob62H0ja4nbLorANrAE7Z4DewDN/VxPvAiFRpJb6Wu7/iC7Gv88bNf8WdP2dHSy/MJuge5z70aGO0pEuqW4pvUMM6PszShz44lP2aYxXHgpXDDYNqOez+1m1+8PBRp1p5ZXG6rgeV7zCXPGEfyfofpZDB8+AHB/z0JsgyeFuNuocQvfvY+oDdcJGU1m8qblwTxJS0YzsydXZBPdK07Syeakxqe+A+L/wO8CMGQ/Ff6DyyI5N8o+WP7ZN9LCtkKJEcs6RF++Y1DuHvJBW4qiSA0yZrqM4TCB/sPc9bH3dHfX8BfQn2H5Y7UZC/GycGLaLvcL7/cWdzA7E/B/rNb+Gtd+MteaeJR7PfCCPCi6B9I7Nb389jnF5EdWssPFRYpPV98T7n0WVPYaH/++nccs8NJ/2AKiHzw1zA4BWSThfROHpCtRB4kHD2LwjTKPzCvdj6EywSoHjZsnT9eGQxeHH/UcnXnjjhYuJGao2LHtXzVNUkVDfebS6o9Mk5eop13ORwzGIr2zyy9+x/xc1pt9Z0iaYZoj0CzhTMadwVHYlqx+cA17iyxYEYW3IX/tvN/YqNc+qPVxa/iGhvnftJJLy88YEt+L9xOwwirsDGPnCfRsuayXDZVrWRKO5ZdclGVlThGsirUWa5K11vxBZkoT+/Owksv94QuJ7Al7covJv6FLvsJLBsmF5JwLlok+G9pYqvFxE6biftdtnB2s8Xs1tWz3/HJQNfL/F4o2Xite0HbDEV6sHtovtQdhb3pUvd8gGynccfdafgqtksYRkB7gQrPLj6dQ0Ts5R0OiX/AFhtbhMj+4weekxhywhY3H6DcoTyS2vJc5vrGW6A4We/+Wnwl7aeU9COKU+R6rHgO8w5zdFvHSqvkXk1gDebA95Bn8l39PqH2quv3g/hbxatxQvPeEw4teL0vaGgp/D+IcRAi/HpchIf+ZF/78i//qb17ASF7K5ShQHbwsrbfQ6gCT0r9buQvq/AXjCOJRuW/W/wI8ITpHzBCt1nfz9zMLyI7ZMkPFW6jeVDhnnLFYKTUG1pimvgnYBDCmf749RuyD/H7h0/vxWdS5JXT6/kdn8/PKXuFxfs+zuVP4lfwz7v7h8tZvvg60C1qOE7jENNtMWQlP2pat50P1tgwe3vXjOnq9wvjNTzWLuNNt+v4hkdyt8man37+5Y6coZLT+ULAhzMiPyXh601fwbX8Xeu0FN7zUw4XEracHoKG1I50ttUfN5ZwIAmw0R+sbbtRxR82XKiROwl8MWv9ziFH/hZrR2ys5ikEN9/5lOqTYCJt6eNuRtjr6b9kaM8pbUhEtPE+xG05LV2fnB17jpOilI+8K7nr5o3LajHLSpMfdrc3TgCW0DR/t43JHGBjctcdNzKr6/xNz+R+s7V4AfmHbIwcSfsjCaJYO8OPmlQeJb63B58NwB5Ws1T0LFU5AzNgspCWcwLqQDgTrWu6/96UfDzhqT+7puBHyxH+uNLanFoZVfphbXf5lixjfdctq7j8+hGW0zxC8Ew6nyJ4QLmsj5RdI+hcijbWPSO1LPUtffefwRt4Trzko3OGsCCEx05KmxKI+8lJLKR6MpYPveagsa05WE4ezU9alYzKtpfbyM8zOu1W1vaOCUHS+2g30ti2HXn1A205ff3TzT9Pa1wzaUe3pPjlBeWtlYLulShHjaNDajNxnLWTUSubHRmW3jzH6pbTjdUNU6Oocd3dwS/TvePeV/8oOwy39I6zr+42101PPP9mR0rE+umSxekphr3g0M5ZTBys5gvm3yy3ZZZyCLlaQWnzIsi0WaAdpx8/R2sOP2LoQv+k/StChJTsyT706vphfEY4wF0C5+mkR28fv+eljX1uwnB5kpAF+o3dTSGG4a4Ek1iCWay6WdaCWRyz6ywb6V11X5BsqnFXda/HVClnWsLLJ4hu9KNsLeLzaHOL13wrLead0Hrv9jTZjueMWxMURHv/O8B/7OcgFRlxAmkGM2JEYid+WVslVbQ0LZPXVmlRUF4JNGCavGXx5HiWXaYerP5imHbtHOB4eUYIgjVXBHDi6Pb9TLe6m6sZXH8Y3XbbSwmeQS7CY7MScR3CUSSKZIeRGDHsUMyEi3UBR5UdDWYWcSDKUsnAtTD1O/y938ojcCnCX0rrhYyVxn402Y802xz/brHfS7OYsgNG84HiJfiZ4Edx80LBp2O7d/x0bn9y8inNVqOMjqPkDzj/4tbT+eLSjwjMkMEiAeh6ZLHfOk879xHh8fG9uZDotDQBiP1tlv42SLROMtxY5cfMVWVse1ceFOq7ZUTwS5AfNOsOVu+7Zmz9Q8jFclw2H1o+utdevCCEHJmswhQs9eRBGaVHRBX0gxBzVX6p0mY5Bf+pJbABtbrR7WUS7Nz9cFzVH25goKrcUL0mX/ssWJKkNVLOzB/xWTN0XTsFEXIKE9q5ALYG4XLjS16lQqwSJb9fzZdf0EtILWDygfxLK6DgJBklTfYwxVUKpkHhnjjZ3/1DIFuZpTsrHFZD2uSaKlDomLHhj9Emee2OluYtHDQ3hYNW4aLdFgQVnavOhN/cWr97jXfH5Uun6TC08qRlI+/42NnHbOtTqJ5s7lNZLF0sNbSX6EMsPHRv+zhPdN+Uf3EqP3AVMZ8NozIDVvb5KdFuYtyvoKG43JrDTv3R8o3UXYjXsG1jVFUGCtYJUX3vLinQXQgHEIlHCMjNUdEseKrlnqbkvB7odfHMpJq++pMhGLXS+D8twUnFEdUTIPLWjiBazT3p9Pm7rD1uNJ1fuZ366ZoeRi6sY9O8AEXm5EVApsDThRq2v29KCS5WiEBPykvovUEPZA27C3W49MBXsOHoCLh/IldB4SD+xWYHwDtA/4JUzuYdAZBMLyYVkP3OVlV3OF97LkDWqGiHealKXjvKerYHNl1e5VGv/FbipkUqAUmvZ5J3Iej4DN3UxZYM5zhAAVZw/zUtW+/PkYhZ5Gm5MK0RyzvC6NecZF1x0rYUApnIRVadH1eHLCzb6Ssy2GahN85g3TrDNW986Ct2f/059o2UcvINpZvApE2acHIi5sWtiSfYxKhLOukr9kabL3I0S5Uf+F5V5eGbbYGiqTSUp6dy1nDD1Tc9xNiEbRkLd1R3tLRm+dD6e83F0xm759wlCLFH9ZL4lZxFROSHJND/nsEt/C2Ayfa0S2NL0nR6fg/KHZkaB1PWgt82ot9WWvE81sQ9/80RnSccBl5laTawp5jW/US3fI/1AzaNA9rdfcMk4nOYWLujapz7JEa8lABAYRwYducCmuYFIe7fvv6mPftI4wtS2CFkL1c3C9VggjBwJWYMlpoWOn7dV9rBesrtF6gfrmmA1TTAQLcrmx7f6S3TY+u+7g4Q5Bv3C1nUPq0Oo61Oo29+jl2uxX9y69l5CWqDHLnTQJqZ0YOjgBjRJv4Px3JocuSHleEWy46oTIB6QK3vx/0uXKRwlCmjQayfteB52owZVtM8Ur57AtL0HH/X0uBP3MPlp1dYqrvLoEOppLEAqD+05c2ECnqCMt3ePCDDEmZrdB1tF3opybzGUTXEdlgMpyGPLNHy0cO9N/zDlTyhlTDA5X4yBT+ttIaTjOKI6gkdep3Z5v2KJkqrqD1uNh2v3FTt8MZHkn8fI4adHdqLKGUBXlaSFMUJnPdP2qNdOwbSNmf00uJ6hjtLMO3I4hT/tIt/mph7XjK2fLC9gK6tO7bM5FYgPWbXHKvcpHyWykgqf05jpHQfA+GCx+ktorcdpPwoIDcJ7l2LvZ2V4T5BysLMSDCp+PrfwfMqCKlmcKoBbSiJXBwsoWznpehUqBRQt3DOpUASOdsmQrBEs8IiTG4R3mUfZJSanvbqBQbBLowve8YEDpvuXpIg+xC1/eK+hp/JM2OfgkU+hRV8YOAzD1KUmpQ/x2dYfvR8yeDxD4QEUZzlz36Pxfx/w2dbNwNixqUzlM8uXD6K+ZP9oPwOBadw14sj8vr5d9r9FNwts+NVVj/ADGvo/bGc7Xb9ZP8g+GpveNCVT+36p16ZquMrqD+/+X3cdD7fsNMxJo0ltKCB8KOnGkDmfViBjVJOBt7yWFIGRwqKA0A5L6iwwKHY2ZPbFsGUh2p5fJVtFFUAimvvK0BFyWpq00/KlN0cjtEmHGDHB1pshvVYmWcjPXoJWZos/13MnVp8wNWO5jVhMwWZd4HMNs8FAihkIEVdHrYASBWA9g+g5qQBtM/UozKUFVu0fPv1J6B2gQeM3aa4KWqKb88DIBt6H3CYpetQ+YqjPbDxEwBn4A0AaAEWClLIvTTj6xK4CSV2DdeNtWMXA3jHF/gmgIH/Sfs3cVoBN2hF2r3FSXAICE7uAdZjawo8qCNMNCg2hOVMNOw3Js3hmA0neWrwZuHoFDJhC2+1KeVdwfCgMIzz1cB/3fXTVsFw/zBszcMmJi5yD4DEG6wWKFdWQYP0BSxfO3kRAFKkdYrc5oVeVnlstlKTyy6EPOdlxCa7Q7lxTEH3ZCppcQEllbuBqJc/VFIt0XajgGosoDK3zpNF+lkbCqj6Byp70kC1xF5SyuRWENonhOK+TsrkHgxCnTmY3F/jNDsk/rf/+lVLwCqfARIJWyA9Q76VNvyAeDVB9JIAozi57LJL4sui19zFmxyPzPQEgPMSHC6MHybaHZOYpT2RCErpBrrGa4j5jLywOPK4wk9/77940Eb+009i7OQFL1VB2mjmq2s9ofI/01WQNgSkufMwX4cm4pYYrGeSfxPGsE3FJYm8UAOXYdHmYmYQWFTmvfoahGA/18NkefV1xWrM3cYAm8V6UqAS+gqxxkIszFsOKVkMhVhDINZ60og1d4oOaT7LeFW5CtCGVcEQpwgpQFaA1iegIf4RZ6MiCN0jCNRfWPSdFWPJZa2QJt0V15Ml3gtS2AC6lddQItGvOsyglrfzw7Dci+CT9msQ+R40m8Ff5xjDF5IMWOSD/XnQkwY2ikpBuMK+kYMSrmErj9ogytx20thXTCzJK6nxJ/kmKqkul083gI9cj4OF1RIrFPbIzXyYpAFufI+v++xlkLAQo6aPEgbxAsCzgnrkDliqCGKaOC9oY3Q4V0qcdCjhI0Zu/8tZOwLDN/xQIDVccjJ09NuookBXsDQALLn6LGKl4IPfvSKVgdOAaISSqUIe0C8OpJXHFZCUu89IDxCittEgaxdtCc5HLyqNC0y1e6ZCuX5RDrVE12lXTYVy/aOcMQ/Dc4RKb6kX7BLtvMvhCJnJd/6ZWb9oPaUAACkdQd0U25YIc32qRYtTaDSWYYiL6oFhuHFUedgQ2GTOojwMftPlICQr/ypQZtV89LT+iyva4rMrqnbhqo6kUJZ2MQUKJgVaAydT2E8upYdSoNU/aFmTD00OROPQ6K1HZU+ywq/yNVmxPEmtZe76+hzfom++0U7NhwvrCaAx2OjUhwtXDv2RrEgTgR5m3QD/BaCnwpcDgN606wqKOfcstx1i0F8gCOEK0H+uwBwCJ9yQDSdl+NCL5pV7LRQCm9g/xqWaFhJQ2YTVyoHCmasiV4DUTwYfVrRDtayH37/+rP309Yu288KwAp+YcQQdTrz3sCHbl1szmpbUkyoEG0mJsx3jaQstT5UROwyeOTOqk6rHM5Z7Bew8nDRLWPGRKzx3ntdUEZHUVYxJEq9ZCUDwqHZM96zU/jWK3yPCYie1XLl6fGzEimsDeOOzbJIj67ZV8QDLuC3drTJtp1IngOia1lsVKxgCFd0ZaXmLqayU5H9MkW9a4d+wpZ/bDU7ShQzWCv/6x7+1ipW2jJWqKncFdX2EXlWV+0BQt5lRTi5mQkv8/74AlEm1+IJQEHObsV+xfUhbwKWXZ+Si5xCQ99NhFFHhUwU8huEiRksVPh0IeLaTD5+aToHUl+kUaX6tY3AAVlLGOjNQtadWz5IQCqcrAVERx3hUiIV+0n4npI1QQlA1J1fqyUdey40kVLqbgr5SHZRhI/NSpbsNUwO61ufALFTTJfLdwy1GUP0B9UXtEi89amEMgBPGEeKXlzryXFkLe5TvxpGw8Ulu2i88fU+xuhIzthfSMVReispLmUj8wnZUlsqAuuV62rUOWwfMRthBghBZtkg32lMjFkBqwtOPv/vPWhg8J17yUYs11UYQIpUyPyltiu7K7GOaEY3ZRljbjFIbdsY7B37//lFNVMkrsMQMTntgX4fxGXELcPmGacl6Pp1Q20O0UQSIh4DuMzuU7ahwbzS2pO2a0JPbT4bSLAcAPnMegYvB3WqysEXinwAkwqdUKj0FePviI0URL66krfEgzAVWmwjKVdXpyLX1uHc2rjpVkdQBAMlSfWtKOtPzB9TPKKsHMF2R7kcs67P3gRsFVsMW19eUFWkvLyrIMHq/FsPcKk/bEPBjz4A+cgGtqFt2fIlfXlI/py+Rt1ZkHVta8yfl+R5cYwaeoY2mfKAFV3OTVdbHqFkfqLs3bg+jcLFnXDQALjoq60OVHihkap0WokoPhtLYZtKiADMwAqSB3zn+9mEGq4ddUjCKV6jJimC7z1vIIKnDCndQwdFY7cu//CcyJGmTTmA4xmcfhw4qaMU1axG0JigzmBSXQ7qOYk0TPVGq/0GiSKiw4dCjwqnhSt/dtYMS1mBxlHJlDYBM61kURU250ZJq5dzcylkh6Fi+ORP75ix3/eQqPO0fTzcqVtkqVtmxWaoE4jjiuE4ghxOQV7I2y8xxx7nd+MapCs9GS74goU5d3zw5Cs/6x7PtLKhEWGoZaS3gY1O2xnDcg+mSAMgDbBJA+gUglZKgC8rZ5TGFhiPzPF6cnQbx60da+1lDeskXXdSzIykFsqpAan8cfXLv+AtiPH+4pp94TpmdIHlq8Gbh6BTsG+JbFe4ICu9H81TqOmob4QD9davwvne830y7iuOvOGoCJ84bEeKmNThLlgN8pKW++h8/oseCe4wCKIt3FxQyjQt9JDLIMwL04VMAllhTyoHhiEIWpsIrVO3zEylkV8iukF0ag7JIGrVC9kGQ3ZiFJh9dTs/gdKjHk3q8W8hf+KK7csIgoU0pY/SCa6QV1o1Vi7zGWiyqSVZY13sm0MacW6kcUnTgtyvX7EqKD9LuQljbEZVAh7FPIe2U6T/lCo4UNlu8wBAWLroFU1ecFvxUspOkOeFn8OgR+EidMDzIYorqeq9MK48MF/FHPSTrPDEr7Ofh67EVSI7l2nU3LFS1USDZv0I4iyqW5BKhSjYxcYPExIUrKaYBsUBRnXFP+oqUTdIz+CccjLrJesQSZfnVNPca513L0y/PSXw6Z2DajPVZirSfvvy4T4I3X6zMEsbrAjMgn8KEZ0R1OQq1hkpRcrbOBrHZu+5WpSgNgVP2PELq7Mv99yDxaCoSZnAh1AE7SBuAY+snL/IOPtJRWpixpf5oHAbg2YQR9rs5G3v1I0pj8Nh1uI9hKXMegSenKbwbLaFI3zxZMABvGMqUHQL9nFkkaE6r43WbGpj0IwJ3nMHYD/TjMbdiucO4RFfE42NlL94HiRoXhtxosKs2wB4bMq8o7Okfe1zVDFLcDHL+LdkUbA3ezhG1QVOw1T9srefg2CKedB9nYcdvlIcU/A/oFScPaib0iKjel8thkBO991zPp0BkMN0HkqzAwjhUIKdApHc6481MCjk8YCNl1NvEtaDBHVMZvS/QSC5JkH0I/d2qPeujubC3a5SPoBqyDqSRbFVVWKuqMJUgq2pnp1Zr5mwNxUUwBEpudZW1NV7WVqWPhIAhtOwbp+qlMH+VT1rF/nlv9wqzJDAD6aq5bUSp3yGwV1mhXRC9JOBJJ2CvAVsV38+10gYxRI0l0NunrSXABMisdtnGoVB27LSvtakCioOg7MTbSGyLKEtt0IpbHVqbjCivGrJDLRqEzOZya5QoXN2ihzipg0UPGzRGHDSspnGoaOLoLVoxUQrMb1DK3gAwZKpOidPolIj5mnUNqHnoHrw3YP97z0EYZB9clW1abHoNm+TQPFasahGtE/E3N6e0ceAXJwePUXiRnorJB0p6W1HCZnpn8HKqqmlaHRadta40t75DEgaATGseXsQekqxU2wkVtiB5X6rRxHA6mv24MVDVVlXB2sDRWNVIdSBYm3ZKPdVtWAPSQg2RrLkMBiBW7yhlm7tPCXXVQc/qqKvtWmWNdOZW2qkgcbCOhpD2DTWogLWWChL7h0R3FuRAmNoTNYjwgMbHOpmyDNZjnJY6KeP+Dg29nlEWhhByUIuxNA7f8kSXet/e0Uv2FbjEhdwKQEbyVDnbzZqwSKrCoUHgZK0Kh8SFQ8rZriCsY9mQcq8PQxq23cyhbAh7vFFBD/hMf4kP3zIvS38h/Ld1KMWZTAV3EaHZKthA0pKAdOehNDIAd+c49UJ0vcRHJd0pZWx9B7MBBE1ecZetSxbD08A9lxbXthRcUXON3uHZQPqTZTvKQzWE/rRVLNz9sXBf33qmuXtzNYMjd60VDVNkKdL4wO5VgdvYRNTW1lTGYf/g5ur6LHxNjxr4kzjrne/fWeVS6KVpuUl1/gT8Z+0lAeYkfBSilDawwoxUBOSrL2Jj/A5DAMfgjGux4AkAp7PjKq/9wp0Y8aYClodaMpZvSWHqWJiKQpkIU9eqwfQQmKrI/VuR+xdVv2aFrxRklVvRPDGG4tiZCt8+tFuVvToA/JgzyUx9Dc5n6tXn3enn4OzDOsHr/ep88Tgy6O7d9lTZnkusOlpvntbK9hwOqGaSQv81TrND4n/7r19pbgLCKpjewJCG5iV0IeySGHdnEuODduU/4ksSeaEG5kCjSjAEhwA70Xv1UT23n3PT89pRIYOsxpHHytyZhcvyyJCnUCHTaCkTJma5t11Vlj0IMtlziD5OFyjqGVol6lVRuSrUDjAODUiYGNSWdq/4rK9CGKI2YxZFNgv2ZZW7Amee5hmpCg/H0tQQDkLe++1G4eEQeOjMwqPVhgCaZadCjQ119DknMayQROT2eQ5EDcAQBMWg8RJ6bwIOiZLmh0eVIAX7+JHU8NDCiIteo/g9wl51RYPxkJkerqVoMIaEOXcWtUjcJ49ij4TD8XLeo/YeJdXvDFYCfjpVFLrcQ3X0gSL07HsZlBLcJqRSX13LFDmiT0+B03ClkestgiPkJ1Nw1D8crRUcXQVHfTVbo1yR4uIjvkcaujv8WHewTCoJvFWNeohOZXSKPMPFPoC8vnuazJvFGTDyWW2E5NbgsuHo1INsmBxucm0KFG4OjpuQXFHlXwyAm5tZdGn7+evfMfkq/JKba605IuzadkUNQQZqKzMMiV9ekGJWCoJK2oO3IXHk6tdxNnBJkxO3iVOANGI9gUFafSsinwHgaTsLtW7/EXkn6I0/JnGWhaj2+h+YDL+CDdwXL8vKqgDR//KDwxGOSXE0gyahpX6a5sUKXOz1nMTfPypXLrHL1oUtykPgeQp2xoIdXddRVioqA3cU7vSOO4Y+h6AmNhv3eRkjmJRn/8uTqOoUJa5Ht1hRUTWVCoz41C/SSFvVVA6ERdNOkS86kNjnDPujkQyw+IKMJ+KPwYWWrAjnL7kvK/FRPsY/lynByq6kGgrWfDLSQxYhhhd5yUcBDtHPJNcU+6Jw6yOZBQjtzzA4BbhLOGeAFpfStRFTcIKPDQKwgrPBOlI6263FkuyVj2kAAJtJkj1sHwfhBthtb5DVpkz6DOsCX8DytRMAlIOPTDhRXK5QU5nTb1V6YLMLCR3zCybyV1g3VnnR1kGqm7kxVS5Y/8w8rmHNwYyECaYnZEjugGkVnyBLRQI+c+xwF3RT48rIy+wW8Dykz8hsRuZLB9DzEhwumG4D5mPtjknMCL4IJ7YkINo6DwLXfSMeWUxzRgqxaRk2qr5GNLXg5hQujedWJz2MVFvfYTQyW1Vdt6m6VmSrD1l8rchWh0EhRWc/Lp29KDH+yy9g0lc/wvw7O/+Mm1TCx7jzdkdfEklo4ebKoFEqTf1flUeRiRUcjkYvhqnsXV31tx0GDqedUf/tFMMT9xqy2FD3okpyVha39ZTzyljBdybMwFy1KQmfiB9P4dWISRLgGyJeLgVY/QPWeh5+/edLEO4RKlySapI98jSxHPlzEsMk8qQYa+Q48mX5UnU59tSe5TlnL2EYAZULe8JO5xBHOgmlNbzQDqibkR+moiyuwkBSk1nELphrAf1wtaXdLEGV01Irld4QahWmjYRplomrGqEupiBtAEjbzAPSzjClKgJYAmYk6k6Da6xY0A0GkzrrtC4LFA6rL2IE4HM6ZzR1A10/0n768uM+CQCuitUqXEpeACZetcMzqqSIUXO8gM0HA4Wuu1WusCFwZzuHQOHc+h6qGKSCvLpaQwczhamo4zAgZyr+/Dnx56uObwpJb+LQV/3fhskyM43JN61caCJrRcGE1U0oTpJHScTRkRJqijXqsu+RCweXa9eLGwLbNrjaLnjfkIb3k/av6Hmm5BH5sNOwH8ZnFAfhLpHSVBVYRxFEYOuLduBpKVgdKz0FJu2S2nND4eoA+upM6hb69cHJghmDJ+cp4BnLGQidgCuSH6dwp3/csWbByYM1I/8FZ3r88es3pGlhDjJqAGKlr21pd66z8f42YOitmilxeuM1A3YyQEpGNMulynETNvMQiTRS2pYOlp6uZOTin7R/E+fLcWfThqLAyj4EJG67B9okVhtx01GFn8N1QDdd/clcWc7WsFSF6RCIaSvP4vw6c0JStoSnLymzqImoTITpgtVFM8NXwd7YbkDIF6JAcAAQdFSZffcye4JFNQ44RraWwYeyvyBH3i7x0iMAzfiMWhzELy91OqCcc3JVgDae30j7hY8PcyibkWixr1oGT6qo3rEdFe4YAufcmfTsnHBRlSwzBj6PaIds4QNkcPrp6xewwrCahbwL48seH06897B9Mz80rbJIRy6VMHFPKENlvgwDWWvVI++ePfKm59zr1N2Y9/vdzb1XSpSM4gS+8z/v1g+B3apwp1FYPnZ/P8ddP20VlveP5ZtZsBY8f0Bb9j0JMqDRQZsRhVJpTon3gTyK6eUZ2ZDtYrSUpID3y3HtV8phW5mpPbcscoVsA8RNDEw5YG4hAwvOzFZY1j+WzaLshIJYApS3ZI8h4tnLdkfqRUQGLu00H0CVMQBGKw5B1OPailXSYizASIDUnRh1Gb2ctSNQhcOPCpptHXCrJA06CBHmIi0LxnjkamVJ60JoR+iNi2tkbZxRVximfJXjHCl8ChfEwo58C2Dqij+An0p2kkK54aLDa0tnPa6U9d0/ylm66g14Y6vSfGkoyY9QDlAuLH76fGE4LFOfvo3TEGX8BLT8GHcI5KtBVA+sMZry2a6tAGsIwDIUPWcbek6GTx4AvIzW69LWoDBKi6IULIEmBcsBuuSH0ERUeDKYmUeINp3tVnXRGwRPzFkkFL+El/SIDai/gAlPQRgGxGFPesLAAOoeTAJ96fHpHEe0i14E1IMdLB9jpfxVvJFwbAbRSwKMtOSyyy7gyeYeLWnlA7RHfe3Lv/wnwj284AK7CiyzKqpZe19xWY5KMK7bsITB2W4U4gyCOJZKyJ1RQu5fUXgxgQ+a56iDBJ64XVcMfva4HL1X/+NHJCY4QAvuO95d0GXiAs1n5j2HYCLwXMErq/HT4xgmjXNin1fBKuQnUjA6dkqvYVjKEBwCRudR1zBbXkuFgwoHr6VGVzg4IA46s8DB/ruEKkY7hVI1kUXU0VQx2g2HS67KBbsuF+zRLXAFimOpbjjFDJuyCiL7h0jVJKJdsgUFaxThAHOTboPy6EZ5jUSVxBeUhD4YRIsa6ihMGrnLA4xSKLVtAEzazCHt1fn+nRUBhV4KExuALpVW7bd3/1l7SYB5CNUiEc8Q+Mwzv9zooailxe/QUD0GZ5L8eoEuMC87rvIyKmzbYW8XWB4y8srqjVTPwxoWc8GBB3SAbadjjmCzQIjJkXVWqD071Vrl0d5yRDZPN0GV/TC5LfXBX8XrMW2QqJq7V4WTo+Hkdo3MW93ZKt1tCJzcqijujKK4TJe9RDvvcjhmEA79MwtXoOy80lMgzW2RlY5ITlowD3ApeaKUXYWPo4dnN47KchkAH21dEa9PhHhd8Zc8FOWSYSv+kmGAzkBAN+2ChO22WIpJUQBmERcSiOH3zqzoUkNq8MU/Q/cZ0+Da4QGBghbVoUht2tPra3sapMXIBI34MHhOvOSj9tJ81TxdqcDq5c18KT1UgRJKgdlo9OouLgcF1q0CswG0NnMO3j8cs4UsFfCb/SU+fAOWbPoLSUST8mQUOTLkhe6E9ELS9EvziD518oLwOf6upcGfPsrp++kV8rnvsjgRcUId2pqQ+NHAiMWbB+5QEjpG1yHOT1wuinp+CRRChMREf0UiouBstFILy0ABVvCdKSN0CDhTpRZzctJRSzVvC4az9hr4j7hcQdJa0U+DQ+SVUV6FdCfWAxGgoWqgPQAKTrtSYmaFBarQfiF8agZKLFGF9kOh0LTrFIq0uRgKmDssvqAvHLPEllJNTrC1INDOBDnCfF2AIhdXqg8EHRe1C1TO+YFAx50R6ORmD/4k30RtkaWVU1TBaIsHohpP4l8jHIg+zvmN33yWa+tdMnBHwBplR0Rgp6ivx1BoYOaXjcwqV5lVA7SWt9fKrBrArEpfgzOcEeaX0ros7EQKzn4IkJByuCL/enN1VlUpy9NXcfWBwqzRtCOc6++uN09rhWD9a0ezyPVn3/K/B4n3I3WsED9LiW0VrC3Z/wgzuWDnFG9fzABgEMbzpdZ7y1kNegk6SoyrZKyXxpEcycZt7qdQbbhSc9jVc0W63ykc6x/HtjOy8lRHJlFOGMmtQAopvP34koEpcRYDTvcApjDNYqgeFLTgYsm3N+ZctIqSlviTlAE8ujKJ+ssjV5u9UebwACDswIT/KsjyVwOfKAAgkpkEEx4OuM3GHvLjxwltEyI53RwWbHvF0ZWsJymGzj24Rwqd3Gmq19+cev19oXLNo/0fdZ8H/ODYF9L6s/iEIbbFzF0/uJYzF9ERbtR3mPTsJy/gxYYf3af+WwE04wjWz2AUpqAJMOvON4UcsEZtt8F+Xn0Fv/uRg86X6SwUna9wpYQINrwmccn3OGMSe1yROIApujCDsFLWwYjXAbDhjjLEZQKXhRL0dvVukBXtYovx9iX03uKkqXACj/qk/VbN+kMaEG4fmNtZaNd5jeL3iKQoT96JotD9wdDdcbFzWuLUUeg+f3Q3J4Huos5imIFLTFHKM2eValwwNVcrDlOZo7uWl6tCscotOblEqCqGlO/Fu1dtBy4RgeuRHUhQZaiU6FnBbNMg2iDNRKSC9pOpcHOJuGlNAjeXRA1G7qXMDFbgA2M0YUVcL5JOVBI0pHp7gcyLXVJB8eNqvIRSzNk6+pOjkHuJyG1PArmpGtnGn8E7oFGpJKf3Sur+Cmb/0dvH7zxNf4G8n01YpTosnFlGyRupHSVeddjWID17u65+dUwqJI0xsDvjAJ+neVSY/7iYbzvG0xbSSOobhfnLxHxnStp6Ow235CloUHF5rMRF9F2V3sZkZJJyzMq2iGeGFEmEAIdRviGpo0iE/bxY/nJNDrW8sbtC5sdCZqSFIwJLU0iFpJB5/sjsTsz/PHjlxfRZexXsPphCjGpR5LzBCnbnD7vrSSV1DN8okXbX4bLgUECvzHCQ67XNWE+Xh30pXAmOKLOwmmVdWMqe7BMqAWNRkUHakdHZbi1RuZ+C1vlD62ZaGu2zl8FeYZg6FKdKJF6UejiBGFaNFFLmIpyqfT2fArvwOYlP5wwAdYYOYT/BT19+3CfBmy9uKkmy9Qq9vPnL4RkRoCtQXA4oumsHla247lZUtqJAcf6guJ2UvqnIR4taMPEfpLhJNy0sl/me8WNhCXd8P5GCS1nSc5I1WsORvOgtSOII/Z15h6paXK02PMckL7vKfa+2hcf1WrBuR7qudpFF7iKu/tiq9YIbOCncXp46b25MFbVbHhAbAIiNaQHxEWjD2bPvQW9DegYA5hc7t9MmKQgi88F+BNnYWrNHEg65vEBdmgL3qPaFQvEHLhVcI+0baeEK9JeofU+sVBA8ghMAxwg+BFIhjXIjSDlg+prXSRNnc1EdB4NJzXZal44Gh9UWAg7duUVB66OlY5hGXe8YBa3zh1ZrgjxSg/WDWDR9lcLth8Vt2vgCcSQp3F4ibtsTU4l7TbloWbAdv7ykfiaq8xPUsGCfSFs9OI8BciUs/GC0S0SXMMTF5ykhXVIo/MDaM0wqIRXdiotjkd5oZ7IcRl9+Aff+6kfYlQrLOFLKq73zdkeZytoiqzmD8byaGr/SKJnuvcD+3grhH42D1MQcpJIO4wrh569nT7RKcKySaIXiCsUX5y2BNd4KxZeM4tMoOtw6YHGkPWAQIp9zcokifCHYY4UVfhPfSHZM4iwL8ypAzYOCcC64reGyKJZVpmtTNljR5tOjl+zLrVXqSZeaqZZKLpgidWqT20XB8wNTcZgb0mnVUPkdy4TnzTRrdFDSRjGJrl0faD6FrnNLq2JWHYfAjclx4C1Br3OrApyBIq4Ktx9XrbY3SK1GwUiF20vE7e20nCMj8xY18vUDFfglOFxwH3CAmtEO6PfMuyLuN9CqnUCBVZVxrZ6TeH/ZZSQ2SbmxESU2qrYE963w+YHxGXIsQb3adFWSyCLxea1PinD63n1L6lVauOxWDhfyDqQulDIi806ZFrtGg1+Fr3Lk0kcUMC+oLBE1Y1lhT4aieV4k0k6xVSF1YezB0CR4vsDHAC6b+AdPQPMsccHyVPUIuojnojYx70xibdCV8Y/4kkReqIGp0ShB8/AAgParTzsfsuxpzkVcIOuoCVeyZGvmX2GUHSl4yMof8dDJGjryR9iuSopeKAqbEyxmYUj3+9efsZ+15F8lxd3MzfqXXCEk6dT/XCY+yhM8eKgUQjlHBopbqiAM9yIv+eAIkbDDgBafYG8wbhQuJ+fPlfj0IwIPLYO6MWT/KDeJbdpi8PhYUXEsqhHh1kLeBdu1lfd3mWg7jdJByiT3NU4zoNt++69fKcqSIpSvX7RXPyfBF2TCCTCpnCkBLXeZtns57z3c8xv190YX5gjieJS9pf2UgsdH5riwUSG2q29UDsQy0dSebCkJip8Rbyxl6ATvACIYdiTQGBXKhij3hCojKc5sk6WeUc4LnPXbIvnY0d78BKUCM7o35meOwJrAzf5Ju6pox0COwaQ4hgTNUEAu9zko7F2QOxaqpNARsLaUI2ChYOqo3k5ivuUATJ1q70mQZT6k00RuUeipKBAUJT5NQAZz1ecQcyBZcDaQO8bpCH6VXLlwCQWviyLhxD2cbGf9ZKi650XiqzvlrqbdaSBaUyM30EB80n4jqbeEBAKyEWMiiJwgoqGSor4hdxWiiWIOL4rygHe0yZP4llY0zIbXjmnoauq5uVH53XGJxZVbhG819NJMe43i90hV16lOqjpOM3MtpW0vbTcw0G6wnmDyQ74dNJemNe8BVYI2zqu7Eud4IW1cETUroma1E2AntrU1ESudImperF0wsQ6EhJwZtkV5C7KPSmYChNOXMH7XTl7kHXyUXSakquPx10+o0yUtwym7UH1/bc63/nwJwr2k9AMyOvvfM+wPL9ZLoxPa1YawlLhyTwFudoXKj4vK5taBoUVnu94qlrplovJ2Uokazx8wK4JzQaO6OoLIZ+8D6beC6uIajKMd/visCzFFELpWQ+WIx+pVCKO+dvJPcfJBuPbBisnfeeNwcTxRlL1cvA/MlVcH0+cYK/vHOFVRyIcmKdoyFgxVQ7JEmN7oKmgpU5hHZr1TuPu4JM4kmolI4hTuLhF3DaUe16vH1GcdXU5gArjIdy9AUNvQ9qp2VbkHvboE/IPCXaXvmmtdkXIuE3dNRZ5/C3m+6setMH+ZdPqqffdSG6ZsrEkxEr2El/SI4Qhm2p2CMAwK6XYe3AL2YBKIefHpHMOur8TfECc7CK6Mza2q8FK9O9d08U4QvSQeOPGyyy4AHXNVXGVtK6geK2vb0W2UnKGytpercNuTAt826c68jo2S5LhkCEnXvkLeBqa84DgxC8xGbMJVSdddFc/EMJiT0Zdherst0sxR93TldmAtOuP5qHJjPMPO3CwZr50r/eRnR9Wk+5G1ZtsxnrawNtxVPJ4LBW5nUsBN4Q3MeYCkRhDVdl4YVhPYwviyx4cT7z1sD2poWoJs9bkaP3/9O0nLQK8ieEP5GfBXlJyBl8QSOdqx99fU/yikfWyftIv8E7qzVT7pZSLtxNr94fRgmMZ8SarcmTgLmCbynpP4Ldjn2ckkYpjzWUiSHQqJwNIUjD+SIIqBDgyQlrgAgPYMrwa0Wdbyu4mCDgA60HCRexpzNJUjfwltC65g9oHrREwLwaxlrBXMLhNmJ9uPD86J/MFpEKEGfKSYmQsOfvv1J4C84L6x4xdhMkk9K+qRNFsNexhYgm+5po6kq+HbA7+CqSt+V34q2UkyejqcUFLib6JdnPZgFlY03pC1seI56jClcs4NvZJFNEtuHq5uHmrTrUrKUdW82hCW42y2XNwayrKdJ0P5LBYJ8Rvls8gdxMvaaBQUP7wLBCG4Au4lAvc0qgVhhpuhs1q8kxeEz/F3gJZ/+qhh1E+vQKv0dhkkeq62FDm07c4EHoGfIMh886JMlhaNrgO2Bi9NCYlpAl+EIH0NYSjJtsPUR41dAe/UDUuB8oIo9GwTJT+jxlEKZReIslt9grkYEqakIk9SqnFPiKmLiQdgs4F4DlEjFfKaK+pntRs26ktSSM4o+QzA+2tk2HP0iv6993GhyR7czAdrbV1qCttcxFJlZsJcecX9g/DnKYh+3NTmLfZ4uKbinF4oohtT9WlXO5piJZJk8nLtTBHeaR4UhHOlmaq0QWo9QEqQXtQLVebBnhvBq8L5x2U7NTdQc8espwrnF1jCsjUnVS6OylMAtBR6XolKU8pQSdzENOFZWLfCvCGiRDhpqgh4KScPFsqAeyMMfLfUicOWMBKaatotRiHuA7fG0nE3F9ddP60V4i5Rs55I0eAli9NTDJeIgLWYflzNOmZIy9FulDORxd2mViWoLYbyWIFIKRsDMcRp/4qANCVJd9C/8eaH8RkVH3KXSGlbQ1jlwjR5xfyhAH389D8A5IauqD+WjOjTqkRkoTgAzy/B4cL05mh3BHhJieDELM2tSJgLZYesGJGg/wq7Dvb+i3cJM+1PP4m1IzgOfTJSl4h8T6EIjbLztP0F7U27xEuPWhjHZ9T/JX55qetFK8kUx1sRB97IOY+3o0/aL/z6uU4AGbkbv9APQCH8A6vsJInEsR3lDF8mwDtTahC2T2JEawHwEobpYIJISoHxb19/0559hEpB6j2H/l4ewOT6a61EDWqr4cyjn9YSfEykU4HC4sflN9UNxPuB2gAoLF4iFk+sprG7e7hIc5T7g9M6ZZX5hiUaNGVTSnzwJvZYrX/2MpjujNER0fCRZR0DyLgEnkaIk06aCmXAE0z8A3q5XkrsC8TyH6NQ4eWsHeNLEn4o5F1S1p5pwE4q7trSlVq7TChdT0mtpYkYYl+AxLyHroZiLynmRq5D0zcwJaQ+0uBbSRC3J3oH4J9w8B4njWCgY4kQNEkCJ0hIM6HnSwSl0Hsx6O1snQ2iUUJ0Sgq9l4jeG0XuIaQX3X+APQDmd+NUQFQQ8w9/h90P5R4qOZdpcRtRpSjKnZBzd+i6rtwJy0TR7TRjd3cqo6tkQAQRyoDw3gBOe89BCJ2maO5iN6nUPyBQRH2vCblGAJTxV1/ioEV9r1b0vFVF+ZY2CVDwuiCfAarwg6Gwtf5kKLxcHl6u9WlU+k2Ao1iWXFYsNkTGOCKLw9WGMsZOQTMSvgMJWgNMdYDOB5yjV1CMidOB3oi48DCMDz9SKZGz9lfqEeGG4CXoTYHJzzGeIAY7lubq9GkrGH/goJuLEyDWqhpwqahvTMvXcASAlD37Xgadt2eAWn7R8bADk8DkNuS7zQf7UW1KRBno8SyMG+5Sk/AAFPHTGa4mY+yhkfbTlx/3SfDmi7OIScFioaqQz07DM0J3tsLWB04uc9coCue6W6VRLxNbp1GB91dYcQdLQXy+WDoHUy0GP3tcDter//EjumPUvgn6BeLdBSmOcUHHzSDmAng+BWBpNTE5rFavcOkfCV8Vyq35iZRjQ6H2lHnlDOw3Vn6QxaK2pVKC26QEU69ImfRCQs7kleiZ6tv+VXwmeTivyFiU03MgOFfQrDKEra2poHmZ0DyNcrxiZyes1TJPdHxBboMszrww/5XytmG1NL08oxIzrgqZhzRJL23V4kRh6vDqrosxVbU4WSqmTqMCjmqTvIfiEoYRzIFABc+nc4jSt2jFAgTP3dGLIr/KjY8cA/xAkk1R1DnPMc4prqV/Y4E3rOaKw2/nxvZ/vW0SCpsfF5th6tqKYLTC5iVi88Qq4tLXADkjoKlN1cyiE5bwLLckJa7iWW7JizOBBayhiI1nT1FU21NWDIymKLEueE685KN2KXxtCoV8gReCnZTW+If5DUUB9AM7JNabpzVySKxV9sQyAXpSdXZAqzzEcHbqLMYd9SAQIu21FgAZ6pVZ7gvkOfWlcYvh5Veg/bgE+DoGbUSEr0B7iaC9mZTHo01VMeOUSHzi8SUeDbgsLrRXA54wxdiPCHxKaIpLWwLpBtKq9SnrC/gaxe+RpKVU0SeSc5Ki946ILCrkpGXSOEGCdUvG/HivYP2Rs+1IvZ+zVY7sZcL6dPoBmg7vLs610TTHymNwgMz3rFkJVZjbNXEqKrSpsMgE69rEn5LXm3zSfkesGBjCUS9AmqXncXq7oGVgBc5J60NGMg3sD8jPjM7ApgfU8MkNVg9WuyHm93VjS8QS9reqoVH5fWqfsFxzY6J9wrA3yqm+tH3CgPuEoStupPtxIymVXkH1vZmNlI6+VB3dMFRAU0jyOZ00bwWoDx+vRInUCn+XiL/mlHRfTuc9+ac4+SC6Y0nr5TCtROVGLPqGViANOuu3X3/SfPg48RUS4h1BCrBH2m6DYZbOGDHggwHL9bU0iFBjWuL65piduAlr2peQ1oYi9w1hAN3Fe9i3lrttvjnWJ+3fRM77FX82LbsEexh4k8TVAZ4eZuMjjCcK9B+XCM92cCNYw3oyFegvEfSnUdA4wTpuWTZL4p8ABsNH8Mev3xAkwwvBAvowePGRjxyjesmxzC+P37UaVsRvY89JDNuhfPlFYfKC2PNQtThsXuKqqvGFguwUSxN7Vm1XslbddVwgNOFP5AxR2YQKyRfYI9ZQ6YRLRv5pFVDmHbDjlxekUHPpJ8iPgNE18XP9NPWzy7kM5tclhBc3IFxGjuvLSbAPQC2pVP9A2YxhpYGWpHRdQChFAprg2O9ff2a/kobhiXJrPDjwWtCtYW6eXIW7S8Rdd4Jp3M3kR0XtUdqbpOjEZo2cJOFDeM0TeuY7AMvxiThOOH96ia4aeYjB7QAFuoys8DzFTfrg2dIW7hDoWK7SWpeJnmvF9i9m+x+v7ZUC3Icn2kdtqRTgLhFwp1V1+KC9TGQkprnX5N0DawHzNrT6rt1kcrLSMqnexSdeY4X1D4v1qJkKDAaudZXmvEysn2jrQYCBL8GBEiSlH9HumMQsOxhptBU99wweGPipfd5z3rqaqL8rHArb+y8erDj5009i7QiOA8Q+yLVvqHfDkhSgPr/BTBEGwASV4ab0Esbv2smLwE2ilBFhMxZ+F8sV9EpzbXYhpYo/uO/DxKq4uXVUZ9hFwrOpT9BzTHXxPRiaBM+XMtepnNO5BL4+TNJI/YwP02GHrsR5PLcSRIXNy0mM000dgi0u/VNgu0SwnUbJ3+8wexc6dRH1xHsSZJkPSTKwUU50yrP3Af0cIurlGuX3zUuCGKi8HH7yXBRlB4AqoVZ4OhkKaXMLiz9UxfVy4decDCvSIqmCVLdChe8TxnfIYqS6FS4Z3y2VxyHO46Duld3R370i1lIu3kndJCzw6QF1/4CKqq9SqfPAaHr09vE79TZTfr6uOwy9qALvh88JcbYb1T5goeC9sKLBQnmeF/oJTmxLZfwVRUjFPBVc/LBMU1FRcnlmCzGxRcnP7O3/AWEXJqmkMDskQg8vIb6h/K5T4jz3TmcsBB4zTsTM1sSV7nz/zrg3QrCllHt75ZuK/6y9JN7Jh0AvyqsBN5mRIGWh6Qx39/E7dAAdgzPmEoEngG0kO67yd4UjrriXO1geCr0ii4NLnlFbzCOzYq+fTNKhRpF/LHKLcSaVirKwym5ZAfuUM24U3D9ubxtYhL4iKS4K7pcI9+6E3P060DMF3vC8xW9ahP1C+3KEuVezrxZoT+ExXHAOc1TA/hAnGdfzAF6uodOBoO0kzZoJIhirYOyxpD1PBmA+y8J84Tix5VywtOBjpmZFZbr6RhCSbQ3tfKqbgQJ8qt+vSXqNuVHx3UV2MzBVHafE/68wW2H2rN3+CrOXqqRPoxT02ymGeTH7PCvHI+6LPAeRTz2szzzkax4LCSwc33VNvoqIp5t6U9Kdh1D5nMTnOPVCtBDCX5WSJgbaO3hxyclLXuFUmnfJYngaQEw5m3ibfsgKiR+5FbD+ZLgrzJGtSoEWCcXbaTWkGZxzRBLIFNcC4cJLUiCPkmhoj5pd4qVHLYzjM6r/j19e6voeyHs1rAr7CI/D2i+8NxuKPQRyLCDIt+2rqKbCbcz9Z+Jevw6AbeXmXiJsW/ryEmeaesS0yj4Ut485iLvE4PSZfQybHZBwaX6avDKf4wJHJCmkFT0po4cCh7slwIdAY5kkH7LeQYLdMDI/CbgW2rJEbc0U2j+wlm5gOhXbtRXaLxPtjSl1LaO1ownA8GSPdfRnL9sdKVsJUIi9A1GWj2CiOAGLCHFAsz6KuWIV/7gSHqeR4Ow+lHlyOWtHgJLhRw06k5aWNGOGeuJJrglKlMS5mUiJh8u+CNwkxWqlGqVdIfFyq/OBnoWboZsqA32h0GpOk5UQqbAyxupKMjUplqG9dnNCwlp9E1WR+mHYsgY0Hy50Y0Ps035FJIQcBSFibsl9FeXcaw3VJaUKzRWaT5Cm0EIc4Ar8Fwv+1jRpCjkHQ3KJUlw+Dytmwnj3CnDZB9CeULeDlBhLWhBK4J3mesPtppKmkvoheBkwNuoTtwS5HKoVzUOINVno0A/uRyQP/SX03uK6Kn1uVCnvHG8RmgfdRFz+OWvN9hrF7xEpS1JwvSDl27RRbY7jKkrwheKvPSW/xplkQEM99x8A8yIv1AA0oVEC/hVMVkJRrhiDrFZ61umczMPNNO4za+MF7lHFKBVcL0+7tl1DxSiXje7OlNB9/mAp2QX2SYw8JODeoB8I7k0pvYm/ff1Ne/bRDEHqPQPducbzzucFCkKM1RLSo58WWlIoNH/cOhuI4gDNXd1QPFvLRHN3Smh+iUhFJQBJnnaWQW2eHi1BbVnfSYRyjMq7ArqwsNOhLN4pK6FkrpsoTuD6//SRIx5c5xhkdWuAD4TLWOQsBgWnC/JluPoG8cyuLUNpu8vEx/W0Eqkv0c67HI4ZzI3zz6xvDEpYK8ERwDpU6wLZuZEe3IJQlmvlJUpUU/xQCogXwR+7cRBuK36oxeL2Zlq4zcX+cC2MmCOJr2Ep6bK4SKYViRLzPJcQvLZCpq+k7zyLQ7T/8LnaHKX5LgnAkMBb1UQV0amspSbPfb4PYAER9WYAScu8MNflJbcGlw1Hp2B3kjiB1JbxsFuGs11vMaWgu1FbxjK3jO2yim+ApovYP0g+BbcDcRO2qdBpKsORxEY/af8mrs/hzl4VuG5XYrJbaRbhGVbGR2BW8KxJX81b2hvDShxJQgst0lE7wAPvAIaFdgDXXT+t1Q6wwB3Ankb5pYDh6fD7158ROEPd2AtDbU+5V2XaNofxlGVcyivLVybSMKZqYKzwd2L4u8X4qxoYLxZ/J1UQ+TVOs0Pif/uvX1GZIkwXSUUFKK25/bBrI4heEqCPJ5dddkl8WUtN7uIyRC7mfTPKbxkLuUTLZzHRjpX4mMtcWoPP0tBJlRGtwqddnBWQP3J3ButpA7tz6psnRwH5EoHcnKArBVNlI38Dra7BCjU+QLhRy9RUfFefCjlrsWaSpI+ssLbO9/ZBXKhNfepz9ta63JZmHiy2jOCEqA69Q6W7Z6tKHNQJQsH0A8O0/WTqKEpqKoV7mThtKZpA5eVQqDtBkj/l5Vgs6NrTAt0RomgyVwbXk+AFaJ8RrINH3cZO5xAlwVAeKbiW3dGLIj8U+mQKA0mJe3HVkE0b+j5qexgwrw72sYi7q0GKbwXYD9zXYP20hnwiuq4Ae5mA7UxMS0asfClYKPgbozRsH+lhtRcWsReoPiKcpdGu6cy5Lt/ijySIYgB/sHcBZg9JwE0TDwrrcCbgLOFzSLJjnPrYw4B9MQXtnPhi0OwKVZdUKrN2ngzoTDDWqv3LMmHSnZ/TF9IghbxqK1ImBU4E6tzt6vL9CfZvQf1p8u404q40pR6SNXXu4jpDQcE6H56jii0X/oOrBticfdL+FW0VKQFtX9v7b34Yn5GTg7tESm90H7/n3muF2g+comFunlBjGaATG6ogcpEov368LOlVeVcgqdF1HCGss3tzrU2+AaBXiJi2KzuBtEEZZYntouEriH5c/zKEZqiI685WKeLLhOjNhJql53pufMmgiogu+vwBNVnwGGjP2epBATcfSyprU8qOs+0gUr95QG/l8+xa8WKXvLw1BKxFNMcFLawAHtwYepqoBrFUFg/shQTyfqeXZ1SZzjnY+Ua6+GYVaD9wvbq9Qc4Tw3AVD9MyMXs7qYYF3XOKCWp2yiHOeZ2KTuC8dTgkW3qVNtC9N7O2Qtjl+Jth0hqETEQ3rSBzcZD5/wMongJeHcEKAA== No newline at end of file | |||
There was a problem hiding this comment.
Commit actual gzip bytes instead of base64 text
The committed blob begins with H4sI..., which is base64 text representing a gzip stream rather than a gzip file. Consequently, every invocation reaches _load_rows() and gzip.open() raises BadGzipFile: Not a gzipped file (b'H4'), including runs with series_context=false; decode the artifact before committing it.
Useful? React with 👍 / 👎.
| def arfbench( | ||
| limit: int | None = None, | ||
| tier: int | None = None, | ||
| series_context: bool | str = True, |
There was a problem hiding this comment.
Declare dependencies used by the default mode
On a clean checkout installed from the root requirements.txt, the default invocation always fails here because neither pandas nor pyarrow is declared; the README's referenced sibling virtualenv also does not exist in this repository. Since series_context defaults to true, add the required packages to the reproducible environment or make the dependency-free mode the default.
Useful? React with 👍 / 👎.
| ) | ||
|
|
||
|
|
||
| @task |
There was a problem hiding this comment.
Add regression coverage for the new task
This new task adds dataset loading, filtering, context generation, and scoring behavior without adding any automated test in the commit. At minimum, construct the task from the committed dataset in both context modes so packaging errors such as the unreadable gzip artifact are caught before merge.
AGENTS.md reference: AGENTS.md:L18-L18
Useful? React with 👍 / 👎.
| TS_CACHE.mkdir(parents=True, exist_ok=True) | ||
| for res in TS_RESOLUTIONS: | ||
| dest = TS_CACHE / f"{query_group}_{res}.parquet" | ||
| if not dest.exists(): |
There was a problem hiding this comment.
Memoize unavailable time-series groups
When a group has no remote parquet file, this path leaves no cached negative result, so every later sample using the same group retries all three URLs. The dataset contains heavily repeated groups and the README states that most groups lack time-series data, so a full default run performs thousands of redundant network requests before model evaluation; cache unavailable groups for the task lifetime.
Useful? React with 👍 / 👎.
| "https://huggingface.co/datasets/Datadog/ARFBench/resolve/main/" | ||
| "arfbench-ts-data/{group}_{res}.parquet" |
There was a problem hiding this comment.
Pin the remote dataset revision
Resolving every parquet from the mutable main ref makes benchmark inputs depend on cache state and run date: a clean machine fetches the latest bytes while an existing cache retains older bytes, so identical commits and model settings can produce different scores. The upstream dataset has already used replacement uploads, as shown by its re-upload commit; pin a dataset commit and verify downloaded checksums.
Useful? React with 👍 / 👎.
| - Benchmark: 750 multiple-choice QA pairs from 63 real Datadog production | ||
| incidents, testing time-series anomaly reasoning (8 task categories, | ||
| 3 difficulty tiers). | ||
| - Source: https://github.com/DataDog/ARFBench — **Apache 2.0** (verified). |
There was a problem hiding this comment.
Include the Apache license with redistributed artifacts
The commit redistributes Datadog's Apache-2.0-licensed QA and time-series artifacts, but the repository contains no LICENSE file; merely naming the license here does not provide recipients a copy. Apache License 2.0 section 4(a) explicitly requires redistributions to include the license, so add its full text and retain any upstream attribution notices that apply. Apache License 2.0
Useful? React with 👍 / 👎.
| TS_CACHE = Path(__file__).parent / "data" / "ts" | ||
|
|
||
| # Fine -> coarse; first resolution with <= TS_MAX_ROWS wins. | ||
| TS_RESOLUTIONS = ["300", "1800", "3600"] |
There was a problem hiding this comment.
Preserve temporal precision for timestamp questions
The loader never considers the available 10- or 60-second files and starts at five-minute bars, even though the committed start/end questions contain materially closer choices—for example, row 3 asks the model to distinguish 18:19:10 from 18:19:43. Those alternatives collapse into the same five-minute observation, and the later summary further renders the peak only as HH:MM, so these samples cannot be answered from the supplied context; select a resolution based on the timestamp choices and retain full timestamp precision.
Useful? React with 👍 / 👎.
| dataset = [_to_sample(r, series_context) for r in rows] | ||
| return Task( | ||
| dataset=dataset, | ||
| solver=multiple_choice(), |
There was a problem hiding this comment.
Supply the benchmark's task instructions
The task invokes only Inspect's generic multiple-choice solver, so models never receive ARFBench's definitions of anomaly magnitude, the six anomaly categories, correlation, or leading/lagging indicators. Datadog's upstream benchmark prompt supplies these definitions on every evaluation; omitting them changes what the 104 categorization and 76 magnitude samples ask the model to infer and makes scores incomparable even after accounting for the compact time-series representation.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2d99b902a8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| except Exception: | ||
| if dest.exists(): | ||
| dest.unlink(missing_ok=True) | ||
| continue |
There was a problem hiding this comment.
Fail on transient time-series download errors
When Hugging Face is temporarily unreachable or returns a timeout, DNS/TLS error, or 5xx response, this broad handler treats the failure exactly like an absent dataset file. _summarize_ts() then returns no context and the default evaluation silently continues with description-only prompts, so an outage can produce a complete but invalid benchmark score. Only expected not-found responses should trigger the fallback; transient and infrastructure failures should be retried or surfaced.
Useful? React with 👍 / 👎.
| DATA = Path(__file__).parent / "data" / "arfbench-qa.csv.gz" | ||
| TS_CACHE = Path(__file__).parent / "data" / "ts" |
There was a problem hiding this comment.
Keep downloaded cache files out of the worktree
Whenever the default mode successfully fetches a previously uncached group, it writes the parquet into evals/arfbench/data/ts, but that generated path is not covered by the repository's .gitignore. A normal benchmark run therefore leaves many large untracked artifacts in the checkout and makes them easy to commit accidentally; use a cache directory outside the repository or ignore the generated parquet files while explicitly retaining any intended fixture.
Useful? React with 👍 / 👎.
| # reproducible. Residual note: even shuffled, no-reasoning heuristics | ||
| # (longest choice, max question-overlap) still beat chance ~33% vs ~24%, | ||
| # which is inherent distractor weakness in the questions, not the harness. | ||
| dataset.shuffle_choices(seed=42) |
There was a problem hiding this comment.
Keep each sample's shuffle stable across tier filters
Because tier filtering occurs before this call, shuffle_choices(seed=42) advances its single RNG over a different sequence of samples in a tier-only run than in the full run. The same Tier 2 or Tier 3 question therefore receives a different option permutation when evaluated alone versus as part of all 750 samples, so residual model position bias can change per-tier scores solely because of the invocation mode. Derive the permutation from the sample ID or otherwise shuffle each sample independently so its ordering remains stable across filters.
Useful? React with 👍 / 👎.
| if isinstance(series_context, str): | ||
| series_context = series_context.strip().lower() in ("true", "1", "yes") |
There was a problem hiding this comment.
Reject invalid series_context values
For string-valued task parameters, every value other than true, 1, or yes is silently interpreted as false. A typo such as -T series_context=ture therefore disables the time-series context and produces a successful description-only evaluation instead of reporting the invalid configuration, which can yield misleading benchmark results. Recognize an explicit set of true and false spellings and raise for anything else.
Useful? React with 👍 / 👎.
…, strict series_context
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 14a0812d39
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1 @@ | |||
| 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BRhkoMEGHHTgwQcghCDCCCSUYMIJKKSgwgostODCCzDEIMMMNNRgww045KDDDjz04MMPQAQhxBBEFGHEEUgkocQSTDThxBNQRCHFFFRUYcUVWGShxRZcdOHFF2CEIcYYZJRhxhlopKHGGmy04cYbcMQhxxx01GHHHXjkoccefPThxx+ABCLIIIQUYsghiCSiyCKMNOLII5BEIskklFRiySWYZKLJJpx04sknoIQiyiiklGLKKaikosoqrLTiyiuwxCLLLLTUYsstuOSiyy689OLLL8AEI8wwxBRjzDHIJKPMMsw048wz0EQjzTTUVGPNNdhko8023HTjzTfghCPOOOSUY8456KSjzjrstOPOO/DEI8889NRjzz345KPPPvz0488/AAUk0EAEFWTQQQglpNBCDDXk0EMQRSTRRBRVZNFFGGWk0UYcdeTRRyCFJNJIJJVk0kkopaTSSiy15NJLMMUk00w01WTTTTjlpNNOPPXk009ABSXUUEQVZdRRSCWl1FJMNeXUU1BFJdVUVFVl1VVYZaXVVlx15dVXYIUl1lhklWXWWWilpdZabLXl1ltwxSXXXHTVZdddeOWl11589eXXX4AFJthghBVm2GGIJabYYow15thjkEUm2WSUVWbZZZhlptlmnHXm2WeghSbaaKSVZtppqKWm2mqstebaa7DFJttstNVm22245abbbrz15ttvwAUn3HDEFWfcccglp9xyzDXn3HPQRSfddNRVZ9112GWn3Xbcdefdd+CFJ9545JVn3nnopafeeuy159578MUn33z01WfffWP45afffvz1599/AAYo4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okopqjiiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFZp5ZVYZqnlllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKuighBZq6KGIJqrooow26uijkEYq6aSUVmrppZhmqummnHbq6aeghirqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQRBdt9NFIF5200kUXXfTSTDftdNFPFw111FIXXfTUVBddtdVFF1301VhnXXTRWhdddNFFF1100Vtz3XXRRXtddNFfgw0AAAAAAAAAJuCrARwVChk1AAYQGRgFdmFsdWUVAhb0DRaGfxaafyaCmQEmxiwcGAgAAAAAAABZQBgI8XZ4TyWjUkAWACgIAAAAAAAAWUAYCPF2eE8lo1JAABksFQQVABUCABUAFRAVAgAAABUEFRAVFEwVAhUAEgAACBwFAAAAAAAAABUAFRYVGiwV9A0VEBUGFQYcGAgFAAAAAAAAABgIBQAAAAAAAAAWACgIBQAAAAAAAAAYCAUAAAAAAAAAAAAACygDAAAA9A0BAfQNACburgEcFQQZNQAGEBkYCm51bV9ncm91cHMVAhb0DRa+ARbGASbYrQEmqK0BHBgIBQAAAAAAAAAYCAUAAAAAAAAAFgAoCAUAAAAAAAAAGAgFAAAAAAAAAAAZLBUEFQAVAgAVABUQFQIAAAAVBBUWFRpMFQIVABIAAAsoBwAAADM1OTI4XzEVABUWFRosFfQNFRAVBhUGHDYAKAczNTkyOF8xGAczNTkyOF8xAAAACygDAAAA9A0BAfQNACbisQEcFQwZNQAGEBkYCnF1ZXJ5X25hbWUVAhb0DRaYARagASb4sAEmwrABHDYAKAczNTkyOF8xGAczNTkyOF8xABksFQQVABUCABUAFRAVAgAAABUEFaBvFeQ3TBX0DRUAEgAA0DcAAA0BAAENCAACDQgAAw0IAAQNCAAFDQgABg0IAAcNCAAIDQgACQ0IAAoNCAALDQgADA0IAA0NCAAODQgADw0IABANCAARDQgAEg0IABMNCAAUDQgAFQ0IABYNCAAXDQgAGA0IABkNCAAaDQgAGw0IABwNCAAdDQgAHg0IAB8NCAAgDQgAIQ0IACINCAAjDQgAJA0IACUNCAAmDQgAJw0IACgNCAApDQgAKg0IACsNCAAsDQgALQ0IAC4NCAAvDQgAMA0IADENCAAyDQgAMw0IADQNCAA1DQgANg0IADcNCAA4DQgAOQ0IADoNCAA7DQgAPA0IAD0NCAA+DQgAPw0IAEANCABBDQgAQg0IAEMNCABEDQgARQ0IAEYNCABHDQgASA0IAEkNCABKDQgASw0IAEwNCABNDQgATg0IAE8NCABQDQgAUQ0IAFINCABTDQgAVA0IAFUNCABWDQgAVw0IAFgNCABZDQgAWg0IAFsNCABcDQgAXQ0IAF4NCABfDQgAYA0IAGENCABiDQgAYw0IAGQNCABlDQgAZg0IAGcNCABoDQgAaQ0IAGoNCABrDQgAbA0IAG0NCABuDQgAbw0IAHANCABxDQgAcg0IAHMNCAB0DQgAdQ0IAHYNCAB3DQgAeA0IAHkNCAB6DQgAew0IAHwNCAB9DQgAfg0IAH8NCACADQgAgQ0IAIINCACDDQgAhA0IAIUNCACGDQgAhw0IAIgNCACJDQgAig0IAIsNCACMDQgAjQ0IAI4NCACPDQgAkA0IAJENCACSDQgAkw0IAJQNCACVDQgAlg0IAJcNCACYDQgAmQ0IAJoNCACbDQgAnA0IAJ0NCACeDQgAnw0IAKANCAChDQgAog0IAKMNCACkDQgApQ0IAKYNCACnDQgAqA0IAKkNCACqDQgAqw0IAKwNCACtDQgArg0IAK8NCACwDQgAsQ0IALINCACzDQgAtA0IALUNCAC2DQgAtw0IALgNCAC5DQgAug0IALsNCAC8DQgAvQ0IAL4NCAC/DQgAwA0IAMENCADCDQgAww0IAMQNCADFDQgAxg0IAMcNCADIDQgAyQ0IAMoNCADLDQgAzA0IAM0NCADODQgAzw0IANANCADRDQgA0g0IANMNCADUDQgA1Q0IANYNCADXDQgA2A0IANkNCADaDQgA2w0IANwNCADdDQgA3g0IAN8NCADgDQgA4Q0IAOINCADjDQgA5A0IAOUNCADmDQgA5w0IAOgNCADpDQgA6g0IAOsNCADsDQgA7Q0IAO4NCADvDQgA8A0IAPENCADyDQgA8w0IAPQNCAD1DQgA9g0IAPcNCAD4DQgA+Q0IAPoNCAD7DQgA/A0IAP0NCAD+DQgA/w0I8fkEAQEJEQACDQgAAw0IAAQNCAAFDQgABg0IAAcNCAAIDQgACQ0IAAoNCAALDQgADA0IAA0NCAAODQgADw0IABANCAARDQgAEg0IABMNCAAUDQgAFQ0IABYNCAAXDQgAGA0IABkNCAAaDQgAGw0IABwNCAAdDQgAHg0IAB8NCAAgDQgAIQ0IACINCAAjDQgAJA0IACUNCAAmDQgAJw0IACgNCAApDQgAKg0IACsNCAAsDQgALQ0IAC4NCAAvDQgAMA0IADENCAAyDQgAMw0IADQNCAA1DQgANg0IADcNCAA4DQgAOQ0IADoNCAA7DQgAPA0IAD0NCAA+DQgAPw0IAEANCABBDQgAQg0IAEMNCABEDQgARQ0IAEYNCABHDQgASA0IAEkNCABKDQgASw0IAEwNCABNDQgATg0IAE8NCABQDQgAUQ0IAFINCABTDQgAVA0IAFUNCABWDQgAVw0IAFgNCABZDQgAWg0IAFsNCABcDQgAXQ0IAF4NCABfDQgAYA0IAGENCABiDQgAYw0IAGQNCABlDQgAZg0IAGcNCABoDQgAaQ0IAGoNCABrDQgAbA0IAG0NCABuDQgAbw0IAHANCABxDQgAcg0IAHMNCAB0DQgAdQ0IAHYNCAB3DQgAeA0IAHkNCAB6DQgAew0IAHwNCAB9DQgAfg0IAH8NCACADQgAgQ0IAIINCACDDQgAhA0IAIUNCACGDQgAhw0IAIgNCACJDQgAig0IAIsNCACMDQgAjQ0IAI4NCACPDQgAkA0IAJENCACSDQgAkw0IAJQNCACVDQgAlg0IAJcNCACYDQgAmQ0IAJoNCACbDQgAnA0IAJ0NCACeDQgAnw0IAKANCAChDQgAog0IAKMNCACkDQgApQ0IAKYNCACnDQgAqA0IAKkNCACqDQgAqw0IAKwNCACtDQgArg0IAK8NCACwDQgAsQ0IALINCACzDQgAtA0IALUNCAC2DQgAtw0IALgNCAC5DQgAug0IALsNCAC8DQgAvQ0IAL4NCAC/DQgAwA0IAMENCADCDQgAww0IAMQNCADFDQgAxg0IAMcNCADIDQgAyQ0IAMoNCADLDQgAzA0IAM0NCADODQgAzw0IANANCADRDQgA0g0IANMNCADUDQgA1Q0IANYNCADXDQgA2A0IANkNCADaDQgA2w0IANwNCADdDQgA3g0IAN8NCADgDQgA4Q0IAOINCADjDQgA5A0IAOUNCADmDQgA5w0IAOgNCADpDQgA6g0IAOsNCADsDQgA7Q0IAO4NCADvDQgA8A0IAPENCADyDQgA8w0IAPQNCAD1DQgA9g0IAPcNCAD4DQgA+Q0IAPoNCAD7DQgA/A0IAP0NCAD+DQgA/w0IHvEPAAEa+Q8AAg0IAAMNCAAEDQgABQ0IAAYNCAAHDQgACA0IAAkNCAAKDQgACw0IAAwNCAANDQgADg0IAA8NCAAQDQgAEQ0IABINCAATDQgAFA0IABUNCAAWDQgAFw0IABgNCAAZDQgAGg0IABsNCAAcDQgAHQ0IAB4NCAAfDQgAIA0IACENCAAiDQgAIw0IACQNCAAlDQgAJg0IACcNCAAoDQgAKQ0IACoNCAArDQgALA0IAC0NCAAuDQgALw0IADANCAAxDQgAMg0IADMNCAA0DQgANQ0IADYNCAA3DQgAOA0IADkNCAA6DQgAOw0IADwNCAA9DQgAPg0IAD8NCABADQgAQQ0IAEINCABDDQgARA0IAEUNCABGDQgARw0IAEgNCABJDQgASg0IAEsNCABMDQgATQ0IAE4NCABPDQgAUA0IAFENCABSDQgAUw0IAFQNCABVDQgAVg0IAFcNCABYDQgAWQ0IAFoNCABbDQgAXA0IAF0NCABeDQgAXw0IAGANCABhDQgAYg0IAGMNCABkDQgAZQ0IAGYNCABnDQgAaA0IAGkNCABqDQgAaw0IAGwNCABtDQgAbg0IAG8NCABwDQgAcQ0IAHINCABzDQgAdA0IAHUNCAB2DQgAdw0IAHgNCAB5DQgAeg0IAHsNCAB8DQgAfQ0IAH4NCAB/DQgAgA0IAIENCACCDQgAgw0IAIQNCACFDQgAhg0IAIcNCACIDQgAiQ0IAIoNCACLDQgAjA0IAI0NCACODQgAjw0IAJANCACRDQgAkg0IAJMNCACUDQgAlQ0IAJYNCACXDQgAmA0IAJkNCACaDQgAmw0IAJwNCACdDQgAng0IAJ8NCACgDQgAoQ0IAKINCACjDQgApA0IAKUNCACmDQgApw0IAKgNCACpDQgAqg0IAKsNCACsDQgArQ0IAK4NCACvDQgAsA0IALENCACyDQgAsw0IALQNCAC1DQgAtg0IALcNCAC4DQgAuQ0IALoNCAC7DQgAvA0IAL0NCAC+DQgAvw0IAMANCADBDQgAwg0IAMMNCADEDQgAxQ0IAMYNCADHDQgAyA0IAMkNCADKDQgAyw0IAMwNCADNDQgAzg0IAM8NCADQDQgA0Q0IANINCADTDQgA1A0IANUNCADWDQgA1w0IANgNCADZDQgA2g0IANsNCADcDQgA3Q0IAN4NCADfDQgA4A0IAOENCADiDQgA4w0IAOQNCADlDQgA5g0IAOcNCADoDQgA6Q0IAOoNCADrDQgA7A0IAO0NCADuDQgA7w0IAPANCADxDQgA8g0IAPMNCAD0DQgA9Q0IAPYNCAD3DQgA+A0IAPkNCAD6DQgA+w0IAPwNCAD9DQgA/g0IAP8NCB7pFwABGvEXAAINCAADDQgABA0IAAUNCAAGDQgABw0IAAgNCAAJDQgACg0IAAsNCAAMDQgADQ0IAA4NCAAPDQgAEA0IABENCAASDQgAEw0IABQNCAAVDQgAFg0IABcNCAAYDQgAGQ0IABoNCAAbDQgAHA0IAB0NCAAeDQgAHw0IACANCAAhDQgAIg0IACMNCAAkDQgAJQ0IACYNCAAnDQgAKA0IACkNCAAqDQgAKw0IACwNCAAtDQgALg0IAC8NCAAwDQgAMQ0IADINCAAzDQgANA0IADUNCAA2DQgANw0IADgNCAA5DQgAOg0IADsNCAA8DQgAPQ0IAD4NCAA/DQgAQA0IAEENCABCDQgAQw0IAEQNCABFDQgARg0IAEcNCABIDQgASQ0IAEoNCABLDQgATA0IAE0NCABODQgATw0IAFANCABRDQgAUg0IAFMNCABUDQgAVQ0IAFYNCABXDQgAWA0IAFkNCABaDQgAWw0IAFwNCABdDQgAXg0IAF8NCABgDQgAYQ0IAGINCABjDQgAZA0IAGUNCABmDQgAZw0IAGgNCABpDQgAag0IAGsNCABsDQgAbQ0IAG4NCABvDQgAcA0IAHENCAByDQgAcw0IAHQNCAB1DQgAdg0IAHcNCDx4AwAAAAAAAHkDAAAAAAAAFQAV1BEV3hEsFfQNFRAVBhUGHBgIeQMAAAAAAAAYCAAAAAAAAAAAFgAoCHkDAAAAAAAAGAgAAAAAAAAAAAAAAOoI9GkEAwAAAPQNAQp/AAQgwAAEFGDAAQgkoMACDDTgwAMQRCDBBBRUYMEFGGSgwQYcdODBByCEIMIIJJRgwgkopKDCCiy04MILMMQgwww01GDDDTjkoMMOPPTgww9ABCHEEEQUYcQRSCShxBJMNOHEE1BEIcUUVFRhxRVYZKHFFlx04cUXYIQhxhhklGHGGWikocYabLThxhtwxCHHHHTUYccdeOShxx589OHHH4AEIsgghBRiyCGIJKLIIow04sgjkEQiySSUVGLJJZhkoskmnHTiySeghCLKKKSUYsopqKSiyiqstOLKK7DEIssstNRiyy245KLLLrz04ssvwAQjzDDEFGPMMcgko8wyzDTjzDPQRCPNNNRUY8012GSjzTbcdOPNN+CEI8445JRjzjnopKPOOuy048478MQjzzz01GPPPfjko88+/PTjzz8ABSTQQAQVZNBBCCWk0EIMNeTQQxBFJNFEFFVk0UUYZaTRRhx15NFHIIUk0kgklWTSSSilpNJKLLXk0kswxSTTTDTVZNNNOOWk00489eTTT0AFJdRQRBVl1FFIJaXUUkw15dRTUEUl1VRUVWXVVVhlpdVWXHXl1VdghSXWWGSVZdZZaKWl1lpsteXWW3DFJddcdNVl11145aXXXnz15ddfgAUm2GCEFWbYYYglpthijDXm2GOQRSbZZJRVZtllmGWm2WacdebZZ6CFJtpopJVm2mmopabaaqy15tprsMUm22y01WbbbbjlpttuvPXm22/ABSfccMQVZ9xxyCWn3HLMNefcc9BFJ9101FVn3XXYZafddtx159134IUn3njklWfeeeilp9567LXn3nvwxSfffPTVZ999Y/jlp99+/PXn338ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5ppstunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnDQAAAAAAAAAm7v0BHBUEGTUABhAZGBFfX2luZGV4X2xldmVsXzBfXxUCFvQNFpaCARbkSiaQ6wEmirMBHBgIeQMAAAAAAAAYCAAAAAAAAAAAFgAoCHkDAAAAAAAAGAgAAAAAAAAAAAAZLBUEFQAVAgAVABUQFQIAAAAVBBl8NQAYBnNjaGVtYRUMABUEJQIYBWVwb2NobIwSHDwAAAAAABUMJQIYBWdyb3VwJQBMHAAAABUKJQIYBXZhbHVlABUEJQIYCm51bV9ncm91cHMAFQwlAhgKcXVlcnlfbmFtZSUATBwAAAAVBCUCGBFfX2luZGV4X2xldmVsXzBfXwAW9A0ZHBlsJpAhHBUEGTUABhAZGAVlcG9jaBUCFvQNFtYlFoghJtQUJggcGAgA8G3NyIwqGBgIALjKfn1cKhgWACgIAPBtzciMKhgYCAC4yn59XCoYABksFQQVABUCABUAFRAVAgAAACbSKhwVDBk1AAYQGRgFZ3JvdXAVAhb0DRbWCRaACCbkIybSIhw2ACgeZGF0YWNlbnRlcjoxLGt1YmVfZGVwbG95bWVudDo1GB5kYXRhY2VudGVyOjEsa3ViZV9kZXBsb3ltZW50OjEAGSwVBBUAFQIAFQAVEBUCAAAAJuCrARwVChk1AAYQGRgFdmFsdWUVAhb0DRaGfxaafyaCmQEmxiwcGAgAAAAAAABZQBgI8XZ4TyWjUkAWACgIAAAAAAAAWUAYCPF2eE8lo1JAABksFQQVABUCABUAFRAVAgAAACburgEcFQQZNQAGEBkYCm51bV9ncm91cHMVAhb0DRa+ARbGASbYrQEmqK0BHBgIBQAAAAAAAAAYCAUAAAAAAAAAFgAoCAUAAAAAAAAAGAgFAAAAAAAAAAAZLBUEFQAVAgAVABUQFQIAAAAm4rEBHBUMGTUABhAZGApxdWVyeV9uYW1lFQIW9A0WmAEWoAEm+LABJsKwARw2ACgHMzU5MjhfMRgHMzU5MjhfMQAZLBUEFQAVAgAVABUQFQIAAAAm7v0BHBUEGTUABhAZGBFfX2luZGV4X2xldmVsXzBfXxUCFvQNFpaCARbkSiaQ6wEmirMBHBgIeQMAAAAAAAAYCAAAAAAAAAAAFgAoCHkDAAAAAAAAGAgAAAAAAAAAAAAZLBUEFQAVAgAVABUQFQIAAAAWnrMCFvQNJggW7PUBFAAAGSwYBnBhbmRhcxjKB3siaW5kZXhfY29sdW1ucyI6IFsiX19pbmRleF9sZXZlbF8wX18iXSwgImNvbHVtbl9pbmRleGVzIjogW3sibmFtZSI6IG51bGwsICJmaWVsZF9uYW1lIjogbnVsbCwgInBhbmRhc190eXBlIjogInVuaWNvZGUiLCAibnVtcHlfdHlwZSI6ICJvYmplY3QiLCAibWV0YWRhdGEiOiB7ImVuY29kaW5nIjogIlVURi04In19XSwgImNvbHVtbnMiOiBbeyJuYW1lIjogImVwb2NoIiwgImZpZWxkX25hbWUiOiAiZXBvY2giLCAicGFuZGFzX3R5cGUiOiAiZGF0ZXRpbWUiLCAibnVtcHlfdHlwZSI6ICJkYXRldGltZTY0W25zXSIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiZ3JvdXAiLCAiZmllbGRfbmFtZSI6ICJncm91cCIsICJwYW5kYXNfdHlwZSI6ICJ1bmljb2RlIiwgIm51bXB5X3R5cGUiOiAib2JqZWN0IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJ2YWx1ZSIsICJmaWVsZF9uYW1lIjogInZhbHVlIiwgInBhbmRhc190eXBlIjogImZsb2F0NjQiLCAibnVtcHlfdHlwZSI6ICJmbG9hdDY0IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJudW1fZ3JvdXBzIiwgImZpZWxkX25hbWUiOiAibnVtX2dyb3VwcyIsICJwYW5kYXNfdHlwZSI6ICJpbnQ2NCIsICJudW1weV90eXBlIjogImludDY0IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJxdWVyeV9uYW1lIiwgImZpZWxkX25hbWUiOiAicXVlcnlfbmFtZSIsICJwYW5kYXNfdHlwZSI6ICJ1bmljb2RlIiwgIm51bXB5X3R5cGUiOiAib2JqZWN0IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6IG51bGwsICJmaWVsZF9uYW1lIjogIl9faW5kZXhfbGV2ZWxfMF9fIiwgInBhbmRhc190eXBlIjogImludDY0IiwgIm51bXB5X3R5cGUiOiAiaW50NjQiLCAibWV0YWRhdGEiOiBudWxsfV0sICJjcmVhdG9yIjogeyJsaWJyYXJ5IjogInB5YXJyb3ciLCAidmVyc2lvbiI6ICIxNC4wLjIifSwgInBhbmRhc192ZXJzaW9uIjogIjIuMC4xIn0AGAxBUlJPVzpzY2hlbWEY7A4vLy8vLzRnRkFBQVFBQUFBQUFBS0FBNEFCZ0FGQUFnQUNnQUFBQUFCQkFBUUFBQUFBQUFLQUF3QUFBQUVBQWdBQ2dBQUFBQUVBQUFFQUFBQUFRQUFBQXdBQUFBSUFBd0FCQUFJQUFnQUFBRFlBd0FBQkFBQUFNb0RBQUI3SW1sdVpHVjRYMk52YkhWdGJuTWlPaUJiSWw5ZmFXNWtaWGhmYkdWMlpXeGZNRjlmSWwwc0lDSmpiMngxYlc1ZmFXNWtaWGhsY3lJNklGdDdJbTVoYldVaU9pQnVkV3hzTENBaVptbGxiR1JmYm1GdFpTSTZJRzUxYkd3c0lDSndZVzVrWVhOZmRIbHdaU0k2SUNKMWJtbGpiMlJsSWl3Z0ltNTFiWEI1WDNSNWNHVWlPaUFpYjJKcVpXTjBJaXdnSW0xbGRHRmtZWFJoSWpvZ2V5SmxibU52WkdsdVp5STZJQ0pWVkVZdE9DSjlmVjBzSUNKamIyeDFiVzV6SWpvZ1czc2libUZ0WlNJNklDSmxjRzlqYUNJc0lDSm1hV1ZzWkY5dVlXMWxJam9nSW1Wd2IyTm9JaXdnSW5CaGJtUmhjMTkwZVhCbElqb2dJbVJoZEdWMGFXMWxJaXdnSW01MWJYQjVYM1I1Y0dVaU9pQWlaR0YwWlhScGJXVTJORnR1YzEwaUxDQWliV1YwWVdSaGRHRWlPaUJ1ZFd4c2ZTd2dleUp1WVcxbElqb2dJbWR5YjNWd0lpd2dJbVpwWld4a1gyNWhiV1VpT2lBaVozSnZkWEFpTENBaWNHRnVaR0Z6WDNSNWNHVWlPaUFpZFc1cFkyOWtaU0lzSUNKdWRXMXdlVjkwZVhCbElqb2dJbTlpYW1WamRDSXNJQ0p0WlhSaFpHRjBZU0k2SUc1MWJHeDlMQ0I3SW01aGJXVWlPaUFpZG1Gc2RXVWlMQ0FpWm1sbGJHUmZibUZ0WlNJNklDSjJZV3gxWlNJc0lDSndZVzVrWVhOZmRIbHdaU0k2SUNKbWJHOWhkRFkwSWl3Z0ltNTFiWEI1WDNSNWNHVWlPaUFpWm14dllYUTJOQ0lzSUNKdFpYUmhaR0YwWVNJNklHNTFiR3g5TENCN0ltNWhiV1VpT2lBaWJuVnRYMmR5YjNWd2N5SXNJQ0ptYVdWc1pGOXVZVzFsSWpvZ0ltNTFiVjluY205MWNITWlMQ0FpY0dGdVpHRnpYM1I1Y0dVaU9pQWlhVzUwTmpRaUxDQWliblZ0Y0hsZmRIbHdaU0k2SUNKcGJuUTJOQ0lzSUNKdFpYUmhaR0YwWVNJNklHNTFiR3g5TENCN0ltNWhiV1VpT2lBaWNYVmxjbmxmYm1GdFpTSXNJQ0ptYVdWc1pGOXVZVzFsSWpvZ0luRjFaWEo1WDI1aGJXVWlMQ0FpY0dGdVpHRnpYM1I1Y0dVaU9pQWlkVzVwWTI5a1pTSXNJQ0p1ZFcxd2VWOTBlWEJsSWpvZ0ltOWlhbVZqZENJc0lDSnRaWFJoWkdGMFlTSTZJRzUxYkd4OUxDQjdJbTVoYldVaU9pQnVkV3hzTENBaVptbGxiR1JmYm1GdFpTSTZJQ0pmWDJsdVpHVjRYMnhsZG1Wc1h6QmZYeUlzSUNKd1lXNWtZWE5mZEhsd1pTSTZJQ0pwYm5RMk5DSXNJQ0p1ZFcxd2VWOTBlWEJsSWpvZ0ltbHVkRFkwSWl3Z0ltMWxkR0ZrWVhSaElqb2diblZzYkgxZExDQWlZM0psWVhSdmNpSTZJSHNpYkdsaWNtRnllU0k2SUNKd2VXRnljbTkzSWl3Z0luWmxjbk5wYjI0aU9pQWlNVFF1TUM0eUluMHNJQ0p3WVc1a1lYTmZkbVZ5YzJsdmJpSTZJQ0l5TGpBdU1TSjlBQUFHQUFBQWNHRnVaR0Z6QUFBR0FBQUFKQUVBQU9RQUFBQzBBQUFBZEFBQUFFUUFBQUFFQUFBQUJQLy8vd0FBQVFJUUFBQUFKQUFBQUFRQUFBQUFBQUFBRVFBQUFGOWZhVzVrWlhoZmJHVjJaV3hmTUY5ZkFBQUFvUC8vL3dBQUFBRkFBQUFBUVAvLy93QUFBUVVRQUFBQUhBQUFBQVFBQUFBQUFBQUFDZ0FBQUhGMVpYSjVYMjVoYldVQUFIRC8vLzlzLy8vL0FBQUJBaEFBQUFBa0FBQUFCQUFBQUFBQUFBQUtBQUFBYm5WdFgyZHliM1Z3Y3dBQUNBQU1BQWdBQndBSUFBQUFBQUFBQVVBQUFBQ28vLy8vQUFBQkF4QUFBQUFZQUFBQUJBQUFBQUFBQUFBRkFBQUFkbUZzZFdVQUFBQ2EvLy8vQUFBQ0FOVC8vLzhBQUFFRkVBQUFBQndBQUFBRUFBQUFBQUFBQUFVQUFBQm5jbTkxY0FBQUFBUUFCQUFFQUFBQUVBQVVBQWdBQmdBSEFBd0FBQUFRQUJBQUFBQUFBQUVLRUFBQUFCd0FBQUFFQUFBQUFBQUFBQVVBQUFCbGNHOWphQUFHQUFnQUJnQUdBQUFBQUFBREFBQUFBQUE9ABggcGFycXVldC1jcHAtYXJyb3cgdmVyc2lvbiAxNC4wLjIZbBwAABwAABwAABwAABwAABwAAACXDgAAUEFSMQ== No newline at end of file | |||
There was a problem hiding this comment.
Decode the committed parquet cache artifact
The committed file contains base64 text (UEFSM...) rather than a parquet stream (PAR1). When the default run reaches query group 35928_0, pd.read_parquet() rejects the tracked artifact and the exception handler deletes it; an offline run consequently loses the intended context, while an online run replaces the tracked file with downloaded binary data and dirties the worktree. Decode this artifact before committing it, as _load_rows() already does for the similarly encoded CSV.
Useful? React with 👍 / 👎.
| if limit is not None: | ||
| rows = rows[: int(limit)] |
There was a problem hiding this comment.
Reject nonpositive limit values
When a caller supplies a negative task limit, Python slicing interprets it relative to the end, so -T limit=-1 evaluates 749 samples instead of rejecting the invalid maximum. Because real runs are explicitly described as incurring API cost, a mistaken negative value can unexpectedly launch almost the entire benchmark; validate that limit is positive before slicing.
Useful? React with 👍 / 👎.
…instructions, error handling, tests
… cache, add suite to regression runner
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f6196b9869
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ) | ||
| if series_context: | ||
| try: | ||
| import pandas # noqa: F401 |
There was a problem hiding this comment.
Validate the parquet engine before enabling context
When pandas is installed but neither pyarrow nor another parquet engine is available, this dependency guard succeeds, but every downstream pd.read_parquet() raises an ImportError; _fetch_ts() catches that exception as if the cache were corrupt, deletes each downloaded file, and ultimately runs the benchmark without time-series context. Check for the required parquet engine here so this environment fails clearly instead of silently producing description-only scores.
Useful? React with 👍 / 👎.
| text, res = _summarize_one(part, fine) | ||
| if text: | ||
| blocks.append(text) | ||
| resolutions.append(res) |
There was a problem hiding this comment.
Require both series before emitting paired context
For a correlation or leading/lagging sample where only one comma-separated query group has usable parquet data, this loop silently drops the missing group and returns the surviving block. _to_sample() then marks the sample as having series context and omits the missing-data note, even though these questions require comparing anomalies in both series; the resulting one-sided prompt can produce a successful but invalid benchmark score. Treat paired context as all-or-none, or explicitly surface the missing side.
Useful? React with 👍 / 👎.
Codex review remediation — all 12 threads addressedEach finding below is fixed in
Hack-pass note: the position hack from the 2026-10-19 report is dead (always-A: 61.7% → ~23%); residual no-reasoning baseline ~33% documented in code and README. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5e2304cdea
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| _TS_UNAVAILABLE: set[str] = set() | ||
|
|
||
| # Second-precision timestamps in a question or its choices. | ||
| _TS_SEC_RE = re.compile(r"\d{1,2}:\d{2}:\d{2}") |
There was a problem hiding this comment.
Select resolution from the choices' actual granularity
This pattern treats every full timestamp as requiring 10-second data, including timestamps ending in :00. In the committed dataset, 74 of the 88 timestamp samples have only minute-aligned choices, yet each starts by downloading the 10-second parquet; oversized files are then deleted and can be downloaded again for another sample using the same group. Infer the required interval from the choice spacing or nonzero seconds so ordinary minute-level questions begin at 60- or 300-second data.
Useful? React with 👍 / 👎.
| - No shuffling: choice order is dataset order. The `choice()` scorer detects | ||
| shuffled choices; add shuffling before any serious run. |
There was a problem hiding this comment.
Update the README to match the implemented shuffle
These lines still state that choices are unshuffled and instruct users to add shuffling, but _to_sample() already applies a per-sample SHA-derived permutation. Following this guidance changes the option ordering again, while the later verification section separately claims the task uses dataset.shuffle_choices(seed=42), so neither the documented reproducibility scheme nor its reported position baseline describes the task users actually run. Update both sections to describe the implemented per-sample shuffle.
Useful? React with 👍 / 👎.
| parts = [g.strip() for g in query_group.split(",") if g.strip()] | ||
| blocks, resolutions = [], [] | ||
| for part in parts: | ||
| text, res = _summarize_one(part, fine) |
There was a problem hiding this comment.
Use one resolution for both sides of paired questions
Each side of a paired correlation or indicator sample independently selects its first resolution below the row limit, so groups of different sizes can be summarized at different granularities such as 5 minutes and 1 hour. Their reported peak timestamps are then not temporally comparable and can change the inferred leading/lagging order, directly affecting the benchmark's 163 indicator samples. Negotiate a common usable resolution across all parts before producing either summary.
Useful? React with 👍 / 👎.
…fined fine detection, README sync
Keep the ARFBench cache ignore and pandas/pyarrow pins, and take pytest 9.0.3 from main. Co-authored-by: Cursor <cursoragent@cursor.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 366415011c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1,477 @@ | |||
| """ | |||
There was a problem hiding this comment.
Land the required ARFBench spec before this code
This commit introduces executable evaluation code, but a repository-wide search finds no ARFBench requirements under specs/ or .kiro/specs/. The governance verdict requires code to implement a spec that already exists on the base branch, so this change cannot pass the mandatory gate; have Kiro or Ky land the spec separately, reference it from the PR, and cite its criterion IDs in these tests.
AGENTS.md reference: AGENTS.md:L19-L22
Useful? React with 👍 / 👎.
| fine = _needs_fine_resolution(row["question"], options) | ||
| summary, ts_resolution = _summarize_ts(row["query_group"], fine) |
There was a problem hiding this comment.
Preserve fine timing for indicator questions
For all 163 Anomaly Indicator samples, the question and choices describe leading/lagging relationships without containing literal timestamps, so this check always selects the 300-second-or-coarser path. The committed data demonstrates why that is insufficient: indicator row 35 pairs groups 35950_1 and 35950_6, whose associated recovery samples distinguish 18:19:00 from 18:19:10; five-minute bars can erase precisely the ordering being scored. Select resolution using the task category and the paired groups' required timing granularity, not only timestamp text in the current choices.
Useful? React with 👍 / 👎.
| stats.sort(key=lambda d: -d["peak_z"]) | ||
| shown = stats[:TS_MAX_VARIATES] | ||
| hidden = len(stats) - len(shown) |
There was a problem hiding this comment.
Include option-named channels in identification summaries
For Anomaly Identification samples, the answer choices ask about specific channel labels, but this unconditional top-eight truncation can omit those channels whenever a group has more than eight variates. Selection by rolling-z rank is not equivalent to selection by the benchmark's candidate labels—level shifts, trend changes, and normal channels needed to establish “No anomaly” can rank below noisy unrelated series—so the model receives no observations for choices it must compare. Preserve every option-named channel in the summary before filling any remaining slots by deviation.
Useful? React with 👍 / 👎.
| with urllib.request.urlopen(req, timeout=60) as r: | ||
| if r.status != 200: | ||
| return None | ||
| dest.write_bytes(r.read()) |
There was a problem hiding this comment.
Stream parquet downloads instead of buffering them
On an uncached group, r.read() materializes the entire parquet response in memory before the row-count limit is checked. The benchmark documents groups with thousands of variates and also attempts 10-second files, so a default run can allocate a very large response only to discover afterward that it exceeds TS_MAX_ROWS, potentially exhausting memory before evaluation begins. Stream into a temporary file and inspect parquet metadata or enforce a byte limit before promoting it into the cache.
Useful? React with 👍 / 👎.
Wraps Datadog's ARFBench (Anomaly Reasoning Framework Benchmark, Apache 2.0) as an inspect_ai task so a real vendor benchmark runs through our own eval harness.
-T series_context=true/false