{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "839c5532",
   "metadata": {},
   "source": [
    "# fitNormSum\n",
    "Tutorial for normalized sum of two functions\n",
    "Here: a background exponential and a crystalball function\n",
    "Parameters can be set:\n",
    " 1.   with the TF1 object before adding the function (for 3) and 4))\n",
    " 2.  with the TF1NormSum object (first two are the coefficients, then the non constant parameters)\n",
    " 3. with the TF1 object after adding the function\n",
    "\n",
    "Sum can be constructed by:\n",
    " 1. by a string containing the names of the functions and/or the coefficient in front\n",
    " 2. by a string containg formulas like expo, gaus...\n",
    " 3. by the list of functions and coefficients (which are 1 by default)\n",
    " 4. by a std::vector for functions and coefficients\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "**Author:** Jonas Rembser, Lorenzo Moneta (C++ version)  \n",
    "<i><small>This notebook tutorial was automatically generated with <a href= \"https://github.com/root-project/root/blob/master/documentation/doxygen/converttonotebook.py\">ROOTBOOK-izer</a> from the macro found in the ROOT repository  on Tuesday, May 19, 2026 at 08:24 PM.</small></i>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ac61f74e",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:01.241060Z",
     "iopub.status.busy": "2026-05-19T20:25:01.240911Z",
     "iopub.status.idle": "2026-05-19T20:25:02.229053Z",
     "shell.execute_reply": "2026-05-19T20:25:02.228021Z"
    }
   },
   "outputs": [],
   "source": [
    "import ROOT\n",
    "\n",
    "nsig = 50000\n",
    "nbkg = 1000000\n",
    "nEvents = nsig + nbkg\n",
    "nBins = 1000\n",
    "\n",
    "signal_mean = 3.0\n",
    "f_cb = ROOT.TF1(\"MyCrystalBall\", \"crystalball\", -5.0, 5.0)\n",
    "f_exp = ROOT.TF1(\"MyExponential\", \"expo\", -5.0, 5.0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "11092104",
   "metadata": {},
   "source": [
    "I.:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3abfd5df",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:02.230712Z",
     "iopub.status.busy": "2026-05-19T20:25:02.230538Z",
     "iopub.status.idle": "2026-05-19T20:25:02.351521Z",
     "shell.execute_reply": "2026-05-19T20:25:02.350496Z"
    }
   },
   "outputs": [],
   "source": [
    "f_exp.SetParameters(1.0, -0.3)\n",
    "f_cb.SetParameters(1, signal_mean, 0.3, 2, 1.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8c74314",
   "metadata": {},
   "source": [
    "CONSTRUCTION OF THE TF1NORMSUM OBJECT ........................................\n",
    "1) :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "08a222ed",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:02.353119Z",
     "iopub.status.busy": "2026-05-19T20:25:02.352982Z",
     "iopub.status.idle": "2026-05-19T20:25:02.466445Z",
     "shell.execute_reply": "2026-05-19T20:25:02.465464Z"
    }
   },
   "outputs": [],
   "source": [
    "fnorm_exp_cb = ROOT.TF1NormSum(f_cb, f_exp, nsig, nbkg)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8762566a",
   "metadata": {},
   "source": [
    "4) :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "827c4592",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:02.467947Z",
     "iopub.status.busy": "2026-05-19T20:25:02.467813Z",
     "iopub.status.idle": "2026-05-19T20:25:02.843819Z",
     "shell.execute_reply": "2026-05-19T20:25:02.843279Z"
    }
   },
   "outputs": [],
   "source": [
    "f_sum = ROOT.TF1(\"fsum\", fnorm_exp_cb, -5.0, 5.0, fnorm_exp_cb.GetNpar())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b29b278",
   "metadata": {},
   "source": [
    "III.:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "8463cd9e",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:02.855473Z",
     "iopub.status.busy": "2026-05-19T20:25:02.855335Z",
     "iopub.status.idle": "2026-05-19T20:25:02.988120Z",
     "shell.execute_reply": "2026-05-19T20:25:02.987501Z"
    }
   },
   "outputs": [],
   "source": [
    "parameter_values = fnorm_exp_cb.GetParameters()\n",
    "f_sum.SetParameters(parameter_values.data())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0231721",
   "metadata": {},
   "source": [
    "Note: in the C++ tutorial, the parameter value sync is done in one line with:\n",
    "```C++\n",
    "    f_sum->SetParameters(fnorm_exp_cb->GetParameters().data());\n",
    "```\n",
    "However, TF1NormSum::GetParameters() returns an std::vector by value, which\n",
    "doesn't survive long enough in Python. That's why we have to explicitly\n",
    "assign it to a variable first and can't use a temporary."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b9804765",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:02.990257Z",
     "iopub.status.busy": "2026-05-19T20:25:02.990130Z",
     "iopub.status.idle": "2026-05-19T20:25:03.109723Z",
     "shell.execute_reply": "2026-05-19T20:25:03.109002Z"
    }
   },
   "outputs": [],
   "source": [
    "f_sum.SetParName(1, \"NBackground\")\n",
    "f_sum.SetParName(0, \"NSignal\")\n",
    "for i in range(2, f_sum.GetNpar()):\n",
    "    f_sum.SetParName(i, fnorm_exp_cb.GetParName(i))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6daf89b8",
   "metadata": {},
   "source": [
    "GENERATE HISTOGRAM TO FIT .............................................................."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "04c29262",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:03.111856Z",
     "iopub.status.busy": "2026-05-19T20:25:03.111723Z",
     "iopub.status.idle": "2026-05-19T20:25:03.360320Z",
     "shell.execute_reply": "2026-05-19T20:25:03.359552Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time to generate 1050000 events:  \n",
      "Real time 0:00:00, CP time 0.140\n"
     ]
    }
   ],
   "source": [
    "w = ROOT.TStopwatch()\n",
    "w.Start()\n",
    "h_sum = ROOT.TH1D(\"h_ExpCB\", \"Exponential Bkg + CrystalBall function\", nBins, -5.0, 5.0)\n",
    "h_sum.FillRandom(f_sum, nEvents)\n",
    "print(\"Time to generate {0} events:  \".format(nEvents))\n",
    "w.Print()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4143e84f",
   "metadata": {},
   "source": [
    "need to scale histogram with width since we are fitting a density"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3373f6ed",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:03.362782Z",
     "iopub.status.busy": "2026-05-19T20:25:03.362652Z",
     "iopub.status.idle": "2026-05-19T20:25:03.472734Z",
     "shell.execute_reply": "2026-05-19T20:25:03.472173Z"
    }
   },
   "outputs": [],
   "source": [
    "h_sum.Sumw2()\n",
    "h_sum.Scale(1.0, \"width\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dd4e6b16",
   "metadata": {},
   "source": [
    "fit - use Minuit2 if available"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "47d9d0b2",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:03.494445Z",
     "iopub.status.busy": "2026-05-19T20:25:03.494303Z",
     "iopub.status.idle": "2026-05-19T20:25:03.636147Z",
     "shell.execute_reply": "2026-05-19T20:25:03.635378Z"
    }
   },
   "outputs": [],
   "source": [
    "ROOT.Math.MinimizerOptions.SetDefaultMinimizer(\"Minuit2\")\n",
    "c1 = ROOT.TCanvas(\"Fit\", \"Fit\", 800, 1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93394a3e",
   "metadata": {},
   "source": [
    "do a least-square fit of the spectrum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "020ade54",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:03.637913Z",
     "iopub.status.busy": "2026-05-19T20:25:03.637787Z",
     "iopub.status.idle": "2026-05-19T20:25:04.135389Z",
     "shell.execute_reply": "2026-05-19T20:25:04.134781Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "****************************************\n",
      "Minimizer is Minuit2 / Migrad\n",
      "Chi2                      =      1018.73\n",
      "NDf                       =          993\n",
      "Edm                       =  9.65559e-06\n",
      "NCalls                    =          233\n",
      "NSignal                   =        50082   +/-   1231.21     \n",
      "NBackground               =       998899   +/-   1569.86     \n",
      "Mean                      =      2.99896   +/-   0.0022426   \n",
      "Sigma                     =     0.297871   +/-   0.00230279  \n",
      "Alpha                     =      2.12493   +/-   0.1368      \n",
      "N                         =       1.1562   +/-   0.468136    \n",
      "Slope                     =    -0.300341   +/-   0.000644187 \n",
      "Time to fit using ROOT TF1Normsum: \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Real time 0:00:00, CP time 0.140\n"
     ]
    }
   ],
   "source": [
    "result = h_sum.Fit(f_sum, \"SQ\")\n",
    "result.Print()\n",
    "h_sum.Draw()\n",
    "print(\"Time to fit using ROOT TF1Normsum: \")\n",
    "w.Print()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "736c7052",
   "metadata": {},
   "source": [
    "test if parameters are fine"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "73b0eeb6",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:04.137130Z",
     "iopub.status.busy": "2026-05-19T20:25:04.137003Z",
     "iopub.status.idle": "2026-05-19T20:25:04.374833Z",
     "shell.execute_reply": "2026-05-19T20:25:04.374228Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222304364\" style=\"width: 800px; height: 1000px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222304364() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(37377,'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').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222304364', obj, '');\n",
       "});\n",
       "\n",
       "      }\n",
       "      const servers = ['/static/', 'https://root.cern/js/7.11.0/', 'https://jsroot.gsi.de/7.11.0/'],\n",
       "            path = 'build/jsroot';\n",
       "      if (typeof JSROOT !== 'undefined')\n",
       "         execCode(JSROOT);\n",
       "      else if (typeof requirejs !== 'undefined') {\n",
       "         servers.forEach((s,i) => { servers[i] = s + path; });\n",
       "         requirejs.config({ paths: { 'jsroot' : servers } })(['jsroot'],  execCode);\n",
       "      } else {\n",
       "         const config = document.getElementById('jupyter-config-data');\n",
       "         if (config)\n",
       "            servers[0] = (JSON.parse(config.innerHTML || '{}')?.baseUrl || '/') + 'static/';\n",
       "         else\n",
       "            servers.shift();\n",
       "         function loadJsroot() {\n",
       "            return !servers.length ? 0 : import(servers.shift() + path + '.js').catch(loadJsroot).then(() => execCode(JSROOT));\n",
       "         }\n",
       "         loadJsroot();\n",
       "      }\n",
       "   }\n",
       "   process_root_plot_1779222304364();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i, pref in enumerate([nsig, nbkg, signal_mean]):\n",
    "    if not ROOT.TMath.AreEqualAbs(pref, f_sum.GetParameter(i), f_sum.GetParError(i) * 10.0):\n",
    "        ROOT.Error(\n",
    "            \"testFitNormSum\",\n",
    "            \"Difference found in fitted {0} - difference is {1:.2f} sigma\".format(\n",
    "                f_sum.GetParName(i), (f_sum.GetParameter(i) - pref) / f_sum.GetParError(i)\n",
    "            ),\n",
    "        )\n",
    "\n",
    "ROOT.gStyle.SetOptStat(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c217c526",
   "metadata": {},
   "source": [
    "add parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "885d1220",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:04.380802Z",
     "iopub.status.busy": "2026-05-19T20:25:04.380669Z",
     "iopub.status.idle": "2026-05-19T20:25:04.549319Z",
     "shell.execute_reply": "2026-05-19T20:25:04.548652Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Info in <TCanvas::Print>: png file fitNormSum.png has been created\n"
     ]
    }
   ],
   "source": [
    "t1 = ROOT.TLatex(-2.5, 300000, \"NSignal = {0:g} #pm {1:g}\".format(f_sum.GetParameter(0), f_sum.GetParError(0)))\n",
    "t2 = ROOT.TLatex(-2.5, 270000, \"Nbackgr = {0:g} #pm {1:g}\".format(f_sum.GetParameter(1), f_sum.GetParError(1)))\n",
    "t1.Draw()\n",
    "t2.Draw()\n",
    "\n",
    "c1.SaveAs(\"fitNormSum.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4f0fe8db",
   "metadata": {},
   "source": [
    "Draw all canvases "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b8f3fd42",
   "metadata": {
    "collapsed": false,
    "execution": {
     "iopub.execute_input": "2026-05-19T20:25:04.561271Z",
     "iopub.status.busy": "2026-05-19T20:25:04.561127Z",
     "iopub.status.idle": "2026-05-19T20:25:04.675596Z",
     "shell.execute_reply": "2026-05-19T20:25:04.674937Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "\n",
       "<div id=\"root_plot_1779222304673\" style=\"width: 800px; height: 1000px; position: relative\">\n",
       "</div>\n",
       "\n",
       "</div>\n",
       "<script>\n",
       "   function process_root_plot_1779222304673() {\n",
       "      function execCode(Core) {\n",
       "         Core.settings.HandleKeys = false;\n",
       "         \n",
       "Core.unzipJSON(38176,'WkwIhjcAIJUAeAHVfWuTXDdy5V9h1PrbQjeQeOPe8Ac+REtrkmKI0oj0xISjyK4ma9nd1VNdLVHj0H93nHygqklRO/J6bM/EkKrExSMBJDITiQPw31b/evj5enO1vtys5tV3D9dXP65vfti8fnG1vr55tzus3Or8+6vtn283Xz9azd6tzh9sDzfy65vX/3fz5oD0FbJ9c33Y7q6U+Oft1dlqjm51Pmqa/+3X2vpcAzGmEFNyq/Mn26vNw93Fbr+aSckXh58vNkfyh+3Z4Z2Qj7cXF5oZzIK0zN5z8c354el6/3Z7tZr9hJRvt2/ffZT0YHc47C7vZvtud3034eX5FkwEtzp/dfx5X36i4pc3h/UBrfSOPHeo+0Kh8OP9+nLzMd9I+6jjI9/dDo2slmxVovjpyKDKB7v92Wb/YvsXHb2TxKe7s43M60tazV+UKWSP//VIMYSCHiA9hV7qlHNvNYXY0IGXYTX/WvawmmMr1bfJUwy5pgZ5eHnY3X9983z7YXPxfjXH3iTt1xNWc4lTqb337jP5Dnl4daeCVtPE31PwJQXU9uowavuNr6v5Cz95H0IJVKm1QC0FTNT3d+qHFH1/rPCUXM21Y1z+cKdArxiTPxyL3E1YzV9Igg3CYffy/a+PNw/J//szJMxTrj5mqi1QTx7DdKz/Fcb504nQ6vH112bVPuNrCpPP0edWa02dZfti99OzRw9FYF6dEi+/v+YPyPXq5PcPI/Wr8ev+65s7Fd1/fXOnrvuvb47F7r++OZb8/sMlVvAXGdPzM//mqflwuf6wmjUVP2OKNfkp5RhbDAlfvnu3OaxXc0SB5++2+uv+zfXmzeHb9WG7k149u718vdnL7++2b95/OP78WX4+2b3VxCe7t8e0v8jX5+uz5+vtFTSAW50/3O9ubt6tt1rhIJ/vVJueLk1IkNDHVfl0d7Y9327OVvP5+uJm41bn/7Tfnn24S/58JO+/vnm42+1P8n95tj2sX0NnHfa3qODx9sPm7E6/rern++3l9rD9cXPzidp+sr2BVTCLoeR6v1/Nf/yTW+2uD/jxi1udf/lh8+ZmNV/dXly41fkzMTGPt2xTvtsewIiRz24vn68vNoeDaXoM2bPNh8OnqY++fvH8yf1Xq3n1D/bTrc4f7W5fX2we3J6f25R9uzmst1cYL+3ty5vtXzbf39j3V3dJ/vrtZn2xmomVHT4LHcDMD9urs91P3+2usd5O6VentOrbY4avNrAuKgI/mcZ4+G6lauHh+nD4ZIjvHw5iiNGzlw82h582myu1NHcoHsXH+93ld7vr1UwTa+Oz9QGKnIlXRkDz3heCfnGr9093P26+uV7/+XZIw/tvN+jy3cTzr7Zv3z1BF9SosmSuD2/e2bC+f/Fu99OXP26uDi8O68PtzRDA9/dvDzuIwMj5dHN1+2C9FxoCcv8NRGyUOP92sz775uriZytx/sP28G53eziVRpPQr9Y3Kl+Wcprrjx/5Gv9pHg0062c9mh82r3nFb6/efs6tgWQ8vFjf3OhyQD7xo04TriGkKz+HnJ3+WWj2zju/BE7Frzh7/uqXxN9CzkseZfxSNCfSq+bF7za37gKRa2np+N2SC1QWQoPJ6Z+FaKYeHLXgqIaFwlyL4/8vFGfywemfhdJMoTr9s1CeKUenfxYqM9Xm9M9CdQ4+Of2zUJtD6E7/LNTnkILTP0vwnJk6yvsl0F0yzNSjo06OSltCnKkVRw1kXEKSdkt2lP0S8kwt4oujnJcArpTJ5JdQZ8rZUQqOol9Cmylm7mArS+gz1eyCL+BkiX6mGBw3XeISaaZYwYGj4pcYZoreUW4OFcco7bQmZTFUQdrJcYl5JqqOy6e8xDKTT+CAWY51Jt8dF4hhiW2mkHhcg+9L7MdRz3lJfqbqHXe305JoxhQzzzEvKcwhkOPxAYmhasJk9EtKMw8xZi2kJeWZxxRsUF9SmVFNT66XJVVpBgOV6pLazC0Ss7mkPlOqjjtBYcmemWARWzLNlIpjmV1y4HFQIs692e8012S/85zJfpc5VPtd52g/GwRbq+mzdwkCnJfiZ+9Kk99YOp3kd5jRKV5WS8EKotjlCxYRpIOLZxCtClHQBkkjhVdS1Fa4dV6ktBQ0z0SoS0X7TPi0VDAAgppfKjhgIpel2hrG/FZwwF98Wyo4ANHyUpmBnF2hpdpKjnWp1jzFpfZZOHR+aX4WBvGb5szdwO8wNx4G/MYSFu3ilwap5GEAIcsX7fmlYZkUI7B0hSu/NCxcHgYQWLY82s4vXRVXbCBINBIlEKK8qEN99chfqBQQSYgUQIgWg1D5pYsa61xz5VyVkN74d6r43fl3iM4v5P1MRC5lVgrkiSU0BZfCQj6IUuiYXlrIx7lVRyw1+Jy4H5SLiyDzHEJzsbqcFvJlpuxdxQLtC3mojMJ5qaAqLM/gYnQhgMSQuIJRpYVYt2asobAQQY2Ri+QCqMCjCmVU+kLQrfiNPyEvBOWK2cTAo17KwrHIM0G7enK9O/J+IaozFBz6Q20haFfIXemOoNH7TK2jYVoo+JkSdFZyVKDfocdk3BrIMHMxX13rC4U4h8jt+IWgWluGWXBY5gTdStGxKgvIXHipB2rCM7TriQkInuZOWJKdloApgUqUP0vw0E3R6Z8lYE4I/eE/S/BZ9C3U+hIwKS2yCvBL8HXG2qzkKmpuc4hd2KK6BN9nlIKyzkvAlEAKUHgJRHMlJ4WXQIH1spZeAiYF7aHwEiihpBReAmWUlMJLwHxAo1NF6SVQFW6t0TY6x6125teahbmDOhKml8BTAm6lXUyJ9JVaXAJPCXc2xLSEkEZvuWVMivYWTAdo8eOohmr9lcJtdBiFo61h6DaflmjLGMIEu4WVrFZcaFnM/N2HJWI923emT3wCpmVVI3+mJWJha3Ym2/AgmIRuE3cj05L80THyS/LiE6A4qDBKgjr6KaASzAksypI8RkO0F/qXeDGz7uf+JCxm0LDGOS4JouPD6F8iLzS++7AkOEtgERaU6YC2tHuJIlM+Mf/EfCArekNs5FCYKVP1fknEql76RVD1KIJ0GBoU8EsKsDPSpaBTIj7jkuAOaZdg0hIWrXaJuwz50C7Jd2iSwF2W7/A+tEsYgtCsS5K9W584d/Qg0QBnjsSkzNqSohk9LhrZ6sl8Lymy4R0F2fKOchgOnrQlQyRVRlBL7jSmWujj1IOj3I+TL9+T9Ef6uGSIpLTDLOdewLLM2pJ7NYrr4r5LB5fcueugfFiKxxSwVVyKFy8dZYpHn3nSluLRY560pXjx1uExQAplhTGLBepLVpjSjbus07YU2BR8l2lbCqswlkBpElIoEshdKjAtvMKkOopcHboIBmFZWAg1s4yHdYtOtw9FvXZoPZSU1aGdg1WBNMpwBBYEzNpSIJLWP5SDxtL+QUoKVJasMKXV8Ov0F9ZZ0j8eavbSeYUpLeZNBKSEbt1D2/DSpXdMyfrUnPG4iSpRBgUeSYF3jjXGv2U45DeLBn5WU4TC9lJVEeqwLxVSpyxmWiqETkkUzqO//PE4/eheVfeGWViqOjhoiTNL7+RjMx3I2qFBB+q4ZlqaF03Ak7I0VYKsJJofc44vyo7onqbSqPwuzaSRNU2DLKrscRtjsOFjikaWJlQIkRkZYUpVrSAna0Kt8qgI8UXVkXS3wY6aQvZhabCjIvacuQ2K2xi6CE4uCyCaB6HWQUZnaTChptdRLZQkpE2UcYOOVBKF1RNWllQadRSWptJoLclaBQWWsGfUhuBsq+4SpiCM2jcsi4Ytow4RlkWLMkgiN0s7KkhwHNlegCfJq1pbDXWLtj+QzEedzQ3xFsWKptM9SkussVEP15tYY8viW1rinZLKSTKFjX6mIzvgLh3ZkWoGO+hYGuxIZmMHFWXjhgkdITHRS8N2UeeFO5KHGHG9GRypdm6ya9QBXVoWjnTAl5bBEX9FKCQzR0cSHKl+bLyHVHvQihg0mbalyT5SJm1pvJFUxdlkIyncLq2IeRdRWFo5MbJon7eTx1plfKzXvKMcRWVLad+qhkKMoarWz1iqItg2KFUEWzR2qyLY1tEqztAYhYqdje2wWxXBtoHARlM+QqKaCLaYv9Zk2ixrk1kTo9Eaz5lYidbYB1J2sONk2ZLJxZ5TdSaPUZOlb23I0h9t8NLXJrraHi6mmtpGQBW1tq/OAZuppkpaCVGKNpuqo8d8qo62aoYBYoFWHc0VdVXRShw1NMatn6hoSHCHklZb7MPSVU1LK131tPakm57Wqe6qp2Uwu/oMRonHoDPdVVHrR42usUyBKWw3MPDyZ+lQlpBj+bP0wDMoNrSHNOeIbTVFFGUxT9ga16WHMmfPO/CETX+dU8dGnRIqbXNqDhvPVJYe+pyKy95RakuPfk5Qn44yLT3SnJJjZtLSY5hTdKye6tJjnFNw2H4XRBLSnLxDxK2Epcc8x+5yRyxs6bHMsbkiIcIe6xyrwxa5ooU2x+ywAa5ooSNsUoqjWpae/ByjK9VR7UtPNMeA3Tz2xj2FOfKWj1peeopz6A574VaXntIcGgcJOsIaGWGrmhEtXDoiacXV6qijhYoIQe2OOlrAZtU1SDItPfU5BNfEr+scR3O89atLh3LsrmXEpJYO1dhcKy5QXHpG9MC15gLlpeeEw4yO6FVbeuYNIQJhgZYOvZhdD0phyXN4IqBO+HcIuQjF2+ZehCrwq1yvSkFkXMc+H6EaxAwQiwjUl14iKELggklmhqWWySxfo34tQkrgopcqJDrZll4aukUevQSJgKxDaILJitCnQ6g0UF16JSYRDmMSIR+HkJCQPEJEQUlEiR2iFwiBd2jG5ohjDSARXZB4IZNVSLSLr9jMO0KUA6MNzQgSbOSlN88kIgVMkpBgA18Ru+agh5BRSLCRlo6AHL6i+yARkHUU0H2QRUiwAbIKCTbi0qEgkRlsgOxMRrARl96FK8SeKCwdm6iG6KOSMlaINxEtHVoS0WmwAVJmMIINkDKDEWwgBscCRRFsgGSJ4ugqkyxSlCDffenY0idHiGJ5xNIQtAMNgW+gEYyCwjAaUXVHCeEI/h5nQgS6uOAr8iOCiYi00VnoZjTCMo5SR0Qc+SvTGewwDasCteOCz/jO4VTK4Ac0+bmrKWaSmORjDHwNM4LpEishT5FJ8MJfE5NgJeJrnhHSASdMFpAFjCDiiAAe4olGNibBBn/tM6J5GBWEGIPnshwdBEloCOqsY0xDAJM4/ugYMnZ1OdxKHUMGXzcojT7B20UMEtoJbHMQT2kwyu6uHHN08IKQETiH/mJmRPxZR6J5bMA6jm0cNbQf4bEojfaxCcPREp9KgEaEUWKKDfxExGKVBj8Rm0OJiyI+6SOfCHCcVCK5FYqXEJ5tGI3YoJZxcAMNTh7qHe2DBj9Q8Ghf9D15qHi0DxrtQ8mjfVgAtJ8ijIXEMTEeKcGUCA1+UoahIejzivZTgRmihjFH+6nCSAnN7TeYMDmtwnikDgMnNMYje5g/Pn4r4CcTjCOHRQvazwGGVGi0rz4xn3FhPnKaM8rDoKN9+MXVUcPGAe3nMsNGMs3t1bmAH3zn9toM2WEa/c99xhEX4r4cKi8eEUSh0V6hGTFrfE9or/CBodBor8QZY4MTuoT2SppxtMg02it5RltMo71SONDNNPpX6sxRe/gR3F6bcfgHmsPxpc8dp3+g0V71OFUSGuMLs+DBMPQdGoRhwAaHE9Ai+8wYItaISEgzzIgkoE2YByya1vmYkDwMBKKsSAjcKhQLmkUCN4tjATSLBG4W53ZYo54P28jDUAQcLSIBMwtTAdHlBDQLY8EnjsgB2YK5gDDi5BNxfg+DAWlEDkKzMBkQv2MCYvI4tUQOjD/MBgSME8AYDEdSPnBa4GE6IGKcA4zBeMA74wQMkMXgOAGcchBOx4PAKcdDdDxY07MRwZjixAKssxnRMWVdDkPCkocc4BSmBGqJE8ApjInoGRw1IgEOgc4tEvgQiDVBcwQ1y8dAWNqcgFMXOwniBD6hwbmD1YGjFNgUPohoDvoUp0EszaBxtsJHD+hac1CofCCEgWgVB6XEB0J8gF4dFCxOhKhD3qqDgsWZEHV0qzooWBwLEc5xQPMpEcI4YMhoiVQxDYb5GAJdgosHGjsX8FP4xAZHQzi1RH4oYJwN4UiYafCHwyEW5oZDRsLpEA5Z0B8oXBwQBZbt5hr4QywFGh/HuWgf0T0VdShcPiKChu/eQeHilIjPnEGjfUT3oPE7uYrxQjyFFwI5KFycEgVoeNDcPk4YIdPBQeES4nvQ8KAxPgiq8DKJDgqXYGBwtNWjk4O0MAdeNclB4RIbGAh8clC4BAPDiwhOP+g8hwj5x5YAdJlxhsk02oeB4SVVHBQuwcAktFdwMEsUBbuAOYXCpeTnwAusOihcwpE8NDhotI8zeV5vzUEBE/YRvNyagwIm7CQS7w5cRvvYS/Dq6w4KmLCbYAeFt5hE2E9wnMG7jPHAjoLp4KCQCXsKpqNLaB+7Cqazg0KmjD0qXIvioJApI0rKDpiDQqaM6C08ke4S+Mk4s4XjSHy0Shn8gY4OCppwZM90clDQlMEfvhcHBU0Z/IGuOMwmyuAPdHcR/BTwh92Kd9DXVMAf6OCgrqmAP9DJRfBTwB/o7KCsqYA/0NVFjEeR8YMM4ZCSCvjzLsA1Bj8F/IEmB81NBfyBji4wP+APNI7NcdQK/kAXB7VNCMkwjd0QaPCH7/DEQWN+u4PMQIlTlfkF1oXAT836HWsQdFEaHglo7BdRHl4XaMgfaBzuAkj04PYcWLJ/YDDe6vHFbn2IYeVWF4wey9mtflzNf+whuR6w9SuuB+iW5nrorkfvOo54Y3A9Rtdjcj1m12NxPUJHNddjdz151xO5noLrKbqekusJm0dgRKDbmuupu56965lcz8H1HF3PyXWcgefieoZObK7n7nrxrhdyvQTXS3S9AGiSXS/F9QJd2lwv3fXqXa/kAJ/tNbpek+sVW9Hieq2uV+jh7nrzrjdyvQXXW3S9JdcbNqnFdehS1t/d9e5dxxl0D6736DoALj273rGFra536H0+V0ccBprYcyTE4wSCI6MeZzFQwR5ug4fy9QDseKhdD13roWA9/GoP1eqhTz3viqFJPdSnh5fsoTg9/AQPFenhCXsoRw+N6OEeeOhCDwXoofU8nFkPfeeh5Dx8Vw/15hm4BEXm4RF4qDAPveXhfnpoLA+R8/A2PYTNQyt5iJkX8A5KQKo8AjMeOsdnlOCoHJxKDxvvEX7x8Ck9LLyHN+lh2j2iLR423SPS4rEj8bDoHsEVD1Pu4Up62HCPDYKH8fYIoXj4kB6m28NT97DZHj64B4DAw4P0cKk9TLWHA+lhoz1cRw/f08Nh9PACPZt2dhpglj2cJQ+D7OE3AkwO5wN/oQQssYfD6DHniFrAacBfADlgzgXVhDlHIAL2Hn9hx485Z0cRUQZiD1HwEJhz9g8Jcy7AAMw546UQGoBVxV8MpEAbmHPs+2Ee8RfawJyzQyiILMw5u4OEOcdmHbYLf6EE5hybcNgjBDLQBuacnT9sqGFY8BdKYM4ZsMV+HrbHMAv4CyUw5xwMJMw54+MY8UKYcwa4YRsLRY2/UAJzzgg73oUKMgxzzu4bI+TYb+NNITtsAiHBnLO7xrsz9tN430W1/emXX35xfys0J9Dgn0Vzyn2K37j/oohNQLT3V8hooGZJuTcq+OgiB8iTyxof39M43mAhXEf49ArL0/X+/WZ/ciVGEk6q1IRxzeO7zYfD/au3QFwDgApSPvrJMyIe3y+2b69WiIpIhpP68fnxDkj2wgjj9Yftp7jw+4fDfaQDuH22/XF7s91d3azmTGgRX04qfLJ+vbFrOmiPaWkhoQWmvzk/v9nw/RnoWU0cbEfme/vm/ZPN1Vvc/vGTB8iZ58CKcl+ANP+42OHCgOYjizUPYPKrv5se8nT+B3r4L383PRwT9Dvn8MF6f3L76cF6b0LBEGzcJ8MyvXj+QtbEo/36J7lyIfQ314fj9Q4h9IaHEHrJ45vrwyPB28sNOIDgRwWqD9CDb64Pj/m6mObDNQj+/Ql8Hhk48Wx7wJ03o7/b7S4YPY8EuZvycHd12N3ub1YIrK3O7x+Ul4/U5f3DASuYNdRvKILwOzUBFgr6rheQlMJ1iIlv2n15dfblfr/T22ZY1kxydjT1+PbqjeoEfAR5osJA6vzhK+66aGZ0FaRmxqIHeTLZTzZvN1dnpxdqwJ2knqhXVHRMtLbtmiCqMJ0wMmL8VA7d6vwrXITY3HykwDX1xfX6DS4CcNvj7t5JH8bFPU0DjyPfXW5GVku2rB81zfk+7vdJ4vE20VfbGwjkKT9IQn3KTvHotuWzhmV0LKulasaPuEGup9ur7eXt5b9s9rvjPQ98uHOdkvW7XHl5vt+cb/b/9OSYW9JPBk4STrsJTk9Tj/2U1Eeb869Wc/aYtJHyw2qud1NernAIcJLllSY8X58K3/P1HdlC4yPp2DInfXqN9Pn67E7XMXbP12efXkt9vj77lZupz9dnEPaXx+HRlFd3UmAY9aISGty+ea/XlJ6vr+X+50tVGiPh1Qpnk6vzF2/2m83V4/Ub1j5gDzrtZPhBYh2ciC2STufDSp2sH2QBeVw9SDEBErGSPPtLqNBVmRLfokEi6wy+KQqKVQx2psLaD3bZCd++AsEXuF4c9tvrR5s328v1xc24UcQqWV2dMPyFk95xho+6x2mn/YOQcOJJBwc97JR4KPA+5LryKDVUIJeR7vSRG/2x+tEdUT67r6+uNvtv0T3kxFLjam9W8x9xi+jePfxF4R5hx38v3WtGl3vpHhVQwSND0ixHipNO04O/m318a16/NX8v+XvpXuKc3Pbf6K8/Qbls1mebPUw1X5jiYRvU4+3hsQlNVqHha1iYxfGFZYlH7c36ggtj9v/PbnuFRPMCHq6vT8nvtpfDl6ytdWqJNcbXl+u3G1Q0FPzD9dXZxeaHd9ub95v9t+urt3rBWtIf7D5omsyepDInJ/cz/7DdXWyvLFVvLUrWh9v9m4uPtb1+wsVSMH1iAF/C3/7yw/XLU5/HEl+dJr76tZyWeCcnMj5df3i0fcsPAEAIv9kf3u0eri83+7Vqn7/hXo11ir1K8LGLwzbuc3s13AnHAJ0oLJCme/TryfB9ZBg/3YHxDXmMAK7EY4HiCjzTuPP+6Y3jU92B9oRWW/HfNWZf0aPfGjHd3b771y8/XD98wM4jdNlqXn354Xp3tbk6bNcX9x68f3vvf997uP/55rC+eLC+uLh3fnv1hh+CuDvq4k78f47779/5PnuzuYD659Dd6vwzW1fdt37uoQsdig+8ZzLVrLro73qvi53E6y226UBgYHyOt+pfjpv0LyULbnefP97ub3Tn8mRtv/AkSDCrdbl5tL25vlifXEWHGh2KmOUC+//j1fCnu7Mn69dK/8b++6+bpp//R0/TMO3DTdBIxm+EJE6macyRzBZeOOC0//Ip+kwA4a+bor/8j54iDCjrur/zKfoo5nESEJHF/uXVYb+FA4k4vyR9d3N7+dNIYJXASeEk7Zj6YTV/EXwqviaC9eOsHzhvSz6lQmkiWN+n6w/YBa7mLzhCvjrXbeEx4dluf2l7Doi2hjbkTYnzF7eXYOHu0VbBmRcfbYlyxwsIcsIVKRXuUKSMvnoXA1VNSU1++JT0k7fMseunJuMRKUYtRVaqaoXeS/HQ4ROiCR+D/tDWQ+c28cnLp9CqZdbWQ+9Sc8ADNqgndK0n9CBthT4ykzAWujXRmGWUUsZCV1ZDa9Ll0LJ0MNRqbZG2Va31mqXvoQ1Ws2ZuXNq7UKN2uWYZlmOpWpSxqh0M1VqvxmFt2p0WtLgUQs3d+DHmS9PWq1fGatTulGo/mrERtYNFpzsUnbhQghYvNobFxrmSlsrW9yyj6UIh7WkO2lZWIQm5ak+ztS6DAXS6jJQLOWjxVK0JG9VsYpNsvkbxVLStFLWJJGOHE19LiTqGZdTDY8Cn0DqG0UY+2aQci9vQxWQVWi9EoNCWNZFM/KLlOf7A+Zg0qvXEpOMcBxtd8ySb09h1WIKJcTJJCCaHMt7ojs1OzNqvMIrr8gyha6OhqCQEY/WYYiMf5D0rHP/rpATSUnQsZW0x74DM2ifqlrlov4ItIhoc2qR4k17fdXxMpQQqyvPIQya9PmnNOBPl4fXeUmxSyAZc5BEc8qACPmoSdVKPtW7yIwMPjI5OCvWRxwTJ27x7nR2SmURb49Pol7ZOXUcVz08x89S1X8Qd5kZ1OZDMG9jI0lPq0jzAScLzSfEoqoCadpBMi1JXhUZ43UqbsMwqfmRqkLpKAjXtBTVdX2T656R1q7DpSqGq+pC6Lk9qKsZkepWaroJjSlVFTU2l5dhW1Tkl05lUjbFqPTWdSVUVGtUu0ktNZYOqLmqqqr6oqCBRFe2ATzo+TVcuVZUxqkk/mRY9qUcMGPLIyj2yUXiYAW216S5qPanaVBZrK1dZO1RsMIu1XqzLJeu8Z11oVGwGi41GMUnI45ONRlGTREXtBWVVKZRtNETNA+WtCp+yScvxk653ympuqKjnQEm1zfGH2FVU6FXqRp5s85VtfEzTUrJJMbVM2RZjsg6OesyC6MJl5nV9ZVlYAL3r0CVVcZRVeZ40qjqTkkwYSokiolhUosxwUFJzTNGGN9nspCAaksQXQD3WQVPUFFX7UaqWWXUmmQlQxwqvr6jJpmiMRVt6ZqQomgCIiKFRW02D52hjGNXBo6hGgUKwDtrQRfUKKI56bHUHk41oKzea/BxTTMKDDVRQJ5CiTUq0RoMq/OOPaHrDDBlFNRwUbBGRjbwZsiNjwSQzqKN48snUKY2+q40jMgEIJi3BVmWwNUimw81oAqMhepVMFQCDwpqWbFjIZplM+5FxOD4dmxh5bAkHWztkMnb8MYZXjZS64Qw30VVghhVwPmHMmxocxo5sxXmTDW+tkylGYLa4X97WBbAz0lMTyGPfbb6AwtJS1rqJDSBd8slG3qsPCaSq1myD6Udxm0GzsEBoaT0mG97mwtvQyfAwxsnYsF54U7l+fLLWvc5FH19MMM3vACKNG+86o1370tXNJ68D0G3Ne12H4iCAJVtix0qtjPLYVSK7rh1zE7pZAq/Woqk8mNfQdRl3Vf5ddX8X6wR0onA/REMt0mhR9wK2UbO9XFMR6ioCXYWj67x3nUnptHfCFx6ZQnv4rwxbU/vS1KrY/q2rom46202FZpRX2emqx1sTWTJPypybUb/u8JpqhKb9arpumtr4pmqhqa5tKlKDVgEY9arL3dTDbTq5TcehjYkRGR3tqotUVaGYg2Q7P3OqzIcxr6TpFrGqH95UUqrVr/2pajQku3dVVYc5R1X7VVVczY2ybar5M1XHq6okjvZUgKraLeuH7UrNVao6LlVdA+O7qmqtqjnMx5JVA37F9lYbJ5UH0aT4LuNp9ZgHVFVfVDU3VT30Ua8qBOuf7ZCrrkHjv6j7Xmx+uDnvqsp10X4VXebmZhX1qap6AUUXZNGFZltza9e8RHPuRrqNry7YorsaWafemQNbVC0Wle9Rn/Jv41Wsf6rfi47rsZyMpzmQRdeViJkf/c1qyqxc1nktasyLbuzNbyw2Djp+x/rFHywqv+ZDWvmi+mS0z8vbu6z9ysqv/Xe0o/M7+NH1l3UezOfNuo6OtPj4g1aFmFXzZ7UxFtwY9al8ZF1vWddT1vkYtOVTvZNVv2TVO6M+lXsbP6kW1xVEv2Xj0+SP1al3Wddz1nWeddyz+svjv/ZdLVvWeRv8qt6yAM2oV9dRVrlMqrez6sOse4DBp+qh8d34VzlMuk6Suhmfpothsn2DfbdYkAWHko5HUh8ymVwoX0ntlPnyFvEx/z+p3hz1qB3Jatesn0nn79iuuBEWkrL6R72qF0f72s+k9sU2EEnl0HYotiFIqt+S6t9k467yc+yv2NEjXyLHSd0RWe7++F+1G0nXd1I7LGKIxyFl3JOG9Sz+JD6SP/bX+FL5TSpPSeddzDVeOBC9Muq3enV9jPGzdONL9dOxnOzgRI34MU5R5zupvkgWj9Z5j2q3Rjl17VIQ/ZNUPySbb43gJpVn20ZF1Tu237P/2m4vqh608YoqvxYQlK2AH/XJNPpRj+3SotrFqOvDdopJ9drgX9eT9R9PeMOviiq/SddxUns1+FB9YbFHC0YmXS/WL9trmnyIOKF+lQ+d51GP9jepvRr8qh6K6pGPeTX+7NRB9W1S+52MVr0/5MDkWvdWY72YPlF7mFQ/2rqwdZl1frPZBc2Xle+h94ZeFLkzfVo0ZDfslPI37JjaPwuvF13vw77rOqkqf0Xl0wJJZq+Hf6X57EDB/Lrhrw0/TubF/JSm4yji4I9+pfm32l/ze4e/rgGA4feb363rXNQlNg4yLub/N53fpvql6XoYGxBdd03lpNvOynY4YyMi9Rqfw9/XcTba/Hvj+7gPEP03/G7l0yKaTe1hUzmqurOydPMnLb4o4gR/U/SF+XVV14vs/r0zf838xWL+lMpDVT1rfo3F8IbdV/1upxZZ+c46/1k3chb2MruSbb2YHbN1Znrc9LHuo5LuIMf6HOte+jf0iekvXU9R7V3U8TM9YxGoqP20IJNMt8cBIesliwMF1aPSHVwrlPkO1p7KZdDxCNp+0HUa7HxG5TGof2ZBqaByFdQ/EbZwaCP9C2p3xlmH1aPrKKhfGlS/BO1v0P4FnQc7EiU7x7BzGrWLekyDq5/Sf/VzRYyRruOidi2oPhrt6HoZ6XePCk7SWaHjyqm0o+EIyz9otW+jfmvf/qt6OtgJpvJDNv5Wv9Wj9tYOdCx4Fiy6Z+Oi+/0Rn1I/yI6GaITmNdaqcjjaV7+d7DtPI85FxP+yU2s9MEHQn8fB2h/RK7WLZKEvlbsRE7M4t0W3VR6t/3amRSq/g28JOOAREGnX+GQS6SLfo10Lnlo0yMpZhEnt3uDHQpDWL91/kfp9I/yo691O2kY7FrVlNjBuLIE4p1B+NRxm+SzGbHzpehG3DOW0vI2f8WWnCxaLUz10TNf2rH9qV/WYBG9ECz82PhYTtnmzdGmP//WMO/+cEm5DAFT36bWr3/rnOD66B/KYgL36NZAbXzUd/0TH+c3t5SnMzegTDCUgSZ/H8uHrCYby42tswHf8fiTfr0LTnl3j35Oo4P1seylYqGfXAEUJSuXna8XhPrs+Z9gqFixyP3q8mnHpd3X+8N325s+36z0yempTjSnxnwY0/CdAlU+gLM/Xe77XwlNzevX6iE+pAkuhEGnC0o81ZPxjSJRLn1puLcaec8lO/kGiFHLPkVpuFQ/t4R8pij7UVig1Srj+6SeKMCHYV8QUWnV+SqVRzLmH1DPl7sqUErUaATAJueXNF4nl6vl6/xT/dM7nwDQVADxkArbsNzO9WOMf7/hcFlyZ5fvmkXLNYaJEOWZcEo6+JIpTbIVixW3+0GvMNHlKIUZOaC3nMrXse60B/1pFw7/UNPUScywVr2RVqommknGi1EoF5KP6PKUcKAH5gDcAu68TbvwifFlhJGPsU+441Uh4OSr53svkK/WQQg246d9Kn3qoDTsBPHhWek5TjRj2ircJgg8pTSHlXFrCRX6KNYYJGIcQqjxHxZ2rueWQ+JUnCo2mhDOV1Pg9hxwjTT7gRYCIS78Nsz81Ci0UXP1tsec4QS5arrg7XlumMoWe4dDjjSE4JJOP0EMJF5cLjpcnn3yLGXd1C5BPU/Vw0BNuQOcWo59y9r3XhjZzLDlMIbQaK65Xp04Uphxij9RxSx173zrFVKh1vl6cfIphqqF6HFsUHLCFlqZGBfAfXCyOIeQ+tdparLhFT6HFnKbQKcSScTs5pFzSlGPDDgT3wAGDqFPANWifcTcbx+Kd/12uHgrfC44tl6n6lGJMuNaNc4uKdRRCxj91hXvjsU6pp1wb3w9PvqapJEA+ml7H93lqlGPKhMdbfGhTKAX4roZb/plin2IEAKg2PIUQYixTiqmmHPDuQeuF6uRrKqmWXJNrpdc2tRgb9Vp6cpCGPsVKHfLWq2tAMEwp5NZCwX352nOoU/MthFQbXv6r1GlKvhK1kHN0NfWQJ2q5xuYL3g0MNdQJXz0lvF1Qfe55ykS115zxkmHLoU2x5BRqayUilBoSllIvPuAad0m5eXQ+lA6NgOAhj18vqcUcXPGt0gR4VUgZD7bgdD1OPkFeC64Fgp8+4f5DAewpu5xrJPAVGiBkweVEIU+9h5xzxerLIdc45V57ibXGhlAfEpKvoaTYuku9hDxVCrhi3vFGCU4HptR8DbmnXhAVam1qnTo6gkdJig9Tx2FK7riln1KsZYrMNeGfrUkxUJ68b4W6b7m7FCj0Cf+QYMOiJuz4Y5l6ZsnseKnEh0oT/oU7yq3UjFhI71Ok1hPmp7rYQ81TA9FiweMjvaY6dbRRSgvFpVBKm2rKOVNrHV3pRFOtFZin2MnlFlqdoIpaJSiS0rsPE+6TtBSSb65hxqYW8QIA4YmV1qEEUk41t5TxrkWAEog55egbGGvN9zJRaglLIuKUJaSpwlTkjPcHSkq1TVSphhTxjEbGlfwphVoaNfyLL8kTtalX32NKGOMYggfnKedYRM/mOPUC5eYj/pGDRBXD40PvQK7A5+YcEYu44cE9qMqplBAhi3iY0ucep4AgbYU+gTsb89RioEiAAAFTE8MUGlGHOeNXvaARed9BBSqwgS9fM5VU+BWlWkqYMLw5YUzhK8Y+1dpbq6ni2YhSYphKppKrPCcAWN8Ey9pSxasmlFFHrzGU2jDEX2SX2UgCjrq+2P7l9HoO0r6+Omze7vGPhMGLAKb99mI9/omz5+v9+vJTF+0x8YfNYbPn6/En1Getp7oM2ftGU685Uc/Q27231jtr+p75tZypd2inkHpNKQbnp9AB9+kZ0LmExwEnfA2ldYAt8KzERLkEjzWTW+7kvvBT9D4mX3OMPeRgngJuPvANs2cvtm+v1hcrt3r2YP3m/dv97vbqbOVWTzdrPH3wYvv2cr1yq/sX1+/w32dIu9hdb1Zc08Pd5fXuZiv/Pij+Pbhfxr8UB4rzyL/ddrweaP+WG187eLC9wu2+L/f7b/Dvy2HwQX/z42Z/frH7CTegcQF6v8e1g897JLjS+jFMWEHCChF2kQHCTuDBLvJOGPv8ju0+H+UrLNhFRiO4yLg7YHxxN0zgwAoGRi2FE7FfUhiwgoCtBQEAK/xXwb8K/VXgLyC9uLoqoF8nkF8F/CrcV8G+CvVVoC++8b8awyBfBesqwBc5G+rkwIdCe5ElIpGPJxGc4GYZnqaAXkB10RUB8zqB8joB8iqMF64ZV82HjU4AvGgBl20FvIv4hzSEfT+K8yOxHFVUyK4TwC7+I33AFk18OkbaYjoEpovgCVfNEF0F6AKMyy3wxk2huQrMBZxWKkOU2QkkF4nMhBbgyD3AsDwEfP6hMFxFyDqB4ILiAeFQMwIqzAsfxBwLIAyA4INUJpxx6HFUxmBbFGeu7T8IryDYweUYYguKuebQNLQxjzXjqhAOkRYQrkEwh7/x2YMCavF4FRdnMC2wsFyAgbTwdqWcMGGUjBKHchQ8i4Y4J8cTUE7q5M2VJXKMAXhX7gNHRPDUreSUtcIQWAR3mAlZXAKQxSuvzDyDYxGH4VoYGIsok1CIIqGAFMcWW+GwCLDwt1FOsiAcCiaQUyCwCoDFW6xcnAEveGwV/ZNwjsJej3zilEEBrwp3VbSqQl2BS4WASdRGQa4KcVWI6bEAInBIBLsCbFVYq4JajxRiSwpnVTCrQllRDutBoKXHFhDkACYVnRb4qoJXFbqKMI+0jrDioBiyqoDVUSeDVZEFSk6AqqCYJY7WKzZUAaoKT0UWZoKhqQpMVViqglLRkNSCmJzCUVEZj6CVgwJVGOpoiGOoCkDFjkf6gHlEPIvrZOCpwk4R5OFaGHKK0BWPC4eqFWyKOBeX43N8RJmEQvQKBaRqxAoVXqrgUo1HKbBUYaXHRF5OAihVOKliSMd/ODykMNJjIg770AKLm2gNAY8q5FOBo3glmaeRo+f4xuxqZI4jUcjJXPNBLJ5Zlr6zUh1Vsy4QgKjCQxUcCkgnDx2f6yosFI8xcy18CKaAUIWDAtaJhS5QUAWCojIeT1FWAgFVACi+sWQx+BOVcdUM/ER7MgRszowXjsUjJ/edwZ4K9USdXIBhngryRCLn5Fg6yvEoMbjzSIn0cDgfu1dhSYaOAZ2K4hz/YSgncgq7rNYExIl3wLkFUaPWLIM3kYWHR3lh2CY/nIUxE90qgE28IctVM1gT/eMRZKAmNs9cC0dJ0R7PEWMK8aqX5EREExRPPwMzsceW1rUy/SbCznBMfuyLy8kUc1wV7UkiopRgl/8jalvgl3hzTRqSCeC4LSCMPPIMukTHhE9W4gK3xINoPNYcmAXFI8EwS2z4mWKMJCrjYWV4JdpjlhhaqcDKUdwK4HAIz7pJToRw+UE8SZRvOH/GC3bSI5k4hlCiPSmniWxzBDopwEkgHJUHHnGxIAyYFLikgCUVKilASX75D+eM2qAItpg1gVTiJUNk4NlnYKTAIgUUiUxgnAGRAoeUs0iBQgoQUmCQAoLEY4rcQ9aLWit7VuKaMvBRYI9y6CmQRwE8yjGkgB0F6igHlQJzFLCgQBwF4CjwRgE3CrTR8rO88mGmQBoF0CjHnVYPdKEAGQVOKCBGOcqVg1OBKwp40X7zFDBs0TFoUSCLAlgUuKIcmtpX7jvDFAXcJxBFOUgWeKKAEwWaKMBEgfcJSFAgicobH1sLGFGgiAJEFBiigBDlSFsAiALPE/ChQA+tTpg0AR0qV+JDizFksKFADZUTPs4VkKFADOWAXOCFAi50DC2Ug3eBFWopsXQMKBQ4oYAJrQZeEAwjFNCeQAiVH4bfyWHwyI9ZY9iggAYFMiiAQTlWFrCgQAUFKKg1ix0Xcyz7Aj5udgwOFGigAAMFFiigQIHoWVle2nx2I1BAx0BAgQGOnFj3YtgZ/ifgO+WZgX+ak0F/ArETIITA1QSE5/gEadSD+WJwhED8ND8fg1v9OFESYJ/A+fRvhvQh9oYaAMdw4p7wkbkA9QTGN35jwTOAzzF8T8B7At0T4J6VxZ5OIHsC0BP4m/2Wryz/DNMTkJ6VxUGU9pfBeQJ5E2CeYziJk6Mshs4JIE/gIwLCs7/ZbjAMT0B4xgNbSIahWA3saTNAQOBoAqoTyJ21znaHQW+WwhqTYTECshMI3UiBwWBwnabLrk62eAyGE4iZAOq0ZgYdCNRNgHQCqxEQnZXCgZ3A55Rbhs6NmjHysnWULaN4WAyXs/rZzDJQTmByApITiJwAfgRWJuA4gcY5BsYNnmFn7vSF99aMAbC/eUfGcDMBOQnESABwAn8TMJdA34xn9koY9CaQNwG8CdzNuOJQBgPaOCA7yvImXFvkXbPlhHEU+BbDmQSEIZA2AbQ5hrMJmM1yspllGJuA2ATC5hjAJvA1AZsJdE2AXfq3+KMMWdM+MtxDwF0CVdOyWARWSjxcBqgJPE3AaQIlEWAaYsXIz5qEIWkCFBE4moDRrBU+7pU9umzYGYpifLKvy+AzgZ6NUhgrLcUyzIAz4wEgBoGaCdDM2sVpvGOImQDMBF6mvdNZEAlhn1BmQdcO7xUYTqYSJRLLQDKBkemqZwiZrVzWV7rGmSsGjpn241FVrQhgicDFBCxmep59ToZ/CUhMIGJmp8QO4tBPoGFqYWWjyaAwV3lXxYAwgYMJGMwsOEcyGAamngNDqRy8RbhEGEkGf+HFav4t6Rh/Bn0J5EsAXwL3MgeLJZOBXgLzMk8NcSC8Ww3vhVvHQr/rL8kWXjgxL4jdOHHmuHWGcglgS2BcAuLSFLX4vEvF1GFkeJR4Fhi2JaAttaEM2BK4ls4OQ7XUQsneVy0OjzkDtASeJeAsgWYJMEs1GIOyTCuy/8xwLNMV7G0zEMvkln0zhnza2mHZZvCVQK8EeKWrSfZ+DLkSwJXArQRsJVArAVoJzEpAVgKxcgywEniVgKsEWiXAKsTjEP9hT162XgyoEjiVgKkESiVAKoFRWSmOLzCASuBTAp4SyJEApwQ2JeAcx0cXTvZ5HIITsJQEmgQoJTApa4VlgAFMiNWBT0mRQIhEXTUF886QJQFACRzKfvNGSuvRKB0kkyFQAoDSmhn8Y/VIKYmryS6WN1YMeLIeSXhP9oBsxSSox2AhgTAhKjY4102jhKZkyygjz/qKg2MCaNL6dV/IFpYBRQK7EhCTQIZwNI5tDMuP8C/xRQYuGScSLZDolwbGMGISJ9Sa2c9hmJKAmwRydbctgIiMQ9kxs+XV7Tavd4lnam0SX5AtHYBIiFTx3/AK9KtEOYQ33unoLlrrh/bQsZJok+xWZZeqKVynbOdkd84rV2uTfgFexEdmaFd+e+//Bk9pv7549ughsEL/vL06E/jNZ99oe77+kR9W/BwICY9dn0CM8ArP5yFG+HoCMeLTuO2FPVMKkt9oS1MUCGzJ1EPGWzR4si0W30PFWTNOABnogxfcfi03HnRrKec+lYj9UKlAG70k9BtPTcorcEopftjHnlrzaO1l0E9NnoezjLzz9z7V0mLF2dXpE3Fg/+srvBCMbr54tz7b/XTyeN3D3R5PQa7Ptrc3chY2sGJjPvTJsgM/2YaneT778K99lOe/A3j5+PnL8fz38XHulbzE+GR39XaDZ8CiPPOzfwtokb4qjtn79DT0dwDWnqwPmw+fExcwrr3kDv7ux+n+2iGxETp9JHSMCD7qQ6v6wupfLcIY6Sfby+1B3j2Sk08g0r7Zb99ur8bjU8kDghNrKiGXFj8+Ov3vej7wNycH0vArk6OnyPf+8R4OtsO9/3V9eU9QcQxN/PyM/IeeqcfrVPxY6qvVzPhMTNZ/+vRA3+N/NWWfG/1dTcdrPsq/94/3BFYg88GgRLwX+7ecD70Q9V8xH3i28MWb/fb6cKNa66vt23cX27fvDg93V1ebN4fj08mPtx82Z7LyztcXN5tf/h0NTwtC').then(json => {\n",
       "   const obj = Core.parse(json);\n",
       "   Core.draw('root_plot_1779222304673', obj, '');\n",
       "});\n",
       "\n",
       "      }\n",
       "      const servers = ['/static/', 'https://root.cern/js/7.11.0/', 'https://jsroot.gsi.de/7.11.0/'],\n",
       "            path = 'build/jsroot';\n",
       "      if (typeof JSROOT !== 'undefined')\n",
       "         execCode(JSROOT);\n",
       "      else if (typeof requirejs !== 'undefined') {\n",
       "         servers.forEach((s,i) => { servers[i] = s + path; });\n",
       "         requirejs.config({ paths: { 'jsroot' : servers } })(['jsroot'],  execCode);\n",
       "      } else {\n",
       "         const config = document.getElementById('jupyter-config-data');\n",
       "         if (config)\n",
       "            servers[0] = (JSON.parse(config.innerHTML || '{}')?.baseUrl || '/') + 'static/';\n",
       "         else\n",
       "            servers.shift();\n",
       "         function loadJsroot() {\n",
       "            return !servers.length ? 0 : import(servers.shift() + path + '.js').catch(loadJsroot).then(() => execCode(JSROOT));\n",
       "         }\n",
       "         loadJsroot();\n",
       "      }\n",
       "   }\n",
       "   process_root_plot_1779222304673();\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from ROOT import gROOT \n",
    "gROOT.GetListOfCanvases().Draw()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
