From 2f9f4d37343212d0706a61c5edcd1207ae3518d2 Mon Sep 17 00:00:00 2001 From: romainsacchi Date: Tue, 15 Oct 2024 13:21:21 +0200 Subject: [PATCH] version bump --- dev/Untitled.ipynb | 2 +- dev/Untitled1.ipynb | 224 +++++++------ dev/test_custom_scenarios.ipynb | 304 ++++++++++++++++-- premise/__init__.py | 2 +- .../additional_inventories/lci-ammonia.xlsx | Bin 24586 -> 24613 bytes 5 files changed, 417 insertions(+), 115 deletions(-) diff --git a/dev/Untitled.ipynb b/dev/Untitled.ipynb index 88eb49ba..a601c5ce 100644 --- a/dev/Untitled.ipynb +++ b/dev/Untitled.ipynb @@ -5227,7 +5227,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/dev/Untitled1.ipynb b/dev/Untitled1.ipynb index 84828cee..9d4ca0a3 100644 --- a/dev/Untitled1.ipynb +++ b/dev/Untitled1.ipynb @@ -5,7 +5,15 @@ "execution_count": 1, "id": "5018b7ee-0169-49d7-9455-2f1aea562e9e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "USER_DATA_BASE_DIR: test\n" + ] + } + ], "source": [ "from premise import *\n", "from datapackage import Package\n", @@ -28,14 +36,22 @@ "execution_count": 3, "id": "e408d76b-8288-4661-9089-f8c3f6191743", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Inventory cache cleared!\n" + ] + } + ], "source": [ - "# clear_inventory_cache()" + "clear_inventory_cache()" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "bee86950-ac96-49e0-8a9c-43920ae26096", "metadata": {}, "outputs": [ @@ -78,60 +94,11 @@ "Hide these messages?\n", "NewDatabase(..., quiet=True)\n", "- Extracting source database\n", - "Cannot find cached database. Will create one now for next time...\n", - "Getting activity data\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|█████████████████████████████████| 23523/23523 [00:00<00:00, 384646.56it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adding exchange data to activities\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|████████████████████████████████| 743409/743409 [00:32<00:00, 23010.63it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Filling out exchange data\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████████████████████████████████| 23523/23523 [00:02<00:00, 9800.02it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set missing location of datasets to global scope.\n", - "Set missing location of production exchanges to scope of dataset.\n", - "Correct missing location of technosphere exchanges.\n", - "Correct missing flow categories for biosphere exchanges\n", - "Remove empty exchanges.\n", - "Remove uncertainty data.\n", "- Extracting inventories\n", "Cannot find cached inventories. Will create them now for next time...\n", "Importing default inventories...\n", "\n", - "Extracted 1 worksheets in 0.11 seconds\n", + "Extracted 1 worksheets in 0.09 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -201,7 +168,7 @@ "Extracted 1 worksheets in 0.01 seconds\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.29 seconds\n", + "Extracted 1 worksheets in 0.30 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -364,7 +331,7 @@ "Extracted 1 worksheets in 0.02 seconds\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.00 seconds\n", + "Extracted 1 worksheets in 0.01 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -372,7 +339,7 @@ "Applying strategy: migrate_exchanges\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 5 worksheets in 0.13 seconds\n", + "Extracted 5 worksheets in 0.16 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -428,7 +395,7 @@ "Applying strategy: migrate_exchanges\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.04 seconds\n", + "Extracted 1 worksheets in 0.03 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -461,10 +428,10 @@ "Extracted 1 worksheets in 0.04 seconds\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.07 seconds\n", + "Extracted 1 worksheets in 0.02 seconds\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 19 worksheets in 0.29 seconds\n", + "Extracted 19 worksheets in 0.30 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -472,7 +439,7 @@ "Applying strategy: migrate_exchanges\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 1.43 seconds\n", + "Extracted 1 worksheets in 0.21 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -480,7 +447,7 @@ "Applying strategy: migrate_exchanges\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.15 seconds\n", + "Extracted 1 worksheets in 0.16 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -488,7 +455,7 @@ "Applying strategy: migrate_exchanges\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.81 seconds\n", + "Extracted 1 worksheets in 0.80 seconds\n", "Migrating to 3.8 first\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", @@ -499,24 +466,12 @@ "Extracted 1 worksheets in 0.03 seconds\n", "Applying strategy: migrate_datasets\n", "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", + "Extracted 1 worksheets in 0.02 seconds\n", "Extracted 1 worksheets in 0.02 seconds\n", "Data cached. It is advised to restart your workflow at this point.\n", "This allows premise to use the cached data instead, which results in\n", "a faster workflow.\n", "- Fetching IAM data\n", - "The following variables are missing from the IAM file:\n", - "+-------------------------------------+\n", - "| Variable |\n", - "+-------------------------------------+\n", - "| ES|Transport|Pass|Road|Bus|Gasoline |\n", - "+-------------------------------------+\n", - "The following variables are missing from the IAM file:\n", - "+-------------------------------------+\n", - "| Variable |\n", - "+-------------------------------------+\n", - "| ES|Transport|Pass|Road|Bus|Gasoline |\n", - "+-------------------------------------+\n", "Done!\n" ] } @@ -529,16 +484,18 @@ " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2020},\n", " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", " #{\"model\":\"remind\", \"pathway\":\"SSP5-NDC\", \"year\":2050},\n", - " {\"model\":\"remind\", \"pathway\":\"SSP5-NDC\", \"year\":2100},\n", - " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2060},\n", + " #{\"model\":\"remind\", \"pathway\":\"SSP5-NDC\", \"year\":2100},\n", + " {\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", + " {\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2060},\n", " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", " ],\n", " source_db=\"ecoinvent-3.10-cutoff\", # <-- name of the database in the BW2 project. Must be a string.\n", " source_version=\"3.10\", # <-- version of ecoinvent. Can be \"3.5\", \"3.6\", \"3.7\" or \"3.8\". Must be a string.\n", " key=\"tUePmX_S5B8ieZkkM7WUU2CnO8SmShwmAeWK9x2rTFo=\",\n", - " biosphere_name=\"biosphere3\",\n", + " biosphere_name=\"ecoinvent-3.10-biosphere\",\n", " keep_imports_uncertainty=True\n", + " \n", " #external_scenarios=[FE2050,]\n", " #use_multiprocessing=True,\n", " #system_model=\"consequential\"\n", @@ -548,7 +505,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "a324c189-26bd-4a65-885c-bba4683e9ed1", "metadata": {}, "outputs": [ @@ -556,48 +513,125 @@ "name": "stderr", "output_type": "stream", "text": [ - "Processing scenarios: 0%| | 0/1 [00:00e= zQPpPJ-KWR_r&tA?wM~<%n*YAnB&5w`G|G0O1Y`SheD3u*CKsPKb!9wLAsKImCO)@K zgEl!YSo1hEzs@o%G!3apQ;>=`bZEX%X@0)^{kMxX7f%b$p9}zK`9x8<<&gQ4l9M|A9Bo7Jt%=8}aS&86-tb#pO@CJtMUq-_q ztxhX36z_v*{+^p-US2F&Men!LHOOl9h17bdD$}TlRFi@!S`5trborVd42X7>wyc6# zY)3dS(dAywH^M0BlC+hYfslLnq3PI;Yuh>!gppK=iiRjU;*A0w?(+Io&2@j+qmqNd zja&L}%LD~ufxaMDxRN|33wc9SX|$pmn&_*9Od>-xfp>L<%Sd zh=Wvf);t4YE*O>Qor1}+UH*rLNv;cnpfX$b+xzdU1WAav*XfNC2HanbuVJt5$TRF5 z=%d&f`$}((J8yCkBV98FEhrk}xf+_K`0#;d*iSi1f0($9U<3G3tUp3${@laKBin+Mhud<`jh zkkd=w8wAi>cT*3nP$h`Ui*&?x>@Uh5OW=#cFw|BNj^;HqUjsiGrT%{?u%cvut<2Wx z7aaU^75V2lMTot(6 z%KmZi0&8fYtp#B3dOOJZrfTZ*dB(IO#-OzYkyJY_C)HgK580HgD5!qHn3tapX?*(Q zEIGsR+4RgE3@*^SB|v{ghsy(I4*t|l$2!8c6KT41qpqduTCfI#nx%f2+HT}nUWPNv z!;x*JY2aD@ICK309*-t|rX{1_UGYXEE1=vp?Db?ef5=V^PNpB}I5|B&xxG#PnN9xg zmq0%(D1to)f%H3%`oANW{{fSc0~C`xUJkRS3MB##X*1&$WG(;zz(D~37yy%>UK*40 z3^W2izmq8qZdT^+YT3FAO^bVQn%mvJ4TRAxA~sS@%(k zQO5N#oeURV9$;9%h{m|y{q3du4(hV2@Z0t!iFIG;-z?d12TP;=$kNxClZg%-1!Fp+ zxU;jW4igrCT^NA>k>jBJ-NqrG6J3(c1kzpsm?pbFe_&ye7r(~nc@ubcCEWw5m+mRV zvjMOaJhhU6A&aehn=9O|kv{9gNHQ=WiuE!ug<3VzW4-Ci-#<^Jfb}vkh0iq7Cl7`8 zEFHjpx{3eI>KhrDrjpITG?i>D+fuR_n5H3{foUp#*$hle$!1_$IyM8d>O36`xahM#cV7{JZC^3TO+mz9>rdz?ojwj_pgOX zeXYW`TWS%{cde5}so7F6J0sSy0vyq??jc4QK&!grMR(Ir#o8PT-p=^TS~)*q@7z<* zy%&vtGe`#yu?`+Jrw(8_fID@^;K4~^Pq1Qbe$mIAjM8`AO-4_jb529n<)$u~W~zciqiJnbtb^J-Mg>gr_?OkI!{%O+gILNViv7Wd0;r*|ocfPdZcWSbFNUojW-c=8EzZ){PEqX=q*-5eup!MB$5Q8(DgDuwPo%3q9v%HYH z*(8cH;it(sQf~LsJYBl!B#JNYDH6#h4TYcB&o~zG0 +9BD`(PScM~CQ&SZc{XEQ zX9))3WE=<3B5%)AW83!cJ$hBysrb-MZmtsNM5C=|r|&uH=)SKHNG z4ppob#|)Q)KnvtLmLnNrIdCYI#Y5ZT3HPZ9Cl=!5fGd#Sv1J{@LbLpFSGWSoW}PJv z>+*qEmk*7rb1)7k$u@wOd2?qe+RvFOpB)xs^YW3;4yS%P8wm_IJkjNUzB9(v6MMMt zhQfv%m?elMlR6;PofcAao;{3h zbq&IB@3X@pMrJ&#_Y>29EuH*9pp){85eE;T+?A-2guFK=89u}ac_;N131VdMLa7(> z#F%aeaKuV>j102wl|RNHJAjx~kPk?`0HzR{2J&FwKb1W6K(UjD9%B5bllqEmco*In zZ|E?oZ{?v|N^-AhDaq}op(J_emLbVQx0K92@@NfC^3V-Kl81hO>a2Na`RVK0+w)66 z{pk%qF>ow=pOGnuO;T6dywMMb9eHRnjS93+v4EWv3&2eVRS%jNL)9)rQD3jYvYBS_ z5*nI0@yeD8?8307F(}rtB9rEhHI}a`Y^>{8ZK>I?khRXp_VsWzr1KfIQy(BNrSH3+ zw!-tsU!$3xXN@m^T_4mK!*+_Ykj$<=5Rf5@%lp0_#unm&#*J5w)Razdi1n2NR&a+K zDmls@{nf)Y@9(9E%W!i#npupDspz(h>Lq>G5bNL}*1_*eUd6a`2e9MnT_=mDL`G(^ zZlt40tt-Q&ScVI+W~}&R-n#~E@8%^Jyu2p~Ub1)|?T&1JG)(C{r&!01l$K$9Y`kI*xGoL#b!&R_Jdb*v~;(%0HA9)fXytf3oup#WYl9g>92;(4s6bVK^t4DEG*p~i$pjgpQWVx7>t z>WB()?|v+Q0yMw!h3k;T^T^LvCf)_`?UNA~L)CGpBZpYh&%4NohY%U@q`h8F6s%j= zh|QzsSB!{B@LY%mW$3aLKa6cjKeM%a7Y)%A4I}4YGx3E#c>hWQ+pv85J1qRjnYD8(6HiuS^-LWCD&F0vOfHX6 zf$0K&>T(bsrW#^Q9zZp$nfQe;*~`R}BU!ysM~Mw@Ab6D>m&Vl_b?dY1jZlmU>SE2r zFBHl5LoP|I|D77~HA#}yHT@(JT5Bqi#?>{o@v{d@PqfDW`u@*CZTy$bn+8dS1uVSY2XUW9(iIPog56BLG5hV}cAWoWzUzn0xnRwC{OSsadMrOYi zfyVroKq+qQv4B4PO*T~SL{8$XoXHC}a%x0weKO<$VmW*JT*z$Pa0Tk?tEXn<1}@}n zxD6b`Lenz5lOgX4-TGw6#a2~iCe>dMH?|VQ%(|5zX7*C7g-195y!Y9V2cHeOh zbjaI_XoC-V=?6!SA zWH#2_)(m2uX54LKe8|HNKIE28s@|-B>A!~Sc1+Y72@}MEe8@L1?kE(-flai_hdk`z zLmpy$$dmdLp^^v?Y{~8)7at0fab%SB`6JjqXpvpN#ttXY9&2F&#a>}Tj23wy@3D9P zkMSN4lloR+LQ6?9U@axN(KM8#Frj5g3KLpNW*2(21}B9H4MS3x@YGog6Xd6VuWN5> zVS;GAL5tf-j9hvs>MIm1D=mws;@&-l2{a|C4~hi_r&!WF5WA_57(esS=VvbBdGHtc z`pB~S(UfLC3?;M8aZ#*;-}S{j2%9%A*`P%hzUE;v_6}<9D^ws&v%de{Csv=Q4%dmO zF4*C}s&rBVK5!>>eTCoNu#mfvT>Z+)taS-}7UqF8%lcaTl|{Q)n1>Jx z^Q7IWOIS#lkB7~=1ac$G)&;SC7EiHEXmUP#Z#l%fJbk<~)<>O(qE`iL)I`aN! z@q7%aOCamAJMz$H@uVkzwphr^u&^piT>>eU1>J^NK!!e}a_O@IccdTRg9{Pzgk}Io!XX*e=$d&mVnjfNZ zf&Dp(YDSxB6AJ&pTCC&=6H{}nWP?1&0!cuudkhjkQnJzKSRObS53&hSEDvBVPFk|D za4a7WjgpN%rLr-tB^zk2r^Nv6gHs49i~0MxRuf#x+TV){SX`43zFF2$el=gh-VKkP~ak#=@z* zt7N0kvCN*-HDpPabGpy5Y=+?_7ef@w1GtTqJmJZ(e3wGXKBY1Z%f8BPrAC9cWsb15 zhw0x#A#BmEN^9kgmgN(s*kDUQQw`l9R!`tVcAXN4V$~CW-c$1o2D$X+ZMA4u(6Z1a zWVsi`qG`hw_%hu_YV22C0VGjf;XSo+MX1Og+}2v6k;TOm`-mf8OF#7{jkcUI5bGI3 zD;^xNCh1Ye&^5Sxw7sb(dP05f;P6Np;X6X;ip5NKRIf!6LO8VXv;`>h2U zSzcVRi#P&*wi>y*DzsV7J0NmycU-XNb z(7NG^eo+%z`}G-MR^N68phxA6$kuk2XMlsf;Tlvi$wu3+aiVRVB^-oPo-u-|eakbm zcAqw)rIY`JPP=es1mE~}_o&G>u+3zv;skKJj07BiW8nl}aZ>3LVSzWsNa6BWh`HU; z3`*0@S^OgiuD9J^zdF*sHkNu zw8gpV8u6XQ6Prpl1=v)wFi1^f&$KtN!#& ze|p1zPY4jl!lAss_-ImJU%ud+MLq?~<~uaDlSr9jducG8+N_VUZD!5GKC-*iLshCH zh@jJ8D^iMlF3QM%nX~?v6MVKPgSO;!qgb8O{n*~vHm$RB(0W+sE@ug-qBo2GMzAoa z!6Y4DihQ|Jovd?g_LH{MIp|89!v~R>L$+vtaSmILPV#63oAeInppVXuBl_=Yoig| z)eYy=T}iHht%b717}trzad-zWNT_#s2UmUzx8+s!PT0pR%DurtU35FO;1uhs>Xt~8 ziZdV#=n_s(&)Hi?u&vJEle;q^e|q|^vB_{4-bJKvN(Vw1P*A5)PVR++dOX~?%jCbo zBPTa(H8vR_4B{MQ+w^ckX_(F&w61nAvjfNC@IqQ$T_`NfH7-2V$INtZnKg>6yQkp0 zDRBlmR%i6!i+mjMvAs)rVRMem6kPpB4P(|nVyb%z>Z)|v^bm`&%R2p;f8xfn!DCmI zIc8?W0$$KXOX_4?c&F3hWXAehMBRCTudHNVAVFs4Ty{k-y_V+%T6>pnuq$uxu9Nx( zc+=3Szl7zR0E6+4{t>!ZCuKq+o#rrO41GQ{f+bhBXh=JL4ShZ| zg63A>8%W)m6g!HBUcJT3e+Y3^uwpzL+u;kr?KXT9qoExq^)2|Or6ll8OG$RmhLXTH zEkgp|w3OteZ7A6fYg!JlAJ(io&kt+#r?2|cH~r}iKbh$e+tv&B?>Ze$5;srW!0#nU z>5zjU`vKVNNE^0*(}?A0XKP!a%+}r)HDioWcv7!MElA^J?tRqff5U};wkBUU^%6lA zVsQe+;slDt2@v~Es0m=UcXeQeG!g#o6MpTJ$(OAB# z8!6Uz-u=vqt^L&>i+0GcY`_1>6Tg^SzpOJ1!0mUA`?|jKJ{Zuae4d_X#R}Ya9t*%o zy(~V*EKzt06dJZ|^?4{&7`D%G*DJwF#i`9962Es{V(eS+x8Vh1*4Yux~WF1U*!^3~P| ze&{5{=#zZ)K`RcV1%2)POch(}ka5%Zh74Nh&DTz9W)t|oj0-FD{lGtHT0$RNA6j&) z6HCV4=ZH3~e`V~uIHJc8NA#qz^Vwwsi3Qu#X(lI`~~- zUx*}nBw4dmj8F3CT$glHGxY7VN1Glc0_d|xv$Y!m6yD|CAEb_8Y1VCjVUNxQz>RRH zPajRwnmuD{ec`*JyTaof7%U>JiW~8Lw$IVs?LhYEfA&&`EuHNU>znS!dZ4HF-*g@8 zZEtf3yyT03aiNgjH~4;xM~-P7JX-6UN3O};<0I9oBN>@1>c{stU#zVFNB%3Srd-3$ z-&bQ&CqO^M;{&M=koIwX5DM`~#jN1{LLfaHZt~&19(4WKuFDzyd8Akek2H@v_)u&| zu4T)Rf0ZYNSJPypU(9Q-jieRY~)DcoIbpwvtZD@xiwKjF* zP|F$@$AATpv`XrR_=(dY#sxZpa`Pm+$wCF1>sT6pzlx0& zuq4l@9AOm85k@jl?--AfeU9YG6fWf=Z=PYK_LMV>zr0-YEw>ImXfsd$9cDdH0H5v@09ai0eT=yu#o4p7-mvUvX9_{8rea;=KKx_(-k+@KQnP%L2& z#4dIR^3NTE2VPk1BMW}D(0`g|eH}sksb5?{EGHUSL*=xmZCwd_*xKFtzze#=5kxU1 z>{*yW)e!&{CF}v;s5+vTvwn<1B`C9ESTg~Cc7hOCNh$&A ziAsnTfw)=rwzY^KvJGkeJ#Jb;c^s{o{dRU-&vv@YKEMZMO@nAbPzFX=sm!K9Ppf%; zg|ZO2k-W188Z(?6p z2DIavpa0Z;0+W#g6tlfrK?4OHLH-4xlLKB-0g01VUM(AGGvgIxE&u?)K>+|500000 z00000000000KAi)UPS>`ljL4N0Y8%^UpfL8Op{?>CL1V5jU^}n008s>000pH00000 d0000000000Ym=g1J^{*;;a?*Lk6i!&003sM#Et*} delta 7096 zcmY*e1xy@3u*Lm=7K#+-a4imp7mB;P9nRq#R^TXJiffCz+u`oo;!xa*6qg=Ok>4-* z`G1qy%;e2XvXjl*-Pz(^`N>lll&~3>LSf=SbBC8tA5wpReoI7) zEI=-;Wy>Z|STWJqp`M7U2FLMU5LB&jd=9KtRLC52Og)vw9=_STTRZkt;gWDY`tDz% z#nTrlDBY0GM@%I~!Y)M8gu%vVx^n$k@{Wps#!PdVRnsP_^6VEl0?yQ`|& zwh^LW^a^mLJEm75Q+cVqcAOyp=E+zWhzjotXy*>_a)RSfV#`MeBMx1sA)nYr^UHl;Xk2Q;)rbO8N3T%o%a$i+Ka4W<3>c zBp+cWI2x@`>q`Nr!Nh8+zE>T?7a(Xfpf%*wzN&T%@ftC+W4N_b14Ayp6 z+yZQRbYj#&=?amZDJcU5xi|i$79NoFmwd~l%zoOk@wBI#=Y2Nm*Su$5{)NTpxBAIW zOO>JsJWJ8M3ghQN;mT_lHCp&{)yFh~m4O5Xd|Hx#ulR z2H=1&Y0=D{8Zm~y{olOc!gAJSFTSN%3cb!5U#JhwNTZ}_dm9atrRU>1U%Q?wg2&Y9 zve%bxAt8i7q|2)-2&)S!dfkg-8dCN+DhnCu*19o3F&87li_tBz^97vhEBI$&?7*f! zCrNnoE}o09s-ZIX&kSC>{brW#*$drx?YE0WuWGHP z#Y`9>Dtb@#yyHVj$x6fFB*9(Br?mT-(Tn?+G34?pQck!9W$q?w6&?80^{j@P8kZq( z`CNR5fQKCpk%2$US5=GW=6OEK!LVrjbj)$eM~93wXqYKCuh*fRIs1CE1pq@pIaK=S zhJNY~UzUhOoC&k4%qBLIA@{+~*d6a^jP-a2`v%$I9%g(IvSV(EtdNEN&U`aXrc*P; zIssP;YR5K}Fh_UxR~>Kl7yT`&&P;ZHD>rYL)z;mrm!LS$&4Y&^Y*Y=PMq6^oAR;c& z)}{KKVfwtx`RTbS59@{!ZT3{`=s7Ot896x-mAD}thYtmRG3`Y{o(l=7Ng5f63@N$Y z>}@gvk00eFKA8pJqW9p_1X&L+84?$sICa^?=szHNMNwWPd8?t+IGWoM3lAuKcdnh{ zA+1J|OSZX7KNr8r;=o$vUV;EJH1u6MKWGcun3yQG+;4_|*0TLY+kqPJVd%Ue`2-*W zuBRud2$A@3zqm_R2$48uKWGUn{5Z#y;~Er<@(Wp)Ua8ZeM`|xUPlq(y;=SpFOUyD9 zKGn)5OTIYb#cSg07i{@NPhMzu+me1JTK1!+-*uIg=(u~f$FTkvewy4ARKcb>g$*7{_hpo$3*vOvb{iqclI>q~p>Ar|f|7@QE2r8mn} zR0FMb3!fI4wF^X1TtPpnGg~RXD3|lE^6|ef-2dEJ`_E4JD)+FfIGvM$%AzhL-D4OC zJe}34cStWu0$3O;37*dKThDQ+GG=-^ur4<$E02_z>cO(@RzAQUDkKBvayKrB&d5-) z41GF9AgSKPZ=Co{oL(?;`!#5Pv?QlWVt~mYVRsJOpTqH@#MqDqqf@ucZ|a=x`n>N z>3L~ZOc-Iw8JSp=!U?us)dcs$S3Zr0nhx@^LrtScYa*0~>|sV02;TD=+4>V3$7#*J@Y^SQGFQTA*ZQbZ zXl>(3vgg={gGOKD7Wh{_6qWGK@8>J7us8ARs#3w zU`apo?Q7?Z<)4E{CCxpg44#sSC?ehh(o%j>Y7E$?ieR`1<5GO;4 zYDkHY*|OS}X>@G5#Il;I+00V2--o%CjuiYoq}5mpwUwWK4Dx=>dXMj@F`g%;I=g=S zthnk-vsvw=@6g)33Telrz%@^$iby6VgGt4Ah|3>MD|$FIz;8`f4ujD>#7c%YC$lr| z!jFk7Bim_k$yZ703+_&=7ckuJT|}e$zNvPSI9*QqHLV(&DXbH}9{RR7S47U*^3frO zYn}4-5a})P=c0s&_ev+F|lyi zE!lgovtr+j1gJ!Mc2gdfglN%AJN7nkAl+RR9V6TET@ed;zY%LYjs+F1-N;e3XYZAK z6-oahbQb9~62U9@e!PEbZB^CLeLw(<=cmBC8Y1)oH>qVx?(oS1P;;^?!56q6`nvpk zERQLqRSz&a-3U+=H>W@7qcFe$+75d_ucjjNVd)(BJ7u3lroZ~r1XZ`{%?Mt4s1z=P za2k-@O2myNmHhqcHuh~fHZw`{ZZLboJiLi=puhUjUB4A2$2Oah@EGyQ;MVZ1{=NmJ znyoVu`Q`6Pt;SqF?QQ{%;op0}&9`b#UV^X5Tzm_ZeeGf@nQsU;0O2Si@04ML%HMO% zSr?+&Z!XqV#cu<&eSTi3a;EVY^3-%oJ8_qBQjQ^S(nhCPU)5;|{b-5!upsJ2>vC7% zvVMUcQ^|d|c9w*lI!mytOVZv!Z(h(0XcskdJYj-LRfuvH-5AS&jZH(}t^Hkai{c@h zI(mY5DKo>+4~ibGAbqI5-i$Cu2Hf+Bv0wrok`2Yc4+`+6IC7;B|6x10B#5GQK^CQU)4~x3#DK^4|w5crl~UWHGOSgx&mHkQ230&_nyp&Eumw%pW$Ojz@_*W@n9K zl{}v+=z29^DNmhoRe*A;&0)bjgyNPg_%oDgSflBO#{8mF9i+stGc3YZt+T!urQ=A!w^@i&l>YtJ~7|5Sdcp<8GI!106h5o~f_MT1}KpMwm=7eAzqUx z0q_v><%U43zYupD?T)zOMbglvy^nRFrP9905Xifzk%1z10p>D^Q`NT$uC4u!*gH;$ zRRz1!hVK$BERI`$y&rBPtMRbmt)#n&eB0g^T4|6xV<<*r@QrlR_CUe23jE<)Qujj8 zAHtZwV8Hq)?)ka@VFCk$WC|=^OffrUYhR0sC&0w-nBuidcpSE&E3dQUe+z!Kb(1<} z6v>ezAJonJ2gVibn)|7htRhZ^N@Or8Xk$o9EQ~CQ`SjYOz+(NqG=y59$4XWuWdA(} zi%fdPoh3y1;al~3hkaD0FYUmEF8!R3$F_oMhLIw-otEu2>J?;Cpxs|nmT^$7|k zI%Iqfj6q$Y&sHReZPRJNgUBW&WUFkZr$ItzTrwNqWSICg@1S#*6TuOumeLs$7_K7b z7qzzyfcs-v<~$9js;_<(CyT*U31dmXJ+YxHE+SytudqX+z3P&jFuY(Ljd{Kmt>5 zYo)2A&*u%m%mwNMDl2(vDX}bmqMm7B3-6y@7)P30@sG&yAohir`ze^#+7cK!@F5dY zw)Rl)I-1{-Oo-T^LIU$O^Lxfuv@A*M zJuDK$58IFfvkvR6Y3onFc6I&2(MeAC{J6-TRMt z3jYz0<@+BA#7vDT<6Kwv05u$m#*Jm-% zGa^wR>iUR7WUr(}LyU{31~2lX_1320(fXaQ{@rBoa*G>romh-0WSs~iqqfc5DKNn7 zIsW2T$M0%Z-xtooFfm|#LN&jpUnb>Z8~D5JctvuTyaMeABF^!{;B~51rb7ZdZaX&5Pnr`($F_^fVYng)1VbO-J zBQd=dwUm1m6r253!vf<~dAft4B)**!)p5=D0>Wzq5;d6WxW6+%46?wOKxo*^6$RZT z{t?DB)6fD9A5FuoBX%7PA4qTq?XdodMOM4a8w^q!`E>vy)CaK_%Qe#6>~>gkj`um*=tBqS&+nPZzo@~er8`&u%yWvbs|+PU%g1>*hP>> zwn!`(ZlElfBl|s*ks{E{W-h*HYT9Vd?w<-?W7op^!$y$DzK|3fuD8s-e89&#*UI#H zx}8TAM(BA|6T-_pMM1~3ha59#R1YU)J!e}!AYyM|h62hH_p;82*fTAC$A$=N5lHXB zjOxC#Y@5Xi^;3l^1NF7_#^p14&fkELQ_F{24J_lv%2}iG(n$oiHl&U*uROwqu#)+L zu0su57Jh_%Uhanxs_9Q;#=i2Vk;4ny@azK&ZolG&-mTJ-`1Y@^K9Zu2zOTBo$t$*c z%$BA!du#VUgA&_VOS9@-iiMnZc!U1K)2$#(y83ho#?#FWf8XN%>p@$vXNBQsVDI?) z1zLgLHQGZeJ=$A+^}MEz&k-Sdh#;p=a%rUcC-iZ_)e)|}jYZw%Lq^F`J4Y0aH)kMN z9`|Mr7$hRz9 zTQPK1>Su18vh0oRurYt7*u~^IZX(93)=OjU4|jVq=eV-S`-HmJ#U1Mb5WeLKVdOO~ zAo7TTaG&WcmeM*tF#HFY?zgux9}7%X$nH-(ZR>`&Q{c(c$*}eDy_6cU&@f90^Yyjv zGRtIC_V*Z`;S;fP{keh6g#3au_%z9Wh0~x9i8_RBnb<;mte=*X(fHd8zco9bk&*3eqp>*B-uB`3ahq=wG(toqi(;+~TPKpvY67jrUs2CV{AL2=JPt1{d4x3(5qqm7Z zE$;JjO!gaY{w6^1cl1n)K({=OHbgD7T7ebO#sYj1nS3x;yI3y3TS=OWwSubMf!H@_<95hz= z3NkC26{=M-vmiw3sT}pysOBopRL3IBr4{4KkBKcKXGNVt8$yImFxTEsKhaqZ4x_5+ zdxoW4LVjgR(6pAs#n#5kx#utz|KyLc+ZhIJCx7RogB^)P4qTj}hiiif`-4M3u^t}Wl=C~k zhE17X0MsIFmX+`^Bum15+SQUsBBcQ@@_cCODZi*22R^2@7s%+VlZkIx{I|mmUMFHh zAN50bK%F~y;IxnQUKr)XE|{19Ab1J{%zE9 z*I*$)_JguPH}*TS^8=dvFCSccWlpGSEO0hvfZaK1)T<8oe8bcGGC%_ln=cWKJB$CR z+qwC9fxz%HfFx4*Egm8l_DY)<_ zD|eK^ZX!pNucxL|l*5YM)#S|myFSco_>b)2w~x~A2e5ku=dlSZiD>nhgK>vtz*a>+ zfQG5g7YN=lT&hvT&oM6Mt(#i4V1sNVI0*U8>l&gXow2xY!R&1TUVLgrv*&7L_`mrY zVz~KjQB*339thtb!rV-AkI?c+Yly7q*fAAfR7mB&w`_1JU=lBj~#;zNG0=-eCX%( zpC-mR@4xQx<-kXCC0I5~mm5F4wl7mB6gNESJr4}AZ@%#f0}-#?Ak#~;%F*D$u8u47v+ilE-(TdaSAAmVGUrRAtCE z%zW=zqugFj{&2Hgs2X3tf4y9|ykdGD?&EihSq?PFfUcS^6?!7O0oM-aNXai%t~lo<7f*6p=C%HKXpN{Rxl@?FiCw^PH28H=4Nm#krX4rC1j4k30| z8zbX6A#89i0yoO7TwUA+%lqZ$)&bdAuzVUO6k4>Iz$RjKfZ(g+D$~qV5 z#~ZHPHkxTiRxZAW2lOiy|Gr$FW!dO#DD)^VcrLET=qDYq1?ha@we?$lr9f2%bcCn0 z!L^}ikjw@1??BxHh3nDbSMa$;w=4-dJXow_gKv$;58cVTMV8$VR?giJgTT=JcNF8` zBIj#>(Z><(7#wKUybwxugjzeO5de-MgKELL->zpIiN=v04BBhT6Xq%n{i_U}B^@sS z&2vjURVuQotlJ!1Dqye4IQ?lpQ;}zK9$r=}oR0<~{+K$+(>#^Pkhzf(1GkTZB|qrJ zDk&?XWTz#efdGuyUPciN(+;ePd2<>`QlTB|IK%zCc$INa+%O{DPHrWwF0%U6@_L8nf2aWTdU;4Duhp+ z4c`hu%au*KNm<2dqBDqw?{l*JZaA3MTq7?vh*Dp)_;E+!ghU!PUKi4f2E)ap`BYBz z`5=ZkKz7Av5rEXk9jrV_|~U+h(=Y55fS&TQag0lQN2H zO6uf2MW?%GK@GA{>FCT9l5s8G^<5%R_FPD3+MQ4y^}^$0=>yS!wc?kIq*4Fp`;6L5 z3pqO3-Hems|F`Cm{?F)2ZZrFU3`%}6lR^e2OPPaE{wgO2m@`rQSGAFmkgop8tN#;# XgruI_WiEkSoBU`F#PBlxPv}1YPVtd~