diff --git a/examples/air-passenger-benchmark.ipynb b/examples/air-passenger-benchmark.ipynb index 24b1087f..8f2c1cdc 100644 --- a/examples/air-passenger-benchmark.ipynb +++ b/examples/air-passenger-benchmark.ipynb @@ -44,32 +44,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\sktime\\datatypes\\_series\\_check.py:43: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " VALID_INDEX_TYPES = (pd.Int64Index, pd.RangeIndex, pd.PeriodIndex, pd.DatetimeIndex)\n", - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\sktime\\datatypes\\_panel\\_check.py:45: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " VALID_INDEX_TYPES = (pd.Int64Index, pd.RangeIndex, pd.PeriodIndex, pd.DatetimeIndex)\n", - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\sktime\\datatypes\\_panel\\_check.py:46: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " VALID_MULTIINDEX_TYPES = (pd.Int64Index, pd.RangeIndex)\n", - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\sktime\\utils\\validation\\series.py:18: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " VALID_INDEX_TYPES = (pd.Int64Index, pd.RangeIndex, pd.PeriodIndex, pd.DatetimeIndex)\n", - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\sktime\\forecasting\\base\\_fh.py:18: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " RELATIVE_TYPES = (pd.Int64Index, pd.RangeIndex)\n", - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\sktime\\forecasting\\base\\_fh.py:19: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " ABSOLUTE_TYPES = (pd.Int64Index, pd.RangeIndex, pd.DatetimeIndex, pd.PeriodIndex)\n", - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:7: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " from pandas import (to_datetime, Int64Index, DatetimeIndex, Period,\n", - "c:\\Users\\wilso\\miniconda3\\envs\\neural_prophet\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:7: FutureWarning: pandas.Float64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.\n", - " from pandas import (to_datetime, Int64Index, DatetimeIndex, Period,\n" - ] - } - ], + "outputs": [], "source": [ "from warnings import simplefilter\n", "import matplotlib.pyplot as plt\n", @@ -147,14 +124,12 @@ }, { "data": { - "image/png": "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", + "image/png": "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b71FXFwclZWVdY5fdNFFXH311U0+78033+SBBx7g559/xjAMDMPgzTffBKCwsJDf/OY3JCQkEBUVxemnn87PP//see7PP//MaaedRmRkJFFRURx77LGsWrWKpUuXct1111FYWOi55pw5c7x630VERERERERE3KoLtoGjCsMWhi2qr1fP1dzIwLIFOoCOxqwpY+eLsS19dp1/HljUdFKwMf1uycewhzfr3EsuuYTbbruNjz76iEsuuQSA3NxcFi5cyKJFi5p83qxZs9iwYQOLFi1iyZIlAERHR2OaJueeey7dunXj008/JTo6mpdffpkzzjiDjIwMunXrxhVXXMGYMWN46aWXsFqtrFu3DrvdzoQJE3juueeYPXs26enpAERERHj12kVERERERERE3A7NixyKYXhXa2ePTaFy73dKRgaIkpGdVGhoKJdffjlvvPGGJxn573//m969ezNp0qQjPi8iIgKbzUZiYqLn+FdffUVaWho5OTkEBwcD8NRTT/Hf//6XDz74gN/85jfs2rWLP/zhDwwdOhSAwYMHe54fHR2NYRh1rikiIiIiIiIi0hJVBzcB3s2LdAtSZWRAKRnpJcMWRr9b8r16zr55J1N9cBOHKiMBDOxxI+h56bde3dsbv/71rznuuOPYu3cvvXr14o033uDaa6/FMAyvrgOwevVqSkpKiIuLq3O8vLycbdu2AXDnnXdyww038K9//YvJkydzySWXMGjQIK/vJSIiIiIiIiJyJC3ZpO3mXmKjZGRgKBnpJcMwmt0q7RZ74mxyFs4CDFwJSdc/Y0+cjcXLa3ljzJgxHHPMMbz11luceeaZpKWl8fHHH7foWk6nk6SkJJYuXdrgMfeW7Dlz5nD55ZfzySef8Nlnn/GXv/yFefPmMX369Fa8ChERERERERGRuqoPujdpe5+MPDQzcgum6fS6zVtaR8nINhCePJ2Eae9SsOJhqvPTsccOIWb8/YQnX+j3e99www08++yz7N27l8mTJ9OnT5+jPicoKAiHw1Hn2NixY8nOzsZms9G/f/8mn5uSkkJKSgp33HEHl112GW+88QbTp09v9JoiIiIiIiIiIt4ynQ6q8107KewtaNO2Rw8Eiw2zpgxHyT5skb19HaIcgVK/bSQ8eTq9rlxF/1uL6XXlqjZJRAJcccUV7N27l1dffZVf/epXzXpO//79yczMZN26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mEwmvvrqqwqvG4bB888/T0xMDAEBAQwfPpzk5OQK5xQVFfHYY4/Rtm1bgoKCuPXWWzl+/LgbZ+G5PL2JjKe6vls4sa0CHI6bgNUHzrh/QC3QuD7RJE4bxvmXR5E4bZjWrIiIiIiIiEgz0ajByPz8fPr27ctbb73l9PU5c+bw2muv8dZbb7FlyxaioqK44YYbyM3NtZ8zdepUFi9ezGeffcb69evJy8tj9OjRlJZW3RG5JVFQp27ScgodjhmoiYqIiIiIiIiISH14TJm2yWRi8eLFjB07FijLioyJiWHq1Kk8/fTTQFkWZGRkJK+88gpTpkwhOzub8PBwFixYwF133QXAyZMnad++PcuWLePGG290+l5FRUUUFRXZv8/JyaF9+/bNrkxb6k77bYqIiIiIiIiIuF6jZkZW5/Dhw6Snp5OQkGA/5ufnx7Bhw9iwYQMA27Zto6SkpMI5MTEx9O7d236OM7NnzyY0NNT+1b79xZuRSMsyM6EHBmUBSFA3bBERERERERERV/DYYGR6ejoAkZGRFY5HRkbaX0tPT8fX15fWrVtXeY4zM2bMIDs72/517NgxF49emjrttykiIiIiIiIi4nrejT2AizHZUtMuMAzD4VhlFzvHz88PPz8/l4xPmq9xfaIZp+CjiIiIiIiIiIjLeGxmZFRUFIBDhmNGRoY9WzIqKori4mKysrKqPEdEREREREREREQ8g8cGIzt37kxUVBQrV660HysuLmbt2rUMGTIEgAEDBuDj41PhnLS0NHbv3m0/R0RERERERERERDxDo5Zp5+XlceDAAfv3hw8fZseOHYSFhdGhQwemTp3KSy+9RLdu3ejWrRsvvfQSgYGB3HPPPQCEhoYyadIkpk2bRps2bQgLC2P69On06dOHESNGNNa0RERERERERERExIlGDUZu3bqVa6+91v79E088AcDEiRP54IMPeOqppygoKODhhx8mKyuLQYMGsWLFCoKDg+3XvP7663h7e3PnnXdSUFDA9ddfzwcffICXl5fb5yMiIiIiIiIiIiJVMxmGYTT2IBpbTk4OoaGhZGdnExIS0tjDERERERERERERaZY8ds9IERERERERERERaV4UjBQRERERERERERG3UDBSRERERERERERE3KJRG9h4Ctu2mTk5OY08EhERERERERERkaYrODgYk8lU5esKRgK5ubkAtG/f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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -198,29 +173,27 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "C:\\Users\\wilso\\Desktop\\projects\\GitHub\\sysidentpy\\sysidentpy\\model_structure_selection\\forward_regression_orthogonal_least_squares.py:619: UserWarning:\n", - "\n", - "n_info_values is greater than the maximum number of all regressors space considering the chosen y_lag, u_lag, and non_degree. We set as 14\n", - "\n" + "805.9521186870579\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "805.9521186338106\n" + "/Users/wilsonrocha/Documents/RD/projects/sysidentpy/sysidentpy/model_structure_selection/ofr_base.py:625: UserWarning: n_info_values is greater than the maximum number of all regressors space considering the chosen y_lag, u_lag, and non_degree. We set as 14\n", + " self.info_values = self.information_criterion(reg_matrix, y)\n" ] }, { "data": { - "image/png": "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xX15657xdIsJJeNUCdf97Rte+FJrqrWprcvg0Few7c02ebrk5GSWLVtGaWmpa19ZWRlvvPEGKSkpbRKDNyhJExERERGPcI6iDUiMpFN4UKs8h3NNtcuGmGuqPf6h1lRrMsOAimL3v3L2QMYaOLwGtv/XvMd3/zG/z1hjHnf3XkbTEupRo0aRkpLC22+/7dr39ttvk5yczMiRI137ysvLuf/++0lISCAkJIRJkyaxfv36Wvf68MMP6devH6GhoVx00UUcOnSozvN98803XHjhhYSGhpKcnMz9999PcXHbN6wJaPNnFBEREZF2ybk+midLHesTHRbI324ZxbL1R1i4fIdrTbWnfzCCyf3iW/W524XKEni8a8vuUXIS/jmj6df98jgEhTfpkjvvvJOXX36ZW265BYB//vOf3HXXXaSlpbnO+cUvfsF///tflixZQo8ePVi0aBGXXnop+/fvJzY2liNHjnDdddcxe/Zs5syZw4YNG/jZz35W63m+++47Lr30Un7zm9/wj3/8g5ycHH7yk5/wk5/8hJdffrnpr7UFNJImIiIiIh5xZn201k3SoP411e745zoe/3CXa001u8NgzYFTvLvlGGsOnMKuski/dNttt7F69WoOHTpERkYGX3/9NbfeeqvreHFxMYsXL+b3v/89l112GYMGDeLFF18kNDSUf/zjHwAsXryYXr168eyzz9K/f39uueWWOvPZfv/73/PDH/6QBx54gL59+zJhwgSee+45Xn31VcrK2nakViNpIiIiItJi2QVlHMgpxmLx/Hy0xjjXVHv8w128uiaDF748yNqDp7hhVHcWf3GAzPwzf1wnRYcw/6pBzBiS1Gbx+aTAMHNEqymyttU/cnbXCkgc1rTnbqK4uDiuuOIKlixZgmEYXHHFFcTFnVko/cCBA1RWVjJx4sQzTxMYyNixY9m1axcAu3btYty4cVgsFtc548ePr/U8GzduZP/+/bz22muufYZh4HA4SE9PZ+DAgU2OvbmUpImIiIhIizlb7w9KiiI6LLBNnzsk0MZj1wxhUp84fvHfbWw7ms+2o/l1zsvKL2PO0k0svnVUx07ULJYmlxwSEFq9YQUcZx4DQpt+r2a46667+MlPfgLAX//611rHjOp5bjUTMOd+5z7DjblwDoeDe+65h/vvv7/OsbZuUqJyRxERERFpsbUHc4G2KXVsyPTBibz//yYRZLPUe9z5Z/rC5TtV+thU4fEQkQBdh8OVz5qPEQnm/jYwY8YMKioqqKio4NJLL611rE+fPgQFBbF69WrXvsrKSjZs2OAa/Ro0aBBr166tdd3Z348aNYodO3bQp0+fOl9BQa3TCKchGkkTERERkRZrjfXRmuNIbikV9oYTMAPIzC9jXXqu12P1K9Hd4IHtYAsyR+JG3wn2CggIbpOnt9lsrtJFm81W61h4eDhz5szh5z//ObGxsaSkpLBo0SJKSkr40Y9+BMDs2bN5+umnefDBB7nnnnvYuHEjr7zySq37PPTQQ4wbN4777ruPu+++m/DwcHbt2sUnn3zCn//85zZ5nU4aSRMRERGRFsnKLyP9ZDFWC5zXM9arsbjbil8t+5shINhM0MB8bKMEzSkqKoqoqKh6jz355JNcf/313HbbbYwaNYr9+/ezcuVKOnXqBJjliv/9739Zvnw5w4cP5/nnn+fxxx+vdY9hw4bxxRdfsG/fPi644AJGjhzJr3/9a5KS2r401mK4U6ApzVJQUEB0dDT5+fkN/oMSERER8XfvbD7GA29uYVj3aN77ySSvxrLmwClufvFMGdtQy0EeCXidJ6p+yHdGL9f+N+4e12FG0srKykhPT6dnz56EhIR4O5x2rbGfdVNyA42kiYiIiEiLuNZH8+J8NKexPWNJig7BOSvtOttXTLDt5DrbVwBYMLs8jvXyiJ9IY/w2Sfvf//7HtGnT6Ny5M6GhofTs2ZObb76ZI0eO1DqvoKCABx98kB49ehAcHEyPHj148MEHKSgoaPDer7/+OmPHjiU8PJxOnTpx+eWXs2HDhtZ+SSIiIiJ+ydnZcZwPJGk2q4UnpkYzxHKQIZZ0rrKtAeAq2xqGWNIZYjnIE1OjsVnrby4i4gv8rnGIYRjMnj2bF154gd69e3PTTTcRGRnJ8ePH+eKLL8jIyCA5ORkwF7abPHkyW7ZsYdq0adx8881s3bqVZ599llWrVrF69WrCw2u3DH388ceZN28eKSkpzJ49m6KiIpYtW8bEiRNZuXIlU6ZM8cKrFhEREfFNx/JKOZxbgs1q8fp8NKcpH13MlOrpUs6JPbEU8H7wPPObj4Dz67boF/EVfpek/fnPf+aFF17gvvvu409/+lOd7i5VVVWu7UWLFrFlyxZ+8Ytf8NRTT7n2z58/n8cee4xFixaxcOFC1/59+/Yxf/58+vXrx7p164iOjgbg/vvvZ+zYscyaNYvdu3cTEOB3PzYRERGRVrG2utRxaLdoIoJ95G+k770A78wGw+Hqc+EaOLMGwLWLvRaaiDv8qtyxtLSUhQsX0qtXL/74xz/WSdAAVwJlGAYvvfQSERERPProo7XOeeSRR+jUqRP/+Mc/ai1s9/LLL1NVVcW8efNcCRrA4MGDuf322zlw4ACff/55K706EREREf/jS6WOAJQVwO73wXDUf3zWZzDsB20bk49Qv8DW56mfsV8laZ988gm5ublce+212O123n77bZ588kmef/559u/fX+vcffv2cfz4cSZOnFinpDEkJIQLL7yQY8eO1bouLS0NgOnTp9d5bueieV988YWHX5WIiIiI/3I1DfGFTokndsALU2DXe2CpParXkfMT58BGRUWFlyNp/5w/4/oGk5rCR8ak3eNs3hEQEMDw4cPZs2eP65jVamXu3Ln84Q9/AMwkDaBv37713su5f9++fbW2IyIiSExMbPT8hpSXl1NeXu76vrHmJCIiIiL+7khuCcfySgmwWhjTo5N3g9nyBrw/F6pKIao7XPEHWH4/WIOg4Cj5hFFpBBIT2plA70ba5gICAggLCyMnJ4fAwECsVr8ap/EbDoeDnJwcwsLCWjw9yq+StOzsbACefvppRo0axbp16xg4cCCbN2/mxz/+MU8//TS9e/dmzpw55Oebk0Frli3W5FybwHmeczshIcHt88/2xBNP1JrjJiIiItKeOUsdhyfHEO6t+WiVZbDiIdj4ivl974vhuhchvDP03g4Z38C/riXfEsm0skX8tziKoV7OJ9uaxWIhKSmJ9PR0MjIyvB1Ou2a1WklJScFiaVn3UL9K0hwOs7Y4KCiId955h65duwJwwQUX8J///Idhw4bx9NNPM2fOHK/E98gjj/Dggw+6vi8oKHB1mhQRERFpb5xNQ8b18lJXx9OH4K3bIXMrYIEpD8OFPwdrdalZQDB0GQJAMtlYcbAxI5eh3ev/EL89CwoKom/fvip5bGVBQUEeGan0qyTNOSo2ZswYV4LmNHjwYHr16sX+/fvJy8tzndvQyJezFLHmSJtzBXB3zz9bcHAwwcHBbr4aEREREf9lGIZrJG18r7i2D2DPCvjfj6EsH0Jj4foXoc8ldc+LiIfweKzFOfS1HGPT4Z7MnNj24foCq9VKSEiIt8MQN/hVQWr//v0BiImJqfe4c39paek555DVN2etb9++FBUVkZWV5db5IiIiIh3V4dwSMvPLCLRZGN2W89HsVfDpQnjjRjNB6zYGZn9Vf4LmlDAQgP7WI2w6fLqNAhVpPr9K0i666CIAdu3aVedYZWUl+/fvJzw8nPj4ePr27UvXrl35+uuvKS4urnVuWVkZX375JV27dqVPnz6u/ZMnTwbg448/rnP/lStX1jpHREREpCNzdnUckRxDaFDLOtm5rSgb/nUtrH7G/H7sPXDnRxDdvfHrEgYDMMByhKOnS8kuKGvdOEVayK+StN69ezN9+nT279/PSy+9VOvYk08+SV5eHt/73vcICAjAYrEwa9YsioqKeOyxx2qd+8QTT3D69GlmzZpVa1LfnXfeSUBAAL/73e9qlT3u2LGDV199ld69ezN16tTWfZEiIiIifuBMqWMbtd7PWAPPXwCHvoLAcLj+H3D5IggIOve11SNpI0OOA2g0TXyexfCzVe0OHDjAhAkTyM7O5oorrmDAgAFs3ryZzz//nB49erB27VpXC/3i4mImTZrEli1bmDZtGqNHj2br1q189NFHjBgxgtWrV9dZQ+13v/sdv/rVr0hJSeGGG26guLiYN954g9LSUlauXOkazXNHQUGBa56bszukiIiIiL8zDINxT3zGiYJyXr/7fCb0bsU5aYYBa/4Cn8wHww5x/eHGf0F8f/fvcXQDvHQxBQGdGVb0Z+6+oCfzrhjUejGL1KMpuYFfjaSBOZq2YcMGZs6cycaNG3nuuefYt28f9913H+vWrau1xll4eDhpaWnMnTuX3bt38/TTT7N9+3bmzp1LWlpanQQNYN68eSxdupSEhAQWL17MsmXLmDBhAl9//XWTEjQRERGR9ir9ZDEnCsoJslkZldKK89HK8uGt2+DjX5kJ2tDvw92fNy1BA4gfAEBU1SliKGTT4TzPxyriQX43kuZPNJImIiIi7dFr32Yw73/bOb9nLG/eM751niRru5mg5R4EayDMeALOmwXNXX/qj8MgL4Mby3/NZutgvls4neCANppLJ0I7H0kTEREREe9aezAXgPG9W2k+2pbX4aVLzAQtOhnuWglj725+ggbQxWweMirkOBV2BzuOF3goWBHPU5ImIiIiIm4zDMPV2XGcp5uGVJbBe/8P3pkDVaVmW/17voTuo1t+7+rmIeMizKWWNmWoeYj4Lr9azFpEREREvOtAThEni8oJDrAyMiXGczfOTYe3boesbYAFLvolXPB/YPXQmEKC2Sikn+UooA6P4tuUpImIiIiI25yjaKN7dPLcnK49H8H/7jEbhYR1hutfgt4eXvaoOkmLLz0AGGzMOI1hGLWWYxLxFUrSRERERMRtrvlonih1tFfBqt/C6mfN77ufB99/5dyLUzdHXF+wBhJQWUSyNZcjBZ05nl9Gt5hQzz+XSAtpTpqIiIiIuMUwDNZWL2I9rqVNQwpPwL+uPZOgnT8HZn7YOgkagC0Q4voBcEnnk4DmpYnvUpImIiIiIm7Ze6KIU8UVhAbaGN49pvk3yvgG/n4hHPoKgiLghpfhsichIMhjsdarunnIhMhsADYqSRMfpXJHEREREXGLcxRtTGonggKa8Vm/YcA3f4ZPF5iLU8cPhB+8CvH9PBtoQ7oMgu0wwHoEgM1qHiI+SiNpIiIiIuKWZrXeP7YJXrkS0r+EN2+FT35tJmhDfwB3f9Z2CRq4mod0KTsIwI7jBZRV2tvu+UXcpJE0ERERETknh8NgbXozkrSty8yyxsytUF4AtiCY8SSMuatli1M3R3WSFnh6P0kRNjKL7Gw7ms/YnrFtG4fIOWgkTURERETOaXdWIXkllYQF2RjWPbrxk/MOw/HNcHwLbH3d3FdeABGJcNVz0Hda2ydoADEpEBSBxV7BjK7FgNZLE9+kkTQREREROacz89FiCbSd43P+Pw6tf39RFrwz29xekO/B6NxksZjNQ46uZ1JkDi+TrOYh4pM0kiYiIiIi57SmOklza320614EawNjAdYA87i3VJc8Dgo40zzEMAzvxSNSDyVpIiIiItIou8PgW2eS5s76aMN+ALM+q//YrM/M495SnaQllB4kyGblZFEFh3NLvBePSD2UpImIiIhIo3ZlFlBQVkVEcABDuka5d1F54Vk7fOTPzi5mkmbL2cXgbuZr0bw08TU+8n+LiIiIiPgq53y081I7EXCu+WhOJ3aYjwEhcOWz0HU4RCRAeHwrRemm6pE0Th9iXLcQQItai+9R4xARERERaZRzfTS3Sh2dMr42H8fdZ7bbH30n2CsgILgVImyC8DgIT4DibCbFnGIxsCkjz7sxiZxFI2kiIiIi0iC7w2Bdei4A43vFuXdRZSnsr56TNvBK89Fi8X6C5lRd8jgk8CgAu7MKKC6v8mZEIrUoSRMRERGRBu04nk9heRWRIQEMcnc+2sE0qCyGqO7QdWSrxtcs1SWP0QX76BYTisOArUfyvBuTSA1K0kRERESkQc5Sx/N7xmKzurkA9a73zccBV3hn0epzcc5Ly97JyJQYQM1DxLcoSRMRERGRBjnXRxvnzvpoAPYq2POhue0sdfQ1ziTtxE5G9+gEqHmI+BYlaSIiIiJSryq7g/XV89HcTtKOrIXSXAjtBCkTWjG6FkgYYD4WZ3NevAOAzUfycDi0qLX4BiVpIiIiIlKv747lU1xhJzo0kEFJbs5Hc5Y69rsMbD7aSDwoHDqlAjDAdpSQQCt5JZUcPFns3bhEqilJExEREZF6OUsdz+8Zi9Wd+WiGAburkzRfLXV0ShgMQMDJ3QzrFgNoXpr4DiVpIiIiIlKvtQebWOqYuRXyj0BgGPSe2oqReUAX57y0HYyqnpe2SfPSxEcoSRMRERGROirtDjYcql4fzd1FrHd/YD72uRgCQ1spMg9JGGg+Zu9klDo8io9RkiYiIiIidWw7mkdJhZ1OYYH07xLp3kXOUscBPl7qCK5yR7J3uZK0fdlF5JdWei8mkWpK0kRERESkjpqljm7NRzt1ALJ3gjUA+l3aytF5QOfeYA2EiiLiqk7Qo3MYhgFbtKi1+AAlaSIiIiJSh3MRa7fnozlH0VInme33fZ0tEOL7m9vZuxiVonlp4juUpImIiIhILeVVdjZkNHM+mj+UOjo5F7XOrtE8RPPSxAcoSRMRERGRWrYeyaes0kHn8CD6JkSc+4LCE3Bknbk94IrWDc6TnM1DTpxpHrLlcB52LWotXqYkTURERERqWXvwTKmjxeLGfLQ9HwAGdBsNUV1bNzhP6nKmeUj/LpGEB9koLK9iX3ahd+OSDk9JmoiIiIjU4pqP5m6p4y4/6upYk3Mk7eReArAzPDkGgE0ZeV4LSQSUpImIiIhIDWWVdjZWz8sa707TkLJ8SP/S3B54VStG1gqikyEoEhyVcGo/ozUvTXyEkjQRERERcdlyJI+KKgfxkcH0jg8/9wX7PjGTnLh+ENe39QP0JIulxry0HerwKD5DSZqIiIiIuNRsve/WfLRdy81Hfyt1dOri7PC4i5HVzUMOniwmt7jCezFJh6ckTURERERc1lQ3DXGr1LGyDPZ/am4P9NMkLcHZPGQnMWFBrtHDzSp5FC9SkiYiIiIigDkfbcvhPMDN9dHSv4CKIojsCl1HtW5wraVGuSNwpuRRSZp4kZI0EREREQHMuVgVdgddooJJ7Rx27gtcpY5XmPO7/JFzQeu8DCgvcjUP2ah5aeJFStJEREREBKhd6njO+WgOO+z5yNz211JHgPDOENHF3M7ZzajqJG3rkXyq7A4vBiYdmZI0EREREQHONA1xq9Tx8FooOQkhMdBjYusG1tqco2nZO+kTH0FkSACllXZ2Z2lRa/EOJWkiIiIiQklFFVuP5gFmZ8dz2v2B+dj/MrAFtl5gbcGZpJ3YidVqYaTmpYmXKUkTERERETZmnKbSbtA1OoSU2HPMRzMM2F1jPpq/c7XhdzYPiQG0Xpp4j5I0ERERETmzPlpvN+ajZX0HeYchIBR6X9wG0bWyhDNrpQFnmodoJE28REmaiIiIiLD24JlFrM9p9/vmY5+LIciNLpC+Ln4AYIHiHCjKYURyDBYLHMktJbuwzNvRSQekJE1E2j27w2DNgVO8u+UYaw6cwu4wvB2SiIhPKS6vYtvRfMDNRax3VSdpA/y4q2NNQWEQ29Pczt5JZEgg/btEArApI897cUmHFeDtAEREWtOK7ZksXL6TzPwzn4QmRYcw/6pBzBiS5MXIRER8x/pDuVQ5DLp3CiX5XPPRcg+ac7csNuh3adsE2BYSBlW/tp3QazIjUzqxO6uQzYdPM2NIorejkw5GI2ki0m6t2J7JnKWbaiVoAFn5ZcxZuokV2zO9FJmIiG+puT7aOTm7OqZOhLDYVoyqjdVoww9oUWvxKiVpItIu2R0GC5fvpL7CRue+hct3qvRRRARYezAXcHM+mqvU8apWjMgLupxpww9nOjxuO5ZPRZUWtZa2pSRNRNqldem5dUbQajKAzPwy1qXntl1QIiI+qLCsku3HquejnWsR66JsOPKtuT3g8laOrI3V7PDocNAzLpxOYYFUVDnYmVng3dikw1GSJiLtkrvduNS1S0Q6uvWHcrE7DHp0DqNrTGjjJ+/5EDCg60iI7t4m8bWZ2N5gC4LKYsg/jMViYVSKSh7FO5SkiUi7czyvlPe3ujffLCEypJWjERHxba5Sx54dsKtjTbYAiOtvbjtLHqvnpW3SemnSxtTdUUTajeN5pSxOO8Cb649QYW98/oAFSIwOYWzPdjTpXUSkGZyLWJ+z1LGsANK/MLcHtrP5aE5dBsGJ78zmIQMud42kbdJImrQxJWki4vfqS87G9YplfK84/vjpXoBaDUQs1Y/zrxqEzWpBRKSjyi+tZMdxcz7aOZuG7PsY7BXQuS/E92+D6LwgYaD5WN3hcXhyNDarhcz8Mo7nlZ67HFTEQ5SkiYjfyswv5W+raidn5/eM5YFL+rk+Ee6fGFFnnbRErZMmIgKYTZYcBvSMCycx+hzl387W+wOuaP3AvCVhsPlYXe4YFhTAwKRIth8rYNPh00rSpM0oSRMRv5OZb46cLVvXcHLmNGNIEtMGJfL6txn8+t0dhAfb+PLnFxEYoCm5IiJrq9dHO+coWlU57PvE3G6vpY5wpg3/qX1QVQEBQYxK6WQmaRl5XDmsq3fjkw5DSZqI+I2mJGc12awWbjwvhd9+sIvicjsZuSX0SYhoq7BFRHyW2/PRDn4BFYUQmQRdR7VBZF4S1Q2Co6E830zUugxmdI9OvLomg41qHiJtSEmaiPi8+pKzsT1jmXuO5KymoAArw7vHsO5QLhszcpWkiUiHl1dSwa4sc/2vcedqorR7ufk44AqwtuNKBIvFnJd2ZK25XlqXwa7mITuP51NWaSck0OblIKUj8Lv/y1JTU7FYLPV+zZ49u9a5CxYsaPDckJCG665ff/11xo4dS3h4OJ06deLyyy9nw4YNrf3SROQsmfmlPPrudiYvSuPVNRlU2B2M7RnLG3eP4617xrudoDmNTjV/0W44pE9DRUS+Tc/FMKB3fDgJUY3MR3PYYc9H5nZ7no/m5GwecmIHAN07hRIXEUyl3XAt+i3S2vxyJC06OpoHHnigzv4xY8bUe/4dd9xBampqrX0BAfW/9Mcff5x58+aRkpLC7NmzKSoqYtmyZUycOJGVK1cyZcqUFkYvIufiiZGzOo5t4u6Dj7DaciUbD4d7MFoREf/kdqnjkXVQnAMh0ZB6QRtE5mVdqpuHVHd4tFgsjO4Rw8odJ9iYcZoxqVq6RVqfXyZpMTExLFiwwO3zZ86c6VZytW/fPubPn0+/fv1Yt24d0dHRANx///2MHTuWWbNmsXv37gYTPBFpmYaSswcu6cv4Xp2xWFrQLn/rMmKz13KdLZqFOb3ILa4gNjzIQ5GLiPgfZ9OQ8b3iGj9xd/UC1v1mgC2wlaPyAWe14QcYldKJlTtOaFFraTPKNmp4+eWXqaqqYt68ea4EDWDw4MHcfvvtPP/883z++edMnz7di1GKtD9Z+WUsTtvPG55OzvIOQ8kpwAI73gbg2sC1/Md+IXs3f8W4IX0hJsVDr0JExH/kFlewO6sQgPN7NTIyZBiwyzkf7co2iMwHJFR3eMw7DOWFEBzJ6B5mufzGjDwMw2jZh4YibvDLJK28vJwlS5Zw7NgxOnXqxIQJExg+fHiD53/11VesW7cOm83GgAEDuOSSSwgODq5zXlpaGkC9Sdill17K888/zxdffKEkTaSJ7A6Ddem5ZBeWkRAZwtiesdislvqTs9RYHpjmgZEzgD8OrbMrxsjng+B58Cnm1wLNLxCRjufb6lG0fl0iiIuo+zeRy4kdkJcBASHQ5+I2is7LwmLNLpaFmZC9G5LPY0i3aAJtFk4WlXP0dCnJsWHejlLaOb9M0rKyspg5c2atfTNmzOBf//oXcXF1h+wfffTRWt8nJSWxZMkSpk2bVmv/vn37iIiIIDExsc49+vbt6zqnIeXl5ZSXl7u+LygoOOdrEWnvVmzPrLOYdEJkMIOSovjmwKnWSc6crlkM790HhsO1y3nnKmwEXPe8Z55HRMTPrHGVOp5jPpqz1LH3VAjqQPN5EwZWJ2k7IPk8QgJtDO4azZYjeWzMOK0kTVqd33V3vOuuu0hLSyMnJ4eCggLWrl3LZZddxooVK7j66qsxDMN17ogRI1iyZAmHDh2itLSUffv28Zvf/Ia8vDyuvvpqtm7dWuve+fn5tcoca4qKinKd05AnnniC6Oho11dycrIHXrGI/1qxPZM5SzfVStAAsgvLSdubY3ZrTI3l9bvP5817xjGhd5znErScvfDt4loJWk03VP2WikE3eOa5RET8jLNpyDkXsd5VnaR1lFJHJ2fJY/Yu1y5nK37NS5O24HdJ2qOPPsrkyZOJi4sjMjKS888/n/fff59JkyaxZs0aPvzwQ9e51157Lbfffjs9evQgJCSEPn368Ktf/Yo//elPlJWV8dvf/tajsT3yyCPk5+e7vo4cOeLR+4v4E7vDYOHynRiNnNM5PIjX7z7fs8mZYcCGf8LfL4SsbRAcVftw9Vhapd3B9uMqdRSRjudkUTn7sosAOL+xJO30ITjxHVis0P+ytgnOVziTtOo2/ACjesQAStKkbfhdklYfq9XKnXfeCcDXX399zvPvuOMOAgIC6pwbHR3d4EiZs3SxoZE2gODgYKKiomp9iXRU69Jz64ygne1UcQXrPblmWfFJWPZDeH8uVJVCr4vg9vcgIsGVrFmiu5Nv68QpI4qNWi9NRDogZ1fHAYmRjXe53f2B+dhjojlPqyPp4hxJ22l++Aeu5iG7MgspqajyVmTSQbSLJA1wzUUrKSk557lBQUFERkbWObdv374UFRWRlZVV5xrnXDTn3DQRaVx2YeMJWlPPO6f9n8HiCbDnQ7AFwaWPw61vQ7eR8MB2GPtj87yeF7Js4kdk0ZmNGUrSRKTjUamjG+IHABazQ3BxDgBJ0aEkRYdgdxhsPaJKDGld7SZJ+/bbbwHqLFpdn3379nH69Ok6506ePBmAjz/+uM41K1eurHWOiDQuITLEo+c1qLIMVjwCS6+DohPmL9a7P4fx94G1+i0uIBi6jjC3s7YxsmcXADZknK41j1VEpCNwrY/W2CLWRTlweI25PeCKNojKxwSGQmwvc7tWyaPmpUnb8KskbefOneTl5dXZv3r1ap555hmCg4O57rrrACgsLGTbtm11zj19+jQ/+tGPALj55ptrHbvzzjsJCAjgd7/7Xa2yxx07dvDqq6/Su3dvpk6d6sFXJNJ+je0ZS1J0wwmYBUiKNtvxN9uJnfDiVFj7t+on/TH8OA0S67beJ6l6mY7sXQxLDHG1Uj6ce+7RdxGR9iK7oIwDOcVYLDCuZyNJ2p4PAQOSRkBMB22E1qWR5iGqxJBW5lct+N966y0WLVrExRdfTGpqKsHBwWzfvp2PP/4Yq9XK888/T0qKuTDtqVOnGD58OGPGjGHo0KEkJCRw7NgxPvroI06dOsW0adOYO3durfv369ePBQsW8Ktf/Yphw4Zxww03UFxczBtvvEFlZSUvvvgiAQF+9SMT8Rqb1cL8qwYxe+mmOsecLULmXzUIm7UZDUMMA9a9AB//GuzlEB4P1/wV+l3a8DXRyRDaCUpPE3J6L0O6RbP5sNlKuUfnDtRWWkQ6NGfr/UFJUUSHBTZ8onM+WkcsdXRKGGQu5J19ZiRtdI2RNC1qLa3JrzKOiy66iF27drFp0ya++OILysrK6NKlCzfeeCNz585l7NixrnNjY2O57777WLt2LcuXLycvL4/w8HCGDh3KrbfeyqxZs7DZbHWeY968eaSmpvLHP/6RxYsXExQUxIQJE3jsscc477zz2vLlivi9GUOS6BIZzInC8lr7E6NDmH/VIGYMSWr6TYuy4Z17Yf8n5vd9psG1fzObgzTGYjFH0w6mQeZWRqecx+bDeWzIOM11o7o3PQ4RET+09mAucI75aOWFcHCVuT2wgydpYFZtVBuUFEVwgJXTJZWknyymV3yEl4KT9s6vkrTJkye7PScsKiqKv/zlL816nltuuYVbbrmlWdeKyBmHThZzorAcmwVevH0MheVVJESaJY7NGkHbu9JM0EpOgi0Ypv8Wxt5tJmDuqJGkjUmdzkur09XhUUQ6lLXuLGK97xOwV0Bs7+oGGh2UM0nL2Q0OB1itBAVYGdY9mvWHTrMx47SSNGk1fpWkiYh/SduTDcDYnp2ZOrBL829UWWqWNq5/0fy+yxC4/iVIGNi0+zjnpWVuZdRks2Rlb3Yh+aWVRIc2UvYjItIOZOWXkX6yGKsFzmtsPvDu6q6OA690/0Ow9ii2l/mBYGUJ5B1yNRIZldKJ9YdOs+lwHt8f00Hn60mr86vGISLiX1btMdsWXzQgvvk3yfoOXphyJkEbdx/M+qzpCRqYE+ABTmwnISyAlNgwDAM2q0uXiHQAaw6eBGBw1+iGP5iqKoe91V2uO/J8NABbAMT3N7drNA8ZWd08RL87pDUpSRORVlFSUeWaoH5R/3PMF6uPwwHf/MXs3pizGyK6mOuezXgcApvZtr9TTwiKhKoyOLmXMT3UpUtEOo61B8z5aI223k//CioKISIRuo1po8h8WD3z0kb1iAFgz4lCCsoqvRCUdARK0kSkVaw5cIqKKgfdYkLpk9DEmv2CTHPds4/nmfMi+l8Oc9ZAn4tbFpTVCknDzO3MrYxONZO0DUrSRKQDWOPOfLTdy83HAZefWWuyI3O14T+TpCVEhpAcG4phwNYjed6JS9o9/d8nIq1iVfV8tIsGxDetRfGu92HxBLOzWEAoXPks3PQ6hDfyR0VT1JiX5mylvOVIHlV2h2fuLyLig47llXI4twSb1cKY6g+o6nDYYfeH5nZHL3V0SqibpAGMri553KgP+aSVKEkTEY8zDINVu6vno7lb6lhRDMt/Cm/eAqW5kDgM7vkSxtzl2YnrNZK0fgmRRAYHUFJhZ3dWoeeeQ0TEx6w9YI6iDekWTWRIA/PRjq6H4mwIjobUC9owOh/mTNJO7jPn61Ub5VovLc8LQUlHoCRNRDxuf3YRx/JKCQqwNj73wen4Zvj7hbDxFcACE39qNgeJ7+f54JxJWtY2rBiMrP5Fu+FQruefS0TER7hX6ljd1bHfdAgIaoOo/EBUVzNpNexmolZtVI3mIQ6H4a3opB1TkiYiHucsdRzXqzNhQY2s9OGww+pn4aVL4NR+iOwKt78L0x5rvT8QOvc1yygriiD3oKt5iOaliUh7ZHcYrDlwis92nQDg/IZa7xuGWW4OKnWsyWKpd17agMRIwoJsFJZVsT+nyEvBSXumJE1EPO5MqWMjrffzj8Kr18CnC8BRBQOvhjlfQy/3FqxvNlsAJA4xtzO3qMOjiLRbK7ZnMumpz7n5xbWcLjG7ED789jZWbM+se3L2Tjidbq4L1ueSNo7Ux9UzLy3AZi5qDfr9Ia1DSZqIeFRhWSXrq0sHa81HO7YJXrnSfNzxP1g8EQ59BYHhcM1f4QevQlgji6t6Uo15acOTY7BZLRzPL+N4XmnbPL+ISCtbsT2TOUs3kZlfVmt/dkE5c5ZuqpuoOUfRel8EwU3syNveOdflPHFW85Aeah4irUdJmoh41Nf7T1LlMOgZF05qXPiZA1uXmUnZ/2bDv2dCWR50HQWzv4KRt3q2Oci51EjSwoMDGJgUCegXrYi0D3aHwcLlO6lvppRz38LlO7HXnEu1W6WODeoy2Hw8q8Ojc17aJi1qLa1ASZqIeFStro55h82mIMe3wLY3zRNO7jEfR9wK1/8DOvdu+yATz6yVhmEwpoc5gqckTUTag3XpuXVG0GoygMz8MtalVzdMOp0BWdvAYoX+l7VNkP7EOZKWfwTKCly7R1YnaQdyiskrqfBGZNKOKUkTEY8xDKPW+mj8cSi8MAVemGyOnNW0ZSn8eWSbxwiYv3CtgWZMeYddrZQ3ZKjDo4j4v+zChhO0es/b/YH5mDIBwuNaKSo/FtrJbGwFkL3LtTs2PIhe1RUjm9WKXzxMSZqIeMzOzAKyC8sJDbQxtmcsXPciWBvo7mgNMI97Q0DwmU9GM7e6mofsyiykuLzKOzGJiHhIQmRI085zlTpe0UoRtQP1dHiEM+ulqRJDPE1Jmoh4TNoes9RxYp84ggNsMOwHcOeK+k+e9Zl53FtqzEvrGhNK1+gQ7A6DrUfyvBeTiIgHjO0ZS1J0CA3N9LUASdEh5odpxSfh8BrzgJK0hjk/2NO8NGkjStJExGNW7a5R6uh0eO1ZZ/nI206NRa2BGiWP+kUrIv7NZrUw/6pB9TYOcSZu868ahM1qgT0fgeEw5+p26tGWYfqXhOrmIQ10eNxyJI8qu6Oto5J2zEf+WhIRf5dXUuH6JHFKzdb7h74yH8MT4MpnoetwiEiA8EbWUGsLSSPMx8ytAK6SR5WsiEh7MGNIUr1rVSZGh7D41lHMGJJk7nCWOg68qg2j80M1R9KMM+lv34QIIoMDKKmws+dEoZeCk/aogckiIiJN8+W+kzgM6N8lkm4xoebO8kJI/8Lc/uFb0G0kjL4T7BXmvDBv6jLY7GRWdAIKsxhd3eFx0+HTOBwGVmsbLgkgIuJhVXYH3x0zOxH+4tJ+dOsURkKkWeJoc76/lRfCgVXmtlrvNy6+v/k7ozTX/L0RmQiA1WphREoMX+07yabDeQzuGu3lQKW90EiaiHiEs9RxSs1Sx90fQFUZdO4LXUeY+ywW7ydoAEFhENff3M7cysCkSMKCbBSWVbEvu8i7sYmItNDag7mcLConJiyQWRf05poR3Rjfu/OZBA1g/2dgL4dOPc+MFEn9AkMhtpe53dC8NFViiAcpSRORFrM7DL7YW2N9NKfv/m0+Dr2hbRerdleN5iEBNisjkmMAteIXEf/37pZjAFw+NImggAb+3HOVOl7pm+/RviahusPjifo7PKp5iHiSkjQRabFtR/PILa4gMjjANYma4pNnymiG3OC94BpTI0mDMxPANx7SL1oR8V/lVXZW7MgC4OrhXes/qaoC9n5sbg/QfDS3dKluHlJjrTSAEckxWCyQcaqEk0XlXghM2iMlaSLSYquqW+9f0C+OQFv128qO/4Fhh64jIa6PF6NrRENJmj4NFRE/lrYnh8KyKhKjQhibGlv/SYe+hPJ8s6lT9/PaNkB/5WoesqPW7ujQQPomRAAqeRTPUZImIi2Wtqd6PlqtUsf/mI++OooGkDjUfMw/AsWnGJnSyfVpaE6hPg0VEf/03pbjAFw1PKnhJki7PzAfB1wOVv056BZnG/7s3eCw1zqkD/nE0/R/pYi0SE5hOduO5gMwpV9105C8w3BkLWCBIdd5L7hzCYmC2N7mdtZWokMD6ZcQCcBGzUsTET9UVF7Fp7tOAHD18G71n+RwwO4PzW2VOrovticEhEBVKZw+VOvQyOrmIZsz8to+LmmXlKSJSIs4G4YM6RZFQlSIuXP7f83H1EkQ1cB8CF9xdsljqtZLExH/9cnOLMqrHPSKC2dIt6j6Tzq2AYqyIDgKel7YtgH6M6vNbMUPDXZ43Ho0j0otai0eoCRNRFpkVXWp40X1lToO9eFSR6ezkjTnotYblKSJiB9611Xq2BVLQx0bdy03H/tOh4CgNoqsnUiov3lIr7hwYsICKa9ysPN4gRcCk/ZGSZqINFuV3cGXztb7A6qTtOxdcGI7WANh4NVejM5NDTQP2X4sn7JKe0NXiYj4nNziClbvOwnA1SMaqGIwjDOt9wdc0UaRtSPO5iEnajcPsVotjKxexkWt+MUTlKSJSLNtOpxHYVkVncICGd49xtzpHEXrOw3CGugq5kucSVruQSjLJyU2jLiIYCrtBt8dy/dubCIiTfDhd5lUOQyGdIuid3xE/Sfl7Dbf72zB5vu0NE2X6rXSzip3hBrNQ1SJIR6gJE1Ems1Z6ji5Xzw2q8X8hHa7s6vj9V6MrAnCYiE62dzO+g6LxcLoHjEAbNB6aSLiR5xdHRtcGw1gV/UoWq8pEBzZ+kG1N84FrU8dgMqyWoec89I2H85r46CkPVKSJiLNtmp39Xw0Z6njsY1mx6vAcOh/mfcCa6o689LMEUB9Gioi/uJ4XinrDpldaa8c1kiStrt6PtrAK9sgqnYoMglCYsx1QE/urXVoeHIMVgscyyslK7+s/utF3KQkTUSaJTO/lN1ZhVgscGHf6tb73/3bfBxwBQSFey+4pmqgw+Omw6cxDMNbUYmIuO39beYo2tiesXSNCa3/pLwj5vucxQr9/OiDNF9isZwZTTureUh4cAADEs2OmpqXJi2lJE1EmiVtj9kwZGRyDJ3Cg8BeBdvfNg/6Q1fHms5K0gZ3jSIowEpucQUHTxZ7MTAREfe8606po3MB6+RxEBHfBlG1U655aTvqHBpVXS6vSgxpKSVpItIsrlJHZ+v9Q19BcTaExkLvqV6MrBmcSdrJvVBRQnCAjeHdowH9ohUR33cgp4gdxwsIsFq4fGhSwyc6uzqq1LFlGhhJgzPNQzSSJi2lJE1Emqy8ys7q/WabZ9d8NGdXx8HXgi3QO4E1V2QiRHQBw+FqqzzaOS9NzUNExMc5G4Zc0DeO2PAG1j0rPgUZX5vbar3fMs4k7UTdDo/O5iE7jhVoGRdpESVpItJk69NPU1JhJz4ymEFJUWaHq13vmQeH+Fmpo5Or5HELUKOVsj4NFREfZhgG722tLnVsaG00gL0rzA+iugyFTqltE1x75VwrreAolObVOmQu4xJEhd3BjuNaxkWaT0maiDSZs/X+lH7xWK0W2P8JlBdAVDdIGe/l6JqpgUWt92cXkVdS4a2oREQatf1YAekniwkOsDJtUGLDJ6rU0XNCY8zfd2CuO1eDxWJhZPVo2qaMvLaNS9oVJWki0mTOJO1MqWN1V8ch14PVT99WzkrSYsOD6BVvdqjUvDQR8VXvbT0GwCWDuhARHFD/SRnfwJ6PzO0BStI8wlXyWLd5iBa1Fk/w07+mRMRbMk4VczCnGJvVwqS+cVBWAHtWmAf9ratjTc4kLXsXVJUDMDpFv2hFxHc5HAbLt2YC5+jq+NUzgGEuXt1lcNsE1945Sx7raR7inJe2Ucu4SAsoSRORJnG23h/ToxNRIYFmS2d7OcT1g8RhXo6uBaKTIbQTOCpdv3THVK+XtkFJmoj4oHWHcskqKCMyJIAp/c9qqZ93GI5vhuNbIP1Lc5+9yqwWOL7ZPC7N50x2s+s2DxnWPZoAq4WcwnKOni5t48CkvWhgXFxEpH4NljoO/b65yKe/sljM0bSDaeYfMV1HuEpWth7Jo6LKQVCAPtcSEd/hbBhy2ZBEggNstQ/+cWjdC6pK4YXJZ75foMYWzVaz3NEwav3+Cwm0MbhrFFuP5rPp8GmSY8O8FKT4M/3FISJuK62ws+bAKaB6fbSiHDOpAXM+mr87a15ar7gIYsICKa9ysDOzwIuBiYjUVlHl4MPvnKWO3eqecN2LYG3gs3hrgHlcmi+uH1hsUJYHhVl1Djubh2w+nNe2cUm7oSRNRNy29uApyqscdIsJpV+XCNj5Dhh26DoKOvf2dngtd1aSZrVaXPPSNhzK9VZUIiJ1rN6fQ15JJXERwYzv3bnuCcN+ALM+q//iWZ+Zx6X5AkPO/N7LVvMQ8TwlaSLiNlfr/f7xWCyW2qWO7UHSCPPxxHZz7gYwSr9oRcQHORewvnJYEjaru6Xm+rPPoxprHlL9u2NnZgElFVVtGZW0E/q/VUTcYhgGn++uno/WPwFOZ8CRbwELDP6ed4PzlE49ISgSqsrg5F7AbJACZvMQdekSEV9QWmHn450ngHMsYB0WC1QncJMehK7DISIBwuMbvkbcl1DdPORE3eYhXaNDSIwKwe4w2HZUc/+k6ZSkiYhbDuQUc/R0KUE2KxP6dIbt/zUP9LwAopK8G5ynWK2QWD3ZvrrkcXhyjLp0iYhP+XTXCUoq7CTHhjIyOabhE0tPAwYERsDUX8Hdq+CB7RBdzxw2abou1c1D6unwaLFYGNUjBoBNh1WJIU2nJE1E3JJWXep4fq9YwoIC4Lv/mAfaS6mj01nz0kICbQzuFg2o5FFEfIOzq+PVw7uapecNyfjGfOwxHqw2swNhQHAbRNhBODs85uwGh73OYed6aZv0u0OaQUmaiLjF1Xq/f4JZ2pG9A6yBMPAqL0fmYWclaVCz5FHNQ0TEu/JLKl0fmtXb1bGmjK/Nxx4TWjmqDqpTKgSEmiXyuel1DjvnpW06nKdyeWkyJWkick5F5VWsSzcTlIsGJMD26lG0vtPNBaDbE2eSlrUNHA6gRpJ2SJ+Gioh3rdiRSaXdYEBiJP0TIxs+0TBqjKRNbJvgOhqrDeL7m9v1lDwO7hpFoNVCbnEF/1idzpoDp7A7lKyJe5Skicg5rd53kkq7QWrnMHp2DqvR1fEG7wbWGuL6QUAIVBRB7kHgTCvlPScKKSyr9GZ0ItLBOUsdrxreSMMQgJw9UHLKHOnpOrINIuugulQ3D6knSVu1O9vVt+W3H+zi5hfXMumpz1mxPbMNAxR/pSRNRM4pzdV6PwGOroe8wxAUAf1meDmyVmALgC5DzO3MLQAkRIWQHBuKYWhhUhHxnuyCMr45cAow56M1ylnqmHweBAS1cmQdmKsNf+0kbcX2TOYs3USlvfbIWVZ+GXOWblKiJuekJE1EGmUYxpn5aAMSzjQMGXAFBIV5MbJWVM+8NNei1poALiJe8v62TAwDRqXEkBx7jvdflTq2DWfzkBpt+O0Og4XLd1JfYaNz38LlO1X6KI1SkiYijdqVWciJgnJCAq2c3yMKdrxtHmhvXR1rqjkvrdro1FhAXbpExHtqdnVslGGoaUhbcZY75h6ASnOZlnXpuWTmlzV4iQFk5pe55nqL1EdJmog0yjmKNrF3HCFHVkNxDoTGQq8p3g2sNdUcSavuyOVsHrL58Gmq7A5vRSYiHVTGqWK2HMnDaoErhp0jSTudDoWZZgfe7ue1TYAdVUQXs4GW4YCTewHILmw4QavJ3fOkY1KSJiKNcs1HG5BwZgHrwd8DW6AXo2plCQPNP25KT0P+EQD6dYkkMjiA4go7e04UejlAEelollePok3sE0d85DnWOnOWOnYbDYGhrRxZB2exQEL1aFp1yWNCZIhbl7p7nnRMStJEpEH5JZWuBZwv6hUBO98zD7TnUkcwF3t1Tgavnpdms1oYkRIDaFFrEWlbhmHw7hY3uzpCjfloKnVsE2c1DxnbM5ak6BAaWmbcAiRFhzC2Z2ybhCf+SUmaiDToy305OAzomxBB95OroaIQorpD8vneDq311buotfkLVeuliUhb2p1VyL7sIoICrMwYknjuCw6tNh/VNKRtdKluHlKdpNmsFuZfZe5rKFGbf9UgbNaGjoooSRORRtTb1XHo9WDtAG8d9XV4rJ6XppE0EWlLzoYhF/WPJyrkHKXm+UchLwMsVkjpAB+o+YJ6OjzOGJLE4ltHkRhdt6Tx5rEpzBiS1FbRiZ8K8HYAIuKbHA6DL/bkAHBJzxD4z0rzQHsvdXRKGmE+1kjSRqTEYLXAsbxSsvLL6v3lKyLiSYZh8N4WZ1fHbue+IGON+Zg0HIIjWzEycXGWOxYeN+cyh5of6M0YksS0QYmsS88lu7CMjYdO8+raDL45cBK7w9BImjTK7z4OT01NxWKx1Ps1e/bsOucXFBTw4IMP0qNHD4KDg+nRowcPPvggBQUFDT7H66+/ztixYwkPD6dTp05cfvnlbNiwoTVflojP+e5YPqeKK4gIDmBU6ddgL4e4/mcWem7vugw2P4kuOgGFWQBEBAcwMCkKgA0Zap0sIq1v0+HTHMsrJTzIxsUDE859gav1vkod20xINEQnm9vZu2odslktjO/dmWtGdOPhywcQExbIoVMlrNie5YVAxZ/45UhadHQ0DzzwQJ39Y8aMqfV9cXExkydPZsuWLUybNo2bb76ZrVu38uyzz7Jq1SpWr15NeHh4rWsef/xx5s2bR0pKCrNnz6aoqIhly5YxceJEVq5cyZQpU1rxlYn4Dmep4wV94wjY8by5c+j3zU5WHUFQmJmU5uwyR9MizXkgo3t0YsfxAjZmnObKc7XBFhFpIeco2qWDEwkJtJ37Aq2P5h0JA81uwNk7G/zZhwUFcMf4VP702T4Wf7Gfy4cmYukov1OlyfwySYuJiWHBggXnPG/RokVs2bKFX/ziFzz11FOu/fPnz+exxx5j0aJFLFy40LV/3759zJ8/n379+rFu3Tqio6MBuP/++xk7diyzZs1i9+7dBAT45Y9NpElWVZc6zki1wmdp5s4h13kvIG9IGn4mSet3KWAmaa+uydC8NBFpdVV2Bx98lwnAVSPc+FCoKMe1Vhcp41sxMqkjYRDs+7jWvLT63DEhlRe+PMj2YwWs3n+SC/rGt1GA4m/8rtzRXYZh8NJLLxEREcGjjz5a69gjjzxCp06d+Mc//oFRvVAtwMsvv0xVVRXz5s1zJWgAgwcP5vbbb+fAgQN8/vnnbfYaRLzlZFE5247mAXCR/Wtzkc5uo6Fzb+8G1taShpmP9TQP2XG8gJKKKm9EJSIdxDcHTnGyqILY8CAm9Yk79wWHq1vvJwyGMLV3b1PO5iFnlTueLTY8iJvGmqWRi9MOtHZU4sf8MkkrLy9nyZIlPP744yxevJitW7fWOWffvn0cP36ciRMn1ilpDAkJ4cILL+TYsWPs37/ftT8tLQ2A6dOn17nfpZean6J/8cUXjcZVUFBQ60vEH325NwfDgMFdo4ja9665s6M0DKmpng6P3WJCSYwKwe4w2Hok30uBiUhH4OzqePnQRAJtbvzJpvXRvMfVhn8H1BgAqM+sC3oRYLXwzYFTbD2S1/qxiV/yyyQtKyuLmTNnMm/ePO69915GjBjBZZddxsmTJ13n7Nu3D4C+ffvWew/nfud5zu2IiAgSE+uuQVLf+Wd74okniI6Odn0lJyc3/cWJ+ABnqeO1PSrh6Dqzgcbg73k5Ki9IHGo+5h+B4lMAWCwWRqc6W/GreYiItI6ySjsrq5tLuNXVEeCQ5qN5TVw/sNigLB8Kjjd6areYUK6uLl99/guNpkn9/C5Ju+uuu0hLSyMnJ4eCggLWrl3LZZddxooVK7j66qtd5Yv5+eYn3DXLFmuKioqqdZ5zuynnn+2RRx4hPz/f9XXkyJGmv0ARL6uyO/iiumnI5dbqT2VTL3A1zuhQQqIhtpe5nVWj5DFF66WJSOtK25NNYXkVXaNDGFNdZt2o0tNwYru5rc6ObS8gGDr3MbfPUfIIMHuyOX1gxY4sDuQUtWZk4qf8Lkl79NFHmTx5MnFxcURGRnL++efz/vvvM2nSJNasWcOHH37otdiCg4OJioqq9SXibzYfyaOgrIqYsEC6HvnA3NkRSx2d6il5HJN6JklzOBovaxERaQ5nqeNVw7tidWc9rcPfAoaZKER2ad3gpH41Sx7PoV+XSC4Z2AXDgBe+ONjKgYk/8rskrT5Wq5U777wTgK+/Nof6nSNiDY18OeeL1Rw5i46ObtL5Iu3Rqt3mKNqNKYVYsneCLQgGXuXlqLyoniRtYFIUoYE2Csqq2K9PQEXEwwrLKvl0l/lefNVwN5f6UOt973OzeYjTnCnmaNrbm4+SlV/WWlGJn2oXSRpAXJzZ9aikpAQ49xyy+uas9e3bl6KiIrKy6i4weK45biLthXM+2nWBa8wdfadDaIz3AvK2epK0QJuV4cnmBzYqeRQRT/t4xwkqqhz0jg9ncFc3q3K0iLX3OZO0E+ceSQOzW/DY1Fgq7Qb//Dq9FQMTf9RukrRvv/0WgNTUVMBMprp27crXX39NcXFxrXPLysr48ssv6dq1K3369HHtnzx5MgAff/xxnfuvXLmy1jki7VFWfhm7MguwWAz6nFhh7hx6g3eD8rbE6iQt96A5IbzamB5me+sNh5SkiYhnOUsdrx7ezb3FjsuL4PgWc1tJmvckDDQfc/aA3b0lWpyjaa+tzSC/pLK1IhM/5FdJ2s6dO8nLy6uzf/Xq1TzzzDMEBwdz3XXmYrsWi4VZs2ZRVFTEY489Vuv8J554gtOnTzNr1qxab3533nknAQEB/O53v6tV9rhjxw5effVVevfuzdSpU1vnxYn4gLTqhiE/6JKJreAIBEVAvxlejsrLwjtDdHWn1qztrt3ODo+bDitJExHPOVVUzur9Zrfqq91ZwBrMLryGHaJTIEadpb2mU08IDAN7OZx2b2RsSv94BiRGUlxh519rD7VufOJXArwdQFO89dZbLFq0iIsvvpjU1FSCg4PZvn07H3/8MVarleeff56UlBTX+b/4xS947733WLRoEZs3b2b06NFs3bqVjz76iBEjRvCLX/yi1v379evHggUL+NWvfsWwYcO44YYbKC4u5o033qCyspIXX3yRgAC/+pGJNMmq6iTt5tB1kAcMuBICQ70ak09IGm624c/cCqnmp9Sjks0kLf1kMSeLyomLCPZmhCLSTnz4XSZ2h8Gw7tH0jAs/9wWg9dF8hdUK8QPg+Caz5DHu3FNkLBYLc6b05qfLtvDy14eYdUEvQgJtbRCs+Dq/Gkm76KKLuOqqq9i9ezdLlizhueeeY8eOHdx444188803zJo1q9b54eHhpKWlMXfuXHbv3s3TTz/N9u3bmTt3LmlpaXUWuQaYN28eS5cuJSEhgcWLF7Ns2TImTJjA119/zUUXXdRWL1WkzVVUOVi97yQ27Aw5/Zm5syN3daypnnlp0WGB9OsSAWhemoh4zplSRzdH0UDro/mSJjYPAbhiaBLdO4VyqriCf2/Q8k1i8qthocmTJzd5Tlh0dDTPPPMMzzzzjNvX3HLLLdxyyy1NDU/Er204lEtxhZ0rw/YQUHYKwjpDL83BBOpN0sCc9L33RBGbMk5z6eAOuI6ciHjUsbxS1h86jcUCVw5zM0mrLINjG8zt1EmtF5y4pwlt+J0CbFZ+fGEvHn13B3//8iA3j00hwOZX4yjSCvQvQESAM6WOd0RV/7If/D2wBXoxIh/iTNJO7oGKEtfu0c7mIRpJExEPWF49inZ+z1gSo0Pcu+jYRrBXQEQXiO3VitGJW5zNQ5owkgbw/dHJdA4P4ujpUj74LrMVAhN/oyRNRACz9X4wFYwo+srcoVLHMyITzT+ADEet1spjepjz0r47mk9Zpd1b0YlIO/HeljNdHd1Wcz6aO50gpXUlDDYfcw9CZanbl4UG2bhzYioAi9MOYBhGKwQn/kRJmohwJLeE/dlFXGLbQmBVsdnNsPtYb4flW1wlj1tcu3p0DqNzeBAVdgc7jufXf52IiBv2ZxeyM7OAQJuFy4Y0oXw6Y7X5qNb7viEiAUJjzQ/1cnY36dLbxqUSHmRjd1YhaXtzWilA8RdK0kTE1Xr/9sj15o4h15tdquSMeualWSwWRlePpmm9NBFpCeco2oV94+kUHuTeRfZKOLLO3FbTEN9gsUCX6tG0JpY8RocF8sPzzS7li9MOeDoy8TP6K0xEWLUnhyiKGV1enaSp1LGuBpqHjKleL00dHkWkuQzDONPV0d210cB8P6osgdBOED+wlaKTJnN2eDzhfvMQpx9N6kWgzcK69Fw2ZuR6ODDxJ0rSRDq4sko73xw4yaW29QQYFeYaL85PAeWMxGHmY/YuqCp37XaOpG3MOK05BCLSLNuO5nPoVAmhgTYuGdjF/Qszqlvvp0xQ9YMvaWbzEIDE6BCuG9kdgMVpBz0ZlfgZ/R8t0sGtOXiKskoHNwR9a+4YeoMmn9cnJgVCYsBRWesX75Bu0QQFWDlVXMGhUyUNXy8i0gDnKNolg7oQHtyE1ZG0PppvcpU77mzW5T+e3AuLBT7ddYJ9Jwo9GJj4E48kaX/605+w29XZTMQfpe3OJp48zjO+M3cMucG7Afkqi6XeksfgABvDukUDKnkUkaazOwze39aMBawddji81txWkuZb4geYj4WZUNL0ksXe8RFcOshsHvP8FxpN66ialaSdnZDNnTuX4cOH88knn3gkKBFpG4ZhsGpPDlfY1mLFAd3GQGxPb4fluxpZ1BrQ/AERabJv009xoqCc6NBAJveLd//CEzugPB+CIs+UY4tvCImCaLMBSHNKHgFmT+kNwLtbjnEsz/1W/tJ+NDlJ27p1K+edd16tfYsXLyY7O5sZM2Zw7bXXcvCgsn4Rf3DwZDGHc0u4xrbG3KGGIY07R5KmDo8i0lTOBawvG5JIUEAT/ixzro+Wcj7YmlAiKW2jS3XzkGaWPI5IjmFC785UOQxe+kp/V3dEbr8b2O125s+fz/nnn8+MGTNqHbvnnnvYu3cv9913Hx9++CGDBw/ml7/8JcXFxR4PWEQ8Z9XubJItJxhp3QcWKwz+nrdD8m1JI8zHE9vBXuXaPao6SduXXUR+SaUXAhMRf1RR5eDD77KAJnZ1hDNNQ1Tq6JtczUOal6QBzJ5sjqYtW3eE08UVnohK/IjbSdpTTz3Fc889x3vvvcfjjz9e53hMTAzPPfccmzdvZsKECTz55JP069ePf/3rXx4NWEQ8J21PDldbq0fRel4IkU3oKtYRxfaCoAioKoOTe1274yKC6RkXDsCmwxpNExH3fLk3h/zSShIigzm/Z2f3LzSMMyNpWsTaNyVUNw850fwk7YK+cQzuGkVppZ0law55Ji7xG24nacnJyRQWFvLZZ5812iRk8ODBfPbZZ/z73/8mKCiImTNnMn78eNavX++RgEXEM4rLq/g2/STX2Ko/jVWp47lZrWfmfjQ4L01Jmoi4x9nV8cphXbFZm9BV9+ReKDkJASHQdVQrRSctUrMNfzOXZ7FYLMypnpv2yjeHKKmoOscV0p64naTddtttpKWl8c477zB58uRznn/99deze/duFixYwLZt2xg/fjx33nknWVlZLQpYRDzj6/0n6e04TD/rMQxbMAy8ytsh+YdzzUtT8xARcUNJRRWf7DwBwDXNLXXsfh4EBHk4MvGIuH5gDTCbuxQca/ZtLhuSRI/OYeSVVLJs3REPBii+rkmNQyZNmsSWLVsYO3Zsg+fY7XY2b97M3//+d+bMmcObb75JeXk5DoeDJUuW0L9/f/70pz+1OHARaZlVe3Jco2iWvtMgJNrLEfkJZ5KWta3W7jHVSdqWI3lU2h1tHZWI+JlPdp6gtNJOj85hDOvexPdflTr6voAg6NzH3G5ByaPNauGeC83RtJe+OqjfLx1Ik9sBhYaG8swzz9Tat2zZMr799lvWrVvHli1bKCsrw6ge2o2Li+Pyyy9nwoQJpKam8swzzzB37lzee+893n77baKj9YehSFszDIMvdmfxlro6Np1rJG0bOBxmCSTmujbRoYHkl1ayK7OAYd1jvBejiPg8Z1fHq4d3xWJpQqmjYWgRa3+RMAhydpvNQ/pNb/ZtrhvVjWc+2cvx/DLe23Kc60d392CQ4qs80rP1hz/8IQBWq5VBgwYxYcIEJkyYwPjx4+nbt2+tc2+66Sb+8pe/8OCDDzJ37lz++c9/eiIEEWmCPScKSSr8ju7BJzGCIrD0u9TbIfmPuH7mPJCKQjidDp3NTzitVgujUmJYtSeHDYdOK0kTkQbllVTwxd4coBmljqcPQeFxsAaa5Y7iu7oMgh1vt6jDI0BIoI0fTerJUyt28/wXB/jeyG5YmzKHUfySR5K0+fPnM2HCBMaNG0dkZOQ5z//JT37Cpk2bWL58uSeeXkSaaNXuHK6xmeUyloFXQWColyPyI7YA6DIEjm2AzC2uJA1gTGosq/bksDHjNHdN0qLgIlK/j7ZnUWk3GJgURZ+Ec//dVIuz1LHbKAgK83xw4jkJLVsrraZbxqXwt1X72ZddxGe7s5k2SN2Y27smL2Zdn/nz5zNt2jS3EjSnfv36kZurCfYi3vDl7uNcbvvW/GboDd4Nxh+50TzEaGY3LxFp/97bcqbUsclc89FU6ujznElazt5aa2s2R1RIILeO7wHA4rT9+h3TAXgkSWuO2267jZdeeslbTy/SYeWXVhJy5CviLAXYQztDzyneDsn/NJCkDe8eQ4DVwomCco7llXohMBHxdScKylibfgqAq4YnNf0GGavNRzUN8X0xPSAwHOzlkHugxbe7c2IqQQFWNh3OY/0hLffS3nktSevWrRt33nmnt55epMNave8kV1rNSee2IdeZ5XvSNDWTtBqfZoYG2RjcNQrQemkiUr/lW49jGGZH2O6dmliumH/MnJNmsULy+a0Sn3iQ1QoJA8xtD5Q8JkSGcEN105DFaftbfD/xbV5L0kTEO77adYRLrRvMb9TVsXkSBprr35Sehvza69aM0qLWItIIV1fHpjYMAThc3ZE3cRiERHkwKmk1zkWtP34Ujm1q8e1+fEEvrBZzGZ1dmQUtvp/4LiVpIh2Iw2Fg7PmICEsZZeHdIbnhNQ+lEQHBZ37xnlXyOKZHLAAbVIoiImc5dLKYrUfzsVktXD60OaWOztb7KnX0GwmDzcf8w7DtzRbfLjUu3PVv5/kvWl5CKb5LSZpIB7L9eD5TK78EIHD4DdCUtXmktgbmpY1JNUfSdmcVUFTesoniItK+vFc9ijaxTxxxEcFNv4HWR/MfeYfh+GbzQz2n7f+F41vM/XmHm33r2ZPNrsLvb8vkSG5JCwMVX6UkTaQD+Xr7QaZYtwBgG/4D7wbj75JGmI9nJWldokLoFhOKw4Ath/PaPCwR8U2GYbiStGua09WxKAdO7jG3laT5vj8OhRemwAcPntlXfBJemGzu/+PQZt96SLdoLugbh91h8OJXB1scqvgmJWkiHUjV9ncJtlSRF9EHugz2djj+rYGRNDgzmrYhQ8uMiIhpV2Yh+7OLCA6wMn1wM9a4cs5HSxgEYbGeDU4877oXzbnLtVQ3mrIGmMdbYM4UczTtzfVHOFlU3qJ7iW9qkyTtyy+/5JtvvsHhcLTF04nIWewOg5XbMxmZ/wkAFjUMabkug80Oa0UnoDCr1qExah4iItXsDoM1B07x9CfmKNhF/eOJDAls+o20Ppp/GfYDmPVZ/cdmfWYeb4HxvTozPDmG8ioHr3x9qEX3Et/UJknalClTuOCCC+jbty9///vfqaioaIunFRFgxfZMJj31Oa+99k8mWncAcOfGFFZsz/RyZH4uKBzi+pnbZ42mOTs8bj6ch92hBUdFOirn++/NL67ls13ZAKxNz23e+69rfTQlaf7H8/O/LRYLcyb3AuDVNYc0B7odapMk7cILL2TSpEkUFBQwZ84cUlNT2+JpRTq8FdszmbN0E5n5ZdwX8C4WC2Qb0WwuiGbO0k1K1FqqgZLHAYlRRAQHUFRexZ6sQi8EJiLeVvP9t6b8ksqmv/+W5kHWdnNbnR39R3g8RCRA1xHQdbS5LyDE3O8B0wcl0is+nIKyKt74tvmNSMQ3tUmSlpaWxhdffEFOTg7btm3j0UcfbYunFenQ7A6Dv7+XxmDLQQZb0hllNRe+DKOcQZZ0hlgO8vf30jTS0xINJGk2q4WRKTEAbDyskkeRjsbuMFi4fCf1vbs69y1cvtP9998j35pXxvaGyEQPRSmtLrobPLAd7l4F0x+r3mn12Bp3VquF2Reac9NeWn2Q8iq7R+4rvqHNG4cMGTKE2bNnt/XTinQ469Jz+V/FbN4P/hUfBM8j0GK+eYdTxgfB81ge/Cv+VzGbdelqbtFsjTQPGZVSPS/tkH6+Ih3NuvTcOiNoNRlAZn6Z+++/GWq977cCgs3lbnpMhM59oKrEbMXvIdeM7EpiVAgnCsp5Z/Mxj91XvM8jSdr3vvc9PvroIwxDn8iL+IrswjJ+WnEvlYat1n7n0miVho2fVtxLdmHDf0jIOSRWt1DOPwIltf/YcnZ41EiaSMeTXeDe+6rb77+HtIi137NYYNQd5vbGJR67bXCAjR9N6gnA3788qOqYdsQjSdq7777LlVdeSY8ePViwYAGHD6suVsTbEiJDeNcxiWsrHqv3+LUVj/GuYxIJkSFtHFk7EhINsebE7bNH00Ykx2C1wJHcUrf/YBMR/2YYBt8cOMniLw64db5b77/lRZC5xdxOVZLm10b8EKyBcHwTZG7z2G1vPj+FqJAADuYU88nOrHNfIH7BI0najh07+OlPf0pZWRmPPfYYvXr14rLLLuPtt9+mqkrdZkS8YWzPWJKiQwiistZ+h2EOpVmApOgQxvbUejst0kDJY2RIIP0TzXkHG9SKX6RdcyZnN76wlh+++C27z9EwqEnvv0fXg6MKopMhJsUzAYt3hMfBwCvN7U2eG02LCA7gjgmpACxOO6DKtnbCI0nawIEDeeaZZzh27Bhvvvkml1xyCZ988gnf//736datGw899BB79+71xFOJiJtsVgu/vmIQ3S05AFQYNn5ZeRffGT3JNqI5ZUQx/6pB2Kyebw3coTS2qLXWSxNp92omZ+vScwmyWbljfA+euG4oFuo2X3d+7/b7r9ZHa1+cJY/b3oKKYo/dduaEVEICrWw9ms+aA6c8dl/xHo82DgkMDOT73/8+K1asID09nV//+teEhobyhz/8gYEDBzJlyhRee+01ysu1MrpIWwgOtDLYmgHAe44JvG6/hGsqfsMNwS8w/9ZpzBiS5OUI24FGkrTR1UmaRtJE2p81B05x49/X1EnOvvzFRSy8Zgg3j01h8a2jSIyuXdKYGB3C4ltHuf/+q6Yh7UvPydApFcoLYMc7Hrtt54hgfjAmGcDtclvxbRajFcdE7XY777zzDj/96U85fvy4+YQWC7GxsTz00EM8+OCDWK1t3mCyzRQUFBAdHU1+fj5RUZ5ptyrSFLf/cx0PHZrFYGsG+yY9y864S0mINEtsNILmIcWn4PfV89IePlKrtfKR3BIuWLSKAKuF7xZcSmiQrYGbiIi/WHPgFH/8dC/fVndmDLJZuXlsMrOn9CYpOrTO+XaHwbr0XLILy5r+/ltZBk+mgL0cfrIR4vp48qWIt3z1NHz2GCSfDz/62GO3PZJbwpQ/mEvrvP//JjGkW7TH7i2e0ZTcoFUypP379/Pwww+TnJzMD37wA06dOsUPf/hDVq5cyRNPPEFYWBgPPfQQDz30UGs8vYgAB3OK2LF3v2skre+4q7hmRDfG9+6sBM2Twjubc0UAsr6rdah7p1C6RAVT5TDYdjSv7WMTEY9xjpzd/OJavq0xcvbFL6aw8Joh9SZoYJaej+/duXnvv8c3mQlaeAJ07u2hVyJeN+IWsNjM9e+yd3nstsmxYVw1zByh1Wia//NYklZeXs7SpUuZMmUK/fv3Z9GiRURHR/P73/+eY8eOsXTpUqZNm8YvfvEL9u7dy8SJE3n11Vc99fQicpZ/rc1gonW7+U3iUIiI925A7VniMPPxrJJHi8WikkcRP9fc5MwjapY6WvThWrsRmQj9LzO3PdiOH2D2FDOZ/+i7TNJPem7Om7Q9jyRp/+///T+SkpK44447+Pbbb7nppptYtWoVu3bt4sEHHyQ2tnb3ouDgYC699FJOnjzpiacXkbMUl1fxnw1HucBaPbLT6yLvBtTeNTovzXz/+2znCd7dcow1B05pHRsRP1BfcnZ7WyVnTlofrf0aPdN83PqGWdbqIQMSo5g6IAGHAS98edBj95W2F+CJm/z1r3+lX79+zJs3j5kzZ9K5c+dzXjNlyhQeffRRTzy9iJzl7c3HKCyvZErodjCA3krSWlUjSVpllQOATUfy2LRsi3l6dAjzrxqkxi0iPqi+OWc3jU1mTgNzzlqNvRKOrDO3tT5a+9N7qlkqn38Edr0Hw37gsVvPntybz3dn89+NR5l7SV8SorQeqj/ySJL2+eefM2XKlCZdM3HiRCZO1JuOiKcZhsGr3xyij+UY8UYuBIRAynhvh9W+OZO0k3ugogSCwgBYsT2Tp1bsrnN6Vn4Zc5ZualqHNxFpVT6TnDllboPKYgiJgfiBbf/80rqsNhh5G6Q9bpY8ejBJOy+1E6N7dGJjxmn++fUhHr5sgMfuLW3HI0laUxM0EWk9aw6eYl92EfcEVc9HSxkPgV74A6MjiUw0J/YXZ8OJHZB8HnaHwcLlO6mvsNHAXCtp4fKdTBuUqEYuIq3oXN0VfS45c6o5H60dd8Lu0EbeCl88CRmr4eQ+iOvrkdtaLBbmTO7NrFc3sHTNIc5L7URReZW6O/sZjyRpIuI7lnxzCIDrYvZBAWZJhbQui8UcTdv/CWRugeTzWJeeS2Z+w/MMDCAzv4x16bmM733uEnERaboV2zNZuHxnrf8XneXG0aFB/Omzvaw96GPJmZPWR2v/ortB3+mwdwVsWgLTf+uxW08dkEBSdAiZ+WX8aMkG136V2/sPJWki7cixvFI+2XmCICrpW7LF3Kn5aG3DlaSZ89KyC92bCO7ueSLSNCu2ZzJn6aY6o9mZ+WXMXrrJ9b3PJWcADjtkrDG31TSkfRt1h5mkbXkdpv4aAoI9ctuPd2bV+0Ghyu39h8bPRdqR19Zm4DDg1m4nsFaVmiV4CYO9HVbHcFbzkIRI9yZqu3ueiLivsXLjmm45P4W0n0/hsbbq1uiu7J1Qng9BEWeW+JD2qe90iEyCklOw+wOP3NL5778+zv8nFi7fqU7DPk5Jmkg7UVZpZ9n6IwDcEle9iGWvKZrL0FacSVr2LqgqZ2zPWJKiQ2io8t+CWXYytmdsA2eISHOdq9zY6cphXeka40PJmVPGN+Zj8vlgU9FTu2YLMOemgVny6AFNKbcX36W/3kTaife3ZZJbXEHX6BB6FVS3bdZ8tLYTk2J2YXNUQvYubFYL868aBNBgojb/qkGawC3SCvy+3PjQavNR89E6hpG3ARY4mAa5LV/bzO///QugJE2kXTAMw9Uw5K7R0Vgyt5gHek3xVkgdj7N5CLhKHmcMSWLxraNIjK5d0hgRHKD5ACKtyK/LjQ3jzEha6iTvxiJto1OPMx+qbvpXi2/n1//+xUVJmkg7sOVIHt8dyycowMqNsQcBw1xXJ0pJQJuqZ1HrGUOSWP3QVN64exy3j+8BQGSwjWmDEr0RoUiH4Cw3bohPlxuf3AclJ801LruO9HY00lZG32E+bnnNXMi8BVRu3z4oSRNpB15dkwHAVcO6Enn8K3OnSh3bnjNJy9pWa7fNamF878788vKBxIQFkllQzpf7crwQoEjHYLNa+L9L+9d7zPmHq8+WGztb73c/z2Od/sQP9LsMwuOh6ITZ7bEFVG7fPihJE/FzOYXlvL/tOAB3jE+BA6vMA2q93/aSRpiPWdvBXlXncEigje+N7AbAm+uOtGFgIh1Pek4xAAFn/SGaGB3i2+XGWh+tYwoIghG3mNsbW95ApKFy+8gQldv7C7UMEvFzy9YdptJuMCI5hmGhpyD/CNiC9AveG2J7mS2zK4rg1D5IGFjnlJvOS+Hlrw/x6a4T5BSWEx+pT8pFPC2nsJx/fp0OwHM3jaRTeBDZhWUkRJolXj47gmAYcMiZpGl9tA5n1O3w9R9h/6eQd9hsSNUCM4YkMW1QIuvSc/nf5qO8teEoveLClaD5CY2kifixSruD1749DMAdE3rAgc/NA8nnQ1C4FyProKzWM2sa1ZiXVlP/xEhGpsRQ5TD4z8ajbRicSMfxt7T9lFTYGdY9msuGJjK+d2euGdGN8b07+26CBpCXAYXHwRpgljtKx9K5N6ReABiwealHbukst/+/6Wb579aj+ZwoUFdHf6AkTcSPfbLzBFkFZcRFBHH50CQ46Cx11Hw0r6mnecjZbj7P/HT0zfWHMQwtJiriScfySnltrfnh1c8v7Y/F4sNJ2dmcXR27joKgMO/GIt4xeqb5uHlpvWXzzZUQFcKI5BgAPt11wmP3ldajJE3Ejznb7t88NoVgiwPSnU1DNB/Na5IaH0kDuGJYEuFBNg6dKmHtQS0mKuJJz326jwq7g3G9YpnUJ87b4TTNIc1H6/AGXgWhsVBwzCx79KBpg7oA5ge84vuUpIn4qV2ZBXybnovNauGH56fA0Q1QUWi+uScO93Z4HZdrJG0bOBz1nhIeHMDVI6obiKw/3FaRibR7B3KK+M8ms4zY70bR4EzTEK2P1nEFBMOIH5rbm1reQKSmSwebSdo3+09RVO65UTppHX6dpC1atAiLxYLFYmHt2rV1ji9YsMB1/OyvkJCG1095/fXXGTt2LOHh4XTq1InLL7+cDRs2tOZLEWkyZ9v9Swd3ISk69EypY68p5two8Y64/ub6RhWFcDq9wdNuOi8ZgA+3Z5FXUtFW0Ym0a89+she7w+DiAQmM7uFna0AVHDffMyxWSB7r7WjEm0bdbj7uXWH+u/CQ3vER9IwLp8Lu4Is9WgbG1/ltd8ddu3bx6KOPEh4eTnFxcaPn3nHHHaSmptbaFxBQ/0t//PHHmTdvHikpKcyePZuioiKWLVvGxIkTWblyJVOmTPHQKxBpvvySSt7ZfAyAO8anmjudTUNU6uhdtgDoMhiObYTMLeZE8HoM6x7NwKQodmUW8M7mY8yc2LNt4xRpZ3Ycz+f9bZkA/Gx6/Wuk+TTnfLTEoRAS7d1YxLvi+0PKeDi8Bja/BpN/7pHbWiwWpg3qwgtfHuSTnVlcMUxdHn2ZXyZpdrudO+64g+HDh9OvXz+WLm28A87MmTPdSq727dvH/Pnz6devH+vWrSM62nyTvP/++xk7diyzZs1i9+7dDSZ4Im3l3xuPUFppZ0BiJGN7xkJpnpkUAPRSkuZ1ScOrk7StMOT6ek+xWCzcdF4y89/bwbL1R7hjQqr/lWaJ+JCnP94LwFXDuzKoa5SXo2mGDLXelxpGzzSTtE2vwgU/81iFjDNJ+3x3NpV2B4E2Vd74Kr/8L/PUU0+xdetW/vnPf2Kz2Tx235dffpmqqirmzZvnStAABg8ezO23386BAwf4/PPPPfZ8Is3hcBj8a61Z6nj7+Oo/7NO/BMMBnftCTLKXIxR3OjwCXDuiG8EBVnZnFbL1aH4bBCbSPm04lMvnu7OxWS3MvaSvt8NpHudImpqGCMCga8wR1fzDcNBzf3uOSulE5/AgCsqqWJeuxlW+zO+StO3bt7Nw4UJ+9atfMXjwYLeu+eqrr1i0aBFPP/00H3zwAeXl5fWel5aWBsD06dPrHLv00ksB+OKLL5oXuIiHfLE3h4xTJUSFBHDtyK7mTrXe9y01k7RGWuxHhwVyxVCz3GTZOjUQEWkOwzBYtHIPAN8f3Z1e8RFejqgZik9Czm5zO0VJmgCBoTDsJnN7o+caiNisFi4emACoy6Ov86skraqqipkzZzJw4EAefvhht6979NFHeeihh/i///s/rrzySnr27Mknn3xS57x9+/YRERFBYmJinWN9+/Z1ndOQ8vJyCgoKan2JeNqSNYcA+MGYZMKCqktvNR/NtyQMMhejLT0N+UcaPfXG6gYi7209rm5bIs3w1b6TrEvPJchm5f6L/XQU7fAa8zF+IIR39m4s4jtG32E+7vkQirI9dttpg8y/cz/ZeUJrdfowv0rSHn/8cVeZY2Bg4DnPHzFiBEuWLOHQoUOUlpayb98+fvOb35CXl8fVV1/N1q21S5Hy8/NrlTnWFBUV5TqnIU888QTR0dGur+RklZ2JZx06WUzanhwsFrh1XA9zZ+5BOH3ITArUttk3BARDwkBz+xwlj2N7xtIrLpySCjvvb/VcFy+RjsAwDH5fPYp267gedI0J9XJEzaT10aQ+XQZDtzHgqIItr3nstpP6xBESaOVYXik7MzWg4Kv8JknbunUrv/3tb/m///s/Ro0a5dY11157Lbfffjs9evQgJCSEPn368Ktf/Yo//elPlJWV8dvf/tajMT7yyCPk5+e7vo4cafwTdJGmcrbdn9IvntS4cHPngepSx+5jITjSS5FJHW7OS7NYLK7RtGXr9Z4h0hQrd2Tx3bF8woJs3HtR/Z1U/UKGkjRpwOiZ5uOmVxtce7OpQoNsXNg3HoCPd6jk0Vf5TZJ2xx130Lt3bxYsWOCRewUEBPD111/X2h8dHd3gSJmzdLGhkTaA4OBgoqKian2JeEpxeRX/3mj+EX/7hNQzBzQfzTcljTAfz5GkAVw/ujsBVgtbjuSxO0ufaoq4w+4w+EN1R8dZk3oSFxHs5YiaqSwfsr4zt9XZUc425DoIijSrZg595bHbThtkLmyteWm+y2+StK1bt7J7925CQkJqLUq9ZIk5mXL8+PFYLBbeeeedc94rKCiIyMhISkpKau3v27cvRUVFZGVl1bnGORfNOTdNpK29s+UYhWVVpHYOY3L1J2DYq8zOjqD5aL7GzZE0gLiIYNcvzGXrNJom4o53Nh9jf3YR0aGBzLqwl7fDab7D3wIGxPaCKK1bJWcJCoehN5jbmzzXQOTigV2wWmBnZgFHT5ec+wJpc36z4NePfvSjevd/+eWX7Nu3j6uvvpr4+Pg6i1bXZ9++fZw+fZrhw4fX2j958mTWrFnDxx9/zO23317r2MqVK13niLQ1wzB49Ruz1PG28alYrdXraR3fbH4KGxINXUd6MUKpo8tgsFih6AQUZkFk3YZENd00NoWPtmfxv83HePiyAYQEem55EZH2pqLKwbOfmqNoc6b0Jirk3PPUfVbGavNRpY7SkNEzYePLsGs5FJ/ySHOZ2PAgxqTGsi49l093nmDmxJ4tj1M8ym+StJdeeqne/TNnzmTfvn088sgjjBs3zrW/sLCQ9PR0hg0bVuv806dPuxK+m2++udaxO++8kz/84Q/87ne/45prrnGVNu7YsYNXX32V3r17M3WqSsqk7a09mMueE4WEBtq4YXT3MwecpY49J4NVf9T7lKBwiOtnttXO3HbOJG1Snzi6xYRyLK+UlTuyuGZEtzYKVMT/vLn+MEdPlxIfGcwd41O9HU7LuNZHU6mjNKDrCLM6I3MrbH0DJvzEI7edPqgL69Jz+VhJmk/ym3LHpjp16hTDhw/nvPPO46677uLhhx/mtttuo2/fvnz11VdMmzaNuXPn1rqmX79+LFiwgL179zJs2DB+9rOfMXv2bCZMmEBlZSUvvvgiAQF+k9dKO/Jqddv9743qRnRojU+M1XrftzWh5NFmtfCDMWYDkTe0ZppIg0or7Dz3+X4A7p/ah9AgP/6AqqLYrIgAJWnSOFcDkSWNrr/ZFM4y+2/Tc8kvqfTIPcVz2m2SFhsby3333YdhGCxfvpynn36a5cuXM3DgQJ5//nk++ugjgoKC6lw3b948li5dSkJCAosXL2bZsmVMmDCBr7/+mosu0h/C0vaO55XycfXE3lqfGJcVwNH15raahvgmV5K2xa3Tvz+mO1aLOXKafrK49eIS8WNL1hwip7Cc7p1CufG8FG+H0zJH15vt1aO6Q4yfvxZpXUNugMAwOLn3zLp6LdSjczj9ukRgdxis2uO5ddjEM/x+WOiVV17hlVdeqbM/KiqKv/zlL8265y233MItt9zSwshEPOP1bw9jdxiM6xVL/8QaLfYPrTZ/uXfqCZ1SvRafNMKVpG1z6/SuMaFM7hfPqj05vLn+CA9fNqAVgxPxPwVllSxOOwDA3Ev6ERTg558111wfzWLxbizi20KizE6Pm5fCxiUem8M4fVAie0/s5+OdWVw7UmX2vsTP391E2reySrur9K3OvAu13vd9iUPNx/zDUJLr1iXOkYH/bDxKpd0za+KItBcvfXmQ/NJK+iREtI8/KF3z0dQ0RNww+k7zcec7UHraI7d0ljx+sSeH8iq7R+4pnqEkTcSHffhdJqeKK0iKDnG9kbpoPprvC4k2RzrBrXlpABcPTCAuIpiTReV8tkvlJyJOJ4vKeWl1OgD/N70fNqufjzxVlZ8pWU+d5N1YxD90Gw0Jg6GqDLa95ZFbDu0WTZeoYIor7Hxz4JRH7imeoSRNxIctWWO23b91XA8CbDX+d807Aqf2g8UGqRd4KTpxSxOahwAE2qyuDp7L1quBiIjT4rQDlFTYGdotmksHN94t1S8c2wT2cgiPh859vB2N+AOLBUbfYW5v9EwDEavVooWtfZSSNBEfteVIHluP5BFks3Ljecm1DzpLHbuNhtCYNo9NmqCJSRrg+u/9xd4cjueVtkZUIn7leF4p/1prfmj180v7Y2kP87cyNB9NmmHYDyAgBLJ3wNENHrnltEHmhx6f7DyBw+GZzpHSckrSRHzUq98cAuDKYUnERQTXPugqddR8NJ/XjCStZ1w443rFYhjw1oYjrRSYiP/48+f7qKhycH7PWC7oG+ftcDzDlaSp9b40QWgnGHStub3pFY/cclyvWCKCA8gpLGfr0TyP3FNaTkmaiA86WVTO+9syAbhjQmrtgw47HEwztzUfzfc5k7TcA/DPy8wSJzfcPNZsIPLvDUex65NN6cDSTxbz1oajQDsaRbNXweFvzW0ladJUzjXTtr9tLsfTQsEBNib3jwdU8uhLlKSJ+KA31x+hwu5geHIMw5Njah/M3Gp2dQqKNMsdxbeFx5lrIAEc/ga2venWZZcOTiQ6NJBjeaV8tS+nFQMU8W3PfrIXu8Ng6oAExqTGejscz8jaCpXFZnOhhEHejkb8Tco4iOsPlSXw3b89csvp1fPSPlaS5jOUpIn4mCq7g6XVcy/uGN+j7gnO+Wg9LwRbYBtGJk2WdxiOb669jt32/8LxLeb+vIYbg4QE2vhedYvxN9er5FE6pp3HC3hv63EAfja9n5ej8SBn6/2UCWDVn2LSRBYLjLrd3N60xCO3nNI/gQCrhf3ZRaSfLPbIPaVl9M4g4mM+2XmCzPwyOocHccWwpLonHHCuj6ZSR5/3x6HwwhTIWH1mX/FJeGGyuf+PQxu9/KaxZgORT3aeIKewvPXiFPFRz3yyBzDn5g7uGu3laDyo5iLWIs0x/GawBZnVNcc3t/h20aGBjOvVGYBPdma1+H7SckrSRHzMkjWHAHNOUnCArfbBimI4vNbcVtMQ33fdi2ANOGtn9fwya4B5vBEDEqMYkRxDlcPg7U1HWydGER+1MeM0n+7Kxma18OC0djSK5nCYpc8AqZqPJs0U3hkGXmVub/TMaNr0wWrF70uUpIn4kD1Zhaw9mIvNauGH56fUPeHQ1+CohOgUiO3V9gFK0wz7Acz6rP5jsz4zj5/DTdXt+N9cfwTDA2viiPgDwzD4/crdANwwqju94iO8HJEHZe+EsnwIDIfE4d6ORvyZs4HId/+B8qIW3+6SgWaStiHjNCeLVL3hbUrSRHzIq9WjaNMHdaFrTGjdEw7WKHVsDx3OOpTm/fe6anhXwoNsHDxZzLr0XA/HJOKbvt5/irUHcwmyWbn/kr7eDsezXPPRzgfb2SPtIk2QeoH5gW1FIex4u8W36xoTypBuURgGfL4r2wMBSksoSRPxEfmllby96RgAt49Prf8k1/pomo/mN8LjISIBEoeCrXq9u5AYc787lwcHcNXwrgAsUwMR6QBqjqLdMi6FbvV9YOXPnHNUNR9NWqpmAxEPlTxOG2gubN1eujzaHQZrDpzi3S3HWHPglF8taaMkTcRH/GfjUUor7fTvEsm4XvW0mS44Djm7AQv0nNzm8UkzRXeDB7bDPV/CmDvNfd1GmfvddFP1mmkffpdJfklla0Qp4jM+3nmCrUfzCQuyce+UPt4Ox7MM48xIWo9J3o1F2ocRt5hznI9tgKztLb6dc17a6v05lFbYW3w/b1qxPZNJT33OzS+u5afLtnDzi2uZ9NTnrNie6e3Q3KIkTcQHOBwG/6oudbx9Qo/6F2t1LmDddSSEtZO1gjqKgGDzE8/z7wEs5ohozh63Lx/ePZoBiZGUVzl4Z8ux1otTxMvsDoOnPzb/37hrYk/iI4O9HJGHndoPxTnmqHq3Ud6ORtqDiATof7m57YF2/AMSI+neKZSySgdf+vEanSu2ZzJn6SYy88tq7c/KL2PO0k1+kagpSRPxAV/uy+HQqRIiQwK4dkQDIyyuUkd1dfRbsb1gwBXm9tq/uX2ZxWJxNRB5Y91hNRCRduu9rcfYe6KIqJAA7r6wHTZHyqhuvd/9PPPDGxFPGH2H+bjtTagoadGtLBYL0wb5d5dHu8Ng4fKd1Peb0rlv4fKdPl/6qCRNxAe8usZcvPr7o5MJD65nIrnDcWYkTfPR/Nu4e83Hrcug+JTbl107shtBAVZ2ZxWy7Wh+KwUn4j0VVQ6e/WQfALOn9CY6NNDLEbUCrY8mraHXVLPrc1k+7Hy3xbdzJmmf7TpBld3R4vu1tXXpuXVG0GoygMz8Mp9vxqUkTcTLMk4Vs2qP2UXp9vE96j/pxHazRCYwHLqPbcPoxON6TICk4VBVBhv/6fZlMWFBXD7EnNCtBiLSHr214QiHc0uIiwhm5oRUb4fjeYZxZiRN66OJJ1mtZxqIeKDkcWxqLNGhgZwuqWRjxukW36+tZRc2nKA15zxvUZIm4mX/WpOBYcCU/vGkxoXXf5Kz9X7qJAgIarvgxPMsFhh3n7m97iWoqnD70hvPMxuIvLflGMXlVa0RnYhXlFXaee4zcxTt/03tQ1hQO2xNn3cYCo6ZTR66n+ftaKS9GXkLWGxweE2T5jzXJ8Bm5eIBCYB/ljwmRIZ49DxvUZIm4kUlFVW8tcEcFbmjobb7oNb77c3g70FEIhRlNWltm3G9YkntHEZxhZ0Ptvn+pGcRd7265hDZheV0iwnlprHJ3g6ndTi7OnYdCUENfCAn0lxRXaHfpea2B9rxu+al7Trhd/Ogx/aMJSm64QTMAiRFhzC2p283YVOSJuJF7245TkFZFT06hzG5XwPrZlWWQsYac1tNQ9qHgCAYe7e5veavZhmUGywWi2s07Y31h1srOpE2VVhWyd/SDgDwwCV9CQ6weTmiVqL10aS1japuILL1DahsWSnfhf3iCQqwknGqhH3ZRR4Iru3YrBbmXzWo3mPO3tnzrxqEzVpPJ20foiRNxEsMw2DJN4cAuG1cD6wNvVlkfAP2cojsCnH92i5AaV1j7oKAUMjadmaeihuuH92NAKuFzYfz2JNV2IoBirSNl75KJ6+kkt7x4XxvpPvrB/odrY8mra3PJRDVDUpzYff7LbpVeHAAk/rEAfDxjixPRNemuncKq3d/YnQIi28dxYwhSW0cUdMpSRPxknXpuezOKiQ00Mb3RzdS3uOcj9Z7qjmfSdqHsFgYfpO5vcb9dvwJkSFcPNCcK7BMo2ni53KLK3jpq4MA/Gx6fwJs7fTPkoJMyD0IWCDlfG9HI+2VLQBG3mpub3ylxbfz51b8f6heb/HaEV154+5x/OmmEbxx9zj+f3v3HR1VtT1w/DuTSYE0IBASaiD03nuTDoIiKoJSlKLYRZ9Yn9gLPhXf7ykqKqAIWMCCSlE6SA8EQg2BUEIghJBO6tzfHyeTEFKYJNOzP2ux5ubOvXd2WMlk9j3n7L3tuYFOkaCBJGlC2I2p7P6YjnXxr1pKqemoTepR1qO5HlM5/uN/wpUos08b301Nefx5fwwZ2bnWiEwIm5i/6SRpWbm0qevH8NZB9g7Heg58px4DQsHL376xCNfWcRKgg+itZfq7UpxBLQPR6SD8fBIXSylp72h2n05g0/HLGPQ6Zg1pRs/QAG7vUJeeoQEOP8XxepKkCWEHF5MyWJM3fWBKrxLK7gOkxsGlQ2q78QDrByZsq1YzaDIE0GDX52af1q9pLer4e5GYns1aJ5yGIgRAbNI1FufdrPrX0OYlT/l2BREr1KOhin3jEK6vWn017REqXI4/0NeLjvWrAaqAiDPQNI331x4D4J6u9WkY4LxFeiRJE8IOvtt1hlyjRvdGNWgR5FfygaYG1kHtwLumTWITNtYzbzRt/xK4lmjWKW56HXd3UVNkl++WnmnCOf3fhpNk5RjpFlKj5MJJzizxLFzYDxcOFJRETzyjvr6wXz0vhDV0zisgcmBpmdq8FGdIKzXC7SxTHjeduMye6Kt4GvQ8PrCpvcOpEEnShLCxzJxclu1Wf5yn3Kxhq5Ted32Nb4HAVpCdBmHfmH3a3V3qodPBjlNXiI5Ps2KAQlhedHwaP+Q1Zf/XsOboXHG97by28MUA+KI/aHnTkjOT1ddfDFDPC2ENzYaDT21Iu6ym01eAaV3ajqh4UjKyLRGd1RiNGv9Zq26ITOkVQlApZfidgSRpQtjY6kMXiU/NIsjPK//Nr1iaBlHXFQ0Rrkmngx4Pq+3dX0CueU2q61WvSr+mavTh+70ymiacy7y/T5Bj1BjQvJbD9yoqt7ELQFfCxyy9QT0vhDW4uUOH+9R2Bac8Ngn0oXEtb7JzNTafuGyB4KxndcRFDl9IxsfTwMz+ofYOp8IkSRPCxhbviAbgvu4NcC+tklncUdXs2OAF9XvYJjhhH23HQdWakHQOjv5m9mkT8pr+/rTvPNm5RmtFJ0TFxYTBolEQE8axi8n8Gn4BUGvRXJKmweVjoJXwezl9PbQbZ9uYROXSaZJ6jNoIV6MrdCnTDeV1hx13ymNOrpEP/lKjaNP7NqKGt4edI6o4SdKEsKGD5xPZfzYRDzc9E7o3KP1gU+n9hr3B3bmH7MVNuHtB12lqe6f55fgHtqhNTR8PLqdksuFYnJWCE8ICwperanMHv+eDdSfQNLi1XTBt6rpgpcPcHPjtMdj6wXU7TdM55WOXsJEajfMKjmkQ9m2FLjU0L0nbeDzOYW8Irtwfw6nLaVSv6s60Po3sHY5FyLuFEDaQa9TYEXWFN38/CsDItkHU9PEs/SRZj1a5dJ0Obh5wfg+c22PWKR4GPXd2rgfA93tkyqNwMNcXzji8EoDs8B+5cHQn7fSnmN29+GazTi0rHb6/TxUC0ulh8GvgEwh1OsCoj6BOe/W1twsWShGOp1NeAZF9C2HhrWpEuxw61K9OTR8PUjJy2HUqwYIBWkZmTi4f/x0JwCMDmuDrVUpbIydisHcAQri6NRGxvLbqCLHX9RjZGhnPmojYkhsq5mRC9Ha1LevRKgefQGh7t+qntPMTqL/IrNPu6VKfzzefYtPxOGKTrhHsLyW+hYO4rjCGhhpLMmRc4Q/Pl9TOb1+GV5PsEppVpCfA0nvg/G41Tf2uhdBipFpz6uah1p92fgBys8Bwk5t0QlhCi1FqKn16PJzZBge/h7qdynwZN72OwS1rs3zPOf46cpE+TR2r2vSyXWeJSbxGbT9PJvUspa2Rk5GRNCGsaE1ELA8vCSuUoAEkpGXx8JIw1kTEFn/iuV2Qc01VZwpsZYNIhUMwFRA58hskmjcy1riWD90b1cCowY97z1sxOCHKaOwCjDo3oGCyn+nRqHNzrcIZiefg62EqQfOqBpN/VQkaqITMVL1Sp5METdhG4lmIOwxNBhXsi1hR7hYQpnVpfx25hKZpFgy0YtKzcvjfxpMAPDGoKV7ubnaOyHIkSRPCSnKNGq+tOkJxb2Wmfa+tOkKusZgjTFMdG99S8MdduL6gttConyrXvdv85tbj8wqIfL/nHMbifp6EsIM1+r7clvF6sc+tzO7FWlykINKlw/DVEIg/AX51YepaaOAi35twXqYWEAe/L9iXdrncLSB6N6lJFXc3LiRlcPhCskVDrYiF26OJT82iQY2qjMvrH+oqJEkTwkp2n04oMoJ2PQ2ITcpg9+li5nfnl96X9WiVTo9H1eO+byAz1axTRrQJxs/LQEziNbadjLdicKI8TGtSfz0Qw46oK8XfmHExpptUDXSqGpzpxrvp8S7DVur+PJbcK6ftFKGFRG+Hr0dASizUagHT/oLAFvaOSgg1Uq0vYVVTOVpAeLm70a+Zmua4zkEaWyelZ/P55igAnh7SrPSK2U7Itb4bIRxIXErJCVqpx6Vdgdhwtd14gGWDEo6v6VAIaAKZSWp9mhm83N24o2NdAJbvKdsUFmFdayJi6fPeBiYs2MmTyw8wYcFO+ry3oeSpzi7CdJOqr/4gAElU5cXsaRzUGpOkVSVZ86KNFon2WV84/It9gy2vo6vg2zvU72r9HvDAavCva++ohFDajVOtHopTzhYQQ1sFAbDu8MWKRGYxX2yNIjkjh+a1fRndvo69w7E4SdKEsJJAX/PK5hc57vQmQIPA1uAbZPG4hIPT66H7TLW9cz4Yc806bXw31dLhryOXiE/NtFZ0ogxKWpN6MSmj9DWpLiAuJQMPshnmtheAWdmPsDR3ELdnvUHXzPmMyHyPfcamGLJT4Mcp8PssyL5m56jLYM9X8MNkyM2E5iNh8i9Q1UWbcgsXYJllEwNbBOKm13HsYgrnEtItcs3yupySydfbogF4Zmgz3PSutzREkjQhrKSqh1upb4s6INjfi26NbvjDLqX3RYd7VfGBq6fhxBqzTmkZ7Ef7ev5k52qsDJMCIvZWoTWpLiDQ14vB+n3U0KVyUavOFmP7vGd0ZOFODLW4J+vfnG/zMKCDvV/DgkFw+bg9w745TYON78AfT6tG1Z2mwLhvwV2qqgoH5F2roAVEcN7voHvVcreAqO7tQZeG1QF1Q9CePtl4kmvZubSvXy2/qImrkSRNCCs4HZ/GtMV78j+M3Zismb6eM7pV4bs/mgZRm9S2JGmVl4c3dL5fbe8wv7m1aTRt+Z5zDlV9qzKq0JpUF9CtUQ0mem4B4KfcfuRSuOKaDqjl70Pw2Hdg0kr1oTHusCpoEPZtweI1R2LMhd+fgs3vqq/7PwejPwY36WYkHJR/XXgqAmZshAEvqH3u3qpydDkNba1m+NgzSTt/NZ2lu9TU/tnDmqNz0QJrkqQJYWGXkjOY9NUu4lOzaF3Hj4/GtSfIv/CUxiB/L+ZP7FS0T1p8JCSfVz11GvSyYdTC4XR7UC3uPrOtYI3iTYxuX4eqHm6cupzGnuirVg5QlKbca1JdREZ8ND009XP7Q+6AQs8VuUkVOhBmblfVbLPT4bfHYOUMyEyxbdClyb6mpjfuWwTo4NYP4ZYXpfqucHymFhBNBkPVAEi/DKc2lvtyQ/NGrXZHJ5CYnmWpKMvkv+sjyco10is0gN5NHKtnmyVJkiaEBSWlZzP5q92cv3qNkICqLHqgG3d0qse25waybEYPPh7fgWUzerDtuYHFN7I2vXE26AkeVW0bvHAs/nWh1Ri1beZomo+ngdHt1OJpKSBiP8kZ2Ww4GmfWseauXXUmmqaxcflH6NHYTWsyfBoUer7Ym1S+tWHiShg0B3RucOhH+Lyf6udkb9euqgIhx34HN08Y9w10nWbvqIQoGzd3aHOX2g5fVu7L1K9RlRZBvuQaNTYcM+99zpKiLqfy0z41pf9fw5rb/PVtSZI0ISzkWlYu0xbv4filFAJ9Pfl2Wndq+aqmpW56HT1DA7i9Q116hgaUvMBV1qOJ6/V8RD1GrIAU86pp3ZPXM+3PQ7EkXcu2VmSiGFk5Rr7edpr+czfya/iFmx5f7JpUF/D55pN0uPIHALX6z2DHC4PMu0ml10Pfp/OqJNaHhFPw5RB1k8Je0x+TYlSJ/bM7wNNfTc1sdZt9YhGiotqPV4/H/oCM8vc6u76xta19+NcJjBoMblmbTg2q2/z1bUmSNCEsIDvXyKNLw9h75ip+Xga+mdaN+jXKOBKWmw3R29R26EDLBymcT93OqrS3MRt2m9fTpmP9ajSv7UtGtpHfDsRYOUABYDRqrAq/wOAPN/P670e4mp5Nk0AfHu4fio6S66r9a1hzl6tItv1kPP+sW0E9XTxZBl8a9Rlv/k0qkwbdYeZWaDFK/eyvfQGWjYd0G6/fizsGXw2Fy0fBNximroaQPraNQQhLqtMRajaDnAw48mu5L2Mqxb/5xGUyss2rQGwJETFJ/HEwFp1OVXR0dZKkCVFBRqPGcysOsuFYHJ4GPV/d35UWQX5lv9D5PZCVClVrQu22lg9UOCfTaNrer80qUa7T6binqxpNW7ZbCohY246oK4z5dDuPL9vP2YR0avl68s7Ytqx5si/PjWjB/ImdiqxJNeUoP4fFkJ1rtEPU1hGTeI3Hl+3nbjc1bdu9wz3lr3pYpTrcswRG/kdNMTyxBub3Vs2jbeHsLvh6mFojHNAUpq2D2q1t89pCWItOVzCaFr683JdpU9ePYH8v0rNy+Scq3kLB3dwH61T119va16FlcDk+ZzkZSdKEqABN03j7z6OsDIvBTa/j0/s60TWknNOXTFMdGw9Q036EADWaUK0BXEsw+4/q2E518TDoORKbzKGYJCsHWDkdv5jC1EV7mLBgJwfPJ+Ht4cbTQ5qx+dkBTOjWAIOb+h0e3ia4yJrUXx/tQ1UPN7adjGfOb4ddIpHOyM7lkSX7MKZdYXhebzRd58kVu6hOB91mwPS/VaKUcgEWj4JN75ndP7Bcjq+Gb26DjESo11UlaNUa3PQ0IZxC27wm1me2QWL51i7rdDoGt7TtlMc90QlsPH4ZN72OWYNdfxQNJEkTokI+23yKL7edBmDune0Y1LICvTqi8oqGyHo0cT29W+Hm1mZ8oK9W1YPheWWSl+85Z83oKp2LSRnM/imcER9vYcOxOAx6HZN7NmTz7Ft4YlBTqnoULcd+43S/tvX8+e/4juh0sHTXWb7eHm37b8TCXlt1mPDzSdxbZQfu5EBQu4K+TBUV3A4e3AQd7lO9yTa9Dd/cDslWaAYe9g0sv09NB2s6DCb/Kk2qhWupVh9C+qrtg9+X+zJDW5uStDiMVu73qGka769Ro2jjutQnpKa3VV/PUUiSJkQ5fb/nLO+tOQbAy7e25M7O9cp/sWtX4UKY2m4sSZq4QcdJ4OEL8cfh5HqzThmfV0DktwMXSMvMsWZ0lUJyRjbvrz3GgP9s5Ie95zFqMKJNEOtm9eP129tQ08ezTNcb3Ko2L41sCcCbfxxh/VH7NoatiO/3nGXZ7nPodBqP+O9QOztVcBTtRp4+MOZTuOML1ecpeit81hsi/7LM9TUNtrwPvz0OWq5KCMd/p3oWCuFq8qc8fl/uojzdGwXg62kgPjWT/ecSLRdbMbZExrM7OgEPg54nBjWx6ms5EknShCiHtYcv8sLKQwDM7B/K9L6NK3bB01vUHeKazVXpdSGu5+UHnSap7Z2fmHVKj0YBNAyoSmpmDn8cssKIQyWRlWNk4XZVsfGTjVFkZBvpGlKdFQ/3Yv7EzjSu5VPua0/r04gJ3RqgafD4sv0cuVD+amv2cvB8Iv/+9TAA7/XIwSfxuFpD1vYu67xg+3vgoS0Q1BbSr8B3d8HalyCnAv2ajLnw57Ow4U31dZ+n4fZPVMlyIVxRy9vAUAWuREJMWLku4WHQM6BFIGDdKY+apvH+WnVDfHKPhgT7l3OdqxOSJE2IMtp56gqPL9uPUYNxXerx3HAL9OmQ0vviZro/BDq9+lmJO3rTw/X6ggIiy3dLz7Sy0rSCio2vrVIVGxvX8uaLSZ354aGedG5Y8dLPOp2O129vTe8mAaRn5TJ98R7ikp2nuXVCWhYPLwkjK8fI4Ja1uVuXN2W71e2q8Ie11GwC09cXTAPe8T9V5CPhdNmvlZ0BPz0AexYAOhgxFwbPkSbVwrV5+UHLUWr7YPkLiBSU4jevRUx5rIm4SERMMt4ebjw8INRqr+OIJEkTogwiYpKYsXgvWTlGhraqzdt3tEVX0T/mmnZdkial90UJqoeoIiIAO81rbn1Xp3q46XWEnU3kx73n+PVADDuirpBr5fUDzm5H1BXGfFK4YuPbd7Rl3VP9GNo6qOK/89dxd9Pz6b2daVzLmwtJGcz4Zq9NS1qXV65R44ll+4lJvEajmt58eEcTdBEr1JOmUV9rMnjCiPdg/FLwqqami3/eT/UUNFdGEiy5U5Uid/OAu75WN0OEqAza5U15PPRTuUeiBzSvhbubjqjLaURdTrVgcEquUeM/eRUdp/VtTEAZp5U7O0nShE3kGjV2RF1x6g+J0fFp3L9wNymZOXRvVIP/TuiYX8GtQhJOqQpLendo2Lvi1xOuq+ej6jH8e0i7ednjQD8v2tRRZYqf/ekgTy4/wIQFO+nz3gbWRMgUyBuduFRQsTE8r2LjrMHN2PSvAdzbvYFlft+L4V/Vna+ndKVaVXfCzyfxzA/hVl+IX1H/WXecbSfjqeLuxmcTO+N36k/ISlE3ExrasJdYi1th5jbVTzAzGX6aCr89AVnppZ+XHAsLR6oKdx6+cN9P0GasbWIWwhE0HgA+tVXl4JPlW9vp5+VOj8YBgHWmPP68P4aoy2lUq+rO9L6NLH59RydJmrC6NRGx9HlvAxMW7HTaD4lxyRlM+noX8alZtAr2Y8GULni5u1nm4qfypgjV764WxwtRkvrdoU4nyM1UfdNuYk1ELOHni5bgv5iUwcNLwpzqd9CaLiZl8NxPBxk+r6Bi46QeDdn07C08Obgp3p5FKzZaWkhNbz6f2Bl3Nx1/HIrlo79PWP01y2tNxEXmb4oCYO5d7Wge5Ath36onO060fQuRavXh/j+g37OADsIWw4KBJU8Ljo9UTaovRagPqQ/8CY372zRkIezOzQBt71bbFeiZNrSVdUrxZ+bk8tFf6n3w4f6h+HlVvjWikqQJq1oTEcvDS8KITSq8zsKZPiQmXctm8te7OZdwjYYBVVk8tZtl3yzyS+8PsNw1hWvS6QpG03YvgJzMEg/NNWq8tupIsc+ZxmheW3XEKUe1y6qkkfzrKzZ+v/dcoYqNb4xpQy1f206t6d44gHfGtgPg/zacZGXYeZu+vjlOxqXyrx/DAVX4ZHT7OhB/Es7+o9ZMdrjPPoG5GWDgyzD5F5V4XT4KX9wC+xapKeUxYbBoFOz/TiVoSWehRmPVAy24nX1iFsLeTFUeT6xRVabLYXBekhZ29iqXU0r+m1RW3+85R0ziNQJ9PZncM8Ri13Um1r89KCot04fE4j4CaoAO9SFxSKsg3PSOuUg7I1st5j92MYVavp58O7W7ZT+45eaoyo4g69GEeVrdDn+9Askxav1Nh3uLPWz36YQiN0eupwGxSRnsPp1Az9AAKwVrf2siYnlt1ZFC/xdBfl70a1aTv4/GkZCm1mJ0aVidF0a2tEhBkIq4q3M9Tl1O5dNNUTy/4hD1a1Sla4hj9OlKzcxh5pJ9pGbm0K1RDZ4f0UI9sf8b9dhkCPjVsV+AoKZwzdwGP8+EqPWw6kk4tVkVSojeCmd3gDEH6nSEe38En1r2jVcIewpqC4GtIe4wHP4Zukwt8yWC/avQrp4/B88nsf7oJcZ3q3jj9/SsHP67/iQAjw9qShUPC81ccjIykiaspiwfEh1RTq6Rx5aGsSf6Kr5eBr6Z2o0GAVUt+yIXwtQ6Cq9qENzBstcWrsnNHbrNUNs7Pimxx01cinlVAs09zhmVOJKfnMEPe8+TkJaVX7Hxx5mWqdhoCf8a2pwRbYLIyjXy0Lf7OHvlJuurbEDTNGb/FM7JuFRq+3nyyb2dcHfTQ242HFimDrJFwRBz+ASqNWZ9ngadGxxeqZpUg0rQ6nWFoW9DzjX7ximEI8jvmVaBKo8tLTvlcfE/Z4hPzaR+jSrc06W+Ra7pjCRJE1bjzB8SNU3juRWH+PtoHJ4GPV9N6UrLYD/Lv5CpqmPj/qCvnHeKRDl0vh/cq6o1NaaR2BsE+nqZdSlzj3M2pY3km/hXcWf1E30tXrGxovR6HR+O60Dbuv4kpGUxdfEekq5l2zWmBVtP8eehi7i76fj0vs4FMwoi10FaHHjXgmbD7RpjIXo9bPtQNaYG1YfS5PweWDQC5rW1T2xCOJK2d6upyud2qUJm5TCktUrStp2MJz0rp0LhJF3L5rPNas3rrMHN8DBU3lSl8n7nwurM/fDniFXM3ll9jBVh53HT6/jk3k50a2Sl6Ub569FkqqMogyrVC6Y5llCOv1ujGgT7e1FS6qEDgv29rPezbWc3G8kH9WEg7GyibQIqoyoebnw5pQvB/l6cjEvlsaVhZOcab36iFfwTFc+7q1Uz2VdGtSo84mgqGNJ+vOM1fx67APQlrOrQG9TzQlR2fsFqmjCoysHl0Ly2Lw1qVCUzx8iWEzevPFyaL7eeIulaNs1q+3B7h7oVupazkyRNWI3pQ+LNzPohnIe+3cu+M44x7fHzzVF8sUXdTXp3bNv8RbEWl5Gk7ugCNJYm1qKMuj+sHk+sUYUbbuCm1zFndCuAEhO1OaNbOex60Ipy5pF8k9p+Xnw5pQtVPdzYGhnPq78dRithequ1XEi8xuNL92PUYGynukzs0bDgyeRYiFyrtjtOtmlcZmk3TjW9Ls709ep5IQS0n6AeDy4vcQp9aXQ6XX5j63UVaGx9OSWTr7appvTPDG3usn+fzOXUSdrcuXPR6XTodDp27txZ7DHJyck8/fTTNGzYEE9PTxo2bMjTTz9NcnJyidddunQp3bp1w9vbm+rVqzNy5Ej27t1rrW/DZV3/IfFGpl+7tnXVFMK1hy9x5/wdjP10O2siLtqt4twPe8/xTt4d4xdHtuBua86Fjt6mpuLUCIXqDW9+vBDXq9mkYHrZrvnFHjK8TTDzJ3YiqJibJS+MbMHwNsHWjNCuXGW6Z+s6/nw8viM6HXy36ywLt0fb7LUzc3J5+LswrqSp1iNv39G28LTQ8KVqGmH9HlCrmc3iKh/9DY9CiHwtbgV3b7garaY9loMpSdtwLI6cco76f7rpJOlZubSv559f2r8yc9p3q6NHj/LKK6/g7e1d4jFpaWn079+fjz76iObNmzNr1ixatWrFRx99RP/+/UlLSytyzttvv819993HpUuXmDlzJuPGjWP79u307t2bTZs2WfE7ck0DW9SminvRH7Mgfy8+m9iJVY/35e+n+3FPl/p4uOkJO5vIzCX7GPzhZpbsPENGdq7NYl13+CLPrzgIwEP9GvNgv1DrvqBpPVqojKKJcurxiHo8sBTSix+JHt4mmG3PDWTZjB58PL5DfiXH/Q46zc9SujWqUWxyauJM0z2HtKrNiyNaAvDmH0fYcMzyTWOL89qqI4SfS8S/ijufT+pcuDekpsH+JWrbUQqGFMe7liokUqc9jPpIPfoEqv1CCMXDW1UOBghfVq5LdGlYnWpV3UlMz2bvmbKX849JvMZ3O88C8OywFg61TthenDJJy83NZcqUKbRv35477rijxOPmzp3LgQMHmD17NuvWrePdd99l9erVvPLKKxw4cIC5c+cWOj4yMpI5c+bQrFkzDh48yAcffMDnn3/OP//8g8FgYPr06eTkVGxBZGWzNfIy17KN1PLx4Lvp3fl4fAeWzejBtucG5t/FbxLoy3t3tWPb87fw2C1N8K/izun4NF7+JYJe725g3t8nuJJqud4bxdl16gqPLVNTeu7uXK+gtLQ1yXo0UVGN+kHtNpCdrhr4lsBNr6NnaAC3d6jLq6NbA7A64iInLqXYKlKbc9PrSqwKZvrT70zTPaf3bcT4rvUxavD40v0cjS15Nogl/LDnHEt3nUWng4/Hd6B+jRsq257ZrooMePhAqzFWjaVC/OvCUxEwY6MqLz5jo/rav3KvdRGiiPb3qMfDP0N22aeBG9z0DGpR/iqP//07kqxcIz0bB9C7ieu2hSkLp0zS3nvvPcLDw/n6669xcyu+Ip6maXz55Zf4+PjwyiuvFHruhRdeoHr16nz11VeF5vcvXLiQnJwcXnrpJfz9/fP3t27dmsmTJxMVFcWGDRus8025qFXhFwAY1b4OvZvU5PYOdekZGlDsB6NAXy/+Naw5/zw/kDmjW1GvehUS0rKY93ckvd7dwMu/HOJ0fNHRz4o6fCGJ6Yv3kpVjZHDL2rwztq317+BcPQMJUao8dEgf676WcF06XcFo2q4vVDn0m2ge5MuINkEA/G9D0bVsrkLTNLZEXgag6g09doL8vZg/sZNTTffU6XS8MaYNvUIDSMvKZfrivVZbT3fwfCIv/xoBqOpqA5oHFj3IVDCkzZ3g6WOVOCzG4Kl+V0A9GmzbpFwIpxDSF/zqqvXyJ9aU6xLXr0sry/rZqMup/BR2HoB/DWsuo2h5nC5Ji4iI4LXXXuPll1+mdevWJR4XGRnJhQsX6N27d5EpkV5eXvTr14+YmBhOniz4kGKazjh06NAi1xs2bBgAmzdvtsB3UTlkZOfm300Z3d78BqfengYe6N2ITf8awP9N6Ejbuv5k5hhZsvMsAz/YxMxv97GvHEPpxTlzJY0pX+8hJa856//u7YjBzQa/FqfyRtHqdQUv/9KPFaI0be8C70BIuQBHfjXrlMcGNgHg94MXiLqcas3o7GbT8cvsP5uIl7ue9c/0z5/ueeNIvjNxd9Mz/77ONK7pTUziNR78Zp/Fp4QnpGXx8JKwvJtWgTx2S5OiB11LhCO/qO1ODlgwRAhRdnq3gmI6B8tX5bFfs5p4GvScS7jG8TLM1PjorxPkGjUGtwx0mH6VjsCpkrScnBzuv/9+WrZsyfPPP1/qsZGRkQA0bdq02OdN+03HmbZ9fHwICgoy6/gbZWZmkpycXOhfZbbxWBxpWbnUrVaFjvWrlfl8g5ue0e3r8NtjvVn+YA8GtghE02DN4YvcOf8f7pz/D2sPl7/ISFxyBpO+2k18aiYtg/34ckqXwmsurCl/qqOsRxMVZPCErtPVdinNra/Xuo4/g1sGYtTgk42uN5qmaRof/nUCgMk9Qwj2r5I/3bOkkXxn4V/Vna/u70q1qu4cOJfIMz+GW6yNSa5R44ll+4lJvEZIQFU+GNcBfXH/VxE/QU4G1GoJdTtb5LWFEA6gXV5j68h1kFb2UvpVPQz0bVoTgL8Omzfl8fCFJH4/GAuoio6igFMlaW+//Xb+NEd399L7sSQlJQEUmrZ4PT8/v0LHmbbLcvyN3nnnHfz9/fP/1a9febukA6w6qKY6jm5fp0JD1zqdjh6NA/j6/q78Nasf47rUw8NNz74zV3noW1Vk5LtdZSsyknQtmykL93A2IZ0GNaqyeGpX/Lxs1OPHmAunNqltKb0vLKHLVHDzhAthZlfmenyguvH064ELnL2Sbs3obG7dkUscikmiqocbD/VrbO9wLK5RTW8+m9gZdzcdfxyMZd7fJyxy3Q/WHWfbyXiquLvx+aQu+Fcp4T3RNNWx06SCaYRCCOcX2AKCO4AxByJWlOsSBVMezUvSPlin3r9ua1+HlsF+5XpNV+U0SVp4eDhvvvkm//rXv+jUqZO9wynWCy+8QFJSUv6/c+fO2Tsku0nNzGH90TgARre33LSiprV9mXtXe7Y9dwuPDAjFz8vA6fg0Xvo5gt7vbuDjvyNJSMsqcl6uUWNH1BV+PRDD5hNxTF+0h6OxydT08eTbad1sW4Y79gBkJIKnn9yFFpbhU6tgmsqOT8w6pX39avRrVotco8anm1xnNM1o1PgobxTtgd4hBPi45vqjHo0DeOuOtgD8d8NJftkfU6HrrT18kU83RQHw3l3taB7kW/yBsQfVe5jeveCuuxDCdbTP+70OX16u0we2qI1OB4dikohNulbqsXujE9hwLA43vY5ZQxy9jYftOU2SNmXKFEJDQ3n11VfNOt40IlbSyJdpKuL1I2f+/v5lOv5Gnp6e+Pn5FfpXWf195BKZOUYa1/KmlRXujAT6eTF7eAt2vDCIV0a1om61KlxJy+Kjv0/Q6931/PuXCKLzioysiYilz3sbmLBgJ08uP8CUr/ew58xVvAx6Fk/tSsOAkts4WIWp9H6jfuBmsO1rC9dlKiBy7HfV68YMT+StTVsRdp6YxNL/mDqLPyNiOXYxBV9PAzP6ut4o2vXGdanPzP6qVcjsnw6yN7r4Ngw3E3U5lWd+CAdgau9G3FbaGuL9eaNoLW4Fb6nAJoTLaXOXKmp2IQwul32UvpavJ50aqHVlf5cymqZpGnPXHgdgXJd6NKpp489iTsBpkrTw8HCOHTuGl5dXfgNrnU7H4sWq7HTPnj3R6XT88ssvwM3XkBW3Zq1p06akpqZy8WLRbuk3W+MmCjNVdRzdrmJTHW/G29PA1D6N2PxsQZGRjGwj3+48wy0fbGLMJ9uZuSSM2KSiVdAycoycS7DDNK+oTepR1qMJS6rdSk2f1Yyq0qMZuoTUoGfjALJzNT7LG0VxZrlGjXl/q/fqaX0bUa2qh50jsr7Zw5ozrHVtsnKNPPjtvjJPXU3LzGHmt/tIzSue9MLIUtqPZGfAwR/UtiP3RhNClJ9PLWgyWG0fLN9o2lAzpjxujYxn9+kEPAz6/On3VhMTBotGqUcn4jRJ2rRp04r9Z0qabrvtNqZNm0ZISAigkqk6deqwffv2Ik2rMzIy2LJlC3Xq1KFJk4LKVf379wdg3bp1RV5/7dq1hY4RJUtMz8ovfW3JqY6lub7IyLIZPbileS00DQ6cSyzxHB2qWWt5C4+US2ZqwZohWY8mLK3no+ox7BvIMK9w0eOD1Hvg93vPcSnZOiXdbWVV+AVOxqXiX8WdqX0a2Tscm9DrdXx0Twfa1PUjIS2LaYv3kJxx81YMoO5kz/7pIJFxqdT28+R/93bEvbTqtsd+V1O1/erJ+5cQrsw05fHgD2A0lvl007q0naeuFPt+pGka7+eNok3q0ZA61aqUP1ZzhC+H6K3lrlppL06TpH355ZfF/uvVqxeg1oN9+eWXdOjQAVDFJqZPn05qaiqvv/56oWu98847XL16lenTpxca5XnggQcwGAy89dZbhaY9Hj58mG+++YbQ0FAGDpTGwzez9vBFsnM1Wgb70SSwhHUNVqLTqaa9Cx/oxvt3tSv1WA2ITcpg9+nyTREqlzPbwZgN1RpCDdeeiiXsIHQQ1GwGWSmwf4lZp/RsHECXhtXJyjHy+eZTVg7QenJyjXy8Xo2iPdivse0KATmAqh4GvprSlSA/LyLjUnn0uzBycm/+werLraf541As7m46Pr2v083X5oZ9ox473qfKdQshXFPzEeDpD0nn1OeWMmpcy4fQWt5k52psOn65yPNrD1/kUEwS3h5uPDIg1BIRF5V4Fi7shwsHIHyp2hexQn19Yb963sE5TZJWHrNnz6ZDhw7MnTuXoUOH8sILLzBy5Ehef/11OnTowOzZswsd36xZM1599VVOnDhBu3bteOaZZ5g5cya9evUiOzubBQsWYDDIGqKbWRWuSqnaahStJB4G8368rdUQtljXl96XqmjC0vR66PGw2t71maokehM6nY7HB6kZCUt3nyE+NdOaEVrNyv0xnI5PI8Dbg/t7hdg7HJur7efFl1O6UMXdja2R8by26kipzWR3RF3h3TXHAPj3qFZ0blij9Be4Gg2nNwM66HCf5QIXQjge9yrQ+na1Xc4CIkNbq3ZWf90w5THXqPGfvIqO0/o0sl5xp3lt4YsB8EV/yMzr2ZZ2WX39xQD1vINz6STN29ubTZs2MWvWLI4dO8YHH3xAREQEs2bNYtOmTUWaXAO89NJLLFmyhMDAQObPn8/y5cvp1asX27dv55ZbZHrHzVxOyeSfKNVbY1Rb8xtYW4O5FRttWtnRVDQkVEZkhZW0Gw9VqkPiGTj2h1mn9Gtak/b11HrOBVudbzQtK8fIf/NG0Wb2D8Xbs3LeTGtT15954zug08G3O8+w6J/oYo+LTbrGY0vDyDVqjO1Yl0k9Gt784qaR2cYDoLoZxwshnFv7CerxyC+QVfb1+6Ypj5uOxZGVUzCy/8v+mPxp6dOt2SJl7ALQl/C3QG9Qzzs4p0/SFi1ahKZp9OjRo9jn/f39+fDDDzl79ixZWVmcPXuWDz/8sNQqjffddx979uwhPT2dxMREVq9eTdeuXa31LbiU1RGxGDVV3rtBQFW7xtKtUQ2C/b0oabxKBwT7e9Gt0U3uIFtKUgzEHwedXlV2FMIaPKqqvmkAOz816xSdTpe/cPvbHWe4WkwbC0f2475znL96jVq+nkw0J+FwYcNaB/H8cFX8443fj7DxWFyhFiRbTsQx89t9XEnLomWwH2/d0fbmxZ2MuXAgb7qQFAwRonKo3wOqNYCsVDj+Z5lP71CvGrV8PUnJzGHnqSuAuqH2UV5fx4cHhFp3Wnq7cTDsneKfm76+oG2NA3P6JE04loKqjvad6gjgptcxZ3QrgCKJmunrOaNb4aa30bTDfYvUY83maqRDCGvpOkP1sTq7w+xqVoNaBtIq2I/0rFy+3n7aygFaTkZ2Lv/boPq8PToglCoeslbqwX6NuadLfYwaPLxkH93f/ju/Bcnkr/cQfl41+v58Ymfz/r+iNkByjHrfajHK+t+AEML+9PqCXojhy8pxuo7BLQOBgimP3+85m39DbUrPEEtFWrysNNj6wY1RWfc1Lcy5ohUO7ULiNfZEX0Wng1Ht7DvV0WR4m2DmT+xEkH/hKY1B/l7Mn9iJ4W1smExGrFSP7lauYiSEXzC0Gau2yzCa9kRepcdF26NJumZehUB7W777LLFJGQT7ezG+WwN7h1MyG5aA1ul0vDGmDc1q+5CRYyQ+tejIaHpWLkdii+8LWoSpYEi78WBwzebgQohimKo8Rm2AlJLL6ZdkaCu1Lu33gxf4ce+5/LVoTwxsYv0bapvehdSLavZScHsY9RHUaQ8+geBdy7qvbSGVc+K+sIo/DqqCIV1DahRJiuxpeJtghrQKYvfpBOJSMgj0VVMcbTKClngW0q+oUpIJeX2oEqJUdSE0qBqgphMIYWk9HlHlhg//DENeB7+b3zgZ2iqI5rV9OX4phcX/RPPEIMfuC3ktK5dP8vq7PXpLE7zcHXgU7foS0HU7Wf3l3PS6UhNtUwuSIa2CSn8vTL0Mx1erbZnqKETlEhAK9brC+T1w6Efo9ViZTk/JyEYHXE3P5tmfDgLgpsP6PSxjw2HHJ2r77sXQcrQq1tb5AcjNcpqbTTKSJixm1cG8qY7tHWMU7XpuelWa//YOdekZGmC7KY6m6kILBqAyNVT/KieqLiScVJ0O0LA3GHNgt3nNrfV6HY8OVKNpX207TYqZ/bbsZcnOM1xOyaRe9SqM61Lf3uEUdX0J6IgVap+NSkDvPp3ApeSSK3Wa3YLk4HLVNqROJ6jd2rJBCiEcX37PtLJVeVwTEcuTyw9wY43ZXA2eWLafNRGxlonvRsZc+O0J0HKh1RhodVtBNW2dzmkSNJAkTVhIdHwaB88n4abXMaJNkL3DcRxjF4Duxrv7eW9ZTlJdSDixHo+ox70L1fx8M9zaNpjGtbxJupbNtzvPWDG4iknLzGH+ZjWK9sTApma33LCp60tAp6uqt6TF2+QmjbmtRUo9TtMg7Fu1LaNoQlROrceqNc4XD8HFCLNOyTVqqg1IKce8tuoIucbSjiinXZ9D7AHV523Ee5a/vg054F814Yx+zxtF6xUaQM2Sel7YcE2Gw8jNKrkfmpNUFxJOrPkIqB4CGYmwea5Zv39ueh2PDlCjaV9uPU16Vo714yyHRf9Ek5CWRUhAVcZ2qmvvcIo3dkExTZ9tc5PGIi1Izu9RFWkNVaDNnRaKTAjhVKrWgGbD1LaZo2m7TycQm1TyDSCzR/LLKvEsbHhTbQ95DXyde9BAkjRhEQUNrEuZ6nj9mgxXl5sNfz4Lvz6qppsBBTUl5ddO2IjeDbrnNbfet9Ds37/bO9ShQY2qJKRlsXSX9abklVdyRjZfbFH93J4c3BSDm4P+TjUfAdVCin9u+t9WvUljkRYkpoIhre8Ar5Lb1gghXFz+lMcf1XTCm7DISH5ZaRr88S/IToMGPaHTFMtd204c9C+bcCbHL6Zw/FIK7m46hrW+4a7F9WsyDtt2TYbdpF6Gb24vWAfU41HwDlRrhJywupBwYolnIagtuHtDRl4lPzN+/wxueh4ZEArA51tOkZF98z/KtrRwm6o+2STQh9vaO+gomjEXVkwvKBh0Y7oUXrb1HWVV4RYkmSkFFWllqqMQlVvToaoFR+pFOLXppodbZCS/rA7/DJFr1dTM0R+rFgJOTqo7igozTXXs3ywQ/yo3NCYsbs1F2mW1JsPkVTPLQDuDC/th+URIPg8evjD2C2gxEgbPATcPp6wuJJxYsb9/8Wb9/o3tVI//23CSmMRrfL/nHFN6hVgnxjJKSs/my21qFO2pwU1tVwSorP56BU6sAb0HeHqraaedJsOW/6ieY7s+gwY91CiVlZhakLy26kihqUdB/l7MGd2q9BYkh39Wd6QDmqi70kKIysvgqaY87/lSzcZoMqjUw00j+ReTMopdl6ZDvQ+VOpJfFteuwurn1HbfZ6BWc8tc186cP80UdqVpWkED6/bF/MEfu0CtvSiOqxXOCP8evh6uErQaoTBjvUrQQL3BOWl1IeHEiv39M29NlIdBz8z+jQH4bHMUmTmOMZq2YOspUjJyaBHky0hb9jksi32LYMf/1PbYz+CZ4zBjI3SZCrMOq2bjACsfgrM7rRrK8DbBbHtuIMtm9ODj8R1YNqMH254bePMekaaCIR0nlryuVghReZgaWx9dBZmppR5a4ZH8svprDqTFQUBT6Pu0Za7pACRJExUSEZNM9JV0vNz1DG5Zu+gB7cbBbf8r/uSGfaDxLdYN0BZyc2DNi/Dzg5CTAU2HwYwNLnMnRzixduNUgZrimFG45u4u9Qn09SQ2KYMV+2KsEGDZJKRlsXD7aQBmDWmG3hFH0U5thj+eUdsDXlR3n2+8STPiPWgxCnIzYdkEuBJV8vUsoMwtSC4fh/O7VWXa9vdaNTYhhJOo10XdgM5OV4naTZhG8m/smxvk78X8iZ1ufqPIXNHbIWyx2h79sUvdBJckTVSIaarjoJa18fYsYcQs4qfi95/eBJ92V2tkNCuUYbWFtCuw5A7Ymdc0se+/YMJyqFLNrmEJUVTZExovdzdm9ldr0z7ddJLsXKOlgyqTzzdHkZaVS5u6fgxtVcxNIXuLPwk/TFLFgtrcBf1nF3+c3k2NYtbtDNcSYMmdahqqozAVDGk2HHwd8P9ZCGF7Ol1BAZHwZWadUu6RfHPlZMKqJ9V2pykQ0tsy13UQkqSJcjMaNX4/mFfVsV0JVR2TYyFqo9qu1TyvcEZHqFIDaraA9Cvw01T4fiKkXLJR5BZy8ZBqUn16iyrMMO4bGPRvl1isKlyIdy1VqKZOB/CqpvZ5+plduGZCtwbU9PHg/NVr/LLffqNpcSkZLN4RDcDTQ5qhc7QpeOkJsPRuVaClXle4/ZPSpwl6VIUJ30O1hnD1NCwbD9nXbBdvSXKyCj6AScEQIcT1TLMvTm+BJPP+HpR5JL8stn4IVyJVcbYhr1nuug5CPk2Kctt/7ioxidfw8TQwoHkJH/j2fKm6vtfvDo/sUmsyZmyEZ47BzK0w4AW1NubY72pU7eAPzjGqFrECvhyiquNVD1HltFvdbu+ohCjKvy48FaF+73o+pvYFtlT7zVDFw40ZfdXatE83RVmn+agZ5m+KIiPbSIf61bileaBdYihRThb8MBkSToF/fRi/FNzNqFrmUwvu+0klz+f3wMoHwWjf0UpOrFY3z3yCoMkQ+8YihHAs1UOgQS9Ag0M/2DeWy8dh6wdqe8R7qvqki5EkTZSbqTfa0Na18XK/sWErkJ2hejMB9HikaOEMgwcMeB4e3ARB7VR1npUzYPm9kHLRNt9EWRlzVdW2n6ZCzjUIHag+/NZuZe/IhCiZaU1Up0lqndG5XXDpiNmnT+zRkOpV3Tkdn5Y/xdmWYpOu8V1ev7ZnhjrYKJqmwR9Pqx50Hj5w7/dq5NJctZqppM7NA47+Bn/923qxmsNUMKTDveAmBaCFEDfIn/K43H431Y1GNc3RmK3qAFixSq49SZImyiX3+qmOJTWwPvSjuiPrX18tki9JUFtVaOOWl1V/i+N/wifd4MBSxxpVu3YVvrsbtn+svu79pLoLXtVCJWSFsDbfoIKKo6YbKGbw9jQwrU8jAP5vw0mMNh5N+2TjSbJyjHQLqUGfJjVt+to3teN/sP9b0Onhrq+hduuyXyOkN4yZX3C93Xaqept0HqLyCs10nGifGIQQjq31GHDzhMvHIDbcPjGELYazO9RSk1v/47IVaCVJE+Wy69QV4lMzqVbVvfgPTZoGO/M+dHSbcfM7sm7u0P9ZeGiLWrOWkQS/PAxLx0Gy7e/cF3HpCHxxi/oAY6gCd34FQ15XBQCEcCZdpqrH8OWQlWb2aZN7heDnZeBkXCqrI2w30n3+ajrf7zkHwNOONop27E9YlzfyNfQtaDas/NdqexcMekVtr54Nx1dXPL6yOrAUNKOqvBsQavvXF0I4Pi//gpt94ctt//opF1XJfYCBL0O1BraPwUYkSRPlsipvytOINsG4uxXzYxS9FeIOg3tV1cDVXLVbwbS/YVBe8+fIdfBJDzUFx16jakd+gy8Hq8X9/g1g2jr1gUoIZ9RoAFRvBJnJam2lmfy83Lm/t2k0LdJmo2n/t/4k2bkavZsE0KNxgE1e0yyxB2HFdEBTDep7PFzxa/Z5WlUo04xqSnVMWMWvaS6jUY0IghQMEUKUrv0E9XjoR8jNtu1rr34OMpPUDf3uD9n2tW1MkjRRZlk5xvw76cU2sAbY+Zl6bD++7Is53QyqGeFDW6FuF/XL+Ntjqkx14rkKRF5GRiNseFOV1M5Og0b91Pq54Ha2i0EIS9ProcsDanvv12U6dWrvELw93Dh2MYW/j1q/GuuZK2n8FHYegKeHOFDfwZSLedUY06BRfxj5vmWm2+h0cOuH0GSw6kW09B64eqbi1zVH9BZVCMnTD1reZpvXFEI4p9CBULUmpMdD1Abbve7x1XDkF7W2evTHLj+bSZI0UWbbT8aTmJ5NLV9Pujcq5s52wmm1rgyg+8zyv1BgCzVqNeQNNf85aj182hP2LrT+qFpGEiyfAFveV1/3eBQm/gzeDnQnX4jy6nCfGqm+sL9MozXVqnowuVcIoNamaVb+Pfx4fSS5Ro0BzWvRuaGDVO7KvqYaUCfHQEBTGLdYTde2FDcD3L0IareFtDi1DvbaVctdvySmgiFt71btAYQQoiRu7uq9AszumVZhmSnwx7/Uds9HIbi9bV7XjiRJE2W2KlxNdby1bXDx/S52fwFoEDpI9UarCL0b9H4CHt6uyvhnpcDvT8G3Y6x3h/nyCVgwEE6sUcnhHZ/D8Lel0plwHd41C1pGlKGACMD0Po2o4u7GoZgkNp24bIXglJNxqfl92Z4e0sxqr1MmRiP8PBMuhKkZAvd+b52yz56+cN8P4FcX4o/D95NU01ZrSU+Ao6vUtkx1FEKYo/096vHYn3At0fqvt+EtSD6veksOeN76r+cAJEkTZZKRncu6I2qaU7FTHTNTYP8StW2JNRomNZvCA6th2DuqcMepTTC/l+rDZsm+QsdXqwTtykn1AWnqmoJys0K4ElMBkUM/qZFjMwX4eHJfd7VQ+//WR1ptNO3j9ZEYNRjSqjbt6lWzymuU2aZ31FQbvTvcs8S6xTX86sC9P4CHr1rj+9vj1ptBcOhHyM1Uo3fBHazzGkII1xLcAWq1UO8dR3617mud3we78pbRjPoQPLyt+3oOQpI0USabjseRmplD3WpV6Fi/mDvIB5aqggQBTdVImiXp3aDnI2pUrUEvyEqFP56Bb25TUywrwmiEzXPVOpOsFGjYGx7cDHU7WSZ2IRxNg57qD2x2umoiXwYP9muMp0FP2NlE/om6YvHQjl9Mye/HNmuwg4yiHfwBtsxV26PnQUgf679mUBu45xvQG+Dg97DxLcu/hqYVTHXsNMllS1kLISxMpyu4iX3we+u9Tm626omGBm3HqTW7lYQkaaJMTA2sR7ULRn/jVEejseBOR/eHVIECawgIhfv/gBFzVfXI6K1qVG3X5+UbVctMUcVBTB+Aus6Ayb+CTy3Lxi2EI9HpCkbT9n5dplGaQD8vJnRTo2n/XR9p8dA++usEmgYj2wbRqo6fxa9fZmd3wa+Pqu3eT9q2h1joQBg1T21veb8gobKU2ANw6ZCa2m1aYyKEEOZoOw7QwZntcDXaOq+x4xP1HlWlOgx72zqv4aAkSRNmS83MYf0x01THYhpYR66DhFPg6V9QntVa9HqVCD78D4T0VaMBq2fD4lFwJcr861yJUuX1j/2uCinc9j/VGNGShQCEcFTt7lHTh+OOwLldZTr1of6N8XDTs+t0ArtPJ1gspIiYJNYcvohOB085wija1TOw/F7IzYIWo2DQq7aPodMk6Pes2l71JJxcb7lrm5K+lqOhag3LXVcI4fr866rK11DmGRlmSTgNm95V20PfqnQ3zyVJE2Zbf/QSGdlGGtX0pnVxd7d35TWv7jwZPH1sE1SNRjD5Nxj5H9V5/sx2mN9b3Xkx5pZ+buRfqkH15WPgG6zWvMmieVGZVKkGbe9U22Usxx/sX4W7utQDVN80S/norxMA3Na+Ds1q+1rsuuWSkazK4KfHQ1BbVUTIWjMEbuaWl1RSreXCD1PgYkTFr5mVrtajgbz3CSHKxzTlMXy5ZdfNahr88TTkXFM34zvca7lrOwlJ0oTZTFUdR7cLRnfjuoVLR1QxD50euj1o28D0eug2Ax7ZoXoW5VyDtS/CwhEQf92Hx5gwWDRKPW79UJW2zkxSVSMf3AT1utg2biEcgWnK4+FfVJW/Mni4fygGvY6tkfHsP1vxMvH7z15l/bE49Dp4clDTCl+vQnJzVEPpy0fBJwgmfG+7m0/F0enUSH9IX7Vu9ru7IflCxa559De1hrhaQwjpZ5k4hRCVS8vRaulJQhSc32u56x76UfVgc/NUPdEq4XpZSdKEWZLSs9mcV2672KmOprVoLW6Fag1sGNl1qjdUa8lGzVMV0c7tgs/6wPb/qlG18OVq/dqKabD+NUCDzvfDlN/BN8g+MQthb3U6qX4zuZmq8E8Z1K9RlTs61gVU37SK+jBvFG1sp3o0rmXHhAhg3Utw8i81HXTCMjWtx94MHnDPt1CzOaRcgO/GqdG+8jJNdew4yX4jhEII5+bpq6aCAxxcbplrpifAmrwy+/1nW7eSrgOTd2VhlrWHL5Kdq9EiyJemN05BSk8oqOzT4xHbB3c9nQ66PKBG1UIHQk4G/PVvNQUyPO/NI+EU6AzQ52no+4z64CNEZVWBAiIAj97SBL0ONhyLIyLG/FL+N9oTncDWyHgMep39R9H2fFlw4+mOzxyrymuV6nDfj+AdqBbT/3i/qn5WVlei4Mw2NfuhEk4jEkJYkGnKY8QKyMmq+PXWvQzpVyCwFfR6ouLXc1KSpAmzrMorh13sKNq+RSoZCmqnyno7gmr1YeLKgq8vH1VTG020HNj2Icxra/vYhHA0be5So88JUXB6S5lODanpzW157wsVqfT44To1inZ3l/rUr1G13NepsKgN8OdstT3w39B6jP1iKUn1hqqRtntViFqv1m2UdS2IqZ9l6CDHGCUUQjivxgPUtPBrV1URuYo4tRkOfAfo1DTHSnwjXZI0cVPxqZlsPxkPqNL7heRmw+4FarvHw441Z1ing7ELVH+14ugN6nkhKjtPH2h/j9ouYwERgMcGNkGng3VHLnE0tuzT7/6JimfHqSt4uOl5fGCTMp9vMZePww/3q+Ic7carkXZHVbcT3PW1GgkL+0bddDJXbk7B1FYpGCKEqCi9G7TLa+ERvqz818m+Br8/pba7ToP63SocmjOTJE3c1OpDsRg1aF/Pn4YBN3R5P/qbWhvhXQva3GmfAEvTbhxM31D8c9PXq+eFEND5AfV47HdIuVSmU5sE+jKyjbqB87+NZVubpmla/ijahG71qVOtSpnOt5i0K7B0XF4xoR5w238d66ZTcZqPUP0iAda/Dgd/NO+8k39B6kWoWhOajbBefEKIysPUeunE2jIXocq35X21JMU3GAa9YrnYnJQkaeKmVh1UDayLneq4M2/dRpdpYPC0YVTlob/hUQiRL6iNqnRqzIH9ZW+Y/FjeCNifh2I5GZdi9nlbIuPZe+YqngY9j95ip1G0nEz4fqJqxlqtIYz/zgnez/J0mwE9H1Pbvz4C0dtvfo6pYEj78ZV6KpEQwoJqt4babcGYDYdX3vz4G106DNs/Vtsj3wcvf8vG54Tk06ooVWzSNfZEqzsit9441fH8Pji/G/TuBYUHHJF3LfAJhDrtYdRH6tEnUO0XQhQw/R7vW3zzPoM3aBnsx5BWtdE0+GSjeQ3l1SjacQAm9WhIoJ9XmV7TIjQNVj0FZ/8BTz+11su7pu3jqIghb0DL21TD7eX3wuUTJR+bcglOrFHbnSbbJj4hROVwfc+0sjDmwm9PqJuELUapsv5CkjRRuj8OxqJp0C2kBsH+N0xDMjWvbnMn+Na2fXDm8q8LT0XAjI3qQ+iMjeprWSwvRGGtblfVA5POwsn1ZT79iYGqKuOvB2KIjk+76fHrj8YRfj6JKu5uzBxgpxLL2+dB+FK1tuuuhRDY0j5xVIReD2O/gHrdICMRvrsTUuOKPzZ8qVpzV68b1Gpu0zCFEC6u7d3qvfT8HlVB1lx7v4aYvaqAlWkKt5AkTZSuYKrjDaNoybFw+Ge13WOmjaMqB4NnwfoSnc55pjIJYUvuVaDDfWq7HAVE2tbz55bmtTBq8Omm0temGY1afl+0Kb1CqOljh9/JI7/B36+q7eHvQdPBto/BUtzz+rlVbwSJZ2HpPZCVXvgYTSuo6igFQ4QQluZbW7U/AvNH05Ji4O/X1PbgOXID/TqSpIkSnb2STvi5RPQ6GNH2hiRtz5dqWLpBT6jT0T4BCiEsr/P96jFyLSSeK/Ppj+f1OFsZFsO5hPQSj1t7+CJHYpPx8TTwUL/G5Ym0Yi7sh5UPqu2uM6D7g7aPwdK8a8LEFVClBlwIgxXTC09bPbsDrpwEDx9oPdZ+cQohXJepgMjB5WA03vz41bMhKwXqdXXspTN2IEmaKJGpN1rvJjUL3+XOzoB9C9V2dycYRRNCmK9mU2jUDzSjKu1eRp0aVKdPk5rkGDU+21z8dJdco8ZHf6tRtKm9Q6jubePiFckXYNkEyLmm7voOf9e2r29NAaEwYTm4ecLxP2DtiwXPmQqGtL5DtV0QQghLaz5STVtMPAvndpZ+7NFVqqKw3qB6opXUMqmSkiRNlGhVeF4D63Y3VHU89KPqBO9fXy3wFEK4FtPdzLBvVC/EMjL1Ovtx73kuJmUUef73gxc4cSkVPy8D0/raeBQtKw2WjYeUWKjVAu5eBG4G28ZgbQ26w9jP1fauz2DHp6pJ+cG86UdSMEQIYS0eVdX6Zii9Z1pGEvz5rNru/aSqDikKkSRNFCvyUgrHLqbg7qZjWOuggic0Tf3RB1X62dU+3AghoPmt4B2oemkdX13m07s3DqBboxpk5RqLjKbl5Br5+O9IAGb0bYx/FXeLhHxTMWGwaJRaqxUbDlUD1IiTq5Z5bn0HDHldba99UVVO04zgVU1NKxJCCGtpf496PPyralBdnPWvq5tlNRpDv2dtF5sTkSRNFMtUMKR/s1r4V73uQ1T0VrgUAe5V5W6sEK7K4FFQWKIcBUSgoNLjst1niUspGE375cAFTsWnUb2qOw/0aVThUM0Wvly9f0VvBTcPuOc7qGHD17eHVmOg5e2ABldPq33GbJWkXtivpiMJIYSlNewDfvUgM6n4G31nd8Ger9T2qHmq8JEoQpI0UYSmafyeN9Vx1I1THU3Nq9tPUKW6hRCuqdMUQAenNpatlHKe3k0C6NigGpk5Rr7YcoodUVdYGXaeuWuOAfBQ/1B8PK08Ep94ViUjFw7AgaUF+/v+C9y9XD9J+bgdHP218L6sNPiiP3wxAOa1tUtYQggXp9cXjKYd/L7wczlZsOpJQFPVhBv3t3l4zkKSNFHE4QvJnIpPw9OgZ3Cr6/qfJZyG43+qbSkYIoRrq94Qmg5R2/sWlfl0nU6XP5r25dbTTFiwk6d/CCcuJRO9DoL9bdC4el5blYx80V9VDzPZ9HblSFLGLlAL8oujN6jnhRDCGtrlNbaO/AtSLxfs/+djuHxUTTkf+qZ9YnMSkqSJIkxVHQe1DCx8p3v3F4AGoYOgVjP7BCeEsB1TAZH9SyAns8ynZ2TnFrvfqMFTyw+wJiK2ItHdXGVPUtqNg+klNCWfvl49L4QQ1lCrGdTpBFouRKxQ++JPwub31fbwd6FqDfvF5wQkSROFqKmOeQ2sr5/qmJlS0AS1xyN2iEwIYXNNh6p1BdcSVOPnMsg1arz++5FSj3lt1RFyjVpFIixdu3HqeyhOpUtS9Dc8CiGElbXPG03b85Uq3LRiGuRmqtYnbe+2b2xOQN6tRSFhZxOJSbyGt4cbt7QILHjiwFLITIaApgXd5IUQrk3vBp2nqO0yFhDZfTqB2GLK75toQGxSBrtPJ1QgwJs48mvBFG10eY+V7M+edy3wCYQ67WHUR+rRJ1DtF0IIa2pzp5q1cOWEKtoUewAMVeDWD0Gnu+nplZ3UTxeFmHqjDW0dhJd7XlNBo7Gg7H73h9SCUCFE5dBxEmx6F87+A3FHIbClWaddX9HREseVWdJ5VXYeVDXaWs1VRdqwbyA5pvIkKf514akIVdFSp4POD0BuFhg87R2ZEMKVJZ5VPXXrdVN/P0w6T4GMRPV8tQZ2C88ZSJIm8uUaNf44lDfVsX1wwROR6yDhlOon1H6CnaITQtiFXzC0GAlHV8HehTByrlmnBfqaVxjE3OPKxJgLP89UHwTqdITJq8DTp/ImKdd/rzpd5frehRD2UVJhpl2fFdz4fzXJdvE4IRkSEfl2nb7C5ZRM/Ku406fJdXeZd81Xj50mqw86QojKxVRAJHy5KuFuhm6NahDs70VJE1p0qAqP3RpZYeH49o/V1Bp3b7jzK/DyLZhaI0mKEEJYX2Uv3GQBkqSJfKvyCoaMaBOEhyHvRyPuKJzaBDo9dHvQfsEJIeyn0QCo3kg1Jo1YadYpbnodc0a3AiiSqJm+njO6FW56C69LiNkHG99S2yPeg4BQy15fCCHEzUl12QqTJE0AkJ1rZHWEaarjdVUdd+aNorW4VeYOC1FZ6fXQ5QG1XYYCIsPbBDN/YieCbuiJFuTvxfyJnRjeJriEM8spMxVWzABjDrS6HTpOtOz1hRBClINUly0PWZMmANh2Mp7E9Gxq+njSo3GA2pmeUNApXsruC1G5dbgPNrwJF8Lgwn611ssMw9sEM6RVELtPJxCXkkGgr5riaPERNIA1z0FCFPjVhdEfS/UwIYSwJ1N1Wb+6lbNwUwVJkiaAgqqOt7YNKvjwtG8R5GRAUDto0NN+wQkh7M+7phqdOvSjKiBym3lJGqipjz1DA6wYHHD4l7xejjoY+wVUqW7d1xNCCFE6qS5bITLuKMjIzuWvw5eA66Y65mbD7rxFnT0eljvSQoiCAiKHfoIMB6rKlXQeVuWV2+8zC0L62DceIYQQisFTCjeVkyRpgs0nLpOSmUMdfy86Nci7+3z0N0i5oIak29xp3wCFEI6hQU+o1QKy0+DgD/aORjHmwsqHVNJYpxPc8qK9IxJCCCEqTJI0kT/VcVT7OuhNUx135vWw6DJN7noIIRSdrmA0be9C0DT7xgOwfR6c2ZZXbv9LcHO3d0RCCCFEhUmSVsmlZ+Ww/mgcAKPb5U11PL8Pzu8GvXvBBzIhhABodw8YqkDcYTi/x76xxOyDjW+r7ZFzpdy+EEIIlyFJWiX399E4rmXnEhJQlTZ1/dROU/PqtneBb237BSeEcDxVqhVMgS5DOX6Ly0yFFdPzyu2PUdUnhRBCCBfhVElaYmIiTzzxBD179iQoKAhPT0/q1q3LwIEDWbFiBdoNU29effVVdDpdsf+8vLxKeBVYunQp3bp1w9vbm+rVqzNy5Ej27t1r7W/PLkxTHUe3r4NOp4PkWDj8s3qy+0w7RiaEcFimEfaIlapVhz2sfg4STuWV258nxY2EEEK4FKcqwR8fH8/XX39Njx49GDNmDDVq1CAuLo5Vq1Zx1113MWPGDL744osi502ZMoWQkJBC+wyG4r/1t99+m5deeokGDRowc+ZMUlNTWb58Ob1792bt2rUMGDDACt+ZfSRdy2bz8cvAdVUd936l7kw36Al1OtgvOCGE46rbSbXmuHgQwpdBz0dt+/qHf4YDUm5fCCGE63KqJK1Ro0YkJiYWSbBSUlLo0aMHCxYs4Mknn6R169aFnr///vvNSq4iIyOZM2cOzZo1Y/fu3fj7+wPwxBNP0K1bN6ZPn86xY8dKTPCczbrDF8nKNdK8ti/NavtCdkbB9KUeD9s3OCGE4zIVEPn9KfWe0eMR241kJZ6DVU+qbSm3L4QQwkU51XRHNze3YhMkX19fhg0bBsDJkyfLff2FCxeSk5PDSy+9lJ+gAbRu3ZrJkycTFRXFhg0byn19R7PqYCwAo9sHqx2HfoT0K+BfH5rfasfIhBAOr+1d4OELV05C9FbbvKYxF36WcvtCCCFcn1MlaSXJyMhgw4YN6HQ6WrVqVeT5rVu3MnfuXD744AP++OMPMjMzi73Opk2bABg6dGiR50xJ4ObNmy0XuB1dSc1k+8l4AEa1q6NKae/KK7vfbQa4ucZooRDCSjx9od04tW2rAiLbPoIz26XcvhBCCJfnlJ/EExMTmTdvHkajkbi4OP7880/OnTvHnDlzaNq0aZHjX3nllUJfBwcHs3jxYoYMGVJof2RkJD4+PgQFBRW5hum6kZGRJcaVmZlZKAFMTk4u0/dlS6sjLpJr1Ghb15+Qmt5wegtcigD3qtBpsr3DE0I4gy4PqHWsR1dBahz4BFrvtc7vg03vqG0pty+EEMLFOeVIWmJiIq+99hpvvPEGn3/+ORcvXuT9999nzpw5hY7r0KEDixcvJjo6mmvXrhEZGckbb7xBYmIit912G+Hh4YWOT0pKKjTN8Xp+fn75x5TknXfewd/fP/9f/fr1K/idWk9BVce8qY6m5tXtJ8gifCGEeYLaQr1uqtjQ/m+t9zqZKbBimpTbF0IIUWk4ZZIWEhKCpmnk5ORw+vRpXn/9dV566SXuvPNOcnJy8o8bM2YMkydPpmHDhnh5edGkSRNefvllPv74YzIyMnjzzTctGtcLL7xAUlJS/r9z585Z9PqWcjEpg93Rqmz2re3qQMJpOP6nelLK7gshysJUjn/fIrVmzBpWPw9XT4NfPSm3L4QQolJwyiTNxM3NjZCQEJ5//nnefPNNfv75ZxYsWHDT86ZMmYLBYGD79u2F9vv7+5c4UmaauljSSBuAp6cnfn5+hf45oj8OxaJp0KVhdepWqwK7vwA0CB0EtZrZOzwhhDNpPQa8qkHiWYiyQmGlQuX2P5eRfiGEEJWCUydp1zMV+zAV/yiNh4cHvr6+pKenF9rftGlTUlNTuXjxYpFzTGvRilvz5myub2BNZgrsX6Ke6PGIHaMSQjgl9yoF0w8tXUDk+nL7fZ+WcvtCCCEqDZdJ0i5cUImHOT3MIiMjuXr1apEG1/379wdg3bp1Rc5Zu3ZtoWOc1bmEdA6cS0SvgxFtg+DAUshMhoCmEDrQ3uEJIZxRlwfU44k1kHTeMte8vtx+3c4w4AXLXFcIIYRwAk6VpB04cKDY6YgJCQm8+KLqlzNixAhANbg+ePBgkWOvXr3KtGnTAJgwYUKh5x544AEMBgNvvfVWodc5fPgw33zzDaGhoQwc6NyJzKqDKpntGRpAoLdHQdn97g+B3ql+HIQQjqJmUwjpC5oRwr6xzDVN5fY9fGDsAim3L4QQolJxqhL8ixYt4ssvv+SWW26hYcOGeHt7c+bMGf744w9SU1O58847uffeewG4cuUK7du3p0uXLrRt25bAwEBiYmJYvXo1V65cYciQIcyaNavQ9Zs1a8arr77Kyy+/TLt27bjrrrtIS0tj2bJlZGdns2DBArNG6hzZqvC8Btbt6kDkOkg4BV7+qqqjEEKUV5epqqn1vsXQ79mKJVXXl9sfIeX2hRBCVD5OlXHcddddJCUlsXPnTrZs2UJ6ejo1atSgT58+TJ48mfHjx6PLq/pVo0YNHn30UXbu3MmqVatITEzE29ubtm3bMnHiRKZPn46bm1uR13jppZcICQlh3rx5zJ8/Hw8PD3r16sXrr79O165dbf0tW0yuUePn/ec5GpuMXgdDWtWGlY+rJztNBk8f+wYohHBuLUaBdy1IvaimPbYcXb7rXF9uv/Ud0OFey8YphBBCOAGdpmmavYNwVcnJyfkVI+1Z6XFNRCyvrTpCbFJG/r5evnEszX4KdHp4MhyqNbBbfEIIF/H3a7DtQ7W+ddLP5bvGL4/Age9Uuf2Ht0k1RyGEEC6jLLmBLEJycWsiYnl4SVihBA1g9LVfAbhYZ7AkaEIIy+g8BdCpUvwJp8p+fsRKlaDp9DD2C0nQhBBCVFqSpLmwXKPGa6uOcONQaTVSuMNtGwCvxvUj1yiDqUIIC6geAk0Gq+19i8p2buI5WPWU2u7zNIT0tmBgQgghhHORJM2F7T6dUGQEDWCC20a8dNlEGENYk9KI3acT7BCdEMIldZmqHvcvgZxM884x5sLKByEzCep2gQHPWy8+IYQQwglIkubC4lKKJmgGcphsUH3gvs4ZDuiKPU4IIcql6VDwqwvpV+DoKvPO2fYhnP1Hldu/U8rtCyGEEJKkubBAX68i+4br9xCsS+Cy5s/vxp4lHieEEOXiZoBOU9T23q9vfvz5vbAxr9z+yPehRmPrxSaEEEI4CUnSXFi3RjUI9vdCd92+BwxrAPgudxDZuBPs70W3RjXsE6AQwjV1mgQ6N9WMOu5YyceZyu1rudB6rPRrFEIIIfJIkubC3PQ65oxuBYAOuFO/mc76SLI0N77LUYv754xuhZteV8pVhBCijPzqQPMRanvfwpKP+3M2XI0G//ow6iPQyXuREEIIAZKkubzhbYKZP7ETQf5ePGJQZffParUx+Acxf2InhrcJtnOEQgiXZCogcmAZZKUXfT5iBYQvva7cfjWbhieEEEI4MknSXF3iWYbXuMi2O4001l8EoKFXGtsm12B4jYuQeNbOAQohXFLjW1RJ/swkOLyy8HOJZ2HVLLXd9xlo2Mvm4QkhhBCOzGDvAISVzWsLgNt1u9yzkmHBgIIdrybZNCQhRCWg10PnB+DvOaqASMeJar8xF1Y+VFBuv/9z9o1TCCGEcEAykubqxi4A/Y25eF7zar1BPS+EENbQcSLo3SFmH8SGq31bpdy+EEIIcTMykubq2o2Dms3gi/5Fn5u+Hup0sHlIQohKwrsmtLodIn6Cze9D0jmIPaieG/kfKbcvhBBClEBG0ioV/Q2PQghhZaYCIidWQ+wBwAht7oT24+0ZlRBCCOHQ5NN6ZeBdC3wCoU57Vea6Tnv1tXcte0cmhHBliWfBvSpUawjGHLVPl7dWLfaAFC4SQgghSqDTNE2zdxCuKjk5GX9/f5KSkvDz87NvMDmZ4Oah+hBpGuRmgcHTvjEJIVzbq/5mHCOFi4QQQlQOZckNZCStsjB4FjSK1ekkQRNCWF+xhYvySOEiIYQQokRSOEQIIYR1SOEiIYQQolxkJE0IIYQNSOEiIYQQwlzy11IIIYT1SOEiIYQQosxkuqMQQgjr8a8LT0UUFC7q/IAULhJCCCFuQpI0IYQQ1nV9QiaFi4QQQoibkumOQgghhBBCCOFAJEkTQgghhBBCCAciSZoQQgghhBBCOBBJ0oQQQgghhBDCgUiSJoQQQgghhBAORJI0IYQQQgghhHAgkqQJIYQQQgghhAORJE0IIYQQQgghHIgkaUIIIYQQQgjhQCRJE0IIIYQQQggHIkmaEEIIIYQQQjgQSdKEEEIIIYQQwoFIkiaEEEIIIYQQDkSSNCGEEEIIIYRwIAZ7B+DKNE0DIDk52c6RCCGEEEIIIezJlBOYcoTSSJJmRSkpKQDUr1/fzpEIIYQQQgghHEFKSgr+/v6lHqPTzEnlRLkYjUYuXLiAr68vOp3O3uGQnJxM/fr1OXfuHH5+fvYOR1Qy8vMn7El+/oQ9yc+fsCf5+XMcmqaRkpJCnTp10OtLX3UmI2lWpNfrqVevnr3DKMLPz09+SYXdyM+fsCf5+RP2JD9/wp7k588x3GwEzUQKhwghhBBCCCGEA5EkTQghhBBCCCEciCRplYinpydz5szB09PT3qGISkh+/oQ9yc+fsCf5+RP2JD9/zkkKhwghhBBCCCGEA5GRNCGEEEIIIYRwIJKkCSGEEEIIIYQDkSRNCCGEEEIIIRyIJGlCCCGEEEII4UAkSasE9uzZw8iRI6levTre3t5069aNpUuX2jssUQmEhISg0+mK/Tdz5kx7hydcxJIlS3jooYfo0qULnp6e6HQ6Fi1aVOLxycnJPP300zRs2BBPT08aNmzI008/TXJysu2CFi6jLD9/r776aonviV5eXrYNXDi9mJgY5s2bx9ChQ2nQoAEeHh4EBQVx5513smvXrmLPkfc/52GwdwDCujZt2sSwYcPw8PBg/Pjx+Pv7s3LlSu677z6io6N58cUX7R2icHH+/v489dRTRfZ36dLF9sEIl/Tyyy9z5swZatasSXBwMGfOnCnx2LS0NPr378+BAwcYMmQIEyZMIDw8nI8++oiNGzeybds2vL29bRi9cHZl+fkzmTJlCiEhIYX2GQzykUyUzf/93//x3nvvERoaypAhQwgMDCQyMpJffvmFX375hWXLljFu3Lj84+X9z8lowmVlZ2droaGhmqenpxYWFpa/Pzk5WWvdurVmMBi0EydO2DFC4eoaNmyoNWzY0N5hCBf3119/adHR0Zqmado777yjAdrChQuLPfaVV17RAG327NnF7n/llVesHa5wMWX5+ZszZ44GaBs3brRdgMJlrVixQtuyZUuR/Vu2bNHc3d21GjVqaBkZGfn75f3Puch0Rxe2YcMGoqKiuPfee+nYsWP+fl9fX/7973+Tk5PDwoUL7RihEEJU3ODBg2nYsOFNj9M0jS+//BIfHx9eeeWVQs+98MILVK9ena+++gpN2oeKMjD3508ISxs7dix9+/Ytsr9v377ccsstJCQkcOjQIUDe/5yRjK27sE2bNgEwdOjQIs+Z9m3evNmWIYlKKDMzk8WLFxMTE0P16tXp1asX7du3t3dYohKKjIzkwoULDBs2rMiUHi8vL/r168evv/7KyZMnadq0qZ2iFJXB1q1b2b17N25ubrRo0YLBgwfj6elp77CEC3F3dwcKptHK+5/zkSTNhUVGRgIU+8tWvXp1atasmX+MENZy8eJF7r///kL7hg8fzrfffkvNmjXtE5SolEp7T7x+f2RkpHxIEVZ140hGcHAwixcvZsiQIXaKSLiSs2fP8vfffxMUFETbtm0Bef9zRjLd0YUlJSUBqnBDcfz8/PKPEcIapk6dyqZNm7h8+TLJycns3LmTESNGsGbNGm677TaZViFsypz3xOuPE8LSOnTowOLFi4mOjubatWtERkbyxhtvkJiYyG233UZ4eLi9QxROLjs7m0mTJpGZmcncuXNxc3MD5P3PGclImhDCam68W9y9e3d+//13+vfvz7Zt2/jzzz+59dZb7RSdEELY1pgxYwp93aRJE15++WVq167Ngw8+yJtvvsmPP/5on+CE0zMajUydOpUtW7YwY8YMJk2aZO+QRAXISJoLM90tKemuSHJycol3VISwFr1ezwMPPADA9u3b7RyNqEzMeU+8/jghbGXKlCkYDAZ5TxTlpmkaM2bMYMmSJUycOJHPPvus0PPy/ud8JElzYdfPL77R1atXiY+Pl3nHwi5Ma9HS09PtHImoTEp7T7x+v7wvClvz8PDA19dX3hNFuRiNRqZNm8bXX3/NhAkTWLRoEXp94Y/48v7nfCRJc2H9+/cHYN26dUWeM+0zHSOELe3atQugSDNXIaypadOm1KlTh+3bt5OWllbouYyMDLZs2UKdOnVo0qSJnSIUlVVkZCRXr16V90RRZkajkenTp7Nw4ULuuecevv322/x1aNeT9z/nI0maCxs0aBCNGzdm6dKlHDhwIH9/SkoKb7zxBgaDoUjVPSEs5ciRIyQmJhbZv23bNj788EM8PT0ZO3as7QMTlZZOp2P69Omkpqby+uuvF3runXfe4erVq0yfPh2dTmenCIUrS0lJ4eDBg0X2X716lWnTpgEwYcIEW4clnJhpBG3hwoXcfffdLFmypNgEDeT9zxnpNCmv5tI2btzIsGHD8PT0ZMKECfj5+bFy5UpOnz7Nm2++yUsvvWTvEIWLevXVV5k7dy6DBg0iJCQET09PIiIiWLduHXq9ns8++4zp06fbO0zhAr788ku2bdsGwKFDhwgLC6N37975d4THjBmTX7AhLS2NPn36cODAAYYMGULnzp0JDw9n9erVdOjQgW3bthXpISREacz9+YuOjqZRo0Z06dKFtm3bEhgYSExMDKtXr+bKlSsMGTKE33//HQ8PD3t+O8KJvPrqq7z22mv4+Pjw5JNP5vdEu96YMWPo0KEDIO9/TkcTLm/Xrl3a8OHDNX9/f61KlSpaly5dtCVLltg7LOHiNm3apI0bN05r0qSJ5uvrq7m7u2v16tXTxo8fr+3atcve4QkXMmXKFA0o8d+cOXMKHZ+YmKjNmjVLq1+/vubu7q7Vr19fmzVrlpaYmGifb0A4NXN//pKSkrRHH31U69y5s1azZk3NYDBo/v7+Wp8+fbTPPvtMy8nJse83IpzOzX72AG3hwoWFzpH3P+chI2lCCCGEEEII4UBkTZoQQgghhBBCOBBJ0oQQQgghhBDCgUiSJoQQQgghhBAORJI0IYQQQgghhHAgkqQJIYQQQgghhAORJE0IIYQQQgghHIgkaUIIIYQQQgjhQCRJE0IIIYQQQggHIkmaEEIIIYQQQjgQSdKEEEIIB3f//fej0+mIjo62dyhCCCFsQJI0IYQQLiM9PZ23336bTp064ePjg5eXF/Xq1aNv37688MILREVF2TtEIYQQ4qYM9g5ACCGEsISUlBT69OnDwYMHadKkCRMnTqRatWqcO3eOw4cP8+677xIaGkpoaKi9QxVCCCFKJUmaEEIIlzBv3jwOHjzItGnTWLBgATqdrtDzp0+fJjMz007RCSGEEOaT6Y5CCCFcwo4dOwB47LHHiiRoAI0aNaJFixb5X2/cuJGpU6fSvHlzfHx88PHxoUuXLnzxxRfFXl+n0zFgwABiYmK49957qVmzJr6+vtx6662cOnUKgOPHj3PHHXdQo0YNfH19ufvuu4mLiyt0nejoaHQ6Hffffz8RERGMGDECf39//Pz8GD16NEeOHCnT971lyxZGjx5NzZo18fT0pGnTprz88sukp6cXOXbFihX079+fwMBAvLy8qF+/PsOHD+eXX34p02sKIYSwLknShBBCuIQaNWoAcPLkSbOOf++999iyZQtdu3blscceY+LEicTHx/PQQw/xzDPPFHvO1atX6dOnD6dPn2bKlCkMGDCAP//8kyFDhnD48GF69uxJSkoKU6dOpUuXLvz000/cd999xV7r1KlT9O7dm5ycHB555BGGDh3Kn3/+Se/evTl69KhZ38Nnn33GgAED+Oeffxg1ahRPPPEEdevW5a233mLIkCFkZWXlHzt//nzuuusuIiMjueOOO3j66acZPHgw586dkyRNCCEcjSaEEEK4gF9++UUDND8/P+25557T1q9fryUkJJR4/KlTp4rsy87O1oYMGaK5ublpZ86cKfQcoAHarFmzCu2fOXOmBmjVqlXT5s2bl7/faDRqI0eO1AAtLCwsf//p06fzr/Xyyy8XutbixYs1QBs4cGCh/VOmTNEA7fTp0/n7Dh8+rBkMBq1jx47alStXCh3/zjvvaID2n//8J39fp06dNA8PDy0uLq7I9x0fH19knxBCCPuRkTQhhBAu4fbbb2fu3LkYjUbee+89Bg0aRI0aNWjSpAmPPfYYkZGRhY5v1KhRkWsYDAZmzpxJbm4uGzduLPK8j48Pb7zxRqF99957LwABAQE88cQT+ft1Oh3jx48HIDw8vMi1qlevzvPPP19o36RJk2jTpg0bNmzg3LlzpX6/n3/+OTk5Ofz3v//NH0U0mT17NrVq1WLZsmWF9ru7u+Pu7l7kWgEBAaW+lhBCCNuSwiFCCCFcxrPPPsvMmTNZs2YN//zzD3v37mXXrl188sknfPXVV3z//ffcdtttgKoG+Z///IdffvmFqKgo0tLSCl3rwoULRa7ftGlTvL29C+0LDg4GoF27dkXWwpmei4mJKXKtjh07FrmWTqejT58+REREEB4eTv369Uv8Xnfu3AnAmjVr+Pvvv4s87+7uzrFjx/K/HjduHM8//zxt2rRh/PjxDBgwgD59+lCtWrUSX0MIIYR9SJImhBDCpZgKdtx9990AJCUl8eKLL/Lpp58ybdq0/IRpwIABhIWF0bFjRyZNmkRAQAAGg4Ho6GgWL15cbCVIPz+/IvsMBsNNn8vOzi7yXGBgYLHx165dOz/u0iQkJADw1ltvlXqcyezZswkICOCzzz7jww8/5IMPPsBgMDBy5EjmzZtX7MiiEEII+5AkTQghhEvz9/fnf//7H3/88Qdnzpzh0KFDnDp1irCwMKZPn86CBQsKHb98+XIWL15s9bhurPpocunSpfy4S2NKCpOTk/H19b3p6+l0OqZPn8706dO5cuUKW7duZdmyZfzwww9ERkZy6NAh3NzcyvhdCCGEsAZZkyaEEMLl6XQ6qlatmv91VFQUQP7Ux+tt3brVJjHt37+/yBRLgO3btwPQvn37Us/v3r07UDDtsSwCAgIYM2YM33//PQMHDuTo0aNmV8UUQghhfZKkCSGEcAmff/45e/bsKfa5lStXcuzYMapVq0abNm1o2LAhANu2bSt03ObNm4uMrFnL1atXeffddwvt++abbzh06BADBw4sdT0awCOPPILBYODxxx8vtshIYmIi+/fvz/967dq15OTkFDomOzs7f9pklSpVyvutCCGEsDCZ7iiEEMIlrF69mpkzZ9KkSRN69+5NnTp1SE1N5cCBA2zduhW9Xs+nn36Kp6cno0ePJiQkhLlz5xIREUGbNm04fvw4v//+O2PGjGHFihVWj7dv377897//ZefOnXTt2pUTJ07w888/50/PvJk2bdrw6aef8vDDD9O8eXNGjhxJaGgoycnJnDp1is2bN3P//ffz2WefAXDPPfdQtWpV+vTpQ8OGDcnOzuavv/7iyJEj3HPPPTRo0MDa37IQQggzSZImhBDCJbz33nv07t2bv/76iy1bthAbGwtA3bp1mTJlCo8//jidO3cGVCn9DRs28Oyzz7JlyxY2bdpE69at+e6776hdu7ZNkrTGjRvzySefMHv2bP73v/+haRojRozgvffeo2XLlmZdY8aMGXTo0IEPP/yQLVu28Ntvv+Hv70+DBg2YNWsWU6ZMyT/2nXfeYc2aNezevZtVq1bh7e1NkyZN+Pzzz5k6daq1vk0hhBDloNM0TbN3EEIIIURlER0dTaNGjZgyZQqLFi2ydzhCCCEckKxJE0IIIYQQQggHIkmaEEIIIYQQQjgQSdKEEEIIIYQQwoHImjQhhBBCCCGEcCAykiaEEEIIIYQQDkSSNCGEEEIIIYRwIJKkCSGEEEIIIYQDkSRNCCGEEEIIIRyIJGlCCCGEEEII4UAkSRNCCCGEEEIIByJJmhBCCCGEEEI4EEnShBBCCCGEEMKB/D+OpcZK+VLNTgAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2kAAAIyCAYAAABRtoImAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA9I1JREFUeJzs3Xl4lOX1//H3zGTfCUlIgISw7zsim4IoiLtVW7VuaLGC9mfFflu1tAK2daFVW7tg1VaxqGhbq+ICbkRFQXaQfQthS0ggZN9nnt8fT2ZIyMIkmWRmks/runLNk2ebMxEnOXOf+9wWwzAMRERERERExCdYvR2AiIiIiIiInKEkTURERERExIcoSRMREREREfEhStJERERERER8iJI0ERERERERH6IkTURERERExIcoSRMREREREfEhStJERERERER8iJI0ERERERERH6IkTURExItSU1OxWCy88sor3g6lyWbOnInFYmHmzJkd8vlFRFqLkjQRER+yYMECLBaLW18i7VVaWhoLFizwy8RVRMQTArwdgIiI1K9Lly7eDkHaQO/evQkJCSE6OtrbofiMtLQ0Fi5cyOTJkxsdJUtKSqJ///4kJSW1XXAiIm1ASZqIiI/KysrydgjSBj777DNvh+C3nnjiCZ544glvhyEi4nEqdxQREREREfEhStJERPzYoUOHXHPUDh06xIEDB/jxj39Mz549CQ4OJjU1tc4177zzDtdeey1du3YlKCiITp06ceGFF/L8889TWVnZ6PNlZWXx8MMPM3z4cKKjowkJCaFXr17MmjWLnTt3Nus1pKWl1Zpnt3nzZm655Ra6d+9OYGAgU6ZMcZ3rPC8tLa3B+02ZMgWLxcKCBQvqHKt5fWFhIb/61a8YMGAAoaGhdO7cmSuvvJJvv/22Wa8D4PTp0zz66KOMGjWKqKgogoKCSExMZNiwYcyePbveUbPGGofUjPfUqVM8+OCD9O7dm9DQUHr06MFPfvITcnJyXOdnZGQwZ84cevbsSUhICCkpKfzsZz+jsLCwyT8rJ+c8yZr/HdyRn5/PsmXLuOWWWxg6dCixsbGEhITQo0cPfvjDH7J27do61zj/PS9cuBCAL774os5czJo/J3cah6SlpfH973+fbt26ERwcTFxcHBdffDEvv/wydrvdrdf82WefccUVVxAfH09ISAgDBw5k4cKFlJWVNelnIiLiNkNERHzG/PnzDcBw9+05PT3ddf5rr71mREREGIARFhZmhIeHGz169HCdW1hYaFx55ZWu8wEjKirKsFgsru/Hjx9v5Obm1vtcy5cvd90fMAIDA43w8HDX90FBQcaSJUua/JpXrVrlusd//vMfIzAw0BVbSEiIMXnyZNe5zvNWrVrV4P0mT55sAMb8+fPrHHNe//rrrxt9+vQxACMkJMQICwur9bpWrFjR5Ndx5MgRIyUlxXUfq9VqdOrUybDZbK59NV+LU48ePQzAePnllxuMd8mSJUb37t0NwAgPDzeCgoJcxwYOHGicPn3aWLdunREXF+f62QUEBLjOmThxolFVVdWkn5WT899kfbHfcccdBmDccccdDV7n/IqIiDCCg4Nd31ssFuNPf/pTrWsOHz5sdOnSxfXvKjAw0OjSpUutr2XLlrn1/IZhGHPnzq31fDExMbX+e0ydOtUoKCho9DUvWrTIsFgsrutr/v9y0UUX1ftzFRFpKY2kiYi0E/fccw+DBw9m/fr1FBcXU1RUxMcff+w6ftttt/H+++/Tp08fXn/9dQoKCsjPz6ekpIR3332XXr16sWbNGu6666469163bh3XX389RUVF3HPPPezatYvS0lKKiorIyMjg3nvvpaKigh/96Eds2LCh2a9h5syZTJs2jV27dpGfn09paSkvvvhis+/XkPvuu4+goCA+//xz189q3bp19O/fn8rKSu655x4cDkeT7rlgwQIOHz5Mamoqn376KRUVFeTm5lJeXs6hQ4dYvHgx48aNa1a8P/3pT4mLi2Pt2rUUFRVRVFTEG2+8QVhYGLt27eLXv/413//+9xk2bBjbt28nPz+fwsJC/vznP2Oz2fj66695+eWXm/XczZWYmMjcuXNZu3Ytp0+fprCwkNLSUg4ePMhPf/pTAB588EE2b97suiY5OZmsrCz+7//+D4AJEyaQlZVV6+vGG2906/n/8pe/8OyzzwLw4x//mOPHj3P69Gny8/N59tlnCQgI4PPPP+fuu+9u8B5bt27l4Ycf5uGHHyY7O5vTp0+Tl5fHo48+CsCqVatYsmRJs34+IiKN8naWKCIiZ9QcfTh7BKHm1/bt2w3DqD2S1qNHD6OwsLDe+77//vsGYCQmJhpHjx6t95wjR464RjA2b95c69h5551nAMavf/3rBmO///77DcC45pprmvSaa46kjR07ttGRCed5LR1Ji4+PN06cOFHn+LZt21znrF69ukmvY+DAga5RuqZwZyStS5cuxsmTJ+sc//Wvf+06Z/DgwUZZWVmdc2677TYDMC6++OI6x1pzJO1c7rvvPgMwfvSjHzXpOd15/pKSEiM2NtYAjJtvvrnea5977jnXz279+vX1Pn9jP5vrrrvOAIxLLrmk0RhFRJpDI2kiIj7qxIkTDX7VN3fsJz/5CREREfXe66WXXgLM0bRu3brVe0737t256KKLAFi5cqVr/9atW1m/fj2BgYH87Gc/azDe22+/HYBPP/20wbk+5/Lzn/8cm83WrGub4sc//jEJCQl19g8dOpSePXsCsG3btibdMyYmBoDMzMwWx3e2u+++m86dO9fZf+mll7q2H3zwQYKDgxs8p6mvp7VdccUVAKxevdrj9/7kk0/Izc0FaHC+3b333utq3f/GG2/Ue05wcLBrVO9s11xzDeB7P1cRaR/Ugl9ExEcZhtGk8ydOnNjgMecfwi+88AKvvvpqg+fl5+cDZgOKs691OBz079+/wWudiVlxcTGnTp2qNwk6l8Zegyedf/75DR7r2rUr6enprj/y3XXllVeyZs0aHn74YXbv3s11113HhAkTiIqKamm4jB07tt79NdfSO++88xo95/Tp0y2Oo6kOHjzI3/72N1atWsWBAwcoLCysU0Z69OhRjz+vs+Q2OTmZfv361XuOzWZj6tSpvPbaaw2W6A4ePLjBDz66du0K0OR/JyIi7lCSJiLSTjSUFFVWVnLy5EnATMKciVhjSkpKXNvHjx8HzCTsxIkTbsVS8/qmaE5i1xyRkZENHgsIMH81nqvT5dl+/vOfs3XrVt566y1efPFFXnzxRSwWC4MHD2bGjBncfffdDSYMzY3XGas751RVVTXruZvrf//7HzfffDPl5eWufVFRUYSEhGCxWKioqOD06dMUFxd7/Lmzs7MBGhw1durevXut88/mzr+Ttv65ikjHoHJHEZF2oqEywZqlh8uWLcMwjHN+1Wxz7rx+wIABbl1rGEa9rf9b8hr8QWBgIG+++SZbtmzh0UcfZerUqYSFhbF9+3b+8Ic/MGjQIJ5++mlvh9kmTp06xcyZMykvL2fq1KmkpaVRUlJCfn4+J06cICsri3//+9+tHodzWQdPnSci0laUpImItHMhISFER0cD8N133zX5+sTERMAsXWuNUY+mcCZxja1P5c5IYWsaPnw4Cxcu5LPPPiMvL49PP/2UCy+8ELvd7hpt8xXO0SBP/zw//PBDCgoK6NSpE8uXL2fy5MmEhobWOicrK6vJ93WXc0T2yJEjjZ7nLLWMj49vtVhERJpDSZqISAfgnOv173//u8mt5Z3XVlRU8L///c/jsTVFp06dgIb/+C4sLGTXrl1tGVKjAgICuPjii/nggw8IDg7GMAw+/fRTb4flcq6fJ9Csxb2d9+vfvz9hYWH1ntPYz8FqNf88aeq8TKcxY8YAZhK2d+/ees+x2+2sWrUKaHg+n4iItyhJExHpAH784x8DsHfvXn7/+983em5xcTEVFRWu78eMGcPIkSMBmDdvHjk5OY1e35qNFIYPHw7Af//733qP/+EPf6g1B6otNfa8wcHBrlFAXyrpdP48V65cWe8o6eeff86aNWuafF/nyO3evXvrHaXbsmULr7/+eoPXO5ut5OXlNfm5AaZNm+bqhtlQd8e///3vrvmWN998c7OeR0SktShJExHpAK655hq+973vAfDwww8zZ86cWiMMFRUVfPvttzz00EP06NGjViMFi8XC888/T3BwMIcPH+b888/nP//5T63mIMeOHWPp0qVMmzaNhx56qNVeh/OP6ZUrVzJ//nwKCgoAOHnyJL/85S/57W9/62qF39Z69OjBI488wtq1a2slbPv37+eWW26hpKQEq9Vaq22+t/3gBz/AarVy6tQpbr75Zlf5X2lpKUuWLOF73/sesbGxTb7v9OnTsVqt5Obmcsstt3Ds2DHA/Hf21ltvMX369EabcgwZMgSAHTt28M033zT5+UNDQ13J2RtvvMHs2bNdTW9KSkr485//zAMPPADAjTfeyOjRo5v8HCIirUlJmohIB7F06VJuuukmAJ5//nn69+9PREQEsbGxhIaGMm7cOBYtWsSpU6fqNFIYO3Ysy5cvp3PnzqSnp/P973+fqKgo4uLiCA8Pp3v37tx2222tXso3c+ZM11pujz32GDExMcTGxpKQkMCTTz7JU0895RodamsnTpzgySefZPz48YSFhbl+rn379uXf//43FouFp59+moEDB3olvvr069ePefPmAbB8+XKSk5OJiYkhKiqKmTNnMnXqVO69994m37dv3778/Oc/B+Dtt9+me/fuxMTEEBERwY033khERATPPfdcg9dPmTKF/v37Y7fbmThxIrGxsaSmppKamsp//vMft2L4yU9+wty5cwFz1CwpKYnY2Fiio6O5//77qays5KKLLuLFF19s8usTEWltStJERDqIsLAw3njjDVatWsVtt91Gr169cDgcFBUVkZCQwNSpU1m0aBH79u2rt3X5tGnT2L9/P0888QSTJk0iOjqavLw8rFYrgwYN4kc/+hHvvfcef/7zn1vtNdhsNj744AMWLlzIgAEDCAoKwmKxMH36dD755JMGFx5uCx9//DGPPPIIF1xwAcnJyZSWlgLQp08f7rzzTtavX+8avfEljz32GP/6178YN24c4eHh2O12RowYwfPPP8/bb7/d7PLMJ598kldffZWxY8cSGhpKZWUlffr04Ze//CWbN292rTNWn4CAAD777DNmzZpFamoqxcXFZGRkkJGRQVFRkdsxPPPMM3z++edcf/31dOnShaKiIiIjI7nooov45z//ySeffNLoiJ6IiLdYjObOyhURERERERGP00iaiIiIiIiID1GSJiIiIiIi4kOUpImIiIiIiPgQJWkiIiIiIiI+REmaiIiIiIiID1GSJiIiIiIi4kMCvB1Ae+ZwODh+/DiRkZF1FoYVEREREZGOwzAMCgsL6dq1K1Zr42NlStJa0fHjx0lOTvZ2GCIiIiIi4iOOHDlC9+7dGz1HSVorioyMBMz/EFFRUV6ORkREREREvKWgoIDk5GRXjtAYJWmtyFniGBUVpSRNRERERETcmgalxiEiIiIiIiI+REmaiIiIiIiID1GSJiIiIiIi4kM0J01EREREpAOw2+1UVlZ6O4x2LTAwEJvN1uL7KEkTEREREWnnioqKOHr0KIZheDuUds1isdC9e3ciIiJadB8laSIiIiIi7Zjdbufo0aOEhYURHx/vVndBaTrDMMjJyeHo0aP07du3RSNqStJERERERNqxyspKDMMgPj6e0NBQb4fTrsXHx3Po0CEqKytblKSpcYiIiIiISAegEbTW56mfsZI0ERERERERH6IkTURERERExIdoTpqIiIiIiJyT3WGwLj2X7MIyEiJDGNszFptVJZStQSNpIiIiIiLSqBXbM5n01Ofc/OJafrpsCze/uJZJT33Oiu2ZrfacM2fOxGKxYLFYCAwMpEuXLkybNo1//vOfOBwOt+/zyiuvEBMT02pxtgYlaSIiIiIi0qAV2zOZs3QTmflltfZn5ZcxZ+mmVk3UZsyYQWZmJocOHeKjjz7ioosu4qc//SlXXnklVVVVrfa83qYkTURERERahd1hsObAKd7dcow1B05hd2ghZV9gGAYlFVVufRWWVTL/vR3U91/OuW/BezspLKt0635NXUw7ODiYxMREunXrxqhRo/jlL3/Ju+++y0cffcQrr7wCwDPPPMPQoUMJDw8nOTmZe++9l6KiIgDS0tK48847yc/Pd43KLViwAIClS5cyZswYIiMjSUxM5Ic//CHZ2dnN+6F6mOakiYiIiIjHrdieycLlO2uNviRFhzD/qkHMGJLkxciktNLOoEdXeuReBpBVUMbQBR+7df7Oxy4lLKhlKcjUqVMZPnw4b7/9NrNmzcJqtfLcc8+RmppKeno69957L7/4xS/429/+xoQJE/jjH//Io48+yp49ewCIiIgAoKKigt/85jf079+f7Oxs5s6dy8yZM/nwww9bFJ8nKEkTEREREY9ylsedPWbiLI9bfOsoJWrSIgMGDGDbtm0APPDAA679PXv25De/+Q1z5szhb3/7G0FBQURHR2OxWEhMTKx1j7vuusu13atXL5577jnGjh1LUVGRK5HzFiVpIiIiIuIxdofBwuU7GyyPswALl+9k2qBEdQb0ktBAGzsfu9Stc9el5zLz5fXnPO+VO89jbM9Yt57bEwzDcC0cvWrVKh5//HF27txJQUEBVVVVlJWVUVxcTHh4eIP32Lx5MwsWLGDLli3k5ua6mpEcPnyYQYMGeSTO5tKcNBERERHxmHXpuXUaTNRkAJn5ZaxLz227oKQWi8VCWFCAW18X9I0nKTqEhtJpC2YZ6wV94926nzOxaqldu3bRs2dPMjIyuPzyyxkyZAj//e9/2bhxI3/9618BqKysbPD64uJipk+fTkREBEuXLmX9+vX873//A8wySG9TkiYiIiIiHpNd2HCC1pzzxLtsVgvzrzJHlc5Or5zfz79qUJuOin7++ed89913XH/99WzYsIGqqiqefvppxo0bR79+/Th+/Hit84OCgrDb7bX27d69m5MnT/Lkk09ywQUXMGDAAJ9pGgJK0kRERETEgxIiQzx6nnjfjCFJLL51FInRtf+bJUaHtPr8wvLycrKysjh27BibNm3i8ccf55prruHKK6/k9ttvp3fv3lRVVfHnP/+ZgwcP8q9//Yvnn3++1j1SU1MpKiris88+4+TJk5SUlJCSkkJQUJDruvfee4/f/OY3rfY6mkpJmoiIiIh4zNiesY2Wxzl9vDOL8ir7Oc4SXzFjSBKrH5rKG3eP4083jeCNu8ex+qGprd4AZsWKFSQlJZGamsqMGTNYtWoVzz33HO+++y42m40RI0bwzDPP8NRTTzFkyBBee+01nnjiiVr3mDBhArNnz+bGG28kPj6eRYsWER8fzyuvvMK///1vBg0axJNPPskf/vCHVn0tTWExmrpYgbitoKCA6Oho8vPziYqK8nY4IiIiIm2ioe6OFqi1b0i3KJ67aSS94r3bSa+9KysrIz09nZ49exISohHM1tTYz7opuYFG0kRERETEo2YMSWL25N519idGh/D8raN48fYxxIQFsv1YAVf+eTX/3Xi0yYsci7RnasEvIiIiIh5XYTfbmV88MIGrh3clITKEsT1jXQ0mVvz0Qh54czNrD+bys39v5at9Ofzm2iFEhgR6M2wRn6CRNBERERHxuDUHTgFwzYhuXDOiG+N7d67VATAxOoTXZo3jZ9P6YbNaeGfLca54bjVbjuR5KWIR36EkTUREREQ8Kq+kgl1ZBQCM69XwAsc2q4X/d3Ff3vzxOLrFhHI4t4QbFn/D818cwOFQ+aN0XErSRERERMSjvk3PxTCgT0KEW632x6TG8uH9F3D50ESqHAZPfrSbO15ep7XUpMNSkiYiIiIiHuUsdWxsFO1s0WGB/PWHo3jiuqGEBFr5at9JLv/TV6Tt8Z0FhkXaipI0EREREfGotQfNJG18r7gmXWexWLh5bArLfzKJAYmRnCyqYObL6/ndBzupqHK0RqgiPklJmoiIiIh4TG5xBbuzCoGmjaTV1LdLJO/cN5E7xvcA4MWv0rl+8Teknyz2WJwivkxJmoiIiIh4zLfVo2j9u0TSOSK42fcJCbSx8JohvHDbaGLCAvnuWD5XPPcV/9141FOhivgsJWkiIiIi4jFrDjZ9Plpjpg9O5KOfXsD5PWMpqbDzs39vZe6bWygqr/LI/aXjSktLw2KxkJeX5/Y1qamp/PGPf2y1mJyUpImIiIiIx7jmo/Xu7LF7JkWH8vrd43hwWj+sFvjf5mNc8dxXbDua57HnEDcd2wSvXGk+trKZM2disViYPXt2nWP33nsvFouFmTNntnoc3qAkTUREREQ84mRROXtPFAFwfk/PJWlgrql2/8V9eeue8XSLCSXjVAnX/e0bXvhSa6q1qa3L4NBXsO3NNnm65ORkli1bRmlpqWtfWVkZb7zxBikpKW0SgzcoSRMRERERj3COog1IjKRTeFCrPIdzTbXLhphrqj3+odZUazLDgIpi979y9kDGGji8Brb/17zHd/8xv89YYx53915G0xLqUaNGkZKSwttvv+3a9/bbb5OcnMzIkSNd+8rLy7n//vtJSEggJCSESZMmsX79+lr3+vDDD+nXrx+hoaFcdNFFHDp0qM7zffPNN1x44YWEhoaSnJzM/fffT3Fx2zesCWjzZxQRERGRdsm5PponSx3rEx0WyN9uGcWy9UdYuHyHa021p38wgsn94lv1uduFyhJ4vGvL7lFyEv45o+nX/fI4BIU36ZI777yTl19+mVtuuQWAf/7zn9x1112kpaW5zvnFL37Bf//7X5YsWUKPHj1YtGgRl156Kfv37yc2NpYjR45w3XXXMXv2bObMmcOGDRv42c9+Vut5vvvuOy699FJ+85vf8I9//IOcnBx+8pOf8JOf/ISXX3656a+1BTSSJiIiIiIecWZ9tNZN0qD+NdXu+Oc6Hv9wl2tNNbvDYM2BU7y75RhrDpzCrrJIv3TbbbexevVqDh06REZGBl9//TW33nqr63hxcTGLFy/m97//PZdddhmDBg3ixRdfJDQ0lH/84x8ALF68mF69evHss8/Sv39/brnlljrz2X7/+9/zwx/+kAceeIC+ffsyYcIEnnvuOV599VXKytp2pFYjaSIiIiLSYtkFZRzIKcZi8fx8tMY411R7/MNdvLomgxe+PMjag6e4YVR3Fn9xgMz8M39cJ0WHMP+qQcwYktRm8fmkwDBzRKspsrbVP3J21wpIHNa0526iuLg4rrjiCpYsWYJhGFxxxRXExZ1ZKP3AgQNUVlYyceLEM08TGMjYsWPZtWsXALt27WLcuHFYLBbXOePHj6/1PBs3bmT//v289tprrn2GYeBwOEhPT2fgwIFNjr25lKSJiIiISIs5W+8PSooiOiywTZ87JNDGY9cMYVKfOH7x321sO5rPtqP5dc7Lyi9jztJNLL51VMdO1CyWJpccEhBavWEFHGceA0Kbfq9muOuuu/jJT34CwF//+tdax4zqeW41EzDnfuc+w425cA6Hg3vuuYf777+/zrG2blKickcRERERabG1B3OBtil1bMj0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", "text/plain": [ "
" ] @@ -1020,7 +993,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3.8.11 ('neural_prophet')", + "display_name": "sys07", "language": "python", "name": "python3" }, @@ -1034,14 +1007,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.11" + "version": "3.14.0" }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "9c8b4f2566ee0665c300a0345d74a67c0dbdc59cdceb21f2c0a51a43b1bc6af5" - } - } + "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/sysidentpy/model_structure_selection/__init__.py b/sysidentpy/model_structure_selection/__init__.py index b0c18ff1..33168f6f 100644 --- a/sysidentpy/model_structure_selection/__init__.py +++ b/sysidentpy/model_structure_selection/__init__.py @@ -3,7 +3,9 @@ # License: BSD 3 clause from .forward_regression_orthogonal_least_squares import FROLS +from .robust_model_structure_selection import RMSS from .accelerated_orthogonal_least_squares import AOLS from .meta_model_structure_selection import MetaMSS from .entropic_regression import ER from .sobolev_orthogonal_forward_regression import UOFR +from .orthogonal_floating_search import OSF, OIF, OOS, O2S diff --git a/sysidentpy/model_structure_selection/forward_regression_orthogonal_least_squares.py b/sysidentpy/model_structure_selection/forward_regression_orthogonal_least_squares.py index 611c0a4d..0ee1ddb8 100644 --- a/sysidentpy/model_structure_selection/forward_regression_orthogonal_least_squares.py +++ b/sysidentpy/model_structure_selection/forward_regression_orthogonal_least_squares.py @@ -173,13 +173,15 @@ def __init__( eps: np.float64 = np.finfo(np.float64).eps, alpha: float = 0, err_tol: Optional[float] = None, + apress_lambda: float = 1.0, ): self.order_selection = order_selection self.ylag = ylag self.xlag = xlag self.max_lag = self._get_max_lag() self.info_criteria = info_criteria - self.info_criteria_function = get_info_criteria(info_criteria) + self.apress_lambda = apress_lambda + self.info_criteria_function = get_info_criteria(info_criteria, apress_lambda) self.n_info_values = n_info_values self.n_terms = n_terms self.estimator = estimator diff --git a/sysidentpy/model_structure_selection/ofr_base.py b/sysidentpy/model_structure_selection/ofr_base.py index e9b72c83..a3af0006 100644 --- a/sysidentpy/model_structure_selection/ofr_base.py +++ b/sysidentpy/model_structure_selection/ofr_base.py @@ -233,7 +233,35 @@ def bic(n_theta: int, n_samples: int, e_var: float) -> float: return info_criteria_value -def get_info_criteria(info_criteria: str): +def apress(n_theta: int, n_samples: int, mse: float, apress_lambda: float) -> float: + """Compute the APRESS criterion (eq. 9 of RMSS paper). + + Parameters + ---------- + n_theta : int + Number of selected terms (parameters). + n_samples : int + Number of available samples after lag alignment. + mse : float + Mean squared error of the model with ``n_theta`` terms. + apress_lambda : float + Small positive constant (lambda in the paper). + + Returns + ------- + float + The APRESS score for the current model size. + """ + + denom = n_samples - apress_lambda * n_theta + if denom <= 0: + # Prevent division by zero/negative scaling; fall back to large penalty. + return np.inf + scale = (n_samples / denom) ** 2 + return scale * mse + + +def get_info_criteria(info_criteria: str, apress_lambda: float = 1.0): """Get info criteria.""" info_criteria_options = { "aic": aic, @@ -241,6 +269,7 @@ def get_info_criteria(info_criteria: str): "bic": bic, "fpe": fpe, "lilc": lilc, + "apress": apress, } return info_criteria_options.get(info_criteria) @@ -292,13 +321,15 @@ def __init__( eps: np.float64 = np.finfo(np.float64).eps, alpha: float = 0, err_tol: Optional[float] = None, + apress_lambda: float = 1.0, ): self.order_selection = order_selection self.ylag = ylag self.xlag = xlag self.max_lag = self._get_max_lag() self.info_criteria = info_criteria - self.info_criteria_function = get_info_criteria(info_criteria) + self.apress_lambda = apress_lambda + self.info_criteria_function = get_info_criteria(info_criteria, apress_lambda) self.n_info_values = n_info_values self.n_terms = n_terms self.estimator = estimator @@ -366,11 +397,19 @@ def _validate_params(self): f"order_selection must be False or True. Got {self.order_selection}" ) - if self.info_criteria not in ["aic", "aicc", "bic", "fpe", "lilc"]: + if self.info_criteria not in ["aic", "aicc", "bic", "fpe", "lilc", "apress"]: raise ValueError( - f"info_criteria must be aic, bic, fpe or lilc. Got {self.info_criteria}" + f"info_criteria must be aic, aicc, bic, fpe, lilc or apress. Got {self.info_criteria}" ) + if self.info_criteria == "apress": + if not isinstance(self.apress_lambda, (int, float)): + raise TypeError( + f"apress_lambda must be a numeric value. Got {type(self.apress_lambda)}" + ) + if self.apress_lambda <= 0: + raise ValueError(f"apress_lambda must be > 0. Got {self.apress_lambda}") + if self.model_type not in ["NARMAX", "NAR", "NFIR"]: raise ValueError( f"model_type must be NARMAX, NAR or NFIR. Got {self.model_type}" @@ -470,10 +509,12 @@ def information_criterion(self, x: np.ndarray, y: np.ndarray) -> np.ndarray: This function uses a information criterion to determine the model size. 'Akaike'- Akaike's Information Criterion with - critical value 2 (AIC) (default). + critical value 2 (AIC) (default). + 'AICc' - Akaike's Information Criterion with finite-sample correction. 'Bayes' - Bayes Information Criterion (BIC). 'FPE' - Final Prediction Error (FPE). - 'LILC' - Khundrin's law ofiterated logarithm criterion (LILC). + 'LILC' - Khundrin's law of iterated logarithm criterion (LILC). + 'APRESS'- Adjustable Prediction Error Sum of Squares (paper eq. 9). Parameters ---------- @@ -515,8 +556,15 @@ def information_criterion(self, x: np.ndarray, y: np.ndarray) -> np.ndarray: tmp_yhat = np.dot(regressor_matrix, tmp_theta) tmp_residual = estimation_target - tmp_yhat - e_var = np.var(tmp_residual, ddof=1) - output_vector[i] = self.info_criteria_function(n_theta, n_samples, e_var) + + if self.info_criteria == "apress": + mse = np.mean(np.square(tmp_residual)) + output_vector[i] = apress(n_theta, n_samples, mse, self.apress_lambda) + else: + e_var = np.var(tmp_residual, ddof=1) + output_vector[i] = self.info_criteria_function( + n_theta, n_samples, e_var + ) return output_vector @@ -577,7 +625,11 @@ def fit(self, *, X: Optional[np.ndarray] = None, y: np.ndarray): self.info_values = self.information_criterion(reg_matrix, y) if self.n_terms is None and self.order_selection is True: - model_length = get_min_info_value(self.info_values) + if self.info_criteria == "apress": + # APRESS uses the minimizer of the criterion (eq. 10) + model_length = int(np.nanargmin(self.info_values)) + 1 + else: + model_length = get_min_info_value(self.info_values) self.n_terms = model_length elif self.n_terms is None and self.order_selection is not True: raise ValueError( diff --git a/sysidentpy/model_structure_selection/orthogonal_floating_search.py b/sysidentpy/model_structure_selection/orthogonal_floating_search.py new file mode 100644 index 00000000..6210e638 --- /dev/null +++ b/sysidentpy/model_structure_selection/orthogonal_floating_search.py @@ -0,0 +1,847 @@ +"""Orthogonal floating search algorithms (OSF, OIF, OOS/O2S). + +The algorithms implemented here follow the Orthogonal Floating Search +framework described in the attached OFSA manuscript. They adapt +well-known floating feature selection strategies to the NARX model +structure selection problem by combining: (i) orthogonal projections of +candidate regressors and (ii) the classical Error Reduction Ratio (ERR) +criterion. All classes are drop-in compatible with the existing SysIdentPy +API (estimators, basis functions, equation formatter, etc.). +""" + +from __future__ import annotations + +from typing import Dict, List, Optional, Tuple, Union +from itertools import combinations + +import numpy as np + +from ..basis_function import Fourier, Polynomial +from ..parameter_estimation.estimators import RecursiveLeastSquares +from .ofr_base import Estimators, OFRBase + + +class _OrthogonalFloatingBase(OFRBase): + """Shared helpers for the Orthogonal Floating Search family.""" + + def __init__( + self, + *, + ylag: Union[int, List[int]] = 2, + xlag: Union[int, List[int]] = 2, + elag: Union[int, List[int]] = 2, + order_selection: bool = True, + info_criteria: str = "aic", + n_terms: Optional[int] = None, + n_info_values: int = 15, + estimator: Estimators = RecursiveLeastSquares(), + basis_function: Union[Polynomial, Fourier] = Polynomial(), + model_type: str = "NARMAX", + eps: float = np.finfo(np.float64).eps, + alpha: float = 0.0, + err_tol: Optional[float] = None, + apress_lambda: float = 1.0, + ): + super().__init__( + ylag=ylag, + xlag=xlag, + elag=elag, + order_selection=order_selection, + info_criteria=info_criteria, + n_terms=n_terms, + n_info_values=n_info_values, + estimator=estimator, + basis_function=basis_function, + model_type=model_type, + eps=eps, + alpha=alpha, + err_tol=err_tol, + apress_lambda=apress_lambda, + ) + + def _subset_err( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + squared_y: float, + ) -> Tuple[float, np.ndarray]: + """Return ERR score and per-term ERRs for the given subset.""" + if not subset: + return 0.0, np.array([], dtype=float) + + psi_sel = psi[:, subset] + if psi_sel.size == 0: + return 0.0, np.array([], dtype=float) + + q, _ = np.linalg.qr(psi_sel, mode="reduced") + g = q.T @ target + + err_vals = np.zeros(len(subset), dtype=float) + mapped = g.shape[0] + err_vals[:mapped] = np.square(g).flatten() / squared_y + score = float(np.sum(err_vals)) + return score, err_vals + + def _compute_squared_y(self, target: np.ndarray) -> float: + """Compute ||y||^2 with numerical floor to avoid division by zero.""" + squared_y = float(np.dot(target.T, target).item()) + return squared_y if squared_y > self.eps else float(self.eps) + + def _best_addition( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + available: List[int], + squared_y: float, + ) -> Tuple[Optional[int], float]: + """Pick the most significant term (Definition 1).""" + best_idx: Optional[int] = None + best_score = -np.inf + for idx in available: + score, _ = self._subset_err(psi, target, subset + [idx], squared_y) + if score > best_score or ( + np.isclose(score, best_score) and (best_idx is None or idx < best_idx) + ): + best_score = score + best_idx = idx + return best_idx, best_score + + def _best_removal( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + squared_y: float, + ) -> Tuple[int, float]: + """Pick the least significant term (Definition 2).""" + best_idx = subset[0] + best_score = -np.inf + for idx in subset: + remaining = [t for t in subset if t != idx] + score, _ = self._subset_err(psi, target, remaining, squared_y) + if score > best_score or (np.isclose(score, best_score) and idx < best_idx): + best_score = score + best_idx = idx + return best_idx, best_score + + def _most_significant_terms( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + available: List[int], + count: int, + squared_y: float, + ) -> List[int]: + """Select the most significant ``count``-subset (Definition 3).""" + k = min(count, len(available)) + if k <= 0: + return [] + + best_score = -np.inf + best_combo: Optional[Tuple[int, ...]] = None + + for combo in combinations(available, k): + score, _ = self._subset_err(psi, target, subset + list(combo), squared_y) + if score > best_score or ( + np.isclose(score, best_score) + and (best_combo is None or combo < best_combo) + ): + best_score = score + best_combo = combo + + return list(best_combo) if best_combo is not None else [] + + def _least_significant_terms( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + count: int, + squared_y: float, + ) -> List[int]: + """Remove the least significant ``count``-subset (Definition 4).""" + k = min(count, len(subset)) + if k <= 0: + return [] + + best_score = -np.inf + best_combo: Optional[Tuple[int, ...]] = None + + for combo in combinations(subset, k): + candidate_subset = [t for t in subset if t not in combo] + score, _ = self._subset_err(psi, target, candidate_subset, squared_y) + if score > best_score or ( + np.isclose(score, best_score) + and (best_combo is None or combo < best_combo) + ): + best_score = score + best_combo = combo + + return list(best_combo) if best_combo is not None else [] + + def _select_most_significant_subset( + self, + psi: np.ndarray, + target: np.ndarray, + base_subset: List[int], + available: List[int], + count: int, + squared_y: float, + ) -> List[int]: + """Floating forward search to pick ``count`` terms (OSF-style). + + Constrains additions to build upon ``base_subset`` and backtracks only + terms added in this routine, never those in ``base_subset``. + """ + if count <= 0 or not available: + return [] + + _, base_score_arr = self._subset_err(psi, target, base_subset, squared_y) + base_score = float(np.sum(base_score_arr)) + + best_by_size: Dict[int, Tuple[float, Tuple[int, ...]]] = {0: (base_score, ())} + selected: List[int] = [] + current_score = base_score + last_added: Optional[int] = None + + def backtrack( + selected_terms: List[int], + score: float, + last_added_term: Optional[int], + ) -> Tuple[List[int], float]: + flag_first_removal = 1 + while ( + len(base_subset) + len(selected_terms) > 2 and len(selected_terms) > 0 + ): + full_subset = base_subset + selected_terms + ls_idx, ls_score = self._best_removal( + psi, target, full_subset, squared_y + ) + # Do not remove any term that belongs to the fixed base subset. + if ls_idx in base_subset: + break + + prev_best_score = best_by_size.get( + len(selected_terms) - 1, (-np.inf, ()) + )[0] + if (flag_first_removal == 1 and ls_idx == last_added_term) or ( + ls_score <= prev_best_score + ): + break + + selected_terms = [t for t in selected_terms if t != ls_idx] + score = ls_score + if ls_score > prev_best_score: + best_by_size[len(selected_terms)] = ( + ls_score, + tuple(selected_terms), + ) + + flag_first_removal = 0 + + return selected_terms, score + + while len(selected) < count and len(available) > 0: + ms_idx, _ = self._best_addition( + psi, target, base_subset + selected, available, squared_y + ) + if ms_idx is None: + break + + candidate_selected = selected + [ms_idx] + candidate_score, _ = self._subset_err( + psi, target, base_subset + candidate_selected, squared_y + ) + + stored_score, stored_subset = best_by_size.get( + len(candidate_selected), (-np.inf, ()) + ) + + if candidate_score > stored_score: + selected = candidate_selected + current_score = candidate_score + best_by_size[len(selected)] = (current_score, tuple(selected)) + last_added = ms_idx + else: + selected = list(stored_subset) + current_score = stored_score + last_added = ms_idx + + available = [a for a in available if a not in selected] + selected, current_score = backtrack(selected, current_score, last_added) + + return selected + + def _select_least_significant_subset( + self, + psi: np.ndarray, + target: np.ndarray, + base_subset: List[int], + count: int, + squared_y: float, + ) -> List[int]: + """Sequential backward floating-style removal of ``count`` terms. + + Evaluates removals that maximize the criterion. Backtracking avoids + undoing the first removal when it is the most recent change. + """ + if count <= 0 or len(base_subset) == 0: + return [] + + base_score, _ = self._subset_err(psi, target, base_subset, squared_y) + best_by_size: Dict[int, Tuple[float, Tuple[int, ...]]] = { + len(base_subset): (base_score, tuple(base_subset)) + } + removed: List[int] = [] + current_score = base_score + last_removed: Optional[int] = None + + while len(removed) < count and (len(base_subset) - len(removed)) > 0: + working_subset = [t for t in base_subset if t not in removed] + ls_idx, _ = self._best_removal(psi, target, working_subset, squared_y) + candidate_removed = removed + [ls_idx] + candidate_subset = [t for t in base_subset if t not in candidate_removed] + candidate_score, _ = self._subset_err( + psi, target, candidate_subset, squared_y + ) + + stored_score, stored_removed = best_by_size.get( + len(candidate_subset), (-np.inf, ()) + ) + + if candidate_score > stored_score: + removed = candidate_removed + current_score = candidate_score + best_by_size[len(candidate_subset)] = ( + current_score, + tuple(removed), + ) + last_removed = ls_idx + else: + removed = list(stored_removed) + current_score = stored_score + last_removed = ls_idx + + # Backtrack: avoid immediately re-removing the last removed term. + flag_first_removal = 1 + while len(base_subset) - len(removed) > 2: + working_subset = [t for t in base_subset if t not in removed] + next_idx, next_score = self._best_removal( + psi, target, working_subset, squared_y + ) + prev_best_score = best_by_size.get( + len(working_subset) - 1, (-np.inf, ()) + )[0] + if (flag_first_removal == 1 and next_idx == last_removed) or ( + next_score <= prev_best_score + ): + break + + removed.append(next_idx) + current_score = next_score + best_by_size[len(working_subset) - 1] = ( + current_score, + tuple(removed), + ) + flag_first_removal = 0 + + if len(removed) >= count: + break + + return removed + + def _backtrack( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + current_score: float, + best_by_size: Dict[int, Tuple[float, Tuple[int, ...]]], + squared_y: float, + last_added: Optional[int], + ) -> Tuple[List[int], float]: + """Adaptive backward step used by OSF/OIF.""" + flag_first_removal = 1 + while len(subset) > 2: + ls_idx, ls_score = self._best_removal(psi, target, subset, squared_y) + prev_best_score = best_by_size.get(len(subset) - 1, (-np.inf, ()))[0] + if (flag_first_removal == 1 and ls_idx == last_added) or ( + ls_score <= prev_best_score + ): + break + + subset = [t for t in subset if t != ls_idx] + current_score = ls_score + if ls_score > prev_best_score: + best_by_size[len(subset)] = (ls_score, tuple(subset)) + + flag_first_removal = 0 + + return subset, current_score + + def _floating_forward_search( + self, + psi: np.ndarray, + target: np.ndarray, + process_term_number: int, + squared_y: float, + swap_callback=None, + ) -> List[int]: + """Shared floating forward search used by OSF and OIF.""" + total_terms = psi.shape[1] + all_indices = list(range(total_terms)) + + best_by_size: Dict[int, Tuple[float, Tuple[int, ...]]] = {0: (0.0, ())} + subset: List[int] = [] + current_score = 0.0 + last_added: Optional[int] = None + + while len(subset) < process_term_number and len(subset) < total_terms: + available = [idx for idx in all_indices if idx not in subset] + if not available: + break + + ms_idx, _ = self._best_addition(psi, target, subset, available, squared_y) + if ms_idx is None: + break + + candidate_subset = subset + [ms_idx] + candidate_score, _ = self._subset_err( + psi, target, candidate_subset, squared_y + ) + + stored_score, stored_subset = best_by_size.get( + len(candidate_subset), (-np.inf, ()) + ) + + if candidate_score > stored_score: + subset = candidate_subset + current_score = candidate_score + best_by_size[len(subset)] = (current_score, tuple(subset)) + last_added = ms_idx + else: + subset = list(stored_subset) + current_score = stored_score + last_added = ms_idx + + subset, current_score = self._backtrack( + psi, + target, + subset, + current_score, + best_by_size, + squared_y, + last_added, + ) + + if swap_callback is not None: + subset, current_score, swap_added = swap_callback( + psi, + target, + subset, + current_score, + best_by_size, + all_indices, + squared_y, + ) + if swap_added is not None: + subset, current_score = self._backtrack( + psi, + target, + subset, + current_score, + best_by_size, + squared_y, + swap_added, + ) + + return subset + + +class OSF(_OrthogonalFloatingBase): + """Orthogonal Sequential Floating search (Section 3.2 of the OFSA paper). + + Iteratively adds regressors using ERR and backtracks to drop weak terms. + Keeps the same constructor surface as other SysIdentPy MSS classes. + """ + + def run_mss_algorithm( + self, psi: np.ndarray, y: np.ndarray, process_term_number: int + ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Run OSF and return (err_vals, piv, psi_selected, target). + + Parameters + ---------- + psi : np.ndarray + Candidate regressor matrix with shape (n_samples, n_terms). + y : np.ndarray + Output signal aligned with ``psi``. + process_term_number : int + Maximum number of terms to select. + + Returns + ------- + Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray] + ``(err_vals, piv, psi_selected, target)`` matching the MSS API. + """ + target = self._default_estimation_target(y) + squared_y = self._compute_squared_y(target) + subset = self._floating_forward_search( + psi, target, process_term_number, squared_y + ) + + _, err_vals = self._subset_err(psi, target, subset, squared_y) + piv = np.array(subset, dtype=int) + psi_selected = psi[:, piv] if len(piv) else psi[:, :0] + return err_vals, piv, psi_selected, target + + +class OIF(OSF): + """Orthogonal Improved Floating search (Section 3.3 of the OFSA paper). + + Extends OSF with a swap step that replaces weak terms with better ones + when the ERR score increases. + """ + + def run_mss_algorithm( + self, psi: np.ndarray, y: np.ndarray, process_term_number: int + ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Run OIF and return (err_vals, piv, psi_selected, target). + + Parameters + ---------- + psi : np.ndarray + Candidate regressor matrix with shape (n_samples, n_terms). + y : np.ndarray + Output signal aligned with ``psi``. + process_term_number : int + Maximum number of terms to select. + + Returns + ------- + Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray] + ``(err_vals, piv, psi_selected, target)`` matching the MSS API. + """ + target = self._default_estimation_target(y) + squared_y = self._compute_squared_y(target) + subset = self._floating_forward_search( + psi, + target, + process_term_number, + squared_y, + swap_callback=self._swap_step, + ) + + _, err_vals = self._subset_err(psi, target, subset, squared_y) + piv = np.array(subset, dtype=int) + psi_selected = psi[:, piv] if len(piv) else psi[:, :0] + return err_vals, piv, psi_selected, target + + def _swap_step( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + current_score: float, + best_by_size: Dict[int, Tuple[float, Tuple[int, ...]]], + all_indices: List[int], + squared_y: float, + ) -> Tuple[List[int], float, Optional[int]]: + best_subset = subset.copy() + best_score = current_score + best_added: Optional[int] = None + + for idx in subset: + reduced = [t for t in subset if t != idx] + available = [i for i in all_indices if i not in reduced] + ms_idx, _ = self._best_addition(psi, target, reduced, available, squared_y) + if ms_idx is None or ms_idx in reduced: + continue + + candidate_subset = reduced + [ms_idx] + candidate_score, _ = self._subset_err( + psi, target, candidate_subset, squared_y + ) + + if candidate_score > best_score: + best_score = candidate_score + best_subset = candidate_subset + best_added = ms_idx + + if best_score > current_score: + best_by_size[len(best_subset)] = (best_score, tuple(best_subset)) + return best_subset, best_score, best_added + + return subset, current_score, None + + +class OOS(_OrthogonalFloatingBase): + """Orthogonal Oscillating Search (paper Section 3.4). + + This class is named ``OOS`` (Orthogonal Oscillating Search) to avoid + the caret notation ``O^2S`` in code. It corresponds to the method + described as O2S in the paper. + """ + + def __init__( + self, + *, + ylag: Union[int, List[int]] = 2, + xlag: Union[int, List[int]] = 2, + elag: Union[int, List[int]] = 2, + order_selection: bool = True, + info_criteria: str = "aic", + n_terms: Optional[int] = None, + n_info_values: int = 15, + estimator: Estimators = RecursiveLeastSquares(), + basis_function: Union[Polynomial, Fourier] = Polynomial(), + model_type: str = "NARMAX", + eps: float = np.finfo(np.float64).eps, + alpha: float = 0.0, + err_tol: Optional[float] = None, + apress_lambda: float = 1.0, + max_search_depth: Optional[int] = None, + ): + self.max_search_depth = max_search_depth + super().__init__( + ylag=ylag, + xlag=xlag, + elag=elag, + order_selection=order_selection, + info_criteria=info_criteria, + n_terms=n_terms, + n_info_values=n_info_values, + estimator=estimator, + basis_function=basis_function, + model_type=model_type, + eps=eps, + alpha=alpha, + err_tol=err_tol, + apress_lambda=apress_lambda, + ) + self._validate_oos_params() + + def _validate_oos_params(self) -> None: + if self.max_search_depth is None: + return + if not isinstance(self.max_search_depth, int) or self.max_search_depth < 1: + msg = ( + "max_search_depth must be a positive int or None; " + f"got {self.max_search_depth!r} " + f"(type={type(self.max_search_depth).__name__})" + ) + raise ValueError(msg) + + def _resolve_search_depth(self, process_term_number: int, total_terms: int) -> int: + """Choose search depth per OFSA guideline (25% of the smaller side).""" + if self.max_search_depth is not None: + return self.max_search_depth + + smaller_side = max( + 1, min(process_term_number, max(0, total_terms - process_term_number)) + ) + depth = int(np.floor(0.25 * smaller_side)) + return max(1, depth) + + def _down_swing( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + current_score: float, + depth: int, + squared_y: float, + all_indices: List[int], + all_indices_set: set, + ) -> Tuple[List[int], float, bool, bool]: + """Perform a down swing (remove then add) returning updated state.""" + if len(subset) < depth: + return subset, current_score, False, True + + working_subset = subset.copy() + to_remove = self._select_least_significant_subset( + psi, target, working_subset, depth, squared_y + ) + + if len(to_remove) != depth: + return subset, current_score, False, True + + working_subset = [t for t in working_subset if t not in to_remove] + available_set = all_indices_set.difference(working_subset) + if len(available_set) < depth: + return subset, current_score, False, True + + available_down = [idx for idx in all_indices if idx in available_set] + ms_terms = self._select_most_significant_subset( + psi, + target, + working_subset, + available_down, + depth, + squared_y, + ) + + if len(ms_terms) != depth: + return subset, current_score, False, True + + working_subset = working_subset + ms_terms + down_score, _ = self._subset_err(psi, target, working_subset, squared_y) + + if down_score > current_score: + return working_subset, down_score, True, False + + return subset, current_score, False, True + + def _up_swing( + self, + psi: np.ndarray, + target: np.ndarray, + subset: List[int], + current_score: float, + depth: int, + squared_y: float, + total_terms: int, + all_indices: List[int], + all_indices_set: set, + ) -> Tuple[List[int], float, bool, bool]: + """Perform an up swing (add then remove) returning updated state.""" + if len(subset) + depth > total_terms: + return subset, current_score, False, True + + available_set = all_indices_set.difference(subset) + if len(available_set) < depth: + return subset, current_score, False, True + + available_up = [idx for idx in all_indices if idx in available_set] + ms_terms_up = self._select_most_significant_subset( + psi, + target, + subset, + available_up, + depth, + squared_y, + ) + + if len(ms_terms_up) != depth: + return subset, current_score, False, True + + working_subset = subset + ms_terms_up + to_remove_up = self._select_least_significant_subset( + psi, target, working_subset, depth, squared_y + ) + + if len(to_remove_up) != depth: + return subset, current_score, False, True + + working_subset = [t for t in working_subset if t not in to_remove_up] + up_score, _ = self._subset_err(psi, target, working_subset, squared_y) + + if up_score > current_score: + return working_subset, up_score, True, False + + return subset, current_score, False, True + + def run_mss_algorithm( + self, psi: np.ndarray, y: np.ndarray, process_term_number: int + ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Run oscillating search and return (err_vals, piv, psi_selected, target). + + Parameters + ---------- + psi : np.ndarray + Candidate regressor matrix with shape (n_samples, n_terms). + y : np.ndarray + Output signal aligned with ``psi``. + process_term_number : int + Maximum number of terms to select. + + Returns + ------- + Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray] + ``(err_vals, piv, psi_selected, target)`` matching the MSS API. + """ + target = self._default_estimation_target(y) + squared_y = self._compute_squared_y(target) + total_terms = psi.shape[1] + all_indices = list(range(total_terms)) + all_indices_set = set(all_indices) + + # Resolve depth once we know xi and n, as suggested by the paper. + max_depth = self._resolve_search_depth(process_term_number, total_terms) + + # Initial model: greedy inclusion of ``process_term_number`` terms. + subset: List[int] = [] + available_set = all_indices_set.copy() + for _ in range(min(process_term_number, total_terms)): + available_sorted = [idx for idx in all_indices if idx in available_set] + ms_idx, _ = self._best_addition( + psi, target, subset, available_sorted, squared_y + ) + if ms_idx is None: + break + subset.append(ms_idx) + available_set.discard(ms_idx) + + current_score, _ = self._subset_err(psi, target, subset, squared_y) + + depth = 1 + failed_down = False + failed_up = False + + while depth <= max_depth and len(subset) > 0: + improvement = False + + subset, current_score, down_improved, failed_down = self._down_swing( + psi, + target, + subset, + current_score, + depth, + squared_y, + all_indices, + all_indices_set, + ) + improvement = improvement or down_improved + + if failed_down and failed_up: + depth += 1 + failed_down = False + failed_up = False + if depth > max_depth: + break + + subset, current_score, up_improved, failed_up = self._up_swing( + psi, + target, + subset, + current_score, + depth, + squared_y, + total_terms, + all_indices, + all_indices_set, + ) + improvement = improvement or up_improved + + if improvement: + depth = 1 + failed_down = False + failed_up = False + elif failed_down and failed_up: + depth += 1 + failed_down = False + failed_up = False + + _, err_vals = self._subset_err(psi, target, subset, squared_y) + piv = np.array(subset, dtype=int) + psi_selected = psi[:, piv] if len(piv) else psi[:, :0] + return err_vals, piv, psi_selected, target + + +# Alias matching the notation O²S used in the paper. +O2S = OOS + +__all__ = ["O2S", "OIF", "OOS", "OSF"] diff --git a/sysidentpy/model_structure_selection/robust_model_structure_selection.py b/sysidentpy/model_structure_selection/robust_model_structure_selection.py new file mode 100644 index 00000000..c54d2404 --- /dev/null +++ b/sysidentpy/model_structure_selection/robust_model_structure_selection.py @@ -0,0 +1,1062 @@ +"""Robust Model Structure Selection (RMSS). + +This module implements the RMSS algorithm described in the paper attached in +``RMSS.md``. The method selects model terms using an overall mean absolute +error (OMAE) criterion computed over resampled sub-datasets (leave-one-out by +default). It follows the same interface conventions as other model structure +selection classes (e.g., :class:`~sysidentpy.model_structure_selection.FROLS`), +reusing estimators, basis functions and prediction utilities already provided +by SysIdentPy. + +Key points +---------- +- Supports all parameter estimators and basis functions available to OFR-based + classes. +- Uses leave-one-out resampling to score candidate regressors with OMAE (or + alternative error measures inspired by the paper). +- Keeps output attributes (``final_model``, ``theta``, ``pivv``) compatible + with equation formatter utilities. + +References +---------- +- Gu, Y., & Wei, H.-L. "A Robust Model Structure Selection Method for Small + Sample Size and Multiple Datasets Problems." +""" + +from __future__ import annotations + +import copy +import warnings +from itertools import repeat +from typing import List, Literal, Optional, Tuple, Union + +import numpy as np + +from ..basis_function import Fourier, Polynomial +from ..parameter_estimation.estimators import RecursiveLeastSquares +from ..utils.check_arrays import num_features +from ..utils.information_matrix import build_lagged_matrix +from .ofr_base import Estimators, OFRBase, apress, get_min_info_value + +# Type aliases for RMSS-specific parameters +ResamplingStrategy = Literal["loo", "bootstrap"] +ErrorMeasure = Literal["mae", "mse", "phi3", "rmse_ratio"] +ModelType = Literal["NARMAX", "NAR", "NFIR"] + +# Valid parameter sets for validation +_VALID_RESAMPLING_STRATEGIES: frozenset[str] = frozenset({"loo", "bootstrap"}) +_VALID_ERROR_MEASURES: frozenset[str] = frozenset({"mae", "mse", "phi3", "rmse_ratio"}) +_DEPRECATED_ERROR_MEASURES: dict[str, str] = {"smape": "phi3"} + + +class RMSS(OFRBase): + r"""Robust Model Structure Selection. + + The RMSS algorithm ranks candidate regressors using an overall error metric + computed over resampled sub-datasets (leave-one-out, as suggested in the + paper for small-sample problems). At each step it selects the regressor with + the smallest aggregated error, orthogonalizes the remaining candidates, and + repeats until the desired number of terms is reached. + + Parameters + ---------- + ylag : int or list, default=2 + Maximum output lag. + xlag : int or list, default=2 + Maximum input lag. + elag : int or list, default=2 + Maximum residue lag (used when estimator requires it). + order_selection : bool, default=True + Whether to use information criteria to choose model size. + info_criteria : {'aic','aicc','bic','fpe','lilc','apress'}, default='apress' + Information criterion when ``order_selection`` is enabled. + n_terms : int, optional + Number of terms to select. Required when ``order_selection`` is False. + n_info_values : int, default=15 + Maximum number of terms evaluated by the information criterion. + estimator : Estimators, optional + Parameter estimator. Defaults to ``RecursiveLeastSquares()`` when not provided. + basis_function : Polynomial or Fourier, default=Polynomial() + Basis function generator. + model_type : {'NARMAX','NAR','NFIR'}, default='NARMAX' + Model type. + eps : float, default=np.finfo(np.float64).eps + Numerical stability constant. + alpha : float, default=0 + Regularization parameter (used when estimator is RidgeRegression). + err_tol : float, optional + Cumulative ERR/OMAE threshold to stop early. + resampling : {'loo','bootstrap'}, default='loo' + Resampling strategy. ``'loo'`` performs leave-one-out as proposed in the + paper. ``'bootstrap'`` draws ``n_subsets`` bootstrap samples (with + replacement) of size ``subset_size``. + error_measure : {'mae','mse','phi3','rmse_ratio'}, default='mae' + Aggregated error used to rank candidates. ``'mae'`` matches the OMAE in + the paper. ``'phi3'`` matches the normalized MAE ratio of eq. (19). + ``'smape'`` is kept as a backward-compatible alias for ``'phi3'``. + average_theta : bool, default=True + If True, estimate parameters on every sub-dataset and average the + resulting coefficients. If False, uses the estimator once on the full + data (aligned with OFRBase behaviour). + apress_lambda : float, default=1.0 + Lambda factor used in APRESS (eq. 9). Only used when + ``info_criteria='apress'``. + n_subsets : int, optional + Number of subsets to draw when ``resampling='bootstrap'``. Defaults to + ``n_samples`` (one subset per leave-one-out equivalent) when not set. + subset_size : int, optional + Subset size when ``resampling='bootstrap'``. Defaults to ``n_samples - 1`` + to mimic the sensitivity study in the paper. + random_state : int, optional + Seed for bootstrap resampling. + multi_resampling : bool, default=False + When multiple datasets are provided, apply the chosen resampling + strategy to each dataset before scoring candidates (keeps parity with + the small-sample discussion in the RMSS paper). + + Notes + ----- + - The implementation follows the same prediction and formatting interfaces + as other SysIdentPy MSS classes to remain drop-in compatible with + utilities such as ``equation_formatter``. + - Setting ``average_theta=False`` skips the per-sub-dataset averaging in + eq. (28) of the paper; keep it ``True`` for the canonical RMSS behaviour. + """ + + def __init__( + self, + *, + ylag: Union[int, List[int]] = 2, + xlag: Union[int, List[int]] = 2, + elag: Union[int, List[int]] = 2, + order_selection: bool = True, + info_criteria: str = "apress", + n_terms: Optional[int] = None, + n_info_values: int = 15, + estimator: Optional[Estimators] = None, + basis_function: Union[Polynomial, Fourier] = Polynomial(), + model_type: ModelType = "NARMAX", + eps: float = np.finfo(np.float64).eps, + alpha: float = 0.0, + err_tol: Optional[float] = None, + resampling: ResamplingStrategy = "loo", + error_measure: ErrorMeasure = "mae", + average_theta: bool = True, + apress_lambda: float = 1.0, + n_subsets: Optional[int] = None, + subset_size: Optional[int] = None, + random_state: Optional[int] = None, + multi_resampling: bool = False, + ): + self.resampling = resampling + self.error_measure = error_measure + self.average_theta = average_theta + self.n_subsets = n_subsets + self.subset_size = subset_size + self.random_state = random_state + self.multi_resampling = multi_resampling + self.omae_history: List[np.ndarray] = [] + self._reg_matrices: List[np.ndarray] = [] + self._targets: List[np.ndarray] = [] + + estimator = RecursiveLeastSquares() if estimator is None else estimator + + super().__init__( + ylag=ylag, + xlag=xlag, + elag=elag, + order_selection=order_selection, + info_criteria=info_criteria, + n_terms=n_terms, + n_info_values=n_info_values, + estimator=estimator, + basis_function=basis_function, + model_type=model_type, + eps=eps, + alpha=alpha, + err_tol=err_tol, + apress_lambda=apress_lambda, + ) + + self._validate_rmss_params() + + def _validate_rmss_params(self) -> None: + """Validate RMSS-specific parameters. + + Raises + ------ + ValueError + If resampling strategy or error measure is invalid, or if + bootstrap parameters are out of range. + TypeError + If boolean or integer parameters have wrong types. + """ + self._validate_resampling_strategy() + self._validate_error_measure() + self._validate_boolean_params() + self._validate_bootstrap_params() + + def _validate_resampling_strategy(self) -> None: + """Validate resampling strategy parameter.""" + if self.resampling not in _VALID_RESAMPLING_STRATEGIES: + valid_options = ", ".join(sorted(_VALID_RESAMPLING_STRATEGIES)) + raise ValueError( + f"Unsupported resampling strategy: '{self.resampling}'. " + f"Valid options are: {valid_options}." + ) + + def _validate_error_measure(self) -> None: + """Validate error measure parameter, handling deprecated aliases.""" + if self.error_measure in _DEPRECATED_ERROR_MEASURES: + new_measure = _DEPRECATED_ERROR_MEASURES[self.error_measure] + warnings.warn( + f"error_measure='{self.error_measure}' is deprecated; " + f"use '{new_measure}' instead.", + DeprecationWarning, + stacklevel=3, + ) + self.error_measure = new_measure + + if self.error_measure not in _VALID_ERROR_MEASURES: + valid_options = ", ".join(sorted(_VALID_ERROR_MEASURES)) + raise ValueError( + f"error_measure must be one of: {valid_options}. " + f"Got '{self.error_measure}'." + ) + + def _validate_boolean_params(self) -> None: + """Validate boolean parameters.""" + bool_params = { + "average_theta": self.average_theta, + "multi_resampling": self.multi_resampling, + } + for name, value in bool_params.items(): + if not isinstance(value, bool): + raise TypeError( + f"{name} must be a boolean value. Got {type(value).__name__}." + ) + + def _validate_bootstrap_params(self) -> None: + """Validate bootstrap-specific parameters.""" + if self.resampling != "bootstrap": + return + + if self.n_subsets is not None and self.n_subsets < 1: + raise ValueError( + "n_subsets must be a positive integer when provided. " + f"Got {self.n_subsets}." + ) + if self.subset_size is not None and self.subset_size < 1: + raise ValueError( + "subset_size must be a positive integer when provided. " + f"Got {self.subset_size}." + ) + if self.random_state is not None and not isinstance(self.random_state, int): + raise TypeError( + "random_state must be an integer when provided. " + f"Got {type(self.random_state).__name__}." + ) + + def _create_sub_datasets( + self, reg_matrix: np.ndarray, target: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: + """Generate leave-one-out or bootstrap views for a single dataset.""" + if reg_matrix.shape[0] < 2: + raise ValueError("Need at least two samples to perform RMSS resampling.") + + if self.resampling == "loo": + n_samples, n_features = reg_matrix.shape + psi_views = np.empty( + (n_samples, n_samples - 1, n_features), dtype=np.float64 + ) + y_views = np.empty((n_samples, n_samples - 1), dtype=np.float64) + + for idx in range(n_samples): + mask = np.ones(n_samples, dtype=bool) + mask[idx] = False + psi_views[idx] = reg_matrix[mask] + y_views[idx] = target[mask, 0] + + return psi_views, y_views + + if self.resampling == "bootstrap": + rng = np.random.default_rng(self.random_state) + n_samples, n_features = reg_matrix.shape + k_subsets = self.n_subsets or n_samples + subset_size = self.subset_size or max(1, n_samples - 1) + + psi_views = np.empty((k_subsets, subset_size, n_features), dtype=np.float64) + y_views = np.empty((k_subsets, subset_size), dtype=np.float64) + + for k in range(k_subsets): + idx = rng.choice(n_samples, size=subset_size, replace=True) + psi_views[k] = reg_matrix[idx] + y_views[k] = target[idx, 0] + + return psi_views, y_views + + raise ValueError(f"Unsupported resampling strategy: {self.resampling}") + + def _compute_error_metric( + self, + errors: np.ndarray, + y_ref: np.ndarray, + preds: np.ndarray, + axis: int, + ) -> np.ndarray: + """Compute the selected error metric along the specified axis. + + Parameters + ---------- + errors : np.ndarray + Prediction errors (y - y_hat). + y_ref : np.ndarray + Reference output values (ground truth). + preds : np.ndarray + Model predictions. + axis : int + Axis along which to compute the metric. + + Returns + ------- + np.ndarray + Computed error metric values. + """ + if self.error_measure == "mae": + return np.abs(errors).mean(axis=axis) + + if self.error_measure == "mse": + return np.square(errors).mean(axis=axis) + + if self.error_measure == "phi3": + numerator = np.abs(errors).sum(axis=axis) + denom = np.abs(y_ref).sum(axis=axis) + np.abs(preds).sum(axis=axis) + denom = np.where(np.abs(denom) < self.eps, self.eps, denom) + return numerator / denom + + # rmse_ratio + rmse = np.sqrt(np.square(errors).mean(axis=axis)) + y_rmse = np.sqrt(np.square(y_ref).mean(axis=axis)) + pred_rmse = np.sqrt(np.square(preds).mean(axis=axis)) + denom = y_rmse + pred_rmse + denom = np.where(np.abs(denom) < self.eps, self.eps, denom) + return rmse / denom + + def _overall_error(self, psi_views: np.ndarray, y_views: np.ndarray) -> np.ndarray: + """Compute aggregated error for each candidate across sub-datasets. + + Parameters + ---------- + psi_views : np.ndarray + Resampled regressor views with shape (K, N', M) where K is the + number of sub-datasets, N' is the subset size, and M is the + number of candidate regressors. + y_views : np.ndarray + Resampled target views with shape (K, N'). + + Returns + ------- + np.ndarray + Overall error for each candidate regressor (shape: M,). + """ + numerators = np.einsum("knm,kn->km", psi_views, y_views) + denominators = np.einsum("knm,knm->km", psi_views, psi_views) + denominators = np.where(np.abs(denominators) < self.eps, self.eps, denominators) + alphas = numerators / denominators + + preds = psi_views * alphas[:, None, :] + errors = y_views[:, :, None] - preds + + # Expand y_views for metric computation: (K, N') -> (K, N', 1) + y_expanded = y_views[:, :, None] + metric = self._compute_error_metric(errors, y_expanded, preds, axis=1) + + return metric.mean(axis=0) + + def _overall_error_multi( + self, psi_list: List[np.ndarray], y_list: List[np.ndarray] + ) -> np.ndarray: + """Compute aggregated error across multiple datasets. + + Parameters + ---------- + psi_list : List[np.ndarray] + List of regressor matrices or resampled views per dataset. + y_list : List[np.ndarray] + List of target arrays or resampled target views per dataset. + + Returns + ------- + np.ndarray + Mean error across all datasets for each candidate. + """ + per_dataset = [] + for psi_k, y_k in zip(psi_list, y_list, strict=True): + if psi_k.ndim == 3: + # Resampled views (K_k, N', M) - delegate to _overall_error + metric = self._overall_error(psi_k, y_k) + else: + metric = self._compute_2d_error(psi_k, y_k) + per_dataset.append(metric) + + return np.mean(np.stack(per_dataset, axis=0), axis=0) + + def _compute_2d_error(self, psi: np.ndarray, y: np.ndarray) -> np.ndarray: + """Compute error metric for a 2D regressor matrix. + + Parameters + ---------- + psi : np.ndarray + Regressor matrix with shape (N, M). + y : np.ndarray + Target array with shape (N,) or (N, 1). + + Returns + ------- + np.ndarray + Error metric for each candidate (shape: M,). + """ + y_vec = y.reshape(-1) + numerators = psi.T @ y_vec + denominators = np.einsum("ij,ij->j", psi, psi) + denominators = np.where(np.abs(denominators) < self.eps, self.eps, denominators) + alphas = numerators / denominators + + preds = psi * alphas[None, :] + errors = y_vec[:, None] - preds + + return self._compute_error_metric(errors, y_vec[:, None], preds, axis=0) + + def _orthogonalize_remaining_views( + self, psi_views: np.ndarray, selected_q: np.ndarray + ) -> np.ndarray: + """Orthogonalize remaining candidates against the selected vector. + + Applies Gram-Schmidt orthogonalization to remove the component of + each candidate regressor that lies along the selected vector. + + Parameters + ---------- + psi_views : np.ndarray + Resampled regressor views with shape (K, N', M). + selected_q : np.ndarray + Selected regressor vector with shape (K, N'). + + Returns + ------- + np.ndarray + Orthogonalized regressor views with same shape as input. + """ + denom = np.einsum("kn,kn->k", selected_q, selected_q) + denom = np.where(np.abs(denom) < self.eps, self.eps, denom) + + projection = np.einsum("kn,knm->km", selected_q, psi_views) + coeff = projection / denom[:, None] + return psi_views - selected_q[:, :, None] * coeff[:, None, :] + + # Alias for backward compatibility + _orthogonalize_remaining = _orthogonalize_remaining_views + + def _orthogonalize_matrix( + self, psi_matrix: np.ndarray, selected_q: np.ndarray + ) -> np.ndarray: + """Orthogonalize a 2D regressor matrix against the selected vector. + + Parameters + ---------- + psi_matrix : np.ndarray + Regressor matrix with shape (N, M). + selected_q : np.ndarray + Selected regressor vector with shape (N,). + + Returns + ------- + np.ndarray + Orthogonalized regressor matrix with same shape as input. + """ + denom = np.dot(selected_q, selected_q) + denom = self.eps if np.abs(denom) < self.eps else denom + projection = psi_matrix.T @ selected_q + coeff = projection / denom + return psi_matrix - np.outer(selected_q, coeff) + + def _orthogonalize_remaining_multi( + self, psi_list: List[np.ndarray], selected_q_list: List[np.ndarray] + ) -> List[np.ndarray]: + """Orthogonalize remaining candidates for multiple 2D datasets. + + Parameters + ---------- + psi_list : List[np.ndarray] + List of regressor matrices, each with shape (N_k, M). + selected_q_list : List[np.ndarray] + List of selected regressor vectors, each with shape (N_k,). + + Returns + ------- + List[np.ndarray] + List of orthogonalized regressor matrices. + """ + return [ + self._orthogonalize_matrix(psi_k, q_k) + for psi_k, q_k in zip(psi_list, selected_q_list, strict=True) + ] + + def _prepare_datasets( + self, + X: Optional[Union[np.ndarray, List[Optional[np.ndarray]]]], + y: Union[np.ndarray, List[np.ndarray]], + ) -> Tuple[List[np.ndarray], List[np.ndarray]]: + """Build regressor matrices and targets for single or multiple datasets. + + Parameters + ---------- + X : np.ndarray, List[np.ndarray], or None + Input data. Can be a single array, a list of arrays for multiple + datasets, or None for NAR models. + y : np.ndarray or List[np.ndarray] + Output data. Can be a single array or a list for multiple datasets. + + Returns + ------- + Tuple[List[np.ndarray], List[np.ndarray]] + A tuple containing: + - reg_matrices: List of regressor matrices. + - targets: List of target arrays. + + Raises + ------ + ValueError + If X and y lists have different lengths, or if datasets have + inconsistent input dimensions or regressor spaces. + """ + if isinstance(y, (list, tuple)): + y_list = list(y) + if X is None or isinstance(X, np.ndarray): + X_list = list(repeat(X, len(y_list))) + else: + X_list = list(X) + if len(X_list) != len(y_list): + raise ValueError("X and y lists must have the same length.") + + reg_matrices: List[np.ndarray] = [] + targets: List[np.ndarray] = [] + self.n_inputs = None + + for Xi, yi in zip(X_list, y_list, strict=True): + lagged_data = build_lagged_matrix( + Xi, yi, self.xlag, self.ylag, self.model_type + ) + reg_matrix = self.basis_function.fit( + lagged_data, + self.max_lag, + self.ylag, + self.xlag, + self.model_type, + predefined_regressors=None, + ) + + target = self._default_estimation_target(yi) + reg_matrices.append(reg_matrix) + targets.append(target) + + if self.n_inputs is None: + self.n_inputs = num_features(Xi) if Xi is not None else 1 + elif self.n_inputs != (num_features(Xi) if Xi is not None else 1): + raise ValueError( + "All datasets must share the same input dimension." + ) + + n_features = {rm.shape[1] for rm in reg_matrices} + if len(n_features) != 1: + raise ValueError("All datasets must produce the same regressor space.") + + return reg_matrices, targets + + # Single dataset path + lagged_data = build_lagged_matrix(X, y, self.xlag, self.ylag, self.model_type) + reg_matrix = self.basis_function.fit( + lagged_data, + self.max_lag, + self.ylag, + self.xlag, + self.model_type, + predefined_regressors=None, + ) + + if X is not None: + self.n_inputs = num_features(X) + else: + self.n_inputs = 1 + + target = self._default_estimation_target(y) + return [reg_matrix], [target] + + def run_mss_algorithm( + self, + psi: Union[np.ndarray, List[np.ndarray]], + y: Union[np.ndarray, List[np.ndarray]], + process_term_number: int, + ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Perform RMSS selection over single or multiple datasets. + + This method implements the core RMSS algorithm, selecting regressors + one at a time based on their aggregated error across resampled + sub-datasets. + + Parameters + ---------- + psi : np.ndarray or List[np.ndarray] + Regressor matrix or list of matrices for multiple datasets. + y : np.ndarray or List[np.ndarray] + Target array or list of arrays for multiple datasets. + process_term_number : int + Maximum number of terms to select. + + Returns + ------- + Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray] + - err: Array of error values for each selected term. + - piv: Array of selected regressor indices. + - psi_selected: Regressor matrix with only selected columns. + - target: Target array used for estimation. + """ + self.omae_history = [] + + reg_matrices, targets = self._normalize_inputs(psi, y) + + if len(reg_matrices) == 1: + return self._run_single_dataset( + reg_matrices[0], targets[0], process_term_number + ) + + return self._run_multi_dataset(reg_matrices, targets, process_term_number) + + def _normalize_inputs( + self, + psi: Union[np.ndarray, List[np.ndarray]], + y: Union[np.ndarray, List[np.ndarray]], + ) -> Tuple[List[np.ndarray], List[np.ndarray]]: + """Normalize inputs to lists for consistent processing.""" + if not isinstance(psi, list): + return [psi], [y] + targets = y if isinstance(y, list) else [y] + return psi, targets + + def _run_single_dataset( + self, + psi: np.ndarray, + target: np.ndarray, + process_term_number: int, + ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Run RMSS selection for a single dataset.""" + psi_views, y_views = self._create_sub_datasets(psi, target) + + available_indices = np.arange(psi.shape[1]) + selected_indices: List[int] = [] + err_trace: List[float] = [] + + current_views = psi_views + max_terms = min(process_term_number, psi.shape[1]) + + for _ in range(max_terms): + omae = self._overall_error(current_views, y_views) + self.omae_history.append(omae) + + best_local_idx = int(np.argmin(omae)) + selected_indices.append(int(available_indices[best_local_idx])) + err_trace.append(float(omae[best_local_idx])) + + if self._should_stop_selection(err_trace): + break + + selected_q = current_views[:, :, best_local_idx] + available_indices = np.delete(available_indices, best_local_idx) + current_views = np.delete(current_views, best_local_idx, axis=2) + + if current_views.shape[2] == 0: + break + + current_views = self._orthogonalize_remaining(current_views, selected_q) + + return self._build_result(selected_indices, err_trace, psi, target) + + def _run_multi_dataset( + self, + reg_matrices: List[np.ndarray], + targets: List[np.ndarray], + process_term_number: int, + ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Run RMSS selection for multiple datasets.""" + psi_list, target_list = self._prepare_multi_dataset_views(reg_matrices, targets) + + available_indices = np.arange(psi_list[0].shape[-1]) + selected_indices: List[int] = [] + err_trace: List[float] = [] + + current_views = psi_list + max_terms = min(process_term_number, psi_list[0].shape[-1]) + + for _ in range(max_terms): + omae = self._overall_error_multi(current_views, target_list) + self.omae_history.append(omae) + + best_local_idx = int(np.argmin(omae)) + selected_indices.append(int(available_indices[best_local_idx])) + err_trace.append(float(omae[best_local_idx])) + + if self._should_stop_selection(err_trace): + break + + updated_views, selected_q_list = self._extract_and_remove_selected( + current_views, best_local_idx + ) + available_indices = np.delete(available_indices, best_local_idx) + + if updated_views[0].shape[-1] == 0: + break + + current_views = self._orthogonalize_multi_views( + updated_views, selected_q_list + ) + + return self._build_result( + selected_indices, err_trace, reg_matrices[0], targets[0] + ) + + def _should_stop_selection(self, err_trace: List[float]) -> bool: + """Check if selection should stop based on error tolerance.""" + return self.err_tol is not None and np.sum(err_trace) >= self.err_tol + + def _prepare_multi_dataset_views( + self, + reg_matrices: List[np.ndarray], + targets: List[np.ndarray], + ) -> Tuple[List[np.ndarray], List[np.ndarray]]: + """Prepare views for multi-dataset processing.""" + psi_list: List[np.ndarray] = [] + target_list: List[np.ndarray] = [] + + for rm, tgt in zip(reg_matrices, targets, strict=True): + if self.multi_resampling: + views, yv = self._create_sub_datasets(rm, tgt) + psi_list.append(views) + target_list.append(yv) + else: + psi_list.append(rm.copy()) + target_list.append(tgt) + + return psi_list, target_list + + def _extract_and_remove_selected( + self, + views: List[np.ndarray], + best_idx: int, + ) -> Tuple[List[np.ndarray], List[np.ndarray]]: + """Extract selected regressors and remove them from views.""" + selected_q_list: List[np.ndarray] = [] + updated_views: List[np.ndarray] = [] + + for view in views: + if view.ndim == 3: + selected_q_list.append(view[:, :, best_idx]) + updated_views.append(np.delete(view, best_idx, axis=2)) + else: + selected_q_list.append(view[:, best_idx]) + updated_views.append(np.delete(view, best_idx, axis=1)) + + return updated_views, selected_q_list + + def _orthogonalize_multi_views( + self, + views: List[np.ndarray], + selected_q_list: List[np.ndarray], + ) -> List[np.ndarray]: + """Orthogonalize views against selected regressors.""" + new_views: List[np.ndarray] = [] + + for view, q in zip(views, selected_q_list, strict=True): + if view.ndim == 3: + new_views.append(self._orthogonalize_remaining_views(view, q)) + else: + new_views.append(self._orthogonalize_matrix(view, q)) + + return new_views + + def _build_result( + self, + selected_indices: List[int], + err_trace: List[float], + psi: np.ndarray, + target: np.ndarray, + ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """Build the result tuple from selection data.""" + piv = np.array(selected_indices, dtype=int) + err = np.array(err_trace, dtype=float) + psi_selected = psi[:, piv] if piv.size else psi[:, :0] + return err, piv, psi_selected, target + + def _estimate_theta( + self, + reg_matrices: List[np.ndarray], + targets: List[np.ndarray], + piv: Optional[np.ndarray] = None, + ) -> np.ndarray: + """Estimate model parameters using the selected regressors. + + For a single dataset with ``average_theta=True``, parameters are + estimated on each resampled sub-dataset and averaged (eq. 28 in the + RMSS paper). For multiple datasets, parameters are averaged across + all datasets. + + Parameters + ---------- + reg_matrices : List[np.ndarray] + List of regressor matrices. + targets : List[np.ndarray] + List of target arrays. + piv : np.ndarray, optional + Indices of selected regressors. If None, uses ``self.pivv``. + + Returns + ------- + np.ndarray + Estimated parameter vector with shape (n_terms, 1). + """ + piv = self.pivv if piv is None else piv + if piv is None or len(piv) == 0: + return np.empty((0, 1)) + + def _select_columns(mat: np.ndarray) -> np.ndarray: + return mat[:, piv] + + if len(reg_matrices) == 1: + psi = _select_columns(reg_matrices[0]) + target = targets[0] + if not self.average_theta: + warnings.warn( + "average_theta=False skips the per-subset averaging in eq.(28) " + "of the RMSS paper; use True to match the reference method.", + UserWarning, + stacklevel=2, + ) + theta = self.estimator.optimize(psi, target) + else: + psi_views, y_views = self._create_sub_datasets(psi, target) + thetas = [] + for k in range(psi_views.shape[0]): + est_copy = copy.deepcopy(self.estimator) + theta_k = est_copy.optimize(psi_views[k], y_views[k].reshape(-1, 1)) + thetas.append(theta_k.reshape(-1, 1)) + theta = np.mean(np.stack(thetas, axis=2), axis=2) + + if getattr(self.estimator, "unbiased", False) is True: + theta = self.estimator.unbiased_estimator( + psi, + target, + theta, + self.elag, + self.max_lag, + self.estimator, + self.basis_function, + self.estimator.uiter, + ) + return theta + + # Multiple datasets: average parameters across datasets (eq. 28) + if getattr(self.estimator, "unbiased", False) is True: + warnings.warn( + "Unbiased correction is not applied when fitting multiple datasets " + "with RMSS; results may differ from single-dataset unbiased fits.", + UserWarning, + stacklevel=2, + ) + thetas = [] + for reg_matrix, target in zip(reg_matrices, targets, strict=True): + psi_sel = _select_columns(reg_matrix) + est_copy = copy.deepcopy(self.estimator) + theta_k = est_copy.optimize(psi_sel, target) + thetas.append(theta_k.reshape(-1, 1)) + + theta = np.mean(np.stack(thetas, axis=2), axis=2) + return theta + + def information_criterion( + self, + x: Union[np.ndarray, List[np.ndarray]], + y: Union[np.ndarray, List[np.ndarray]], + ) -> np.ndarray: + """Compute information criteria using robust parameter estimation. + + Evaluates models of increasing complexity (1 to ``n_info_values`` + terms) and returns the information criterion value for each. + + Parameters + ---------- + x : np.ndarray or List[np.ndarray] + Regressor matrix or list of matrices. + y : np.ndarray or List[np.ndarray] + Target array or list of arrays. + + Returns + ------- + np.ndarray + Information criterion values for each model size. + """ + reg_matrices = x if isinstance(x, list) else [x] + targets = y if isinstance(y, list) else [y] + + n_info_values = self.n_info_values or reg_matrices[0].shape[1] + n_info_values = min(n_info_values, reg_matrices[0].shape[1]) + self.n_info_values = n_info_values + + output_vector = np.zeros(n_info_values) + output_vector[:] = np.nan + + for i in range(n_info_values): + n_theta = i + 1 + _, piv, _, _ = self.run_mss_algorithm(reg_matrices, targets, n_theta) + + tmp_theta = self._estimate_theta(reg_matrices, targets, piv) + + if len(reg_matrices) == 1: + psi_sel = reg_matrices[0][:, piv] + target_sel = targets[0] + tmp_yhat = np.dot(psi_sel, tmp_theta) + tmp_residual = target_sel - tmp_yhat + + if self.info_criteria == "apress": + mse = np.mean(np.square(tmp_residual)) + output_vector[i] = apress( + n_theta, target_sel.shape[0], mse, self.apress_lambda + ) + else: + e_var = np.var(tmp_residual, ddof=1) + output_vector[i] = self.info_criteria_function( + n_theta, target_sel.shape[0], e_var + ) + else: + per_dataset_vals = [] + for rm, tgt in zip(reg_matrices, targets, strict=True): + psi_sel = rm[:, piv] + yhat = np.dot(psi_sel, tmp_theta) + residual = tgt - yhat + + if self.info_criteria == "apress": + mse = np.mean(np.square(residual)) + val = apress(n_theta, tgt.shape[0], mse, self.apress_lambda) + else: + e_var = np.var(residual, ddof=1) + val = self.info_criteria_function(n_theta, tgt.shape[0], e_var) + per_dataset_vals.append(val) + + output_vector[i] = float(np.mean(per_dataset_vals)) + + if i == n_info_values - 1: + self.pivv = piv + + return output_vector + + def fit( + self, *, X: Optional[np.ndarray] = None, y: Union[np.ndarray, List[np.ndarray]] + ) -> "RMSS": + """Fit the RMSS model to the data. + + Parameters + ---------- + X : np.ndarray, optional + Input data with shape (n_samples, n_inputs). Can be None for + NAR models. + y : np.ndarray or List[np.ndarray] + Output data with shape (n_samples, 1). Can be a list for + fitting with multiple datasets. + + Returns + ------- + self : RMSS + The fitted model instance. + + Raises + ------ + ValueError + If y is None or if order_selection is False without n_terms. + """ + if y is None: + raise ValueError("y cannot be None") + + self.max_lag = self._get_max_lag() + + reg_matrices, targets = self._prepare_datasets(X, y) + self._reg_matrices = reg_matrices + self._targets = targets + + self.regressor_code = self.regressor_space(self.n_inputs) + + if self.order_selection is True: + self.info_values = self.information_criterion(reg_matrices, targets) + + if self.n_terms is None and self.order_selection is True: + if self.info_criteria == "apress": + model_length = int(np.nanargmin(self.info_values)) + 1 + else: + model_length = get_min_info_value(self.info_values) + self.n_terms = model_length + elif self.n_terms is None and self.order_selection is not True: + raise ValueError( + "If order_selection is False, you must define n_terms value." + ) + else: + model_length = self.n_terms + + mss_result = self.run_mss_algorithm(reg_matrices, targets, model_length) + self.err, self.pivv, _psi, _estimation_target = self._unpack_mss_output( + mss_result, targets[0] + ) + + model_length = min(model_length, len(self.pivv)) + self.n_terms = model_length + + tmp_piv = self.pivv[0:model_length] + repetition = len(reg_matrices[0]) + if isinstance(self.basis_function, Polynomial): + self.final_model = self.regressor_code[tmp_piv, :].copy() + else: + self.regressor_code = np.sort( + np.tile(self.regressor_code[1:, :], (repetition, 1)), + axis=0, + ) + self.final_model = self.regressor_code[tmp_piv, :].copy() + + self.theta = self._estimate_theta(self._reg_matrices, self._targets) + return self + + def predict( + self, + *, + X: Optional[np.ndarray] = None, + y: np.ndarray, + steps_ahead: Optional[int] = None, + forecast_horizon: Optional[int] = None, + ) -> np.ndarray: + """Predict using the fitted RMSS model. + + Parameters + ---------- + X : np.ndarray, optional + Input data for prediction. Can be None for NAR models. + y : np.ndarray + Output data with initial conditions for prediction. + steps_ahead : int, optional + Number of steps ahead for multi-step prediction. If None, + performs free-run simulation. + forecast_horizon : int, optional + Number of samples to forecast beyond the input data. + + Returns + ------- + np.ndarray + Predicted output values. + """ + return super().predict( + X=X, y=y, steps_ahead=steps_ahead, forecast_horizon=forecast_horizon + ) diff --git a/sysidentpy/model_structure_selection/sobolev_orthogonal_forward_regression.py b/sysidentpy/model_structure_selection/sobolev_orthogonal_forward_regression.py index ef99060f..59593ca1 100644 --- a/sysidentpy/model_structure_selection/sobolev_orthogonal_forward_regression.py +++ b/sysidentpy/model_structure_selection/sobolev_orthogonal_forward_regression.py @@ -268,6 +268,7 @@ def __init__( eps: np.float64 = np.finfo(np.float64).eps, alpha: float = 0, err_tol: Optional[float] = None, + apress_lambda: float = 1.0, sobolev_order: int = 2, test_support: int = 11, modulating_function: Union[ @@ -280,7 +281,8 @@ def __init__( self.xlag = xlag self.max_lag = self._get_max_lag() self.info_criteria = info_criteria - self.info_criteria_function = get_info_criteria(info_criteria) + self.apress_lambda = apress_lambda + self.info_criteria_function = get_info_criteria(info_criteria, apress_lambda) self.n_info_values = n_info_values self.n_terms = n_terms self.estimator = estimator diff --git a/sysidentpy/model_structure_selection/tests/test_ofr_base.py b/sysidentpy/model_structure_selection/tests/test_ofr_base.py index e3cff0ac..c4ba30e1 100644 --- a/sysidentpy/model_structure_selection/tests/test_ofr_base.py +++ b/sysidentpy/model_structure_selection/tests/test_ofr_base.py @@ -94,7 +94,10 @@ def test_ofrbase_initialization_invalid_info_criteria(): """Test initialization of OFRBase with an invalid info_criteria.""" with pytest.raises( ValueError, - match="info_criteria must be aic, bic, fpe or lilc. Got invalid_criteria", + match=( + r"info_criteria must be aic, aicc, bic, fpe, lilc or apress. " + r"Got invalid_criteria" + ), ): TestOFRBase( ylag=2, diff --git a/sysidentpy/model_structure_selection/tests/test_orthogonal_floating_search.py b/sysidentpy/model_structure_selection/tests/test_orthogonal_floating_search.py new file mode 100644 index 00000000..836e61b9 --- /dev/null +++ b/sysidentpy/model_structure_selection/tests/test_orthogonal_floating_search.py @@ -0,0 +1,862 @@ +import numpy as np +import pytest +from numpy.testing import assert_equal + +from sysidentpy.basis_function import Polynomial +from sysidentpy.model_structure_selection import OIF, OOS, OSF +from sysidentpy.parameter_estimation.estimators import LeastSquares +from sysidentpy.tests.test_narmax_base import create_test_data + +x, y, _ = create_test_data() +train_percentage = 90 +split_data = int(len(x) * (train_percentage / 100)) + +X_train = np.reshape(x[0:split_data, 0], (-1, 1)) +X_test = np.reshape(x[split_data::, 0], (-1, 1)) +y_train = np.reshape(y[0:split_data, 0], (-1, 1)) +y_test = np.reshape(y[split_data::, 0], (-1, 1)) + + +def _fit_and_predict(model_cls): + model = model_cls( + n_terms=4, + order_selection=False, + ylag=[1, 2], + xlag=2, + basis_function=Polynomial(degree=2), + estimator=LeastSquares(), + ) + model.fit(X=X_train, y=y_train) + yhat = model.predict(X=X_test, y=y_test) + assert_equal(model.final_model.shape[0], model.n_terms) + assert_equal(yhat.shape, y_test.shape) + + +def test_osf_runs_and_predicts(): + _fit_and_predict(OSF) + + +def test_oif_runs_and_predicts(): + _fit_and_predict(OIF) + + +def test_oos_runs_and_predicts(): + _fit_and_predict(OOS) + + +# --- Unit-level coverage for helper routines --- + + +def _make_base(): + model = OSF( + n_terms=3, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + psi = np.eye(3) + target = np.array([[1.0], [0.0], [0.0]]) + sqy = model._compute_squared_y(target) + return model, psi, target, sqy + + +def test_subset_err_empty_and_nonempty(): + model, psi, target, sqy = _make_base() + score_empty, err_empty = model._subset_err(psi, target, [], sqy) + assert_equal(score_empty, 0.0) + assert_equal(err_empty.shape[0], 0) + + score_full, err_full = model._subset_err(psi, target, [0, 1, 2], sqy) + assert_equal(score_full, 1.0) + assert_equal(err_full.tolist(), [1.0, 0.0, 0.0]) + + +def test_subset_err_zero_pads_when_more_terms_than_samples(): + model = OSF( + n_terms=3, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + psi = np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + target = np.array([[1.0], [0.0]]) + sqy = model._compute_squared_y(target) + score, err = model._subset_err(psi, target, [0, 1, 2], sqy) + assert_equal(err.shape[0], 3) + assert err[2] == 0.0 + assert score == pytest.approx(1.0) + + +def test_best_addition_and_removal_ties(): + model, psi, target, sqy = _make_base() + # tie on addition: target = [1,1,0] + target = np.array([[1.0], [1.0], [0.0]]) + sqy = model._compute_squared_y(target) + add_idx, _ = model._best_addition(psi, target, [], [0, 1], sqy) + assert_equal(add_idx, 0) + + # tie on removal prefers lower index + rm_idx, _ = model._best_removal(psi, target, [0, 1], sqy) + assert_equal(rm_idx, 0) + + +def test_most_and_least_significant_subsets_exhaustive(): + model, psi, target, sqy = _make_base() + target = np.array([[1.0], [0.0], [1.0]]) + sqy = model._compute_squared_y(target) + + ms = model._most_significant_terms(psi, target, [], [0, 1, 2], 2, sqy) + assert_equal(ms, [0, 2]) + + ls = model._least_significant_terms(psi, target, [0, 1, 2], 2, sqy) + assert_equal(ls, [0, 1]) + + # zero-count shortcut branches + assert_equal(model._most_significant_terms(psi, target, [], [0, 1], 0, sqy), []) + assert_equal(model._least_significant_terms(psi, target, [0, 1], 0, sqy), []) + + +def test_backtrack_removes_non_last_added(): + model, psi, target, sqy = _make_base() + subset = [0, 1, 2] + best_by_size = {2: (-np.inf, [])} + last_added = 2 + updated, score = model._backtrack( + psi, target, subset, 0.0, best_by_size, sqy, last_added + ) + assert_equal(updated, [0, 2]) + assert_equal(score, 1.0) + + +def test_select_most_significant_subset_and_least_paths(): + model, psi, target, sqy = _make_base() + psi = np.eye(4) + target = np.array([[1.0], [0.5], [0.0], [0.0]]) + sqy = model._compute_squared_y(target) + + # count=0 early exit + assert_equal( + model._select_most_significant_subset(psi, target, [], [0, 1, 2], 0, sqy), [] + ) + + # main path with backtrack + selection = model._select_most_significant_subset( + psi, target, [0, 1], [2, 3], 2, sqy + ) + assert len(selection) <= 2 + + # least-significant subset with backtracking branch + removed = model._select_least_significant_subset(psi, target, [0, 1, 2, 3], 1, sqy) + assert len(removed) >= 1 + + +def test_select_least_significant_subset_with_backtracking(): + model, psi, target, sqy = _make_base() + psi = np.eye(4) + target = np.array([[1.0], [0.0], [0.0], [0.0]]) + sqy = model._compute_squared_y(target) + removed = model._select_least_significant_subset(psi, target, [0, 1, 2, 3], 2, sqy) + assert_equal(removed, [1, 2]) + + +def test_swap_step_improves_and_nochange(): + model, psi, target, sqy = _make_base() + all_indices = [0, 1, 2] + + # improvement case + subset = [1, 2] + current_score, _ = model._subset_err(psi, target, subset, sqy) + best_by_size = {len(subset): (current_score, subset.copy())} + new_subset, new_score, added = OIF()._swap_step( + psi, target, subset, current_score, best_by_size, all_indices, sqy + ) + assert new_score > current_score + assert_equal(sorted(new_subset), [0, 2]) + assert_equal(added, 0) + + # no improvement case + subset = [0, 1] + current_score, _ = model._subset_err(psi, target, subset, sqy) + best_by_size = {len(subset): (current_score, subset.copy())} + same_subset, same_score, added_none = OIF()._swap_step( + psi, target, subset, current_score, best_by_size, all_indices, sqy + ) + assert_equal(same_subset, subset) + assert_equal(same_score, current_score) + assert added_none is None + + +def test_oos_no_improvement_increments_depth_and_validation(): + # max_search_depth validation + try: + OOS(max_search_depth=0) + assert False, "Expected ValueError" + except ValueError: + pass + + model = OOS( + n_terms=1, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + max_search_depth=1, + ) + psi = np.eye(2) + target = np.array([[0.0], [0.0], [0.0]]) # aligned so target after lag has 2 rows + err, piv, psi_sel, tgt = model.run_mss_algorithm(psi, target, 1) + assert_equal(err.shape[0], len(piv)) + assert_equal(piv.tolist(), [0]) + assert_equal(psi_sel.shape[1], 1) + + +def test_osf_handles_insufficient_available_terms(): + model = OSF( + n_terms=5, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + psi = np.ones((1, 1)) + target = np.array([[1.0], [1.0]]) # after lag alignment -> shape (1,1) + err, piv, psi_sel, tgt = model.run_mss_algorithm(psi, target, 5) + assert_equal(piv.tolist(), [0]) + + +# --- Additional coverage helpers --- + + +def test_select_most_significant_subset_breaks_on_base_removal(monkeypatch): + model, psi, target, sqy = _make_base() + + monkeypatch.setattr( + model, + "_best_addition", + lambda *args, **kwargs: (args[3][0] if args[3] else None, 0.0), + ) + monkeypatch.setattr( + model, + "_subset_err", + lambda *args, **kwargs: (0.0, np.zeros(len(args[2]))), + ) + monkeypatch.setattr(model, "_best_removal", lambda *args, **kwargs: (0, 0.0)) + + selection = model._select_most_significant_subset(psi, target, [0, 1], [2], 1, sqy) + assert_equal(selection, [2]) + + +def test_select_most_significant_subset_removal_and_stored_subset(monkeypatch): + model, psi, target, _ = _make_base() + + order = iter([0, 1, 2, 3, None]) + + def fake_best_addition(*args, **kwargs): + idx = next(order) + return (idx, 0.0) if idx is not None else (None, 0.0) + + monkeypatch.setattr(model, "_best_addition", fake_best_addition) + monkeypatch.setattr( + model, + "_subset_err", + lambda *args, **kwargs: (0.0, np.zeros(len(args[2]))), + ) + monkeypatch.setattr( + model, + "_best_removal", + lambda psi, target, subset, sqy: (subset[0] if subset else 0, 1.0), + ) + + selection = model._select_most_significant_subset( + np.zeros((1, 4)), target, [], [0, 1, 2, 3], 3, 1.0 + ) + assert len(selection) <= 3 + + +def test_select_least_significant_subset_early_exit(): + model, psi, target, sqy = _make_base() + removed = model._select_least_significant_subset(psi, target, [], 0, sqy) + assert_equal(removed, []) + + +def test_select_least_significant_subset_else_and_backtrack(monkeypatch): + model, psi, target, _ = _make_base() + base_subset = [0, 1, 2] + + class StopSearch(Exception): + pass + + removal_calls = {"count": 0} + + def fake_subset_err(*args, **kwargs): + return -np.inf, np.zeros(len(args[2])) + + def fake_best_removal(psi_arr, tgt, subset, sqy): + removal_calls["count"] += 1 + if removal_calls["count"] > 2: + raise StopSearch + return subset[0] if subset else 0, -np.inf + + monkeypatch.setattr(model, "_subset_err", fake_subset_err) + monkeypatch.setattr(model, "_best_removal", fake_best_removal) + + with pytest.raises(StopSearch): + model._select_least_significant_subset(psi, target, base_subset, 2, 1.0) + + +def test_select_least_significant_subset_uses_removed_list(monkeypatch): + model, psi, target, _ = _make_base() + base_subset = [0, 1] + + call_count = {"count": 0} + + def fake_subset_err(psi_arr, tgt, subset, sqy): + call_count["count"] += 1 + if call_count["count"] == 1: + return 0.0, np.array(subset, dtype=float) + return -1.0, np.array(subset, dtype=float) + + monkeypatch.setattr(model, "_subset_err", fake_subset_err) + monkeypatch.setattr( + model, "_best_removal", lambda psi_arr, tgt, subset, sqy: (subset[0], 0.0) + ) + + removed = model._select_least_significant_subset(psi, target, base_subset, 1, 1.0) + assert_equal(removed, [0]) + + +def test_osf_run_mss_respects_stored_subset(monkeypatch): + model, _, _, _ = _make_base() + + add_order = iter([0, None]) + + def fake_best_addition(*args, **kwargs): + idx = next(add_order, None) + return (idx, 0.0) if idx is not None else (None, 0.0) + + monkeypatch.setattr(model, "_best_addition", fake_best_addition) + monkeypatch.setattr( + model, + "_subset_err", + lambda *args, **kwargs: (0.0, np.zeros(len(args[2]))), + ) + monkeypatch.setattr( + model, + "_backtrack", + lambda psi, target, subset, current_score, best_by_size, squared_y, last_added: ( + subset[:-1], + current_score, + ), + ) + + psi = np.ones((1, 1)) + y = np.ones((1, 1)) + err, piv, psi_sel, tgt = model.run_mss_algorithm(psi, y, 2) + assert piv.size >= 0 + assert_equal(err.shape[0], psi_sel.shape[1]) + + +def test_osf_breaks_when_available_empty(monkeypatch): + model, psi, target, _ = _make_base() + + import sysidentpy.model_structure_selection.orthogonal_floating_search as ofs + + monkeypatch.setattr(ofs, "range", lambda *args, **kwargs: [], raising=False) + + err, piv, _, _ = model.run_mss_algorithm(psi[:, :1], target[:1], 1) + assert_equal(piv.tolist(), []) + assert_equal(err.shape[0], 0) + + +def test_osf_candidate_score_not_improving(monkeypatch): + model = OSF( + n_terms=2, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + + add_order = iter([0, 1, None]) + + def fake_best_addition(*args, **kwargs): + idx = next(add_order, None) + return (idx, 0.0) if idx is not None else (None, 0.0) + + monkeypatch.setattr(model, "_best_addition", fake_best_addition) + monkeypatch.setattr( + model, + "_subset_err", + lambda *args, **kwargs: (0.0, np.zeros(len(args[2]))), + ) + monkeypatch.setattr( + model, + "_backtrack", + lambda psi, target, subset, current_score, best_by_size, squared_y, last_added: ( + [], + current_score, + ), + ) + + psi = np.ones((1, 2)) + y = np.ones((1, 1)) + err, piv, _, _ = model.run_mss_algorithm(psi, y, 2) + assert piv.size >= 0 + assert_equal(err.shape[0], piv.shape[0]) + + +def test_oif_handles_none_addition_and_else_branch(monkeypatch): + model = OIF( + n_terms=2, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + + add_order = iter([0, None]) + + def fake_best_addition_oif(*args, **kwargs): + idx = next(add_order, None) + return (idx, 0.0) if idx is not None else (None, 0.0) + + monkeypatch.setattr(model, "_best_addition", fake_best_addition_oif) + monkeypatch.setattr( + model, + "_subset_err", + lambda *args, **kwargs: (0.0, np.zeros(len(args[2]))), + ) + monkeypatch.setattr( + model, + "_backtrack", + lambda psi, target, subset, current_score, best_by_size, squared_y, last_added: ( + subset[:-1], + current_score, + ), + ) + + psi = np.ones((1, 1)) + y = np.ones((1, 1)) + err, piv, psi_sel, _ = model.run_mss_algorithm(psi, y, 2) + assert piv.size >= 0 + assert_equal(psi_sel.shape[1], piv.shape[0]) + + +def test_oif_swap_step_skips_none(monkeypatch): + model, psi, target, sqy = _make_base() + oif = OIF() + monkeypatch.setattr( + oif, + "_best_addition", + lambda *args, **kwargs: (None, 0.0), + ) + subset, score, added = oif._swap_step( + psi, target, [0, 1], 0.0, {2: (0.0, [0, 1])}, [0, 1, 2], sqy + ) + assert_equal(subset, [0, 1]) + assert_equal(score, 0.0) + assert added is None + + +def test_oif_breaks_when_available_empty(monkeypatch): + model, psi, target, _ = _make_base() + + import sysidentpy.model_structure_selection.orthogonal_floating_search as ofs + + monkeypatch.setattr(ofs, "range", lambda *args, **kwargs: [], raising=False) + + err, piv, _, _ = model.run_mss_algorithm(psi[:, :1], target[:1], 1) + assert_equal(piv.tolist(), []) + assert_equal(err.shape[0], 0) + + +def test_oif_candidate_score_not_improving(monkeypatch): + model = OIF( + n_terms=2, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + + add_order = iter([0, 1, None]) + + def fake_best_addition_oif_candidate(*args, **kwargs): + idx = next(add_order, None) + return (idx, 0.0) if idx is not None else (None, 0.0) + + monkeypatch.setattr(model, "_best_addition", fake_best_addition_oif_candidate) + monkeypatch.setattr( + model, + "_subset_err", + lambda *args, **kwargs: (0.0, np.zeros(len(args[2]))), + ) + monkeypatch.setattr( + model, + "_backtrack", + lambda psi, target, subset, current_score, best_by_size, squared_y, last_added: ( + [], + current_score, + ), + ) + + psi = np.ones((1, 2)) + y = np.ones((1, 1)) + err, piv, _, _ = model.run_mss_algorithm(psi, y, 2) + assert piv.size >= 0 + assert_equal(err.shape[0], piv.shape[0]) + + +def test_select_most_significant_subset_none_addition(monkeypatch): + model, psi, target, sqy = _make_base() + monkeypatch.setattr(model, "_best_addition", lambda *args, **kwargs: (None, 0.0)) + result = model._select_most_significant_subset(psi, target, [], [0, 1], 2, sqy) + assert result == [] + + +def test_oif_handles_empty_available(monkeypatch): + model = OIF( + n_terms=1, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + psi = np.ones((1, 1)) + y = np.zeros((1, 1)) + import sysidentpy.model_structure_selection.orthogonal_floating_search as ofs + + monkeypatch.setattr(ofs, "range", lambda *args, **kwargs: [], raising=False) + + err, piv, psi_sel, _ = model.run_mss_algorithm(psi, y, 1) + assert err.size == 0 + assert piv.size == 0 + assert psi_sel.shape[1] == 0 + + +def test_oos_handles_none_greedy_addition(monkeypatch): + model = OOS( + n_terms=1, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + max_search_depth=1, + ) + + monkeypatch.setattr( + model, + "_best_addition", + lambda *args, **kwargs: (None, 0.0), + ) + + psi = np.ones((1, 1)) + y = np.ones((1, 1)) + err, piv, psi_sel, _ = model.run_mss_algorithm(psi, y, 1) + assert_equal(piv.tolist(), []) + assert_equal(err.shape[0], 0) + assert_equal(psi_sel.shape[1], 0) + + +def test_oos_down_and_up_swings_improve(monkeypatch): + model = OOS( + n_terms=2, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + max_search_depth=1, + ) + + # Score favors presence of term 2 > term 1 > others + def score_subset(*args, **kwargs): + subset = args[2] + if 2 in subset: + score = 3.0 + elif 1 in subset: + score = 2.0 + else: + score = float(len(subset)) + return score, np.zeros(len(subset)) + + add_order = iter([0, 1, 2]) + + def fake_best_addition_oos(*args, **kwargs): + idx = next(add_order, None) + return (idx, 0.0) if idx is not None else (None, 0.0) + + monkeypatch.setattr(model, "_best_addition", fake_best_addition_oos) + monkeypatch.setattr(model, "_subset_err", score_subset) + monkeypatch.setattr(model, "_least_significant_terms", lambda *args, **kwargs: []) + + def fake_most_significant_terms(psi, target, subset, available, count, sqy): + return [a for a in available if a not in subset][:count] + + monkeypatch.setattr(model, "_most_significant_terms", fake_most_significant_terms) + + psi = np.eye(3) + y = np.ones((3, 1)) + err, piv, psi_sel, _ = model.run_mss_algorithm(psi, y, 1) + assert err.size >= 0 + assert piv.size >= 0 + + +def test_subset_err_handles_zero_columns(): + model = OSF() + psi = np.zeros((0, 1)) + target = np.zeros((0, 1)) + sqy = model._compute_squared_y(target) + + score, err_vals = model._subset_err(psi, target, [0], sqy) + assert score == 0.0 + assert err_vals.size == 0 + + +def test_down_swing_insufficient_most_significant_terms(monkeypatch): + model = OOS() + psi = np.eye(1) + target = np.ones((1, 1)) + sqy = model._compute_squared_y(target) + + monkeypatch.setattr( + model, + "_select_least_significant_subset", + lambda *args, **kwargs: [0], + ) + monkeypatch.setattr( + model, + "_select_most_significant_subset", + lambda *args, **kwargs: [], + ) + + subset, score, improved, failed = model._down_swing( + psi, + target, + [0], + 0.5, + 1, + sqy, + [0], + {0}, + ) + assert subset == [0] + assert score == 0.5 + assert not improved + assert failed + + +def test_up_swing_insufficient_removal(monkeypatch): + model = OOS() + psi = np.eye(2) + target = np.ones((2, 1)) + sqy = model._compute_squared_y(target) + + monkeypatch.setattr( + model, + "_select_most_significant_subset", + lambda *args, **kwargs: [1], + ) + monkeypatch.setattr( + model, + "_select_least_significant_subset", + lambda *args, **kwargs: [], + ) + + subset, score, improved, failed = model._up_swing( + psi, + target, + [0], + 0.5, + 1, + sqy, + 2, + [0, 1], + {0, 1}, + ) + assert subset == [0] + assert score == 0.5 + assert not improved + assert failed + + +def test_oos_run_mss_increments_depth_on_two_failures(monkeypatch): + model = OOS(max_search_depth=2) + psi = np.ones((1, 1)) + y = np.ones((model.max_lag + 1, 1)) + + add_iter = iter([0, None]) + + depth_calls = [] + + def fake_best_addition(*args, **kwargs): + idx = next(add_iter, None) + return (idx, 0.0) if idx is not None else (None, 0.0) + + monkeypatch.setattr(model, "_best_addition", fake_best_addition) + monkeypatch.setattr( + model, + "_down_swing", + lambda *args, **kwargs: ( + depth_calls.append(args[4]) or args[2], + args[3], + False, + True, + ), + ) + monkeypatch.setattr( + model, + "_up_swing", + lambda *args, **kwargs: ( + depth_calls.append(args[4]) or args[2], + args[3], + False, + True, + ), + ) + + err, piv, psi_sel, _ = model.run_mss_algorithm(psi, y, 1) + assert err.size == piv.size == psi_sel.shape[1] + assert depth_calls[:2] == [1, 1] + assert depth_calls[-2:] == [2, 2] + + +def test_down_swing_depth_greater_than_subset(monkeypatch): + model = OOS() + psi = np.eye(1) + target = np.ones((1, 1)) + sqy = model._compute_squared_y(target) + + monkeypatch.setattr( + model, + "_select_least_significant_subset", + lambda *args, **kwargs: [0], + ) + monkeypatch.setattr( + model, + "_select_most_significant_subset", + lambda *args, **kwargs: [], + ) + + subset, score, improved, failed = model._down_swing( + psi, + target, + [0], + 0.5, + 2, + sqy, + [0], + {0}, + ) + assert subset == [0] + assert score == 0.5 + assert not improved + assert failed + + +def test_oos_respects_max_search_depth(monkeypatch): + model = OOS( + n_terms=2, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + max_search_depth=1, + ) + + depth_calls = [] + + def fake_down(*args, **kwargs): + depth_calls.append(args[4]) + return args[2], args[3], False, True + + def fake_up(*args, **kwargs): + depth_calls.append(args[4]) + return args[2], args[3], False, True + + monkeypatch.setattr(model, "_down_swing", fake_down) + monkeypatch.setattr(model, "_up_swing", fake_up) + + psi = np.eye(2) + y = np.ones((3, 1)) + err, piv, _, _ = model.run_mss_algorithm(psi, y, 2) + + assert err.shape[0] == piv.shape[0] + assert depth_calls and max(depth_calls) == 1 + + +def test_down_and_up_swing_keep_score_when_no_improvement(): + model = OOS( + n_terms=2, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + + psi = np.eye(2) + target = np.array([[1.0], [0.0]]) + sqy = model._compute_squared_y(target) + subset = [0, 1] + current_score, _ = model._subset_err(psi, target, subset, sqy) + all_indices = [0, 1] + all_indices_set = set(all_indices) + + updated_subset, updated_score, improved, failed = model._down_swing( + psi, + target, + subset, + current_score, + 1, + sqy, + all_indices, + all_indices_set, + ) + assert updated_subset == subset or updated_score == current_score + assert not improved + assert not failed or updated_score == current_score + + updated_subset, updated_score, improved, failed = model._up_swing( + psi, + target, + subset, + current_score, + 1, + sqy, + len(all_indices), + all_indices, + all_indices_set, + ) + assert updated_subset == subset or updated_score == current_score + assert not improved + assert not failed or updated_score == current_score + + +def test_osf_process_term_number_exceeds_total_terms(): + model = OSF( + n_terms=5, + order_selection=False, + ylag=1, + xlag=1, + basis_function=Polynomial(degree=1), + estimator=LeastSquares(), + ) + psi = np.eye(2) + y = np.ones((3, 1)) + + err, piv, psi_sel, _ = model.run_mss_algorithm(psi, y, 5) + assert piv.shape[0] <= psi.shape[1] + assert err.shape[0] == psi_sel.shape[1] diff --git a/sysidentpy/model_structure_selection/tests/test_rmss.py b/sysidentpy/model_structure_selection/tests/test_rmss.py new file mode 100644 index 00000000..663887fe --- /dev/null +++ b/sysidentpy/model_structure_selection/tests/test_rmss.py @@ -0,0 +1,442 @@ +import numpy as np +import pytest + +import sysidentpy.model_structure_selection.robust_model_structure_selection as rmss_module + +from sysidentpy.model_structure_selection import RMSS +from sysidentpy.basis_function import Polynomial +from sysidentpy.parameter_estimation.estimators import LeastSquares +from sysidentpy.tests.test_narmax_base import create_test_data + +x_full, y_full, _ = create_test_data() +x_small = x_full[:60] +y_small = y_full[:60] + +split_data = 40 +X_train = np.reshape(x_small[:split_data, 0], (-1, 1)) +X_test = np.reshape(x_small[split_data:, 0], (-1, 1)) +y_train = np.reshape(y_small[:split_data, 0], (-1, 1)) +y_test = np.reshape(y_small[split_data:, 0], (-1, 1)) + + +def test_rmss_basic_fit(): + model = RMSS( + n_terms=3, + order_selection=False, + ylag=[1, 2], + xlag=2, + estimator=LeastSquares(), + basis_function=Polynomial(degree=2), + average_theta=False, + ) + + model.fit(X=X_train, y=y_train) + + assert model.final_model.shape == (3, 2) + assert model.theta.shape[0] == 3 + assert model.pivv.shape[0] == 3 + + +def test_rmss_invalid_error_measure(): + with pytest.raises(ValueError): + RMSS(error_measure="invalid", basis_function=Polynomial(degree=2)) + + +def test_rmss_predict_shape(): + model = RMSS( + n_terms=3, + order_selection=False, + ylag=[1, 2], + xlag=2, + estimator=LeastSquares(), + basis_function=Polynomial(degree=2), + average_theta=False, + ) + + model.fit(X=X_train, y=y_train) + yhat = model.predict(X=X_test, y=y_test) + assert yhat.shape == y_test.shape + + +def test_rmss_average_theta_warns(): + model = RMSS( + n_terms=2, + order_selection=False, + ylag=[1, 2], + xlag=2, + estimator=LeastSquares(), + basis_function=Polynomial(degree=2), + average_theta=False, + ) + + with pytest.warns(UserWarning, match="average_theta=False skips"): + model.fit(X=X_train, y=y_train) + + +def test_rmss_bootstrap_fit(): + model = RMSS( + n_terms=2, + order_selection=False, + ylag=[1, 2], + xlag=2, + estimator=LeastSquares(), + basis_function=Polynomial(degree=2), + resampling="bootstrap", + n_subsets=5, + subset_size=20, + random_state=0, + ) + + model.fit(X=X_train, y=y_train) + assert model.theta.shape[0] == 2 + assert model.pivv.shape[0] == 2 + + +def test_rmss_multi_dataset_unbiased_warns(): + model = RMSS( + n_terms=2, + order_selection=False, + ylag=[1, 2], + xlag=2, + estimator=LeastSquares(unbiased=True), + basis_function=Polynomial(degree=2), + ) + + X_list = [X_train, X_train] + y_list = [y_train, y_train] + + with pytest.warns(UserWarning, match="Unbiased correction is not applied"): + model.fit(X=X_list, y=y_list) + assert model.theta.shape[0] == 2 + assert model.pivv.shape[0] == 2 + + +@pytest.mark.parametrize("error_measure", ["mae", "mse", "smape", "rmse_ratio"]) +def test_rmss_error_measure_variants(error_measure): + model = RMSS( + n_terms=2, + order_selection=False, + ylag=[1, 2], + xlag=2, + estimator=LeastSquares(), + basis_function=Polynomial(degree=2), + error_measure=error_measure, + ) + + model.fit(X=X_train, y=y_train) + assert model.theta.shape[0] == 2 + + +def test_rmss_invalid_resampling(): + with pytest.raises(ValueError, match="Unsupported resampling strategy"): + RMSS(resampling="bad") + + +def test_rmss_smape_warning_sets_phi3(): + with pytest.warns(DeprecationWarning): + model = RMSS(error_measure="smape") + assert model.error_measure == "phi3" + + +def test_rmss_average_theta_type_error(): + with pytest.raises(TypeError, match="average_theta must be a boolean"): + RMSS(average_theta="yes") + + +def test_rmss_bootstrap_param_validation(): + with pytest.raises(ValueError, match="n_subsets must be a positive"): + RMSS(resampling="bootstrap", n_subsets=0) + + with pytest.raises(ValueError, match="subset_size must be a positive"): + RMSS(resampling="bootstrap", subset_size=0) + + with pytest.raises(TypeError, match="random_state must be an integer"): + RMSS(resampling="bootstrap", random_state="seed") + + +def test_rmss_multi_resampling_type_error(): + with pytest.raises(TypeError, match="multi_resampling must be a boolean"): + RMSS(multi_resampling="yes") + + +def test_create_sub_datasets_too_small(): + model = RMSS() + reg = np.ones((1, 2)) + tgt = np.ones((1, 1)) + with pytest.raises(ValueError, match="Need at least two samples"): + model._create_sub_datasets(reg, tgt) + + +@pytest.mark.parametrize("metric", ["mse", "phi3", "rmse_ratio"]) +def test_overall_error_branches(metric): + model = RMSS(error_measure=metric) + psi = np.array( + [ + [[1.0, 2.0], [2.0, 0.0]], + [[0.5, 1.5], [1.0, 1.0]], + ] + ) + y_views = np.array([[1.0, 2.0], [0.5, 1.5]]) + out = model._overall_error(psi, y_views) + assert out.shape == (2,) + + +def test_overall_error_multi_resampled_views(): + model = RMSS(error_measure="mae") + psi_views = np.array([[[1.0], [0.0]], [[2.0], [1.0]]]) + y_views = np.array([[1.0, 0.0], [2.0, 1.0]]) + metric = model._overall_error_multi([psi_views], [y_views]) + assert metric.shape == (1,) + + +def test_orthogonalize_remaining_helpers(): + model = RMSS() + psi_views = np.array( + [ + [[1.0, 0.0], [0.0, 1.0]], + [[0.5, 0.5], [0.5, -0.5]], + ] + ) + selected_q = psi_views[:, :, 0] + ortho = model._orthogonalize_remaining_views(psi_views, selected_q) + # new first column should be orthogonal to selected_q for each view + for k in range(ortho.shape[0]): + assert np.allclose(np.dot(ortho[k, :, 1], selected_q[k]), 0.0) + + psi = np.array([[1.0, 0.0], [0.0, 1.0]]) + q = psi[:, 0] + ortho_multi = model._orthogonalize_remaining_multi([psi], [q])[0] + assert np.allclose(np.dot(ortho_multi[:, 1], q), 0.0) + + +def test_prepare_datasets_length_mismatch(): + model = RMSS() + with pytest.raises(ValueError, match="X and y lists must have the same length"): + model._prepare_datasets([np.ones((5, 1))], [np.ones((5, 1)), np.ones((5, 1))]) + + +def test_prepare_datasets_input_dim_mismatch(): + model = RMSS() + X_list = [np.ones((5, 1)), np.ones((5, 2))] + y_list = [np.ones((5, 1)), np.ones((5, 1))] + with pytest.raises(ValueError): + model._prepare_datasets(X_list, y_list) + + +def test_run_mss_algorithm_err_tol_break(): + model = RMSS(err_tol=0.0) + psi = np.array([[1.0, 0.5], [0.5, 1.0]]) + y = np.array([[1.0], [0.0]]) + err, piv, _, _ = model.run_mss_algorithm(psi, y, process_term_number=2) + assert len(piv) == 1 # stopped early due to err_tol + assert err.shape[0] == 1 + + +def test_run_mss_algorithm_multi_resampling_views(): + model = RMSS(multi_resampling=True, n_terms=2, order_selection=False) + rm1 = np.array([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]]) + rm2 = np.array([[0.5, 0.5], [1.0, 0.0], [0.0, 1.0]]) + tgt1 = np.array([[1.0], [0.0], [1.0]]) + tgt2 = np.array([[0.5], [1.0], [0.0]]) + err, piv, _, _ = model.run_mss_algorithm([rm1, rm2], [tgt1, tgt2], 2) + assert piv.size >= 1 + assert err.size >= 1 + + +def test_estimate_theta_unbiased_single_dataset(): + model = RMSS(ylag=1, xlag=1, estimator=LeastSquares(unbiased=True)) + reg = np.array([[1.0], [2.0], [3.0]]) + tgt = np.array([[1.0], [2.0], [3.0]]) + theta = model._estimate_theta([reg], [tgt], piv=np.array([0])) + assert theta.shape == (1, 1) + + +def test_information_criterion_multi_dataset_apress(): + model = RMSS(info_criteria="apress", n_info_values=2) + rm1 = np.array([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]]) + rm2 = np.array([[1.0, 1.0], [0.5, 0.5], [0.0, 1.0]]) + tgt1 = np.array([[1.0], [0.0], [1.0]]) + tgt2 = np.array([[0.5], [1.0], [0.0]]) + info = model.information_criterion([rm1, rm2], [tgt1, tgt2]) + assert info.shape == (2,) + + +def test_fit_with_order_selection_true(): + model = RMSS( + order_selection=True, info_criteria="apress", n_terms=None, n_info_values=2 + ) + model.fit(X=X_train, y=y_train) + assert model.n_terms >= 1 + assert model.info_values.shape[0] == 2 + + +def test_fit_order_selection_false_without_n_terms(): + model = RMSS(order_selection=False, n_terms=None) + with pytest.raises(ValueError, match="define n_terms value"): + model.fit(X=X_train, y=y_train) + + +def test_create_sub_datasets_invalid_strategy_after_init(): + model = RMSS() + model.resampling = "invalid" + reg = np.ones((2, 1)) + tgt = np.ones((2, 1)) + with pytest.raises(ValueError, match="Unsupported resampling strategy"): + model._create_sub_datasets(reg, tgt) + + +def test_overall_error_multi_rmse_ratio(): + model = RMSS(error_measure="rmse_ratio") + psi_list = [np.array([[1.0, 0.0], [0.0, 1.0]])] + y_list = [np.array([[1.0], [0.0]])] + metric = model._overall_error_multi(psi_list, y_list) + assert metric.shape == (2,) + + +def test_prepare_datasets_replicates_single_x_for_list_y(): + model = RMSS() + X = np.ones((5, 1)) + y_list = [np.ones((5, 1)), np.ones((5, 1))] + reg_matrices, targets = model._prepare_datasets(X, y_list) + assert len(reg_matrices) == 2 + assert len(targets) == 2 + + +def test_prepare_datasets_regressor_space_mismatch(monkeypatch): + model = RMSS() + + call_count = {"i": 0} + + def fake_build_lagged_matrix(X, y, *args, **kwargs): + call_count["i"] += 1 + cols = 2 if call_count["i"] == 1 else 3 + return np.ones((3, cols)) + + def fake_fit(data, *args, **kwargs): + return data + + monkeypatch.setattr(rmss_module, "build_lagged_matrix", fake_build_lagged_matrix) + monkeypatch.setattr( + model, "basis_function", type("FB", (), {"fit": staticmethod(fake_fit)})() + ) + + y_list = [np.ones((3, 1)), np.ones((3, 1))] + with pytest.raises(ValueError, match="regressor space"): + model._prepare_datasets([None, None], y_list) + + +def test_prepare_datasets_num_features_mismatch(monkeypatch): + model = RMSS() + calls = {"count": 0} + + def fake_num_features(_): + calls["count"] += 1 + return 1 if calls["count"] == 1 else 2 + + monkeypatch.setattr(rmss_module, "num_features", fake_num_features) + monkeypatch.setattr( + rmss_module, "build_lagged_matrix", lambda X, y, *a, **k: np.ones((3, 2)) + ) + monkeypatch.setattr( + model, + "basis_function", + type("FB", (), {"fit": staticmethod(lambda data, *a, **k: data)})(), + ) + + with pytest.raises(ValueError, match="input dimension"): + model._prepare_datasets( + [np.ones((3, 1)), np.ones((3, 1))], [np.ones((3, 1)), np.ones((3, 1))] + ) + + +def test_prepare_datasets_single_path_sets_n_inputs_none(): + model = RMSS() + y = np.ones((5, 1)) + + # Avoid num_features(None) errors + rmss_module_build = rmss_module.build_lagged_matrix + rmss_module_basis = model.basis_function + rmss_module.build_lagged_matrix = lambda X, y, *a, **k: np.ones((3, 1)) + model.basis_function = type( + "FB", (), {"fit": staticmethod(lambda data, *a, **k: data)} + )() + + reg_matrices, targets = model._prepare_datasets(None, y) + assert model.n_inputs == 1 + assert len(reg_matrices) == 1 and len(targets) == 1 + + # restore + rmss_module.build_lagged_matrix = rmss_module_build + model.basis_function = rmss_module_basis + + +def test_run_mss_algorithm_single_feature_breaks(): + model = RMSS(n_terms=1, order_selection=False) + psi = np.array([[1.0], [0.5], [0.2]]) + y = np.array([[1.0], [0.0], [0.5]]) + err, piv, _, _ = model.run_mss_algorithm(psi, y, process_term_number=2) + assert err.size == 1 and piv.size == 1 + + +def test_run_mss_algorithm_multi_err_tol(): + model = RMSS(err_tol=0.0, n_terms=2, order_selection=False) + rm1 = np.array([[1.0, 0.0], [0.0, 1.0]]) + rm2 = np.array([[0.5, 0.5], [0.5, -0.5]]) + tgt1 = np.array([[1.0], [0.0]]) + tgt2 = np.array([[0.5], [0.5]]) + err, piv, _, _ = model.run_mss_algorithm([rm1, rm2], [tgt1, tgt2], 2) + assert err.size == 1 and piv.size == 1 + + +def test_estimate_theta_empty_piv(): + model = RMSS() + out = model._estimate_theta([np.ones((3, 1))], [np.ones((3, 1))], piv=np.array([])) + assert out.shape == (0, 1) + + +def test_information_criterion_truncate_n_info_values(): + model = RMSS(n_info_values=5) + rm = np.ones((4, 2)) + tgt = np.ones((4, 1)) + info = model.information_criterion(rm, tgt) + assert info.shape == (2,) + + +def test_information_criterion_single_non_apress(): + model = RMSS(info_criteria="aic", n_info_values=1) + rm = np.array([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]]) + tgt = np.array([[1.0], [0.0], [1.0]]) + info = model.information_criterion(rm, tgt) + assert info.shape == (1,) + + +def test_information_criterion_multi_non_apress(): + model = RMSS(info_criteria="aic", n_info_values=1) + rm1 = np.array([[1.0, 0.0], [0.0, 1.0]]) + rm2 = np.array([[0.5, 0.5], [0.5, -0.5]]) + tgt1 = np.array([[1.0], [0.0]]) + tgt2 = np.array([[0.5], [0.5]]) + info = model.information_criterion([rm1, rm2], [tgt1, tgt2]) + assert info.shape == (1,) + + +def test_fit_y_none_raises(): + model = RMSS() + with pytest.raises(ValueError, match="y cannot be None"): + model.fit(X=X_train, y=None) + + +def test_fit_model_length_non_apress(): + model = RMSS( + order_selection=True, info_criteria="aic", n_terms=None, n_info_values=1 + ) + model.fit(X=X_train, y=y_train) + assert model.n_terms >= 1 + + +def test_fit_with_non_polynomial_basis(): + from sysidentpy.basis_function import Fourier + + model = RMSS(order_selection=False, n_terms=1, basis_function=Fourier(degree=1)) + model.fit(X=X_train, y=y_train) + assert model.final_model.shape[0] == 1