{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "General considerations\n",
    "* This code is written in the Julia programming language and runs on Jupyter notebook. \n",
    "* Before using this code, please read Supplementary Note 3 in the Supplementary Information.\n",
    "* This code can be freely used and modified. However, when publishing results obtained using this code or its modified versions, please cite this paper (Y. Kimura et al., \"Coating Layer Design Principles Considering Li Chemical Potential Distribution within Solid Electrolytes in Solid-State Batteries\", (2024)) appropriately. \n",
    "* The authors are not responsible for any issues or problems caused by this code, its modifications, or the results generated by them. \n",
    "* This code has been confirmed to function correctly in the operating environment described in the Supplementary Information, but its performance in other environments has not been verified."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"test\""
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "##This is a tab for inputting calculation conditions. Please refer to the description on the tab above and input the necessary parameters.\n",
    "\n",
    "L = 100 # /um, thickness of the solid electrolyte. The unit will be automatically converted to cm.\n",
    "x_int = 0.01 # /um, thickness of the coat layer. The unit will be automatically converted to cm.\n",
    "\n",
    "i_ext = 0.0#A/cm2 Open-circuit: i_ext = 0.0, Charge: i_ ext > 0.0, discharge: i_ext < 0.0\n",
    "\n",
    "E_left = 4.2 # / V The boundary condition at the left end, corresponding to the CATHODE electrode potential. \n",
    "E_right = 0.0 #  / V The boundary condition at the right end, corresponding to the ANODE electrode potential.\n",
    "\n",
    "E_oxlim = 3.6 #/V Oxidation limit of the solid electrolyte.  It is not used except when drawing graphs. Therefore, it does not affect the calculation of the Li chemical potential distribution.\n",
    "\n",
    "\n",
    "\n",
    "#Define ionic and electronic conductivity of the solid electrolyte\n",
    "σ_ion = 0.5 * 1e-3 #S/ cm, ionic conductivity of SE(independent of Li activity)\n",
    "σ⁰ₕ = 0.0 #S/cm hole conductivity of SE at the reference conditon \n",
    "σ⁰ₑ = 1.0 * 1e-11 #S/cm electron conductivity of SE at the reference conditon \n",
    "expo⁰ₕ = 0.0#-1.0#-1.0 #dimensionless, exponent of the hole conductivity of SE (normally <=0)\n",
    "expo⁰ₑ = 0.0 #dimensionless, exponent of the electron conductivity of SE (normally >=0)\n",
    "\n",
    "#Define ionic and electronic conductivity of the coating layer\n",
    "σ_ion_CL = 1.0 * 1e-6 #S/ cm, ionic conductivity of coat layer(independent of Li activity)\n",
    "σ⁰ₕ_CL = 0.0# S/cm hole conductivity of coat layer at the reference conditon \n",
    "σ⁰ₑ_CL = 1.0 * 1e-14#S/cm electron conductivity of coat layer at the reference conditon  \n",
    "expo⁰ₕ_CL = 0.0 #dimensionless, exponent of the hole conductivity of coat layer  (normally <=0)\n",
    "expo⁰ₑ_CL = 0.0 #dimensionless, exponent of the electron conductivity of coat layer (normally >=0)\n",
    "\n",
    "\n",
    "T = 300 #K Temperature. It is necessary to relate Li activity and Li chemical potential/electrode potential. \n",
    "\n",
    "const R = 8.31446262 #/J K-1 mol-1 Gas constant \n",
    "const F = 96485.3321 #/ C mol-1 Faraday constant \n",
    "\n",
    "#Save path\n",
    "savepath = \"/Users/~~~/folder_name/\"\n",
    "\n",
    "#Name of output file (without extension)\n",
    "fname = \"test\"\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Main.CalcProf"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#In this tab, you compile a module called \"CalcProf\", which gathers the functions necessary for calculating the Li chemical potential distribution. \n",
    "#If you do not need to edit these functions, simply execute this tab to compile the module.\n",
    "#If you do not execute this tab, you will not be able to calculate the Li chemical potential distribution.\n",
    "\n",
    "##For those who are not familiar with Jupyter Notebook: \n",
    "#you do not need to execute this tab each time you calculate the Li chemical potential distribution. \n",
    "#Once you have executed this tab, you only need to compile the parameter input tab (if you are changing parameters) and the calculation execution tab.\n",
    "\n",
    "using PyPlot, LinearAlgebra\n",
    "using DataFrames\n",
    "using CSV\n",
    "using Printf\n",
    "\n",
    "\n",
    "module CalcProf\n",
    "\n",
    "    using Optim\n",
    "    using PyPlot\n",
    "\n",
    "\n",
    "    #Constructor to summarize material properties\n",
    "    mutable struct basic_inputs\n",
    "\n",
    "        σ_ion ::Float64\n",
    "        σ⁰ₕ ::Float64\n",
    "        σ⁰ₑ  ::Float64\n",
    "        expo⁰ₕ ::Float64\n",
    "        expo⁰ₑ ::Float64\n",
    "        pin_aLi::Union{Nothing, Float64}\n",
    "\n",
    "    end\n",
    "    \n",
    "    #The function to output the constructor \"basic_inputs\"\n",
    "    function basic_inputs(σ_ion, σ⁰ₕ, σ⁰ₑ, expo⁰ₕ, expo⁰ₑ)\n",
    "        \n",
    "        pin_aLi = nothing\n",
    "    \n",
    "        return basic_inputs(σ_ion, σ⁰ₕ, σ⁰ₑ, expo⁰ₕ, expo⁰ₑ, pin_aLi)\n",
    "\n",
    "    end\n",
    "\n",
    "    #Constructor to summarize calculation conditions\n",
    "    mutable struct conditions\n",
    "    \n",
    "        L ::Float64\n",
    "        x_int ::Float64\n",
    "        i_ext  ::Float64\n",
    "        E_left ::Float64\n",
    "        E_right ::Float64\n",
    "        E_oxlim ::Float64\n",
    "        T ::Float64\n",
    "        R ::Float64\n",
    "        F ::Float64\n",
    "        r ::Float64\n",
    "\n",
    "        savepath ::String\n",
    "        fname ::String\n",
    "\n",
    "    end\n",
    "    \n",
    "    #The function to output the constructor \"conditions\"\n",
    "    function conditions(L, x_int, i_ext, E_left, E_right, E_oxlim, T, R, F, savepath, fname)\n",
    "        \n",
    "        L = L * 1e-4 # The unit of thickness is conveted from um to cm.\n",
    "        x_int = x_int * 1e-4 # The unit of thickness is conveted from um to cm.\n",
    "    \n",
    "        r = -1.0 #A variable to specify the operating conditions of the battery (r = -1 corresponds to zero external current, i.e., an open circuit state. r > 0 corresponds to charging and r < -1 to discharging). If i_ext is not equal to 0, this variable will be modified within the main function.\n",
    "    \n",
    "        return conditions(L, x_int, i_ext, E_left, E_right, E_oxlim, T, R, F, r, savepath, fname)\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to calculate electronic conductivity as a function of Li activity\n",
    "    function sigma_el(a_Li; inputs)\n",
    "\n",
    "        σ⁰ₕ = inputs.σ⁰ₕ \n",
    "        σ⁰ₑ = inputs.σ⁰ₑ \n",
    "        expo⁰ₕ = inputs.expo⁰ₕ\n",
    "        expo⁰ₑ = inputs.expo⁰ₑ \n",
    "        \n",
    "        if isnothing(inputs.pin_aLi ) == false\n",
    "            thres_σ = σ⁰ₕ * inputs.pin_aLi ^ expo⁰ₕ +  σ⁰ₑ * inputs.pin_aLi ^ expo⁰ₑ\n",
    "            σ_el = σ⁰ₕ * a_Li ^ expo⁰ₕ +  σ⁰ₑ * a_Li ^ expo⁰ₑ\n",
    "\n",
    "            if σ_el >= thres_σ\n",
    "                return σ_el\n",
    "            else\n",
    "                return thres_σ\n",
    "            end\n",
    "        else\n",
    "            return σ⁰ₕ * a_Li ^ expo⁰ₕ +  σ⁰ₑ * a_Li ^ expo⁰ₑ\n",
    "        end\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to perfrom trapezoidal integration\n",
    "    function trapezoid_integral(a_right;  a_left,  f, inputs, conds, N)\n",
    "\n",
    "        R = 8.31446262\n",
    "        T = conds.T\n",
    "\n",
    "        x1 = R * T * log(a_right)\n",
    "        x0 = R * T * log(a_left)\n",
    "        dx = (x1 - x0) / N\n",
    "\n",
    "        integ = (f(a_left, inputs = inputs, conds = conds) + f(a_right, inputs = inputs, conds = conds)) / 2\n",
    "        xn = range(x0, step = dx, length = N)\n",
    "\n",
    "        for n = 2:N\n",
    "            x = xn[n]\n",
    "            integ += f(exp(x / R / T), inputs = inputs, conds = conds)\n",
    "        end\n",
    "\n",
    "        return integ*dx\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to define integrand\n",
    "    function integrand(a_Li; inputs, conds)\n",
    "\n",
    "        σ_ion = inputs.σ_ion\n",
    "        r = conds.r\n",
    "\n",
    "        return σ_ion * sigma_el(a_Li, inputs = inputs) / (σ_ion - r * sigma_el(a_Li, inputs = inputs))\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to define integration_CL, which is the integration from left edge to arbitral position in the coat layer\n",
    "    function integration_CL(a_Li, inputs_CL, conds)\n",
    "        R = 8.31446262\n",
    "        F = 96485.3321\n",
    "        T = conds.T\n",
    "\n",
    "        E_left = conds.E_left\n",
    "        a_left = exp(-1* E_left * F / R / T)\n",
    "\n",
    "        return trapezoid_integral(a_Li,  a_left = a_left, f = integrand, inputs = inputs_CL, conds = conds, N = 1000)\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to define integration_CL, which is the integration from the arbitral postion in the solid electrolyte to the right edge\n",
    "    function integration_SE(a_Li, inputs_SE, conds)\n",
    "        R = 8.31446262\n",
    "        F = 96485.3321\n",
    "        T = conds.T\n",
    "\n",
    "        E_right = conds.E_right\n",
    "        a_right = exp(-1* E_right * F / R / T)\n",
    "\n",
    "        return trapezoid_integral(a_right,  a_left = a_Li, f = integrand, inputs = inputs_SE, conds = conds, N = 1000)\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to solve a_int\n",
    "    function func_to_solve_a_int(a_Li; inputs_CL, inputs_SE, conds)\n",
    "        \n",
    "        #if integration_CL(a_Li, inputs_CL, conds) <5.4e-079\n",
    "        #    println(\"CL: yes, a_Li = \", a_Li)\n",
    "        #elseif  integration_SE(a_Li, inputs_SE, conds) <5.4e-079\n",
    "        #    println(\"SE: yes, a_Li = \", a_Li)\n",
    "        #end\n",
    "\n",
    "        #return log10((integration_CL(a_Li[1], inputs_CL, conds) * (L/x_int -1) - integration_SE(a_Li[1], inputs_SE, conds) )^2)\n",
    "        return (1+integration_SE(a_Li, inputs_SE, conds)/integration_CL(a_Li, inputs_CL, conds) - conds.L/conds.x_int )^2#, integration_SE(a_Li, inputs_SE, conds), integration_CL(a_Li, inputs_CL, conds)\n",
    "    end\n",
    "\n",
    "    function func_to_solve_a_int_vec(a_Li; inputs_CL, inputs_SE, conds)\n",
    "\n",
    "        L = conds.L\n",
    "        x_int = conds.x_int\n",
    "\n",
    "        return return log10((integration_CL(a_Li, inputs_CL, conds) * (L - x_int) - integration_SE(a_Li, inputs_SE, conds) * x_int)^2)\n",
    "\n",
    "    end\n",
    "\n",
    "    function optimize_a_int(a_int0_vec; lx, ux, inputs_CL, inputs_SE, conds)\n",
    "    \n",
    "        function to_be_optimzed(a_int_vec)\n",
    "            return func_to_solve_a_int_vec(a_int_vec; inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds)\n",
    "        end\n",
    "        \n",
    "       \n",
    "        res = optimize(to_be_optimzed, lx, ux, a_int0_vec,  Fminbox(NelderMead())) #NelderMead is faster than LBFGS, and the both have the same accuracy.\n",
    "        # LBFGS() NelderMead()\n",
    "        return res\n",
    "    \n",
    "    end\n",
    "\n",
    "    #Function to calculate the average σ in the calculated region\n",
    "    function trapezoid_integral_sigma(a_range,  xbyL, inputs, conds)\n",
    "        \n",
    "        sum = 0\n",
    "    \n",
    "        for n = 1:length(a_range)-1\n",
    "            sum += (sigma_el(a_range[n+1]; inputs) + sigma_el(a_range[n]; inputs) ) * (xbyL[n+1] - xbyL[n]) * 0.5\n",
    "        end\n",
    "        \n",
    "        return sum/conds.L\n",
    "        \n",
    "    end\n",
    "\n",
    "    #Function to adjust a figure\n",
    "    function set_options(ax, xlabel, ylabel, title; grid=true, gridy=false, legend=false)\n",
    "\n",
    "        ax.set_xlabel(xlabel, fontsize = 12)\n",
    "        ax.set_ylabel(ylabel, fontsize = 12)\n",
    "        ax.set_title(title, fontsize = 12)\n",
    "        PyPlot.tick_params(labelsize=10)\n",
    "        if grid\n",
    "            if gridy\n",
    "                ax.grid(axis=\"y\")\n",
    "            else\n",
    "                ax.grid()\n",
    "            end\n",
    "        end\n",
    "\n",
    "        legend&& ax.legend()\n",
    "\n",
    "    end\n",
    "    \n",
    "    \n",
    "    \n",
    "    # plot σ_el of SE and CL as a function of a_Li\n",
    "    function plot_σ_el(a_range, inputs_SE, inputs_CL)\n",
    "        fig = PyPlot.figure(figsize=(6, 2))\n",
    "        ax1=fig.add_subplot(121)\n",
    "        ax1.plot(log10.(a_range), log10.(sigma_el.(a_range, inputs = inputs_SE)))\n",
    "        set_options(ax1, \"log10(a_Li)\",\"log10(σ_el)\", \"a_Li vs. σ_el of SE\")\n",
    "        ax2=fig.add_subplot(122)\n",
    "        ax2.plot(log10.(a_range), log10.(sigma_el.(a_range, inputs = inputs_CL)))\n",
    "        set_options(ax2, \"log10(a_CL)\",\"log10(σ_el)\", \"a_Li vs. σ_el of CL\")\n",
    "        PyPlot.tight_layout()\n",
    "    end\n",
    "    \n",
    "    #plot the function H (the one to determine μ_int)\n",
    "    function plot_H(H, ind)\n",
    "        fig = PyPlot.figure(figsize=(3, 2))\n",
    "        ax1=fig.add_subplot(111)\n",
    "        ax1.plot(log10.(range(1,length(H))), log10.(H))\n",
    "        ax1.axvline(x = log10(ind), ymin = 0, ymax =1, linestyle = \"dotted\", color = \"grey\")\n",
    "        set_options(ax1, \"log10(point)\",\"log10(H (function to determine μ_int))\", \"Check if the local minimum appeared properly\")\n",
    "    end\n",
    "    \n",
    "    function plot_data(a_range, xbyL, ind, oxlim, conds, inputs_SE, inputs_CL,  H)\n",
    "        R = 8.31446262\n",
    "    \n",
    "        fig = PyPlot.figure(figsize=(8, 8))\n",
    "        fig.suptitle(conds.fname)\n",
    "        ax=fig.add_subplot(221)\n",
    "        ax.plot(xbyL .* conds.L .* 1e+4, R .* conds.T .* log.(a_range) ./1000 ./ 96.4853)\n",
    "        set_options(ax, \"Distance / µm\",\"\\$µ\\\\mathrm{_{Li}}\\$ / \\$\\\\mathrm{ eV}\\$\", \"Overall view\")\n",
    "        ax.axhline(y = oxlim/ 96.4853,  xmin = 0, xmax = 1, color = \"blue\", linestyle = \"dashed\")\n",
    "        ax.axvline(x = conds.x_int * 1e+4, ymin = 0, ymax = 1, linestyle = \"dotted\", color = \"grey\")\n",
    "\n",
    "        ax=fig.add_subplot(222)\n",
    "        ax.plot(xbyL .* conds.L .* 1e+4, R .* conds.T .* log.(a_range) ./1000 ./ 96.4853)\n",
    "        set_options(ax, \"Distance / µm\",\"\\$µ\\\\mathrm{_{Li}}\\$ / \\$\\\\mathrm{ eV}\\$\", \"Magnified view\")\n",
    "        ax.axhline(y = oxlim/ 96.4853,  xmin = 0, xmax = 1, color = \"blue\", linestyle = \"dashed\")\n",
    "        ax.axvline(x = conds.x_int * 1e+4, ymin = 0, ymax = 1, linestyle = \"dotted\", color = \"black\")\n",
    "        ax.axvline(x = xbyL[ind]*conds.L * 1e+4, ymin = 0, ymax = 1, linestyle = \"dotted\", color = \"black\")\n",
    "        ax.set_xlim(-0.01, conds.x_int * 1e+4 * 10)\n",
    "        ind_right =  findall(abs.(xbyL .- xbyL[ind+1]*10) .== minimum(abs.(xbyL .- xbyL[ind+1]*10)))[1]\n",
    "\n",
    "        \"\"\"a_right = R .* conds.T .* log.(a_range[ind_right]) ./1000  ./ 96.4853\n",
    "        if a_right > oxlim\n",
    "            PyPlot.ylim(top = a_right + 50)\n",
    "        else\n",
    "            PyPlot.ylim(top = oxlim/ 96.4853 + 50)\n",
    "        end\"\"\"\n",
    "        \n",
    "        \"\"\"ax=fig.add_subplot(323)\n",
    "        ax.plot(log10.(range(1,length(H))), log10.(H))\n",
    "        ax.axvline(x = log10(ind), ymin = 0, ymax =1, linestyle = \"dotted\", color = \"grey\")\n",
    "        set_options(ax, \"log10(point)\",\"log10(H (function to determine μ_int))\", \"Check if the local minimum appeared properly\")\"\"\"\n",
    "        \n",
    "        ax=fig.add_subplot(223)\n",
    "        ax.plot(log10.(a_range), log10.(sigma_el.(a_range, inputs = inputs_SE)))\n",
    "        set_options(ax, \"log\\$\\\\mathrm{_{10}}(a\\\\mathrm{_{Li}})\\$\",\"log\\$\\\\mathrm{_{10}}(σ\\\\mathrm{_{ele}})\\$\", \"\\$σ\\\\mathrm{_{ele}}  \\\\mathrm{ vs.} a\\\\mathrm{_{Li}}\\$ of SE\")\n",
    "        ax=fig.add_subplot(224)\n",
    "        ax.plot(log10.(a_range), log10.(sigma_el.(a_range, inputs = inputs_CL)))\n",
    "        set_options(ax, \"log\\$\\\\mathrm{_{10}}(a\\\\mathrm{_{Li}})\\$\",\"log\\$\\\\mathrm{_{10}}(σ\\\\mathrm{_{ele}})\\$\", \"\\$σ\\\\mathrm{_{ele}}  \\\\mathrm{ vs.} a\\\\mathrm{_{Li}}\\$ of CL\")\n",
    "        PyPlot.tight_layout()\n",
    "    \n",
    "        PyPlot.savefig(conds.savepath * conds.fname * \".png\") \n",
    "    \n",
    "    end\n",
    "\n",
    "    #Function to save a potential profile in a text file\n",
    "    function save_profile_in_txt(conds, x, y)\n",
    "\n",
    "        open(conds.savepath * conds.fname * \".txt\", \"w\") do io\n",
    "            println(io, \"x / um ,myu_Li / eV\")\n",
    "            for i in 1:size(x)[1]\n",
    "                println(io, x[i], \",\", y[i])\n",
    "            end\n",
    "        end  \n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to save a potential profile in a text file\n",
    "    function save_key_results(a_range, xbyL, ind, conds, inputs_SE, inputs_CL, σ_int_SE, r_tot)\n",
    "        R = 8.31446262\n",
    "        \n",
    "        open(conds.savepath * \"KeyResults_\"*conds.fname * \".txt\", \"w\") do io\n",
    "            println(io, \"----------- Properties of SE -----------\")\n",
    "            println(io, \"σ_ion_SE: \", \"\\t\", inputs_SE.σ_ion, \" S/cm\")\n",
    "            println(io, \"σ⁰ₕ_SE: \", \"\\t\", inputs_SE.σ⁰ₕ, \" S/cm\")\n",
    "            println(io, \"σ⁰ₑ_SE: \", \"\\t\", inputs_SE.σ⁰ₑ, \" S/cm\")\n",
    "            println(io, \"expo⁰ₕ _SE: \", \"\\t\", inputs_SE.expo⁰ₕ)\n",
    "            println(io, \"expo⁰ₑ _SE: \", \"\\t\", inputs_SE.expo⁰ₑ)\n",
    "            println(io, \"pin_aLi _SE: \", \"\\t\", inputs_SE.pin_aLi, \" V\")\n",
    "            println(io, \"----------- Properties of coating layer -----------\")\n",
    "            println(io, \"σ_ion_CL: \", \"\\t\", inputs_CL.σ_ion, \" S/cm\")\n",
    "            println(io, \"σ⁰ₕ_CL: \", \"\\t\", inputs_CL.σ⁰ₕ, \" S/cm\")\n",
    "            println(io, \"σ⁰ₑ_CL: \", \"\\t\", inputs_CL.σ⁰ₑ, \" S/cm\")\n",
    "            println(io, \"expo⁰ₕ _CL: \", \"\\t\", inputs_CL.expo⁰ₕ)\n",
    "            println(io, \"expo⁰ₑ _CL: \", \"\\t\", inputs_CL.expo⁰ₑ)\n",
    "            println(io, \"pin_aLi _CL: \", \"\\t\", inputs_CL.pin_aLi, \" V\")\n",
    "            println(io, \"----------- Other conditions -----------\")\n",
    "            println(io, \"L: \", \"\\t\", conds.L*1e+4, \" um\")\n",
    "            println(io, \"x_int: \", \"\\t\", conds.x_int*1e+4, \" um\")\n",
    "            println(io, \"i_ext: \", \"\\t\", conds.i_ext, \" A/cm2\")\n",
    "            println(io, \"E_left: \", \"\\t\", conds.E_left, \" V\")\n",
    "            println(io, \"E_right: \", \"\\t\", conds.E_right, \" V\")\n",
    "            println(io, \"E_oxlim: \", \"\\t\", conds.E_oxlim, \" V\")\n",
    "            println(io, \"T: \", \"\\t\", conds.T, \" K\")\n",
    "            println(io, \"r: \", \"\\t\", conds.r)\n",
    "            println(io, \"----------- Key results -----------\")\n",
    "            println(io, \"μ_int: \", \"\\t\", R*conds.T*log(a_range[ind+1])/1000/ 96.4853, \" eV\")\n",
    "            println(io, \"σ_int_SE: \", \"\\t\", σ_int_SE, \" S/cm\")\n",
    "            println(io, \"r_total: \", \"\\t\", r_tot, \" Ω cm2\")\n",
    "            println(io, \"interface index: \", \"\\t\", ind)\n",
    "            println(io, \"interface estimatetion error: \", \"\\t\", abs(xbyL[ind] * conds.L* - conds.x_int)/conds.x_int * 100, \" %\")\n",
    "            \n",
    "\n",
    "    \n",
    "        end  \n",
    "\n",
    "    end\n",
    "    \n",
    "    #Function to calculate total ion conductivity per unit area\n",
    "    function calc_r_ion_total(inputs_SE, inputs_CL, conds)\n",
    "    \n",
    "        return conds.L / inputs_SE.σ_ion + conds.x_int / inputs_CL.σ_ion\n",
    "    \n",
    "    end\n",
    "\n",
    "end\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Main.SolveR"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#In this tab, you compile a module called \"SolveR\", which gathers the functions necessary for calculating the r parameter. \n",
    "#If you do not need to edit these functions, simply execute this tab to compile the module.\n",
    "#If you do not execute this tab, you will not be able to calculate the Li chemical potential distribution.\n",
    "\n",
    "##For those who are not familiar with Jupyter Notebook: \n",
    "#you do not need to execute this tab each time you calculate the Li chemical potential distribution. \n",
    "#Once you have executed this tab, you only need to compile the parameter input tab (if you are changing parameters) and the calculation execution tab.\n",
    "\n",
    "\n",
    "module SolveR\n",
    "\n",
    "    using ..CalcProf\n",
    "    using Optim\n",
    "    using PyPlot\n",
    "    \n",
    "    #Function to estimate r0\n",
    "    function estimate_r0(inputs, conds)\n",
    "    \n",
    "        #σel_max = maximum(CalcProf.sigma_el.(a_range; inputs = inputs))\n",
    "        σel_mid = CalcProf.sigma_el(exp((conds.E_right + conds.E_left) * 0.5  * -conds.F / conds.R / conds.T) ; inputs = inputs) \n",
    "        k = -conds.F * (conds.E_right - conds.E_left) / conds.L\n",
    "        return inputs.σ_ion * (conds.i_ext - σel_mid * k) / σel_mid / (conds.i_ext + inputs.σ_ion * k)\n",
    "        \n",
    "    end\n",
    "\n",
    "    #Function to define integrand\n",
    "    function integrand_r(r; a_Li, inputs, conds)\n",
    "\n",
    "        return inputs.σ_ion * CalcProf.sigma_el(a_Li, inputs = inputs) / (inputs.σ_ion - r * CalcProf.sigma_el(a_Li, inputs = inputs))\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to perfrom trapezoidal integration\n",
    "    function trapezoid_integral_r(r; a_left, a_right, f, inputs, conds, N)\n",
    "\n",
    "        x1 = conds.R * conds.T * log(a_right)\n",
    "        x0 = conds.R * conds.T * log(a_left)\n",
    "        dx = (x1 - x0) / N\n",
    "\n",
    "        integ = (f(r, a_Li = a_left, inputs = inputs, conds = conds) + f(r, a_Li = a_right, inputs = inputs, conds = conds)) / 2\n",
    "        xn = range(x0, step = dx, length = N)\n",
    "\n",
    "        for n = 2:N\n",
    "            x = xn[n]\n",
    "            integ += f(r, a_Li = exp(x / conds.R / conds.T), inputs = inputs, conds = conds)\n",
    "        end\n",
    "\n",
    "        return integ*dx\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to define integration_CL, which is the integration from left edge to arbitral position in the coat layer\n",
    "    function integration_CL_r(r; a_Li, inputs_CL, conds)\n",
    "        \n",
    "        a_left = exp(-1* conds.E_left * conds.F / conds.R / conds.T)\n",
    "\n",
    "        return trapezoid_integral_r(r,  a_left = a_left, a_right = a_Li, f = integrand_r, inputs = inputs_CL, conds = conds, N = 1000)\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to define integration_CL, which is the integration from the arbitral postion in the solid electrolyte to the right edge\n",
    "    function integration_SE_r(r; a_Li, inputs_SE, conds)\n",
    "\n",
    "        a_right = exp(-1* conds.E_right * conds.F / conds.R / conds.T)\n",
    "\n",
    "        return trapezoid_integral_r(r, a_left = a_Li, a_right = a_right,  f = integrand_r, inputs = inputs_SE, conds = conds, N = 1000)\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to solve a_int\n",
    "    function func_to_solve_a_int_r(r; a_Li, inputs_CL, inputs_SE, conds)\n",
    "\n",
    "        return integration_CL_r(r, a_Li = a_Li, inputs_CL = inputs_CL, conds = conds) * (conds.L - conds.x_int) - integration_SE_r(r, a_Li = a_Li, inputs_SE = inputs_SE, conds = conds) * conds.x_int\n",
    "\n",
    "    end\n",
    "    \n",
    "    #Finding the index corresponding to the interface\n",
    "    function solve_ind(r; a_range, inputs_CL, inputs_SE, conds)\n",
    "        \n",
    "        H = zeros(length(a_range))\n",
    "    \n",
    "        for n = 1:length(a_range)\n",
    "            H[n] = func_to_solve_a_int_r(r, a_Li = a_range[n], inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds)\n",
    "        end\n",
    "    \n",
    "        ind = findall(abs.(H) .== minimum(abs.(H)))[1]\n",
    "        \n",
    "        return ind\n",
    "    end\n",
    "\n",
    "    #Function to define integrand\n",
    "    function integrand_iext(r; a_Li, inputs, conds)\n",
    "\n",
    "        return (1+r) * inputs.σ_ion * CalcProf.sigma_el(a_Li, inputs = inputs) / (inputs.σ_ion - r * CalcProf.sigma_el(a_Li, inputs = inputs))\n",
    "\n",
    "    end\n",
    "\n",
    "    #Function to perfrom trapezoidal integration\n",
    "    function trapezoid_integral_iext(r; a_range, ind, f, inputs_CL, inputs_SE, conds)\n",
    "\n",
    "        dx = conds.R * conds.T * ( log(a_range[end]) - log(a_range[1])) / length(a_range)\n",
    "        \n",
    "\n",
    "        integ = (f(r, a_Li = a_range[1], inputs = inputs_CL, conds = conds) + f(r, a_Li = a_range[end], inputs = inputs_SE, conds = conds)) / 2\n",
    "        \n",
    "\n",
    "        for n = 2:length(a_range)\n",
    "            if n <= ind\n",
    "                integ += f(r, a_Li = a_range[n], inputs = inputs_CL, conds = conds)\n",
    "            else\n",
    "                integ += f(r, a_Li = a_range[n], inputs = inputs_SE, conds = conds)\n",
    "            end\n",
    "        end\n",
    "\n",
    "        return integ*dx\n",
    "\n",
    "    end\n",
    "\n",
    "    function func_to_solve(r_vec; a_range, f, inputs_CL, inputs_SE, conds)\n",
    "        #println(conds.i_ext * conds.L)\n",
    "        ind = solve_ind(r_vec[1], a_range = a_range, inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds)\n",
    "        #println(ind)\n",
    "        return log10((trapezoid_integral_iext(r_vec[1], a_range = a_range, ind = ind, f = f, inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds) / conds.F - conds.i_ext * conds.L)^2)\n",
    "        #return (trapezoid_integral_iext(r_vec[1], a_range = a_range, ind = ind, f = f, inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds) / conds.F - conds.i_ext * conds.L)^2\n",
    "\n",
    "    end\n",
    "\n",
    "    function optimize_r(r0_vec; a_range, f, inputs_CL, inputs_SE, conds)\n",
    "    \n",
    "        function to_be_optimzed(r_vec)\n",
    "            return func_to_solve(r_vec; a_range = a_range, f = f, inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds)\n",
    "        end\n",
    "        \n",
    "        res = optimize(to_be_optimzed, r0_vec,  NelderMead()) #NelderMead is faster than LBFGS, and the both have the same accuracy.\n",
    "        # LBFGS() NelderMead()\n",
    "        return res\n",
    "    \n",
    "    end\n",
    "\n",
    "    #Function to check if r is properly optimized.\n",
    "    function plot_r_optimizer(a_range, inputs_SE, inputs_CL, conds)\n",
    "        expo = [-2.,-1.,0., 1., 2., 3., 4., 5., 6. ,7.]\n",
    "        coef = [1,2,5]\n",
    "        x_axis = []\n",
    "        y_axis = []\n",
    "\n",
    "\n",
    "        for e in expo\n",
    "            for c in coef\n",
    "                append!(x_axis, c * 10^e)  \n",
    "            end\n",
    "        end\n",
    "\n",
    "\n",
    "        append!(x_axis, [conds.r*0.2, conds.r*0.5, conds.r/1.2, conds.r/1.1, conds.r, conds.r*1.1, conds.r*1.2, conds.r*1,5, conds.r*2.0, conds.r*5.0])\n",
    "        x_axis = sort!(x_axis)\n",
    "\n",
    "        if conds.i_ext < 0\n",
    "            x_axis = x_axis .*-1\n",
    "        end\n",
    "\n",
    "        j = 1\n",
    "        try\n",
    "            for x in x_axis\n",
    "                append!(y_axis, func_to_solve([x], a_range = a_range, f = integrand_iext, inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds) )\n",
    "                j+=1\n",
    "            end\n",
    "        catch\n",
    "            println(\"\")\n",
    "        end\n",
    "        \n",
    "        fig = PyPlot.figure(figsize=(6, 6))\n",
    "        ax=fig.add_subplot(111)\n",
    "        ax.plot(x_axis[1:j-1], y_axis)\n",
    "        CalcProf.set_options(ax, \"log10(| r |)\",\"r_optim\", \"Check if r is properly optimized.\")\n",
    "    end\n",
    "\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "main (generic function with 1 method)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#In this tab, you compile a module the main function to calculate the Li chemical potential distribution. \n",
    "#If you do not need to edit these functions, simply execute this tab to compile the module.\n",
    "#If you do not execute this tab, you will not be able to calculate the Li chemical potential distribution.\n",
    "\n",
    "##For those who are not familiar with Jupyter Notebook: \n",
    "#you do not need to execute this tab each time you calculate the Li chemical potential distribution. \n",
    "#Once you have executed this tab, you only need to compile the parameter input tab (if you are changing parameters) and the calculation execution tab.\n",
    "\n",
    "using .CalcProf\n",
    "using .SolveR\n",
    "using Optim\n",
    "\n",
    "\n",
    "mutable struct basic_outputs\n",
    "    \n",
    "    μ_int ::Union{Nothing, Float64}\n",
    "    σ_avg ::Union{Nothing, Float64}\n",
    "    σ_int_SE ::Union{Nothing, Float64}\n",
    "    r_tot ::Union{Nothing, Float64}\n",
    "    ind_int ::Union{Nothing, Int64}\n",
    "    \n",
    "end\n",
    "\n",
    "\n",
    "function main(inputs_SE, inputs_CL, conds)\n",
    "    \n",
    "    F = conds.F\n",
    "    R = conds.R\n",
    "    T = conds.T\n",
    "    \n",
    "    L = conds.L\n",
    "    i_ext = conds.i_ext\n",
    "    \n",
    "    \n",
    "    #ln(Li activity) at left & right edges\n",
    "    E_left = conds.E_left\n",
    "    E_right = conds.E_right\n",
    "    \n",
    "    #Defining a calculation range\n",
    "    E_rangeR = range(E_left, E_right, length = 20000)\n",
    "    a_rangeR =  exp.(E_rangeR .* -F ./ R ./ T) \n",
    "    E_range = range(E_left, E_right, length = 20000)\n",
    "    a_range =  exp.(E_range .* -F ./ R ./ T)\n",
    "    \n",
    "    \n",
    "\n",
    "\n",
    "    r0 = 0.0\n",
    "    if i_ext != 0.0\n",
    "        if i_ext > 0 \n",
    "            r0 = SolveR.estimate_r0(inputs_CL, conds)\n",
    "            res = SolveR.optimize_r([r0]; a_range = a_rangeR, f = SolveR.integrand_iext, inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds)\n",
    "            conds.r = Optim.minimizer(res)[1]\n",
    "            println(\"r has been optimized. r =  \", conds.r)\n",
    "        else\n",
    "            r0 = SolveR.estimate_r0(inputs_CL, conds)\n",
    "            res = SolveR.optimize_r([r0]; a_range = a_rangeR, f = SolveR.integrand_iext, inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds)\n",
    "            conds.r = Optim.minimizer(res)[1]\n",
    "            println(\"r has been optimized. r =  \", conds.r)\n",
    "        end\n",
    "    end\n",
    "    \n",
    "    \n",
    "    \n",
    "    #SolveR.plot_r_optimizer(a_range, inputs_SE, inputs_CL, conds)\n",
    "    \n",
    "    \n",
    "    \n",
    "    #Finding the index corresponding to the interface\n",
    "    \n",
    "    H = CalcProf.func_to_solve_a_int.(a_range; inputs_CL = inputs_CL, inputs_SE = inputs_SE, conds = conds)\n",
    "    ind = findall(H .== minimum(H))[1]\n",
    "    #PyPlot.plot(log10.(H))\n",
    "    \n",
    "    \n",
    "    \n",
    "    integration_entire_range = CalcProf.trapezoid_integral(a_range[ind],  a_left = a_range[1], f = CalcProf.integrand, inputs = inputs_CL, conds = conds, N = 1000) + CalcProf.trapezoid_integral(a_range[end],  a_left = a_range[ind+1], f = CalcProf.integrand, inputs = inputs_SE, conds = conds, N = 1000)\n",
    "    integration_CL_range = CalcProf.trapezoid_integral(a_range[ind],  a_left = a_range[1], f = CalcProf.integrand, inputs = inputs_CL, conds = conds, N = 1000)\n",
    "    x_CL = CalcProf.trapezoid_integral.(a_range[1:ind],  a_left = a_range[1], f = CalcProf.integrand, inputs = inputs_CL, conds = conds, N = 1000)\n",
    "    x_SE = integration_CL_range .+ CalcProf.trapezoid_integral.(a_range[ind+1:end],  a_left = a_range[ind+1], f = CalcProf.integrand, inputs = inputs_SE, conds = conds, N = 1000)\n",
    "    x = [x_CL, x_SE]\n",
    "    x = vcat(x...)\n",
    "    xbyL = x ./ integration_entire_range\n",
    "    \n",
    "    #Saving the calculated pootential profile in a text file \n",
    "    CalcProf.save_profile_in_txt(conds, xbyL .* L .* 1e+4, R .* T .* log.(a_range)./1000 ./ 96.4853)\n",
    "    \n",
    "    σ_int_SE = CalcProf.sigma_el(a_range[ind+1], inputs = inputs_SE)\n",
    "    \n",
    "    #σ_avg = CalcProf.trapezoid_integral_sigma(a_range[ind+1:end],  xbyL[ind+1:end], inputs_SE, conds)\n",
    "    #println(\"σ_avg = \", σ_avg)\n",
    "    #println(\"int index = \", ind)\n",
    "    #println(\"μ_int = \", R*T*log(a_range[ind+1])/1000, \" kJ / mol\")\n",
    "    \n",
    "    #Calculating ionic conduction resistance per unit area\n",
    "    r_tot = CalcProf.calc_r_ion_total(inputs_SE, inputs_CL, conds)\n",
    "    \n",
    "    oxlim = -conds.E_oxlim * F/1000\n",
    "    CalcProf.plot_data(a_range, xbyL, ind, oxlim, conds, inputs_SE, inputs_CL,  H)\n",
    "    \n",
    "    CalcProf.save_key_results(a_range, xbyL, ind, conds, inputs_SE, inputs_CL, σ_int_SE, r_tot)\n",
    "    \n",
    "    outputs = basic_outputs(R*T*log(a_range[ind+1])/1000, nothing,  σ_int_SE, r_tot, ind)\n",
    "    \n",
    "    return outputs\n",
    "\n",
    "\n",
    "end\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAMUCAYAAADKQQqvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAA9hAAAPYQGoP6dpAADH+klEQVR4nOzdd3gUVdsG8Ht7simEEFKAkNAhdBI6GDoIgqKogFICqICogA1eC+CrgCiKrwooJaGL0ixEBKSIUhJK6J2ETkIIaYRk2/n+4MtKKmmbmd3cv+vaK5PZszPPs2XOPjszZxRCCAEiIiIiIqISUkodABERERER2TcWFUREREREVCosKoiIiIiIqFRYVBARERERUamwqCAiIiIiolJhUUFERERERKXCooKIiIiIiEqFRQUREREREZUKiwoiIiIiIioVFhVERBXE3r17MX36dCQnJ9tsHfPnz0dERITNlk9ERPLEooKIqILYu3cvZsyYwaKCiIjKHIsKIiIiIiIqFRYVREQVwPTp0/H2228DAGrVqgWFQgGFQoFdu3YBANauXYv27dvDxcUFrq6u6N27N44cOZJjGZcuXcLgwYNRrVo16HQ6+Pj4oHv37oiJiQEABAYG4uTJk9i9e7d1+YGBgeWYJRERSUUtdQBERGR7Y8aMQVJSEr7++mts2LABfn5+AICgoCDMnDkT77//PsLCwvD+++/DYDDgs88+Q+fOnREVFYWgoCAAQN++fWE2mzFnzhzUrFkTiYmJ2Lt3r/Vwqo0bN2LQoEGoVKkS5s+fDwDQ6XSS5EtEROVLIYQQUgdBRES29/nnn+Ptt99GbGysdQ/C1atXUbt2bYwbNw7/+9//rG3T09NRr149PPbYY1i7di3u3LkDLy8vzJs3D2+88UaB62jSpAm8vLyse0CIiKhi4J4KIqIK7I8//oDJZMLw4cNhMpms852cnBAaGoqdO3cCADw9PVGnTh189tlnMJvN6Nq1K5o3bw6lkkfREhERz6kgIqrQ4uPjAQCtW7eGRqPJcVu7di0SExMBAAqFAn/++Sd69+6NOXPmoFWrVqhatSpef/11pKWlSZkCERHJAPdUEBFVYF5eXgCAdevWISAgoNC2AQEBWLJkCQDg3Llz+PHHHzF9+nQYDAYsXLjQ5rESEZF8saggIqogsk+avn//vnVe7969oVarcfHiRTzzzDNFXlb9+vXx/vvvY/369Th8+HCOdTy8fCIiqhhYVBARVRBNmzYFAHz11VcYMWIENBoNGjRogI8++gjvvfceLl26hD59+qBy5cqIj49HVFQUXFxcMGPGDBw7dgwTJkzAs88+i3r16kGr1WLHjh04duwYpkyZkmMdP/zwA9auXYvatWvDycnJul4iInJcHP2JiKgC+c9//oNly5bh1q1bsFgs2LlzJ7p06YKff/4ZX331FQ4dOoSsrCz4+vqidevWGDt2LLp3746EhAS8++672L9/P65evQqFQoHatWsjLCwMr732GlQqFQDg8uXLePnll7Fv3z6kpaUhICAAcXFx0iZNREQ2x6KCiIiIiIhKhaM/ERERERFRqbCoICIiIiKiUmFRQUREREREpcKigoiIiIiISoVFBRERERERlQqLCiIiIiIiKhUWFUREREREVCosKoiIiIiIqFRYVBARERERUamwqCAiIiIiolJhUUFERERERKXCooKIiIiIiEqFRQUREREREZUKiwoiIiIiIioVFhVERERERFQqLCqIiIiIiKhUWFSQw9u/fz+effZZ+Pn5QavVwtfXF4MGDcK+ffukDq1I4uLioFAoEBERYZ0XEREBhUKBuLi4MlnH9OnToVAoymRZRES2kL3dUygU2LVrV577hRCoW7cuFAoFunTpUu7xFaRLly554omLi0O/fv3g6ekJhUKBiRMn5rutL61du3YV+HyVBPsKKoxa6gCIbOnrr7/GxIkT0aZNG8yZMwcBAQG4cuUKvv32W3Tq1AlfffUVJkyYIHWYkhszZgz69OkjdRhERI/k5uaGJUuW5Pmivnv3bly8eBFubm7SBFaA+fPn55k3adIkHDhwAEuXLoWvry/8/Pzg6+uLffv2oU6dOhJEWTTsK6gwLCrIYf3zzz+YOHEi+vbti40bN0Kt/vftPnjwYAwcOBBvvPEGWrZsiY4dO5ZbXPfv34eTk5Osfu2pUaMGatSoIXUYRESP9Pzzz2PVqlX49ttv4e7ubp2/ZMkStG/fHqmpqRJGl1dQUFCeeSdOnECbNm3w1FNP5Zjfrl27coqqZNhXUGF4+BM5rFmzZkGhUGDBggU5CgoAUKvVmD9/PhQKBWbPng0A2LRpExQKBf788888y1qwYAEUCgWOHTtmnXfw4EEMGDAAnp6ecHJyQsuWLfHjjz/meFz27vqtW7di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cHV1xfbt2xEXF4fu3btDoVCge/fumDt3LqKjo3HlyhV2FERUpkaOHIkPP/wQCxcuxCeffFJgux9++AEajQa//fYbnJycrPM3bdqUo112gRAfH4/q1atb55tMJmvBUZ4qV64MlUqFYcOG4dVXX823Ta1atQA8iP3WrVt57s9vXkHYV1BpsagghzV16lT8/vvvGD9+PDZu3JijcDCbzRg3bhyEEJg6dWqOxw0ZMgSTJ09GREQELl26hOrVq1t/5QIeFAz16tXD0aNH8xQExaFQKKy/amXbvHkzrl+/jrp165Z4ubk9Kp/89O7dG2q1GhcvXnzkKBwajQaPPfYYtm3bhqtXr1pH0+rcuTPUajXef/99a8dBRFRWqlevjrfffhtnzpzBiBEjCmynUCigVqtz9AH379/HihUrcrR77LHHADwYyahVq1bW+evWrYPJZCrj6B9Nr9eja9euOHLkCJo1awatVltg265du2LOnDk4evRojkOgVq9eXeT1sa+g0mJRQQ6rY8eOmDdvHiZOnIhOnTphwoQJqFmzpvXidwcOHMC8efPQoUOHHI/z8PDAwIEDERERgeTkZLz11ltQKnMeKfjdd9/h8ccfR+/evTFy5EhUr14dSUlJOH36NA4fPoyffvrpkfE98cQTiIiIQMOGDdGsWTMcOnQIn332WZmPAV6UfHILDAzERx99hPfeew+XLl1Cnz59ULlyZcTHxyMqKgouLi45Rh7p3r073nzzTQCw/srk7OyMDh06YOvWrWjWrBm8vb3LNC8iouwvpoXp168fvvjiCwwdOhQvv/wy7ty5g88//zzPjzqNGzfGkCFDMHfuXKhUKnTr1g0nT57E3LlzUalSpUduN23hq6++QqdOndC5c2eMGzcOgYGBSEtLw4ULF/Drr79ix44dAICJEydi6dKl6NevHz7++GP4+Phg1apVOHPmTJHXxb6CSotFBTm01157Da1bt8bcuXPx5ptv4s6dO/D09ESnTp3w999/o3379vk+LiwszDoG+sNjk2fr2rUroqKi8Mknn2DixIm4e/cuqlSpgqCgoDwn+RXkq6++gkajwaxZs5Ceno5WrVphw4YNeP/990ucb0EelU9+pk6diqCgIHz11VdYs2YNsrKy4Ovri9atW2Ps2LE52mZ3DvXq1cuxC7xHjx7YuXMnd2cTkWS6deuGpUuX4tNPP0X/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vyQ9TKFQWO/PtnnzZly/fr1EcXfo0AGVKlXCwoULC9xt36BBA9SrVw9Hjx5FSEhIvjc3N7cC17F+/XpUq1YN7dq1K3JcR48ezfH/33//XeTHEhGVN/YB7AOofHFPBTmEEydOWI8nTUhIwJ49exAeHg6VSoWNGzdaf/nJz8KFC7Fjxw7069cPNWvWRGZmJpYuXQoA6NGjBwDAzc0NAQEB+Pnnn9G9e3d4enrCy8sLgYGBeOKJJxAREYGGDRuiWbNmOHToED777LMSj4Pu6uqKuXPnYsyYMejRowdeeukl+Pj44MKFCzh69Ci++eYbAMB3332Hxx9/HL1798bIkSNRvXp1JCUl4fTp0zh8+DB++umnAtexbt06PP3008W6quzkyZORmpqKgIAA/PPPP5g/fz4A4I8//kC1atVQv379EuVLRFRa7APYB5AMSHueOFHpZI9KkX3TarXC29tbhIaGipkzZ4qEhIQ8j8k98se+ffvEwIEDRUBAgNDpdKJKlSoiNDRU/PLLLzket337dtGyZUuh0+kEADFixAghhBB3794Vo0ePFt7e3kKv14tOnTqJPXv2iNDQUBEaGmp9fPZIGT/99FOO5cbGxgoAIjw8PMf8yMhIERoaKlxcXIRerxdBQUHi008/zdHm6NGj4rnnnhPe3t5Co9EIX19f0a1bN7Fw4cICn7MLFy7kGbGjMNnP8cKFC0X9+vWFVqsVLVq0EH///bfo0KGDcHNzsz5XoaGhonHjxnmWERAQIPr165dnPgDx6quvFikOIqLc2AewDyD5UAjxiGERiMihzJkzB59//jlu3rxpHRO9MBEREQgLC0NsbCwCAwNtHyAREdkM+wCyFZ5TQVTBvPPOO0hISChSZ0JERI6FfQDZCosKIiIiIiIqFR7+REREREREpcI9FUREREREVCosKoiIiIiIqFRYVBARERERUamwqCAiIiIiolJhUUFERERERKXCooKIiIiIiEqFRQUREREREZUKiwoiIiIiIioVFhVERERERFQqLCqIiIiIiKhUWFQQEREREVGpsKggIiIiIqJSYVFBRERERESlwqKCiIiIiIhKhUUFERERERGVCosKIiIiIiIqFRYVRFSotWvXonHjxnB2doZCoUBMTEyh7Q8cOICBAweiZs2a0Ol08PHxQfv27fHmm29a20REREChUBR427Vrl22TIiKiRyru9h8Ajh07hrCwMNSqVQtOTk5wdXVFq1atMGfOHCQlJQH4tw84ePCgjTOg8qSWOgAikq/bt29j2LBh6NOnD+bPnw+dTof69esX2H7z5s0YMGAAunTpgjlz5sDPzw83b97EwYMH8cMPP2Du3Lk52oeHh6Nhw4Z5lhMUFFTmuRARUdEVd/sPAIsWLcL48ePRoEEDvP322wgKCoLRaMTBgwexcOFC7Nu3Dxs3biynDKi8saggogKdO3cORqMRL774IkJDQx/Zfs6cOahVqxb++OMPqNX/bl4GDx6MOXPm5GnfpEkThISElGnMRERUesXd/u/btw/jxo1Dz549sWnTJuh0Out9PXv2xJtvvoktW7bYMmSSGA9/IrtkMpnw2WefoVmzZtbdsg/fatasWSbr2bRpExQKBf7888889y1YsAAKhQLHjh0D8OBXnZdffhn+/v7Q6XSoWrUqOnbsiO3btxdrnVFRUXj++ecRGBgIZ2dneHt7Y+DAgbh48WKZ5JTt77//Rvfu3eHm5ga9Xo8OHTpg8+bN1vtHjhyJTp06AQCef/55KBQKdOnSpdBl3rlzB15eXjkKimxKJTc3RFR63P6Xni22/zNnzoRCocD333+fo6DIptVqMWDAgDLNg+SFvTzZpdGjR2Pq1Kno0aMHNm7ciIiICHh7ewMAJk2ahBkzZpTJep544gl4e3sjPDw8z30RERFo1aoVmjVrBgAYNmwYNm3ahA8//BBbt27F4sWL0aNHD9y5c6dY64yJiUHz5s3x1Vdf4Y8//sCXX36Jc+fO4emnny6TnABg9+7d6NatG1JSUrBkyRKsWbMGbm5u6N+/P9auXQsA+OCDD/Dtt98CeNBZ7Nu3D/Pnzy90ue3bt8eBAwfw+uuv48CBAzAajYW2N5vNMJlMOW5ms7lskiQih8Ttf+nYYvtvNpuxY8cOBAcHw9/fv8xiJTsjiOzMqlWrBADx/fff55gfHh4uAIhff/31kcsICAgQe/bsKdL6Jk+eLJydnUVycrJ13qlTpwQA8fXXX1vnubq6iokTJxYxi6Ixm83CaDSKxYsXCwDi7t271vsKyiEoKEjs3bu30OW2a9dOeHt7i7S0NOs8k8kkmjRpImrUqCEsFosQQoidO3cKAOKnn34qUryJiYmiU6dOAoAAIDQajejQoYOYNWtWjnVlv1b53VQqVZHWRUQVD7f/D8ht+3/r1i0BQAwePLhIuWW/XtHR0UVqT/aBeyrI7nz33Xdo1KgRXnrppRzzGzVqBADW0SXKyqhRo3D//n3rLzjAgxOMdTodhg4dap3Xpk0bRERE4OOPP8b+/fsf+St9foQQWLduHbp164Zq1apBrVZDo9FgzJgxUCqVcHZ2fuQyTp48ifbt2xd4/71793DgwAEMGjQIrq6u1vkqlQrDhg3DtWvXcPbs2WLHDgBVqlTBnj17EB0djdmzZ+PJJ5/EuXPnMHXqVDRt2hSJiYk52i9fvhzR0dE5bgcOHCjRuonI8XH7Xzgpt/9ELCrIrty9exd79uxB375989x37do1AECNGjWs/z/55JPw8vJCvXr1cnQK+T22oLaNGzdG69atrbvAzWYzVq5ciSeffBKenp7WdmvXrsWIESOwePFitG/fHp6enhg+fDhu3bpV5PxefvllDBkyBEFBQZg/f771C3rz5s1Rt27dfI9TzS0wMBB///13gfffvXsXQgj4+fnlua9atWoAUOxd9rmFhITg3XffxU8//YQbN25g0qRJiIuLy3OydqNGjRASEpLjFhwcXKp1E5Fj4vZfvtt/Ly8v6PV6xMbGFvux5DhYVJBduXr1KoQQ1o3fwzZt2gQvLy889thjsFgs6N+/Px577DHcvHkT69evx2uvvYZTp07leVxR2oaFhWH//v04ffo0tmzZgps3byIsLCzHcry8vDBv3jzExcXh8uXLmDVrFjZs2ICRI0cWKbezZ89i8eLFmDlzJr755hs89dRT6NixIwIDA3Hy5MkyGyWpcuXKUCqVuHnzZp77bty4Yc2lrGg0GkybNg0AcOLEiTJbLhFVLNz+l56ttv8qlQrdu3fHoUOHrAUeVTwsKsiueHh4AABOnz6dY/7evXuxZs0avP7661Cr1YiOjsa9e/fw5ptvQqPRoFmzZnj22WexYcOGPMssStshQ4bAyckJERERiIiIQPXq1dGrV68C46xZsyYmTJiAnj174vDhw0XK7fLlywDyXqPhjTfegMlkKrNOxcXFBW3btsWGDRtw//5963yLxYKVK1eiRo0ajxyLvCD5dVTAv69Xfl8GiIiKgtv/0rPl9n/q1KkQQuCll16CwWDIc7/RaMSvv/5a4thJ/nidCrIrNWvWxGOPPYaIiAjUqlULbdq0QVRUFGbOnIlevXrhvffeA/BgAx0bG2vthIAHwxDm96tRUdp6eHhg4MCBiIiIQHJyMt56660cQ6SmpKSga9euGDp0KBo2bAg3NzdER0djy5YtOUbt2L17N7p3744PP/wQH374YY44mjdvDr1ejw8++AAKhQL379/HokWLcOHCBQAo0+s5zJo1Cz179kTXrl3x1ltvQavVYv78+Thx4gTWrFkDhUJRouX27t0bNWrUQP/+/dGwYUNYLBbExMRg7ty5cHV1xRtvvJGj/YkTJ2AymfIsp06dOqhatWqJYiAix8Ttf9mw1fa/ffv2WLBgAcaPH4/g4GCMGzcOjRs3htFoxJEjR/D999+jSZMm6N+/v/UxO3bsQFxcXJ5l9e3bF3q9vqQpklQkPEmcqETi4+PFkCFDhIeHh9BqtaJJkybi888/F0aj0drmn3/+EU2aNClwGQ+PnPGottm2bt1qHaHo3LlzOe7LzMwUY8eOFc2aNRPu7u7C2dlZNGjQQEybNk3cu3fP2i57NI1p06blu47ffvtNNGzYUOh0OhEUFCS++uor8fHHHwulUpljpI7cORRlfm579uwR3bp1Ey4uLsLZ2Vm0a9cuz8gpxR39ae3atWLo0KGiXr16wtXVVWg0GlGzZk0xbNgwcerUKWu7wkZ/AiAWLVpUpPURUcXC7X/eHIoyPzdbbP+zxcTEiBEjRoiaNWsKrVYrXFxcRMuWLcWHH34oEhIShBCP7gNiY2OLtU6SB4UQQpRnEUNUHkwmE1q1aoXRo0dj7NixUCqViImJgbu7Oxo0aIDAwECsXLkSnTp1emRbuQoMDMTSpUvRoUMH6zytVovatWtbcyMiqmi4/ef2n6TBcyrIIanVamzevBl79uxBzZo14ePjg3feeQdZWVmlais33bt3h7Ozs/W2evVqqUMiIpIUt/9E0uCeCiIiIiIiKhXuqSAiIiIiolJhUUFERERERKXCooKIiIiIiErFrouKTz75BB06dIBer88xxvTDrly5gv79+8PFxQVeXl54/fXX870oS36EEHj88cehUCiwadOmsguciIiIiMiB2PXF7wwGA5599lm0b98eS5YsyXO/2WxGv379ULVqVfz999+4c+cORowYASEEvv7660cuf968eSW+CIzFYsGNGzfg5uZW4mUQEZUVIQTS0tJQrVq1HBfuIttgH0BEclIufYB0l8goO+Hh4aJSpUp55kdGRgqlUimuX79unbdmzRqh0+lESkpKocuMiYkRNWrUEDdv3hQAxMaNGwttn5mZKVJSUqy3U6dOFXphF9544403KW5Xr14tyWaWiunq1auSv9a88cYbb7lvtuwD7HpPxaPs27cPTZo0QbVq1azzevfujaysLBw6dAhdu3bN93EZGRkYMmQIvvnmG/j6+hZpXbNmzcKMGTPyzF+8eDEvNU9EksvIyMCYMWPg5uYmdSgVQvbzfPXqVbi7u0scTdkwGo3YunUrevXqBY1GI3U4ssbnqnj4fBVdSZ+r1NRU+Pv727QPcOii4tatW/Dx8ckxr3LlytBqtbh161aBj5s0aRI6dOiAJ598ssjrmjp1KiZPnmz9P/vFe+qppxyqQ9m2bRt69uzJD30R8PkqOj5XRVfS5yo1NRVjxozhoTjlJPt5dnd3d6g+QK/Xw93dnZ/TR+BzVTx8voqutM+VLfsA2RUV06dPz/cX/4dFR0cjJCSkSMvL78kTQhT4pP7yyy/YsWMHjhw5UqTlZ9PpdNDpdHnmazQah/uAOGJOtsTnq+j4XBVdcZ8rPq9ERGRLsisqJkyYgMGDBxfaJjAwsEjL8vX1xYEDB3LMu3v3LoxGY549GNl27NiBixcv5hlN6plnnkHnzp2xa9euIq2biIiIiKiikF1R4eXlBS8vrzJZVvv27fHJJ5/g5s2b8PPzAwBs3boVOp0OwcHB+T5mypQpGDNmTI55TZs2xZdffon+/fuXSVxERERERI5EdkVFcVy5cgVJSUm4cuUKzGYzYmJiAAB169aFq6srevXqhaCgIAwbNgyfffYZkpKS8NZbb+Gll16yHuN6/fp1dO/eHcuXL0ebNm3g6+ub78nZNWvWRK1atcozPSIiIiIiu2DXRcWHH36IZcuWWf9v2bIlAGDnzp3o0qULVCoVNm/ejPHjx6Njx45wdnbG0KFD8fnnn1sfYzQacfbsWWRkZJR7/EREREREjsCui4qIiAhEREQU2qZmzZr47bffCrw/MDAQQohCl/Go+4mIiIiIKjJeVpWIiIiIiEqFRQUREREREZUKiwoiIiIiIioVFhVERERERFQqLCqIiIiIiKhUWFQQEREREVGpsKggIiIiIqJSYVFBRERERESlwqKCiIiIiIhKhUUFERERERGVCosKIiIiIiIqFRYVRERERERUKiwqiIiIiIioVFhUEBERERFRqbCoICIiIiKiUmFRQUREREREpcKigoiIiIiISoVFBRERERERlQqLCiIiIiIiKhUWFUREREREVCosKoiIyC598skn6NChA/R6PTw8PPLcf+fOHfTp0wfVqlWDTqeDv78/JkyYgNTU1CItXwiBxx9/HAqFAps2bSrb4ImIHAyLCiIisksGgwHPPvssxo0bl+/9SqUSTz75JH755RecO3cOERER2L59O8aOHVuk5c+bNw8KhaIsQyYiclhqqQMgIiIqiRkzZgAAIiIi8r2/cuXKOQqOgIAAjB8/Hp999tkjl3306FF88cUXiI6Ohp+f3yPbZ2VlISsry/p/9t4Qo9EIo9H4yMfbg+w8HCUfW+JzVTx8voqupM9VeTy3LCqIiKhCuHHjBjZs2IDQ0NBC22VkZGDIkCH45ptv4OvrW6Rl/1979x5VVZ3/f/x1UDwJjGGeFFHslPgNGQ1JspF0IknU/DI19iUxdSq1URuydKqFXRCd+DJjNo7ZZfpWBk5rdRktc5UzSV5aNhkyJqX5C0udTkJkgYoIHo6wf3+4OEHczuEc5Bx4PtZyzdqf/dl7v/e70Tdv9i07O9vZ5DS0detWBQUFtSteX5WXl9fZIfgNcuUe8uU6d3NVVVXVQZH8iKYCANClzZgxQ2+//baqq6uVnJysF198sdX5ixcvVnx8vG6++WaXj7F06VItWbLEuVxRUaGIiAglJSWpT58+7Y7dlzgcDuXl5WnixIkKDAzs7HB8GrlyD/lyXXtz5eqzZJ6gqQAA+IzMzMxmf+PfUEFBgeLi4lze5+rVq7Vs2TIVFRXp4Ycf1pIlS/Tss882O3fz5s3avn279u3b51bcZrNZZrO5yXhgYGCX+yGpK55TRyFX7iFfrnM3VxcirzQVAACfkZaWptTU1FbnWK1Wt/YZFhamsLAwRUVFqV+/fho/frwee+yxZp+V2L59uw4fPtzkbVK33nqrxo8fr507d7p1bADoLmgqAAA+w2KxyGKxdNj+DcOQpEYPVTeUnp6uefPmNRobOXKkVq9ereTk5A6LCwD8HU0FAMAv2Ww2lZeXy2azqba2VoWFhZKkyMhIhYSEaMuWLfruu+90zTXXKCQkRAcPHtRDDz2k6667znm1o7i4WImJiVq/fr3GjBnjvKrxU0OGDNHll19+Ac8OAPwLTQUAwC9lZGQoNzfXuRwbGytJ2rFjhxISEtS7d2+98MILWrx4sex2uyIiIjRt2jSlp6c7t3E4HCoqKrogb0YBgK6MpgIA4JdycnJa/EaFJN1www366KOPWt2H1Wp13hLVkrbWAwD4ojYAAAAAD9FUAAAAAPAITQUAAAAAj9BUAAAAAPAITQUAAAAAj9BUAAAAAPCIXzcVWVlZio+PV1BQkEJDQ5udY7PZlJycrODgYFksFi1atEg1NTVt7nv37t2aMGGCgoODFRoaqoSEBFVXV3v5DAAAAAD/59ffqaipqVFKSorGjh2rl156qcn62tpaTZ06VZdeeqk+/PBDlZWV6Y477pBhGFq7dm2L+929e7cmT56spUuXau3aterVq5c+/fRTBQT4dQ8GAAAAdAi/biqWL18uSS1+/Gjr1q06ePCgvvnmG4WHh0uSnnzySd15553KyspSnz59mt1u8eLFWrRoUaOvrg4bNsy7wQMAAABdhF83FW3ZvXu3RowY4WwoJGnSpEmy2+3au3evbrjhhibbHD9+XPn5+Zo5c6bi4+N1+PBhRUVFKSsrS+PGjWvxWHa7XXa73blcUVEhSXI4HHI4HF48q85Tfx5d5Xw6GvlyHblyXXtzRW4BAB2pSzcVpaWlGjBgQKOxvn37qlevXiotLW12myNHjkiSMjMztWrVKo0aNUrr169XYmKiDhw40OIVi+zsbOeVk4a2bt2qoKAgD8/Et+Tl5XV2CH6FfLmOXLnO3VxVVVV1UCQAAPhgU5GZmdnsD+cNFRQUKC4uzqX9mUymJmOGYTQ7Lkl1dXWSpPnz5+uuu+6SJMXGxmrbtm1at26dsrOzm91u6dKlWrJkiXO5oqJCERERSkpKavE2K3/jcDiUl5eniRMnKjAwsLPD8Xnky3XkynXtzVX91VMAADqCzzUVaWlpSk1NbXWO1Wp1aV9hYWHKz89vNHbixAk5HI4mVzDqDRw4UJIUHR3daHz48OGy2WwtHstsNstsNjcZDwwM7HI/JHXFc+pI5Mt15Mp17uaKvAIAOpLPNRUWi0UWi8Ur+xo7dqyysrL07bffOpuFrVu3ymw2a/To0c1uY7VaFR4erqKiokbjhw4d0pQpU7wSFwAAANCV+PU7Um02mwoLC2Wz2VRbW6vCwkIVFhaqsrJSkpSUlKTo6GjNnj1b+/bt07Zt2/TAAw/o7rvvdt6SVFxcrKioKO3Zs0fS+dulHnzwQT311FPasGGDvvrqKz322GP64osvNHfu3E47VwAAAMBX+dyVCndkZGQoNzfXuRwbGytJ2rFjhxISEtSjRw+9++67uueee3Tdddepd+/euv3227Vq1SrnNg6HQ0VFRY0eYrz//vt19uxZLV68WOXl5YqJiVFeXp6GDh164U4OAAAA8BN+3VTk5OS0+I2KekOGDNE777zT4nqr1SrDMJqMp6enN/pOBQAAAIDm+fXtTwAAAAA6H00FAAAAAI/QVAAAAADwCE0FAAAAAI/QVAAAAADwCE0FAAAAAI/QVAAAAADwCE0FAAAAAI/QVAAAAADwCE0FAAAAAI/QVAAA/FJWVpbi4+MVFBSk0NDQJuvLyso0efJkhYeHy2w2KyIiQmlpaaqoqGhz37t379aECRMUHBys0NBQJSQkqLq6ugPOAgC6BpoKAIBfqqmpUUpKihYuXNjs+oCAAN18883avHmzDh06pJycHL3//vtasGBBq/vdvXu3Jk+erKSkJO3Zs0cFBQVKS0tTQAAlEwBa0rOzAwAAoD2WL18uScrJyWl2fd++fRs1HJdddpnuuecePfHEE63ud/HixVq0aJHS09OdY8OGDfM8YADowmgqAADdQklJid58801df/31Lc45fvy48vPzNXPmTMXHx+vw4cOKiopSVlaWxo0b1+J2drtddrvduVx/i5XD4ZDD4fDeSXSi+vPoKufTkciVe8iX69qbqwuRW5oKAECXNmPGDL399tuqrq5WcnKyXnzxxRbnHjlyRJKUmZmpVatWadSoUVq/fr0SExN14MCBFq9YZGdnO6+cNLR161YFBQV550R8RF5eXmeH4DfIlXvIl+vczVVVVVUHRfIjmgoAgM/IzMxs9ofzhgoKChQXF+fyPlevXq1ly5apqKhIDz/8sJYsWaJnn3222bl1dXWSpPnz5+uuu+6SJMXGxmrbtm1at26dsrOzm91u6dKlWrJkiXO5oqJCERERSkpKUp8+fVyO1Zc5HA7l5eVp4sSJCgwM7OxwfBq5cg/5cl17c+XKCyo8RVMBAPAZaWlpSk1NbXWO1Wp1a59hYWEKCwtTVFSU+vXrp/Hjx+uxxx7TwIEDm8ytH4uOjm40Pnz4cNlsthaPYTabZTabm4wHBgZ2uR+SuuI5dRRy5R7y5Tp3c3Uh8kpTAQDwGRaLRRaLpcP2bxiGJDV6/qEhq9Wq8PBwFRUVNRo/dOiQpkyZ0mFxAYC/o6kAAPglm82m8vJy2Ww21dbWqrCwUJIUGRmpkJAQbdmyRd99952uueYahYSE6ODBg3rooYd03XXXOa92FBcXKzExUevXr9eYMWNkMpn04IMPatmyZYqJidGoUaOUm5urL774Qhs2bOi8kwUAH0dTAQDwSxkZGcrNzXUux8bGSpJ27NihhIQE9e7dWy+88IIWL14su92uiIgITZs2rdGrYh0Oh4qKiho9xHj//ffr7NmzWrx4scrLyxUTE6O8vDwNHTr0wp0cAPgZmgoAgF/Kyclp8RsVknTDDTfoo48+anUfVqvVeUtUQ+np6Y2aDwBA6/g8KAAAAACP0FQAAAAA8AhNBQAAAACP0FQAAAAA8AhNBQAAAACP0FQAAAAA8AhNBQAAAACP0FQAAAAA8AhNBQAAAACP0FQAAAAA8AhNBQAAAACP0FQAAAAA8AhNBQAAAACP0FQAAAAA8AhNBQAAAACP0FQAAAAA8AhNBQAAAACP+HVTkZWVpfj4eAUFBSk0NLTZOTabTcnJyQoODpbFYtGiRYtUU1PT6n5LS0s1e/ZshYWFKTg4WFdffbU2bNjQAWcAAAAA+D+/bipqamqUkpKihQsXNru+trZWU6dO1ZkzZ/Thhx/qtdde08aNG/X73/++1f3Onj1bRUVF2rx5s/bv369p06Zp+vTp2rdvX0ecBgAAAODX/LqpWL58uRYvXqyRI0c2u37r1q06ePCgXnnlFcXGxurGG2/Uk08+qRdeeEEVFRUt7nf37t269957NWbMGF1xxRV69NFHFRoaqk8++aSjTgUAAADwWz07O4COtHv3bo0YMULh4eHOsUmTJslut2vv3r264YYbmt1u3Lhxev311zV16lSFhobqjTfekN1uV0JCQovHstvtstvtzuX6psXhcMjhcHjnhDpZ/Xl0lfPpaOTLdeTKde3NFbkFAHSkLt1UlJaWasCAAY3G+vbtq169eqm0tLTF7V5//XVNnz5d/fr1U8+ePRUUFKS33npLQ4cObXGb7OxsLV++vMn41q1bFRQU1P6T8EF5eXmdHYJfIV+uI1euczdXVVVVHRQJAAA+2FRkZmY2+8N5QwUFBYqLi3NpfyaTqcmYYRjNjtd79NFHdeLECb3//vuyWCzatGmTUlJStGvXrhZvtVq6dKmWLFniXK6oqFBERISSkpLUp08fl2L1dQ6HQ3l5eZo4caICAwM7OxyfR75cR65c195ctXbLJwAAnvK5piItLU2pqamtzrFarS7tKywsTPn5+Y3GTpw4IYfD0eQKRr3Dhw/r6aef1oEDB/Tzn/9ckhQTE6Ndu3bpmWee0V//+tdmtzObzTKbzU3GAwMDu9wPSV3xnDoS+XIduXKdu7kirwCAjuRzTYXFYpHFYvHKvsaOHausrCx9++23GjhwoKTztyOZzWaNHj262W3qbxEICGj8DHuPHj1UV1fnlbgAAACArsSv3/5ks9lUWFgom82m2tpaFRYWqrCwUJWVlZKkpKQkRUdHa/bs2dq3b5+2bdumBx54QHfffbfzlqTi4mJFRUVpz549kqSoqChFRkZq/vz52rNnjw4fPqwnn3xSeXl5uuWWWzrrVAEAAACf5XNXKtyRkZGh3Nxc53JsbKwkaceOHUpISFCPHj307rvv6p577tF1112n3r176/bbb9eqVauc2zgcDhUVFTmvUAQGBmrLli1KT09XcnKyKisrFRkZqdzcXN10000X9gQBAAAAP+DXVypycnJkGEaTPw1f/TpkyBC98847qqqqUllZmdauXdvo2Qer1dpkm2HDhmnjxo367rvvdObMGX366aeaPXv2BTwzAEBbsrKyFB8fr6CgIIWGhjZZX1ZWpsmTJys8PFxms1kRERFKS0tr86H10tJSzZ49W2FhYQoODtbVV1+tDRs2dNBZAEDX4NdNBQCg+6qpqVFKSooWLlzY7PqAgADdfPPN2rx5sw4dOqScnBy9//77WrBgQav7nT17toqKirR582bt379f06ZN0/Tp07Vv376OOA0A6BL8+vYnAED3Vf/68ZycnGbX9+3bt1HDcdlll+mee+7RE0880ep+d+/ereeee05jxoyRdP4146tXr9Ynn3zivM0WANCYV5qKuro6nT17tst95A0A0DZ/qQElJSV68803df3117c6b9y4cXr99dc1depUhYaG6o033pDdbm90m+xP2e122e1253L9LVYOh6PLfM28vV9z747IlXvIl+vam6sLkdt2NRVnz57Va6+9pnfffVf/+te/dPz4cRmGIbPZrOjoaE2YMEEzZ85UTEyMt+MFAHQyf6sBM2bM0Ntvv63q6molJyfrxRdfbHX+66+/runTp6tfv37q2bOngoKC9NZbb2no0KEtbpOdnd3sh1u3bt3q882Wu9z9mnt3Rq7cQ75c526u6l9I1JHcaiqqq6u1cuVKrVmzRqdOnVJUVJQSExPVv39/XXTRRSovL9eRI0f0wgsv6Mknn1R8fLxWrlypsWPHdlT8AIAL5ELUgMzMzGZ/OG+ooKBAcXFxLu9z9erVWrZsmYqKivTwww9ryZIlevbZZ1uc/+ijj+rEiRN6//33ZbFYtGnTJqWkpGjXrl0aOXJks9ssXbpUS5YscS5XVFQoIiJCSUlJzleY+7v2fs29OyJX7iFfrmtvrtp6QYU3uNVUDBs2TMHBwXr00Uc1c+bMFr9KbRiGduzYoZdfflk33HCDnn76ac2bN88rAQMAOseFqAFpaWlKTU1tdY7VanUr7rCwMIWFhSkqKkr9+vXT+PHj9dhjjzk/itrQ4cOH9fTTT+vAgQP6+c9/LkmKiYnRrl279Mwzz+ivf/1rs8cwm82N3ixYryt+Jb4rnlNHIVfuIV+uczdXFyKvbjUVK1as0B133KEePXq0Os9kMmnChAmaMGGCli9fLpvN5lGQAIDOdyFqgMVikcVi8TTUFhmGIUmNnn9oqP4WgYCAxi9H7NGjh+rq6josLgDwd241FXPmzHH7AFdccYWuuOIKt7cDAPgWX6sBNptN5eXlstlsqq2tVWFhoSQpMjJSISEh2rJli7777jtdc801CgkJ0cGDB/XQQw/puuuuc17tKC4uVmJiotavX68xY8YoKipKkZGRmj9/vlatWqV+/fpp06ZNysvL0zvvvNMh5wEAXQGvlAUA+KWMjAzl5uY6l+tf97pjxw4lJCSod+/eeuGFF7R48WLZ7XZFRERo2rRpSk9Pd27jcDhUVFTkvEIRGBioLVu2KD09XcnJyaqsrFRkZKRyc3N10003XdgTBAA/4tWm4osvvtCbb76p0tJSPfXUUzp06JBqamo0YsQIbx4GAOCDLnQNyMnJafEbFZJ0ww036KOPPmp1H1ar1XlLVL1hw4Zp48aN3ggRALoNr31R+4033lBCQoJKSkqc/8hXVFTovvvu89YhAAA+ihoAAN2b15qKxx57TO+//76efvpp50N8MTEx+vTTT711CACAj6IGAED35rWmory8XNHR0ZLOv/lDOv+WjZ49eWwDALo6agAAdG9eayquu+46PfXUU43G/vrXv2r8+PHeOgQAwEdRAwCge/Par5CeeeYZJScn669//asqKysVExMjk8mkd99911uHAAD4KGoAAHRvXmsqBg0apL1796qgoEBff/21Bg8erDFjxrT5kSQAgP+jBgBA9+ZxU9Hc6/oGDRokwzCUn58vSYqPj/f0MAAAH0QNAABIXmgqZs6c2ep6k8mkI0eOeHoYAIAPogYAACQvNBVHjx71RhwAAD9EDQAASB30Re3vvvtOa9as0Zdffim73c4XtQGgG6AGAED35dUval9//fUqKSnRyy+/LEk6deoUX1MFgG6AGgAA3ZtXv6i9bds2vqYKAN0QNQAAuje+qA0A8Bg1AAC6N76oDQDwGDUAALo3vqgNAPAYNQAAuje+qA0A8Bg1AAC6t3bf/mS1WpWbm9tozGQyacyYMUpJSdHYsWMpJgDQRVEDAAANtftKhc1m0/79+7VlyxaVl5dr8ODB+uUvf6mAAK89pgEA8FHUAABAQx7d/rR69WqtXr1ahmHIZDLJYrHovvvu08MPP+yt+AAAPooaAACo59GvlPr3769169bp448/1t///nclJSVp2bJlSk5OVl1dnbdiBAD4IGoAAKCeR03FypUrdccdd2jMmDGaNm2a/va3v+mDDz7Qzp07m7xaEADQtVADAAD12t1UXHTRRRowYECT8fj4eC1dulQvv/yyR4EBAHwXNQAA0FC7m4phw4YpLy+v2XXXXnutDh061O6gAAC+jRoAAGio3U3FrFmztGbNGq1bt67Juj179igoKMijwAAAvosaAABoqN1vf1qyZIkOHDigefPm6c9//rNuuukmhYeH6//9v/+nnJwcpaSkeDNOAIAPoQYAABpqd1PRo0cP5ebmatKkSXr++ef15JNPyjAMSdIvf/lL/eUvf/FWjAAAH0MNAAA05NF3KiTp9ttv1+23366TJ0/qm2++UWhoqCIiIrwRGwDAx1EDAACSF5qKeqGhoQoNDfXW7gAAfoQaAADdm0ffqehsWVlZio+PV1BQUIvF7L777tPo0aNlNps1atQol/Zrt9t17733ymKxKDg4WL/61a907Ngx7wUOAPCYKzWgXllZmQYPHiyTyaSTJ0+2OpcaAADuc6upGDFihN566y2X53/77bdatGiR/vjHP7odmCtqamqUkpKihQsXtjjHMAzNmTNH06dPd3m/999/v9566y299tpr+vDDD1VZWan//u//Vm1trTfCBgC/5I81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K9e1J1dcobhwqAGQyJW7yJfrfLEG+FxT4Q6bzaby8nLZbDbV1taqsLBQkhQZGamQkBBJ0ldffaXKykqVlpaqurraOSc6Olq9evVScXGxEhMTtX79eo0ZM0Ymk0kPPvigli1bppiYGI0aNUq5ubn64osvtGHDhk46UwAAAMB3+XVTkZGRodzcXOdybGysJGnHjh1KSEiQJM2bN08ffPBBkzlHjx6V1WqVw+FQUVGR8yFGSbr//vt19uxZLV68WOXl5YqJiVFeXp6GDh16Ac4KAAAA8C9+3VTk5OS0+o0KSdq5c2er661Wa7NPwqenpzf6TgXOPzeybNmyRs+OoGXky3XkynXkCp2F/++5jly5h3y5zpdzZTJ4vyAAAAAADwR0dgAAAAAA/BtNBQAAAACP0FQAAAAA8AhNBQAAAACP0FTAZe+++66uvfZa9e7dWxaLRdOmTWu03mazKTk5WcHBwbJYLFq0aJFqamo6KdrOZ7fbNWrUKJlMJuf3UeqRq/P+85//aO7cubr88svVu3dvDR06VMuWLWuSC/L1o2effVaXX365LrroIo0ePVq7du3q7JDQTVAD3EMNaBs1wH2+XAP8+pWyuHA2btyou+++W//7v/+rCRMmyDAM7d+/37m+trZWU6dO1aWXXqoPP/xQZWVluuOOO2QYhtauXduJkXeehx56SOHh4fr0008bjZOrH33xxReqq6vT888/r8jISB04cEB33323zpw5o1WrVkkiXw29/vrruv/++/Xss8/quuuu0/PPP68pU6bo4MGDGjJkSGeHhy6MGuA+akDbqAHu8fkaYABtcDgcxqBBg4wXX3yxxTlbtmwxAgICjOLiYufYq6++apjNZuPUqVMXIkyfsmXLFiMqKsr4/PPPDUnGvn37Gq0jVy1buXKlcfnllzuXydePxowZYyxYsKDRWFRUlJGent5JEaE7oAa4jxrQftSAlvl6DeD2J7Tpk08+UXFxsQICAhQbG6uBAwdqypQp+vzzz51zdu/erREjRig8PNw5NmnSJNntdu3du7czwu403333ne6++2797W9/U1BQUJP15Kp1p06d0iWXXOJcJl/n1dTUaO/evUpKSmo0npSUpI8++qiTokJ3QA1wDzXAM9SA5vlDDaCpQJuOHDkiScrMzNSjjz6qd955R3379tX111+v8vJySVJpaakGDBjQaLu+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",
      "text/plain": [
       "Figure(PyObject <Figure size 800x800 with 4 Axes>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "basic_outputs(-368.38011989737487, nothing, 1.0e-11, 21.0, 1819)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#This is a tab for calculating the Li chemical potential distribution. When executed, the calculation results will be saved to the savepath specified.\n",
    "\n",
    "conds = CalcProf.conditions(L, x_int, i_ext, E_left, E_right, E_oxlim, T, R, F, savepath, fname)\n",
    "inputs_SE = CalcProf.basic_inputs(σ_ion, σ⁰ₕ, σ⁰ₑ,  expo⁰ₕ, expo⁰ₑ)\n",
    "inputs_CL = CalcProf.basic_inputs(σ_ion_CL, σ⁰ₕ_CL, σ⁰ₑ_CL, expo⁰ₕ_CL, expo⁰ₑ_CL)\n",
    "\n",
    "outputs = main(inputs_SE, inputs_CL, conds)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 1.7.2",
   "language": "julia",
   "name": "julia-1.7"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "1.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
